添加:代客下单功能
This commit is contained in:
parent
1cff04e30a
commit
30426a5319
|
|
@ -0,0 +1 @@
|
|||
## Yunshop 插件开发简易文档
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
app\common\events\PluginWasEnabled::class => function (app\common\services\PluginManager $manager, $plugins) {
|
||||
// 你也可以在回调函数的参数列表中使用类型提示,Laravel 服务容器将会自动进行依赖注入
|
||||
\Artisan::call('migrate', ['--path' => 'plugins/help-user-buying/migrations', '--force' => true]);
|
||||
Log::info('[ExamplePlugin] 示例插件已启用,IoC 容器自动为我注入了 PluginManager 实例:', compact('manager'));
|
||||
},
|
||||
app\common\events\PluginWasDisabled::class => function ($plugin) {
|
||||
// 回调函数被调用时 Plugin 实例会被传入作为参数
|
||||
Log::info('[help-user-buying] 示例插件已禁用,我拿到了插件实例', ['instance' => $plugin]);
|
||||
},
|
||||
app\common\events\PluginWasDeleted::class => function () {
|
||||
\Artisan::call('migrate:rollback', ['--path' => 'plugins/help-user-buying/migrations']);
|
||||
Log::info('[help-user-buying] 啊啊啊啊啊啊啊我被删除啦 QwQ');
|
||||
}
|
||||
];
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"name": "help-user-buying",
|
||||
"terminal": "",
|
||||
"version": "2.0.26",
|
||||
"title": "代客下单",
|
||||
"description": "代替客户在后台下单,支持自营,门店,供应商。",
|
||||
"author": "blank",
|
||||
"url": "https://www.yunzshop.com/",
|
||||
"namespace": "Yunshop\\HelpUserBuying",
|
||||
"config": "config.tpl"
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\ExamplePlugin\Listener;
|
||||
|
||||
use Illuminate\Contracts\Events\Dispatcher;
|
||||
|
||||
class SeparatedTestListener
|
||||
{
|
||||
/**
|
||||
* 在这个方法里你可以做任何可以在 bootstrap.php 内做的事情
|
||||
*
|
||||
* @param Dispatcher $events
|
||||
* @return mixed
|
||||
*/
|
||||
public function subscribe(Dispatcher $events)
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,240 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying;
|
||||
|
||||
|
||||
class PluginApplication extends \app\common\services\PluginApplication
|
||||
{
|
||||
protected function setConfig()
|
||||
{
|
||||
}
|
||||
protected function setMenuConfig()
|
||||
{
|
||||
\app\backend\modules\menu\Menu::current()->setPluginMenu('help_user_buying', [
|
||||
'name' => '代客下单',
|
||||
'type' => 'industry',
|
||||
'url' => 'plugin.help-user-buying.admin.index.index', //url 可以填写http 也可以直接写路由
|
||||
'url_params' => '',//如果是url填写的是路由则启用参数否则不启用
|
||||
'permit' => 1,//如果不设置则不会做权限检测
|
||||
'menu' => 1,//如果不设置则不显示菜单,子菜单也将不显示
|
||||
'top_show' => 0,
|
||||
'left_first_show' => 0,
|
||||
'left_second_show' => 0,
|
||||
'icon' => '',//菜单图标
|
||||
'list_icon' => 'help_user_buying',
|
||||
'parents' => [],
|
||||
'child' => [
|
||||
// 'help-user-buying-select' => [
|
||||
// 'name' => '选择基地',
|
||||
// 'permit' => 1,
|
||||
// 'menu' => 1,
|
||||
// 'icon' => '',
|
||||
// 'url' => 'plugin.help-user-buying.admin.home.select',
|
||||
// 'url_params'=> '',
|
||||
// 'parents' => ['help_user_buying'],
|
||||
// 'child' => []
|
||||
// ],
|
||||
'help-user-buying-index' => [
|
||||
'name' => '选择订单类型',
|
||||
'permit' => 1,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-order' => [
|
||||
'name' => '下单页',
|
||||
'permit' => 1,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.set-member-id',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-shop-index' => [
|
||||
'name' => '商城商品下单',
|
||||
'permit' => 1,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.shop-index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => [
|
||||
'help-user-buying-shop-goods-list' => [
|
||||
'name' => '商城商品列表',
|
||||
'url' => 'plugin.help-user-buying.admin.index.shopGoodsList',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-shop-index'],
|
||||
],
|
||||
'help-user-buying-shop-goods-buy' => [
|
||||
'name' => '商城订单预下单',
|
||||
'url' => 'plugin.help-user-buying.shop.controller.goods-buy.index',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-shop-index'],
|
||||
],
|
||||
'help-user-buying-shop-create' => [
|
||||
'name' => '商城订单下单',
|
||||
'url' => 'plugin.help-user-buying.shop.controller.create.index',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-shop-index'],
|
||||
],
|
||||
]
|
||||
],
|
||||
'help-user-buying-store-index' => [
|
||||
'name' => '门店商品下单',
|
||||
'permit' => 1,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.store-index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => [
|
||||
'help-user-buying-store-goods-list' => [
|
||||
'name' => '门店商品列表',
|
||||
'url' => 'plugin.help-user-buying.admin.index.storeGoodsList',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
'help-user-buying-store-goods-buy' => [
|
||||
'name' => '门店订单预下单',
|
||||
'url' => 'plugin.help-user-buying.store.controller.goods-buy.index',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
'help-user-buying-store-create' => [
|
||||
'name' => '门店订单下单',
|
||||
'url' => 'plugin.help-user-buying.store.controller.create.index',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
]
|
||||
],
|
||||
'help-user-buying-supplier-index' => [
|
||||
'name' => '供应商商品下单',
|
||||
'permit' => 1,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.supplier-index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => [
|
||||
'help-user-buying-supplier-goods-list' => [
|
||||
'name' => '供应商商品列表',
|
||||
'url' => 'plugin.help-user-buying.admin.index.supplierGoodsList',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-supplier-index'],
|
||||
],
|
||||
]
|
||||
],
|
||||
'help-user-buying-goods-increase' => [
|
||||
'name' => '商品加减',
|
||||
'permit' => 0,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.goods-increase',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-get-search-member' => [
|
||||
'name' => '获取搜索会员',
|
||||
'permit' => 0,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.getSearchMember',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-user-merge-pay' => [
|
||||
'name' => '支付',
|
||||
'permit' => 1,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.user-merge-pay.index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => [
|
||||
'help-user-buying-user-merge-pay-credit2' => [
|
||||
'name' => '余额支付',
|
||||
'url' => 'plugin.help-user-buying.admin.user-merge-pay.credit2',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-user-merge-pay'],
|
||||
],
|
||||
'help-user-buying-user-merge-pay-COD' => [
|
||||
'name' => '货到付款',
|
||||
'url' => 'plugin.help-user-buying.admin.user-merge-pay.COD',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-user-merge-pay'],
|
||||
],
|
||||
'help-user-buying-user-merge-pay-confirmPay' => [
|
||||
'name' => '确认支付',
|
||||
'url' => 'plugin.help-user-buying.admin.user-merge-pay.confirmPay',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-user-merge-pay'],
|
||||
],
|
||||
]
|
||||
],
|
||||
'help-user-buying-address' => [
|
||||
'name' => '获取地址数据',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.member-address.get-address',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-editMemberAddress' => [
|
||||
'name' => '编辑收货地址',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'url' => 'plugin.help-user-buying.admin.member-address.edit-member-address',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-createMemberAddress' => [
|
||||
'name' => '新增收货地址',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'url' => 'plugin.help-user-buying.admin.member-address.create-member-address',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-search-source' => [
|
||||
'name' => '搜索',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.get-source',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
]
|
||||
]
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
public function boot()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,209 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\admin;
|
||||
|
||||
use app\common\components\BaseController;
|
||||
use app\common\exceptions\ShopException;
|
||||
use app\common\helpers\Url;
|
||||
use app\common\models\Address;
|
||||
use app\common\models\Member;
|
||||
use app\common\models\MemberAddress;
|
||||
use app\common\models\Street;
|
||||
use app\common\models\YzMemberAddress;
|
||||
use app\common\services\Session;
|
||||
use app\backend\modules\goods\services\CategoryService;
|
||||
use Yunshop\HelpUserBuying\models\Goods;
|
||||
use Yunshop\HelpUserBuying\store\models\Store;
|
||||
use Yunshop\HelpUserBuying\store\models\StoreGoods;
|
||||
|
||||
class HomeController extends BaseController
|
||||
{
|
||||
|
||||
protected $store_id;
|
||||
|
||||
|
||||
protected $plugin_id = [0];
|
||||
|
||||
public function shopIndex()
|
||||
{
|
||||
|
||||
$member_id = $this->setMemberId();
|
||||
|
||||
$member = Member::getMemberById($member_id);
|
||||
|
||||
$member_address = $this->getMemberAddress($member_id);
|
||||
|
||||
$catetory_menus = CategoryService::getCategoryMultiMenuSearch(['catlevel' => \Setting::get('shop.category')['cat_level']]);
|
||||
|
||||
|
||||
if (app('plugins')->isEnabled('supplier')) {
|
||||
$this->plugin_id[] = 92;
|
||||
}
|
||||
|
||||
if (app('plugins')->isEnabled('net-car')) {
|
||||
$this->plugin_id[] = 41;
|
||||
}
|
||||
|
||||
$list = Goods::where('stock', '>', 0)->where('status', 1)->whereIn('plugin_id', $this->plugin_id)
|
||||
->with('hasManyGoodsCategory')->get();
|
||||
|
||||
if ($list->isEmpty()) {
|
||||
throw new ShopException('无商品');
|
||||
}
|
||||
|
||||
$list = $this->goodsMap($list, 'shop');
|
||||
|
||||
return view('Yunshop\HelpUserBuying::admin.index', [
|
||||
'goodsList' => $list->toArray(),
|
||||
'catetory_menus' => $catetory_menus,
|
||||
'store' => [],
|
||||
'member' => $member,
|
||||
'member_address' => $member_address,
|
||||
'route_url' => yzWebUrl('plugin.help-user-buying.admin.home.shop-index'),
|
||||
'order_url' => [
|
||||
'create_url' => yzWebUrl('plugin.help-user-buying.shop.controller.create.index'),
|
||||
'pre_url' => yzWebUrl('plugin.help-user-buying.shop.controller.goods-buy.index'),
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
public function storeIndex()
|
||||
{
|
||||
|
||||
$member_id = $this->setMemberId();
|
||||
|
||||
|
||||
$store_id = intval(request()->input('store_id'));
|
||||
|
||||
|
||||
$member = Member::getMemberById($member_id);
|
||||
|
||||
$member_address = $this->getMemberAddress($member_id);
|
||||
|
||||
|
||||
$store = Store::uniacid()->whereId($store_id)->first();
|
||||
|
||||
//$is_goods = StoreGoods::whereStoreId($store_id)->get()->toArray();
|
||||
|
||||
$catetory_menus = \Yunshop\StoreCashier\common\services\CategoryService::getCategoryMenu(
|
||||
[
|
||||
'store_id' => $store_id,
|
||||
'catlevel' => 2,
|
||||
'ids' => [],
|
||||
]
|
||||
);
|
||||
|
||||
$list = StoreGoods::getGoodsList([], $this->store_id)->pluginId()->where('stock', '>', 0)->where('status', 1)
|
||||
->with('hasOneCategory')->where('stock', '>', 0)->get();
|
||||
|
||||
if ($list->isEmpty()) {
|
||||
throw new ShopException('无商品');
|
||||
}
|
||||
|
||||
$list = $this->goodsMap($list, 'store');
|
||||
|
||||
return view('Yunshop\HelpUserBuying::admin.index', [
|
||||
'goodsList' => $list->toArray(),
|
||||
'catetory_menus' => $catetory_menus,
|
||||
'store' => $store,
|
||||
'member' => $member,
|
||||
'member_address' => $member_address,
|
||||
'route_url' => yzWebUrl('plugin.help-user-buying.admin.home.store-index'),
|
||||
'order_url' => [
|
||||
'create_url' => yzWebUrl('plugin.help-user-buying.store.controller.create.index'),
|
||||
'pre_url' => yzWebUrl('plugin.help-user-buying.store.controller.goods-buy.index'),
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
protected function goodsMap($list, $style = 'shop')
|
||||
{
|
||||
$list->map(function($goods) use ($style) {
|
||||
$goods->thumb = yz_tomedia($goods->thumb);
|
||||
|
||||
if ($style == 'store') {
|
||||
$goods->category_ids = $goods->hasOneCategory->category_ids;
|
||||
} elseif ($style == 'shop') {
|
||||
$goods->category_ids = $goods->hasManyGoodsCategory->implode('category_ids', ',');
|
||||
}
|
||||
|
||||
});
|
||||
return $list;
|
||||
}
|
||||
|
||||
|
||||
protected function setMemberId()
|
||||
{
|
||||
$member_id = intval(request()->input('uid'));
|
||||
|
||||
if (empty($member_id)) {
|
||||
throw new ShopException('用户不存在');
|
||||
}
|
||||
|
||||
Session::set('member_id', $member_id);
|
||||
|
||||
return $member_id;
|
||||
}
|
||||
|
||||
public function getMemberAddress($uid)
|
||||
{
|
||||
if(\Setting::get('shop.trade.is_street')) {
|
||||
$member_address = YzMemberAddress::uniacid()->whereUid($uid)->where('isdefault',1)->first();
|
||||
if ($member_address) {
|
||||
$member_address->province_id = Address::where('areaname',$member_address->province)->value('id');
|
||||
$member_address->city_id = Address::where('areaname',$member_address->city)->value('id');
|
||||
$member_address->district_id = Address::where('areaname',$member_address->district)->where('parentid', $member_address->city_id)->value('id');
|
||||
$member_address->street_id = Street::where('parentid', $member_address->district_id)->where('areaname',$member_address->street)->value('id');
|
||||
}
|
||||
} else{
|
||||
$member_address = MemberAddress::uniacid()->whereUid($uid)->where('isdefault',1)->first();
|
||||
|
||||
if ($member_address) {
|
||||
$member_address->province_id = Address::where('areaname',$member_address->province)->value('id');
|
||||
$member_address->city_id = Address::where('areaname',$member_address->city)->value('id');
|
||||
$member_address->district_id = Address::where('areaname',$member_address->district)->where('parentid', $member_address->city)->value('id');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return !empty($member_address) ? $member_address : [];
|
||||
}
|
||||
|
||||
public function select()
|
||||
{
|
||||
|
||||
if (app('plugins')->isEnabled('store-cashier')) {
|
||||
$store = \Yunshop\StoreCashier\common\models\Store::uniacid()->get()->toArray();
|
||||
}
|
||||
|
||||
//预防万一先清空会员的member_id Session
|
||||
Session::clear('member_id');
|
||||
|
||||
return view('Yunshop\HelpUserBuying::admin.select',[
|
||||
'store' => isset($store)?$store:[],
|
||||
])->render();
|
||||
}
|
||||
|
||||
public function goodsIncrease()
|
||||
{
|
||||
$id = intval(\YunShop::request()->id);
|
||||
$num = intval(\YunShop::request()->num);
|
||||
$type = intval(\YunShop::request()->type);
|
||||
$goods = Goods::where('status', 1)->find($id);
|
||||
|
||||
if (empty($goods)) {
|
||||
return $this->errorJson('商品不存在或以下架',['code'=> 2]);
|
||||
}
|
||||
|
||||
$new_num = $type ? $num : $num + 1;
|
||||
|
||||
if ($goods->stock < $new_num) {
|
||||
return $this->successJson('最大',['data' => $goods->stock]);
|
||||
}
|
||||
|
||||
|
||||
return $this->successJson('ok',['data' => $new_num]);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,437 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\admin;
|
||||
|
||||
use app\common\components\BaseController;
|
||||
use app\common\exceptions\AppException;
|
||||
use app\common\exceptions\ShopException;
|
||||
use app\common\helpers\Url;
|
||||
use app\common\models\DispatchType;
|
||||
use app\common\models\Member;
|
||||
use app\common\services\Session;
|
||||
use app\common\models\GoodsSpecItem;
|
||||
use Illuminate\Http\Request;
|
||||
use Yunshop\HelpUserBuying\common\CategoryFactory;
|
||||
use Yunshop\HelpUserBuying\models\Goods;
|
||||
use Yunshop\HelpUserBuying\models\GoodsOption;
|
||||
use Yunshop\HelpUserBuying\store\models\Store;
|
||||
use Yunshop\HelpUserBuying\store\models\StoreGoods;
|
||||
use Yunshop\HelpUserBuying\supplier\models\SupplierGoods;
|
||||
|
||||
class IndexController extends BaseController
|
||||
{
|
||||
|
||||
protected $order_type = [
|
||||
0 => 'shop',
|
||||
32 => 'store',
|
||||
92 => 'supplier',
|
||||
];
|
||||
|
||||
protected $plugin_id = [0];
|
||||
|
||||
|
||||
public function index()
|
||||
{
|
||||
return view('Yunshop\HelpUserBuying::buying.select',[
|
||||
'store_enabled' => app('plugins')->isEnabled('store-cashier') ? 1 : 0,
|
||||
'supplier_enabled' => app('plugins')->isEnabled('supplier') ? 1 : 0,
|
||||
])->render();
|
||||
}
|
||||
|
||||
public function getSource(Request $request)
|
||||
{
|
||||
if ($request->get('source') == 'store-cashier' && $request->get('source_input')){
|
||||
$store = \Yunshop\StoreCashier\common\models\Store::uniacid()
|
||||
->select('id', 'store_name')
|
||||
->where('id', $request->source_input)
|
||||
->orWhere('store_name', 'like', '%' . $request->source_input . '%')
|
||||
->get()
|
||||
->toArray();
|
||||
return $this->successJson('ok', ['stores' => $store]);
|
||||
}
|
||||
|
||||
if ($request->get('source') == 'supplier' && $request->get('source_input')){
|
||||
$supplier = \Yunshop\Supplier\common\models\Supplier::uniacid()
|
||||
->select('id', 'realname')
|
||||
->where('id', $request->source_input)
|
||||
->orWhere('realname', 'like', '%' . $request->source_input . '%')
|
||||
->get()
|
||||
->toArray();
|
||||
return $this->successJson('ok', ['supplier' => $supplier]);
|
||||
}
|
||||
|
||||
return $this->errorJson('参数不足或参数错误,请重试');
|
||||
}
|
||||
|
||||
//平台代客下单
|
||||
public function shopIndex()
|
||||
{
|
||||
|
||||
$category_list = CategoryFactory::create('shop');
|
||||
|
||||
|
||||
return view('Yunshop\HelpUserBuying::buying.goods', [
|
||||
'owner_id' => 0,
|
||||
'title' => '平台自营',
|
||||
'goods_url' => yzWebFullUrl('plugin.help-user-buying.admin.index.shopGoodsList'),
|
||||
'route_url' => yzWebFullUrl('plugin.help-user-buying.admin.index.shop-index'),
|
||||
'order_type' => 0,
|
||||
'category_level' => \Setting::get('shop.category.cat_level') == 3 ? 3:2,
|
||||
'category_list' => json_encode($category_list),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取平台商品列表
|
||||
* @param string search['keyword'] 商品名称
|
||||
* @param string search['category'] 商品分类id 多个用逗号拼接
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
* @throws AppException
|
||||
*/
|
||||
public function shopGoodsList()
|
||||
{
|
||||
|
||||
$search = request()->input('search');
|
||||
|
||||
|
||||
// if (app('plugins')->isEnabled('supplier')) {
|
||||
// $this->plugin_id[] = 92;
|
||||
// }
|
||||
|
||||
if (app('plugins')->isEnabled('net-car')) {
|
||||
$this->plugin_id[] = 41;
|
||||
}
|
||||
|
||||
$list = Goods::getGoodsList($search, $this->plugin_id)->paginate(15);
|
||||
|
||||
|
||||
if ($list->isEmpty()) {
|
||||
throw new AppException('无商品');
|
||||
}
|
||||
|
||||
$list = $this->goodsMap($list);
|
||||
|
||||
return $this->successJson('list', $list);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//门店代客下单
|
||||
public function storeIndex()
|
||||
{
|
||||
|
||||
$store_id = intval(request()->input('store_id'));
|
||||
|
||||
$store = Store::uniacid()->where('id', $store_id)->first();
|
||||
|
||||
|
||||
if (!$store) {
|
||||
throw new ShopException('门店不存在');
|
||||
}
|
||||
|
||||
|
||||
$category_list = CategoryFactory::create('store', ['store_id'=> $store_id]);
|
||||
|
||||
|
||||
return view('Yunshop\HelpUserBuying::buying.goods', [
|
||||
'owner_id' => $store_id,
|
||||
'title' => $store->store_name,
|
||||
'goods_url' => yzWebFullUrl('plugin.help-user-buying.admin.index.storeGoodsList'),
|
||||
'route_url' => yzWebFullUrl('plugin.help-user-buying.admin.index.store-index'),
|
||||
'order_type' => 32,
|
||||
'category_level' => '2',
|
||||
'category_list' => json_encode($category_list),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取门店商品列表
|
||||
* @param int search['store_id'] 门店id
|
||||
* @param string search['keyword'] 商品名称
|
||||
* @param string search['category'] 商品分类id 多个用逗号拼接
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
* @throws AppException
|
||||
*/
|
||||
public function storeGoodsList()
|
||||
{
|
||||
|
||||
$search = request()->input('search');
|
||||
|
||||
|
||||
if (empty(intval($search['owner_id']))) {
|
||||
throw new AppException('门店不存在');
|
||||
}
|
||||
|
||||
$list = StoreGoods::getGoodsList($search, $search['owner_id'])
|
||||
->orderBy('display_order', 'desc')->orderBy('yz_goods.id', 'desc')->paginate(15);
|
||||
|
||||
|
||||
if ($list->isEmpty()) {
|
||||
throw new AppException('无商品');
|
||||
}
|
||||
|
||||
$list = $this->goodsMap($list);
|
||||
|
||||
|
||||
return $this->successJson('list', $list);
|
||||
|
||||
}
|
||||
|
||||
//供应商代客下单
|
||||
public function supplierIndex()
|
||||
{
|
||||
|
||||
$supplier_id = intval(request()->input('supplier_id'));
|
||||
|
||||
$supplier = \Yunshop\Supplier\common\models\Supplier::uniacid()->where('id', $supplier_id)->first();
|
||||
if (!$supplier) {
|
||||
throw new ShopException('供应商不存在');
|
||||
}
|
||||
|
||||
$category_list = CategoryFactory::create('shop');
|
||||
|
||||
return view('Yunshop\HelpUserBuying::buying.goods', [
|
||||
'owner_id' => $supplier_id,
|
||||
'title' => $supplier->realname,
|
||||
'goods_url' => yzWebFullUrl('plugin.help-user-buying.admin.index.supplierGoodsList'),
|
||||
'route_url' => yzWebFullUrl('plugin.help-user-buying.admin.index.shop-index'),
|
||||
'order_type' => 92,
|
||||
'category_level' => \Setting::get('shop.category.cat_level') == 3 ? 3:2,
|
||||
'category_list' => json_encode($category_list),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取供应商商品列表
|
||||
* @param string search['keyword'] 商品名称
|
||||
* @param string search['category'] 商品分类id 多个用逗号拼接
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
* @throws AppException
|
||||
*/
|
||||
public function supplierGoodsList()
|
||||
{
|
||||
|
||||
$search = request()->input('search');
|
||||
|
||||
if (empty(intval($search['owner_id']))) {
|
||||
throw new AppException('供应商不存在');
|
||||
}
|
||||
|
||||
|
||||
$list = SupplierGoods::getGoodsList($search, $search['owner_id'])->paginate(15);
|
||||
|
||||
if ($list->isEmpty()) {
|
||||
throw new AppException('无商品');
|
||||
}
|
||||
|
||||
$list = $this->goodsMap($list);
|
||||
|
||||
return $this->successJson('list', $list);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//设置下单会员 Session 显示下单页
|
||||
public function setMemberId()
|
||||
{
|
||||
|
||||
$request = json_decode(request()->input('data'), true);
|
||||
|
||||
$order_type = $request['order_type'];
|
||||
|
||||
$member = Member::getMemberById($request['uid']);
|
||||
|
||||
|
||||
if (empty($request['uid']) || empty($member)) {
|
||||
|
||||
//预防万一先清空会员的member_id Session
|
||||
if (\YunShop::app()->getMemberId()) {
|
||||
|
||||
Session::clear('member_id');
|
||||
}
|
||||
|
||||
return $this->errorJson('会员不存在');
|
||||
}
|
||||
|
||||
Session::set('member_id', $member->uid);
|
||||
|
||||
$member->member_address = MemberAddressController::getMemberAddress($member->uid);
|
||||
|
||||
|
||||
$deliveryMethod = $this->deliveryMethod($order_type,$request);
|
||||
|
||||
$needAddress = $this->needAddress($request);
|
||||
|
||||
//dd($request,$deliveryMethod);
|
||||
return view('Yunshop\HelpUserBuying::buying.order', [
|
||||
'member' => json_encode($member),
|
||||
'is_street' => \Setting::get('shop.trade.is_street')?:0,
|
||||
'order_url' => json_encode($this->getOrderUrl($order_type)),
|
||||
'request' => json_encode($request),
|
||||
'deliveryMethod' => json_encode($deliveryMethod),
|
||||
'needAddress' => $needAddress
|
||||
]);
|
||||
}
|
||||
|
||||
//配送方式:司机配送
|
||||
public function deliveryMethod($order_type,$request)
|
||||
{
|
||||
$arr = [];
|
||||
|
||||
//虚拟商品不需要配送方式 type:1-实体,2-虚拟
|
||||
$goods_ids = array_column($request['goods'],'goods_id');
|
||||
if (!Goods::uniacid()->selectRaw('1')->whereIn('id',$goods_ids)->where('type',1)->first()) {
|
||||
return $arr;
|
||||
}
|
||||
|
||||
if ($order_type == 32) {
|
||||
|
||||
$store = Store::uniacid()->where('id', $request['owner_id'])->first();
|
||||
|
||||
if (in_array(DispatchType::EXPRESS, $store->dispatch_type)) {
|
||||
$arr[] = ['name' => '快递', 'value' => DispatchType::EXPRESS];
|
||||
}
|
||||
|
||||
if (in_array(DispatchType::SELF_DELIVERY, $store->dispatch_type)) {
|
||||
$arr[] = ['name' => '门店自提', 'value' => DispatchType::SELF_DELIVERY];
|
||||
}
|
||||
|
||||
} else {
|
||||
$arr[] = ['name' => '快递', 'value' => DispatchType::EXPRESS];
|
||||
}
|
||||
|
||||
// if ($order_type == 92) {
|
||||
// if (app('plugins')->isEnabled('delivery-driver')) {
|
||||
// $arr[] = ['name' => '司机配送', 'value' => 7];
|
||||
// }
|
||||
// }
|
||||
|
||||
return $arr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取搜索会员
|
||||
* @param string keyword 会员昵称、手机号、id
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function getSearchMember()
|
||||
{
|
||||
|
||||
$keyword = request()->input('keyword');
|
||||
|
||||
$member = Member::uniacid()->searchLike($keyword)
|
||||
->whereHas('yzMember', function ($query) {
|
||||
$query->whereNull('deleted_at');
|
||||
})->with('yzMember')->get();
|
||||
|
||||
$member = set_medias($member, array('avatar', 'share_icon'));
|
||||
|
||||
return $this->successJson('member_search', $member);
|
||||
}
|
||||
|
||||
|
||||
//商品规格处理
|
||||
protected function goodsMap($list)
|
||||
{
|
||||
|
||||
$list->map(function($goodsModel){
|
||||
|
||||
$goodsModel->thumb = yz_tomedia($goodsModel->thumb);
|
||||
|
||||
if (!$goodsModel->hasManySpecs->isEmpty()) {
|
||||
foreach ($goodsModel->hasManySpecs as &$spec) {
|
||||
$spec['specitem'] = GoodsSpecItem::select('id', 'title', 'specid', 'thumb')->where('specid', $spec['id'])->orderBy('display_order', 'asc')->get();
|
||||
}
|
||||
}
|
||||
|
||||
if ($goodsModel->has_option) {
|
||||
$goodsModel->min_price = $goodsModel->hasManyOptions->min("product_price");
|
||||
$goodsModel->max_price = $goodsModel->hasManyOptions->max("product_price");
|
||||
$goodsModel->stock = $goodsModel->hasManyOptions->sum('stock');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return $list->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品加减
|
||||
* @param int id 商品id
|
||||
* @param int option_id 商品规格id
|
||||
* @param int num 商品增加数量
|
||||
* @param int type 类型 0 直接取num, 在原数量上加一
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function goodsIncrease()
|
||||
{
|
||||
$id = intval(request()->input('id'));
|
||||
$option_id = intval(request()->input('option_id'));
|
||||
$new_num = intval(request()->input('num'));
|
||||
|
||||
|
||||
|
||||
if ($option_id) {
|
||||
$goods = GoodsOption::uniacid()->whereHas('goods', function ($goods) use ($id) {
|
||||
return $goods->where('id', $id)->where('status', 1);
|
||||
})->find($option_id);
|
||||
|
||||
} else {
|
||||
$goods = \app\common\models\Goods::where('status', 1)->find($id);
|
||||
|
||||
}
|
||||
|
||||
if (empty($goods)) {
|
||||
|
||||
$a = $option_id ?'规格ID('.$option_id.')':'';
|
||||
return $this->errorJson('商品(ID:'.$id.')'. $a .' 不存在或以下架',['code'=> 2]);
|
||||
}
|
||||
|
||||
|
||||
if ($goods->stock < $new_num) {
|
||||
|
||||
return $this->successJson('最大',['code'=> 1, 'num' => $goods->stock]);
|
||||
}
|
||||
|
||||
|
||||
return $this->successJson('ok',['code'=> 2, 'num' => $new_num]);
|
||||
}
|
||||
|
||||
protected function getOrderUrl($key)
|
||||
{
|
||||
$url = [
|
||||
0 => [
|
||||
'create_url' => yzApiUrl('plugin.help-user-buying.shop.controller.create.index'),
|
||||
'pre_url' => yzApiUrl('plugin.help-user-buying.shop.controller.goods-buy.index'),
|
||||
|
||||
],
|
||||
32 => [
|
||||
'create_url' => yzApiUrl('plugin.help-user-buying.store.controller.create.index'),
|
||||
'pre_url' => yzApiUrl('plugin.help-user-buying.store.controller.goods-buy.index'),
|
||||
],
|
||||
92 => [
|
||||
'create_url' => yzApiUrl('plugin.help-user-buying.shop.controller.create.index'),
|
||||
'pre_url' => yzApiUrl('plugin.help-user-buying.shop.controller.goods-buy.index'),
|
||||
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
return $url[$key];
|
||||
}
|
||||
|
||||
protected function needAddress($request): int
|
||||
{
|
||||
$needAddress = 1;//1需要,2不需要
|
||||
$goods_ids = array_column($request['goods'],'goods_id');
|
||||
//need_address:0-需要收货地址,1不需要收货地址
|
||||
if (Goods::uniacid()->select('id')->whereIn('id',$goods_ids)->where('type',2)->where('need_address',1)->count() == count($goods_ids)) {
|
||||
$needAddress = 2;
|
||||
}
|
||||
return $needAddress;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,230 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\admin;
|
||||
|
||||
use app\common\components\BaseController;
|
||||
|
||||
use app\common\models\Address;
|
||||
use app\common\models\Street;
|
||||
use app\common\models\YzMemberAddress;
|
||||
use app\common\models\MemberAddress;
|
||||
use app\frontend\models\Member;
|
||||
use app\frontend\repositories\MemberAddressRepository;
|
||||
|
||||
class MemberAddressController extends BaseController
|
||||
{
|
||||
|
||||
//获取地址信息
|
||||
/**
|
||||
* @param string type 获取地址级别
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function getAddress()
|
||||
{
|
||||
|
||||
$type = request()->input('type');
|
||||
|
||||
switch ($type) {
|
||||
case 'province':
|
||||
$addressData = Address::getProvince();
|
||||
break;
|
||||
case 'city':
|
||||
$addressData = Address::getCityByParentId(\YunShop::request()->parentid);
|
||||
break;
|
||||
case 'district':
|
||||
$addressData = Address::getAreaByParentId(\YunShop::request()->parentid);
|
||||
break;
|
||||
case 'street':
|
||||
$addressData = Street::getStreetByParentId(\YunShop::request()->parentid);
|
||||
break;
|
||||
default:
|
||||
$addressData = collect([]);
|
||||
}
|
||||
if ($addressData->isEmpty()) {
|
||||
return $this->errorJson('未检测到数据!', $addressData);
|
||||
}
|
||||
return $this->successJson('成功', $addressData);
|
||||
}
|
||||
|
||||
|
||||
//会员默认地址
|
||||
public static function getMemberAddress($uid)
|
||||
{
|
||||
|
||||
if(\Setting::get('shop.trade.is_street')) {
|
||||
$member_address = YzMemberAddress::uniacid()->whereUid($uid)->where('isdefault',1)->first();
|
||||
if ($member_address) {
|
||||
$member_address->province_id = Address::where('areaname',$member_address->province)->value('id');
|
||||
$member_address->city_id = Address::where('areaname',$member_address->city)->where('parentid', $member_address->province_id)->value('id');
|
||||
$member_address->district_id = Address::where('areaname',$member_address->district)->where('parentid', $member_address->city_id)->value('id');
|
||||
$member_address->street_id = Street::where('parentid', $member_address->district_id)->where('areaname',$member_address->street)->value('id');
|
||||
}
|
||||
} else{
|
||||
$member_address = MemberAddress::uniacid()->whereUid($uid)->where('isdefault',1)->first();
|
||||
|
||||
if ($member_address) {
|
||||
$member_address->province_id = Address::where('areaname',$member_address->province)->value('id');
|
||||
$member_address->city_id = Address::where('areaname',$member_address->city)->where('parentid', $member_address->province_id)->value('id');
|
||||
$member_address->district_id = Address::where('areaname',$member_address->district)->where('parentid', $member_address->city_id)->value('id');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return !empty($member_address) ? $member_address->toArray() : [];
|
||||
}
|
||||
|
||||
public function getMemberAddressList()
|
||||
{
|
||||
$member_id = intval(request()->input('member_id'));
|
||||
|
||||
$memberAddressRepository = app(MemberAddressRepository::class);
|
||||
|
||||
$memberAddressList = $memberAddressRepository->getAddressList($member_id);
|
||||
|
||||
foreach ($memberAddressList as $k => $member_address) {
|
||||
if ($member_address) {
|
||||
$member_address['province_id'] = Address::where('areaname',$member_address['province'])->value('id');
|
||||
$member_address['city_id'] = Address::where('areaname',$member_address['city'])->where('parentid', $member_address['province_id'])->value('id');
|
||||
$member_address['district_id'] = Address::where('areaname',$member_address['district'])->where('parentid', $member_address['city_id'])->value('id');
|
||||
if ($member_address['street'] != '其他' && !empty($member_address['street'])) {
|
||||
$member_address['street_id'] = Street::where('parentid', $member_address['district_id'])->where('areaname',$member_address['street'])->value('id');
|
||||
} else {
|
||||
$member_address['street_id'] = 0;
|
||||
}
|
||||
|
||||
$member_address['address_info'] = implode(' ', array_filter([$member_address['province'], $member_address['city'], $member_address['district'], $member_address['street'], $member_address['address']]));
|
||||
|
||||
$memberAddressList[$k] = $member_address;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->successJson('addressList', $memberAddressList);
|
||||
|
||||
}
|
||||
|
||||
public function createMemberAddress()
|
||||
{
|
||||
$data = request()->input('address');
|
||||
|
||||
$memberAddressRepository = app(MemberAddressRepository::class);
|
||||
|
||||
$member = Member::where('uid', $data['uid'])->first();
|
||||
if (!$member) {
|
||||
return $this->errorJson("UID[{$data['uid']}]该会员不存在");
|
||||
}
|
||||
|
||||
if (!$data['username']) {
|
||||
return $this->errorJson('收件人不能为空');
|
||||
}
|
||||
|
||||
if (!$data['mobile']) {
|
||||
return $this->errorJson('手机号不能为空');
|
||||
}
|
||||
if (!preg_match("/^[0-9]*$/", $data['mobile'])) {
|
||||
return $this->errorJson('手机号请输入数字');
|
||||
}
|
||||
|
||||
if (!$data['province']) {
|
||||
return $this->errorJson('请选择省份');
|
||||
}
|
||||
|
||||
if (!$data['city']) {
|
||||
return $this->errorJson('请选择城市');
|
||||
}
|
||||
|
||||
if (!$data['district']) {
|
||||
return $this->errorJson('请选择区域');
|
||||
}
|
||||
|
||||
if (!$data['address']) {
|
||||
return $this->errorJson('请输入详细地址');
|
||||
}
|
||||
|
||||
$createAddress = array_only($data, ['uid','username', 'mobile', 'province','city','district','address', 'street']);
|
||||
|
||||
$createAddress['uniacid'] = \YunShop::app()->uniacid;
|
||||
|
||||
|
||||
$addressModel = $memberAddressRepository->fill($createAddress);
|
||||
|
||||
//dd($addressModel, $createAddress);
|
||||
|
||||
$validator = $addressModel->validator($addressModel->getAttributes());
|
||||
if ($validator->fails()) {
|
||||
return $this->errorJson($validator->messages()->first());
|
||||
}
|
||||
if (empty($addressModel->isdefault) && $data['isdefault']) {
|
||||
$addressModel->isdefault = 1;
|
||||
$memberAddressRepository->cancelDefaultAddress($addressModel->uid);
|
||||
}
|
||||
if ($addressModel->save()) {
|
||||
return $this->successJson('新增收货地址成功', $addressModel->toArray());
|
||||
} else {
|
||||
return $this->errorJson("写入数据出错,请重试!");
|
||||
}
|
||||
}
|
||||
|
||||
//修改会员收获地址
|
||||
public function editMemberAddress()
|
||||
{
|
||||
|
||||
$address_id = trim(request()->input('id'));
|
||||
|
||||
|
||||
$data = request()->input('address');
|
||||
|
||||
$memberAddressRepository = app(MemberAddressRepository::class);
|
||||
|
||||
$addressModel = $memberAddressRepository->getAddressById($address_id);
|
||||
if (!$addressModel) {
|
||||
return $this->errorJson("未找到地址数据或已删除");
|
||||
}
|
||||
if (!$data['username']) {
|
||||
return $this->errorJson('收件人不能为空');
|
||||
}
|
||||
|
||||
if (!$data['mobile']) {
|
||||
return $this->errorJson('手机号不能为空');
|
||||
}
|
||||
if (!preg_match("/^[0-9]*$/", $data['mobile'])) {
|
||||
return $this->errorJson('手机号请输入数字');
|
||||
}
|
||||
|
||||
if (!$data['province']) {
|
||||
return $this->errorJson('请选择省份');
|
||||
}
|
||||
|
||||
if (!$data['city']) {
|
||||
return $this->errorJson('请选择城市');
|
||||
}
|
||||
|
||||
if (!$data['district']) {
|
||||
return $this->errorJson('请选择区域');
|
||||
}
|
||||
|
||||
if (!$data['address']) {
|
||||
return $this->errorJson('请输入详细地址');
|
||||
}
|
||||
|
||||
$updateAddress = array_only($data, ['username', 'mobile', 'province','city','district','address', 'street']);
|
||||
|
||||
$addressModel->fill($updateAddress);
|
||||
|
||||
$validator = $addressModel->validator($addressModel->getAttributes());
|
||||
if ($validator->fails()) {
|
||||
return $this->errorJson($validator->messages()->first());
|
||||
}
|
||||
if (empty($addressModel->isdefault) && $data['isdefault']) {
|
||||
$addressModel->isdefault = 1;
|
||||
$memberAddressRepository->cancelDefaultAddress($addressModel->uid);
|
||||
}
|
||||
if ($addressModel->save()) {
|
||||
return $this->successJson('修改收货地址成功', $addressModel->toArray());
|
||||
} else {
|
||||
return $this->errorJson("写入数据出错,请重试!");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,173 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\admin;
|
||||
|
||||
use app\common\components\BaseController;
|
||||
use app\common\events\payment\ChargeComplatedEvent;
|
||||
use app\common\exceptions\AppException;
|
||||
use app\common\models\PayType;
|
||||
use app\common\services\PayFactory;
|
||||
use app\frontend\models\OrderPay;
|
||||
use app\frontend\modules\order\OrderCollection;
|
||||
use app\frontend\modules\orderPay\models\PreOrderPay;
|
||||
use Illuminate\Support\Collection;
|
||||
use app\common\models\Order;
|
||||
use app\frontend\modules\order\services\OrderService;
|
||||
use Yunshop\HelpUserBuying\common\payment\types\HelpOrderPaymentTypes;
|
||||
|
||||
class UserMergePayController extends BaseController
|
||||
{
|
||||
|
||||
public $orders;
|
||||
|
||||
protected $publicAction = ['index','alipay'];
|
||||
protected $ignoreAction = ['index', 'alipay'];
|
||||
/**
|
||||
* 获取支付按钮列表接口
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
* @throws AppException
|
||||
* @throws \app\common\exceptions\ShopException
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
// 验证
|
||||
$this->validate([
|
||||
'order_ids' => 'required'
|
||||
]);
|
||||
|
||||
// 订单集合
|
||||
$orders = $this->orders(request()->input('order_ids'));
|
||||
|
||||
// 用户余额
|
||||
$member = $orders->first()->belongsToMember()->select(['credit2'])->first()->toArray();
|
||||
|
||||
// 生成支付记录 记录订单号,支付金额,用户,支付号
|
||||
$orderPay = new PreOrderPay();
|
||||
$orderPay->setOrders($orders);
|
||||
$orderPay->store();
|
||||
|
||||
// 支付类型
|
||||
$orderPaymentTypes = new HelpOrderPaymentTypes($orderPay);
|
||||
$buttons = app('Payment')->setPaymentTypes($orderPaymentTypes)->getPaymentButton();
|
||||
|
||||
$data = ['order_pay' => $orderPay, 'member' => $member, 'buttons' => $buttons, 'typename' => ''];
|
||||
return $this->successJson('成功', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付的时候,生成支付记录的时候,通过订单ids获取订单集合
|
||||
* @param $orderIds
|
||||
* @return OrderCollection
|
||||
* @throws AppException
|
||||
*/
|
||||
private function orders($orderIds)
|
||||
{
|
||||
if (!is_array($orderIds)) {
|
||||
$orderIds = explode(',', $orderIds);
|
||||
}
|
||||
array_walk($orderIds, function ($orderId) {
|
||||
if (!is_numeric($orderId)) {
|
||||
throw new AppException('(ID:' . $orderId . ')订单号id必须为数字');
|
||||
}
|
||||
});
|
||||
|
||||
$this->orders = OrderCollection::make(Order::select(['status', 'id', 'order_sn', 'price', 'uid'])->whereIn('id', $orderIds)->get());
|
||||
|
||||
if ($this->orders->count() != count($orderIds)) {
|
||||
throw new AppException('(ID:' . implode(',', $orderIds) . ')未找到订单');
|
||||
}
|
||||
return $this->orders;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
* @throws AppException
|
||||
* @throws \app\common\exceptions\PaymentException
|
||||
* @throws \app\common\exceptions\ShopException
|
||||
*/
|
||||
public function credit2()
|
||||
{
|
||||
if (\Setting::get('shop.pay.credit') == false) {
|
||||
throw new AppException('商城未开启余额支付');
|
||||
}
|
||||
|
||||
|
||||
$orderPay = OrderPay::find(request()->input('order_pay_id'));
|
||||
$result = $orderPay->getPayResult(PayFactory::PAY_CREDIT);
|
||||
if (!$result) {
|
||||
throw new AppException('余额扣除失败,请联系客服');
|
||||
}
|
||||
$orderPay->pay();
|
||||
|
||||
event(new ChargeComplatedEvent([
|
||||
'order_pay_id' => $orderPay->id
|
||||
]));
|
||||
|
||||
|
||||
return $this->successJson('成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 货到付款
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
* @throws AppException
|
||||
* @throws \app\common\exceptions\ShopException
|
||||
*/
|
||||
public function COD()
|
||||
{
|
||||
$this->validate([
|
||||
'order_pay_id' => 'required|integer'
|
||||
]);
|
||||
if (\Setting::get('shop.pay.COD') == false) {
|
||||
throw new AppException('商城未开启货到付款');
|
||||
}
|
||||
|
||||
//这个不知道是什么鬼
|
||||
// if (!is_null($event_arr = \app\common\modules\shop\ShopConfig::current()->get('plugin_delivery_pay_function'))) {
|
||||
// foreach ($event_arr as $v) {
|
||||
// $class = array_get($v, 'class');
|
||||
// $function = array_get($v, 'function');
|
||||
// $res = $class::$function(request()->input('order_pay_id'));
|
||||
// if (!$res['result']) {
|
||||
// throw new AppException($res['msg']);
|
||||
// }
|
||||
// if ($res['result'] && $res['data']['process'] == 'break') {
|
||||
// return $this->successJson('成功');
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
$orderPay = \app\frontend\models\OrderPay::find(request()->input('order_pay_id'));
|
||||
$orderPay->getPayResult(PayFactory::PAY_COD);
|
||||
$orderPay->pay();
|
||||
|
||||
|
||||
return $this->successJson('成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认支付
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
* @throws AppException
|
||||
* @throws \app\common\exceptions\ShopException
|
||||
*/
|
||||
public function confirmPay()
|
||||
{
|
||||
$this->validate([
|
||||
'order_pay_id' => 'required|integer'
|
||||
]);
|
||||
|
||||
/**
|
||||
* @var \app\frontend\models\OrderPay $orderPay
|
||||
*/
|
||||
$orderPay = \app\frontend\models\OrderPay::find(request()->input('order_pay_id'));
|
||||
$orderPay->getPayResult(PayFactory::CONFIRM_PAY);
|
||||
$orderPay->pay();
|
||||
|
||||
return $this->successJson('成功');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\common;
|
||||
|
||||
use app\backend\modules\goods\models\Category;
|
||||
use Yunshop\HelpUserBuying\store\models\Category as storeCategory;
|
||||
|
||||
class CategoryFactory
|
||||
{
|
||||
const SHOP = 'shop';
|
||||
const STORE = 'store';
|
||||
|
||||
public static function create($type, $params = null)
|
||||
{
|
||||
$data = null;
|
||||
switch ($type) {
|
||||
case self::SHOP:
|
||||
$data = self::shopCategory($params);
|
||||
break;
|
||||
case self::STORE:
|
||||
$data = self::storeCategory($params);
|
||||
break;
|
||||
default:
|
||||
$data = [];
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
protected static function shopCategory($params)
|
||||
{
|
||||
$set = \Setting::get('shop.category');
|
||||
|
||||
$list = Category::getCategorys(0)->select('id', 'name', 'enabled')->pluginId()->where('enabled', 1)->get();
|
||||
|
||||
$list->map(function($category) use($set) {
|
||||
$childrens = Category::getChildrenCategorys($category->id,$set)->select('id', 'name', 'enabled')->get()->toArray();
|
||||
foreach ($childrens as $key => &$children) {
|
||||
if ($set['cat_level'] == 3 && $children['has_many_children']) {
|
||||
$children['childrens'] = $children['has_many_children'];
|
||||
} else {
|
||||
$children['childrens'] = [];
|
||||
}
|
||||
}
|
||||
$category->childrens = $childrens;
|
||||
|
||||
});
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
protected static function storeCategory($params)
|
||||
{
|
||||
$list = storeCategory::getCategory($params)->get();
|
||||
|
||||
$list->map(function($category) use ($params) {
|
||||
|
||||
$category->childrens = storeCategory::getChildrenCategory($category->id, $params)->get()->toArray();
|
||||
|
||||
});
|
||||
|
||||
return $list;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,413 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\common;
|
||||
|
||||
|
||||
class MenuHook
|
||||
{
|
||||
public static function menu($left_show = 0)
|
||||
{
|
||||
$menu = [
|
||||
'name' => '代客下单',
|
||||
'url' => 'plugin.help-user-buying.admin.index.index', //url 可以填写http 也可以直接写路由
|
||||
'url_params' => '',//如果是url填写的是路由则启用参数否则不启用
|
||||
'permit' => 1,//如果不设置则不会做权限检测
|
||||
'menu' => 1,//如果不设置则不显示菜单,子菜单也将不显示
|
||||
'top_show' => 0,
|
||||
'left_first_show' => $left_show,
|
||||
'left_second_show' => 0,
|
||||
'icon' => 'fa-child',//菜单图标
|
||||
'type' => 'industry',
|
||||
'list_icon' => 'help_user_buying',
|
||||
'parents' => [],
|
||||
'child' => [
|
||||
// 'help-user-buying-select' => [
|
||||
// 'name' => '选择基地',
|
||||
// 'permit' => 1,
|
||||
// 'menu' => 1,
|
||||
// 'icon' => '',
|
||||
// 'url' => 'plugin.help-user-buying.admin.home.select',
|
||||
// 'url_params'=> '',
|
||||
// 'parents' => ['help_user_buying'],
|
||||
// 'child' => []
|
||||
// ],
|
||||
'help-user-buying-index' => [
|
||||
'name' => '选择订单类型',
|
||||
'permit' => 1,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-order' => [
|
||||
'name' => '下单页',
|
||||
'permit' => 1,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.set-member-id',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-shop-index' => [
|
||||
'name' => '商城商品下单',
|
||||
'permit' => 1,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.shop-index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => [
|
||||
'help-user-buying-shop-goods-list' => [
|
||||
'name' => '商城商品列表',
|
||||
'url' => 'plugin.help-user-buying.admin.index.shopGoodsList',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-shop-index'],
|
||||
],
|
||||
'help-user-buying-shop-goods-buy' => [
|
||||
'name' => '商城订单预下单',
|
||||
'url' => 'plugin.help-user-buying.shop.controller.goods-buy.index',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-shop-index'],
|
||||
],
|
||||
'help-user-buying-shop-create' => [
|
||||
'name' => '商城订单下单',
|
||||
'url' => 'plugin.help-user-buying.shop.controller.create.index',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-shop-index'],
|
||||
],
|
||||
]
|
||||
],
|
||||
'help-user-buying-store-index' => [
|
||||
'name' => '门店商品下单',
|
||||
'permit' => 1,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.store-index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => [
|
||||
'help-user-buying-store-goods-list' => [
|
||||
'name' => '门店商品列表',
|
||||
'url' => 'plugin.help-user-buying.admin.index.storeGoodsList',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
'help-user-buying-store-goods-buy' => [
|
||||
'name' => '门店订单预下单',
|
||||
'url' => 'plugin.help-user-buying.store.controller.goods-buy.index',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
'help-user-buying-store-create' => [
|
||||
'name' => '门店订单下单',
|
||||
'url' => 'plugin.help-user-buying.store.controller.create.index',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
]
|
||||
],
|
||||
'help-user-buying-supplier-index' => [
|
||||
'name' => '供应商商品下单',
|
||||
'permit' => 1,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.supplier-index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => [
|
||||
'help-user-buying-store-goods-list' => [
|
||||
'name' => '供应商商品列表',
|
||||
'url' => 'plugin.help-user-buying.admin.index.supplierGoodsList',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
'help-user-buying-supplier-goods-buy' => [
|
||||
'name' => '供应商订单预下单',
|
||||
'url' => 'plugin.help-user-buying.shop.controller.goods-buy.index',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
'help-user-buying-supplier-create' => [
|
||||
'name' => '供应商订单下单',
|
||||
'url' => 'plugin.help-user-buying.shop.controller.create.index',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
]
|
||||
],
|
||||
'help-user-buying-goods-increase' => [
|
||||
'name' => '商品加减',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.goods-increase',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
// 'help-user-buying-delivery-method' => [
|
||||
// 'name' => '配送方式',
|
||||
// 'permit' => 0,
|
||||
// 'menu' => 0,
|
||||
// 'icon' => '',
|
||||
// 'url' => 'plugin.help-user-buying.admin.index.delivery-method',
|
||||
// 'url_params'=> '',
|
||||
// 'parents' => ['help_user_buying'],
|
||||
// 'child' => []
|
||||
// ],
|
||||
'help-user-buying-get-search-member' => [
|
||||
'name' => '获取搜索会员',
|
||||
'permit' => 0,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.getSearchMember',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-user-merge-pay' => [
|
||||
'name' => '支付',
|
||||
'permit' => 1,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.user-merge-pay.index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => [
|
||||
'help-user-buying-user-merge-pay-credit2' => [
|
||||
'name' => '余额支付',
|
||||
'url' => 'plugin.help-user-buying.admin.user-merge-pay.credit2',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-user-merge-pay'],
|
||||
],
|
||||
'help-user-buying-user-merge-pay-COD' => [
|
||||
'name' => '货到付款',
|
||||
'url' => 'plugin.help-user-buying.admin.user-merge-pay.COD',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-user-merge-pay'],
|
||||
],
|
||||
]
|
||||
],
|
||||
'help-user-buying-address' => [
|
||||
'name' => '获取地址数据',
|
||||
'permit' => 0,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.member-address.get-address',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
]
|
||||
];
|
||||
|
||||
return $menu;
|
||||
}
|
||||
|
||||
//门店后台显示列表
|
||||
public static function storeMenu()
|
||||
{
|
||||
return [
|
||||
'name' => '代客下单',
|
||||
'url' => 'plugin.help-user-buying.admin.index.index', //url 可以填写http 也可以直接写路由
|
||||
'url_params' => '',//如果是url填写的是路由则启用参数否则不启用
|
||||
'permit' => 0,//如果不设置则不会做权限检测
|
||||
'menu' => 1,//如果不设置则不显示菜单,子菜单也将不显示
|
||||
'top_show' => 0,
|
||||
'left_first_show' => 1,
|
||||
'left_second_show' => 0,
|
||||
'icon' => 'fa-child',//菜单图标
|
||||
'type' => 'industry',
|
||||
'list_icon' => 'help_user_buying',
|
||||
'parents' => [],
|
||||
'child' => [
|
||||
'help-user-buying-index' => [
|
||||
'name' => '选择订单类型',
|
||||
'permit' => 0,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-order' => [
|
||||
'name' => '下单页',
|
||||
'permit' => 0,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.set-member-id',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-shop-index' => [
|
||||
'name' => '商城商品下单',
|
||||
'permit' => 0,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.shop-index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => [
|
||||
'help-user-buying-shop-goods-list' => [
|
||||
'name' => '商城商品列表',
|
||||
'url' => 'plugin.help-user-buying.admin.index.shopGoodsList',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-shop-index'],
|
||||
],
|
||||
'help-user-buying-shop-goods-buy' => [
|
||||
'name' => '商城订单预下单',
|
||||
'url' => 'plugin.help-user-buying.shop.controller.goods-buy.index',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-shop-index'],
|
||||
],
|
||||
'help-user-buying-shop-create' => [
|
||||
'name' => '商城订单下单',
|
||||
'url' => 'plugin.help-user-buying.shop.controller.create.index',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-shop-index'],
|
||||
],
|
||||
]
|
||||
],
|
||||
'help-user-buying-store-index' => [
|
||||
'name' => '门店商品下单',
|
||||
'permit' => 0,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.store-index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => [
|
||||
'help-user-buying-store-goods-list' => [
|
||||
'name' => '门店商品列表',
|
||||
'url' => 'plugin.help-user-buying.admin.index.storeGoodsList',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
'help-user-buying-store-goods-buy' => [
|
||||
'name' => '门店订单预下单',
|
||||
'url' => 'plugin.help-user-buying.store.controller.goods-buy.index',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
'help-user-buying-store-create' => [
|
||||
'name' => '门店订单下单',
|
||||
'url' => 'plugin.help-user-buying.store.controller.create.index',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
]
|
||||
],
|
||||
'help-user-buying-supplier-index' => [
|
||||
'name' => '供应商商品下单',
|
||||
'permit' => 0,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.supplier-index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => [
|
||||
'help-user-buying-store-goods-list' => [
|
||||
'name' => '供应商商品列表',
|
||||
'url' => 'plugin.help-user-buying.admin.index.supplierGoodsList',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
'help-user-buying-supplier-goods-buy' => [
|
||||
'name' => '供应商订单预下单',
|
||||
'url' => 'plugin.help-user-buying.shop.controller.goods-buy.index',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
'help-user-buying-supplier-create' => [
|
||||
'name' => '供应商订单下单',
|
||||
'url' => 'plugin.help-user-buying.shop.controller.create.index',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-store-index'],
|
||||
],
|
||||
]
|
||||
],
|
||||
'help-user-buying-goods-increase' => [
|
||||
'name' => '商品加减',
|
||||
'permit' => 0,
|
||||
'menu' => 0,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.goods-increase',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-get-search-member' => [
|
||||
'name' => '获取搜索会员',
|
||||
'permit' => 0,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.index.getSearchMember',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
'help-user-buying-user-merge-pay' => [
|
||||
'name' => '支付',
|
||||
'permit' => 1,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.user-merge-pay.index',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => [
|
||||
'help-user-buying-user-merge-pay-credit2' => [
|
||||
'name' => '余额支付',
|
||||
'url' => 'plugin.help-user-buying.admin.user-merge-pay.credit2',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-user-merge-pay'],
|
||||
],
|
||||
'help-user-buying-user-merge-pay-COD' => [
|
||||
'name' => '货到付款',
|
||||
'url' => 'plugin.help-user-buying.admin.user-merge-pay.COD',
|
||||
'permit' => 1,
|
||||
'menu' => 0,
|
||||
'parents' => ['help_user_buying', 'help-user-buying-user-merge-pay'],
|
||||
],
|
||||
]
|
||||
],
|
||||
'help-user-buying-address' => [
|
||||
'name' => '获取地址数据',
|
||||
'permit' => 0,
|
||||
'menu' => 1,
|
||||
'icon' => '',
|
||||
'url' => 'plugin.help-user-buying.admin.member-address.get-address',
|
||||
'url_params'=> '',
|
||||
'parents' => ['help_user_buying'],
|
||||
'child' => []
|
||||
],
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
namespace Yunshop\HelpUserBuying\common;
|
||||
|
||||
use app\backend\modules\goods\models\Discount;
|
||||
use app\backend\modules\goods\models\Share;
|
||||
use app\backend\modules\goods\services\DiscountService;
|
||||
use app\backend\modules\goods\services\Privilege;
|
||||
use app\backend\modules\goods\services\PrivilegeService;
|
||||
use app\common\traits\MessageTrait;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
|
||||
|
||||
class OrderObserver extends \app\common\observers\BaseObserver
|
||||
{
|
||||
use MessageTrait;
|
||||
|
||||
|
||||
public function saving(Model $model)
|
||||
{
|
||||
// dump($model);
|
||||
}
|
||||
|
||||
public function saved(Model $model)
|
||||
{
|
||||
// dump($model);
|
||||
}
|
||||
|
||||
public function created(Model $model)
|
||||
{
|
||||
// dump($model);
|
||||
}
|
||||
|
||||
public function updating(Model $model)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public function updated(Model $model)
|
||||
{
|
||||
}
|
||||
|
||||
public function deleted(Model $model)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Yunshop\HelpUserBuying\common\payment\types;
|
||||
|
||||
use app\frontend\modules\order\payment\types\OrderPaymentTypes;
|
||||
|
||||
class HelpOrderPaymentTypes extends OrderPaymentTypes
|
||||
{
|
||||
public $availableCode = ['balance','COD', 'confirmPay'];
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\models;
|
||||
|
||||
|
||||
class Goods extends \app\frontend\models\Goods
|
||||
{
|
||||
public static function getGoodsList($search,$plugin_ids)
|
||||
{
|
||||
$model = self::uniacid()->search($search);
|
||||
|
||||
$model->where('stock', '>', 0)->where('status', 1)->whereIn('plugin_id', $plugin_ids);
|
||||
|
||||
$model->with(['hasManySpecs' => function ($query) {
|
||||
return $query->select('id', 'goods_id', 'title', 'description');
|
||||
}])->with(['hasManyOptions' => function ($query) {
|
||||
return $query->select('id', 'goods_id', 'title', 'thumb', 'product_price', 'market_price', 'stock', 'specs', 'weight');
|
||||
}]);
|
||||
|
||||
|
||||
$model->orderBy('display_order', 'desc')->orderBy('yz_goods.id', 'desc');
|
||||
|
||||
|
||||
return $model;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\models;
|
||||
|
||||
|
||||
class GoodsOption extends \app\common\models\BaseModel
|
||||
{
|
||||
public $table = 'yz_goods_option';
|
||||
|
||||
public $guarded = [];
|
||||
public $timestamps = false;
|
||||
|
||||
public function goods()
|
||||
{
|
||||
return $this->belongsTo( \app\common\models\Goods::class, 'goods_id', 'id');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
namespace Yunshop\HelpUserBuying\shop\controller;
|
||||
|
||||
use app\frontend\models\GoodsOption;
|
||||
use Yunshop\HelpUserBuying\models\Goods;
|
||||
|
||||
class CreateController extends \app\frontend\modules\order\controllers\CreateController
|
||||
{
|
||||
protected $publicAction = ['index'];
|
||||
protected $ignoreAction = ['index', 'validateParam', 'getMemberCarts', 'getShopOrder', 'getPluginOrders'];
|
||||
|
||||
|
||||
public function preAction()
|
||||
{
|
||||
parent::preAction(); // TODO: Change the autogenerated stub
|
||||
|
||||
app('GoodsManager')->bind('Goods', function ($goodsManager, $attributes) {
|
||||
return new Goods($attributes);
|
||||
});
|
||||
|
||||
app('GoodsManager')->bind('GoodsOption', function ($goodsManager, $attributes) {
|
||||
return new GoodsOption($attributes);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\shop\controller;
|
||||
|
||||
use app\frontend\modules\member\services\MemberCartService;
|
||||
use app\frontend\modules\memberCart\MemberCartCollection;
|
||||
use Yunshop\HelpUserBuying\models\Goods;
|
||||
use app\frontend\models\GoodsOption;
|
||||
|
||||
class GoodsBuyController extends \app\frontend\modules\order\controllers\GoodsBuyController
|
||||
{
|
||||
protected $publicAction = ['index'];
|
||||
protected $ignoreAction = ['index', 'validateParam', 'getMemberCarts', 'getShopOrder', 'getPluginOrders'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function preAction()
|
||||
{
|
||||
parent::preAction(); // TODO: Change the autogenerated stub
|
||||
|
||||
app('GoodsManager')->bind('Goods', function ($goodsManager, $attributes) {
|
||||
return new Goods($attributes);
|
||||
});
|
||||
|
||||
app('GoodsManager')->bind('GoodsOption', function ($goodsManager, $attributes) {
|
||||
return new GoodsOption($attributes);
|
||||
});
|
||||
}
|
||||
|
||||
protected function getMemberCarts()
|
||||
{
|
||||
$goods_params = json_decode(request()->input('goods'),true);
|
||||
|
||||
|
||||
$result = collect($goods_params)->map(function ($memberCart) {
|
||||
return MemberCartService::newMemberCart($memberCart);
|
||||
});
|
||||
$memberCarts = new MemberCartCollection($result);
|
||||
$memberCarts->loadRelations();
|
||||
return $memberCarts;
|
||||
}
|
||||
|
||||
protected function validateParam(){
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
|
||||
namespace Yunshop\HelpUserBuying\store\controller;
|
||||
|
||||
|
||||
class CreateController extends \Yunshop\StoreCashier\frontend\store\CreateController
|
||||
{
|
||||
protected $publicAction = ['index'];
|
||||
protected $ignoreAction = ['index', 'validateParam', 'getMemberCarts', 'getShopOrder', 'getPluginOrders'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\store\controller;
|
||||
|
||||
use app\frontend\modules\member\services\MemberCartService;
|
||||
use app\frontend\modules\memberCart\MemberCartCollection;
|
||||
|
||||
class GoodsBuyController extends \Yunshop\StoreCashier\frontend\store\GoodsBuyController
|
||||
{
|
||||
protected $publicAction = ['index'];
|
||||
protected $ignoreAction = ['index', 'validateParam', 'getMemberCarts', 'getShopOrder', 'getPluginOrders'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
protected function getMemberCarts()
|
||||
{
|
||||
|
||||
$goods_params = json_decode(request()->input('goods'),true);
|
||||
|
||||
|
||||
$result = collect($goods_params)->map(function ($memberCart) {
|
||||
return MemberCartService::newMemberCart($memberCart);
|
||||
});
|
||||
$memberCarts = new MemberCartCollection($result);
|
||||
$memberCarts->loadRelations();
|
||||
return $memberCarts;
|
||||
|
||||
}
|
||||
|
||||
protected function validateParam()
|
||||
{
|
||||
$this->validate([
|
||||
'store_id' => 'required|integer|min:0',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\store\controller;
|
||||
|
||||
use app\common\services\finance\BalanceChange;
|
||||
use app\frontend\modules\order\services\OrderService;
|
||||
use app\common\models\Order;
|
||||
use app\common\models\PayType;
|
||||
use app\common\exceptions\AppException;
|
||||
use app\common\services\credit\ConstService;
|
||||
|
||||
|
||||
//todo blank 2019/03/12 废弃此类
|
||||
class OperationController extends \app\backend\modules\order\controllers\OperationController
|
||||
{
|
||||
public function pay()
|
||||
{
|
||||
$pay_type = request()->input('pay_type');
|
||||
$order_id = request()->input('order_id');
|
||||
|
||||
|
||||
if (!in_array($pay_type, [PayType::COD, PayType::CREDIT, PayType::BACKEND])) {
|
||||
throw new AppException('支付方式不支持');
|
||||
}
|
||||
|
||||
if ($pay_type == PayType::CREDIT) {
|
||||
return $this->buyingCredit2();
|
||||
}
|
||||
$this->param['pay_type_id'] = $pay_type;
|
||||
OrderService::orderPay($this->param);
|
||||
return $this->successJson();
|
||||
|
||||
}
|
||||
|
||||
public function buyingCredit2()
|
||||
{
|
||||
if (\Setting::get('shop.pay.credit') == false) {
|
||||
throw new AppException('商城未开启余额支付');
|
||||
|
||||
}
|
||||
|
||||
$data = [
|
||||
'member_id' => $this->order->uid,
|
||||
'remark' => '代客下单使用余额支付订单:'.$this->order->id,
|
||||
'source' => ConstService::SOURCE_CONSUME,
|
||||
'relation' => $this->order->order_sn,
|
||||
'operator' => ConstService::OPERATOR_SHOP,
|
||||
'operator_id' => ConstService::OPERATOR_ORDER,
|
||||
'change_value' => $this->order->price,
|
||||
];
|
||||
|
||||
$result = (new BalanceChange())->consume($data);
|
||||
|
||||
if ($result === true) {
|
||||
OrderService::orderPay(['order_id' => $this->order->id, 'order_pay_id' => 0, 'pay_type_id' => PayType::CREDIT]);
|
||||
return $this->successJson();
|
||||
} else {
|
||||
throw new AppException($result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\store\models;
|
||||
|
||||
|
||||
class Category extends \Yunshop\StoreCashier\store\models\Category
|
||||
{
|
||||
public static function getCategory($search)
|
||||
{
|
||||
$model = self::select('id', 'name', 'enabled')->where('enabled', 1);
|
||||
|
||||
$model->where('parent_id', 0);
|
||||
|
||||
if ($search['store_id']) {
|
||||
$model->whereHas('hasOneStoreGoodsCategory', function ($storeGoodsCategory) use ($search) {
|
||||
return $storeGoodsCategory->byStoreId($search['store_id']);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
$model->orderBy('display_order', 'asc');
|
||||
|
||||
return $model;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $parentId
|
||||
* @param $set
|
||||
* @return mixed
|
||||
*/
|
||||
public static function getChildrenCategory($parentId, $search)
|
||||
{
|
||||
$model = self::select('id', 'name', 'enabled');
|
||||
$model->where('parent_id', $parentId);
|
||||
$model->where('enabled', 1);
|
||||
|
||||
if ($search['store_id']) {
|
||||
$model->whereHas('hasOneStoreGoodsCategory', function ($storeGoodsCategory) use ($search) {
|
||||
return $storeGoodsCategory->byStoreId($search['store_id']);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
$model->orderBy('display_order', 'asc');
|
||||
|
||||
return $model;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\store\models;
|
||||
|
||||
use Yunshop\StoreCashier\common\models\Store as BaseStore;
|
||||
|
||||
|
||||
class Store extends BaseStore
|
||||
{
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\store\models;
|
||||
|
||||
use app\common\models\GoodsCategory;
|
||||
use Yunshop\HelpUserBuying\models\GoodsOption;
|
||||
|
||||
class StoreGoods extends \app\frontend\models\Goods
|
||||
{
|
||||
|
||||
public $appends = [];
|
||||
|
||||
public function hasOneCategory()
|
||||
{
|
||||
return $this->hasOne(GoodsCategory::class, 'goods_id', 'id');
|
||||
}
|
||||
|
||||
public static function getGoodsList($search, $storeId = 0)
|
||||
{
|
||||
return self::select()->search($search)->hasOneStoreGoods($storeId)
|
||||
->pluginId()->where('stock', '>', 0)->where('status', 1)->where('type', 1)
|
||||
->with(['hasManySpecs' => function ($query) {
|
||||
return $query->select('id', 'goods_id', 'title', 'description');
|
||||
}])->with(['hasManyOptions' => function ($query) {
|
||||
return $query->select('id', 'goods_id', 'title', 'thumb', 'product_price', 'market_price', 'stock', 'specs', 'weight');
|
||||
}]);
|
||||
}
|
||||
|
||||
public function scopePluginId($query, $pluginId = Store::PLUGIN_ID)
|
||||
{
|
||||
return $query->where('plugin_id', $pluginId);
|
||||
}
|
||||
|
||||
public function scopeHasOneStoreGoods($query, $storeId)
|
||||
{
|
||||
return $query->whereHas('hasOneStoreGoods', function($storeGoods)use($storeId){
|
||||
if ($storeId) {
|
||||
$storeGoods->byStoreId($storeId);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function hasManySpecs()
|
||||
{
|
||||
return $this->hasMany('app\common\models\GoodsSpec', 'goods_id', 'id');
|
||||
}
|
||||
|
||||
public function hasManyOptions()
|
||||
{
|
||||
return $this->hasMany(GoodsOption::class, 'goods_id', 'id');
|
||||
}
|
||||
|
||||
public function hasOneStoreGoods()
|
||||
{
|
||||
return $this->hasOne(\Yunshop\StoreCashier\store\models\StoreGoods::class, 'goods_id', 'id');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\HelpUserBuying\supplier\models;
|
||||
|
||||
use Yunshop\HelpUserBuying\models\GoodsOption;
|
||||
|
||||
class SupplierGoods extends \app\frontend\models\Goods
|
||||
{
|
||||
public $appends = [];
|
||||
|
||||
public static function getGoodsList($search, $supplier_id)
|
||||
{
|
||||
$model = self::select('yz_goods.*')->uniacid()->search($search);
|
||||
|
||||
$model->where('yz_goods.stock', '>', 0)->where('yz_goods.status', 1)->pluginId()->where('type', 1);
|
||||
|
||||
$model->with(['hasManySpecs' => function ($query) {
|
||||
return $query->select('id', 'goods_id', 'title', 'description');
|
||||
}])->with(['hasManyOptions' => function ($query) {
|
||||
return $query->select('id', 'goods_id', 'title', 'thumb', 'product_price', 'market_price', 'stock', 'specs', 'weight');
|
||||
}]);
|
||||
|
||||
$model->joinSupplierGoods(['supplier_id'=> $supplier_id]);
|
||||
|
||||
$model->orderBy('yz_goods.display_order', 'desc')->orderBy('yz_goods.id', 'desc');
|
||||
|
||||
|
||||
return $model;
|
||||
}
|
||||
|
||||
public function scopeJoinSupplierGoods($goods_builder, $params)
|
||||
{
|
||||
$goods_builder->join('yz_supplier_goods', function ($join) use ($params) {
|
||||
$join->on('yz_goods.id','=','yz_supplier_goods.goods_id')->where('yz_supplier_goods.supplier_id', $params['supplier_id']);
|
||||
});
|
||||
return $goods_builder;
|
||||
}
|
||||
|
||||
public function scopeUniacid($query)
|
||||
{
|
||||
return $query->where('yz_goods.uniacid', \YunShop::app()->uniacid);
|
||||
}
|
||||
|
||||
public function scopeIsPlugin($query)
|
||||
{
|
||||
return $query->where('yz_goods.is_plugin', 1);
|
||||
}
|
||||
|
||||
public function scopePluginId($query, $pluginId = 92)
|
||||
{
|
||||
return $query->where('yz_goods.plugin_id', $pluginId);
|
||||
}
|
||||
|
||||
public function hasManySpecs()
|
||||
{
|
||||
return $this->hasMany('app\common\models\GoodsSpec', 'goods_id', 'id');
|
||||
}
|
||||
|
||||
public function hasManyOptions()
|
||||
{
|
||||
return $this->hasMany(GoodsOption::class, 'goods_id', 'id');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,682 @@
|
|||
@extends('layouts.base')
|
||||
|
||||
@section('content')
|
||||
|
||||
@section('title', trans('代客下单'))
|
||||
|
||||
@section('css')
|
||||
<style>
|
||||
.fixian{
|
||||
background-color: white;
|
||||
border-radius: 5px;
|
||||
border:1px solid #d3d3d3;
|
||||
width:20px;
|
||||
height:20px;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
line-height: 20px;
|
||||
}
|
||||
.fixian:active{
|
||||
background: #EEEEEE;
|
||||
}
|
||||
/*滚动条样式*/
|
||||
.nui-scroll::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
/*正常情况下滑块的样式*/
|
||||
.nui-scroll::-webkit-scrollbar-thumb {
|
||||
background-color: rgba(0,0,0,.05);
|
||||
border-radius: 10px;
|
||||
-webkit-box-shadow: inset 1px 1px 0 rgba(0,0,0,.1);
|
||||
}
|
||||
/*鼠标悬浮在该类指向的控件上时滑块的样式*/
|
||||
.nui-scroll:hover::-webkit-scrollbar-thumb {
|
||||
background-color: rgba(0,0,0,.2);
|
||||
border-radius: 10px;
|
||||
-webkit-box-shadow: inset 1px 1px 0 rgba(0,0,0,.1);
|
||||
}
|
||||
/*鼠标悬浮在滑块上时滑块的样式*/
|
||||
.nui-scroll::-webkit-scrollbar-thumb:hover {
|
||||
background-color: rgba(0,0,0,.4);
|
||||
-webkit-box-shadow: inset 1px 1px 0 rgba(0,0,0,.1);
|
||||
}
|
||||
/*正常时候的主干部分*/
|
||||
.nui-scroll::-webkit-scrollbar-track {
|
||||
border-radius: 10px;
|
||||
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0);
|
||||
background-color: white;
|
||||
}
|
||||
/*鼠标悬浮在滚动条上的主干部分*/
|
||||
.nui-scroll::-webkit-scrollbar-track:hover {
|
||||
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.4);
|
||||
background-color: rgba(0,0,0,.01);
|
||||
}
|
||||
</style>
|
||||
@endsection
|
||||
|
||||
<div id="buying" class="w1200 ">
|
||||
<div class="right-titpos">
|
||||
<ul class="add-snav">
|
||||
{{--<a class="btn btn-info" style="color: white" href="#" onclick="aaa(this)">支付测试</a>--}}
|
||||
<li class="active"><a href="#" onclick="window.location.href='{!! yzWebUrl('plugin.help-user-buying.admin.home.select') !!}'"><i class="fa fa-mail-reply"></i>返回选择</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading" style="background-color: rgb(245, 245, 245);border: 1px solid #ddd;margin: 0px">@if(empty($store)) 平台自营 @else 门店:{{$store['store_name']}} @endif</div>
|
||||
<div class="panel-body" style="border: 1px solid #ddd">
|
||||
<form action="" method="post" class="form-horizontal" role="form" id="form1" onkeydown="if(event.keyCode==13){return false;}">
|
||||
<input type="hidden" name="store_id" value="{{$store['id']}}"/>
|
||||
<input type="hidden" name="realname" value="{{$store['store_name']}}"/>
|
||||
<div class="form-group col-xs-12 col-sm-2 col-md-2 col-lg-2">
|
||||
<div class="">
|
||||
<input type="text" class="form-control" name="search[keyword]"
|
||||
value="" id="search-keyword" placeholder="输入商品名称"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-xs-12 col-sm-8 col-lg-5">
|
||||
<div class="col-sm-12 col-xs-12">
|
||||
{!!$catetory_menus!!}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-xs-12 col-sm-8 col-lg-2">
|
||||
<div class="">
|
||||
<button class="btn btn-success" id="search" type="button" onclick="searchSelect()"><i class="fa fa-search" ></i> 搜索</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="clearfix row">
|
||||
<div class="col-sm-6" style="border: 1px solid #ddd;border-radius:5px;margin-bottom:50px;">
|
||||
<div class="panel-default">
|
||||
<div class="panel-body" style="margin-bottom:20px">
|
||||
<table class="table" style="overflow:visible;">
|
||||
<thead class="navbar-inner" style="display:table;width:100%;table-layout:fixed;">
|
||||
<tr>
|
||||
<th style='width:5%;text-align: center;'>选择</th>
|
||||
<th style='width:10%;text-align: center;'>ID</th>
|
||||
<th style='width:20%;'>商品</th>
|
||||
<th style='width:10%;text-align: center;'>价格</th>
|
||||
<th style='width:10%;text-align: center;'>库存</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="goods" class="nui-scroll" style="height: 300px;display:block;overflow-y:scroll;">
|
||||
@foreach($goodsList as $row)
|
||||
<tr style="display:table;width:100%;table-layout:fixed;">
|
||||
<td style="width:5%;text-align: center;">
|
||||
<label class="fixian">
|
||||
<span></span>
|
||||
<input style="display: none" type="checkbox" name="goods_ids[]" value="{{$row['id']}}" onclick="checkShopping(this)">
|
||||
</label>
|
||||
</td>
|
||||
<td style="width:10%;text-align: center;">{{$row['id']}}</td>
|
||||
<td style="width:20%;">
|
||||
<img src="{{tomedia($row['thumb'])}}" style="width: 40px; height: 40px;border:1px solid #ccc;padding:1px;">
|
||||
{{$row['title']}}
|
||||
</td>
|
||||
<td style="width:10%;text-align: center;">{{$row['price']}}</td>
|
||||
<td style="width:10%;text-align: center;">{{$row['stock']}}</td>
|
||||
<input type="hidden" class="category" value="{{$row['category_ids']}}">
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-right: 0">
|
||||
<div style="border: 1px solid #ddd;margin-bottom:20px;border-radius:5px">
|
||||
<div class="panel-default">
|
||||
<div class="panel-heading">
|
||||
订单信息
|
||||
<button type="button" class="btn btn-info" id="clean_shopping" onclick="cleanShopping()">清空购物车</button>
|
||||
</div>
|
||||
<div class="panel-body" style="margin-bottom:100px">
|
||||
<table class="table" style="overflow:visible">
|
||||
<thead class="navbar-inner">
|
||||
<tr>
|
||||
<th style='width:30%'>商品名称</th>
|
||||
<th style='width:15%;text-align: center'>价格</th>
|
||||
<th style='width:15%;text-align: center'>数量</th>
|
||||
<th style='width:15%;text-align: center'>金额</th>
|
||||
<th style='width:12%;text-align: center'>删除</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="shopping">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="panel-footer" style="background-color: #f5f5f5;" >
|
||||
(不包含运费) 合计:<span style="color: red" class="total">0</span>元
|
||||
<button class="btn btn-info" style="margin-left: 100px" onclick="goodsBuy(this)">预下单</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="border: 1px solid #ddd;border-radius:5px">
|
||||
<div class="panel-default">
|
||||
<div class="panel-heading">
|
||||
会员信息
|
||||
</div>
|
||||
<div class="panel-body form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="col-xs-2 col-sm-3 col-md-2 control-label">客户</label>
|
||||
<div class="col-sm-9 col-md-10">
|
||||
<input type='hidden' id='uid' name='member_id' value="{{$member['uid']}}"/>
|
||||
<div class='input-group'>
|
||||
<input type="text" name="saler" maxlength="30" value="{{$member['nickname']}}" id="saler" class="form-control" readonly/>
|
||||
</div>
|
||||
<span id="saleravatar" class='help-block'>
|
||||
<img style="width: 100px" src="{{$member['avatar']}}"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{--<div class="form-group">--}}
|
||||
{{--<label class="col-xs-12 col-sm-3 col-md-2 control-label">付款方式</label>--}}
|
||||
{{--<div class="col-xs-12 col-sm-9 col-md-8 col-lg-8">--}}
|
||||
{{--<select id="pay-type" class="form-control">--}}
|
||||
{{--<option value="17" selected="selected">货到付款</option>--}}
|
||||
{{--<option value="5">后台付款</option>--}}
|
||||
{{--<option value="3">余额支付</option>--}}
|
||||
{{--</select>--}}
|
||||
{{--</div>--}}
|
||||
{{--</div>--}}
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-xs-12 col-sm-3 col-md-2 control-label">收件人</label>
|
||||
<div class="col-xs-12 col-sm-9 col-md-8 col-lg-8">
|
||||
<input type="text" name="username" class="form-control"
|
||||
value="{{$member_address['username']}}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-xs-12 col-sm-3 col-md-2 control-label">联系电话</label>
|
||||
<div class="col-xs-12 col-sm-9 col-md-8 col-lg-8">
|
||||
<input type="text" name="mobile" class="form-control"
|
||||
value="{{$member_address['mobile']}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-12 col-sm-3 col-md-2 control-label">所在区域</label>
|
||||
<div class="col-xs-12 col-sm-9 col-md-8 col-lg-8">
|
||||
<input type="hidden" id="province_id" value="{{ $member_address['province_id']?:0 }}"/>
|
||||
<input type="hidden" id="city_id" value="{{ $member_address['city_id']?:0 }}"/>
|
||||
<input type="hidden" id="district_id" value="{{ $member_address['district_id']?:0 }}"/>
|
||||
@if(\Setting::get('shop.trade.is_street'))
|
||||
<input type="hidden" id="street_id" value="{{ $member_address['street_id']?:0 }}"/>
|
||||
{!! app\common\helpers\AddressHelper::tplLinkedAddress(['address[province_id]','address[city_id]','address[district_id]','address[street_id]'], [])!!}
|
||||
@else
|
||||
{!! app\common\helpers\AddressHelper::tplLinkedAddress(['address[province_id]','address[city_id]','address[district_id]'], []) !!}
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-12 col-sm-3 col-md-2 control-label">详细地址</label>
|
||||
<div class="col-xs-12 col-sm-9 col-md-8 col-lg-8">
|
||||
<input type="text" name="address" class="form-control"
|
||||
value="{{$member_address['address']}}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-footer" style="background-color: #f5f5f5;">
|
||||
合计:<span style="color: red" class="order-price">0</span>元
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-top: 20px; ">
|
||||
<button class="btn btn-info" id="create_order_btn" style="width: 100%" onclick="createOrder(this)">提交订单</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('Yunshop\HelpUserBuying::admin.payform')
|
||||
|
||||
<script type="text/javascript" src="{{static_url('js/area/cascade_street.js')}}"></script>
|
||||
<script language='javascript'>
|
||||
|
||||
function aaa(btn) {
|
||||
$(btn).removeAttr("onclick");
|
||||
$(btn).attr('disabled', true);
|
||||
}
|
||||
|
||||
var province_id = $('#province_id').val();
|
||||
var city_id = $('#city_id').val();
|
||||
var district_id = $('#district_id').val();
|
||||
var street_id = $('#street_id').val();
|
||||
cascdeInit(province_id, city_id, district_id, street_id);
|
||||
|
||||
$("#goods").on("change",".fixian",function(){
|
||||
var bool = $(this).find('input[type="checkbox"]').is(":checked");
|
||||
var goods_id = $(this).find('input[type="checkbox"]').val();
|
||||
if (bool) {
|
||||
var tds= $(this).parent().siblings();//获取当前元素的父节点的全部兄弟节点,就是当前这行的所有td
|
||||
console.log(goods_id);
|
||||
//选中进行ajax请求加入购物车
|
||||
$(this).css('background-color', '#0076FF');
|
||||
$(this).find('span').css('color','white').html('√');
|
||||
} else {
|
||||
//取消进行ajax请求移除购物车
|
||||
$(this).css('background-color', 'white');
|
||||
$(this).find('span').html('');
|
||||
}
|
||||
});
|
||||
|
||||
function cleanShopping() {
|
||||
$("#shopping").find("tr").remove();
|
||||
$("#goods").find(':input[type="checkbox"]').attr("checked", false);
|
||||
$("#goods").find(".fixian").css('background-color', 'white');
|
||||
$("#goods").find('span').html('');
|
||||
$("#total").text(0);
|
||||
}
|
||||
|
||||
function checkShopping(btn) {
|
||||
if ($(btn).is(':checked')) {
|
||||
//开
|
||||
addShopping(btn);
|
||||
} else {
|
||||
//关
|
||||
var id = $(btn).val();
|
||||
$("#goods_" + id).remove();
|
||||
total();
|
||||
}
|
||||
}
|
||||
function addShopping(btn){
|
||||
var tds=$(btn).parent().parent().siblings();//获取当前元素的父节点的全部兄弟节点,就是当前这行的所有td
|
||||
var id=$(tds).eq(0).text();//获取商品名称的td的文本值
|
||||
var name=$(tds).eq(1).text();//获取商品名称的td的文本值
|
||||
var price=$(tds).eq(2).text();//获取商品价格的td的文本值
|
||||
var html = $("<tr id='goods_"+ id + "'>" //开始拼接HTML元素,将取到的东西展示到对用的input中
|
||||
+"<td>" + name + "</td>"
|
||||
+"<td align='center'>" + price + "</td>"
|
||||
+"<td align='center'>"
|
||||
+"<input style='border: 0; background-color: #FFFFFF; font-size:20px' type='button' value='-' onclick='decrease(this, "+id+")' />"
|
||||
+"<input style='background-color: #f2f2f2; border: 0;' type='text' name='total' onBlur='manual(this, "+id+")' size='1' value='1'/>"
|
||||
+"<input style='border: 0; background-color: #FFFFFF; font-size:20px' type='button' value='+' onclick='increase(this, "+id+")' />"
|
||||
+"</td>"
|
||||
+"<td align='center'>"+price+"</td>"
|
||||
+"<td align='center'>"
|
||||
+"<input type='button' class='btn btn-danger' value='删除' onclick='deleteShopping(this)'/>"
|
||||
+"<input type='hidden' name='goods_id' value='"+ id +"'/>"
|
||||
+"</td></tr>");
|
||||
$("#shopping").append(html);
|
||||
total();
|
||||
}
|
||||
|
||||
function deleteShopping(btn){
|
||||
//给上一步你拼接的删除按钮上绑定一个这样的方法
|
||||
var id = $(btn).parent().parent().attr("id");
|
||||
$("#goods tr").each(function () {
|
||||
var goods_id = 'goods_'+$(this).find('td').eq(1).text();
|
||||
|
||||
if (goods_id == id) {
|
||||
$(this).find(':input[type="checkbox"]').attr("checked", false);
|
||||
$(this).find(".fixian").css('background-color', 'white');
|
||||
$(this).find('span').html('');
|
||||
}
|
||||
});
|
||||
$(btn).parent().parent().remove();
|
||||
total();
|
||||
}
|
||||
|
||||
function manual(btn, goodsid) {
|
||||
var num = $(btn).val();
|
||||
var shuzi = /^\d+$/;
|
||||
if (!shuzi.test(num)) {
|
||||
alert('数量必须为正整数');
|
||||
$(btn).val(1);
|
||||
var tds = $(btn).parent().siblings();
|
||||
var price = parseFloat($(tds).eq(1).text());
|
||||
//获取总价
|
||||
$(tds).eq(2).text(toDecimal2(price*1));
|
||||
total();
|
||||
return false;
|
||||
}
|
||||
var text = $(btn);
|
||||
$.get("{!! yzWebUrl('plugin.help-user-buying.admin.home.goods-increase') !!}", {'id':goodsid, 'num':num, 'type': 1}, function(json){
|
||||
console.log(json.result);
|
||||
if (json.result == 1) {
|
||||
var num = json.data.data;
|
||||
$(text).val(num);
|
||||
//获取单价
|
||||
var tds = $(text).parent().siblings();
|
||||
var price = parseFloat($(tds).eq(1).text());
|
||||
//获取总价
|
||||
var sum = price*num;
|
||||
$(tds).eq(2).text(toDecimal2(sum));
|
||||
total();
|
||||
|
||||
} else {
|
||||
alert(json.msg);
|
||||
deleteShopping(btn);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
//商品加
|
||||
function increase(btn, goodsid){
|
||||
|
||||
var text=$(btn).prev();
|
||||
var count = parseFloat($(text).val());
|
||||
|
||||
$.get("{!! yzWebUrl('plugin.help-user-buying.admin.home.goods-increase') !!}", {'id':goodsid, 'num':count, 'type': 0}, function(json){
|
||||
console.log(json.result);
|
||||
if (json.result == 1) {
|
||||
var num = json.data.data;
|
||||
$(text).val(num);
|
||||
//获取单价
|
||||
var tds = $(text).parent().siblings();
|
||||
var price = parseFloat($(tds).eq(1).text());
|
||||
//获取总价
|
||||
var sum = price*num;
|
||||
$(tds).eq(2).text(toDecimal2(sum));
|
||||
total();
|
||||
|
||||
} else {
|
||||
alert(json.msg);
|
||||
deleteShopping(btn);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
//商品减
|
||||
function decrease(btn, goodsid){
|
||||
var text=$(btn).next();
|
||||
var count = parseFloat($(text).val());
|
||||
if (--count <= 0) {
|
||||
deleteShopping(btn);
|
||||
}
|
||||
$(text).val(count);
|
||||
|
||||
//获取单价
|
||||
var tds = $(text).parent().siblings();
|
||||
var price = parseFloat($(tds).eq(1).text());
|
||||
|
||||
//获取总价
|
||||
var sum = price*count;
|
||||
$(tds).eq(2).text(toDecimal2(sum));
|
||||
total();
|
||||
}
|
||||
|
||||
function total(){
|
||||
var trs = $("#shopping tr");
|
||||
var sum = 0;
|
||||
for(var i=0;i<trs.length;i++){
|
||||
var td = trs.eq(i).children().eq(3);
|
||||
var price = parseFloat($(td).text());
|
||||
//alert(price);
|
||||
sum = sum + price;
|
||||
|
||||
}
|
||||
$(".total").text(toDecimal2(sum));
|
||||
}
|
||||
|
||||
|
||||
//商品搜索
|
||||
$("body").undelegate("#search-keyword","keyup").delegate("#search-keyword","keyup",function(){
|
||||
searchInp();
|
||||
});
|
||||
|
||||
function searchInp(){
|
||||
var tbody = document.getElementById("goods");
|
||||
var trArr = tbody.getElementsByTagName("tr");
|
||||
|
||||
var keyword = $('#search-keyword').val();
|
||||
var reg = new RegExp(keyword);
|
||||
|
||||
// var items = [];
|
||||
if (keyword) {
|
||||
$("#goods tr").hide();
|
||||
for(var i = 0;i<trArr.length;i++){
|
||||
var temp = trArr[i].innerHTML;
|
||||
if (temp.match(reg)) {
|
||||
// items.push(temp);
|
||||
$("#goods tr").eq(i).show();
|
||||
}
|
||||
}
|
||||
// $("#goods tr").hide();
|
||||
// //遍历出items的内容并将其显示出来
|
||||
// for(var i = 0; i< items.length;i++){
|
||||
// $("#goods").append("<tr style='display:table;width:100%;table-layout:fixed;'>"+ items[i] +"</tr>");
|
||||
// }
|
||||
}else{
|
||||
$("#goods tr").show();
|
||||
}
|
||||
}
|
||||
|
||||
//四舍五入 强制保留两位小数
|
||||
function toDecimal2(x) {
|
||||
var f = parseFloat(x);
|
||||
if (isNaN(f)) {
|
||||
return false;
|
||||
}
|
||||
var f = Math.round(x*100)/100;
|
||||
var s = f.toString();
|
||||
var rs = s.indexOf('.');
|
||||
if (rs < 0) {
|
||||
rs = s.length;
|
||||
s += '.';
|
||||
}
|
||||
while (s.length <= rs + 2) {
|
||||
s += '0';
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
function searchSelect() {
|
||||
|
||||
var cat_p = $('#category_parent').val();
|
||||
var cat_c = $('#category_child').val();
|
||||
var cat_t = $('#category_third').val();
|
||||
|
||||
//console.log(cat_p, cat_c, cat_t);
|
||||
|
||||
if (cat_p != 0 || cat_c != 0 || cat_t != 0) {
|
||||
$("#goods tr").hide();
|
||||
if (cat_t != 0 && cat_t != undefined) {
|
||||
var reg = new RegExp(cat_t);
|
||||
}else if (cat_c != 0) {
|
||||
var reg = new RegExp(cat_c);
|
||||
} else {
|
||||
var reg = new RegExp(cat_p);
|
||||
}
|
||||
$("#goods tr").each(function (i) {
|
||||
if ($(this).find('.category').val().match(reg)) {
|
||||
$("#goods tr").eq(i).show();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$("#goods tr").each(function (i) {
|
||||
$("#goods tr").eq(i).show();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//预下单
|
||||
function goodsBuy(wo) {
|
||||
|
||||
if ($("#shopping").children("tr").length < 1) {
|
||||
alert('购物车为空');
|
||||
return false;
|
||||
}
|
||||
|
||||
//下单商品
|
||||
var goods = [];
|
||||
$("#shopping").children("tr").each(function (index, domEle) {
|
||||
var goods_id = $(domEle).find('input[name="goods_id"]').val();
|
||||
var total = $(domEle).find('input[name="total"]').val();
|
||||
goods[index] = {"goods_id":goods_id,"total":total,"option_id":0};
|
||||
});
|
||||
|
||||
if ($(':input[name="member_id"]').val() == '') {
|
||||
alert('用户ID不能为空');
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
var request_data = {
|
||||
//"member_id": $(':input[name="member_id"]').val(),
|
||||
"dispatch_type_id": 1,
|
||||
"goods" : JSON.stringify(goods),
|
||||
"address": {},
|
||||
"member_coupon_ids": "[]",
|
||||
"orders" : "[]",
|
||||
"store_id": $(':input[name="store_id"]').val(),
|
||||
}
|
||||
|
||||
var ziji = $(wo);
|
||||
ziji.text('计算中...');
|
||||
$.get("{!! $order_url['pre_url'] !!}", request_data, function(json){
|
||||
ziji.text('预下单');
|
||||
if (json.result == 1) {
|
||||
$(".order-price").text(json.data.total_price);
|
||||
} else {
|
||||
alert(json.msg);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
//下单
|
||||
function createOrder(btn)
|
||||
{
|
||||
var myreg = /^1\d{10}$/;
|
||||
|
||||
//下单商品
|
||||
var goods = [];
|
||||
//订单收货地址
|
||||
var address;
|
||||
|
||||
//var pay_type = $('#pay-type option:selected').val();
|
||||
|
||||
if ($("#shopping").children("tr").length < 1) {
|
||||
alert('购物车为空');
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$("#shopping").children("tr").each(function (index, domEle) {
|
||||
var goods_id = $(domEle).find('input[name="goods_id"]').val();
|
||||
var total = $(domEle).find('input[name="total"]').val();
|
||||
goods[index] = {"goods_id":goods_id,"total":total,"option_id":0};
|
||||
});
|
||||
|
||||
|
||||
if ($(':input[name="member_id"]').val() == '') {
|
||||
alert('用户ID不能为空');
|
||||
return false;
|
||||
}
|
||||
if ($(':input[name="username"]').val() == '') {
|
||||
alert('收件人不能为空');
|
||||
return false;
|
||||
}
|
||||
if (!myreg.test($(':input[name="mobile"]').val())) {
|
||||
alert('联系电话格式不正确');
|
||||
return false;
|
||||
}
|
||||
if ($(':input[name="address"]').val() == '') {
|
||||
alert('详细地址不能为空');
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
var province = $('#sel-provance option:selected');
|
||||
var city = $('#sel-city option:selected');
|
||||
var area = $('#sel-area option:selected');
|
||||
var street = $('#sel-street option:selected');
|
||||
|
||||
|
||||
if (province.val() == 0 || city.val() == 0 || area.val() == 0) {
|
||||
alert('请选择省市区');
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
address = {
|
||||
"uid": $(':input[name="member_id"]').val(),
|
||||
"username": $(':input[name="username"]').val(),
|
||||
"mobile": $(':input[name="mobile"]').val(),
|
||||
"province": province.text(),
|
||||
"city": city.text(),
|
||||
"district": area.text(),
|
||||
"zipcode" : "",
|
||||
"address": $(':input[name="address"]').val(),
|
||||
};
|
||||
|
||||
if(street.val() !== undefined && street.val() != 0) {
|
||||
address.street = street.text();
|
||||
}
|
||||
|
||||
//下单请求数据
|
||||
let request_data = {
|
||||
//"member_id": $(':input[name="member_id"]').val(),
|
||||
"dispatch_type_id": 1,
|
||||
"goods" : JSON.stringify(goods),
|
||||
"address": JSON.stringify(address),
|
||||
"member_coupon_ids": "[]",
|
||||
"orders" : "[]",
|
||||
"cart_ids": "[]",
|
||||
"store_id": $(':input[name="store_id"]').val(),
|
||||
"realname": $(':input[name="realname"]').val(),
|
||||
};
|
||||
|
||||
$(btn).removeAttr("onclick");
|
||||
$(btn).attr('disabled', true);
|
||||
$.get("{!! $order_url['create_url'] !!}", request_data, function(json){
|
||||
|
||||
if (json.result == 1) {
|
||||
pay(json.data.order_ids);
|
||||
} else {
|
||||
alert('下单失败:'+json.msg);
|
||||
}
|
||||
$(btn).attr("onclick","createOrder;");
|
||||
$(btn).attr('disabled', false);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//支付
|
||||
function pay(order_ids)
|
||||
{
|
||||
$.get("{!! yzWebUrl('plugin.help-user-buying.admin.user-merge-pay.index') !!}",{order_ids:order_ids}, function(json){
|
||||
if (json.result == 1) {
|
||||
|
||||
let order_pay = json.data.order_pay; //订单支付类
|
||||
let member = json.data.member; //下单用户
|
||||
|
||||
$('#thawing-funds').modal();
|
||||
|
||||
$(':input[name="order_pay_id"]').val(order_pay.id);
|
||||
$(':input[name="order_ids"]').val(order_pay.order_ids);
|
||||
|
||||
$('#member_credit2').html(member.credit2);
|
||||
$('#pay_sn').html(order_pay.pay_sn);
|
||||
$('#amount').html(order_pay.amount);
|
||||
|
||||
} else {
|
||||
console.log(json);
|
||||
alert(json.msg);
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
<!-- 平台提现 -->
|
||||
<div id="thawing-funds" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<form class="form-horizontal form" action="" method="post" enctype="multipart/form-data">
|
||||
|
||||
<input type="hidden" name="order_pay_id" value=""/>
|
||||
<input type="hidden" name="order_ids" value=""/>
|
||||
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header" style="text-align: center;">
|
||||
{{--<button aria-hidden="true" data-dismiss="modal" class="close" type="button">×</button>--}}
|
||||
<p>会员余额:<span id="member_credit2"></span>元</p>
|
||||
<p>支付流水号:<span id="pay_sn"></span></p>
|
||||
<p>支付金额:<span id="amount" style="color: red"></span>元</p>
|
||||
|
||||
</div>
|
||||
<div class="modal-body" style="text-align: center;">
|
||||
<div id="pay_btn">
|
||||
<button style="margin: 0 15px" type="button" class="btn btn-warning" onclick="credit2()">余额支付</button>
|
||||
<button type="button" class="btn btn-youtube" onclick="cod()">货到付款</button>
|
||||
</div>
|
||||
<div id="pay_msg" style="color: red;font-size: 18px;display: none;">
|
||||
支付中....
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" class="btn btn-default" data-dismiss="modal" aria-hidden="true" onclick="shua()">取消</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script language="javascript">
|
||||
|
||||
function shua() {
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
function pay_wait(type) {
|
||||
|
||||
if (type == 'yes') {
|
||||
$('#pay_btn').hide();
|
||||
$('#pay_msg').show();
|
||||
} else {
|
||||
$('#pay_msg').hide();
|
||||
$('#pay_btn').show();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
function credit2() {
|
||||
|
||||
pay_wait('yes');
|
||||
|
||||
if ($(':input[name="order_pay_id"]').val() == '') {
|
||||
alert('支付id为空,无法支付');
|
||||
return false;
|
||||
}
|
||||
|
||||
$.get("{!! yzWebUrl('plugin.help-user-buying.admin.user-merge-pay.credit2') !!}",{order_pay_id:$(':input[name="order_pay_id"]').val()}, function(json){
|
||||
if (json.result == 1) {
|
||||
|
||||
alert('支付成功');
|
||||
shua();
|
||||
} else {
|
||||
console.log(json);
|
||||
alert(json.msg);
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function cod() {
|
||||
|
||||
pay_wait('yes');
|
||||
|
||||
if ($(':input[name="order_pay_id"]').val() == '') {
|
||||
alert('支付id为空,无法支付');
|
||||
return false;
|
||||
}
|
||||
|
||||
$.get("{!! yzWebUrl('plugin.help-user-buying.admin.user-merge-pay.COD') !!}",{order_pay_id:$(':input[name="order_pay_id"]').val()}, function(json){
|
||||
if (json.result == 1) {
|
||||
alert('支付成功');
|
||||
shua();
|
||||
} else {
|
||||
console.log(json);
|
||||
alert(json.msg);
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
@ -0,0 +1,158 @@
|
|||
@extends('layouts.base')
|
||||
|
||||
@section('content')
|
||||
@section('title', trans('代客下单'))
|
||||
|
||||
<div class="w1200 m0a">
|
||||
<div class="main">
|
||||
<form id="form1" method="post" action="{!! yzWebUrl('plugin.help-user-buying.admin.home.shopIndex') !!}" class="form-horizontal form" enctype="multipart/form-data">
|
||||
<div class="rightlist">
|
||||
<div class="right-titpos" style="border-bottom-color: white">
|
||||
{{--<ul class="add-snav">--}}
|
||||
{{--<li class="active"><a href="#">代客下单</a></li>--}}
|
||||
{{--</ul>--}}
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading" style="background-color: rgb(245, 245, 245);border: 1px solid #ddd;margin: 0">代客下单</div>
|
||||
<div class="panel-body" style="border: 1px solid #ddd">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-xs-12 col-sm-4 control-label">订单类型</label>
|
||||
<div class="col-sm-4 col-xs-6">
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="order_type" checked value="0">平台订单
|
||||
</label>
|
||||
|
||||
@if (!empty($store))
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="order_type" value="1"> 门店订单
|
||||
</label>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group" id="store_list" style="display: none">
|
||||
<label class="col-xs-12 col-sm-4 control-label">选择门店222:</label>
|
||||
<div class="col-sm-3 col-xs-12">
|
||||
<select class="form-control" name="store_id">
|
||||
<option value="">选择门店</option>
|
||||
@foreach($store as $value)
|
||||
<option value="{{$value['id']}}">{{$value['store_name']}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-12 col-sm-4 control-label">选择下单人:</label>
|
||||
<div class="col-sm-3 col-xs-12">
|
||||
<input type='hidden' id='uid' name='uid' value=""/>
|
||||
<div class='input-group'>
|
||||
<input type="text" name="saler" maxlength="30" value="" id="saler" class="form-control" readonly/>
|
||||
<div class='input-group-btn'>
|
||||
<button class="btn btn-default" type="button" onclick="$('#modal-module-menus-notice').modal();">
|
||||
选择用户
|
||||
</button>
|
||||
<button class="btn btn-danger" type="button" onclick="$('#uid').val('');$('#saler').val('');$('#saleravatar').hide()">
|
||||
清除选择
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<span id="saleravatar" class='help-block' style="display:none">
|
||||
<img style="width: 100px" src=""/></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-12 col-sm-4 control-label"></label>
|
||||
<div class="col-sm-3 col-xs-12">
|
||||
<input type="submit" name="submit" value="下一步" class="btn btn-primary" >
|
||||
{{--<input type="button" name="submit" value="下一步" class="btn btn-primary" onclick="jump_url()">--}}
|
||||
<input type="hidden" name="token" value="{$_W['token']}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div id="modal-module-menus-notice" class="modal fade" tabindex="-1">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button aria-hidden="true" data-dismiss="modal" class="close" type="button">
|
||||
×
|
||||
</button>
|
||||
<h3>选择用户</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" name="keyword" value=""
|
||||
id="search-kwd-notice"
|
||||
placeholder="请输入粉丝昵称/姓名/手机号"/>
|
||||
<span class='input-group-btn'>
|
||||
<button type="button" class="btn btn-default"
|
||||
onclick="search_members();">搜索
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="module-menus-notice"></div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
$(':radio[name="order_type"]').click(function () {
|
||||
|
||||
if ($(this).val() == '1') {
|
||||
$('#form1').attr('action', '{!! yzWebUrl('plugin.help-user-buying.admin.home.storeIndex') !!}');
|
||||
$('#store_list').show();
|
||||
} else {
|
||||
$('#form1').attr('action', '{!! yzWebUrl('plugin.help-user-buying.admin.home.shopIndex') !!}');
|
||||
$('#store_list').hide();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
function search_members() {
|
||||
if ($('#search-kwd-notice').val() == '') {
|
||||
Tip.focus('#search-kwd-notice', '请输入关键词');
|
||||
return;
|
||||
}
|
||||
$("#module-menus-notice").html("正在搜索....");
|
||||
$.get("{!! yzWebUrl('member.member.get-search-member') !!}", {
|
||||
keyword: $.trim($('#search-kwd-notice').val())
|
||||
}, function (dat) {
|
||||
$('#module-menus-notice').html(dat);
|
||||
});
|
||||
}
|
||||
function select_member(o) {
|
||||
$("#uid").val(o.uid);
|
||||
$("#saleravatar").show();
|
||||
$("#saleravatar").find('img').attr('src', o.avatar);
|
||||
$("#saler").val(o.nickname + "/" + o.realname + "/" + o.mobile);
|
||||
$("#modal-module-menus-notice .close").click();
|
||||
}
|
||||
|
||||
|
||||
function jump_url() {
|
||||
var uid = $("#uid").val();
|
||||
var store_id = $(':input[name="data[store_id]"]').val();
|
||||
if (store_id == '') {
|
||||
alert('请选择基地')
|
||||
return false;
|
||||
}
|
||||
if (uid == '') {
|
||||
alert('请选择会员')
|
||||
return false;
|
||||
}
|
||||
window.location.href="{!! yzWebUrl('plugin.help-user-buying.admin.home.index') !!}" + '&uid='+uid+'&store_id='+store_id;
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,613 @@
|
|||
@extends('layouts.base')
|
||||
@section('title', "代客下单")
|
||||
@section('content')
|
||||
<style>
|
||||
.rightlist #app .rightlist-head{line-height:50px;padding:15px 0;}
|
||||
.rightlist #app{margin-left:30px;}
|
||||
.rightlist #app .el-breadcrumb{padding:30px 0;font-size:16px;}
|
||||
/* .el-form-item__label{padding-right:30px;} */
|
||||
.tip{font-size:12px;color:#999;font-weight:500}
|
||||
.rightlist-head-con{padding-right:20px;font-size:16px;color:#888;}
|
||||
/* .rightlist-head-con{float:left;padding-right:20px;font-size:16px;color:#888;} */
|
||||
.el-tag{font-weight:700;font-size:15px;margin-bottom:30px;}
|
||||
.el-icon-edit{font-size:16px;padding:0 15px;color:#409EFF;cursor: pointer;}
|
||||
/* 滑块选择小白点 */
|
||||
.el-switch.is-checked .el-switch__core::after {left: 100%;margin-left: -17px;}
|
||||
.el-switch__core::after {content: "";position: absolute;top: 1px;left: 1px;border-radius: 100%;transition: all .3s;width: 16px;height: 16px;background-color: #fff;}
|
||||
.tip1{font-size:12px;color:red;font-weight:500}
|
||||
[v-cloak]{
|
||||
display:none;
|
||||
}
|
||||
/* 计数器样式 */
|
||||
.el-input-number__decrease, .el-input-number__increase {width: 25px;}
|
||||
.el-input-number .el-input__inner {padding-left: 0px;padding-right: 0px;}
|
||||
</style>
|
||||
<div class="rightlist">
|
||||
<div id="app" v-cloak v-loading="loading">
|
||||
<el-breadcrumb separator-class="el-icon-arrow-right">
|
||||
<el-breadcrumb-item><a href="{{ yzWebFullUrl('plugin.help-user-buying.admin.index.index') }}">返回选择</a></el-breadcrumb-item>
|
||||
{{--<el-breadcrumb-item>[[store.id==0?'平台自营':store.store_name]]</el-breadcrumb-item>--}}
|
||||
<el-breadcrumb-item v-html="title"></el-breadcrumb-item>
|
||||
|
||||
</el-breadcrumb>
|
||||
<el-form :inline="true" :model="search_form" ref="search_form">
|
||||
<el-form-item>
|
||||
<el-input v-model="search_form.goods_name" placeholder="请输入商品名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-select v-model="search_form.id_v1" placeholder="请选择一级分类" clearable @change="changeV1()">
|
||||
<el-option v-for="item in category_list" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-select v-model="search_form.id_v2" placeholder="请选择二级分类" clearable @change="changeV2()">
|
||||
<el-option v-for="item in category_list_v2" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-select v-model="search_form.id_v3" placeholder="请选择三级分类" clearable v-if="category_level==3">
|
||||
<el-option v-for="item in category_list_v3" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item style="float:right;text-align:right;">
|
||||
<el-button type="success" icon="el-icon-search" @click="search(1)">搜索</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row :gutter="50">
|
||||
<!-- left -->
|
||||
<el-col :span="12">
|
||||
<!-- 表格start -->
|
||||
<el-table :data="list" style="width: 100%" max-height="500" v-loading="all_loading">
|
||||
<el-table-column prop="id" label="ID" width="80" align="center"></el-table-column>
|
||||
<el-table-column label="商品" min-width="180">
|
||||
<template slot-scope="scope">
|
||||
<div style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;">
|
||||
<img :src="scope.row.thumb" style="width:40px;height:40px;">
|
||||
[[scope.row.title]]
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="price" label="价格" max-width="120" align="center"></el-table-column>
|
||||
<el-table-column label="库存" prop="stock" max-width="120" align="center"></el-table-column>
|
||||
<el-table-column label="选择" width="80" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" @click="choose(scope.row)">选择</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-col :span="24" align="right" migra style="padding:15px 5% 15px 0" v-loading="loading">
|
||||
<el-pagination background layout="prev, pager, next" @current-change="currentChange" :total="total"
|
||||
:page-size="per_size" :current-page="current_page"></el-pagination>
|
||||
</el-col>
|
||||
<!-- 表格end -->
|
||||
</el-col>
|
||||
<!-- right -->
|
||||
<el-col :span="12">
|
||||
<div style="background:#f9f9f9;padding:15px 10px;font-weight:900;border:1px solid #e9e9e9;">
|
||||
订单信息
|
||||
<el-button type="danger" size="small" style="margin-left:20px" @click="delAll">清空购物车</el-button>
|
||||
</div>
|
||||
<!-- 表格start -->
|
||||
<el-table :data="cart_list" style="width: 100%;border:1px solid #e9e9e9" v-loading="loading" max-height="500">
|
||||
<el-table-column prop="id" label="商品名称" min-width="150" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;">
|
||||
<div>[[scope.row.title]]</div>
|
||||
<div v-if="scope.row.option_title" style="color:#999;font-size:12px;">[ [[scope.row.option_title]] ]</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="price" label="价格" max-width="120" align="center"></el-table-column>
|
||||
<el-table-column prop="digitization_name" label="数量" width="120" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-input-number v-model="scope.row.num" :step="1" :min="0" style="width:110px;" @change="changeNum(scope.$index)"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="金额" prop="total" max-width="120" align="center"></el-table-column>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="danger" width="80" @click="del(scope.$index)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 表格end -->
|
||||
<div style="background:#f9f9f9;padding:15px 10px;font-weight:900;border:1px solid #e9e9e9;">
|
||||
<span>(不包含运费)</span>
|
||||
<span>合计:<span style="color:red">[[total_money]]</span>元</span>
|
||||
<el-button type="primary" size="small" style="margin-left:20px" @click="openMember">结算</el-button>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 选择会员弹出框 -->
|
||||
<el-dialog title="选择会员" :visible.sync="is_choose_member" width="60%">
|
||||
<div>
|
||||
<div v-if="member.uid" style="font-weight:900;margin-bottom:30px;">
|
||||
<div>已选会员:</div>
|
||||
<div style="float:left;width:120px">
|
||||
<img :src="member.avatar_image" alt="" style="width:100px;height:100px">
|
||||
</div>
|
||||
<div style="display:inline-block;">
|
||||
<div>[[member.nickname]]</div>
|
||||
<div>[[member.mobile]]</div>
|
||||
<el-button type="danger" size="small" @click="delMember">清除选择</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-form>
|
||||
<el-form-item label="" prop="">
|
||||
<el-input v-model="member_info" placeholder="请输入粉丝昵称/姓名/手机号" style="width:90%;"></el-input>
|
||||
<el-button type="success" icon="el-icon-search" @click="searchMember()" v-loading="table_loading">搜索</el-button>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<template>
|
||||
<!-- 表格start -->
|
||||
<el-table :data="member_list" style="width: 100%;" max-height="500" v-if="member_list.length>0" v-loading="table_loading">
|
||||
<el-table-column label="头像" align="center">
|
||||
<template slot-scope="scope">
|
||||
<img :src="scope.row.avatar_image" alt="" style="width:30px;height:30px;">
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="nickname" label="姓名" min-width="120" align="center"></el-table-column>
|
||||
<el-table-column prop="mobile" label="手机号" min-width="120" align="center"></el-table-column>
|
||||
<el-table-column label="操作" min-width="80" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button @click="chooseMember(scope.row)" size="small">选择</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 表格end -->
|
||||
</template>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="is_choose_member = false">取 消</el-button>
|
||||
<el-button type="primary" @click="confirm">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
<!-- 选择规格弹出框 -->
|
||||
<el-dialog title="选择商品规格" :visible.sync="is_option" width="60%">
|
||||
<div>
|
||||
<div v-for="(item,index) in option_list" :key="index">
|
||||
<h5 style="border-bottom:1px solid #ddd;font-weight:900;">
|
||||
[[item.title]]
|
||||
</h5>
|
||||
<div style="display:inline-block;margin:5px;" >
|
||||
<el-radio-group v-model="status[index]" v-for="(item1,index1) in item.specitem" :key="index1" style="margin-bottom: 30px;">
|
||||
<el-radio-button :label="item1.id">[[item1.title]]</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="is_option = false">取 消</el-button>
|
||||
<el-button type="primary" @click="confirmOption">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
<script>
|
||||
var app = new Vue({
|
||||
el:"#app",
|
||||
delimiters: ['[[', ']]'],
|
||||
data() {
|
||||
let goods_url = '{!! $goods_url !!}';
|
||||
let category_level = {!! $category_level !!};
|
||||
console.log(category_level)
|
||||
let category_list = {!! $category_list !!};
|
||||
console.log(category_list)
|
||||
let owner_id = {!! $owner_id !!};
|
||||
let order_type = {!! $order_type !!};
|
||||
let title = '{!! $title!!}';
|
||||
// console.log(store);
|
||||
return{
|
||||
title:title,
|
||||
type:1,
|
||||
loading:false,
|
||||
table_loading:false,
|
||||
all_loading:false,
|
||||
order_type:order_type,
|
||||
owner_id:owner_id,//门店数据
|
||||
total_money:"0",//总金额
|
||||
is_exist:0,//商品是否已存在购物车
|
||||
is_choose_member:false,//选择会员弹出框
|
||||
is_option:false,//选择规格弹出框
|
||||
option_list:[],//规格列表
|
||||
choose_row:{},//选择商品的信息
|
||||
status:[],//选择的商品规格的值
|
||||
goods_url:goods_url,//搜索商品接口
|
||||
member_info:"",
|
||||
member:{},//选择的会员信息回显
|
||||
member_list:[],//会员列表
|
||||
search_form:{
|
||||
id_v1:"",
|
||||
id_v2:"",
|
||||
id_v3:"",
|
||||
},
|
||||
category_level:category_level,//分类等级
|
||||
category_list:category_list,
|
||||
category_list_v2:[],
|
||||
category_list_v3:[],
|
||||
list:[],
|
||||
cart_list:[],
|
||||
rules:{},
|
||||
//分页
|
||||
total:0,
|
||||
per_size:0,
|
||||
current_page:0,
|
||||
rules:{},
|
||||
}
|
||||
|
||||
},
|
||||
created() {
|
||||
|
||||
document.onkeydown = function(){
|
||||
if(window.event.keyCode == 13) {
|
||||
window.event.keyCode = 0;
|
||||
window.event.returnValue = false;
|
||||
}
|
||||
};
|
||||
|
||||
let json = {search:{owner_id:this.owner_id}};
|
||||
|
||||
this.getGoodsList(json);
|
||||
},
|
||||
methods: {
|
||||
// 获得商品列表
|
||||
getGoodsList(json) {
|
||||
var that = this;
|
||||
that.all_loading = true;
|
||||
that.$http.post(this.goods_url,json).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
console.log(response);
|
||||
this.list = response.data.data.data;
|
||||
this.total = response.data.data.total;
|
||||
this.current_page = response.data.data.current_page;
|
||||
this.per_size = response.data.data.per_page;
|
||||
that.all_loading = false;
|
||||
}
|
||||
else{
|
||||
that.$message.error(response.data.msg);
|
||||
that.all_loading = false;
|
||||
}
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.all_loading = false;
|
||||
};
|
||||
},
|
||||
|
||||
// 选择商品
|
||||
choose(row) {
|
||||
this.is_exist = 0;
|
||||
this.choose_row = row;
|
||||
// 如果商品有规格
|
||||
if(row.has_option == 1){
|
||||
this.status = [];//初始化规格选择状态
|
||||
this.is_option = true;
|
||||
this.option_list = row.has_many_specs;
|
||||
}
|
||||
else {
|
||||
this.cart_list.some((item,index) =>{
|
||||
if(item.id == row.id){
|
||||
this.is_exist = 1;
|
||||
item.num++;
|
||||
this.changeNum(index);
|
||||
this.countTotalPrice();
|
||||
return true;
|
||||
}
|
||||
})
|
||||
if(this.is_exist==1){//如果购物车已存在此商品或商品规格
|
||||
return false;
|
||||
}
|
||||
this.pushCart(row)
|
||||
|
||||
console.log(this.cart_list)
|
||||
this.countTotalPrice();
|
||||
|
||||
}
|
||||
},
|
||||
// 加入购物车
|
||||
pushCart(row) {
|
||||
this.cart_list.push(
|
||||
{
|
||||
id:row.id,
|
||||
num:1,
|
||||
total:row.price,
|
||||
price:row.price,
|
||||
thumb:row.thumb,
|
||||
title:row.title,
|
||||
option_id:0,//规格id
|
||||
}
|
||||
);
|
||||
},
|
||||
// 改变数量
|
||||
changeNum(index) {
|
||||
var that = this;
|
||||
console.log(index)
|
||||
if(this.cart_list[index].num < 1) {
|
||||
this.del(index);
|
||||
return false;
|
||||
}
|
||||
that.$http.post("{!! yzWebUrl('plugin.help-user-buying.admin.index.goods-increase') !!}",{'id':this.cart_list[index].id, 'num':this.cart_list[index].num,'option_id':this.cart_list[index].option_id}).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
console.log(response);
|
||||
that.all_loading = false;
|
||||
if(response.data.data.code==1){
|
||||
that.$message.error("超过库存");
|
||||
this.cart_list[index].num = response.data.data.num;
|
||||
}
|
||||
}
|
||||
else{
|
||||
that.$message.error(response.data.msg);
|
||||
that.all_loading = false;
|
||||
this.cart_list[index].num--;
|
||||
|
||||
}
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.all_loading = false;
|
||||
};
|
||||
this.cart_list[index].total = this.cart_list[index].num * this.cart_list[index].price;
|
||||
this.countTotalPrice();
|
||||
},
|
||||
// 删除
|
||||
del(index) {
|
||||
this.$confirm('确定删除吗', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {
|
||||
// this.delGoods(index);
|
||||
this.cart_list.splice(index,1);
|
||||
this.countTotalPrice();
|
||||
}).catch(() => {
|
||||
this.cart_list[index].num++;
|
||||
this.$message({type: 'info',message: '已取消删除'});
|
||||
});
|
||||
},
|
||||
// 清空购物车
|
||||
delAll() {
|
||||
this.$confirm('确定清空购物车吗', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {
|
||||
// this.delGoods(index);
|
||||
this.cart_list = []
|
||||
this.countTotalPrice();
|
||||
}).catch(() => {
|
||||
this.$message({type: 'info',message: '已取消操作'});
|
||||
});
|
||||
},
|
||||
// 打开会员弹出框
|
||||
openMember(json) {
|
||||
var that = this;
|
||||
if(this.cart_list.length<=0) {
|
||||
this.$message.error("请选择下单商品!");
|
||||
return false;
|
||||
}
|
||||
that.is_choose_member = true;
|
||||
// that.searchMember('{}');
|
||||
},
|
||||
// 搜索会员
|
||||
searchMember(json) {
|
||||
var that = this;
|
||||
that.is_choose_member = true;
|
||||
that.table_loading = true;
|
||||
that.$http.post("{!! yzWebFullUrl('plugin.help-user-buying.admin.index.getSearchMember') !!}",{keyword:this.member_info}).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
console.log(response);
|
||||
this.member_list = response.data.data;
|
||||
that.table_loading = false;
|
||||
}
|
||||
else{
|
||||
that.$message.error(response.data);
|
||||
that.table_loading = false;
|
||||
}
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.table_loading = false;
|
||||
};
|
||||
},
|
||||
// 选择会员
|
||||
chooseMember(row) {
|
||||
this.member = row;
|
||||
},
|
||||
// 确认选择会员
|
||||
confirm() {
|
||||
// 判断是否选择了会员
|
||||
if(!this.member.uid){
|
||||
this.$message.error("请选择会员")
|
||||
return false;
|
||||
}
|
||||
console.log(this.cart_list);
|
||||
let new_arr = [];
|
||||
// let dispatch_type_id: 1
|
||||
this.cart_list.forEach((item,index) => {
|
||||
new_arr.push({
|
||||
goods_id:item.id,
|
||||
total:item.num,
|
||||
option_id:item.option_id,
|
||||
})
|
||||
});
|
||||
console.log()
|
||||
// let store_name = ""
|
||||
// if(this.title){
|
||||
// store_name = this.store.store_name
|
||||
// }
|
||||
let data = {
|
||||
uid:this.member.uid,
|
||||
goods:new_arr,
|
||||
owner_id:this.owner_id,
|
||||
order_type:this.order_type,
|
||||
title:this.title,
|
||||
}
|
||||
console.log(data)
|
||||
{{--window.location.href="{!! yzWebFullUrl('plugin.help-user-buying.admin.index.set-member-id',['data' => '']) !!}"+JSON.stringify(data);--}}
|
||||
this.$http.post("{!! yzWebFullUrl('plugin.help-user-buying.admin.index.set-member-id') !!}",{data:JSON.stringify(data)}).then(response => {
|
||||
console.log(response,123);
|
||||
if(response.data.msg == "该类型订单无配送方式,无法正常下单"){
|
||||
this.$message({
|
||||
message: response.data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
location.reload();
|
||||
return
|
||||
}
|
||||
window.location.href="{!! yzWebFullUrl('plugin.help-user-buying.admin.index.set-member-id',['data' => '']) !!}"+JSON.stringify(data);
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
};
|
||||
this.is_choose_member = false;
|
||||
},
|
||||
// 清除选择会员
|
||||
delMember() {
|
||||
this.member = {};
|
||||
},
|
||||
// 确认选择规格
|
||||
confirmOption() {
|
||||
// 判断是否所有规格都已经选择
|
||||
for(let i=0;i<this.option_list.length;i++) {
|
||||
if(!this.status[i]){
|
||||
this.$message.error("请选择完整规格信息")
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// 拼接id
|
||||
let id = this.status.join("_");
|
||||
//重新排序,处理后台返回的规格拼接id没规律问题
|
||||
|
||||
console.log(this.permute(this.status));
|
||||
let arr_ids = this.permute(this.status);
|
||||
let str_ids = [];
|
||||
|
||||
for(let i=0;i<arr_ids.length;i++) {
|
||||
str_ids[i] = arr_ids[i].join("_");
|
||||
}
|
||||
// 判断选中的规格是否已存在购物车
|
||||
for(let i=0;i<str_ids.length;i++) {
|
||||
this.cart_list.some((item,index) =>{
|
||||
if(item.specs == str_ids[i]){
|
||||
console.log(id)
|
||||
this.is_exist = 1;
|
||||
item.num++;
|
||||
this.changeNum(index);
|
||||
this.countTotalPrice();
|
||||
return true;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if(this.is_exist == 1) {
|
||||
this.is_option = false;
|
||||
return false;
|
||||
}
|
||||
// 加入购物车
|
||||
|
||||
for(let i=0;i<this.choose_row.has_many_options.length;i++){
|
||||
for(let j=0;j<str_ids.length;j++) {
|
||||
if(str_ids[j]==this.choose_row.has_many_options[i].specs){
|
||||
this.cart_list.push({
|
||||
id:this.choose_row.has_many_options[i].goods_id,
|
||||
specs:this.choose_row.has_many_options[i].specs,
|
||||
option_id:this.choose_row.has_many_options[i].id,//规格id
|
||||
title:this.choose_row.title,
|
||||
option_title:this.choose_row.has_many_options[i].title,
|
||||
thumb:this.choose_row.thumb,
|
||||
num:1,
|
||||
total:this.choose_row.has_many_options[i].product_price,
|
||||
price:this.choose_row.has_many_options[i].product_price,
|
||||
})
|
||||
this.is_option = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
this.countTotalPrice();
|
||||
console.log(this.cart_list)
|
||||
|
||||
},
|
||||
// 分页
|
||||
currentChange(page) {
|
||||
var that = this;
|
||||
// let json = {page:page};
|
||||
that.search(page);
|
||||
},
|
||||
// 一级分类改变
|
||||
changeV1(){
|
||||
this.search_form.id_v2 = "";
|
||||
this.search_form.id_v3 = "";
|
||||
this.category_list_v2 = [];
|
||||
this.category_list_v3 = [];
|
||||
this.category_list.find(item => {
|
||||
if(item.id == this.search_form.id_v1) {
|
||||
this.category_list_v2 = item.childrens;
|
||||
}
|
||||
});
|
||||
},
|
||||
// 二级分类改变
|
||||
changeV2(){
|
||||
this.search_form.id_v3 = "";
|
||||
this.category_list_v3 = [];
|
||||
if(this.category_level==3) {
|
||||
this.category_list_v2.find(item => {
|
||||
if(item.id == this.search_form.id_v2) {
|
||||
this.category_list_v3 = item.childrens;
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
// 搜索
|
||||
search(page) {
|
||||
var that = this;
|
||||
console.log(that.search_form)
|
||||
var arr = [];
|
||||
if(this.search_form.id_v1){
|
||||
arr.push(this.search_form.id_v1)
|
||||
}
|
||||
if(this.search_form.id_v2){
|
||||
arr.push(this.search_form.id_v2)
|
||||
}
|
||||
if(this.search_form.id_v3){
|
||||
arr.push(this.search_form.id_v3)
|
||||
}
|
||||
let str;
|
||||
let json;
|
||||
if(arr.length<=0) {
|
||||
str = "";
|
||||
json = {page:page,search:{keyword:this.search_form.goods_name,owner_id:this.owner_id}};
|
||||
}
|
||||
else{
|
||||
str = arr.join(",");
|
||||
json = {page:page,search:{category:str,keyword:this.search_form.goods_name,owner_id:this.owner_id}};
|
||||
}
|
||||
that.getGoodsList(json);
|
||||
},
|
||||
//计算总价格&总数
|
||||
countTotalPrice() {
|
||||
this.total_money = 0.0; //初始化
|
||||
for (var i = 0; i < this.cart_list.length; i++) {
|
||||
this.total_money += this.cart_list[i].price * this.cart_list[i].num;
|
||||
}
|
||||
this.total_money = Number(this.total_money.toString().match(/^\d+(?:\.\d{0,2})?/));
|
||||
},
|
||||
// 数组全排序
|
||||
permute(arr){
|
||||
var rst=[],cur=[]
|
||||
function fn(arr){
|
||||
var ch
|
||||
for(var i=0;i<arr.length;i++){
|
||||
ch=arr.splice(i,1)[0]
|
||||
cur.push(ch)
|
||||
if(arr.length==0){
|
||||
rst.push(cur.slice())
|
||||
}
|
||||
fn(arr)
|
||||
arr.splice(i,0,ch)
|
||||
cur.pop()
|
||||
}
|
||||
return rst
|
||||
}
|
||||
return fn(arr)
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,848 @@
|
|||
@extends('layouts.base')
|
||||
@section('title', "代客下单")
|
||||
@section('content')
|
||||
<style>
|
||||
.rightlist #app .rightlist-head{line-height:50px;padding:15px 0;}
|
||||
.rightlist #app{margin-left:30px;}
|
||||
.rightlist #app .el-breadcrumb{padding:30px 0;font-size:16px;}
|
||||
/* .el-form-item__label{padding-right:30px;} */
|
||||
.tip{font-size:12px;color:#999;font-weight:500}
|
||||
.rightlist-head-con{padding-right:20px;font-size:16px;color:#888;}
|
||||
/* .rightlist-head-con{float:left;padding-right:20px;font-size:16px;color:#888;} */
|
||||
.el-tag{font-weight:700;font-size:15px;margin-bottom:30px;}
|
||||
.el-icon-edit{font-size:16px;padding:0 15px;color:#409EFF;cursor: pointer;}
|
||||
/* 滑块选择小白点 */
|
||||
.el-switch.is-checked .el-switch__core::after {left: 100%;margin-left: -17px;}
|
||||
.el-switch__core::after {content: "";position: absolute;top: 1px;left: 1px;border-radius: 100%;transition: all .3s;width: 16px;height: 16px;background-color: #fff;}
|
||||
.tip1{font-size:12px;color:red;font-weight:500}
|
||||
[v-cloak]{
|
||||
display:none;
|
||||
}
|
||||
/* 计数器样式 */
|
||||
.el-input-number__decrease, .el-input-number__increase {width: 25px;}
|
||||
.el-input-number .el-input__inner {padding-left: 0px;padding-right: 0px;}
|
||||
</style>
|
||||
<div class="rightlist">
|
||||
<div id="app" v-cloak v-loading="loading">
|
||||
<el-breadcrumb separator-class="el-icon-arrow-right">
|
||||
<el-breadcrumb-item><a href="{{ yzWebFullUrl('plugin.help-user-buying.admin.index.index') }}">返回选择</a></el-breadcrumb-item>
|
||||
<el-breadcrumb-item>[[goods.title?goods.title:'平台自营']]</el-breadcrumb-item>
|
||||
</el-breadcrumb>
|
||||
<el-row :gutter="50">
|
||||
<!-- left -->
|
||||
<el-col :span="12">
|
||||
<div>
|
||||
<div style="background:#f9f9f9;padding:15px 10px;font-weight:900;border:1px solid #e9e9e9;">
|
||||
会员信息
|
||||
</div>
|
||||
<div style="border:1px solid #e9e9e9;">
|
||||
<el-form :model="member" ref="member" label-width="20%" style="padding-top:50px;">
|
||||
<el-form-item label="客户">
|
||||
<el-input v-model="member.nickname" disabled style="width:70%"></el-input><br>
|
||||
<img :src="member.avatar_image" style="width:70px;height:70px;">
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="配送方式" v-show="deliveryMethod.length > 0">
|
||||
<el-radio v-for="(item,index) in deliveryMethod" :key="index" v-model.number="dispatch_type_id" :label="item.value">[[item.name]]</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="收件人" v-show="needAddress == 1">
|
||||
<el-input v-model="member.member_address.username" style="width:70%"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系电话" v-show="needAddress == 1">
|
||||
<el-input v-model="member.member_address.mobile" style="width:70%"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="所在区域" v-loading="all_loading" v-show="needAddress == 1">
|
||||
<el-select v-model="member.member_address.province" placeholder="请选择省" clearable style="width:20%" @change="changeProvince()" value-key="id">
|
||||
<el-option v-for="item in province_list" :key="item.id" :label="item.areaname" :value="item"></el-option>
|
||||
</el-select>
|
||||
<el-select v-model="member.member_address.city" placeholder="请选择市" clearable style="width:20%" value-key="id" @change="changeCity()">
|
||||
<el-option v-for="item in city_list" :key="item.id" :label="item.areaname" :value="item"></el-option>
|
||||
</el-select>
|
||||
<el-select v-model="member.member_address.district" placeholder="请选择区" clearable style="width:20%" value-key="id" @change="changeDistrict()">
|
||||
<el-option v-for="item in district_list" :key="item.id" :label="item.areaname" :value="item"></el-option>
|
||||
</el-select>
|
||||
<el-select v-if="is_street" v-model="member.member_address.street" placeholder="请选择街道" clearable style="width:20%" value-key="id">
|
||||
<el-option v-for="item in street_list" :key="item.id" :label="item.areaname" :value="item"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="详细地址" v-show="needAddress == 1">
|
||||
<el-input v-model="member.member_address.address" style="width:70%"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="" v-show="needAddress == 1">
|
||||
<el-button type="primary" @click="showMemberAddressList()" size="small">其他地址</el-button>
|
||||
<el-button type="primary" @click="createAddress()" size="small">新增地址</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<!-- right -->
|
||||
<el-col :span="12">
|
||||
<div v-for="(item,index) in orders_list" style="margin-bottom:20px;">
|
||||
<div style="background:#f9f9f9;padding:15px 10px;font-weight:900;border:1px solid #e9e9e9;">
|
||||
订单信息
|
||||
</div>
|
||||
<!-- 表格start -->
|
||||
<el-table :data="item.order_goods" style="width: 100%;border:1px solid #e9e9e9" v-loading="loading" max-height="400">
|
||||
<el-table-column prop="id" label="商品名称" min-width="150">
|
||||
<template slot-scope="scope">
|
||||
<div style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;">
|
||||
<div>[[scope.row.title]]</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="options" label="规格" max-width="120" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>[[scope.row.goods_option_title?scope.row.goods_option_title:'']]</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="goods_price" label="单价" width="120" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>[[scope.row.goods_price/scope.row.total]]</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数量" prop="total" max-width="120" align="center"></el-table-column>
|
||||
|
||||
</el-table>
|
||||
<!-- 表格end -->
|
||||
<div>
|
||||
<div style="background:#f9f9f9;padding:15px 10px;font-weight:900;border:1px solid #e9e9e9">
|
||||
优惠抵扣信息
|
||||
</div>
|
||||
<div style="border:1px solid #e9e9e9;font-weight:900;line-height:50px">
|
||||
<div v-for="(item1,index1) in item.order_deductions" :key="index1">
|
||||
<div style="padding-left:2.5%;display:inline-block;width:70%">可用[[item1.coin]][[item1.name]] 抵扣[[item1.amount]]元</div>
|
||||
<div style="padding-rifht:2.5%;display:inline-block;width:25%;text-align:right">
|
||||
<el-switch v-model="item1.checked" @change="changePoint()"></el-switch>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div style="background:#f9f9f9;padding:15px 10px;font-weight:900;border:1px solid #e9e9e9;margin-top:30px;">
|
||||
优惠抵扣信息
|
||||
</div>
|
||||
<div style="border:1px solid #e9e9e9;font-weight:900;line-height:50px">
|
||||
|
||||
<div>
|
||||
<div style="padding-left:2.5%;display:inline-block;width:70%">优惠券 [[total_coupons]]张可用</div>
|
||||
<div style="padding-rifht:2.5%;display:inline-block;width:25%;text-align:right">
|
||||
<span style="color:#409EFF;cursor:pointer" @click="is_discounts=true">
|
||||
[[used_coupons==0?'未使用':'已使用'+used_coupons+'张']]
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="background:#f9f9f9;padding:15px 10px;font-weight:900;border:1px solid #e9e9e9;">
|
||||
<span v-for="(item,index) in amount_items">
|
||||
<span>[[item.name]]:<span style="color:red">¥[[item.amount]]</span></span>
|
||||
</span>
|
||||
<span>合计:<span style="color:red">¥[[total_price]] </span></span>
|
||||
|
||||
</div>
|
||||
<el-button align="center" @click="order">立即下单</el-button>
|
||||
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 选择优惠券弹出框 -->
|
||||
<el-dialog title="选择优惠券" :visible.sync="is_discounts" v-loading="loading">
|
||||
<div>
|
||||
<template>
|
||||
<!-- 表格start -->
|
||||
<el-table :data="discounts_list" style="width: 100%;" max-height="500" ref="table" v-loading="table_loading">
|
||||
<el-table-column width="55">
|
||||
<template slot-scope="scope">
|
||||
<el-checkbox v-model="scope.row.checked" @change="changeDiscounts()" :disabled="scope.row.valid==false"></el-checkbox>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="belongs_to_coupon.name" label="优惠券名称" min-width="120" align="center"> </el-table-column>
|
||||
<el-table-column prop="details" label="优惠详情" min-width="120" align="center">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
<span v-if="scope.row.belongs_to_coupon.enough==0">不限 </span>
|
||||
<span v-else>满[[scope.row.belongs_to_coupon.enough可用]] </span>
|
||||
<span v-if="scope.row.belongs_to_coupon.discount=='0.00'">立减[[scope.row.belongs_to_coupon.deduct]]元 </span>
|
||||
<span v-else>打[[scope.row.belongs_to_coupon.discount]]折 </span>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 表格end -->
|
||||
</template>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<!-- <el-button @click="is_discounts = false">取 消</el-button> -->
|
||||
<el-button type="primary" @click="is_discounts = false">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 选择支付方式弹出框 -->
|
||||
<el-dialog title="确认付款" :visible.sync="is_pay" v-loading="loading">
|
||||
<div style="text-align:center;line-height:40px;font-weight:600;">
|
||||
<div>会员余额:[[pay.credit2]]</div>
|
||||
<div> 支付流水号:[[pay.pay_sn]]</div>
|
||||
<div> 支付金额:<span style="color:red">[[pay.amount]]</span>元</div>
|
||||
<div>
|
||||
<el-button v-for="(item1,index1) in buttons" :key="index1" @click="confirmPay(item1)">[[item1.name]]</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="jump">取 消</el-button>
|
||||
<!-- <el-button type="primary" @click="is_discounts = false">确 定</el-button> -->
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 选择收货地址 -->
|
||||
<el-dialog :visible.sync="modal_member_address_list" width="900px" title="选择收货地址">
|
||||
<div style="overflow:auto">
|
||||
<el-table :data="member_address_list" style="width: 100%;overflow:auto">
|
||||
<el-table-column prop="username" label="姓名" align="center"></el-table-column>
|
||||
<el-table-column prop="mobile" label="手机号" align="center"></el-table-column>
|
||||
<el-table-column prop="address_info" label="地址" align="center"></el-table-column>
|
||||
|
||||
<el-table-column prop="" label="操作" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button @click="selectSendAddress(scope.row)">选择</el-button>
|
||||
<el-button type="success" @click="editAddress(scope.row)">编辑</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="modal_member_address_list = false">取 消</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<template>
|
||||
<edit-member-address
|
||||
:member_address="edit_member_address"
|
||||
:edit_address_dialog_show="edit_address_dialog_show"
|
||||
:is_street="is_street"
|
||||
:operation-type="operationType"
|
||||
@init-address="componentInteract"
|
||||
>
|
||||
</edit-member-address>
|
||||
</template>
|
||||
</div>
|
||||
@include('Yunshop\HelpUserBuying::buying.template.editMemberAddress')
|
||||
<script>
|
||||
var app = new Vue({
|
||||
el:"#app",
|
||||
delimiters: ['[[', ']]'],
|
||||
data() {
|
||||
let request = {!! $request !!};
|
||||
console.log(request);
|
||||
let order_type = request.order_type;
|
||||
let member = {!! $member !!};
|
||||
console.log(member);
|
||||
// 'deliveryMethod' => json_encode($deliveryMethod)
|
||||
let deliveryMethod = {!! $deliveryMethod !!};
|
||||
let needAddress = {!! $needAddress !!};
|
||||
console.log(5566,deliveryMethod,needAddress);
|
||||
if(member.member_address.length==0){
|
||||
member.member_address = {
|
||||
address: "",
|
||||
city: "",
|
||||
city_id: 0,
|
||||
district: "",
|
||||
district_id: 0,
|
||||
mobile: "",
|
||||
province: "",
|
||||
province_id: 0,
|
||||
street: "",
|
||||
street_id: 0,
|
||||
username: "",
|
||||
};
|
||||
}
|
||||
let is_street = {!! $is_street !!};
|
||||
console.log(is_street)
|
||||
let order_url = {!! $order_url !!};
|
||||
console.log(order_url)
|
||||
let store = {!! $store?:'{id:0}' !!};
|
||||
return{
|
||||
modal_member_address_list:false, //会员地址
|
||||
request_member_address_list:true, //是否请求获取地址
|
||||
member_address_list:{},
|
||||
value:"",//测试
|
||||
province_list:[],//省
|
||||
city_list:[],//市
|
||||
district_list:[],//区域
|
||||
street_list:[],//街道
|
||||
orders_list:[],//订单列表
|
||||
address:"",//用户信息,优惠选择必传
|
||||
amount_items:"",//总抵扣、总优惠等,优惠选择回传
|
||||
discounts_list:[],//优惠券列表
|
||||
store:store,//门店信息
|
||||
order_type:order_type,//订单类型。32门店,92供应商,0普通商品
|
||||
deliveryMethod:deliveryMethod,//配送方式列表
|
||||
needAddress:needAddress,//是否需要收货地址1需要,2不需要
|
||||
dispatch_type_id:1,//配送方式,默认快递,值为1
|
||||
no_deduction_ids:0,//默认开启积分抵扣
|
||||
pay:{
|
||||
credit2:"",
|
||||
amount:"",
|
||||
pay_sn:"",
|
||||
id:0,
|
||||
},//支付信息
|
||||
buttons:[],//支付方式列表
|
||||
total_coupons:0,//优惠券共几张
|
||||
used_coupons:0,//优惠券使用几张
|
||||
total_price:"",//总价格
|
||||
all_loading:false,
|
||||
loading:false,
|
||||
goods:request,//商品信息
|
||||
goods_info:[],//商品详细信息
|
||||
member:member,//客户信息
|
||||
is_street:is_street,//是否开启街道
|
||||
order_url:order_url,//链接
|
||||
table_loading:false,
|
||||
category_list:[],
|
||||
form:{},
|
||||
is_discounts:false,//选择优惠券弹出框
|
||||
is_pay:false,//选择支付方式弹出框
|
||||
|
||||
|
||||
//编辑地址
|
||||
operationType:'',
|
||||
edit_address_dialog_show:0,
|
||||
edit_member_address:{
|
||||
address: "",
|
||||
city: "",
|
||||
city_id: 0,
|
||||
district: "",
|
||||
district_id: 0,
|
||||
mobile: "",
|
||||
province: "",
|
||||
province_id: 0,
|
||||
street: "",
|
||||
street_id: 0,
|
||||
username: "",
|
||||
isdefault:0,
|
||||
},
|
||||
//分页
|
||||
total:0,
|
||||
per_size:0,
|
||||
current_page:0,
|
||||
rules:{},
|
||||
}
|
||||
},
|
||||
created() {
|
||||
let json = {};
|
||||
if(this.order_type == 0 || this.order_type==32) {
|
||||
json = {
|
||||
dispatch_type_id:this.dispatch_type_id,
|
||||
goods:JSON.stringify(this.goods.goods),
|
||||
address:{},
|
||||
orders:'[]',
|
||||
store_id:this.goods.owner_id,
|
||||
no_deduction_ids:this.no_deduction_ids,
|
||||
};
|
||||
}
|
||||
if(this.order_type == 92) {
|
||||
json = {
|
||||
dispatch_type_id:this.dispatch_type_id,
|
||||
goods:JSON.stringify(this.goods.goods),
|
||||
address:{},
|
||||
orders:'[]',
|
||||
no_deduction_ids:this.no_deduction_ids,
|
||||
// store_id:this.goods.owner_id,
|
||||
};
|
||||
}
|
||||
|
||||
this.getOrderList(json);
|
||||
this.getDefaultDispatchTypeId();
|
||||
console.log(this.member.member_address);
|
||||
this.getProvince();
|
||||
this.changeProvince(this.member.member_address.province_id);
|
||||
this.changeCity(this.member.member_address.city_id);
|
||||
if(this.is_street) {
|
||||
this.changeDistrict(this.member.member_address.district_id);
|
||||
}
|
||||
this.all_loading = false;
|
||||
},
|
||||
methods: {
|
||||
getDefaultDispatchTypeId() {
|
||||
this.dispatch_type_id = this.deliveryMethod.length > 1 ? this.deliveryMethod[0].value : 0;
|
||||
},
|
||||
|
||||
createAddress() {
|
||||
this.edit_address_dialog_show++;
|
||||
this.operationType = 'create';
|
||||
|
||||
this.edit_member_address = {
|
||||
uid:this.member.uid,
|
||||
address: "",
|
||||
city: "",
|
||||
city_id: 0,
|
||||
district: "",
|
||||
district_id: 0,
|
||||
mobile: "",
|
||||
province: "",
|
||||
province_id: 0,
|
||||
street: "",
|
||||
street_id: 0,
|
||||
username: "",
|
||||
isdefault:0,
|
||||
}
|
||||
},
|
||||
|
||||
//编辑收货地址
|
||||
editAddress(row) {
|
||||
console.log(row);
|
||||
this.edit_address_dialog_show++;
|
||||
this.edit_member_address = row;
|
||||
this.operationType = 'edit';
|
||||
},
|
||||
|
||||
//选择收货地址
|
||||
selectSendAddress(row) {
|
||||
if(row.length != 0){
|
||||
this.member.member_address = row;
|
||||
this.modal_member_address_list = false;
|
||||
}
|
||||
},
|
||||
componentInteract(type) {
|
||||
if (type == 'edit') {
|
||||
this.showMemberAddressList(1);
|
||||
} else if(type == 'create') {
|
||||
this.showMemberAddressList(1);
|
||||
}
|
||||
},
|
||||
showMemberAddressList(request_status=0) {
|
||||
|
||||
if (request_status) {
|
||||
this.request_member_address_list = true;
|
||||
}
|
||||
|
||||
if (this.request_member_address_list) {
|
||||
this.$http.post("{!! yzWebFullUrl('plugin.help-user-buying.admin.member-address.get-member-address-list') !!}",{member_id:this.member.uid}).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
this.member_address_list = response.data.data;
|
||||
} else{
|
||||
that.$message.error(response.data);
|
||||
}
|
||||
this.modal_member_address_list = true;
|
||||
this.request_member_address_list = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
};
|
||||
} else {
|
||||
this.modal_member_address_list = true;
|
||||
}
|
||||
|
||||
},
|
||||
getOrderList(json){
|
||||
var that = this;
|
||||
that.loading = true;
|
||||
json['type'] = 5;
|
||||
that.$http.post(this.order_url.pre_url,json).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
console.log(response);
|
||||
that.total_coupons = response.data.data.discount.member_coupons.length;
|
||||
that.no_deduction_ids = response.data.data.discount.default_deduction ? response.data.data.discount.default_deduction : 0;
|
||||
that.used_coupons = 0;
|
||||
that.address = response.data.data.dispatch.default_member_address;
|
||||
that.amount_items = response.data.data.amount_items;
|
||||
that.orders_list = response.data.data.orders;
|
||||
that.total_price = response.data.data.total_price;
|
||||
that.discounts_list = response.data.data.discount.member_coupons;//优惠券
|
||||
if(that.discounts_list.length>0) {
|
||||
that.discounts_list.forEach((item,index) => {
|
||||
if(item.checked){
|
||||
that.used_coupons++;
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
else{
|
||||
that.$message.error(response.data.msg);
|
||||
that.is_discounts = false;
|
||||
window.location.href="{!! yzWebFullUrl('plugin.help-user-buying.admin.index.index') !!}";
|
||||
}
|
||||
that.loading = false;
|
||||
this.all_loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.loading = false;
|
||||
this.all_loading = false;
|
||||
};
|
||||
},
|
||||
// 获取省份信息
|
||||
getProvince() {
|
||||
var that = this;
|
||||
that.all_loading = true;
|
||||
that.$http.get("{!! yzWebFullUrl('plugin.help-user-buying.admin.member-address.get-address',['type' => 'province']) !!}",).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
this.province_list = response.data.data;
|
||||
|
||||
} else{
|
||||
that.$message.error(response.data);
|
||||
that.all_loading = false;
|
||||
}
|
||||
that.all_loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.all_loading = false;
|
||||
};
|
||||
},
|
||||
|
||||
// 省份改变
|
||||
changeProvince(parentid) {
|
||||
var that = this;
|
||||
if(!parentid) {
|
||||
parentid = that.member.member_address.province.id;
|
||||
that.member.member_address.city_id = 0;
|
||||
that.member.member_address.city = '';
|
||||
that.member.member_address.district_id = 0;
|
||||
that.member.member_address.district = '';
|
||||
that.member.member_address.street_id = 0;
|
||||
that.member.member_address.street = '';
|
||||
}
|
||||
that.all_loading = true;
|
||||
that.$http.get("{!! yzWebFullUrl('plugin.help-user-buying.admin.member-address.get-address',['type' => 'city','parentid' => '']) !!}"+parentid).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
this.city_list = response.data.data;
|
||||
}
|
||||
|
||||
that.all_loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.all_loading = false;
|
||||
};
|
||||
},
|
||||
// 城市改变
|
||||
changeCity(parentid) {
|
||||
var that = this;
|
||||
if(!parentid) {
|
||||
parentid = that.member.member_address.city.id;
|
||||
that.member.member_address.district_id = 0;
|
||||
that.member.member_address.district = '';
|
||||
that.member.member_address.street_id = 0;
|
||||
that.member.member_address.street = '';
|
||||
}
|
||||
that.all_loading = true;
|
||||
that.$http.get("{!! yzWebFullUrl('plugin.help-user-buying.admin.member-address.get-address',['type' => 'district','parentid' => '']) !!}"+parentid).then(response => {
|
||||
if(response.data.result==1){
|
||||
that.district_list = response.data.data;
|
||||
}
|
||||
that.all_loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.all_loading = false;
|
||||
};
|
||||
},
|
||||
// 区域改变
|
||||
changeDistrict(parentid) {
|
||||
var that = this;
|
||||
if(this.is_street) {
|
||||
if(!parentid) {
|
||||
parentid = that.member.member_address.district.id;
|
||||
that.member.member_address.street_id = 0;
|
||||
that.member.member_address.street = '';
|
||||
}
|
||||
that.all_loading = true;
|
||||
that.$http.get("{!! yzWebFullUrl('plugin.help-user-buying.admin.member-address.get-address',['type' => 'street','parentid' => '']) !!}"+parentid).then(response => {
|
||||
if(response.data.result==1){
|
||||
that.street_list = response.data.data;
|
||||
}
|
||||
that.all_loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.all_loading = false;
|
||||
};
|
||||
}
|
||||
},
|
||||
// 积分、爱心值修改
|
||||
changePoint() {
|
||||
var that = this;
|
||||
// 优惠券传值
|
||||
let arr = [];
|
||||
this.discounts_list.forEach((item,index) => {
|
||||
if(item.checked) {
|
||||
arr.push(item.id);
|
||||
}
|
||||
})
|
||||
let member_coupon_ids = arr.join(",")
|
||||
// 积分、爱心值传值
|
||||
var orders = [];
|
||||
for(let i=0;i<this.orders_list.length;i++) {
|
||||
orders.push({deduction_ids:[],pre_id:''})
|
||||
for(var j in this.orders_list[i].order_deductions) {
|
||||
if(this.orders_list[i].order_deductions[j].checked==true){
|
||||
orders[i].deduction_ids.push(this.orders_list[i].order_deductions[j].code)
|
||||
}
|
||||
}
|
||||
orders[i].pre_id = this.orders_list[i].pre_id
|
||||
}
|
||||
console.log(orders)
|
||||
let json = {
|
||||
goods:JSON.stringify(this.goods.goods),
|
||||
orders:JSON.stringify(orders),
|
||||
dispatch_type_id: this.dispatch_type_id,
|
||||
address: {},
|
||||
member_coupon_ids:member_coupon_ids,
|
||||
store_id:this.goods.owner_id,
|
||||
no_deduction_ids:this.no_deduction_ids,
|
||||
}
|
||||
this.getOrderList(json)
|
||||
},
|
||||
// 优惠券修改
|
||||
changeDiscounts() {
|
||||
console.log(this.orders_list)
|
||||
this.changePoint()
|
||||
},
|
||||
// 立即下单
|
||||
order() {
|
||||
let that = this;
|
||||
|
||||
let address = {};
|
||||
// 收货信息数据处理
|
||||
if (this.dispatch_type_id == 1 || (this.dispatch_type_id == 0 && this.needAddress == 1)) {
|
||||
|
||||
if(!that.verification()) {
|
||||
return;
|
||||
}
|
||||
if(this.member.member_address.province.id) {
|
||||
address.province = this.member.member_address.province.areaname;
|
||||
}
|
||||
else {
|
||||
address.province = this.member.member_address.province;
|
||||
}
|
||||
if(this.member.member_address.city.id) {
|
||||
address.city = this.member.member_address.city.areaname;
|
||||
}
|
||||
else {
|
||||
address.city = this.member.member_address.city;
|
||||
}
|
||||
if(this.member.member_address.district.id) {
|
||||
address.district = this.member.member_address.district.areaname;
|
||||
}
|
||||
else {
|
||||
address.district = this.member.member_address.district;
|
||||
}
|
||||
|
||||
if(this.is_street){
|
||||
if(this.member.member_address.street.id) {
|
||||
address.street = this.member.member_address.street.areaname;
|
||||
}
|
||||
else {
|
||||
address.street = this.member.member_address.street;
|
||||
}
|
||||
}
|
||||
else{
|
||||
delete(address.street);
|
||||
}
|
||||
address.uid = this.member.member_address.uid;
|
||||
address.username = this.member.member_address.username;
|
||||
address.mobile = this.member.member_address.mobile;
|
||||
address.address = this.member.member_address.address;
|
||||
} else if (this.dispatch_type_id == 2) {
|
||||
if(!this.member.member_address.username) {
|
||||
this.$message.error("请输入收件人!");
|
||||
return;
|
||||
}
|
||||
if(!this.member.member_address.mobile) {
|
||||
this.$message.error("请输入联系电话!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 优惠券传值
|
||||
let arr = [];
|
||||
this.discounts_list.forEach((item,index) => {
|
||||
if(item.checked) {
|
||||
arr.push(item.id);
|
||||
}
|
||||
})
|
||||
let member_coupon_ids = arr.join(",")
|
||||
// 积分、爱心值传值
|
||||
var orders = [];
|
||||
for(let i=0;i<this.orders_list.length;i++) {
|
||||
orders.push({deduction_ids:[],pre_id:''})
|
||||
for(var j in this.orders_list[i].order_deductions) {
|
||||
if(this.orders_list[i].order_deductions[j].checked==true){
|
||||
orders[i].deduction_ids.push(this.orders_list[i].order_deductions[j].code)
|
||||
}
|
||||
}
|
||||
orders[i].pre_id = this.orders_list[i].pre_id
|
||||
}
|
||||
console.log(orders)
|
||||
let json = {};
|
||||
if(this.order_type == 32) {
|
||||
|
||||
json = {
|
||||
type:5,
|
||||
goods:JSON.stringify(this.goods.goods),
|
||||
orders:JSON.stringify(orders),
|
||||
dispatch_type_id: this.dispatch_type_id,
|
||||
address: JSON.stringify(address),
|
||||
member_coupon_ids:member_coupon_ids,
|
||||
store_id:this.goods.owner_id,
|
||||
};
|
||||
|
||||
if (this.dispatch_type_id == 2) {
|
||||
json.address = {};
|
||||
json.mobile = this.member.member_address.mobile;
|
||||
json.realname = this.member.member_address.username;
|
||||
}
|
||||
} else {
|
||||
json = {
|
||||
type:5,
|
||||
goods:JSON.stringify(this.goods.goods),
|
||||
orders:JSON.stringify(orders),
|
||||
dispatch_type_id: this.dispatch_type_id,
|
||||
address: JSON.stringify(address),
|
||||
member_coupon_ids:member_coupon_ids,
|
||||
// store_id:this.goods.owner_id,
|
||||
}
|
||||
}
|
||||
json.no_deduction_ids = 1;//订单创建禁止默认积分抵扣
|
||||
that.loading = true;
|
||||
that.$http.post(this.order_url.create_url,json).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
console.log(response.data.data.order_ids);
|
||||
that.getPayType(response.data.data.order_ids);
|
||||
}
|
||||
else{
|
||||
that.$message.error(response.data.msg);
|
||||
}
|
||||
that.loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.loading = false;
|
||||
};
|
||||
|
||||
},
|
||||
getPayType(order_ids) {
|
||||
var that = this;
|
||||
that.loading = true;
|
||||
that.$http.post("{!! yzApiUrl('plugin.help-user-buying.admin.user-merge-pay.index') !!}",{type:5,order_ids:order_ids}).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
that.is_pay = true;
|
||||
let btns = response.data.data.buttons;
|
||||
for(let i in btns) {
|
||||
that.buttons.push(btns[i])
|
||||
}
|
||||
console.log(that.buttons);
|
||||
that.buttons = response.data.data.buttons;
|
||||
that.pay.credit2 = response.data.data.member.credit2;
|
||||
that.pay.amount = response.data.data.order_pay.amount;
|
||||
that.pay.pay_sn = response.data.data.order_pay.pay_sn;
|
||||
that.pay.id = response.data.data.order_pay.id;
|
||||
}
|
||||
else{
|
||||
that.$message.error(response.data.msg);
|
||||
}
|
||||
that.loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.loading = false;
|
||||
};
|
||||
},
|
||||
// 确认支付
|
||||
confirmPay(item) {
|
||||
var that = this;
|
||||
that.loading = true;
|
||||
// 余额支付
|
||||
if(item.value==3){
|
||||
that.$http.post("{!! yzApiUrl('plugin.help-user-buying.admin.user-merge-pay.credit2') !!}",{type:5,order_pay_id:that.pay.id}).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
that.$message.success(response.data.msg);
|
||||
that.jump();
|
||||
}
|
||||
else{
|
||||
that.$message.error(response.data.msg);
|
||||
}
|
||||
that.loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.loading = false;
|
||||
};
|
||||
}
|
||||
// 找人代付
|
||||
if(item.value==17){
|
||||
that.$http.post("{!! yzApiUrl('plugin.help-user-buying.admin.user-merge-pay.COD') !!}",{type:5,order_pay_id:that.pay.id}).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
that.$message.success(response.data.msg);
|
||||
that.jump();
|
||||
}
|
||||
else{
|
||||
that.$message.error(response.data.msg);
|
||||
}
|
||||
that.loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.loading = false;
|
||||
};
|
||||
}
|
||||
|
||||
//确认支付
|
||||
if(item.value==54){
|
||||
that.$http.post("{!! yzApiUrl('plugin.help-user-buying.admin.user-merge-pay.confirmPay') !!}",{type:5,order_pay_id:that.pay.id}).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
that.$message.success(response.data.msg);
|
||||
that.jump();
|
||||
}
|
||||
else{
|
||||
that.$message.error(response.data.msg);
|
||||
}
|
||||
that.loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.loading = false;
|
||||
};
|
||||
}
|
||||
},
|
||||
verification(){
|
||||
if(!this.member.member_address.username) {
|
||||
this.$message.error("请输入收件人!")
|
||||
return;
|
||||
}
|
||||
if(!this.member.member_address.mobile) {
|
||||
this.$message.error("请输入联系电话!")
|
||||
return;
|
||||
}
|
||||
if(!(/^1\d{10}$/.test(this.member.member_address.mobile))){
|
||||
this.$message.error("请输入正确的联系电话格式!")
|
||||
return;
|
||||
}
|
||||
if(!this.member.member_address.district){
|
||||
this.$message.error("请选择所在区域!")
|
||||
return;
|
||||
}
|
||||
if(this.is_street) {
|
||||
if(!this.member.member_address.street){
|
||||
this.$message.error("请选择所在区域!")
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(!this.member.member_address.address){
|
||||
this.$message.error("请输入详细地址!")
|
||||
return;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
jump() {
|
||||
window.location.href="{!! yzWebFullUrl('plugin.help-user-buying.admin.index.index') !!}";
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
@extends('layouts.base')
|
||||
@section('title', "代客下单")
|
||||
@section('content')
|
||||
<style>
|
||||
.rightlist #app .rightlist-head{line-height:50px;padding:15px 0;}
|
||||
.rightlist #app{margin-left:30px;}
|
||||
.rightlist #app .el-breadcrumb{padding:30px 0;font-size:16px;}
|
||||
/* .el-form-item__label{padding-right:30px;} */
|
||||
.tip{font-size:12px;color:#999;font-weight:500}
|
||||
.rightlist-head-con{padding-right:20px;font-size:16px;color:#888;}
|
||||
/* .rightlist-head-con{float:left;padding-right:20px;font-size:16px;color:#888;} */
|
||||
.el-tag{font-weight:700;font-size:15px;margin-bottom:30px;}
|
||||
.el-icon-edit{font-size:16px;padding:0 15px;color:#409EFF;cursor: pointer;}
|
||||
/* 滑块选择小白点 */
|
||||
.el-switch.is-checked .el-switch__core::after {left: 100%;margin-left: -17px;}
|
||||
.el-switch__core::after {content: "";position: absolute;top: 1px;left: 1px;border-radius: 100%;transition: all .3s;width: 16px;height: 16px;background-color: #fff;}
|
||||
.tip1{font-size:12px;color:red;font-weight:500}
|
||||
[v-cloak]{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<div class="rightlist">
|
||||
<div id="app" v-cloak v-loading="loading">
|
||||
<div class="rightlist-head">
|
||||
<div class="rightlist-head-con">代客下单</div>
|
||||
</div>
|
||||
<el-form label-width="35%">
|
||||
<el-form-item label="订单类型">
|
||||
<el-radio v-model.number="type" :label="1">平台自营</el-radio>
|
||||
<el-radio v-if="store_enabled == 1" v-model.number="type" :label="2">门店</el-radio>
|
||||
<el-radio v-if="supplier_enabled ==1" v-model.number="type" :label="3">供应商</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="type==2" label="选择门店">
|
||||
<el-select v-model="store_id" placeholder="请输入门店Id或者门店名称" filterable remote :remote-method="remoteSearchStoreOrSupplier" :loading="searchStoreOrSupplierLoading" style="width:50%;">
|
||||
<el-option v-for="item in storeList" :key="item.id" :label="item.store_name" :value="item.id" ></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="type==3" label="选择供应商">
|
||||
<el-select v-model="supplier_id" placeholder="请选择供应商Id或者供应商名称" style="width:50%;" filterable remote :remote-method="remoteSearchStoreOrSupplier" :loading="searchStoreOrSupplierLoading">
|
||||
<el-option v-for="item in supplierList" :key="item.id" :label="item.realname" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="success" @click="next()">下一步</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<script>
|
||||
var app = new Vue({
|
||||
el:"#app",
|
||||
delimiters: ['[[', ']]'],
|
||||
data() {
|
||||
let store_enabled = {{ $store_enabled }};
|
||||
let supplier_enabled = {{ $supplier_enabled }};
|
||||
// console.log(store_enabled)
|
||||
// console.log(supplier_enabled)
|
||||
return{
|
||||
type:1,
|
||||
store_id:"",
|
||||
store_enabled:store_enabled,
|
||||
supplier_enabled:supplier_enabled,
|
||||
supplier_id:"",
|
||||
loading:false,
|
||||
table_loading:false,
|
||||
rules:{},
|
||||
//分页
|
||||
total:0,
|
||||
per_size:0,
|
||||
current_page:0,
|
||||
rules:{},
|
||||
storeList:[],
|
||||
supplierList:[],
|
||||
searchStoreOrSupplierLoading:false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
remoteSearchStoreOrSupplier(keyword){
|
||||
if(keyword==""){
|
||||
return;
|
||||
}
|
||||
this.searchStoreOrSupplierLoading=true;
|
||||
this.$http.post("{!! yzWebFullUrl('plugin.help-user-buying.admin.index.get-source') !!}",{
|
||||
source_input:keyword,
|
||||
source:this.type==2?'store-cashier':'supplier'
|
||||
}).then(res=>{
|
||||
this.searchStoreOrSupplierLoading=false;
|
||||
if(res.data.result){
|
||||
return res.data.data;
|
||||
}
|
||||
return Promise.reject(res.data);
|
||||
}).then(({ stores,supplier })=>{
|
||||
if(this.type==2){
|
||||
this.storeList=stores;
|
||||
}else{
|
||||
this.supplierList=supplier;
|
||||
}
|
||||
}).catch(err=>{
|
||||
this.$message.error(err.msg);
|
||||
})
|
||||
},
|
||||
next(){
|
||||
if(this.type==1) {
|
||||
window.location.href="{!! yzWebFullUrl('plugin.help-user-buying.admin.index.shop-index') !!}";
|
||||
} else if(this.type==2) {
|
||||
if(!this.store_id) {
|
||||
this.$message.error("请选择门店!");
|
||||
return;
|
||||
}
|
||||
window.location.href="{!! yzWebFullUrl('plugin.help-user-buying.admin.index.store-index',['store_id' => '']) !!}"+this.store_id;
|
||||
} else if(this.type==3) {
|
||||
if(!this.supplier_id) {
|
||||
this.$message.error("请选择供应商!");
|
||||
return;
|
||||
}
|
||||
window.location.href="{!! yzWebFullUrl('plugin.help-user-buying.admin.index.supplier-index',['supplier_id' => '']) !!}"+this.supplier_id;
|
||||
}
|
||||
// window.location.href="{!! yzWebFullUrl('plugin.help-user-buying.admin.index.store-index',['store_id' => '']) !!}"+;
|
||||
// window.location.href='{!! yzWebFullUrl('plugin.help-user-buying.admin.index.shop-index') !!}';
|
||||
// window.location.href='{!! yzWebFullUrl('plugin.help-user-buying.admin.index.shop-index') !!}';
|
||||
},
|
||||
// 分页
|
||||
currentChange(page) {
|
||||
var that = this;
|
||||
let json = {page:page,id:that.id,leader_name:that.search_form.leader_name,start_time:that.search_form.start_time,
|
||||
member_num:that.search_form.member_num,status:that.search_form.status,order_sn:that.search_form.order_sn};
|
||||
that.getData(json);
|
||||
},
|
||||
// 搜索
|
||||
search() {
|
||||
var that = this;
|
||||
console.log(that.search_form)
|
||||
let json = {page:1,id:that.id,leader_name:that.search_form.leader_name,start_time:that.search_form.start_time,
|
||||
member_num:that.search_form.member_num,status:that.search_form.status,order_sn:that.search_form.order_sn};
|
||||
that.getData(json);
|
||||
},
|
||||
|
||||
submitForm() {
|
||||
var that = this;
|
||||
that.all_loading = true;
|
||||
that.$http.post("{!! yzWebFullUrl('plugin.wechat.admin.reply.controller.default-reply.add') !!}",{keywords_id:that.data.id}).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
that.keyword_list = response.data.data;
|
||||
that.$message.success("保存成功!");
|
||||
window.location.href='{!! yzWebFullUrl('plugin.wechat.admin.reply.controller.default-reply.index') !!}';
|
||||
}
|
||||
else{
|
||||
that.$message.error(response.data);
|
||||
}
|
||||
that.all_loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.all_loading = false;
|
||||
};
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,356 @@
|
|||
|
||||
<template id="edit_member_address">
|
||||
<!-- 修改收货地址 -->
|
||||
<el-dialog :visible.sync="modal_edit_member_address" width="900px" :title="d_title" center>
|
||||
<div style="overflow:auto">
|
||||
<div style="">
|
||||
<el-form label-position="right" :model="member_address" label-width="15%">
|
||||
<el-form-item label="收件人">
|
||||
<el-input v-model="member_address.username" style="width:70%"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系电话">
|
||||
<el-input v-model="member_address.mobile" style="width:70%"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="所在区域" v-loading="all_loading">
|
||||
<el-select v-model="member_address.province" placeholder="请选择省" clearable style="width:20%" @change="changeProvince()" value-key="id">
|
||||
<el-option v-for="item in province_list" :key="item.id" :label="item.areaname" :value="item"></el-option>
|
||||
</el-select>
|
||||
<el-select v-model="member_address.city" placeholder="请选择市" clearable style="width:20%" value-key="id" @change="changeCity()">
|
||||
<el-option v-for="item in city_list" :key="item.id" :label="item.areaname" :value="item"></el-option>
|
||||
</el-select>
|
||||
<el-select v-model="member_address.district" placeholder="请选择区" clearable style="width:20%" value-key="id" @change="changeDistrict()">
|
||||
<el-option v-for="item in district_list" :key="item.id" :label="item.areaname" :value="item"></el-option>
|
||||
</el-select>
|
||||
<el-select v-if="is_street" v-model="member_address.street" placeholder="请选择街道" clearable style="width:20%" value-key="id">
|
||||
<el-option v-for="item in street_list" :key="item.id" :label="item.areaname" :value="item"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="详细地址">
|
||||
<el-input v-model="member_address.address" style="width:70%"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否默认">
|
||||
<el-radio-group v-model="member_address.isdefault">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="confirmSubmit()">确 认</el-button>
|
||||
<el-button @click="modal_edit_member_address = false">取 消</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
Vue.component('editMemberAddress', {
|
||||
style:``,
|
||||
name:"editMemberAddress",
|
||||
template: `#edit_member_address`,
|
||||
props: {
|
||||
operationType:{
|
||||
type:Number|String,
|
||||
default:'',
|
||||
},
|
||||
member_address:{
|
||||
type:Object|String,
|
||||
default:{},
|
||||
},
|
||||
is_street:{
|
||||
type:Number,
|
||||
default:0,
|
||||
},
|
||||
edit_address_dialog_show:{
|
||||
type:Number,
|
||||
default:0,
|
||||
},
|
||||
},
|
||||
delimiters: ['[[', ']]'],
|
||||
data() {
|
||||
return {
|
||||
all_loading:false,
|
||||
d_title: '编辑收货地址',
|
||||
//编辑收货地址
|
||||
modal_edit_member_address:false,
|
||||
province_list:[],//省
|
||||
city_list:[],//市
|
||||
district_list:[],//区域
|
||||
street_list:[],//街道
|
||||
edit_member_address: {
|
||||
address: "",
|
||||
city: "",
|
||||
city_id: 0,
|
||||
district: "",
|
||||
district_id: 0,
|
||||
mobile: "",
|
||||
province: "",
|
||||
province_id: 0,
|
||||
street: "",
|
||||
street_id: 0,
|
||||
username: "",
|
||||
isdefault:0,
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
edit_address_dialog_show(val) {
|
||||
|
||||
if (this.operationType == 'create') {
|
||||
this.showCreateDialog();
|
||||
} else if (this.operationType == 'edit') {
|
||||
this.showEditDialog()
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted: function () {
|
||||
// this.__childInitial();
|
||||
|
||||
},
|
||||
methods: {
|
||||
//初始化页面数据,请求链接
|
||||
__childInitial() {
|
||||
if (this.member_address.length==0) {
|
||||
this.member_address = {
|
||||
address: "",
|
||||
city: "",
|
||||
city_id: 0,
|
||||
district: "",
|
||||
district_id: 0,
|
||||
mobile: "",
|
||||
province: "",
|
||||
province_id: 0,
|
||||
street: "",
|
||||
street_id: 0,
|
||||
username: "",
|
||||
isdefault:0,
|
||||
}
|
||||
}
|
||||
|
||||
if (this.operationType == 'create') {
|
||||
this.d_title = '新增收货地址';
|
||||
}
|
||||
},
|
||||
showEditDialog() {
|
||||
console.log(this.member_address);
|
||||
this.modal_edit_member_address = true;
|
||||
this.getProvince();
|
||||
this.changeProvince(this.member_address.province_id);
|
||||
this.changeCity(this.member_address.city_id);
|
||||
if(this.is_street) {
|
||||
this.changeDistrict(this.member_address.district_id);
|
||||
}
|
||||
},
|
||||
showCreateDialog() {
|
||||
console.log(this.member_address);
|
||||
this.modal_edit_member_address = true;
|
||||
this.getProvince();
|
||||
},
|
||||
confirmSubmit() {
|
||||
if (this.operationType == 'create') {
|
||||
this.confirmCreate();
|
||||
} else if (this.operationType == 'edit') {
|
||||
this.confirmEdit()
|
||||
}
|
||||
},
|
||||
|
||||
confirmCreate() {
|
||||
console.log(this.member_address);
|
||||
|
||||
let address = {
|
||||
uid:this.member_address.uid,
|
||||
isdefault:this.member_address.isdefault,
|
||||
username:this.member_address.username,
|
||||
mobile:this.member_address.mobile,
|
||||
address:this.member_address.address,
|
||||
latitude:this.member_address.latitude,
|
||||
longitude:this.member_address.longitude,
|
||||
};
|
||||
if(this.member_address.province.id) {
|
||||
address.province = this.member_address.province.areaname;
|
||||
} else {
|
||||
address.province = this.member_address.province;
|
||||
}
|
||||
if(this.member_address.city.id) {
|
||||
address.city = this.member_address.city.areaname;
|
||||
} else {
|
||||
address.city = this.member_address.city;
|
||||
}
|
||||
if(this.member_address.district.id) {
|
||||
address.district = this.member_address.district.areaname;
|
||||
} else {
|
||||
address.district = this.member_address.district;
|
||||
}
|
||||
|
||||
if(this.is_street){
|
||||
if(this.member_address.street.id) {
|
||||
address.street = this.member_address.street.areaname;
|
||||
} else {
|
||||
address.street = this.member_address.street;
|
||||
}
|
||||
}
|
||||
console.log({address:address});
|
||||
|
||||
this.$http.post("{!! yzWebFullUrl('plugin.help-user-buying.admin.member-address.create-member-address') !!}",{address:address}).then(response => {
|
||||
if(response.data.result==1){
|
||||
this.$message.success(response.data.msg);
|
||||
this.syncInitAddress();
|
||||
} else{
|
||||
this.$message.error(response.data.msg);
|
||||
}
|
||||
this.modal_edit_member_address = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
};
|
||||
},
|
||||
|
||||
confirmEdit() {
|
||||
console.log(this.member_address);
|
||||
|
||||
let address = {
|
||||
isdefault:this.member_address.isdefault,
|
||||
username:this.member_address.username,
|
||||
mobile:this.member_address.mobile,
|
||||
address:this.member_address.address,
|
||||
latitude:this.member_address.latitude,
|
||||
longitude:this.member_address.longitude,
|
||||
};
|
||||
if(this.member_address.province.id) {
|
||||
address.province = this.member_address.province.areaname;
|
||||
} else {
|
||||
address.province = this.member_address.province;
|
||||
}
|
||||
if(this.member_address.city.id) {
|
||||
address.city = this.member_address.city.areaname;
|
||||
} else {
|
||||
address.city = this.member_address.city;
|
||||
}
|
||||
if(this.member_address.district.id) {
|
||||
address.district = this.member_address.district.areaname;
|
||||
} else {
|
||||
address.district = this.member_address.district;
|
||||
}
|
||||
|
||||
if(this.is_street){
|
||||
if(this.member_address.street.id) {
|
||||
address.street = this.member_address.street.areaname;
|
||||
} else {
|
||||
address.street = this.member_address.street;
|
||||
}
|
||||
}
|
||||
console.log({id:this.member_address.id,address:address});
|
||||
|
||||
this.$http.post("{!! yzWebFullUrl('plugin.help-user-buying.admin.member-address.edit-member-address') !!}",{id:this.member_address.id,address:address}).then(response => {
|
||||
if(response.data.result==1){
|
||||
this.syncInitAddress();
|
||||
} else{
|
||||
this.$message.error(response.data.msg);
|
||||
}
|
||||
this.modal_edit_member_address = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
};
|
||||
|
||||
},
|
||||
|
||||
//子组件搜索传参到父级
|
||||
syncInitAddress() {
|
||||
this.$emit('init-address',this.operationType);
|
||||
},
|
||||
|
||||
// 获取省份信息
|
||||
getProvince() {
|
||||
var that = this;
|
||||
that.all_loading = true;
|
||||
that.$http.get("{!! yzWebFullUrl('plugin.help-user-buying.admin.member-address.get-address',['type' => 'province']) !!}",).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
this.province_list = response.data.data;
|
||||
|
||||
} else{
|
||||
that.$message.error(response.data);
|
||||
that.all_loading = false;
|
||||
}
|
||||
that.all_loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.all_loading = false;
|
||||
};
|
||||
},
|
||||
|
||||
// 省份改变
|
||||
changeProvince(parentid) {
|
||||
var that = this;
|
||||
if(!parentid) {
|
||||
parentid = that.member_address.province.id;
|
||||
that.member_address.city_id = 0;
|
||||
that.member_address.city = '';
|
||||
that.member_address.district_id = 0;
|
||||
that.member_address.district = '';
|
||||
that.member_address.street_id = 0;
|
||||
that.member_address.street = '';
|
||||
}
|
||||
that.all_loading = true;
|
||||
that.$http.get("{!! yzWebFullUrl('plugin.help-user-buying.admin.member-address.get-address',['type' => 'city','parentid' => '']) !!}"+parentid).then(response => {
|
||||
console.log(response);
|
||||
if(response.data.result==1){
|
||||
this.city_list = response.data.data;
|
||||
}
|
||||
|
||||
that.all_loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.all_loading = false;
|
||||
};
|
||||
},
|
||||
// 城市改变
|
||||
changeCity(parentid) {
|
||||
var that = this;
|
||||
if(!parentid) {
|
||||
parentid = that.member_address.city.id;
|
||||
that.member_address.district_id = 0;
|
||||
that.member_address.district = '';
|
||||
that.member_address.street_id = 0;
|
||||
that.member_address.street = '';
|
||||
}
|
||||
that.all_loading = true;
|
||||
that.$http.get("{!! yzWebFullUrl('plugin.help-user-buying.admin.member-address.get-address',['type' => 'district','parentid' => '']) !!}"+parentid).then(response => {
|
||||
if(response.data.result==1){
|
||||
that.district_list = response.data.data;
|
||||
}
|
||||
|
||||
that.all_loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.all_loading = false;
|
||||
};
|
||||
},
|
||||
// 区域改变
|
||||
changeDistrict(parentid) {
|
||||
var that = this;
|
||||
if(this.is_street) {
|
||||
if(!parentid) {
|
||||
parentid = that.member_address.district.id;
|
||||
that.member_address.street_id = 0;
|
||||
that.member_address.street = '';
|
||||
}
|
||||
that.all_loading = true;
|
||||
that.$http.get("{!! yzWebFullUrl('plugin.help-user-buying.admin.member-address.get-address',['type' => 'street','parentid' => '']) !!}"+parentid).then(response => {
|
||||
if(response.data.result==1){
|
||||
that.street_list = response.data.data;
|
||||
}
|
||||
that.all_loading = false;
|
||||
}),function(res){
|
||||
console.log(res);
|
||||
that.all_loading = false;
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
</script>
|
||||
Loading…
Reference in New Issue