0
0

更新代码

This commit is contained in:
2020-08-04 10:09:42 +08:00
parent 6118b5b63b
commit c2ac5d964e
478 changed files with 34410 additions and 0 deletions

View File

@@ -0,0 +1,161 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Withdraw;
use Illuminate\Http\Request;
use RuLong\UserAccount\Models\UserAccount;
use RuLong\UserAccount\Models\UserAccountLog;
use RuLong\UserAccount\Models\UserAccountRule;
class AccountController extends Controller
{
public function index(Request $request)
{
$mobile = $request->mobile;
$nickname = $request->nickname;
$start = $request->start;
$end = $request->end;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$accounts = UserAccount::when($mobile, function ($query) use ($mobile) {
$query->whereHas('user', function ($query) use ($mobile) {
$query->where('mobile', 'like', "%{$mobile}%");
});
})->when($nickname, function ($query) use ($nickname) {
$query->whereHas('user.info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
})->when($start && $end, function ($query) use ($start, $end) {
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})->when($start && !$end, function ($query) use ($start) {
return $query->where('created_at', '>=', $start);
})->when(!$start && $end, function ($query) use ($end) {
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->with(['user'])->latest()->paginate($numPerPage);
return view('Admin::accounts.index', compact('accounts'));
}
public function rules(Request $request)
{
$title = $request->title;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$rules = UserAccountRule::when($title, function ($query) use ($title) {
$query->where('title', 'like', "%{$title}%");
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->latest()->paginate($numPerPage);
return view('Admin::accounts.rules', compact('rules'));
}
public function logs(Request $request)
{
$mobile = $request->mobile;
$rule_id = $request->rule_id;
$nickname = $request->nickname;
$start = $request->start;
$end = $request->end;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$logs = UserAccountLog::when($mobile, function ($query) use ($mobile) {
$query->whereHas('user', function ($query) use ($mobile) {
$query->where('mobile', 'like', "%{$mobile}%");
});
})->when($nickname, function ($query) use ($nickname) {
$query->whereHas('user.info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
})->when($rule_id, function ($query) use ($rule_id) {
return $query->where('rule_id', $rule_id);
})->when($start && $end, function ($query) use ($start, $end) {
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})->when($start && !$end, function ($query) use ($start) {
return $query->where('created_at', '>=', $start);
})->when(!$start && $end, function ($query) use ($end) {
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->with(['user.info', 'rule'])->latest()->orderBy('id', 'desc')->paginate($numPerPage);
$rules = UserAccountRule::get();
return view('Admin::accounts.logs', compact('logs', 'rules'));
}
/**
* 提现申请
* @Author:<C.Jason>
* @Date:2018-11-08T16:48:31+0800
* @param Request $request [description]
* @return [type] [description]
*/
public function withdraws(Request $request)
{
$mobile = $request->mobile;
$nickname = $request->nickname;
$start = $request->start;
$end = $request->end;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$withdraws = Withdraw::when($mobile, function ($query) use ($mobile) {
$query->whereHas('user', function ($query) use ($mobile) {
$query->where('mobile', 'like', "%{$mobile}%");
});
})->when($nickname, function ($query) use ($nickname) {
$query->whereHas('user.info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
})->when($start && $end, function ($query) use ($start, $end) {
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})->when($start && !$end, function ($query) use ($start) {
return $query->where('created_at', '>=', $start);
})->when(!$start && $end, function ($query) use ($end) {
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->with(['user.info'])->latest()->paginate($numPerPage);
return view('Admin::accounts.withdraws', compact('withdraws'));
}
/**
* 通过提现申请
* @Author:<C.Jason>
* @Date:2018-11-08T16:48:10+0800
* @param Request $request [description]
* @param Withdraw $withdraw [description]
* @return [type] [description]
*/
public function approve(Request $request, Withdraw $withdraw)
{
}
/**
* 驳回提现申请
* @Author:<C.Jason>
* @Date:2018-11-08T16:48:19+0800
* @param Request $request [description]
* @param Withdraw $withdraw [description]
* @return [type] [description]
*/
public function reject(Request $request, Withdraw $withdraw)
{
if ($request->isMethod('POST')) {
# code...
} else {
return view('Admin::accounts.reject', compact('withdraw'));
}
}
}

View File

@@ -0,0 +1,271 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Activity;
use App\Models\ActivityGift;
use App\Models\Category;
use App\Models\Goods;
use App\Models\GoodsParams;
use App\Models\Seller;
use Illuminate\Http\Request;
use Validator;
class ActivityController extends Controller
{
public function index(Request $request)
{
if (\Admin::user()->seller->type != 'seller') {
return $this->error('您没有权限');
}
$title = $request->title;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$activities = Activity::when($title, function ($query) use ($title) {
$query->where('title', 'like', "%{$title}%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->orderBy('id', 'desc')->paginate($numPerPage);
return view('Admin::activities.index', compact('activities'));
}
public function create(Request $request)
{
$categoies = Category::treeSelect(2);
$sellers = Seller::where('status', 1)->where('type', 'seller')->get();
return view('Admin::activities.create', compact('categoies', 'sellers'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|max:100',
'description' => 'required|max:200',
'content' => 'required',
'storage_id' => 'required',
'start_time' => 'required',
'end_time' => 'required',
], [
'title.required' => '名称必须填写',
'title.max' => '名称长度应在:max以内',
'description.required' => '简介必须填写',
'content.required' => '内容必须填写',
'storage_id.required' => '标题图必须上传',
'start_time.required' => '开始时间必须填写',
'end_time.required' => '结束时间必须填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($request->end_time < $request->start_time) {
return $this->error('结束时间必须大于开始时间');
}
if (Activity::create($request->all())) {
return $this->success('新增活动成功', 'close');
} else {
return $this->error();
}
}
public function edit(Activity $activity)
{
$categoies = Category::treeSelect(2);
$sellers = Seller::where('status', 1)->where('type', 'seller')->get();
return view('Admin::activities.edit', compact('activity', 'categoies', 'sellers'));
}
public function update(Request $request, Activity $activity)
{
$validator = Validator::make($request->all(), [
'title' => 'required|max:100',
'description' => 'required|max:200',
'content' => 'required',
'storage_id' => 'required',
'start_time' => 'required',
'end_time' => 'required',
], [
'title.required' => '名称必须填写',
'title.max' => '名称长度应在:max以内',
'description.required' => '简介必须填写',
'content.required' => '内容必须填写',
'storage_id.required' => '标题图必须上传',
'start_time.required' => '开始时间必须填写',
'end_time.required' => '结束时间必须填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($request->end_time < $request->start_time) {
return $this->error('结束时间必须大于开始时间');
}
$data = $request->all();
$activity->update($data);
return $this->success('编辑完成', 'close');
}
public function destroy(Activity $activity)
{
if ($activity->delete()) {
return $this->success();
} else {
return $this->error();
}
}
public function show(Activity $activity)
{
$gifts = $activity->gifts()->paginate(30);
return view('Admin::activities.show', compact('gifts', 'activity'));
}
public function giftsCreate(Activity $activity)
{
$sellers = Seller::where('status', 1)->get();
return view('Admin::activities.giftsCreate', compact('sellers', 'activity'));
}
public function giftsStore(Request $request, Activity $activity)
{
$validator = Validator::make($request->all(), [
'goods_id' => 'required|numeric|min:1',
'param_id' => 'required|numeric|min:1',
'mode' => 'required|numeric',
'consume_mode' => 'required|numeric',
], [
'goods_id.required' => '商品必须选择',
'param_id.required' => '规格必须选择',
'goods_id.min' => '商品必须选择',
'param_id.min' => '规格必须选择',
'mode.required' => '任务指标必须填写',
'consume_mode.required' => '消耗业绩必须填写',
'goods_id.numeric' => '商品必须为数字',
'param_id.numeric' => '规格必须为数字',
'mode.numeric' => '任务指标必须为数字',
'consume_mode.numeric' => '消耗业绩必须为数字',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($request->consume_mode > $request->mode) {
return $this->error('消耗业绩不能大于任务指标');
}
if ($activity->gifts()->create($request->all())) {
return $this->success('添加奖品成功', 'close');
} else {
return $this->error();
}
}
public function giftsEdit(ActivityGift $gift)
{
$sellers = Seller::where('status', 1)->get();
$goods = Goods::where('status', 1)
->whereHas('params', function ($query) {return $query->where('stock', '>', 0)->where('status', 1);})
->where('seller_id', $gift->goods->seller_id)
->get();
$params = GoodsParams::where('status', 1)
->where('goods_id', $gift->goods_id)
->get();
return view('Admin::activities.giftsEdit', compact('sellers', 'goods', 'params', 'gift'));
}
public function giftsUpdate(Request $request, ActivityGift $gift)
{
$validator = Validator::make($request->all(), [
'goods_id' => 'required|numeric|min:1',
'param_id' => 'required|numeric|min:1',
'mode' => 'required|numeric',
'consume_mode' => 'required|numeric',
], [
'goods_id.required' => '商品必须选择',
'param_id.required' => '规格必须选择',
'goods_id.min' => '商品必须选择',
'param_id.min' => '规格必须选择',
'mode.required' => '任务指标必须填写',
'consume_mode.required' => '消耗业绩必须填写',
'goods_id.numeric' => '商品必须为数字',
'param_id.numeric' => '规格必须为数字',
'mode.numeric' => '任务指标必须为数字',
'consume_mode.numeric' => '消耗业绩必须为数字',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
$data = $request->all();
$gift->update($data);
return $this->success('', 'close');
}
public function giftsDestroy(ActivityGift $gift)
{
if ($gift->delete()) {
return $this->success();
} else {
return $this->error();
}
}
public function goods(Request $request)
{
if (empty($request->seller_id)) {
return ['msg' => '请选择商户', 'code' => 0];
}
$goods = Goods::where('status', 1)
->whereHas('params', function ($query) {return $query->where('stock', '>', 0)->where('status', 1);})
->where('seller_id', $request->seller_id)
->select('id', 'title')->get();
$data = [];
foreach ($goods as $key => $good) {
$data[$key]['id'] = $good->id;
$data[$key]['title'] = $good->title;
}
if ($data) {
return response()->json(['msg' => '', 'code' => 1, 'data' => $data]);
} else {
return ['msg' => '请选择商户', 'code' => 0];
}
}
public function params(Request $request)
{
if (empty($request->goods_id)) {
return ['msg' => '请选择商品', 'code' => 0];
}
$params = GoodsParams::where('status', 1)
->where('goods_id', $request->goods_id)
->select('id', 'value', 'price', 'cost')->get();
$data = [];
foreach ($params as $key => $param) {
$data[$key]['id'] = $param->id;
$data[$key]['title'] = $param->value . ' - 售价' . $param->price . ' - 成本' . $param->cost;
}
if ($data) {
return response()->json(['msg' => '', 'code' => 1, 'data' => $data]);
} else {
return ['msg' => '请选择商品', 'code' => 0];
}
}
}

View File

@@ -0,0 +1,110 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Advert;
use Illuminate\Http\Request;
use Validator;
/**
* 轮播管理,基本完成
*/
class AdvertController extends Controller
{
protected $models = [
'Article' => '资讯模型',
'Goods' => '商品模型',
];
public function index(Request $request)
{
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$model = $request->model;
$adverts = Advert::when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->when($model, function ($query) use ($model) {
$query->where('advertable_type', 'like', "%{$model}%");
})
->paginate($numPerPage);
return view('Admin::adverts.index', compact('adverts'));
}
public function create()
{
$models = $this->models;
return view('Admin::adverts.create', compact('models'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'sort' => 'required|numeric',
'storage_id' => 'required',
], [
'sort.required' => '排序必须填写',
'sort.numeric' => '排序只能是数字',
'url.required' => 'url必须填写',
'url.url' => 'url格式不正确',
'storage_id.required' => '图片必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
Advert::create([
'storage_id' => $request->storage_id,
'sort' => $request->sort,
'url' => $request->url,
]);
return $this->success('轮播创建成功', 'close');
}
public function edit(Advert $advert)
{
$models = $this->models;
return view('Admin::adverts.edit', compact('models', 'advert'));
}
public function update(Request $request, Advert $advert)
{
$validator = Validator::make($request->all(), [
'sort' => 'required|numeric',
'storage_id' => 'required',
], [
'sort.required' => '排序必须填写',
'sort.numeric' => '排序只能是数字',
'url.required' => 'url必须填写',
'url.url' => 'url格式不正确',
'storage_id.required' => '图片必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
$advert->update([
'storage_id' => $request->storage_id,
'sort' => $request->sort,
'url' => $request->url,
]);
return $this->success('轮播更新成功', 'close');
}
public function destroy(Advert $advert)
{
if ($advert->delete()) {
return $this->success();
} else {
return $this->error();
}
}
}

View File

@@ -0,0 +1,150 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Agency;
use App\Rules\Checkmobile;
use App\User;
use Illuminate\Http\Request;
use Validator;
class AgencyController extends Controller
{
public function index(Request $request)
{
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$lists = Agency::paginate($numPerPage);
return view('Admin::agency.index', compact('lists'));
}
public function create()
{
$salesmans = User::where('is_salesman', 1)->get();
return view('Admin::agency.create', compact('salesmans'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:50',
'status' => 'required',
], [
'name.required' => '名称必须填写',
'name.min' => '名称最少为:min字符',
'name.max' => '名称最多为:max字符',
'status.required' => '状态必须选择',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (Agency::create($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function edit(Agency $agency)
{
$salesmans = User::where('is_salesman', 1)->get();
return view('Admin::agency.edit', compact('agency', 'salesmans'));
}
public function update(Request $request, Agency $agency)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:50',
'status' => 'required',
], [
'name.required' => '名称必须填写',
'name.min' => '名称最少为:min字符',
'name.max' => '名称最多为:max字符',
'status.required' => '状态必须选择',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($agency->update($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
//设置管理人
public function user(Request $request, Agency $agency)
{
return view('Admin::agency.user', compact('agency'));
}
public function douser(Request $request, Agency $agency)
{
$validator = Validator::make($request->all(), [
'mobile' => 'required|exists:users',
'user_id' => 'required|unique:agencies,user_id',
], [
'mobile.required' => '请输入手机号',
'mobile.exists' => '手机号不存在',
'user_id.required' => '请点击校验按钮',
'user_id.unique' => '此人已经是代理了',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($agency->update(['user_id' => $request->user_id])) {
$agency->user->identityUpdate(2, 'AgencyUp');
return $this->success('', 'close');
} else {
return $this->error('');
}
}
public function show()
{
#Todo..
}
//删除
public function delete(Agency $agency)
{
if ($agency->delete()) {
return $this->success('删除成功');
} else {
return $this->error('删除成功');
}
}
public function checkuser(Request $request)
{
$validator = Validator::make($request->all(), [
'mobile' => ['required', 'exists:users', new Checkmobile],
], [
'mobile.required' => '手机号必须填写',
'mobile.exists' => '手机号不存在',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
$user = User::where('mobile', $request->mobile)->first();
$agency = Agency::where('user_id', $user->id)->first();
if ($agency) {
return $this->error('此人已经是代理了');
}
return $this->success(['user_id' => $user->id, 'nickname' => $user->info->nickname]);
}
}

View File

@@ -0,0 +1,182 @@
<?php
namespace App\Admin\Controllers;
use Illuminate\Http\Request;
use RuLong\Area\Models\OpenArea;
use Validator;
class AreaController extends Controller
{
public function index(Request $request)
{
$info = $request->info;
$type = $request->type;
$status = $request->status;
$psn = $request->psn;
$numPerPage = $request->numPerPage ?: 30;
$areas = OpenArea::when($info, function ($query) use ($info) {
$query->where('info', 'like', "%{$info}%");
})->when($type, function ($query) use ($type) {
$query->where('type', $type);
})->when(is_numeric($status), function ($query) use ($status) {
$query->where('status', $status);
})->when($psn, function ($query) use ($psn) {
$query->where('psn', $psn);
})->orderBy('sn', 'asc')->whereNotNull('psn')->paginate($numPerPage);
$list = OpenArea::treeShow();
return view('Admin::areas.index', compact('areas', 'list'));
}
public function create(Request $request)
{
$list = OpenArea::treeShow();
return view('Admin::areas.create', compact('list'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:50',
'psn' => 'required',
], [
'name.required' => '名称必须填写',
'name.min' => '名称最少为:min字符',
'name.max' => '名称最多为:max字符',
'psn.required' => '所属必须选择',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
$name = $request->name;
$psn = $request->psn;
$status = $request->status;
$parent = OpenArea::where('sn', $request->psn)->first();
$last = OpenArea::where('psn', $parent->sn)->orderBy('sn', 'desc')->first();
if ($last) {
$sn = $last->sn + 1;
} else {
$sn = $parent->sn + 1;
}
$data = [
'sn' => $sn,
'psn' => $parent->sn,
'province' => $parent->province,
'city' => $parent->city,
'area' => $name,
'name' => $name,
'shortname' => $request->name,
'info' => $parent->info . ',' . $name,
'shortinfo' => $parent->shortinfo . ',' . $name,
'type' => '县级',
'depth' => 3,
'zone' => '',
'zip' => '',
'cnname' => '',
'enname' => '',
'name_first_char' => '',
'center' => '',
'lng' => '',
'lat' => '',
'status' => $status,
];
if (OpenArea::create($data)) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function edit(OpenArea $area)
{
$list = OpenArea::treeShow();
return view('Admin::areas.edit', compact('area', 'list'));
}
public function update(Request $request, OpenArea $area)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:50',
'psn' => 'required',
], [
'name.required' => '名称必须填写',
'name.min' => '名称最少为:min字符',
'name.max' => '名称最多为:max字符',
'psn.required' => '所属必须选择',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
$name = $request->name;
$psn = $request->psn;
$status = $request->status;
$parent = OpenArea::where('sn', $request->psn)->first();
$data = [
'area' => $name,
'name' => $name,
'shortname' => $name,
'info' => $parent->info . ',' . $name,
'shortinfo' => $parent->shortinfo . ',' . $name,
'status' => $status,
];
if ($area->update($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function open(Request $request, OpenArea $area)
{
$status = $request->status;
$info = OpenArea::when($area, function ($query) use ($area) {
switch ($area->depth) {
case 1:
$query->where('province', $area->name);
break;
case 2:
$query->where('city', $area->name);
break;
case 3:
$query->where('area', $area->name);
break;
}
})->update(['status' => $status]);
if ($info) {
return $this->success('设置成功');
} else {
return $this->error('设置失败');
}
}
public function hot(Request $request, OpenArea $area)
{
if ($area->update($request->all())) {
return $this->success('设置成功');
} else {
return $this->error('设置失败');
}
}
}

View File

@@ -0,0 +1,117 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Article;
use Illuminate\Http\Request;
use Validator;
class ArticleController extends Controller
{
public function notices(Request $request)
{
$title = $request->title;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$type = 'notices';
$articles = Article::where('type', $type)
->when($title, function ($query) use ($title) {
$query->where('title', 'like', "%{$title}%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->paginate($numPerPage);
return view('Admin::articles.index', compact('articles', 'type'));
}
public function news(Request $request)
{
$title = $request->title;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$type = 'news';
$articles = Article::where('type', $type)
->when($title, function ($query) use ($title) {
$query->where('title', 'like', "%{$title}%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->paginate($numPerPage);
return view('Admin::articles.index', compact('articles', 'type'));
}
public function create(Request $request)
{
return view('Admin::articles.create');
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|max:100',
'description' => 'required|max:200',
'content' => 'required',
'storage_id' => 'required',
], [
'title.required' => '名称必须填写',
'title.max' => '名称长度应在:max以内',
'description.required' => '简介必须填写',
'content.required' => '内容必须填写',
'storage_id.required' => '标题图必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (Article::create($request->all())) {
return $this->success('新增文章成功', 'close');
} else {
return $this->error();
}
}
public function edit(Article $article)
{
return view('Admin::articles.edit', compact('article'));
}
public function update(Request $request, Article $article)
{
$validator = Validator::make($request->all(), [
'title' => 'required|max:100',
'description' => 'required|max:200',
'content' => 'required',
'storage_id' => 'required',
], [
'title.required' => '名称必须填写',
'title.max' => '名称长度应在:max以内',
'description.required' => '简介必须填写',
'content.required' => '内容必须填写',
'storage_id.required' => '标题图必须上传',
]);
$data = $request->all();
$article->update($data);
return $this->success('', 'close');
}
public function destroy(Article $article)
{
if ($article->delete()) {
return $this->success();
} else {
return $this->error();
}
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace App\Admin\Controllers;
class BonusController extends Controller
{
public function index()
{
}
}

View File

@@ -0,0 +1,103 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Category;
use Illuminate\Http\Request;
use Validator;
class CategoryController extends Controller
{
public function index(Request $request)
{
$title = $request->title;
$parent_id = $request->get('parent_id', 0) ?: 0;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$categories = Category::where('parent_id', $parent_id)
->when($title, function ($query) use ($title) {
$query->where('title', 'like', "%{$title}%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->paginate($numPerPage);
$categoryTree = Category::with(['children'])->where('parent_id', 0)->orderBy('sort', 'asc')->get();
return view('Admin::categories.index', compact('categoryTree', 'categories'));
}
public function create()
{
$topCates = Category::treeShow();
return view('Admin::categories.create', compact('topCates'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|max:16',
'sort' => 'required|integer',
], [
'title.required' => '分类名称必须填写',
'title.max' => '分类名称长度应在:max以内',
'sort.required' => '分类排序必须填写',
'sort.integer' => '分类排序只能是数字',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (Category::create($request->all())) {
return $this->success('新增分类成功', 'close');
} else {
return $this->error();
}
}
public function edit(Category $category)
{
$topCates = Category::treeShow($category->id);
return view('Admin::categories.edit', compact('topCates', 'category'));
}
public function update(Request $request, Category $category)
{
$validator = Validator::make($request->all(), [
'title' => 'required|max:16',
'sort' => 'required|integer',
], [
'title.required' => '分类名称必须填写',
'title.max' => '分类名称长度应在:max以内',
'sort.required' => '分类排序必须填写',
'sort.integer' => '分类排序只能是数字',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($category->update($request->all())) {
return $this->success('编辑分类成功', 'close');
} else {
return $this->error();
}
}
public function destroy(Category $category)
{
$exclude_ids = [1, 2];
if (in_array($category->id, $exclude_ids)) {
return $this->error('此分类不能删除');
}
if ($category->delete()) {
return $this->success();
} else {
return $this->error();
}
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Admin\Controllers;
use RuLong\Panel\Controllers\Controller as BaseController;
class Controller extends BaseController
{
}

View File

@@ -0,0 +1,145 @@
<?php
namespace App\Admin\Controllers;
use Admin;
use App\Models\Seller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use RuLong\Coupon\Models\CouponInfo;
use Validator;
class CouponController extends Controller
{
public function index(Request $request)
{
$title = $request->title;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$coupons = CouponInfo::where('seller_id', Admin::user()->seller_id)
->when($title, function ($query) use ($title) {
$query->where('title', 'like', "%{$title}%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->orderBy('created_at', 'desc')
->paginate($numPerPage);
return view('Admin::coupon.index', compact('coupons'));
}
public function create()
{
$sellers = Seller::where('status', 1)->get();
return view('Admin::coupon.create', compact('sellers'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|min:2|max:50',
'remark' => 'required|min:4',
'bouns' => 'required',
], [
'title.required' => '标题必须填写',
'title.min' => '标题最少为:min字符',
'title.max' => '标题最多为:max字符',
'remark.required' => '券码描述必须填写',
'remark.min' => '券码描述最少:min个字',
'bouns.required' => '享用额度必须填写',
'bouns.number' => '享用额度必须是数字',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
try {
DB::transaction(function () use ($request) {
$status = 0;
if (Admin::user()->seller_id == 1) {
$status = 1;
}
$info = CouponInfo::create($request->all());
});
return $this->success('操作成功', 'close');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function edit($id)
{
$info = CouponInfo::find($id);
return view('Admin::coupon.edit', compact('info'));
}
public function update(Request $request, $id)
{
$info = CouponInfo::find($id);
$validator = Validator::make($request->all(), [
'title' => 'required|min:2|max:50',
'remark' => 'required|min:4',
'bouns' => 'required',
], [
'title.required' => '标题必须填写',
'title.min' => '标题最少为:min字符',
'title.max' => '标题最多为:max字符',
'remark.required' => '券码描述必须填写',
'remark.min' => '券码描述最少:min个字',
'bouns.required' => '享用额度必须填写',
'bouns.number' => '享用额度必须是数字',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
try {
DB::transaction(function () use ($request, $info) {
$info = $info->update($request->all());
});
return $this->success('操作成功', 'close');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function destroy($id)
{
$info = CouponInfo::find($id);
try {
$info->status = 0;
$info->save();
return $this->success('操作成功');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
/**
* 彻底删除单条目
* @Author:<C.Jason>
* @Date:2018-11-02T13:43:36+0800
* @param [type] $user [description]
* @return [type] [description]
*/
public function delete(CouponInfo $info)
{
try {
DB::transaction(function () use ($info) {
$info->delete();
});
return $this->success('操作成功');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,589 @@
<?php
namespace App\Admin\Controllers;
use Admin;
use App\Models\Cart;
use App\Models\Category;
use App\Models\Goods;
use App\Models\GoodsParams;
use App\Models\Seller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Validator;
class GoodsController extends Controller
{
public function all(Request $request)
{
$title = $request->title;
$seller = $request->seller;
$position = $request->position;
$is_gift = $request->is_gift;
$category_id = $request->category_id;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$goods = Goods::where('status', '>=', 0)
->when($title, function ($query) use ($title) {
$query->where('title', 'like', "%{$title}%");
})
->when($seller, function ($query) use ($seller) {
$query->whereHas('seller', function ($query) use ($seller) {
$query->where('name', 'like', "%{$seller}%");
});
})
->when($category_id, function ($query) use ($category_id) {
$category_ids = Category::where('id', $category_id)->orWhere('parent_id', $category_id)->pluck('id');
return $query->whereIn('category_id', $category_ids);
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->when($is_gift, function ($query) use ($is_gift) {
switch ($is_gift) {
case 'is_seller_gift':
$query->where('is_seller_gift', 1);
break;
case 'is_mall_gift':
$query->where('is_mall_gift', 1);
break;
}
})
->when($position, function ($query) use ($position) {
switch ($position) {
case 'is_recommend':
$query->where('is_recommend', 1);
break;
case 'is_hot_sell':
$query->where('is_hot_sell', 1);
break;
case 'is_hot_changed':
$query->where('is_hot_changed', 1);
break;
case 'is_seller_package':
$query->where('is_seller_package', 1);
break;
}
})
->with(['category', 'seller'])
->orderBy('seller_id', 'desc')
->orderBy('status', 'desc')
->orderBy('created_at', 'desc')
->paginate($numPerPage);
$categoies = Category::treeSelect();
return view('Admin::goods.all', compact('goods', 'categoies'));
}
public function index(Request $request)
{
$title = $request->title;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$admin = Admin::user();
$goods = Goods::when(Admin::user()->seller_id > 1, function ($query) use ($admin) {
$query->where('seller_id', $admin->seller_id);
})
->when($title, function ($query) use ($title) {
$query->where('title', 'like', "%{$title}%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->with(['category', 'seller'])
->orderBy('status', 'desc')
->orderBy('created_at', 'desc')
->paginate($numPerPage);
return view('Admin::goods.index', compact('goods'));
}
public function create()
{
$sellers = Seller::where('status', 1)->get();
$categoies = Category::treeSelect(91);
return view('Admin::goods.create', compact('categoies', 'sellers'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|min:2|max:50',
'category_id' => 'required',
'description' => 'required|min:4',
'content' => 'required|min:4',
'storage_id' => 'required',
], [
'title.required' => '标题必须填写',
'title.min' => '标题最少为:min字符',
'title.max' => '标题最多为:max字符',
'category_id.required' => '分类必须选择',
'description.required' => '简介必须填写',
'description.min' => '简介最少:min个字',
'content.required' => '内容必须填写',
'content.min' => '内容最少:min个字',
'storage_id.required' => '标题图必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (!isset($request->params)) {
return $this->error('商品规格必须填写');
}
foreach ($request->params as $p) {
$validator = Validator::make($p, [
'original' => 'required|numeric|min:0.001',
'price' => 'required|numeric|min:0.001',
'stock' => 'required|integer|min:1',
'heavy' => 'required|numeric|min:0.001',
], [
'original.required' => '原价必须填写',
'original.numeric' => '原价必须为数字',
'original.min' => '原价最小值:min',
'price.required' => '售价必须填写',
'price.numeric' => '售价必须为数字',
'price.min' => '售价最小值:min',
'stock.required' => '库存必须填写',
'stock.integer' => '库存必须为整数',
'stock.min' => '库存最小值:min',
'heavy.required' => '重量必须填写',
'heavy.numeric' => '重量必须为数字',
'heavy.min' => '重量最小值:min',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
}
try {
DB::transaction(function () use ($request) {
$status = 1;
if (Admin::user()->seller_id == 1) {
$status = 1;
}
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
$goods = Goods::create([
'title' => $request->title,
'category_id' => $request->category_id,
'description' => $request->description,
'content' => $request->content,
'storage_id' => $request->storage_id,
'seller_id' => $seller_id,
'status' => $status,
]);
$goods->params()->createMany($request->params);
});
return $this->success('操作成功', 'close');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function edit(Goods $good)
{
$categoies = Category::treeSelect(91);
$sellers = Seller::where('status', 1)->get();
return view('Admin::goods.edit', compact('categoies', 'good', 'sellers'));
}
public function magageedit(Goods $good)
{
$categoies = Category::treeSelect();
return view('Admin::goods.magageedit', compact('categoies', 'good'));
}
public function update(Request $request, Goods $good)
{
$validator = Validator::make($request->all(), [
'title' => 'required|min:2|max:50',
'category_id' => 'required',
'description' => 'required|min:4',
'content' => 'required|min:4',
'storage_id' => 'required',
], [
'title.required' => '标题必须填写',
'title.min' => '标题最少为:min字符',
'title.max' => '标题最多为:max字符',
'category_id.required' => '分类必须选择',
'description.required' => '简介必须填写',
'description.min' => '简介最少:min个字',
'content.required' => '内容必须填写',
'content.min' => '内容最少:min个字',
'storage_id.required' => '标题图必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (!isset($request->params)) {
return $this->error('商品规格必须填写');
}
foreach ($request->params as $p) {
$validator = Validator::make($p, [
'original' => 'required|numeric|min:0.001',
'price' => 'required|numeric|min:0.001',
// 'score' => 'required|numeric|min:0',
'stock' => 'required|integer|min:1',
'heavy' => 'required|numeric|min:0.001',
], [
'original.required' => '原价必须填写',
'original.numeric' => '原价必须为数字',
'original.min' => '原价最小值:min',
'price.required' => '售价必须填写',
'price.numeric' => '售价必须为数字',
'price.min' => '售价最小值:min',
'stock.required' => '库存必须填写',
'stock.integer' => '库存必须为整数',
'stock.min' => '库存最小值:min',
'heavy.required' => '重量必须填写',
'heavy.numeric' => '重量必须为数字',
'heavy.min' => '重量最小值:min',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
}
try {
DB::transaction(function () use ($good, $request) {
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
$good->update([
'title' => $request->title,
'category_id' => $request->category_id,
'description' => $request->description,
'content' => $request->content,
'seller_id' => $seller_id,
'storage_id' => $request->storage_id,
]);
$ids = [];
foreach ($request->params as $param) {
if (isset($param['id'])) {
$params = GoodsParams::find($param['id']);
$params->update($param);
array_push($ids, $param['id']);
} else {
$params = $good->params()->create($param);
array_push($ids, $params['id']);
}
}
$good->params()->where('status', 1)->whereNotIn('id', $ids)->update(['status' => 0, 'stock' => 0]);
});
return $this->success('操作成功');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function destroy(Goods $good)
{
// if ($good->seller_id != Admin::user()->seller_id) {
// return $this->error('非法操作');
// }
try {
DB::transaction(function () use ($good) {
Cart::where('goods_id', $good->id)->delete();
// $good->params()->update(['status' => 0, 'stock' => 0]);
$good->status = 0;
$good->save();
});
return $this->success('操作成功');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function recycle(Request $request)
{
$title = $request->title;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$goods = Goods::where('seller_id', Admin::user()->seller_id)->onlyTrashed()
->when($title, function ($query) use ($title) {
$query->where('title', 'like', "%{$title}%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->with(['category', 'seller'])
->paginate($numPerPage);
return view('Admin::goods.recycle', compact('goods'));
}
/**
* 清空回收站
* 未考虑删除关联数据的问题
* @Author:<C.Jason>
* @Date:2018-11-02T13:41:40+0800
* @return [type] [description]
*/
public function clean()
{
if (Goods::where('seller_id', Admin::user()->seller_id)->onlyTrashed()->forceDelete()) {
return $this->success();
} else {
return $this->error();
}
}
/**
* 还原
* @Author:<C.Jason>
* @Date:2018-11-02T13:43:47+0800
* @param [type] $user [description]
* @return [type] [description]
*/
public function resume($good)
{
if (Goods::where('seller_id', Admin::user()->seller_id)->withTrashed()->where('id', $good)->restore()) {
return $this->success();
} else {
return $this->error();
}
}
/**
* 彻底删除单条目
* @Author:<C.Jason>
* @Date:2018-11-02T13:43:36+0800
* @param [type] $user [description]
* @return [type] [description]
*/
public function delete(Goods $good)
{
try {
DB::transaction(function () use ($good) {
$good->params()->delete();
$good->delete();
});
return $this->success('操作成功');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function putOn(Request $request, Goods $good)
{
if ($request->isMethod('PUT')) {
$validator = Validator::make($request->all(), [
'title' => 'required|min:2|max:50',
'category_id' => 'required',
'description' => 'required|min:4',
'content' => 'required|min:4',
'storage_id' => 'required',
], [
'title.required' => '标题必须填写',
'title.min' => '标题最少为:min字符',
'title.max' => '标题最多为:max字符',
'category_id.required' => '分类必须选择',
'description.required' => '简介必须填写',
'description.min' => '简介最少:min个字',
'content.required' => '内容必须填写',
'content.min' => '内容最少:min个字',
'storage_id.required' => '标题图必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (!isset($request->params)) {
return $this->error('商品规格必须填写');
}
foreach ($request->params as $p) {
$validator = Validator::make($p, [
'original' => 'required|numeric|min:0.001',
'price' => 'required|numeric|min:0.001',
'stock' => 'required|integer|min:1',
'heavy' => 'required|numeric|min:0.001',
], [
'original.required' => '原价必须填写',
'original.numeric' => '原价必须为数字',
'original.min' => '原价最小值:min',
'price.required' => '售价必须填写',
'price.numeric' => '售价必须为数字',
'price.min' => '售价最小值:min',
'stock.required' => '库存必须填写',
'stock.integer' => '库存必须为整数',
'stock.min' => '库存最小值:min',
'heavy.required' => '重量必须填写',
'heavy.numeric' => '重量必须为数字',
'heavy.min' => '重量最小值:min',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($p['score'] > $p['price']) {
return $this->error('可使用积分数量不能大于商品价格');
}
}
try {
DB::transaction(function () use ($good, $request) {
$good->update([
'title' => $request->title,
'category_id' => $request->category_id,
'description' => $request->description,
'content' => $request->content,
'storage_id' => $request->storage_id,
'status' => 1,
]);
$ids = [];
foreach ($request->params as $param) {
if (isset($param['id'])) {
$params = GoodsParams::find($param['id']);
$params->update($param);
array_push($ids, $param['id']);
} else {
$params = $good->params()->create($param);
array_push($ids, $params['id']);
}
}
});
return $this->success('操作成功');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
} else {
$categoies = Category::treeSelect();
return view('Admin::goods.putOn', compact('categoies', 'good'));
}
}
public function setting(Request $request, Goods $good)
{
if ($request->isMethod('PUT')) {
try {
$good->update([
'is_recommend' => $request->is_recommend,
'is_hot_sell' => $request->is_hot_sell,
'is_hot_changed' => $request->is_hot_changed,
'is_seller_package' => $request->is_seller_package,
'banner_id' => $request->is_seller_package == 1 && $request->banner_id ? $request->banner_id : 0,
]);
return $this->success('设置成功', 'close');
} catch (\Exception $e) {
return $this->error('设置失败' . $e->getmessage());
}
} else {
return view('Admin::goods.setting', compact('good'));
}
}
public function setgift(Goods $good)
{
try {
DB::transaction(function () use ($good) {
$good->is_seller_gift = 1;
$good->save();
});
return $this->success('设置成功');
} catch (\Exception $e) {
return $this->error('设置失败' . $e->getmessage());
}
}
public function cancelgift(Goods $good)
{
try {
DB::transaction(function () use ($good) {
$good->is_seller_gift = 0;
$good->save();
});
return $this->success('设置成功');
} catch (\Exception $e) {
return $this->error('设置失败' . $e->getmessage());
}
}
public function setlottery(Goods $good)
{
try {
DB::transaction(function () use ($good) {
$good->is_lottery_gift = 1;
$good->save();
});
return $this->success('设置成功');
} catch (\Exception $e) {
return $this->error('设置失败' . $e->getmessage());
}
}
public function cancellottery(Goods $good)
{
try {
DB::transaction(function () use ($good) {
$good->is_lottery_gift = 0;
$good->save();
});
return $this->success('设置成功');
} catch (\Exception $e) {
return $this->error('设置失败' . $e->getmessage());
}
}
public function setFull(Goods $good)
{
try {
DB::transaction(function () use ($good) {
$good->is_mall_gift = 1;
$good->save();
});
return $this->success('设置成功');
} catch (\Exception $e) {
return $this->error('设置失败' . $e->getmessage());
}
}
public function cancelFull(Goods $good)
{
try {
DB::transaction(function () use ($good) {
$good->is_mall_gift = 0;
$good->save();
});
return $this->success('设置成功');
} catch (\Exception $e) {
return $this->error('设置失败' . $e->getmessage());
}
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace App\Admin\Controllers;
class HomeController extends Controller
{
public function dashboard()
{
return view('Admin::home.dashboard');
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Admin\Controllers;
use App\Helpers\CDKEY;
class JasonController extends Controller
{
public function index()
{
$s = request()->get('d');
dump($s);
dump(CDKEY::parse($s));
($g = CDKEY::generator());
echo $g['qrcode'];
return [123];
}
}

View File

@@ -0,0 +1,146 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Category;
use App\Models\Seller;
use App\Models\SellerLesson;
use App\Models\SellerLessonLog;
use Illuminate\Http\Request;
use Validator;
class LessonController extends Controller
{
public function index(Request $request)
{
if (\Admin::id() != 1 && \Admin::user()->seller->type != 'organ') {
return $this->error('您没有权限');
}
$title = $request->title;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$lists = SellerLesson::with('organ')
->withCount('logs')
->when($title, function ($query) use ($title) {
$query->where('title', 'like', "%" . $title . "%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->paginate($numPerPage);
return view('Admin::lesson.index', compact('lists'));
}
public function create()
{
$organs = Seller::where('status', 1)->where('type', 'organ')->get();
$categoies = Category::treeSelect(1);
return view('Admin::lesson.create', compact('organs', 'categoies'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|min:2|max:50',
'chapter' => 'required',
'price' => 'required',
'crowd' => 'required',
'crowd_age' => 'required',
'maximum' => 'required',
'seller_id' => 'required',
'description' => 'required',
'storage_id' => 'required',
'content' => 'required',
], [
'name.required' => '课程名称必须填写',
'name.min' => '课程名称最少为:min字符',
'name.max' => '课程名称最多为:max字符',
'chapter.required' => '章节数必须填写',
'price.required' => '价格必须填写',
'crowd.required' => '适合人群必须填写',
'crowd_age.required' => '适合年龄必须填写',
'maximum.required' => '报名人数必须填写',
'seller_id.required' => '机构必须选择',
'description.required' => '简介必须填写',
'storage_id.required' => '图片必须上传',
'content.required' => '详情必须填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (SellerLesson::create($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function edit(SellerLesson $lesson)
{
$organs = Seller::where('status', 1)->where('type', 'organ')->get();
$categoies = Category::treeSelect(1);
return view('Admin::lesson.edit', compact('lesson', 'organs', 'categoies'));
}
public function update(Request $request, SellerLesson $lesson)
{
$validator = Validator::make($request->all(), [
'title' => 'required|min:2|max:50',
'chapter' => 'required',
'price' => 'required',
'crowd' => 'required',
'crowd_age' => 'required',
'maximum' => 'required',
'seller_id' => 'required',
'description' => 'required',
'storage_id' => 'required',
'content' => 'required',
], [
'name.required' => '课程名称必须填写',
'name.min' => '课程名称最少为:min字符',
'name.max' => '课程名称最多为:max字符',
'chapter.required' => '章节数必须填写',
'price.required' => '价格必须填写',
'crowd.required' => '适合人群必须填写',
'crowd_age.required' => '适合年龄必须填写',
'maximum.required' => '报名人数必须填写',
'seller_id.required' => '机构必须选择',
'description.required' => '简介必须填写',
'storage_id.required' => '图片必须上传',
'content.required' => '详情必须填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($lesson->update($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function delete(SellerLesson $lesson)
{
if ($lesson->delete()) {
return $this->success();
} else {
return $this->error();
}
}
public function logs($lesson)
{
$logs = SellerLessonLog::where('lesson_id', $lesson)->paginate();
return view('Admin::lesson.logs', compact('logs'));
}
}

View File

@@ -0,0 +1,264 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Activity;
use App\Models\GoodsParams;
use App\Models\Lottery;
use App\Models\LotteryGift;
use App\Models\LotteryLog;
use Illuminate\Http\Request;
use RuLong\Coupon\Models\CouponInfo;
use Validator;
class LotteryController extends Controller
{
public function index(Request $request)
{
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$lists = Lottery::withCount('logs')
->withCount('gifts')
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->paginate($numPerPage);
return view('Admin::lottery.index', compact('lists'));
}
public function create()
{
return view('Admin::lottery.create');
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|min:2|max:50',
'status' => 'required',
'start_at' => 'required',
'end_at' => 'required',
], [
'title.required' => '名称必须填写',
'title.min' => '名称最少为:min字符',
'title.max' => '名称最多为:max字符',
'status.required' => '状态必须选择',
'start_at.required' => '开始时间填写',
'end_at.required' => '结束时间填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (Lottery::create($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function edit(Lottery $lottery)
{
return view('Admin::lottery.edit', compact('lottery'));
}
public function update(Request $request, Lottery $lottery)
{
$validator = Validator::make($request->all(), [
'title' => 'required|min:2|max:50',
'status' => 'required',
'start_at' => 'required',
'end_at' => 'required',
], [
'title.required' => '名称必须填写',
'title.min' => '名称最少为:min字符',
'title.max' => '名称最多为:max字符',
'status.required' => '状态必须选择',
'start_at.required' => '开始时间填写',
'end_at.required' => '结束时间填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($lottery->update($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function logs(Lottery $lottery)
{
$logs = LotteryLog::where('lottery_id', $lottery->id)->paginate();
return view('Admin::lottery.logs', compact('logs'));
}
public function gifts(Request $request, Lottery $lottery)
{
$lists = LotteryGift::where('lottery_id', $lottery->id)->orderBy('level', 'asc')->paginate();
return view('Admin::lottery.gifts', compact('lottery', 'lists'));
}
//添加奖品
public function addgifts(Request $request, Lottery $lottery)
{
$item_type = LotteryGift::$class[$request->type] ?? 'App\Models\GoodsParams';
if ($request->isMethod('POST')) {
$validator = Validator::make($request->all(), [
'number' => 'required',
'level' => 'required',
'chance' => 'required',
], [
'number.required' => '请输入商品数量',
'level.required' => '请选择奖项',
'chance.required' => '请填写概率',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($request->type && empty($request->item_id)) {
return $this->error('请选择商品');
}
if (!$request->type) {
$request->item_id = '';
$request->item_type = '';
}
$data = [
'level' => $request->level,
'lottery_id' => $request->lottery_id,
'chance' => $request->chance,
'item_id' => $request->item_id,
'item_type' => $request->item_type,
'type' => $request->type,
'number' => $request->number,
'site' => LotteryGift::$chances[$request->level],
];
if (LotteryGift::create($data)) {
return $this->success('', 'close');
} else {
return $this->error();
}
} else {
$hasLevels = LotteryGift::where('lottery_id', $lottery->id)->pluck('level')->toArray();
$params_id = LotteryGift::where('lottery_id', $lottery->id)
->where('type', 1)
->where('item_type', $item_type)
->pluck('item_id')
->toArray();
if ($request->type == 'activity') {
$params = Activity::where('status', 1)
->whereNotIn('id', $params_id)
->get();
} elseif ($request->type == 'goods') {
$params = GoodsParams::with(['goods'])
->whereHas('goods', function ($query) {
$query->where('status', 1)->where('is_lottery_gift', 1);
})
->whereNotIn('id', $params_id)
->get();
} elseif ($request->type == 'coupon') {
$params = CouponInfo::where('status', 1)->where('type', 'lottery')
->whereNotIn('id', $params_id)
->get();
}
$levels = LotteryGift::$levels;
$item_type = LotteryGift::$class[$request->type] ?? 'App\Models\GoodsParams';
return view('Admin::lottery.addgifts', compact('lottery', 'params', 'levels', 'hasLevels', 'item_type'));
}
}
//编辑奖品
public function editgifts(Request $request, LotteryGift $gift)
{
if ($request->isMethod('PUT')) {
$validator = Validator::make($request->all(), [
'number' => 'required',
'level' => 'required',
'chance' => 'required',
'item_id' => 'required',
], [
'number.required' => '请输入商品数量',
'level.required' => '请选择奖项',
'chance.required' => '请填写概率',
'item_id.required' => '请选择商品',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
$data = [
'level' => $request->level,
'chance' => $request->chance,
'item_id' => $request->item_id,
'type' => $request->type,
'number' => $request->number,
'site' => LotteryGift::$chances[$request->level],
];
if ($gift->update($data)) {
return $this->success('', 'close');
} else {
return $this->error();
}
} else {
$hasLevels = LotteryGift::where('lottery_id', $gift->lottery_id)->pluck('level')->toArray();
$params_id = LotteryGift::where('lottery_id', $gift->lottery_id)
->where('type', 1)
->where('item_type', $gift->item_type)
->where('id', '<>', $gift->id)
->pluck('item_id')
->toArray();
if ($gift->item_type == 'App\Models\Activity') {
$params = Activity::where('status', 1)
->whereNotIn('id', $params_id)
->get();
} elseif ($gift->item_type == 'App\Models\GoodsParams') {
$params = GoodsParams::with(['goods'])
->whereHas('goods', function ($query) {
$query->where('status', 1)->where('is_lottery_gift', 1);
})
->whereNotIn('id', $params_id)
->get();
} elseif ($gift->item_type == 'RuLong\Coupon\Models\CouponInfo') {
$params = CouponInfo::where('status', 1)->where('type', 'lottery')
->whereNotIn('id', $params_id)
->get();
} else {
$params = collect();
}
$levels = LotteryGift::$levels;
return view('Admin::lottery.editgifts', compact('gift', 'params', 'levels', 'hasLevels'));
}
}
//删除奖品
public function delgifts(Request $request, LotteryGift $gift)
{
if ($gift->delete()) {
return $this->success();
} else {
return $this->error();
}
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace App\Admin\Controllers;
use Illuminate\Http\Request;
use Illuminate\Notifications\DatabaseNotification;
class NotificationController extends Controller
{
public function index(Request $request)
{
$nickname = $request->nickname;
$start = $request->start;
$end = $request->end;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$notifications = DatabaseNotification::when($start && $end, function ($query) use ($start,$end) {
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})->when($start && !$end, function ($query) use ($start) {
return $query->where('created_at', '>=', $start);
})->when(!$start && $end, function ($query) use ($end) {
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->orderBy('created_at', 'desc')->paginate($numPerPage);
return view('Admin::notifications.index', compact('notifications'));
}
public function destroy(Request $request, $notification)
{
if ($notification == 'batch') {
$result = DatabaseNotification::whereIn('id', $request->ids)->delete();
} else {
$result = DatabaseNotification::where('id', $notification)->delete();
}
if ($result) {
return $this->success();
} else {
return $this->error();
}
}
}

View File

@@ -0,0 +1,108 @@
<?php
namespace App\Admin\Controllers;
use Admin;
use Illuminate\Http\Request;
use RuLong\Order\Models\Order;
use App\Models\GoodsParams;
use App\Models\Goods;
class OrderAllController extends Controller
{
public function index(Request $request)
{
$orderid = $request->orderid;
$mobile = $request->mobile;
$nickname = $request->nickname;
$seller = $request->seller;
$state = $request->state;
$start = $request->start;
$end = $request->end;
$title = $request->title;
$item_type = $request->item_type;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$orders = Order::when($seller, function ($query) use ($seller) {
$query->whereHas('seller', function ($query) use ($seller) {
$query->where('name', 'like', "%{$seller}%");
});
})
->when($orderid, function ($query) use ($orderid) {
$query->where('orderid', 'like', "%{$orderid}%");
})
->when($mobile, function ($query) use ($mobile) {
$query->whereHas('user', function ($query) use ($mobile) {
$query->where('mobile', 'like', "%{$mobile}%");
});
})
->when($nickname, function ($query) use ($nickname) {
$query->whereHas('user', function ($query) use ($nickname) {
return $query->whereHas('info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
});
})
->when($title, function ($query) use ($title) {
$goods_ids = Goods::where('title', 'like',"%{$title}%")->pluck('id');
$params_ids = GoodsParams::whereIn('goods_id',$goods_ids)->pluck('id');
$query->whereHas('details', function ($query) use ($params_ids) {
return $query->whereIn('item_id',$params_ids);
});
})
->when($item_type, function ($query) use($item_type){
return $query->where('item_type',$item_type);
})
->when($state == '', function ($query){
return $query->where('state', '<>',Order::ORDER_CLOSED);
})
->when($state, function ($query) use ($state) {
switch ($state) {
case 'UNPAY':
return $query->where('state', Order::ORDER_UNPAY);
break;
case 'PAID':
return $query->whereIn('state', [Order::ORDER_PAID, Order::ORDER_DELIVER]);
break;
case 'DELIVERED':
return $query->where('state', Order::ORDER_DELIVERED);
break;
case 'SIGNED':
return $query->where('state', Order::ORDER_SIGNED);
break;
case 'CLOSED':
return $query->where('state', Order::ORDER_CLOSED);
break;
case 'CANCEL':
return $query->where('state', Order::ORDER_CANCEL);
break;
case 'COMPLETED':
return $query->where('state', Order::ORDER_COMPLETED);
break;
default:
break;
}
})
->when($start && $end, function ($query) use ($start, $end) {
$query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})
->when($start && !$end, function ($query) use ($start) {
$query->where('created_at', '>=', $start);
})
->when((!$start && $end), function ($query) use ($end) {
$query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->with(['seller', 'user.info'])
->orderBy('created_at', 'desc')
->paginate($numPerPage);
return view('Admin::orders.allSellerOrder', compact('orders'));
}
}

View File

@@ -0,0 +1,372 @@
<?php
namespace App\Admin\Controllers;
use Admin;
use App\Models\Goods;
use App\Models\GoodsParams;
use Illuminate\Http\Request;
use Logistic;
use RuLong\Order\Models\Order;
class OrderController extends Controller
{
public function index(Request $request)
{
$orderid = $request->orderid;
$mobile = $request->mobile;
$nickname = $request->nickname;
$state = $request->state;
$start = $request->start;
$end = $request->end;
$title = $request->title;
$item_type = $request->item_type;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$admin = Admin::user();
$orders = Order::when($admin->id > 1, function ($query) use ($admin) {
$query->where('seller_id', $admin->seller_id);
})
->when($orderid, function ($query) use ($orderid) {
$query->where('orderid', 'like', "%{$orderid}%");
})
->when($mobile, function ($query) use ($mobile) {
$query->whereHas('user', function ($query) use ($mobile) {
$query->where('mobile', 'like', "%{$mobile}%");
});
})
->when($nickname, function ($query) use ($nickname) {
$query->whereHas('user', function ($query) use ($nickname) {
return $query->whereHas('info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
});
})
->when($title, function ($query) use ($title) {
$goods_ids = Goods::where('title', 'like', "%{$title}%")->pluck('id');
$params_ids = GoodsParams::whereIn('goods_id', $goods_ids)->pluck('id');
$query->whereHas('details', function ($query) use ($params_ids) {
return $query->whereIn('item_id', $params_ids);
});
})
->when($item_type, function ($query) use ($item_type) {
return $query->where('item_type', $item_type);
})
->when($state == '', function ($query) {
return $query->where('state', '<>', Order::ORDER_CLOSED);
})
->when($state, function ($query) use ($state) {
switch ($state) {
case 'UNPAY':
return $query->where('state', Order::ORDER_UNPAY);
break;
case 'PAID':
return $query->whereIn('state', [Order::ORDER_PAID, Order::ORDER_DELIVER]);
break;
case 'DELIVERED':
return $query->where('state', Order::ORDER_DELIVERED);
break;
case 'SIGNED':
return $query->where('state', Order::ORDER_SIGNED);
break;
case 'CLOSED':
return $query->where('state', Order::ORDER_CLOSED);
break;
case 'CANCEL':
return $query->where('state', Order::ORDER_CANCEL);
break;
case 'COMPLETED':
return $query->where('state', Order::ORDER_COMPLETED);
break;
default:
break;
}
})
->when($start && $end, function ($query) use ($start, $end) {
$query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})
->when($start && !$end, function ($query) use ($start) {
$query->where('created_at', '>=', $start);
})
->when((!$start && $end), function ($query) use ($end) {
$query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->with(['seller', 'user.info'])
->orderBy('created_at', 'desc')
->paginate($numPerPage);
return view('Admin::orders.index', compact('orders'));
}
public function unpay(Request $request)
{
$orderid = $request->orderid;
$mobile = $request->mobile;
$nickname = $request->nickname;
$start = $request->start;
$end = $request->end;
$title = $request->title;
$item_type = $request->item_type;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$orders = Order::Unpaid()->where('seller_id', Admin::user()->seller_id)
->when($orderid, function ($query) use ($orderid) {
$query->where('orderid', 'like', "%{$orderid}%");
})
->when($mobile, function ($query) use ($mobile) {
$query->whereHas('user', function ($query) use ($mobile) {
$query->where('mobile', 'like', "%{$mobile}%");
});
})
->when($nickname, function ($query) use ($nickname) {
$query->whereHas('user', function ($query) use ($nickname) {
return $query->whereHas('info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
});
})
->when($title, function ($query) use ($title) {
$goods_ids = Goods::where('title', 'like', "%{$title}%")->pluck('id');
$params_ids = GoodsParams::whereIn('goods_id', $goods_ids)->pluck('id');
$query->whereHas('details', function ($query) use ($params_ids) {
return $query->whereIn('item_id', $params_ids);
});
})
->when($item_type, function ($query) use ($item_type) {
return $query->where('item_type', $item_type);
})
->when($start && $end, function ($query) use ($start, $end) {
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})
->when($start && !$end, function ($query) use ($start) {
return $query->where('created_at', '>=', $start);
})
->when(!$start && $end, function ($query) use ($end) {
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->with(['seller', 'user.info'])
->orderBy('created_at', 'desc')
->paginate($numPerPage);
return view('Admin::orders.index', compact('orders'));
}
public function paid(Request $request)
{
$orderid = $request->orderid;
$mobile = $request->mobile;
$nickname = $request->nickname;
$start = $request->start;
$end = $request->end;
$title = $request->title;
$item_type = $request->item_type;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$orders = Order::UnDeliver()->where('seller_id', Admin::user()->seller_id)
->when($orderid, function ($query) use ($orderid) {
$query->where('orderid', 'like', "%{$orderid}%");
})
->when($mobile, function ($query) use ($mobile) {
$query->whereHas('user', function ($query) use ($mobile) {
$query->where('mobile', 'like', "%{$mobile}%");
});
})
->when($nickname, function ($query) use ($nickname) {
$query->whereHas('user', function ($query) use ($nickname) {
return $query->whereHas('info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
});
})
->when($title, function ($query) use ($title) {
$goods_ids = Goods::where('title', 'like', "%{$title}%")->pluck('id');
$params_ids = GoodsParams::whereIn('goods_id', $goods_ids)->pluck('id');
$query->whereHas('details', function ($query) use ($params_ids) {
return $query->whereIn('item_id', $params_ids);
});
})
->when($item_type, function ($query) use ($item_type) {
return $query->where('item_type', $item_type);
})
->when($start && $end, function ($query) use ($start, $end) {
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})
->when($start && !$end, function ($query) use ($start) {
return $query->where('created_at', '>=', $start);
})
->when(!$start && $end, function ($query) use ($end) {
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->with(['seller', 'user.info'])
->orderBy('created_at', 'desc')
->paginate($numPerPage);
return view('Admin::orders.index', compact('orders'));
}
public function signed(Request $request)
{
$orderid = $request->orderid;
$mobile = $request->mobile;
$nickname = $request->nickname;
$start = $request->start;
$end = $request->end;
$title = $request->title;
$item_type = $request->item_type;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$orders = Order::Signed()->where('seller_id', Admin::user()->seller_id)
->when($orderid, function ($query) use ($orderid) {
$query->where('orderid', 'like', "%{$orderid}%");
})
->when($mobile, function ($query) use ($mobile) {
$query->whereHas('user', function ($query) use ($mobile) {
$query->where('mobile', 'like', "%{$mobile}%");
});
})
->when($nickname, function ($query) use ($nickname) {
$query->whereHas('user', function ($query) use ($nickname) {
return $query->whereHas('info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
});
})
->when($item_type, function ($query) use ($item_type) {
return $query->where('item_type', $item_type);
})
->when($title, function ($query) use ($title) {
$goods_ids = Goods::where('title', 'like', "%{$title}%")->pluck('id');
$params_ids = GoodsParams::whereIn('goods_id', $goods_ids)->pluck('id');
$query->whereHas('details', function ($query) use ($params_ids) {
return $query->whereIn('item_id', $params_ids);
});
})
->when($start && $end, function ($query) use ($start, $end) {
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})
->when($start && !$end, function ($query) use ($start) {
return $query->where('created_at', '>=', $start);
})
->when(!$start && $end, function ($query) use ($end) {
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->with(['seller', 'user.info'])
->orderBy('created_at', 'desc')
->paginate($numPerPage);
return view('Admin::orders.index', compact('orders'));
}
public function show(Order $order)
{
return view('Admin::orders.show', compact('order'));
}
/**
* 订单发货
* @Author:<C.Jason>
* @Date:2018-11-02T14:47:34+0800
* @return [type] [description]
*/
public function deliver(Request $request, Order $order)
{
if ($request->isMethod('PUT')) {
try {
$order->deliver($request->company, $request->number);
return $this->success('发货成功', 'close');
} catch (\Exception $e) {
return $this->error('发货失败' . $e->getmessage());
}
} else {
return view('Admin::orders.deliver', compact('order'));
}
}
public function signin(Order $order)
{
try {
$order->deliver('自提', '自提');
$order->signin();
return $this->success('操作成功');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
/**
* 订单发货
* @Author:<C.Jason>
* @Date:2018-11-02T14:47:34+0800
* @return [type] [description]
*/
public function remark(Request $request, Order $order)
{
if ($request->isMethod('PUT')) {
try {
$order->remark_mgr = $request->remark_mgr;
$order->save();
return $this->success('备注成功', 'close');
} catch (\Exception $e) {
return $this->error('备注失败' . $e->getmessage());
}
} else {
return view('Admin::orders.remark', compact('order'));
}
}
/**
* 取消订单
* @Author:<C.Jason>
* @Date:2018-11-02T14:45:57+0800
* @return [type] [description]
*/
public function destroy()
{}
public function close(Order $order)
{
try {
$order->close();
return $this->success('操作成功');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function complete(Order $order)
{
try {
$order->complete();
return $this->success('操作成功');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function logistic(Order $order)
{
$message = Logistic::getMessage($order->express->company ?? '', $order->express->number ?? ''); //类型csn,编号
return view('Admin::orders.logistic', compact('order', 'message'));
}
}

View File

@@ -0,0 +1,184 @@
<?php
namespace App\Admin\Controllers;
use App\Models\SalesReport;
use Illuminate\Http\Request;
use Admin;
use RuLong\Order\Models\Order;
use App\Models\GoodsParams;
use App\Models\Goods;
use RuLong\Order\Models\OrderDetail;
use App\Models\Seller;
use Illuminate\Support\Facades\DB;
class OrderDataController extends Controller
{
public function report(Request $request)
{
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
$numPerPage = $request->numPerPage ?: 100;
$start = $request->start;
$end = $request->end;
$reports = SalesReport::when($seller_id,function ($q) use($seller_id){$q->where('seller_id', $seller_id);})
->where('state','DELIVERED')
->when($start && $end, function ($query) use ($start, $end) {
$query->whereBetween('action_time', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})
->when($start && !$end, function ($query) use ($start) {
$query->where('action_time', '>=', $start);
})
->when((!$start && $end), function ($query) use ($end) {
$query->where('action_time', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})->orderBy('seller_id','asc')->orderBy('action_time','desc')->paginate($numPerPage);
$sellers = Seller::where('status', 1)->get();
return view('Admin::orderData.report', compact('reports','sellers'));
}
public function signed(Request $request)
{
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
$numPerPage = $request->numPerPage ?: 100;
$start = $request->start;
$end = $request->end;
$reports = SalesReport::when($seller_id,function ($q) use($seller_id){$q->where('seller_id', $seller_id);})
->where('state','SIGNED')
->when($start && $end, function ($query) use ($start, $end) {
$query->whereBetween('action_time', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})
->when($start && !$end, function ($query) use ($start) {
$query->where('action_time', '>=', $start);
})
->when((!$start && $end), function ($query) use ($end) {
$query->where('action_time', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})->orderBy('seller_id','asc')->orderBy('action_time','desc')->paginate($numPerPage);
$sellers = Seller::where('status', 1)->get();
return view('Admin::orderData.signed', compact('reports','sellers'));
}
public function order(Request $request)
{
$sellers = Seller::where('status', 1)->get();
$orderid = $request->orderid;
$mobile = $request->mobile;
$nickname = $request->nickname;
$start = $request->start;
$end = $request->end;
$item_id = $request->item_id;
$item_type = $request->item_type;
$type = $request->type;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
$orders = Order::when($seller_id,function ($q) use($seller_id){$q->where('seller_id', $seller_id);})
->when($orderid, function ($query) use ($orderid) {
$query->where('orderid', 'like', "%{$orderid}%");
})
->when($mobile, function ($query) use ($mobile) {
$query->whereHas('user', function ($query) use ($mobile) {
$query->where('mobile', 'like', "%{$mobile}%");
});
})
->when($nickname, function ($query) use ($nickname) {
$query->whereHas('user', function ($query) use ($nickname) {
return $query->whereHas('info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
});
})
->when($item_id, function ($query) use ($item_id) {
$query->whereHas('details', function ($query) use ($item_id) {
return $query->where('item_id',$item_id);
});
})
->when($item_type, function ($query) use($item_type){
return $query->where('item_type',$item_type);
})->
whereHas('logs', function ($query) use ($start,$end,$type) {
$query->where('state',$type)->when($start && $end, function ($query) use ($start, $end) {
$query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})
->when($start && !$end, function ($query) use ($start) {
$query->where('created_at', '>=', $start);
})
->when((!$start && $end), function ($query) use ($end) {
$query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
});
})->where('state', '<>',Order::ORDER_CLOSED)
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->with(['seller', 'user.info'])
->orderBy('created_at', 'desc')
->paginate($numPerPage);
return view('Admin::orderData.order', compact('sellers','orders','type','item_id'));
}
public function dashboard(Request $request)
{
//已签收
//已经发货
//日期,商户,已发货订单总量,已发货订单总额,订单商品总成本,已发货商品总计,销售价格总计,抵值积分总计,商家结算总计,
$sellerids = Seller::get();
$start_arr = ['2019-01-22'];
foreach ($start_arr as $starta){
foreach ($sellerids as $key => $seller){
$seller_id = $seller->id;
$start = date($starta, strtotime('-1 day'));
$end = date($starta);
$orderids[$key] = Order::when($seller_id,function ($q) use($seller_id){$q->where('seller_id', $seller_id);})
->whereHas('logs', function ($query) use ($start,$end) {
$query->where('state','PAID|DELIVERED')->when($start && $end, function ($query) use ($start, $end) {
$query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})
->when($start && !$end, function ($query) use ($start) {
$query->where('created_at', '>=', $start);
})
->when((!$start && $end), function ($query) use ($end) {
$query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
});
})->where('state', '<>',Order::ORDER_CLOSED)->pluck('id');
if(!empty($orderids[$key])){
$detail[$key] = OrderDetail::select(DB::raw('sum(number) as number_sum, sum(score * number) as score_sum, sum(price * number) as price_sum, sum(seller_price * number) as seller_price_sum'))
->whereIn('order_id',$orderids[$key])->first();
if(!empty($detail[$key]) && $detail[$key]->number_sum){
$order[$key] = Order::select(DB::raw('count(*) as order_total, sum(freight) as freight_sum, sum(seller_freight) as seller_freight_sum, sum(amount) as orders_price, sum(score) as orders_score,sum(seller_amount) as seller_amount_sum'))
->whereIn('id',$orderids[$key])->first();
$report[$key] = SalesReport::where(['seller_id'=>$seller_id,'state'=>'DELIVERED','action_time'=>$starta])->first();
if(empty($report[$key])){
SalesReport::create([
'state'=>'DELIVERED',
'action_time'=>$starta,
'goods_total'=>$detail[$key]->number_sum,
'goods_price_total'=>$detail[$key]->price_sum,
'goods_score_total'=>$detail[$key]->score_sum,
'orders_total'=>$order[$key]->order_total,
'orders_price'=>$order[$key]->orders_price,
'orders_score'=>$order[$key]->orders_score,
'orders_freight'=>$order[$key]->freight_sum,
'seller_id'=>$seller_id,
'seller_total'=>$order[$key]->seller_amount_sum,
'seller_freight'=>$order[$key]->seller_freight_sum,
]);
}
}
}
}
}
}
}

View File

@@ -0,0 +1,189 @@
<?php
namespace App\Admin\Controllers;
use Admin;
use App\Models\Category;
use App\Models\Organ;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Validator;
class OrganController extends Controller
{
public function index(Request $request)
{
$title = $request->title;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$start = $request->start;
$end = $request->end;
$lists = Organ::when($title, function ($query) use ($title) {
$query->where('title', 'like', "%{$title}%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->orderBy('created_at', 'desc')
->when($start && $end, function ($query) use ($start, $end) {
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})->when($start && !$end, function ($query) use ($start) {
return $query->where('created_at', '>=', $start);
})->when(!$start && $end, function ($query) use ($end) {
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})
->paginate($numPerPage);
return view('Admin::organ.index', compact('lists'));
}
public function create()
{
$provinces = \Area::index(0);
$categoies = Category::treeSelect(1);
dd(1);
return view('Admin::organ.create', compact('provinces', 'categoies'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|min:2|max:50',
'mobile' => 'required',
'wechat' => 'required',
'province_sn' => 'required',
'city_sn' => 'required',
'area_sn' => 'required',
'address' => 'required',
'description' => 'required|min:4',
'content' => 'required|min:4',
'storage_id' => 'required',
], [
'title.required' => '机构名称必须填写',
'title.min' => '机构名称最少为:min字符',
'title.max' => '机构名称最多为:max字符',
'mobile.required' => '电话必须填写',
'wechat.required' => '微信必须填写',
'province_sn.required' => '请选择省',
'city_sn.required' => '请选择市',
'area_sn.required' => '请选择区',
'address.required' => '地址必须填写',
'description.required' => '简介必须填写',
'description.min' => '简介最少:min个字',
'content.required' => '内容必须填写',
'content.min' => '内容最少:min个字',
'storage_id.required' => '图片必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
try {
DB::transaction(function () use ($request) {
$organ = Organ::create($request->all());
});
return $this->success('操作成功', 'close');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function edit(Organ $organ)
{
$provinces = \Area::index(0);
$cities = \Area::index($organ->province_sn);
$areas = \Area::index($organ->city_sn);
$categoies = Category::treeSelect(1);
return view('Admin::organ.edit', compact('organ', 'provinces', 'cities', 'areas', 'categoies'));
}
public function update(Request $request, Organ $organ)
{
$validator = Validator::make($request->all(), [
'title' => 'required|min:2|max:50',
'mobile' => 'required',
'wechat' => 'required',
'province_sn' => 'required',
'city_sn' => 'required',
'area_sn' => 'required',
'address' => 'required',
'description' => 'required|min:4',
'content' => 'required|min:4',
'storage_id' => 'required',
], [
'title.required' => '机构名称必须填写',
'title.min' => '机构名称最少为:min字符',
'title.max' => '机构名称最多为:max字符',
'mobile.required' => '电话必须填写',
'wechat.required' => '微信必须填写',
'province_sn.required' => '请选择省',
'city_sn.required' => '请选择市',
'area_sn.required' => '请选择区',
'address.required' => '地址必须填写',
'description.required' => '简介必须填写',
'description.min' => '简介最少:min个字',
'content.required' => '内容必须填写',
'content.min' => '内容最少:min个字',
'storage_id.required' => '图片必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
try {
DB::transaction(function () use ($organ, $request) {
$organ->update($request->all());
});
return $this->success('操作成功', 'close');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function destroy(Organ $organ)
{
try {
DB::transaction(function () use ($organ) {
$organ->status = 0;
$organ->save();
});
return $this->success('操作成功');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
/**
* 彻底删除单条目
* @Author:<C.Jason>
* @Date:2018-11-02T13:43:36+0800
* @param [type] $user [description]
* @return [type] [description]
*/
public function delete(Organ $organ)
{
try {
DB::transaction(function () use ($organ) {
$organ->delete();
});
return $this->success('操作成功');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
}

View File

@@ -0,0 +1,102 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Param;
use Illuminate\Http\Request;
use Validator;
class ParamController extends Controller
{
public function index(Request $request)
{
$title = $request->title;
$name = $request->name;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$params = Param::when($title, function ($query) use ($title) {
$query->where('title', 'like', "%{$title}%");
})->when($name, function ($query) use ($name) {
$query->where('name', 'like', "%{$name}%");
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->paginate($numPerPage);
return view('Admin::params.index', compact('params'));
}
public function create()
{
return view('Admin::params.create');
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|between:2,50',
'name' => 'required|between:2,50|unique:params',
'value' => 'required',
], [
'title.required' => '参数标题必须填写',
'title.between' => '参数标题长度:min-:max字符',
'name.required' => '调用名称必须填写',
'name.between' => '调用名称长度:min-:max字符',
'name.unique' => '调用名称已经存在',
'value.required' => '参数值必须填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (Param::create($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function edit(Param $param)
{
return view('Admin::params.edit', compact('param'));
}
public function update(Request $request, Param $param)
{
$validator = Validator::make($request->all(), [
'title' => 'required|between:2,50',
'name' => 'required|between:2,50',
'value' => 'required',
], [
'title.required' => '参数标题必须填写',
'title.between' => '参数标题长度:min-:max字符',
'name.required' => '调用名称必须填写',
'name.between' => '调用名称长度:min-:max字符',
'name.unique' => '调用名称已经存在',
'value.required' => '参数值必须填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($param->update($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function destroy(Param $param)
{
if ($param->delete()) {
return $this->success();
} else {
return $this->error();
}
}
}

View File

@@ -0,0 +1,78 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Payment;
use App\Models\VipPament;
use Illuminate\Http\Request;
class PaymentController extends Controller
{
public function index(Request $request)
{
$orderid = $request->orderid;
$trade_no = $request->trade_no;
$start = $request->start;
$end = $request->end;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$payments = Payment::when($trade_no, function ($query) use ($trade_no) {
$query->where('trade_no', 'like', "%{$trade_no}%");
})->when($orderid, function ($query) use ($orderid) {
$query->whereHas('order', function ($query) use ($orderid) {
$query->where('orderid', 'like', "%{$orderid}%");
});
})->when($start && $end, function ($query) use ($start, $end) {
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})->when($start && !$end, function ($query) use ($start) {
return $query->where('created_at', '>=', $start);
})->when(!$start && $end, function ($query) use ($end) {
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->with(['order'])->latest()->paginate($numPerPage);
return view('Admin::payments.index', compact('payments'));
}
public function vip(Request $request)
{
$user_id = $request->user_id;
$nickname = $request->nickname;
$trade_no = $request->trade_no;
$start = $request->start;
$end = $request->end;
$pay_type = $request->pay_type;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$payments = VipPament::when($trade_no, function ($query) use ($trade_no) {
$query->where('trade_no', 'like', "%{$trade_no}%");
})->when($user_id, function ($query) use($user_id){
return $query->where('user_id',$user_id);
})->when($nickname, function ($query) use ($nickname) {
$query->whereHas('user', function ($query) use ($nickname) {
$query->whereHas('info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
});
})->when($pay_type, function ($query) use($pay_type){
return $query->where('type',$pay_type);
})->when($start && $end, function ($query) use ($start, $end) {
return $query->whereBetween('paid_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})->when($start && !$end, function ($query) use ($start) {
return $query->where('paid_at', '>=', $start);
})->when(!$start && $end, function ($query) use ($end) {
return $query->where('paid_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->where('state', 'SUCCESS')->latest()->paginate($numPerPage);
return view('Admin::payments.vip', compact('payments'));
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace App\Admin\Controllers;
use App\Models\ProfitLog;
use Illuminate\Http\Request;
use RuLong\UserAccount\Models\UserAccountLog;
class ProfitController extends Controller
{
public function index(Request $request)
{
$status = $request->status;
$start = $request->start;
$end = $request->end;
$numPerPage = $request->numPerPage ?: 30;
$profits = ProfitLog::when($status, function ($query) use ($status) {
if ($status == 'one') {
$query->where('status', 1);
} elseif ($status == 'zero') {
$query->where('status', 0);
}
})->when($start && $end, function ($query) use ($start, $end) {
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})->when($start && !$end, function ($query) use ($start) {
return $query->where('created_at', '>=', $start);
})->when(!$start && $end, function ($query) use ($end) {
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})->orderBy('created_at', 'desc')->paginate($numPerPage);
return view('Admin::profit.index', compact('profits'));
}
public function logs(Request $request, ProfitLog $profit)
{
$numPerPage = $request->numPerPage ?: 30;
$logs = UserAccountLog::whereJsonContains('source->no', $profit->end_at->format('Ymd'))
->orderBy('user_id', 'asc')
->paginate($numPerPage);
return view('Admin::profit.logs', compact('logs', 'profit'));
}
}

View File

@@ -0,0 +1,100 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Report;
use App\Rules\Checkmobile;
use Illuminate\Http\Request;
use Validator;
class ReportController extends Controller
{
public function index(Request $request)
{
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$lists = Report::paginate($numPerPage);
return view('Admin::report.index', compact('lists'));
}
public function create()
{
return view('Admin::report.create');
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:50',
'mobile' => ['required', new Checkmobile],
], [
'name.required' => '名称必须填写',
'name.min' => '名称最少为:min字符',
'name.max' => '名称最多为:max字符',
'mobile.required' => '手机号必须填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (Report::create($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function edit(Report $report)
{
return view('Admin::report.edit', compact('report'));
}
public function update(Request $request, Report $report)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:50',
'mobile' => ['required', new Checkmobile],
], [
'name.required' => '名称必须填写',
'name.min' => '名称最少为:min字符',
'name.max' => '名称最多为:max字符',
'mobile.required' => '手机号必须填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($report->update($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function show()
{
#Todo..
}
//删除
public function delete(Report $report)
{
if ($report->delete()) {
return $this->success('删除成功');
} else {
return $this->error('删除成功');
}
}
public function logs()
{
#Todo..
}
}

View File

@@ -0,0 +1,563 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Agency;
use App\Models\Bank;
use App\Models\Category;
use App\Models\Freight;
use App\Models\Seller;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use RuLong\Panel\Models\Admin;
use Validator;
class SellerController extends Controller
{
//商家列表
public function index(Request $request)
{
if (\Admin::id() != 1 && \Admin::user()->seller->type != 'seller') {
return $this->error('您没有权限');
}
$name = $request->name;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$type = 'seller';
$title = '商家';
$sellers = Seller::withCount('admins')
->withCount('orders')
->withCount('goods')
->where('type', $type)
->when(\Admin::id() > 1, function ($query) {
$query->where('id', \Admin::user()->seller_id);
})
->when($name, function ($query) use ($name) {
$query->where('name', 'like', "%{$name}%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->paginate($numPerPage);
return view('Admin::sellers.index', compact('sellers', 'type', 'title'));
}
public function search(Request $request)
{
$name = $request->name;
$numPerPage = $request->numPerPage ?: 30;
$type = 'organ';
$sellers = Seller::where('type', $type)
->when($name, function ($query) use ($name) {
$query->where('name', 'like', "%{$name}%");
})
->paginate($numPerPage);
return view('Admin::sellers.search', compact('sellers', 'type', 'title'));
}
//机构列表
public function organ(Request $request)
{
if (\Admin::id() != 1 && \Admin::user()->seller->type != 'organ') {
return $this->error('您没有权限');
}
$name = $request->name;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$type = 'organ';
$title = '机构';
$sellers = Seller::withCount('admins')
->withCount('orders')
->withCount('goods')
->withCount('lesson')
->where('type', $type)
->when(\Admin::id() > 1, function ($query) {
$query->where('id', \Admin::user()->seller_id);
})
->when($name, function ($query) use ($name) {
$query->where('name', 'like', "%{$name}%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->paginate($numPerPage);
return view('Admin::sellers.index', compact('sellers', 'type', 'title'));
}
public function show(Seller $seller)
{
$freights = Freight::where('seller_id', $seller->id)->get();
return view('Admin::sellers.show', compact('seller', 'freights'));
}
public function create(Request $request)
{
$pid = ($request->type == 'organ') ? 1 : 2;
$provinces = \OpenArea::index(0);
$categoies = Category::treeSelect($pid);
$agencys = Agency::where('status', 1)->get();
$salesmans = User::where('is_salesman', 1)->get();
return view('Admin::sellers.create', compact('provinces', 'categoies', 'agencys', 'salesmans'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:50',
'mobile' => 'required',
'wechat_id' => 'required',
'province_sn' => 'required',
'city_sn' => 'required',
'area_sn' => 'required',
'address' => 'required',
'description' => 'required|min:4',
'content' => 'required|min:4',
'storage_id' => 'required',
], [
'name.required' => '名称必须填写',
'name.min' => '名称最少为:min字符',
'name.max' => '名称最多为:max字符',
'mobile.required' => '电话必须填写',
'wechat_id.required' => '微信二维码必须上传',
'province_sn.required' => '请选择省',
'city_sn.required' => '请选择市',
'area_sn.required' => '请选择区',
'address.required' => '地址必须填写',
'description.required' => '简介必须填写',
'description.min' => '简介最少:min个字',
'content.required' => '内容必须填写',
'content.min' => '内容最少:min个字',
'storage_id.required' => 'Logo必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (Seller::create($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function edit(Seller $seller)
{
$banks = Bank::orderBy('sort', 'asc')->get();
$provinces = \OpenArea::index(0);
$cities = \OpenArea::index($seller->province_sn);
$areas = \OpenArea::index($seller->city_sn);
$pid = ($seller->type == 'organ') ? 1 : 2;
$categoies = Category::treeSelect($pid);
$agencys = Agency::where('status', 1)->get();
$salesmans = User::where('is_salesman', 1)->get();
return view('Admin::sellers.edit', compact('seller', 'banks', 'categoies', 'provinces', 'cities', 'areas', 'agencys', 'salesmans'));
}
public function update(Request $request, Seller $seller)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:50',
'mobile' => 'required',
'wechat_id' => 'required',
'province_sn' => 'required',
'city_sn' => 'required',
'area_sn' => 'required',
'address' => 'required',
'description' => 'required|min:4',
'content' => 'required|min:4',
'storage_id' => 'required',
], [
'name.required' => '名称必须填写',
'name.min' => '名称最少为:min字符',
'name.max' => '名称最多为:max字符',
'mobile.required' => '电话必须填写',
'wechat_id.required' => '微信二维码必须上传',
'province_sn.required' => '请选择省',
'city_sn.required' => '请选择市',
'area_sn.required' => '请选择区',
'address.required' => '地址必须填写',
'description.required' => '简介必须填写',
'description.min' => '简介最少:min个字',
'content.required' => '内容必须填写',
'content.min' => '内容最少:min个字',
'storage_id.required' => 'Logo必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($seller->update($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function destroy(Seller $seller)
{
//删除
if ($seller->canDel()) {
if ($seller->delete()) {
if ($seller->admins) {
$seller->admins()->delete();
}
return $this->success();
} else {
return $this->error();
}
} else {
if ($seller->canCancel()) {
$seller->status = 0;
$seller->save();
} else {
return $this->error('请下架所有商品,再关闭商户');
}
}
}
public function setting(Request $request)
{
if ($request->isMethod('PUT')) {
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:50',
'description' => 'required|min:4',
'storage_id' => 'required',
], [
'name.required' => '商户名称必须填写',
'name.min' => '商户名称最少为:min字符',
'name.max' => '商户名称最多为:max字符',
'description.required' => '简介必须填写',
'description.min' => '简介最少:min个字',
'storage_id.required' => 'Logo必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
$seller = Seller::find(\Admin::user()->seller_id);
if ($seller->update($request->all())) {
return $this->success('操作成功');
} else {
return $this->error();
}
}
$banks = Bank::orderBy('sort', 'asc')->get();
$seller = Seller::find(\Admin::user()->seller_id);
return view('Admin::sellers.setting', compact('seller', 'banks'));
}
public function freights(Request $request)
{
$freights = Freight::where('seller_id', \Admin::user()->seller_id)->get();
return view('Admin::sellers.freights', compact('freights'));
}
public function freightsEdit(Request $request, Freight $freight)
{
if ($request->isMethod('PUT')) {
$validator = Validator::make($request->all(), [
'basic' => 'required|numeric',
'heavy' => 'required|numeric',
'added' => 'required|numeric',
], [
'basic.required' => '基本邮费必须填写',
'basic.numeric' => '基本邮费必须是数字',
'heavy.required' => '起重必须填写',
'heavy.numeric' => '起重必须是数字',
'added.required' => '续重必须填写',
'added.numeric' => '续重必须是数字',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
$freight->update([
'basic' => $request->basic,
'heavy' => $request->heavy,
'added' => $request->added,
]);
return $this->success('', 'close');
} else {
return view('Admin::sellers.freightsEdit', compact('freight'));
}
}
public function users(Request $request, Seller $seller)
{
$username = $request->username;
$nickname = $request->nickname;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$seller_id = $request->seller_id ?? \Admin::user()->seller_id;
$admins = Admin::where('seller_id', $seller->id)
->where('id', '<>', 1)
->when($username, function ($query) use ($username) {
return $query->where('username', 'like', "%{$username}%");
})
->when($nickname, function ($query) use ($nickname) {
return $query->where('nickname', 'like', "%{$nickname}%");
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->with('lastLogin')->withCount('logins')->paginate($numPerPage);
return view('Admin::sellers.users', compact('admins', 'seller'));
}
public function usersCreate()
{
return view('Admin::sellers.usersCreate');
}
public function usersStore(Request $request)
{
$validator = Validator::make($request->all(), [
'username' => ['required', 'between:4,32', 'unique:admins'],
'password' => 'required|between:6,32',
'nickname' => 'nullable|between:2,16',
], [
'username.required' => '用户名称必须填写',
'username.between' => '用户名称长度应在:min-:max位之间',
'username.unique' => '用户名称已经存在',
'password.required' => '登录密码必须填写',
'password.between' => '登录密码长度应在:min-:max位之间',
'nickname.between' => '用户昵称长度应在:min-:max位之间',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
try {
DB::transaction(function () use ($request) {
$admin = Admin::create([
'username' => $request->username,
'password' => $request->password,
'nickname' => $request->nickname,
'seller_id' => $request->seller_id ?? \Admin::user()->seller_id,
]);
DB::table('admin_role_user')->insert([
'role_id' => $request->role_id,
'admin_id' => $admin->id,
'created_at' => now(),
'updated_at' => now(),
]);
});
return $this->success('操作成功', 'close');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function usersEdit(Admin $admin)
{
return view('Admin::sellers.usersEdit', compact('admin'));
}
public function usersUpdate(Request $request, Admin $admin)
{
$validator = Validator::make($request->all(), [
'password' => 'required|between:6,32',
'nickname' => 'nullable|between:2,16',
], [
'password.required' => '登录密码必须填写',
'password.between' => '登录密码长度应在:min-:max位之间',
'nickname.between' => '用户昵称长度应在:min-:max位之间',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
try {
DB::transaction(function () use ($request, $admin) {
$admin->update([
'password' => $request->password,
'nickname' => $request->nickname,
]);
//这里还需要更新管理员的操作权限
});
return $this->success('操作成功', 'close');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function usersDestroy(Admin $admin)
{
if ($admin->delete()) {
//同时删除管理员的权限
return $this->success();
} else {
return $this->error();
}
}
public function manager(Seller $seller)
{
$adminids = DB::table('admin_role_user')->where('role_id', 1)->pluck('admin_id');
$manager = Admin::where('seller_id', $seller->id)->whereIN('id', $adminids)->first();
return $manager ? view('Admin::sellers.manager', compact('manager', 'seller')) : view('Admin::sellers.managerCreate', compact('seller'));
}
public function managerUpdate(Request $request, Admin $admin)
{
$validator = Validator::make($request->all(), [
'password' => 'required|between:6,32',
'nickname' => 'nullable|between:2,16',
], [
'password.required' => '登录密码必须填写',
'password.between' => '登录密码长度应在:min-:max位之间',
'nickname.between' => '用户昵称长度应在:min-:max位之间',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
try {
DB::transaction(function () use ($request, $admin) {
$admin->update([
'password' => $request->password,
'nickname' => $request->nickname,
'seller_id' => $request->seller_id,
]);
//这里还需要更新管理员的操作权限
});
return $this->success('操作成功', 'close');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function managerStore(Request $request, Seller $seller)
{
$validator = Validator::make($request->all(), [
'username' => ['required', 'between:4,32', 'unique:admins'],
'password' => 'required|between:6,32',
'nickname' => 'nullable|between:2,16',
], [
'username.required' => '用户名称必须填写',
'username.between' => '用户名称长度应在:min-:max位之间',
'username.unique' => '用户名称已经存在',
'password.required' => '登录密码必须填写',
'password.between' => '登录密码长度应在:min-:max位之间',
'nickname.between' => '用户昵称长度应在:min-:max位之间',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
try {
DB::transaction(function () use ($request, $seller) {
$admin = Admin::create([
'username' => $request->username,
'password' => $request->password,
'nickname' => $request->nickname,
'seller_id' => $seller->id,
]);
DB::table('admin_role_user')->insert([
'role_id' => $request->role_id,
'admin_id' => $admin->id,
'created_at' => now(),
'updated_at' => now(),
]);
});
return $this->success('操作成功', 'close');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function bindUser(Seller $seller)
{
$users = User::whereHas('identity', function ($query) {
$query->where('identity_id', '>=', 0);
})->doesntHave('seller')->get();
if ($users->count() == 0) {
return $this->error('没有用户', 'close');
}
return view('Admin::sellers.bindUser', compact('seller', 'users'));
}
public function dobindUser(Request $request, Seller $seller)
{
if (empty($request->user_id)) {
return $this->error('用户必须选择');
}
$user = User::find($request->user_id);
if (empty($user)) {
return $this->error('用户信息有误');
}
if ($user->seller) {
return $this->error('用户已绑定商户');
}
$seller->user_id = $request->user_id;
if ($seller->save()) {
// $uids = UserRelation::where('bloodline', 'like', "%," . $user->id . ",%")
// ->pluck('user_id')
// ->toArray();
// User::whereIn('id', $uids)->update(['seller_id' => $seller->id]);
return $this->success('操作成功', 'close');
} else {
return $this->error('操作失败');
}
}
//取消绑定
public function cancelUser(Request $request, Seller $seller)
{
if (!$seller->user) {
return $this->error('没有绑定用户');
}
$seller->user_id = null;
if ($seller->save()) {
return $this->success('操作成功');
} else {
return $this->error('操作失败');
}
}
public function certificate(Request $request, Seller $seller)
{
return view('Admin::sellers.certificate', compact('seller'));
}
public function docertificate(Request $request, Seller $seller)
{
if ($seller->update($request->all())) {
return $this->success('上传成功', 'close');
} else {
return $this->error('上传失败');
}
}
}

View File

@@ -0,0 +1,126 @@
<?php
namespace App\Admin\Controllers;
use Admin;
use App\Models\Seller;
use App\Models\Station;
use Illuminate\Http\Request;
use Validator;
class StationController extends Controller
{
public function index(Request $request)
{
$name = $request->name;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
if (Admin::id() == 1) {
$stations = Station::when($name, function ($query) use ($name) {
$query->where('name', 'like', "%{$name}%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->paginate($numPerPage);
} else {
$stations = Station::when($name, function ($query) use ($name) {
$query->where('name', 'like', "%{$name}%");
})->where('seller_id', Admin::user()->seller_id)
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->paginate($numPerPage);
}
return view('Admin::stations.index', compact('stations'));
}
public function create()
{
$sellers = Seller::where('status', 1)->get();
return view('Admin::stations.create', compact('sellers'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:50',
'address' => 'required|min:4',
'mobile' => 'required',
], [
'name.required' => '商户名称必须填写',
'name.min' => '商户名称最少为:min字符',
'name.max' => '商户名称最多为:max字符',
'address.required' => '地址必须填写',
'address.min' => '地址最少:min个字',
'mobile.required' => '手机号必须填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (Station::create($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function edit(Station $station)
{
$sellers = Seller::where('status', 1)->get();
return view('Admin::stations.edit', compact('station', 'sellers'));
}
public function update(Request $request, Station $station)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:50',
'address' => 'required|min:4',
'mobile' => 'required',
], [
'name.required' => '商户名称必须填写',
'name.min' => '商户名称最少为:min字符',
'name.max' => '商户名称最多为:max字符',
'address.required' => '地址必须填写',
'address.min' => '地址最少:min个字',
'mobile.required' => '手机号必须填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($station->update($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function destroy(station $station)
{
if ($station->delete()) {
return $this->success();
} else {
return $this->error();
}
}
public function areas(Request $request)
{
if (empty($request->psn)) {
return $this->error('请选择省份');
}
$areas = \OpenArea::index($request->psn);
if ($areas) {
return $this->success(['msg' => '', 'code' => 1, 'data' => $areas]);
} else {
return $this->error('请选择省份/城市');
}
}
}

View File

@@ -0,0 +1,138 @@
<?php
namespace App\Admin\Controllers;
use Admin;
use App\Models\Seller;
use App\Models\SellerTeacher;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Validator;
class TeacherController extends Controller
{
public function index(Request $request)
{
$seller_id = $request->seller_id;
$title = $request->title;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$admin = Admin::user();
$teachers = SellerTeacher::when($seller_id, function ($query) use ($seller_id) {
$query->where('seller_id', $seller_id);
})
->when($title, function ($query) use ($title) {
$query->where('title', 'like', "%{$title}%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->orderBy('created_at', 'desc')
->paginate($numPerPage);
return view('Admin::teacher.index', compact('teachers'));
}
public function create()
{
$sellers = Seller::where('type', 'organ')->get();
return view('Admin::teacher.create', compact('sellers'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:50',
'rank' => 'required|min:2',
'school_age' => 'required',
'storage_id' => 'required',
], [
'name.required' => '标题必须填写',
'name.min' => '标题最少为:min字符',
'name.max' => '标题最多为:max字符',
'rank.required' => '职级必须填写',
'rank.min' => '职级最少:min个字',
'school_age.required' => '教龄必须填写',
'storage_id.required' => '教师头像必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
try {
DB::transaction(function () use ($request) {
$info = SellerTeacher::create($request->all());
});
return $this->success('操作成功', 'close');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
public function edit($id)
{
$info = SellerTeacher::find($id);
$sellers = Seller::where('type', 'organ')->get();
return view('Admin::teacher.edit', compact('info', 'sellers'));
}
public function update(Request $request, $id)
{
$info = SellerTeacher::find($id);
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:50',
'rank' => 'required|min:2',
'school_age' => 'required',
'storage_id' => 'required',
], [
'name.required' => '标题必须填写',
'name.min' => '标题最少为:min字符',
'name.max' => '标题最多为:max字符',
'rank.required' => '职级必须填写',
'rank.min' => '职级最少:min个字',
'school_age.required' => '教龄必须填写',
'storage_id.required' => '教师头像必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
try {
DB::transaction(function () use ($request, $info) {
$info = $info->update($request->all());
});
return $this->success('操作成功', 'close');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
/**
* 彻底删除单条目
* @Author:<C.Jason>
* @Date:2018-11-02T13:43:36+0800
* @param [type] $user [description]
* @return [type] [description]
*/
public function delete(SellerTeacher $info)
{
try {
DB::transaction(function () use ($info) {
$info->delete();
});
return $this->success('操作成功');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Team;
use Illuminate\Http\Request;
class TeamController extends Controller
{
public function index(Request $request)
{
$mobile = $request->mobile;
$wechat = $request->wechat;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$lists = Team::when($mobile, function ($query) use ($mobile) {
$query->where('mobile', $mobile);
})
->when($wechat, function ($query) use ($wechat) {
$query->where('wechat', 'like', "%" . $wechat . "%");
})
->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})
->paginate($numPerPage);
return view('Admin::team.index', compact('lists'));
}
}

View File

@@ -0,0 +1,70 @@
<?php
namespace App\Admin\Controllers;
// use RuLong\UserAccount\Models\UserAccount;
use App\User;
// use App\Jobs\ProfitJob;
// use App\Models\ProfitLog;
// use RuLong\Identity\Models\IdentityPoint;
use RuLong\UserAccount\Models\UserAccountLog;
use RuLong\UserRelation\Models\UserRelation;
class TestController extends Controller
{
public function test()
{
$lists = UserAccountLog::select('sum(variable) as count')->where('count', '>', 1000)->group('user_id')->orderBy('count desc')->limit(10)->get();
dump($lists);
}
/**
* 准备做调整关系流程
* @Author:<Leady>
* @Date:2018-12-20T18:54:09+0800
* @return [type] [description]
*/
public function relation()
{
$users = [4189];
$parent_id = 18;
$parent = UserRelation::where('user_id', $parent_id)->first();
if ($parent) {
foreach ($users as $key => $user_id) {
$user = UserRelation::where('user_id', $user_id)->first();
if ($user) {
$bloodline = $parent->bloodline . $parent_id . ','; //改变后血缘线
$oldblood = $user->bloodline . $user->user_id . ','; //目标替换血缘线
$newblood = $bloodline . $user->user_id . ','; //目标新血缘线
$layer_cha = ($parent->layer + 1) - $user->layer;
$user->layer += $layer_cha;
$user->parent_id = $parent_id;
$user->bloodline = $bloodline;
$user->save();
$childs = UserRelation::where('bloodline', 'like', '%,' . $user->user_id . ',%')->get();
foreach ($childs as $key => $child) {
$child->bloodline = str_replace($oldblood, $newblood, $child->bloodline);
$child->layer += $layer_cha;
$child->save();
}
}
}
}
}
/**
* 准备做没有分润的人产生分润流程
* @Author:<Leady>
* @Date:2018-12-20T18:54:21+0800
* @param [type] $user_id [description]
* @return [type] [description]
*/
public function fenrun($user_id)
{
$user_id = 340;
$user = UserRelation::where('user_id', $user_id)->first();
$payment_vip = \App\Models\VipPament::where('user_id', $user_id)->where('state', 'SUCCESS')->first();
\App\Bonus\Direct::settlement($user, ['orderid' => 'vip' . $payment_vip->id]);
}
}

View File

@@ -0,0 +1,391 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Seller;
use App\User;
use Illuminate\Http\Request;
use RuLong\Identity\Models\Identity;
use RuLong\Identity\Models\IdentityLog;
use RuLong\UserRelation\Models\UserRelation;
use Validator;
class UserController extends Controller
{
public function index(Request $request)
{
$user_id = $request->user_id;
$mobile = $request->mobile;
$nickname = $request->nickname;
$identity = $request->identity;
$parent_id = $request->parent_id;
$start = $request->start;
$end = $request->end;
$is_salesman = $request->is_salesman;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$users = User::with('organ')->when($mobile, function ($query) use ($mobile) {
return $query->where('mobile', 'like', "%{$mobile}%");
})->when($user_id, function ($query) use ($user_id) {
return $query->where('id', $user_id);
})->when(is_numeric($is_salesman), function ($query) use ($is_salesman) {
return $query->where('is_salesman', $is_salesman);
})->when($nickname, function ($query) use ($nickname) {
return $query->whereHas('info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
})->when(is_numeric($identity), function ($query) use ($identity) {
$query->whereHas('identity', function ($query) use ($identity) {
$query->where('identity_id', $identity);
});
})->when($parent_id, function ($query) use ($parent_id) {
$query->whereHas('relation', function ($query) use ($parent_id) {
$query->where('parent_id', $parent_id);
});
})->when($start && $end, function ($query) use ($start, $end) {
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})->when($start && !$end, function ($query) use ($start) {
return $query->where('created_at', '>=', $start);
})->when(!$start && $end, function ($query) use ($end) {
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->with(['info', 'lastLogin'])->withCount('logins')->orderBy('created_at', 'desc')->paginate($numPerPage);
$identitys = Identity::get();
return view('Admin::users.index', compact('users', 'identitys'));
}
public function edit(User $user)
{
return view('Admin::users.edit', compact('user'));
}
public function update(Request $request, User $user)
{
$validator = Validator::make($request->all(), [
'password' => 'nullable|between:6,32',
], [
'password.between' => '登录密码长度应在:min-:max位之间',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($user->update($request->all())) {
return $this->success('修改成功', 'close');
} else {
return $this->error();
}
}
/**
* 软删除
* @Author:<C.Jason>
* @Date:2018-11-02T13:44:52+0800
* @param User $user [description]
* @return [type] [description]
*/
public function destroy(User $user)
{
if ($user->delete()) {
return $this->success();
} else {
return $this->error();
}
}
/**
* 回收站
* @Author:<C.Jason>
* @Date:2018-11-02T13:43:57+0800
* @return [type] [description]
*/
public function recycle(Request $request)
{
$mobile = $request->mobile;
$nickname = $request->nickname;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$users = User::onlyTrashed()->when($mobile, function ($query) use ($mobile) {
return $query->where('mobile', 'like', "%{$mobile}%");
})->when($nickname, function ($query) use ($nickname) {
return $query->whereHas('info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->with(['info', 'lastLogin'])->withCount('logins')->paginate($numPerPage);
return view('Admin::users.recycle', compact('users'));
}
/**
* 清空回收站
* 未考虑删除关联数据的问题
* @Author:<C.Jason>
* @Date:2018-11-02T13:41:40+0800
* @return [type] [description]
*/
public function clean()
{
if (User::onlyTrashed()->forceDelete()) {
return $this->success();
} else {
return $this->error();
}
}
/**
* 还原
* @Author:<C.Jason>
* @Date:2018-11-02T13:43:47+0800
* @param [type] $user [description]
* @return [type] [description]
*/
public function resume($user)
{
if (User::withTrashed()->where('id', $user)->restore()) {
return $this->success();
} else {
return $this->error();
}
}
/**
* 彻底删除单条目
* @Author:<C.Jason>
* @Date:2018-11-02T13:43:36+0800
* @param [type] $user [description]
* @return [type] [description]
*/
public function delete($user)
{
if (User::withTrashed()->where('id', $user)->forceDelete()) {
return $this->success();
} else {
return $this->error();
}
}
/**
* 线下开通身份
* @Author:<Leady>
* @Date:2018-11-20T15:32:24+0800
* @param Request $request [description]
* @param [type] $user [description]
* @return [type] [description]
*/
public function identity(User $user)
{
if ($user->seller_id) {
$identity = Identity::where('id', '>', $user->identity->identity_id)->get();
} else {
$identity = Identity::where('id', '>', $user->identity->identity_id)->whereIn('id', [1, 2])->get();
}
return view('Admin::users.identity', compact('user', 'identity'));
}
/**
* 开通身份执行事件
* @Author:<Leady>
* @Date:2018-11-20T15:34:36+0800
* @param Request $request [description]
* @return [type] [description]
*/
public function identityrun(Request $request, User $user)
{
$identity_id = $request->identity_id ?? '';
$pay = $request->pay ?? '';
$max_key = $request->max_key ?? '0';
if (!$identity_id) {
return $this->error('请选择要变更的身份');
}
$user->identityUpdate($identity_id, 'AdminUp', $pay, $max_key);
return $this->success('变更成功', 'close');
}
/**
* 缴费用户列表
* @Author:<Leady>
* @Date:2018-11-26T12:03:39+0800
* @param Request $request [description]
* @return [type] [description]
*/
public function paycostUser(Request $request)
{
$numPerPage = $request->numPerPage ?: 30;
$identity = $request->identity;
$mobile = $request->mobile;
$nickname = $request->nickname;
$lists = IdentityLog::where('channel', 'AdminUp')
->when(is_numeric($identity), function ($query) use ($identity) {
$query->where('after', $identity);
})
->when($mobile, function ($query) use ($mobile) {
$query->whereHas('user_obj', function ($query) use ($mobile) {
$query->where('mobile', 'like', "%{$mobile}%");
});
})
->when($nickname, function ($query) use ($nickname) {
$query->whereHas('user_obj', function ($query) use ($nickname) {
return $query->whereHas('info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
});
})->orderBy('created_at', 'desc')->paginate($numPerPage);
$identitys = Identity::get();
return view('Admin::users.paycostuser', compact('lists', 'identitys'));
}
/**
* 缴费用户确认返款
* @Author:<Leady>
* @Date:2018-11-26T12:03:30+0800
* @param Request $request [description]
* @param IdentityLog $log [description]
* @return [type] [description]
*/
public function rebates(Request $request, IdentityLog $log)
{
return view('Admin::users.rebates', compact('log'));
}
/**
* 缴费用户确认返款
* @Author:<Leady>
* @Date:2018-11-26T12:03:30+0800
* @param Request $request [description]
* @param IdentityLog $log [description]
* @return [type] [description]
*/
public function rebatesdo(Request $request, IdentityLog $log)
{
$log->other = array_merge($log->other, ['rebates' => '已返款', 'rebates_remark' => $request->rebates_remark]);
if ($log->save()) {
return $this->success('操作成功', 'close');
} else {
return $this->error();
}
}
/**
* 更改上级ID
* @Author:<Leady>
* @Date:2018-11-20T15:32:24+0800
* @param Request $request [description]
* @param [type] $user [description]
* @return [type] [description]
*/
public function parent(User $user)
{
return view('Admin::users.parent', compact('user'));
}
/**
* 更改上级ID执行事件
* @Author:<Leady>
* @Date:2018-11-20T15:34:36+0800
* @param Request $request [description]
* @return [type] [description]
*/
public function parentrun(Request $request, User $user)
{
$parent_id = $request->parent_id ?? '';
if (!$parent_id || !is_numeric($parent_id)) {
return $this->error('请输入正确的编号');
}
$parent = UserRelation::where('user_id', (int) $parent_id)->first();
if ($parent) {
$user = $user->relation;
$bloodline = $parent->bloodline . $parent_id . ','; //改变后血缘线
$oldblood = $user->bloodline . $user->user_id . ','; //目标替换血缘线
$newblood = $bloodline . $user->user_id . ','; //目标新血缘线
$layer_cha = ($parent->layer + 1) - $user->layer;
$user->layer += $layer_cha;
$user->parent_id = $parent_id;
$user->bloodline = $bloodline;
$user->save();
$user->user->update(['seller_id' => $parent->user->seller_id]);
$childs = UserRelation::where('bloodline', 'like', '%,' . $user->user_id . ',%')->get();
foreach ($childs as $key => $child) {
$child->bloodline = str_replace($oldblood, $newblood, $child->bloodline);
$child->layer += $layer_cha;
$child->save();
$child->user->update(['seller_id' => $parent->user->seller_id]);
}
} else {
return $this->error('推荐人不存在');
}
return $this->success('变更成功', 'close');
}
public function direct(User $user)
{
// if ($user->direct != 2) {
// return $this->error('状态不正确');
// }
// $payment_vip = \App\Models\VipPament::where('user_id', $user->id)->where('state', 'SUCCESS')->first();
// \App\Bonus\Direct::settlement($user, ['orderid' => 'vip' . $payment_vip->id]);
return $this->success('执行完毕');
}
public function bloodview(User $user)
{
$lists = $user->relation->list2tree('user_id', 'parent_id', 'children', $user->id);
$root = [
"text" => $user->id . ' - ' . $user->info->nickname . '' . ($user->identity->identity_id > 0 ? '已激活' : '未激活') . '',
"children" => $lists,
];
return view('Admin::users.bloodview', compact('root'));
}
//更改组织
public function seller(Request $request, User $user)
{
$sellers = Seller::where('type', 'organ')->whereNotIn('id', [$user->seller_id])->get();
return view('Admin::users.seller', compact('user', 'sellers'));
}
//更改组织执行
public function sellerdo(Request $request, User $user)
{
$seller_id = $request->organ_id;
if (!$seller_id || !is_numeric($seller_id)) {
return $this->error('请选择组织');
}
$seller = Seller::find($seller_id);
if ($seller) {
$uids = UserRelation::where('bloodline', 'like', "%," . $user->id . ",%")
->orWhere('user_id', $user->id)
->pluck('user_id')
->toArray();
User::whereIn('id', $uids)->update(['seller_id' => $seller->id]);
} else {
return $this->error('组织不存在');
}
return $this->success('变更成功', 'close');
}
//设置取消业务员
public function salesman(Request $request, User $user)
{
$value = $request->value;
if ($user->update(['is_salesman' => $value])) {
return $this->success('设置成功');
} else {
return $this->error('设置失败');
}
}
}

View File

@@ -0,0 +1,120 @@
<?php
namespace App\Admin\Controllers;
use App\Models\WechatMenu;
use Illuminate\Http\Request;
use Validator;
class WechatController extends Controller
{
public function menus(Request $request)
{
$name = $request->name;
$menus = WechatMenu::when($name, function ($query) use ($name) {
$query->where('name', 'like', "%{$name}%");
})->orderBy('sort', 'asc')->get();
$genMenus = WechatMenu::where('parent_id', 0)->orderBy('sort', 'asc')->get();
return view('Admin::wechat.menus', compact('menus', 'genMenus'));
}
/**
* 发布菜单到微信
* @Author:<C.Jason>
* @Date:2018-11-15T16:05:55+0800
* @return [type] [description]
*/
public function publish()
{
$buttons = WechatMenu::getPublishArray();
$app = app('wechat.official_account');
$result = $app->menu->create($buttons);
if ($result->errcode == 0) {
return $this->success();
} else {
return $this->error($result->errmsg);
}
}
public function create()
{
$topMenus = WechatMenu::where('parent_id', 0)->get();
return view('Admin::wechat.create', compact('topMenus'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:5',
'parent_id' => 'required',
'type' => 'required|in:view,click,miniprogram',
'value' => 'required',
], [
'name.required' => '菜单名称必须填写',
'name.min' => '菜单名称最小:min位',
'name.max' => '菜单名称最大:max位',
'parent_id.required' => '上级菜单必须选择',
'type.required' => '菜单类型必须选择',
'type.in' => '菜单类型选择有误',
'value.required' => '菜单键值必须填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (WechatMenu::create($request->all())) {
return $this->success('', 'close');
} else {
return $this->error();
}
}
public function edit(WechatMenu $menu)
{
$topMenus = WechatMenu::where('parent_id', 0)->where('id', '<>', $menu->id)->get();
return view('Admin::wechat.edit', compact('topMenus', 'menu'));
}
public function update(Request $request, WechatMenu $menu)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:5',
'parent_id' => 'required',
'type' => 'required|in:view,click,miniprogram',
'value' => 'required',
], [
'name.required' => '菜单名称必须填写',
'name.min' => '菜单名称最小:min位',
'name.max' => '菜单名称最大:max位',
'parent_id.required' => '上级菜单必须选择',
'type.required' => '菜单类型必须选择',
'type.in' => '菜单类型选择有误',
'value.required' => '菜单键值必须填写',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($menu->update($request->all())) {
return $this->success('编辑成功', 'close');
} else {
return $this->error();
}
}
public function destroy(WechatMenu $menu)
{
if ($menu->delete()) {
return $this->success();
} else {
return $this->error();
}
}
}

View File

@@ -0,0 +1,91 @@
<?php
namespace App\Admin\Controllers;
use App\Models\WechatRule;
use Illuminate\Http\Request;
use Validator;
class WechatRulesController extends Controller
{
public function index(Request $request)
{
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$wechatRules = WechatRule::when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->paginate($numPerPage);
return view('Admin::wechatRules.index', compact('wechatRules'));
}
public function create(Request $request)
{
return view('Admin::wechatRules.create');
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|max:100',
'name' => 'required|max:100',
'description' => 'required|max:200',
'storage_id' => 'required',
], [
'title.required' => '名称必须填写',
'title.max' => '名称长度应在:max以内',
'name.required' => '规则必须填写',
'name.max' => '规则长度应在:max以内',
'description.required' => '简介必须填写',
'storage_id.required' => '标题图必须上传',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if (WechatRule::create($request->all())) {
return $this->success('新增文章成功', 'close');
} else {
return $this->error();
}
}
public function edit(WechatRule $wechatRule)
{
return view('Admin::wechatRules.edit', compact('wechatRule'));
}
public function update(Request $request, WechatRule $wechatRule)
{
$validator = Validator::make($request->all(), [
'title' => 'required|max:100',
'name' => 'required|max:100',
'description' => 'required|max:200',
'storage_id' => 'required',
], [
'title.required' => '名称必须填写',
'title.max' => '名称长度应在:max以内',
'name.required' => '规则必须填写',
'name.max' => '规则长度应在:max以内',
'description.required' => '简介必须填写',
'storage_id.required' => '标题图必须上传',
]);
$data = $request->all();
$wechatRule->update($data);
return $this->success('', 'close');
}
public function destroy($id)
{
}
}

View File

@@ -0,0 +1,179 @@
<?php
namespace App\Admin\Controllers;
use Admin;
use App\Models\Seller;
use App\Models\WindupReport;
use Illuminate\Http\Request;
use RuLong\Order\Models\Order;
use Illuminate\Support\Facades\DB;
use Validator;
class WindupsController extends Controller
{
/**
* 全部商户待结算列表-平台管理员
* @Author:<ZhaoxiaWang>
* @Date:2018-11-30
*/
public function index(Request $request)
{
$sellers = Seller::whereHas('orders')->get();
$numPerPage = $request->numPerPage ?: 30;
$start = $request->start;
$end = $request->end;
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
$seller_orders = WindupReport::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})
->when($start && $end, function ($query) use ($start, $end) {
$query->whereBetween('start_time', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})
->when($start && !$end, function ($query) use ($start) {
$query->where('start_time', '>=', $start);
})
->when((!$start && $end), function ($query) use ($end) {
$query->where('start_time', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})->where('state',0)->orderBy('id','desc')->paginate($numPerPage);
$unwinduped = WindupReport::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})->where('state',0)
->select(DB::raw('SUM(seller_freight_sum + seller_amount_sum) AS sum_total'))->first();
$winduped = WindupReport::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})->where('state',1)
->select(DB::raw('SUM(seller_freight_sum + seller_amount_sum) AS sum_total'))->first();
$curr_unwinduped = Order::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})
->whereHas('logs', function ($query) {
$query->where('state','DELIVERED|SIGNED');
})
->where('state', '<>',Order::ORDER_CLOSED)
->where('windup_report_id',0)
->select(DB::raw('SUM(seller_freight + seller_amount) AS sum_total'))->first();
return view('Admin::windups.index', compact('seller_orders','sellers','unwinduped','winduped','curr_unwinduped'));
}
/**
* 待结算订单明细-平台管理员、商户管理员同时可查看
* @Author:<ZhaoxiaWang>
* @Date:2018-11-30
*/
public function orders(Request $request)
{
$orderid = $request->orderid;
$windup_report_id = $request->windup_report_id;
$numPerPage = $request->numPerPage ?: 30;
$orders = Order::where('windup_report_id', $windup_report_id)
->when($orderid, function ($query) use ($orderid) {
$query->where('orderid', 'like', "%{$orderid}%");
})
->with(['seller', 'user.info'])
->orderBy('created_at', 'desc')
->paginate($numPerPage);
return view('Admin::windups.orders', compact('orders'));
}
/**
* 创建商户结算记录-平台管理员
* @Author:<ZhaoxiaWang>
* @Date:2018-11-30
*/
public function create(Request $request)
{
$windup_report_id = $request->windup_report_id;
$windup = WindupReport::find($windup_report_id);
return view('Admin::windups.create', compact('windup'));
}
/**
* 保存商户结算记录-平台管理员
* @Author:<ZhaoxiaWang>
* @Date:2018-11-30
*/
public function dostate(Request $request)
{
$windup_report_id = $request->windup_report_id;
$windup = WindupReport::find($windup_report_id);
if(!$windup->seller || empty($windup->seller->account_name)){
return $this->error('商户必须设置收款账户才能结算', 'close');
}
$windup->remark = $request->remark;
$windup->is_provide_invoice = $request->is_provide_invoice;
$windup->state = 1;
$windup->seller_account_name = $windup->seller->account_name;
$windup->seller_account_bank = $windup->seller->bank_name;
$windup->seller_account_number = $windup->seller->account_number;
$windup->winduped_at = now();
$windup->save();
return $this->success('操作成功', 'close');
}
/**
* 全部已结算记录-平台管理员
* @Author:<ZhaoxiaWang>
* @Date:2018-11-30
*/
public function winduped(Request $request)
{
$sellers = Seller::whereHas('orders')->get();
$numPerPage = $request->numPerPage ?: 30;
$start = $request->start;
$end = $request->end;
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
$seller_orders = WindupReport::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})
->when($start && $end, function ($query) use ($start, $end) {
$query->whereBetween('start_time', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})
->when($start && !$end, function ($query) use ($start) {
$query->where('start_time', '>=', $start);
})
->when((!$start && $end), function ($query) use ($end) {
$query->where('start_time', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})->where('state',1)->orderBy('id','desc')->paginate($numPerPage);
$unwinduped = WindupReport::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})->where('state',0)
->select(DB::raw('SUM(seller_freight_sum + seller_amount_sum) AS sum_total'))->first();
$winduped = WindupReport::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})->where('state',1)
->select(DB::raw('SUM(seller_freight_sum + seller_amount_sum) AS sum_total'))->first();
$curr_unwinduped = Order::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})
->whereHas('logs', function ($query) {
$query->where('state','DELIVERED|SIGNED');
})
->where('state', '<>',Order::ORDER_CLOSED)
->where('windup_report_id',0)
->select(DB::raw('SUM(seller_freight + seller_amount) AS sum_total'))->first();
return view('Admin::windups.winduped', compact('seller_orders','sellers','unwinduped','winduped','curr_unwinduped'));
}
public function rule()
{
$info = \Params::get('windup_rule');
$info = str_replace("\r", "<br />", $info);
return view('Admin::windups.rule', compact('info'));
}
public function invoice()
{
$info = \Params::get('invoice_info');
$info = str_replace("\r", "<br />", $info);
return view('Admin::windups.invoice', compact('info'));
}
}

View File

@@ -0,0 +1,73 @@
<?php
namespace App\Admin\Controllers;
use App\Models\Withdraw;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class WithdrawsController extends Controller
{
public function status(Request $request, Withdraw $withdraw)
{
return view('Admin::withdraws.status', compact('withdraw'));
}
public function doStatus(Request $request, Withdraw $withdraw)
{
$state = $request->state;
if(empty($state)){
return $this->error('请选择审核结果');
}
if($state == 1){
//提现处理-提现到微信零钱
if($withdraw->way == 'Wechat'){
if(empty($withdraw->openid)){
return $this->error('提现失败,未找到提现用户微信');
}
$app = app('wechat.payment');
$result = $app->transfer->toBalance([
'partner_trade_no' => 'WTN' . date('ymdHis') . sprintf("%07d", mt_rand(0, pow(10, 7) - 1)),
'openid' => $withdraw->openid,
'check_name' => 'NO_CHECK',
're_user_name' => '',
'amount' => $withdraw->take * 100,
'desc' => '余额提现到微信零钱',
]);
if($result['result_code'] == 'SUCCESS'){
$withdraw->update(['state' => 1]);
return $this->success('操作成功','close');
}else{
return $this->error($result['err_code_des']);
}
}else{
if($withdraw->update(['state' => 1])){
return $this->success('操作成功','close');
}else{
return $this->error('操作失败');
}
}
}
if($state == 2) {
//驳回处理
$remark = $request->remark;
if (empty($remark)) {
return $this->error('请填写驳回原因');
}
try {
DB::transaction(function () use ($remark,$withdraw){
$withdraw->user->rule('withdraw_reject', $withdraw->amount, false, 'withdraw'.$withdraw->id);
$withdraw->update(['state' => 2, 'remark' => $remark]);
});
return $this->success('操作成功','close');
} catch (\Exception $e) {
return $this->error('操作失败' . $e->getmessage());
}
}
}
}

View File

@@ -0,0 +1,92 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
手机号:
<input type="text" name="mobile" value="{{ Request::input('mobile') }}"/>
</td>
<td>
昵称:
<input type="text" name="nickname" value="{{ Request::input('nickname') }}"/>
</td>
<td>
起:
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td>
止:
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="100">手机号</th>
<th width="100">昵称</th>
<th width="100">现金账户</th>
<!-- <th width="100">积分账户</th> -->
<!-- <th width="100">满仓次数</th> -->
<!-- <th width="100">备用账户B</th> -->
<!-- <th width="100">备用账户C</th> -->
<!-- <th width="100">备用账户D</th> -->
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>注册时间</th>
</tr>
</thead>
<tbody>
@foreach ($accounts as $account)
<tr>
<td>{{ $account->user->mobile }}</td>
<td>{{ $account->user->info->nickname }}</td>
<td>{{ $account->cash }}</td>
<!-- <td>{{ $account->score }}</td> -->
<!-- <td>{{ $account->act_a }}</td> -->
<!-- <td>{{ $account->act_b }}</td> -->
<!-- <td>{{ $account->act_c }}</td> -->
<!-- <td>{{ $account->act_d }}</td> -->
<td>{{ $account->created_at }}</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $accounts->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $accounts->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($accounts->perPage() == 30) selected @endif value="30">30</option>
<option @if ($accounts->perPage() == 100) selected @endif value="100">100</option>
<option @if ($accounts->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $accounts->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $accounts->total() }}" numPerPage="{{ $accounts->perPage() }}" pageNumShown="10" currentPage="{{ $accounts->currentPage() }}"></div>
</div>
</div>
<script type="text/javascript">
//点击导出
$('.export-data').click(function (event) {
location.href = "{{ route('Admin.export.accounts') }}?" + $(this).parents('form').serialize();
});
</script>

View File

@@ -0,0 +1,102 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
类型:
<select name="rule_id">
<option value="" @if(Request::input('rule_id')=="") selected @endif>账户变更类型</option>
@foreach ($rules as $key => $rule)
<option value="{{ $rule->id }}" @if(Request::input('rule_id')==$rule->id) selected @endif>{{ $rule->title }}</option>
@endforeach
</select>
</td>
<td>
手机号:
<input type="text" name="mobile" value="{{ Request::input('mobile') }}"/>
</td>
<td>
用户昵称:
<input type="text" name="nickname" value="{{ Request::input('nickname') }}"/>
</td>
<td>
起:
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td>
止:
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<table class="table" width="100%" layoutH="85">
<thead>
<tr>
<th width="50">编号</th>
<th width="100">用户手机号</th>
<th width="100">用户昵称</th>
<th width="150">规则名称</th>
<th width="60">账户类型</th>
<th width="100">变动数额</th>
<th width="100">当期余额</th>
<th width="60">冻结</th>
<th width="">备注</th>
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="120" orderField="updated_at" @if (Request::input('orderField') == 'updated_at') class="{{ Request::input('orderDirection') }}" @endif>更新时间</th>
</tr>
</thead>
<tbody>
@foreach ($logs as $log)
<tr>
<td>{{ $log->id }}</td>
<td>{{ $log->user->mobile }}</td>
<td>{{ $log->user->info->nickname }}</td>
<td>{{ $log->rule->title }}</td>
<td>{{ $log->type }}</td>
<td>{{ $log->variable }}</td>
<td>{{ $log->balance }}</td>
<td>{{ $log->frozen }}</td>
<td>@json($log->source)</td>
<td>{{ $log->created_at }}</td>
<td>{{ $log->updated_at }}</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $logs->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $logs->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($logs->perPage() == 30) selected @endif value="30">30</option>
<option @if ($logs->perPage() == 100) selected @endif value="100">100</option>
<option @if ($logs->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $logs->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $logs->total() }}" numPerPage="{{ $logs->perPage() }}" pageNumShown="10" currentPage="{{ $logs->currentPage() }}"></div>
</div>
</div>
<script type="text/javascript">
//点击导出
$('.export-data').click(function (event) {
location.href = "{{ route('Admin.export.logs') }}?" + $(this).parents('form').serialize();
});
</script>

View File

@@ -0,0 +1,80 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
规则名称:
<input type="text" name="title" value="{{ Request::input('title') }}"/>
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
{{-- <li><a class="add" href="{{ route('Admin.rules.create') }}" mask="true" target="dialog" rel="dialog_{{ time() }}" title="创建用户"><span>创建用户</span></a></li> --}}
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50">编号</th>
<th width="150">规则名称</th>
<th width="150">调用标识</th>
<th width="60">账户类型</th>
<th width="60">变动数量</th>
<th width="60">调用次数</th>
<th width="60">直接到帐</th>
<th width="">备注说明</th>
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="120" orderField="updated_at" @if (Request::input('orderField') == 'updated_at') class="{{ Request::input('orderDirection') }}" @endif>更新时间</th>
<th width="60"></th>
</tr>
</thead>
<tbody>
@foreach ($rules as $rule)
<tr>
<td>{{ $rule->id }}</td>
<td>{{ $rule->title }}</td>
<td>{{ $rule->name }}</td>
<td>{{ $rule->type }}</td>
<td>{{ $rule->variable }}</td>
<td>{{ $rule->trigger_text }}</td>
<td>{{ $rule->deductions }}</td>
<td>{{ $rule->remark }}</td>
<td>{{ $rule->created_at }}</td>
<td>{{ $rule->updated_at }}</td>
<td>
{{-- <a title="编辑产品" target="dialog" href="{{ route('Admin.rules.edit', $rule) }}" rel="dialog{{ time() }}" class="btnEdit">编辑</a> --}}
{{-- <a title="删除产品" target="ajaxDelete" href="{{ route('Admin.rules.destroy', $rule) }}" class="btnDel">删除</a> --}}
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $rules->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $rules->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($rules->perPage() == 30) selected @endif value="30">30</option>
<option @if ($rules->perPage() == 100) selected @endif value="100">100</option>
<option @if ($rules->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $rules->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $rules->total() }}" numPerPage="{{ $rules->perPage() }}" pageNumShown="10" currentPage="{{ $rules->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,94 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
手机号:
<input type="text" name="mobile" value="{{ Request::input('mobile') }}"/>
</td>
<td>
用户昵称:
<input type="text" name="nickname" value="{{ Request::input('nickname') }}"/>
</td>
<td>
起:
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td>
止:
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<table class="table" width="100%" layoutH="85">
<thead>
<tr>
<th width="50">编号</th>
<th width="80">用户手机号</th>
<th width="80">用户昵称</th>
<th width="100">提现金额</th>
<th width="100">手续费</th>
<th width="100">实到金额</th>
<th width="100">提现方式</th>
<th width="60">状态</th>
<th >备注</th>
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="120" orderField="updated_at" @if (Request::input('orderField') == 'updated_at') class="{{ Request::input('orderDirection') }}" @endif>更新时间</th>
<th width="120">操作</th>
</tr>
</thead>
<tbody>
@foreach ($withdraws as $withdraw)
<tr>
<td>{{ $withdraw->id }}</td>
<td>{{ $withdraw->user->mobile }}</td>
<td>{{ $withdraw->user->info->nickname }}</td>
<td>{{ $withdraw->amount }}</td>
<td>{{ $withdraw->tax }}</td>
<td>{{ $withdraw->take }}</td>
<td>{{ $withdraw->type_text }}</td>
<td>{{ $withdraw->state_text }}</td>
<td>{{ $withdraw->remark }}</td>
<td>{{ $withdraw->created_at }}</td>
<td>{{ $withdraw->updated_at }}</td>
<td>@if($withdraw->state == 0)<a title="审核" target="dialog" href="{{ route('Admin.withdraws.status',$withdraw) }}" width="350" height="250">审核</a>@endif</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $withdraws->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $withdraws->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($withdraws->perPage() == 30) selected @endif value="30">30</option>
<option @if ($withdraws->perPage() == 100) selected @endif value="100">100</option>
<option @if ($withdraws->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $withdraws->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $withdraws->total() }}" numPerPage="{{ $withdraws->perPage() }}" pageNumShown="10" currentPage="{{ $withdraws->currentPage() }}"></div>
</div>
</div>
<script type="text/javascript">
//点击导出
$('.export-data').click(function (event) {
location.href = "{{ route('Admin.export.withdraws') }}?" + $(this).parents('form').serialize();
});
</script>

View File

@@ -0,0 +1,94 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.activities.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>活动标题:</label>
<input type="text" name="title" value="" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>分类:</label>
<select name="category_id" class="combox">
@foreach ($categoies as $category)
<option value="{{ $category['id'] }}">{{ $category['title_show'] }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>所属商家:</label>
<select name="seller_id" >
<option value="">请选择商家</option>
@foreach ($sellers as $seller)
<option value="{{ $seller->id }}">{{ $seller->name }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>原价:</label>
<input type="text" name="original" value="" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>现价:</label>
<input type="text" name="price" value="" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>活动描述:</label>
<textarea name="description" rows="3" cols="80"></textarea>
</div>
<div class="divider"></div>
<div class="unit">
<label>开始时间:</label>
<input type="text" name="start_time" value="" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
</div>
<div class="divider"></div>
<div class="unit">
<label>结束时间:</label>
<input type="text" name="end_time" value="" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</div>
<div class="divider"></div>
<div class="row">
<div class="col-md-8">
@ueditor('', 'content',"activity")
</div>
<div class="col-md-4">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
<img src="" style="display:none;width:100%" alt="">
</div>
<input type="hidden" id="storageID" name="storage_id" value="">
</div>
</div>
</div>
@csrf
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,101 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.activities.update', $activity) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>活动标题:</label>
<input type="text" name="title" value="{{ $activity->title }}" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>分类:</label>
<select name="category_id" class="combox">
@foreach ($categoies as $category)
<option value="{{ $category['id'] }}">{{ $category['title_show'] }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>所属商家:</label>
<select name="seller_id" >
<option value="">请选择商家</option>
@foreach ($sellers as $seller)
<option value="{{ $seller->id }}" @if($activity->seller_id==$seller->id) selected @endif>{{ $seller->name }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>原价:</label>
<input type="text" name="original" value="{{ $activity->original }}" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>现价:</label>
<input type="text" name="price" value="{{ $activity->price }}" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>活动描述:</label>
<textarea name="description" rows="3" cols="80">{{ $activity->description }}</textarea>
</div>
<div class="divider"></div>
<div class="unit">
<label>开始时间:</label>
<input type="text" name="start_time" value="{{ $activity->start_time }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
</div>
<div class="divider"></div>
<div class="unit">
<label>结束时间:</label>
<input type="text" name="end_time" value="{{ $activity->end_time }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</div>
<div class="divider"></div>
<div class="row">
<div class="col-md-8">
@ueditor($activity->content, 'content',"activities{{ $activity->id }}")
</div>
<div class="col-md-4">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
@if ($activity->storage->path)
<img src="{{$activity->storage->path}}" style="width:100%" alt="">
@else
<img src="" style="display:none;width:100%" alt="">
@endif
</div>
<input type="hidden" id="storageID" name="storage_id" value="{{ $activity->storage_id }}">
</div>
</div>
</div>
@csrf
<div class="formBar">
<ul>
@csrf
@method('PUT')
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,32 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.activityGifts.update', $gift) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>任务指标:</label>
<input type="text" name="mode" value="{{ $gift->mode }}" size="50" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>领取消耗业绩:</label>
<input type="text" name="consume_mode" value="{{ $gift->consume_mode }}" size="50" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>商家是否结算成本:</label>
<select name="is_windup" class="combox">
<option value="0"></option>
<option value="1"></option>
</select>
</div>
</div>
@csrf
<div class="formBar">
<ul>
@csrf
@method('PUT')
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,90 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.activityGifts.store',$activity) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>选择商品:</label>
<div style="width: 70%">
<select id="seller">
<option value="">选择商户</option>
@foreach ($sellers as $seller)
<option value="{{ $seller['id'] }}">{{ $seller['name'] }}</option>
@endforeach
</select>
<select id="goods" name="goods_id">
<option value="">选择商品</option>
</select>
<select id="params" name="param_id">
<option value="">选择规格</option>
</select>
</div>
</div>
<div class="unit">
<label>任务指标:</label>
<input type="number" name="mode" value="" size="50" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>领取消耗业绩:</label>
<input type="number" name="consume_mode" value="0" size="50" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>商家是否结算成本:</label>
<select name="is_windup" class="combox">
<option value="0"></option>
<option value="1"></option>
</select>
</div>
</div>
@csrf
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>
<script type="text/javascript">
$("#seller").on('change', function() {
var seller_id = $(this).val();
$.post('{{ route('Admin.activities.goods')}}', {seller_id: seller_id, _token:"{{ csrf_token() }}"}, function(res) {
if (res.code) {
$('#goods').html("");
var option1 = $("<option>").val(0).text('请选择商品');
$('#goods').append(option1);
$.each(res.data, function(key, val) {
var option1 = '<option value="' + val.id + '">'+ val.title +'</option>';
$('#goods').append(option1);
});
$("#params").get(0).selectedIndex = 0;
$("#goods").get(0).selectedIndex = 0;
} else {
updateAlert(res.msg);
}
});
});
$("#goods").on('change', function() {
var goods_id = $(this).val();
$.post('{{ route('Admin.activities.params')}}', {goods_id: goods_id, _token:"{{ csrf_token() }}"}, function(res) {
if (res.code) {
$('#params').html("");
var option1 = $("<option>").val(0).text('请选择规格');
$('#params').append(option1);
$.each(res.data, function(key, val) {
var option1 = '<option value="' + val.id + '">'+ val.title +'</option>';
$('#params').append(option1);
});
$("#params").get(0).selectedIndex=0;
} else {
updateAlert(res.msg);
}
});
});
</script>

View File

@@ -0,0 +1,99 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.activityGifts.update', $gift) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>选择商品:</label>
<div style="width: 70%">
<select id="seller">
<option value="">选择商户</option>
@foreach ($sellers as $seller)
<option value="{{ $seller['id'] }}" @if($gift->goods->seller_id == $seller->id) selected @endif>{{ $seller['name'] }}</option>
@endforeach
</select>
<select id="goods" name="goods_id">
<option value="">选择商品</option>
@foreach ($goods as $good)
<option value="{{ $good['id'] }}" @if($gift->goods_id == $good->id) selected @endif>{{ $good['title'] }}</option>
@endforeach
</select>
<select id="params" name="param_id">
<option value="">选择规格</option>
@foreach ($params as $param)
<option value="{{ $param['id'] }}" @if($gift->param_id == $param->id) selected @endif>
{{ $param['value'] }} - 售价{{ $param['price'] }} - 成本{{ $param['cost'] }}
</option>
@endforeach
</select>
</div>
</div>
<div class="unit">
<label>任务指标:</label>
<input type="text" name="mode" value="{{ $gift->mode }}" size="50" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>领取消耗业绩:</label>
<input type="text" name="consume_mode" value="{{ $gift->consume_mode }}" size="50" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>商家是否结算成本:</label>
<select name="is_windup" class="combox">
<option value="0"></option>
<option value="1"></option>
</select>
</div>
</div>
@csrf
<div class="formBar">
<ul>
@csrf
@method('PUT')
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>
<script type="text/javascript">
$("#seller").on('change', function() {
var seller_id = $(this).val();
$.post('{{ route('Admin.activities.goods')}}', {seller_id: seller_id, _token:"{{ csrf_token() }}"}, function(res) {
if (res.code) {
$('#goods').html("");
var option1 = $("<option>").val(0).text('请选择商品');
$('#goods').append(option1);
$.each(res.data, function(key, val) {
var option1 = '<option value="' + val.id + '">'+ val.title +'</option>';
$('#goods').append(option1);
});
$("#params").get(0).selectedIndex = 0;
$("#goods").get(0).selectedIndex = 0;
} else {
updateAlert(res.msg);
}
});
});
$("#goods").on('change', function() {
var goods_id = $(this).val();
$.post('{{ route('Admin.activities.params')}}', {goods_id: goods_id, _token:"{{ csrf_token() }}"}, function(res) {
if (res.code) {
$('#params').html("");
var option1 = $("<option>").val(0).text('请选择规格');
$('#params').append(option1);
$.each(res.data, function(key, val) {
var option1 = '<option value="' + val.id + '">'+ val.title +'</option>';
$('#params').append(option1);
});
$("#params").get(0).selectedIndex=0;
} else {
updateAlert(res.msg);
}
});
});
</script>

View File

@@ -0,0 +1,87 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
活动名称:
<input type="text" name="title" value="{{ Request::input('title') }}"/>
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li><a class="add" href="{{ route('Admin.activities.create') }}" mask="true" target="dialog" width="800" height="600" rel="navTab_{{ time() }}" title="添加活动"><span>添加活动</span></a></li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
<th>活动标题</th>
<th>所属商家</th>
<th width="140">所属地域</th>
<th>所属分类</th>
<th>状态</th>
<th>原价</th>
<th>现价</th>
<th>开始时间</th>
<th>结束时间</th>
<!-- <th>奖品数量</th> -->
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="240"></th>
</tr>
</thead>
<tbody>
@foreach ($activities as $activity)
<tr>
<td>{{ $activity->id }}</td>
<td>{{ $activity->title }}</td>
<td>{{ $activity->seller->name }}</td>
<td>{{ $activity->seller->Area->info??'' }}</td>
<td>{{ $activity->category->title }}</td>
<td>{!! $activity->status_text !!}</td>
<td>{{ $activity->original }}</td>
<td>{{ $activity->price }}</td>
<td>{{ $activity->start_time }}</td>
<td>{{ $activity->end_time }}</td>
<!-- <td>
<a title="奖品设置" target="dialog" width="800" height="600" href="{{ route('Admin.activities.show', $activity) }}" rel="navTab_{{ time() }}">{{ $activity->gifts->count() }}</a>
</td> -->
<td>{{ $activity->created_at }}</td>
<td>
<a title="编辑活动" target="dialog" width="800" height="600" href="{{ route('Admin.activities.edit', $activity) }}" rel="navTab_{{ time() }}">编辑</a>
<a title="删除活动" target="ajaxDelete" href="{{ route('Admin.activities.destroy', $activity) }}">删除</a>
<!-- <a title="奖品设置" target="dialog" width="800" height="600" href="{{ route('Admin.activities.show', $activity) }}" rel="navTab_{{ time() }}">奖品设置</a> -->
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $activities->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $activities->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($activities->perPage() == 30) selected @endif value="30">30</option>
<option @if ($activities->perPage() == 100) selected @endif value="100">100</option>
<option @if ($activities->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $activities->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $activities->total() }}" numPerPage="{{ $activities->perPage() }}" pageNumShown="10" currentPage="{{ $activities->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,54 @@
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li><a class="add" href="{{ route('Admin.activityGifts.create',$activity) }}" mask="true" target="dialog" width="600" height="600" rel="navTab_{{ time() }}" title="添加奖品"><span>添加奖品</span></a></li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
<th>奖品</th>
<th width="80">任务指标</th>
<th width="80">领取消耗</th>
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="80"></th>
</tr>
</thead>
<tbody>
@foreach ($gifts as $gift)
<tr>
<td>{{ $gift->id }}</td>
<td>{{ $gift->goods->title ?? ''}}-{{ $gift->param->value ?? ''}}</td>
<td>{{ $gift->mode}}</td>
<td>{{ $gift->consume_mode}}</td>
<td>{{ $gift->created_at }}</td>
<td>
<a title="编辑奖品" target="dialog" width="600" height="600" href="{{ route('Admin.activityGifts.edit', $gift) }}" rel="navTab_{{ time() }}" class="btnEdit">编辑</a>
<a title="删除奖品" target="ajaxDelete" href="{{ route('Admin.activityGifts.destroy', $gift) }}" class="btnDel">删除</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $gifts->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $gifts->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($gifts->perPage() == 30) selected @endif value="30">30</option>
<option @if ($gifts->perPage() == 100) selected @endif value="100">100</option>
<option @if ($gifts->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $gifts->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $gifts->total() }}" numPerPage="{{ $gifts->perPage() }}" pageNumShown="10" currentPage="{{ $gifts->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,45 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.adverts.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="60">
<div class="unit">
<label>url</label>
<input type="text" name="url" value="" />
</div>
<div class="divider"></div>
<div class="unit">
<label>轮播排序:</label>
<input type="text" name="sort" value="99" size="5" class="required digits"/>
</div>
<div class="divider"></div>
<div class="row">
<div class="col-md-12">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;width:200px;min-height:100px">
<img src="" style="display:none;width:200px;height: 100px" alt="">
</div>
<input type="hidden" id="storageID" name="storage_id" value="">
</div>
</div>
@csrf
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,53 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.adverts.update', $advert) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="60">
<div class="unit">
<label>url</label>
<input type="text" name="url" value="{{ $advert->url }}" />
</div>
<div class="divider"></div>
<div class="unit">
<label>轮播排序:</label>
<input type="text" name="sort" value="{{ $advert->sort }}" size="5" class="required digits"/>
</div>
<div class="divider"></div>
<div class="unit">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;width:200px;min-height:100px">
@if ($advert->storage)
<img src="{{$advert->storage->path}}" style="width:200px;height: 100px" alt="">
@else
<img src="" style="display:none;width:200px;height: 100px" alt="">
@endif
</div>
<input type="hidden" id="storageID" name="storage_id" value="{{ $advert->storage_id }}">
</div>
<div class="divider"></div>
</div>
@method('PUT')
@csrf
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,68 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="get">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
轮播模型:
<input type="text" name="model" value="{{ Request::input('model') }}"/>
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li><a class="add" href="{{ route('Admin.adverts.create') }}" mask="true" width="480" height="350" target="dialog" rel="dialog_{{ time() }}" title="创建轮播" ><span>创建轮播</span></a></li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="">链接地址</th>
<th width="">排序</th>
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="120" orderField="updated_at" @if (Request::input('orderField') == 'updated_at') class="{{ Request::input('orderDirection') }}" @endif>更新时间</th>
<th width="80"></th>
</tr>
</thead>
<tbody>
@foreach ($adverts as $advert)
<tr>
<td>{{ $advert->url }}</td>
<td>{{ $advert->sort }}</td>
<td>{{ $advert->created_at }}</td>
<td>{{ $advert->updated_at }}</td>
<td>
<a title="编辑轮播" target="dialog" href="{{ route('Admin.adverts.edit', $advert) }}" width="650" height="390" rel="dialog_{{ time() }}" class="btnEdit">编辑</a>
<a title="删除轮播" target="ajaxDelete" href="{{ route('Admin.adverts.destroy', $advert) }}" class="btnDel">删除</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $adverts->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $adverts->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($adverts->perPage() == 30) selected @endif value="30">30</option>
<option @if ($adverts->perPage() == 100) selected @endif value="100">100</option>
<option @if ($adverts->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $adverts->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $adverts->total() }}" numPerPage="{{ $adverts->perPage() }}" pageNumShown="10" currentPage="{{ $adverts->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,38 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.agencies.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>名称:</label>
<input type="text" name="name" value="" size="35" class="required" />
</div>
<div class="divider"></div>
<div class="unit">
<label>业务员:</label>
<select name="salesman_id" >
<option value="0">选择业务员</option>
@foreach($salesmans as $salesman)
<option value="{{ $salesman->id }}">{{ $salesman->info->nickname }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>状态:</label>
<select name="status" >
<option value="1">正常</option>
<option value="2">关闭</option>
</select>
</div>
</div>
@csrf
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,40 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.agencies.update',$agency) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>名称:</label>
<input type="text" name="name" value="{{ $agency->name }}" size="35" class="required" />
</div>
<div class="divider"></div>
<div class="unit">
<label>业务员:</label>
<select name="salesman_id" >
<option value="0">选择业务员</option>
@foreach($salesmans as $salesman)
<option value="{{ $salesman->id }}" @if($agency->salesman_id == $salesman->id) selected @endif >{{ $salesman->info->nickname }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>状态:</label>
<select name="status" >
<option value="1" @if($agency->status==1) selected @endif>正常</option>
<option value="0" @if($agency->status===0) selected @endif>关闭</option>
</select>
</div>
</div>
@csrf
@method('PUT')
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,61 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="get">
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li><a class="add" href="{{ route('Admin.agencies.create') }}" mask="true" width="480" height="350" target="dialog" rel="dialog_{{ time() }}" title="创建代理" ><span>创建代理</span></a></li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50">编号</th>
<th width="100">标题</th>
<th width="100">状态</th>
<th width="100">管理人</th>
<th width="100">业务员</th>
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="200"></th>
</tr>
</thead>
<tbody>
@foreach ($lists as $agency)
<tr>
<td>{{ $agency->id }}</td>
<td>{{ $agency->name }}</td>
<td>{!! $agency->status_text !!}</td>
<td>{{ $agency->user->info->nickname }}</td>
<td>{{ $agency->salesman->info->nickname }}</td>
<td>{{ $agency->created_at }}</td>
<td>
<a title="编辑" target="dialog" href="{{ route('Admin.agencies.edit', $agency) }}" width="650" height="390" rel="dialog_{{ time() }}" >编辑</a>
<a title="绑定管理人" target="dialog" href="{{ route('Admin.agencies.user', $agency) }}" width="800" height="600" rel="dialog_{{ time() }}" >绑定管理</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $lists->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $lists->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($lists->perPage() == 30) selected @endif value="30">30</option>
<option @if ($lists->perPage() == 100) selected @endif value="100">100</option>
<option @if ($lists->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $lists->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $lists->total() }}" numPerPage="{{ $lists->perPage() }}" pageNumShown="10" currentPage="{{ $lists->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,40 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.agencies.douser',$agency) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>当前管理人:</label>
<input type="text" value="{{ $agency->user->info->nickname }}" size="35" class="required" disabled="" />
</div>
<div class="divider"></div>
<div class="unit">
<label>新管理人:</label>
<input type="text" name="mobile" placeholder="新管理人手机号" size="35" class="mobile" />
<input type="hidden" value="" size="35" name="user_id" />
<button type="button" class="check">校验</button>
</div>
</div>
@csrf
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>
<script type="text/javascript">
$('.check').click(function(){
var mobile = $('.mobile').val();
$.get("{{ route('Admin.agencies.checkuser') }}",{mobile:mobile},function(res){
if (res.statusCode==200) {
$('input[name=user_id]').val(res.message.user_id);
alertMsg.confirm('校验成功,昵称:'+res.message.nickname);
}else{
alertMsg.confirm(res.message);
}
});
});
</script>

View File

@@ -0,0 +1,38 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.areas.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="60">
<div class="unit">
<label>所属:</label>
<select name="psn" class="combox">
@foreach ($list as $area)
<option value="{{ $area['sn'] }}">{{ $area['title_show'] }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>状态:</label>
<select name="status" class="combox">
<option value="1">开通</option>
<option value="0">关闭</option>
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>名称:</label>
<input type="text" name="name" value="" class="required"/>
</div>
<div class="divider"></div>
</div>
@csrf
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,38 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.areas.update', $area) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="60">
<div class="unit">
<label>所属:</label>
<select name="psn" class="combox">
@foreach ($list as $value)
<option value="{{ $value['sn'] }}" @if ($area->psn == $value['sn']) selected @endif >{{ $value['title_show'] }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>状态:</label>
<select name="status" class="combox">
<option value="1" @if ($area->status == 1) selected @endif>开通</option>
<option value="0" @if ($area->status === 0) selected @endif>关闭</option>
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>名称:</label>
<input type="text" name="name" value="{{ $area->name }}" class="required"/>
</div>
<div class="divider"></div>
</div>
@csrf
@method('PUT')
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,114 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
<select class="combox" name="psn">
<option value="">全部</option>
@foreach($list as $area)
<option value="{{ $area['sn'] }}" @if (Request::input('psn') == $area['sn']) selected @endif>{{ $area['title_show'] }}</option>
@endforeach
</select>
</td>
<td>
地区名称:
<input type="text" name="info" value="{{ Request::input('info') }}"/>
</td>
<td>
<select class="combox" name="type">
<option value="">类型</option>
<option @if (Request::input('type') == '省级') selected @endif value="省级">省级</option>
<option @if (Request::input('type') == '地级') selected @endif value="地级">地级</option>
<option @if (Request::input('type') == '县级') selected @endif value="县级">县级</option>
</select>
</td>
<td>
<select class="combox" name="status">
<option value="">状态</option>
<option @if (Request::input('status') == 1) selected @endif value="1">已开通</option>
<option @if (Request::input('status') === 0) selected @endif value="0">未开通</option>
</select>
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li><a class="add" href="{{ route('Admin.areas.create') }}" mask="true" rel="dialog_{{ time() }}" target="dialog" width="800" height="600" title="添加"><span>添加</span></a></li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="22"><input type="checkbox" group="ids[]" class="checkboxCtrl"></th>
<th width="120">省份名称</th>
<th width="120">市名称</th>
<th width="120">区名称</th>
<th width="60">类型</th>
<th width="80">状态</th>
<th width="80">热门</th>
<th width="120">更新时间</th>
<th width=""></th>
</tr>
</thead>
<tbody>
@foreach ($areas as $area)
<tr>
<td><input name="ids[]" value="{{ $area->id }}" type="checkbox"></td>
<td>{{ $area->province }}</td>
<td> {{ $area->city }} </td>
<td>{{ $area->area }}</td>
<td>{{ $area->type }}</td>
<td>{{ $area->status_text }}</td>
<td>{!! $area->hot_text !!}</td>
<td>{{ $area->updated_at }}</td>
<td>
@if($area->status!=1)
<a title="开通区域" target="ajaxDelete" href="{{ route('Admin.areas.open', ['area'=>$area,'status'=>1]) }}" style="color: blue">开通</a>
@else
<a title="取消开通区域" target="ajaxDelete" href="{{ route('Admin.areas.open', ['area'=>$area,'status'=>0]) }}" style="color: grey" >关闭区域</a>
@endif
@if($area->depth==2)
@if($area->hot==1)
<a title="取消热门" target="ajaxTodo" href="{{ route('Admin.areas.hot', ['area'=>$area,'hot'=>0]) }}" style="color: blue">取消热门</a>
@else
<a title="设置热门" target="ajaxTodo" href="{{ route('Admin.areas.hot', ['area'=>$area,'hot'=>1]) }}" style="color: blue">开通热门</a>
@endif
@endif
@if($area->depth>2)
<a title="编辑" target="dialog" href="{{ route('Admin.areas.edit', $area) }}" rel="dialog{{ time() }}" mask="true" width="800" height="600">编辑</a>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $areas->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $areas->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($areas->perPage() == 30) selected @endif value="30">30</option>
<option @if ($areas->perPage() == 100) selected @endif value="100">100</option>
<option @if ($areas->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $areas->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $areas->total() }}" numPerPage="{{ $areas->perPage() }}" pageNumShown="10" currentPage="{{ $areas->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,52 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.articles.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
<div class="pageFormContent" layoutH="55">
<input type="hidden" name="type" value="{{ Request::input('type') }}">
<input type="hidden" name="click" value="0">
<div class="unit">
<label>文章标题:</label>
<input type="text" name="title" value="" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>文章描述:</label>
<textarea name="description" rows="3" cols="80"></textarea>
</div>
<div class="divider"></div>
<div class="row">
<div class="col-md-8">
@ueditor('', 'content',"{{ Request::input('type') }}")
</div>
<div class="col-md-4">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
<img src="" style="display:none;width:100%" alt="">
</div>
<input type="hidden" id="storageID" name="storage_id" value="">
</div>
</div>
</div>
@csrf
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,55 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.articles.update', $article) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>文章标题:</label>
<input type="text" name="title" value="{{ $article->title }}" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>文章描述:</label>
<textarea name="description" rows="3" cols="80">{{ $article->description }}</textarea>
</div>
<div class="divider"></div>
<div class="row">
<div class="col-md-8">
@ueditor($article->content, 'content',"articles{{ $article->id }}")
</div>
<div class="col-md-4">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
@if ($article->storage->path)
<img src="{{$article->storage->path}}" style="width:100%" alt="">
@else
<img src="" style="display:none;width:100%" alt="">
@endif
</div>
<input type="hidden" id="storageID" name="storage_id" value="{{ $article->storage_id }}">
</div>
</div>
</div>
@csrf
<div class="formBar">
<ul>
@csrf
@method('PUT')
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,66 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
新闻标题:
<input type="text" name="title" value="{{ Request::input('title') }}"/>
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li><a class="add" href="{{ route('Admin.articles.create',['type'=>$type]) }}" mask="true" target="navTab" rel="navTab_{{ time() }}" title="添加文章"><span>添加文章</span></a></li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
<th>文章标题</th>
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="80"></th>
</tr>
</thead>
<tbody>
@foreach ($articles as $article)
<tr>
<td>{{ $article->id }}</td>
<td>{{ $article->title }}</td>
<td>{{ $article->created_at }}</td>
<td>
<a title="编辑文章" target="navTab" href="{{ route('Admin.articles.edit', $article) }}" rel="navTab_{{ time() }}" class="btnEdit">编辑</a>
<a title="删除文章" target="ajaxDelete" href="{{ route('Admin.articles.destroy', $article) }}" class="btnDel">删除</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $articles->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $articles->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($articles->perPage() == 30) selected @endif value="30">30</option>
<option @if ($articles->perPage() == 100) selected @endif value="100">100</option>
<option @if ($articles->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $articles->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $articles->total() }}" numPerPage="{{ $articles->perPage() }}" pageNumShown="10" currentPage="{{ $articles->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,63 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.categories.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="60">
<div class="unit">
<label>分类名称:</label>
<input type="text" name="title" value="" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>上级分类:</label>
<select name="parent_id" class="combox">
@foreach ($topCates as $cate)
<option @if ($cate['id'] == Request::get('parent_id')) selected @endif value="{{ $cate['id'] }}">{!! $cate['title_show'] !!}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>分类排序:</label>
<input type="text" name="sort" value="99" size="5" class="required digits"/>
</div>
<div class="unit" style="display: none">
<label>是否推荐:</label>
<select name="is_recommend" class="combox">
<option value="0"></option>
<option value="1"></option>
</select>
</div>
<div class="unit" style="display: none">
<label>推荐排序:</label>
<input type="text" name="recommend_sort" value="0" size="5" class="required digits"/>
</div>
<div class="row">
<div class="col-md-12">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-height:50px;max-width: 50px">
<img src="" style="display:none;width:50px" alt="">
</div>
<input type="hidden" id="storageID" name="storage_id" value="">
</div>
</div>
@csrf
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,70 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.categories.update', $category) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="60">
<div class="unit">
<label>分类名称:</label>
<input type="text" name="title" value="{{ $category->title }}" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>上级分类:</label>
<select name="parent_id" class="combox">
@foreach ($topCates as $top)
<option @if ($top['id'] == $category->parent_id) selected @endif value="{{ $top['id'] }}">{!! $top['title_show'] !!}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>分类排序:</label>
<input type="text" name="sort" value="{{ $category->sort }}" size="5" class="required digits"/>
</div>
<div class="unit" style="display: none;">
<label>是否推荐:</label>
<select name="is_recommend" class="combox">
<option value="0"@if (0 == $category->is_recommend) selected @endif></option>
<option value="1"@if (1 == $category->is_recommend) selected @endif></option>
</select>
</div>
<div class="unit" style="display: none;">
<label>推荐排序:</label>
<input type="text" name="recommend_sort" value="{{ $category->recommend_sort }}" size="5" class="required digits"/>
</div>
<div class="row">
<div class="col-md-12">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-height:50px;max-width: 50px">
@if ($category->storage->path)
<img src="{{$category->storage->path}}" style="width:50px" alt="">
@else
<img src="" style="display:none;width:50px" alt="">
@endif
</div>
<input type="hidden" id="storageID" name="storage_id" value="{{ $category->storage_id }}">
</div>
</div>
</div>
@csrf
@method('PUT')
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,110 @@
<div class="pageContent">
<div style="float:left;width:240px;border-right:1px #B8D0D6 solid;">
<div class="pageHeader">
<h2 style="line-height:24px;">分类结构</h2>
</div>
<ul class="tree treeFolder expand" layoutH="36">
@foreach($categoryTree as $category)
<li><a>{{ $category->title }}</a>
@if ($category->children->count())
<ul>
@foreach($category->children as $child)
<li><a href="" title="">{{ $child->title }}</a>
@if ($child->children->count())
<ul>
@foreach($child->children as $son)
<li><a href="" title="">{{ $son->title }}</a></li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>
</div>
<div style="margin-left:245px;border-left:1px #B8D0D6 solid;">
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
分类名称:
<input type="text" name="title" value="{{ Request::input('title') }}"/>
</td>
<td>
<input type="hidden" name="parent_id" value="{{ Request::get('parent_id') }}">
<div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div>
</td>
</tr>
</table>
</div>
</form>
</div>
<div class="panelBar">
<ul class="toolBar">
@if (Request::get('parent_id'))
<li><a class="add" href="{{ route('Admin.categories.create', ['parent_id' => Request::get('parent_id')]) }}" target="dialog" mask="true" width="600" height="400" rel="diaolog_{{ time() }}" title="添加分类"><span>添加分类</span></a></li>
@else
<li><a class="add" href="{{ route('Admin.categories.create') }}" target="dialog" mask="true" width="600" height="400" rel="diaolog_{{ time() }}" title="添加分类"><span>添加分类</span></a></li>
@endif
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="40">ID</th>
<th width="130">分类名称</th>
<th width="50">排序</th>
<th width="100">是否推荐</th>
<th width="100">推荐排序</th>
<th></th>
<th width="120">创建时间</th>
<th width="120">更新时间</th>
<th width="80"></th>
</tr>
</thead>
<tbody>
@foreach ($categories as $category)
<tr target="sid" rel="{$vo.id}">
<td>{{ $category->id }}</td>
<td><a href="{{ route('Admin.categories.index', ['parent_id' => $category->id]) }}" target="navTab" rel="categories" title="分类管理">{{ $category->title }}</a></td>
<td>{{ $category->sort }}</td>
<td>{{ $category->is_recommend == 1 ? '是' : '否' }}</td>
<td>{{ $category->recommend_sort }}</td>
<td>{{ $category->description }}</td>
<td>{{ $category->created_at }}</td>
<td>{{ $category->updated_at }}</td>
<td>
<a title="编辑" target="dialog" href="{{ route('Admin.categories.edit', $category) }}" rel="dialog_{{ time() }}" mask="true" width="600" height="400" class="btnEdit">编辑</a>
<a title="删除" target="ajaxDelete" href="{{ route('Admin.categories.destroy', $category) }}" class="btnDel">删除</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $categories->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $categories->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($categories->perPage() == 30) selected @endif value="30">30</option>
<option @if ($categories->perPage() == 100) selected @endif value="100">100</option>
<option @if ($categories->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $categories->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $categories->total() }}" numPerPage="{{ $categories->perPage() }}" pageNumShown="10" currentPage="{{ $categories->currentPage() }}"></div>
</div>
</div>
</div>

View File

@@ -0,0 +1,11 @@
@foreach ($children as $item)
<ul>
<li>
<a>{{ $item['text'] }}</a>
@isset($item['children'])
@component('Admin::tree', ['children' => $item['children']])
@endcomponent
@endisset
</li>
</ul>
@endforeach

View File

@@ -0,0 +1,174 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
商家名称:
<input type="text" name="seller" value="{{ Request::input('seller') }}" placeholder=""/>
</td>
<td>
商品名称:
<input type="text" name="title" value="{{ Request::input('title') }}" placeholder=""/>
</td>
<td>
<select name="is_gift" class="combox">
<option value="">按赠品检索</option>
<option value="is_seller_gift" @if(Request::get('is_gift') == 'is_seller_gift') selected @endif>开通会员赠品</option>
<option value="is_mall_gift" @if(Request::get('is_gift') == 'is_mall_gift') selected @endif>满仓赠品</option>
</select>
</td>
<td>
<select name="position" class="combox">
<option value="">首页推荐位</option>
<option value="is_seller_package" @if(Request::get('position') == 'is_seller_package') selected @endif>首页99套餐</option>
<option value="is_recommend" @if(Request::get('position') == 'is_recommend') selected @endif>首页全积分购</option>
<option value="is_hot_sell" @if(Request::get('position') == 'is_hot_sell') selected @endif>首页全现金购</option>
<option value="is_hot_changed" @if(Request::get('position') == 'is_hot_changed') selected @endif>首页积分+现金</option>
</select>
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li><a class="add" href="{{ route('Admin.goods.create') }}" mask="true" target="navTab" rel="navTab_{{ time() }}" title="添加商品"><span>添加商品</span></a></li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
<th width="80">商品类型</th>
<th>商品名称</th>
<th width="100">商户名称</th>
<th width="100">规格</th>
<th width="100">售价</th>
<th width="100">成本价</th>
<th width="100">会员赠品</th>
<th width="100">满仓赠品</th>
<th width="100">平台推荐位</th>
<th width="60">排序</th>
<th width="60">状态</th>
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="200"></th>
</tr>
</thead>
<tbody>
@php
$goodids = array();
@endphp
@foreach ($goods as $good)
@foreach($good->params()->where('status',1)->get() as $params)
<tr>
@if(!in_array($good->id, $goodids))
<td>{{ $good->id }}</td>
<td>{{ $good->category->title }}</td>
<td>{{ $good->title }}</td>
<td>{{ $good->seller->name }}</td>
@else
<td></td>
<td></td>
<td></td>
<td></td>
@endif
<td>{{ $params->value }}
</td>
<td>
@if($params->score == 0){{ number_format($params->price,2) }}
@else
@if($params->price - $params->score > 0){{ number_format($params->price - $params->score,2) }} + @endif
{{ number_format($params->score,2) }}积分
@endif
</td>
<td>{{ number_format($params->cost,2) }}
</td>
@if(!in_array($good->id, $goodids))
<td>@if($good->is_seller_gift == 0 && $good->status == 1)<a title="设为开通会员商品" target="ajaxTodo" href="{{ route('Admin.goods.setgift', $good) }}">设为赠品</a>@endif
@if($good->is_seller_gift == 1 && $good->status == 1)<span style="color: red">赠品</span> &nbsp; <a title="取消赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelgift', $good) }}">取消</a>@endif
</td>
<td>@if($good->is_mall_gift == 0 && $good->status == 1)<a title="设为满仓商品" target="ajaxTodo" href="{{ route('Admin.goods.setFull', $good) }}">设为满仓赠</a>@endif
@if($good->is_mall_gift == 1 && $good->status == 1)<span style="color: red">满仓</span> &nbsp; <a title="取消满仓赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelFull', $good) }}">取消</a>@endif
</td>
<td>@if($good->is_recommend == 1) 1.全积分购 @endif
@if($good->is_hot_sell == 1) 2.全现金购 @endif
@if($good->is_hot_changed == 1) 3.积分现金购 @endif
@if($good->is_seller_package == 1) 4.首页99套餐 @endif
</td>
<td>{{ $good->sort }}</td>
<td>{!! $good->status_text !!}</td>
<td>{{ $good->created_at }}</td>
<td>
@if($good->status == 1)<a title="编辑商品" target="navTab" href="{{ route('Admin.goods.edit', $good) }}" rel="navTab_{{ time() }}">编辑</a>@endif
{{--@if($good->status == 1)<a title="编辑商品" target="navTab" href="{{ route('Admin.goods.magageedit', $good) }}" rel="navTab_{{ time() }}">编辑</a>@endif--}}
@if($good->canDel())<a title="请确认要删除商品吗?" target="ajaxDelete" href="{{ route('Admin.goods.delete', $good) }}">删除</a>@endif
@if($good->canCancel())<a title="请确认要下架商品吗?" target="ajaxDelete" href="{{ route('Admin.goods.destroy', $good) }}">下架</a>@endif
<a title="推荐到首页" target="dialog" href="{{ route('Admin.goods.setting', $good) }}" rel="dialog{{ time() }}" mask="true" width="800" height="460">推荐到首页</a>
@if($good->status == 0)<a title="上架商品" target="navTab" href="{{ route('Admin.goods.putOn', $good) }}" rel="navTab_{{ time() }}">上架</a>@endif
@if($good->is_seller_gift == 1 && $good->status == 1)<a title="取消赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelgift', $good) }}">取消赠品</a> @endif
</td>
@else
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
@endif
</tr>
@php
array_push($goodids,$good->id);
@endphp
@endforeach
@endforeach
<tr><td colspan="11" height="50px">
<p style="color: red;padding: 10px;">
1》删除商品- 未产生订单的商品可删除删除操作不可逆。2》下架商品- 已产生订单的商品不可删除,只能下架,下架后不会再产生新订单,下架操作可通过上架操作恢复商品。
</p>
</td>
</tr>
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $goods->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $goods->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($goods->perPage() == 30) selected @endif value="30">30</option>
<option @if ($goods->perPage() == 100) selected @endif value="100">100</option>
<option @if ($goods->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $goods->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $goods->total() }}" numPerPage="{{ $goods->perPage() }}" pageNumShown="10" currentPage="{{ $goods->currentPage() }}"></div>
</div>
</div>
<script type="text/javascript">
//点击导出
$('.export-data').click(function (event) {
location.href = "{{ route('Admin.export.goods') }}?" + $(this).parents('form').serialize();
});
</script>

View File

@@ -0,0 +1,65 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.coupon.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>券码名称:</label>
<input type="text" name="title" value="" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>券码描述:</label>
<textarea name="remark" rows="3" cols="80"></textarea>
</div>
<div class="divider"></div>
<div class="unit">
<label>使用途径:</label>
<select name="online" class="combox">
<option value="">请选择途径</option>
<option value="1">线上使用</option>
<option value="0">线下使用</option>
</select>
</div>
<!-- <div class="unit">
<label>最大数量:</label>
<input type="text" name="number" value="0" size="5" class="required"/>
</div> -->
<div class="unit">
<label>享用额度:</label>
<input type="text" name="bouns" value="0" size="5" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>有效期起始:</label>
<input type="text" name="start_at" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd" readonly="true">
</div>
<div class="unit">
<label>有效期结束:</label>
<input type="text" name="end_at" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd" readonly="true">
</div>
<div class="divider"></div>
<div class="unit">
<label>使用条件:</label>
<select name="type" class="combox">
<option value="">请选择使用条件</option>
<option value="lesson">报课</option>
<option value="lottery">抽奖</option>
</select>
</div>
<!-- <div class="unit">
<label>条件数额:</label>
<input type="text" name="rule_number" value="0" size="5" class="required"/>
</div> -->
</div>
@csrf
<input type="hidden" name="seller_id" value="{{ Admin::user()->username }}">
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,68 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.coupon.update',$info) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>券码名称:</label>
<input type="text" name="title" value="{{ $info->title }}" size="79" class="required"/>
</div>
<input type="hidden" name="seller_id" value="{{ $info->seller_id }}">
<div class="divider"></div>
<div class="unit">
<label>券码描述:</label>
<textarea name="remark" rows="3" cols="80">{{ $info->remark }}</textarea>
</div>
<div class="divider"></div>
<div class="unit">
<label>使用途径:</label>
<select name="online" class="combox">
<option value="">请选择途径</option>
<option value="1" @if($info->online==1) selected @endif>线上使用</option>
<option value="0" @if($info->online===0) selected @endif>线下使用</option>
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>状态:</label>
<select name="status" class="combox">
<option value="1" @if($info->status==1) selected @endif>正常</option>
<option value="0" @if($info->status===0) selected @endif>下架</option>
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>享用额度:</label>
<input type="text" name="bouns" value="{{ $info->bouns }}" size="5" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>有效期起始:</label>
<input type="text" name="start_at" value="{{ $info->start_at->format('Y-m-d') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd" readonly="true">
</div>
<div class="unit">
<label>有效期结束:</label>
<input type="text" name="end_at" value="{{ $info->end_at->format('Y-m-d') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd" readonly="true">
</div>
<div class="divider"></div>
<div class="unit">
<label>使用条件:</label>
<select name="type" class="combox">
<option value="">请选择使用条件</option>
<option value="lesson" @if($info->type=='lesson') selected @endif>报名课程</option>
</select>
</div>
</div>
@csrf
@method('PUT')
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,84 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
名称:
<input type="text" name="title" value="{{ Request::input('title') }}" placeholder=""/>
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li><a class="add" href="{{ route('Admin.coupon.create') }}" mask="true" target="navTab" rel="navTab_{{ time() }}" title="添加券码"><span>添加券码</span></a></li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
<th width="200">券码名称</th>
<th width="100">线上</th>
<th width="100">有效起始</th>
<th width="100">有效结束</th>
<th width="60">状态</th>
<th width="60">用途</th>
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="120"></th>
</tr>
</thead>
<tbody>
@foreach ($coupons as $coupon)
<tr>
<td>{{ $coupon->id }}</td>
<td>{{ $coupon->title }}</td>
<td>
@if($coupon->online == 1)
@else
@endif
</td>
<td>{{ $coupon->start_at }}</td>
<td>{{ $coupon->end_at }}</td>
<td>{!! $coupon->status_text !!}</td>
<td>{!! $coupon->type_text !!}</td>
<td>{{ $coupon->created_at }}</td>
<td>
<a title="编辑券码" target="navTab" href="{{ route('Admin.coupon.edit', $coupon) }}" rel="navTab_{{ time() }}">编辑</a>
@if($coupon->canCancel())
<a title="请确认要下架券码吗?" target="ajaxDelete" href="{{ route('Admin.coupon.destroy', $coupon) }}">下架</a>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $coupons->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $coupons->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($coupons->perPage() == 30) selected @endif value="30">30</option>
<option @if ($coupons->perPage() == 100) selected @endif value="100">100</option>
<option @if ($coupons->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $coupons->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $coupons->total() }}" numPerPage="{{ $coupons->perPage() }}" pageNumShown="10" currentPage="{{ $coupons->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,182 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
商家名称:
<input type="text" name="seller" value="{{ Request::input('seller') }}" placeholder=""/>
</td>
<td>
商品名称:
<input type="text" name="title" value="{{ Request::input('title') }}" placeholder=""/>
</td>
<td>
<select name="category_id" class="combox">
<option value="">按商品分类</option>
@foreach ($categoies as $category)
<option value="{{ $category['id'] }}" @if(Request::get('category_id') == $category['id']) selected @endif>{{ $category['title_show'] }}</option>
@endforeach
</select>
</td>
<td>
<select name="is_gift" class="combox">
<option value="">按赠品检索</option>
<option value="is_seller_gift" @if(Request::get('is_gift') == 'is_seller_gift') selected @endif>开通会员赠品</option>
<option value="is_mall_gift" @if(Request::get('is_gift') == 'is_mall_gift') selected @endif>满仓赠品</option>
</select>
</td>
<td>
<select name="position" class="combox">
<option value="">首页推荐位</option>
<option value="is_seller_package" @if(Request::get('position') == 'is_seller_package') selected @endif>首页99套餐</option>
<option value="is_recommend" @if(Request::get('position') == 'is_recommend') selected @endif>首页全积分购</option>
<option value="is_hot_sell" @if(Request::get('position') == 'is_hot_sell') selected @endif>首页全现金购</option>
<option value="is_hot_changed" @if(Request::get('position') == 'is_hot_changed') selected @endif>首页积分+现金</option>
</select>
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li><a class="add" href="{{ route('Admin.goods.create') }}" mask="true" target="navTab" rel="navTab_{{ time() }}" title="添加商品"><span>添加商品</span></a></li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
<th width="80">商品类型</th>
<th>商品名称</th>
<th width="100">商户名称</th>
<th width="100">规格</th>
<th width="100">售价</th>
<th width="100">成本价</th>
<th width="100">会员赠品</th>
<th width="100">满仓赠品</th>
<th width="100">平台推荐位</th>
<th width="60">排序</th>
<th width="60">状态</th>
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="200"></th>
</tr>
</thead>
<tbody>
@php
$goodids = array();
@endphp
@foreach ($goods as $good)
@foreach($good->params()->where('status',1)->get() as $params)
<tr>
@if(!in_array($good->id, $goodids))
<td>{{ $good->id }}</td>
<td>{{ $good->category->title }}</td>
<td>{{ $good->title }}</td>
<td>{{ $good->seller->name }}</td>
@else
<td></td>
<td></td>
<td></td>
<td></td>
@endif
<td>{{ $params->value }}
</td>
<td>
@if($params->score == 0){{ number_format($params->price,2) }}
@else
@if($params->price - $params->score > 0){{ number_format($params->price - $params->score,2) }} + @endif
{{ number_format($params->score,2) }}积分
@endif
</td>
<td>{{ number_format($params->cost,2) }}
</td>
@if(!in_array($good->id, $goodids))
<td>@if($good->is_seller_gift == 0 && $good->status == 1)<a title="设为开通会员商品" target="ajaxTodo" href="{{ route('Admin.goods.setgift', $good) }}">设为赠品</a>@endif
@if($good->is_seller_gift == 1 && $good->status == 1)<span style="color: red">赠品</span> &nbsp; <a title="取消赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelgift', $good) }}">取消</a>@endif
</td>
<td>@if($good->is_mall_gift == 0 && $good->status == 1)<a title="设为满仓商品" target="ajaxTodo" href="{{ route('Admin.goods.setFull', $good) }}">设为满仓赠</a>@endif
@if($good->is_mall_gift == 1 && $good->status == 1)<span style="color: red">满仓</span> &nbsp; <a title="取消满仓赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelFull', $good) }}">取消</a>@endif
</td>
<td>@if($good->is_recommend == 1) 1.全积分购 @endif
@if($good->is_hot_sell == 1) 2.全现金购 @endif
@if($good->is_hot_changed == 1) 3.积分现金购 @endif
@if($good->is_seller_package == 1) 4.首页99套餐 @endif
</td>
<td>{{ $good->sort }}</td>
<td>{!! $good->status_text !!}</td>
<td>{{ $good->created_at }}</td>
<td>
@if($good->status == 1)<a title="编辑商品" target="navTab" href="{{ route('Admin.goods.edit', $good) }}" rel="navTab_{{ time() }}">编辑</a>@endif
{{--@if($good->status == 1)<a title="编辑商品" target="navTab" href="{{ route('Admin.goods.magageedit', $good) }}" rel="navTab_{{ time() }}">编辑</a>@endif--}}
@if($good->canDel())<a title="请确认要删除商品吗?" target="ajaxDelete" href="{{ route('Admin.goods.delete', $good) }}">删除</a>@endif
@if($good->canCancel())<a title="请确认要下架商品吗?" target="ajaxDelete" href="{{ route('Admin.goods.destroy', $good) }}">下架</a>@endif
<a title="推荐到首页" target="dialog" href="{{ route('Admin.goods.setting', $good) }}" rel="dialog{{ time() }}" mask="true" width="800" height="460">推荐到首页</a>
@if($good->status == 0)<a title="上架商品" target="navTab" href="{{ route('Admin.goods.putOn', $good) }}" rel="navTab_{{ time() }}">上架</a>@endif
@if($good->is_seller_gift == 1 && $good->status == 1)<a title="取消赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelgift', $good) }}">取消赠品</a> @endif
</td>
@else
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
@endif
</tr>
@php
array_push($goodids,$good->id);
@endphp
@endforeach
@endforeach
<tr><td colspan="11" height="50px">
<p style="color: red;padding: 10px;">
1》删除商品- 未产生订单的商品可删除删除操作不可逆。2》下架商品- 已产生订单的商品不可删除,只能下架,下架后不会再产生新订单,下架操作可通过上架操作恢复商品。
</p>
</td>
</tr>
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $goods->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $goods->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($goods->perPage() == 30) selected @endif value="30">30</option>
<option @if ($goods->perPage() == 100) selected @endif value="100">100</option>
<option @if ($goods->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $goods->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $goods->total() }}" numPerPage="{{ $goods->perPage() }}" pageNumShown="10" currentPage="{{ $goods->currentPage() }}"></div>
</div>
</div>
<script type="text/javascript">
//点击导出
$('.export-data').click(function (event) {
location.href = "{{ route('Admin.export.goods') }}?" + $(this).parents('form').serialize();
});
</script>

View File

@@ -0,0 +1,109 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.goods.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
<div class="pageFormContent" layoutH="55">
@if(Admin::id() == 1)
<div class="unit">
<label>所属商户:</label>
<select name="seller_id" class="combox">
@foreach ($sellers as $seller)
<option value="{{ $seller['id'] }}">{{ $seller['name'] }}</option>
@endforeach
</select>
</div>
@endif
<div class="divider"></div>
<div class="unit">
<label>商品分类:</label>
<select name="category_id" class="combox">
@foreach ($categoies as $category)
<option value="{{ $category['id'] }}">{{ $category['title_show'] }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>商品名称:</label>
<input type="text" name="title" value="" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>商品描述:</label>
<textarea name="description" rows="3" cols="80"></textarea>
</div>
<div class="divider"></div>
<div class="row">
<div class="col-md-8">
@ueditor('', 'content','goods')
</div>
<div class="col-md-4">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
<img src="" style="display:none;width:100%" alt="">
</div>
<input type="hidden" id="storageID" name="storage_id" value="">
</div>
</div>
<div class="tabs">
<div class="tabsContent" style="height: 150px;">
<div>
<table class="list nowrap itemDetail" addButton="添加规格" width="100%">
<thead>
<tr>
<th type="text" name="params[#index#][value]" size="30" fieldClass="required" fieldAttrs="{remote:'validate_remote.html', maxlength:40}">规格名称</th>
<th type="text" name="params[#index#][original]" defaultVal="0" size="18" fieldClass="number">原价</th>
<th type="text" name="params[#index#][price]" defaultVal="0" size="18" fieldClass="number">售价</th>
<th type="text" name="params[#index#][stock]" defaultVal="0" size="15" fieldClass="digits">库存</th>
<th type="text" name="params[#index#][heavy]" defaultVal="0" size="15" fieldClass="number">单品重量(kg)</th>
<th type="text" name="params[#index#][is_free_freight]" defaultVal="0" size="15" fieldClass="number">包邮(0:不包邮;1:包邮)</th>
<th type="del" width="60">操作</th>
</tr>
</thead>
<tbody>
<tr class="unitBox">
<td><input type="text" name="params[0][value]" value="0" size="30" class="required" maxlength="40"></td>
<td><input type="text" name="params[0][original]" value="0" size="18" class="number textInput"></td>
<td><input type="text" name="params[0][price]" value="0" size="18" class="number textInput"></td>
<td><input type="text" name="params[0][stock]" value="0" size="15" class="digits textInput"></td>
<td><input type="text" name="params[0][heavy]" value="0" size="15" class="number textInput"></td>
<td><input type="text" name="params[0][is_free_freight]" value="0" size="15" class="number textInput"></td>
<td><a href="javascript:void(0)" class="btnDel">删除</a></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="tabsFooter">
<div class="tabsFooterContent"></div>
</div>
</div>
</div>
@csrf
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,64 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.goods.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>产品名称:</label>
<input type="text" name="title" value="" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>产品描述:</label>
<textarea name="description" rows="3" cols="80"></textarea>
</div>
<div class="divider"></div>
<div class="unit">
<label>产品分类:</label>
<select name="" class="combox">
@foreach ($categoies as $category)
<option value="{{ $category['id'] }}">{{ $category['title_show'] }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>产品单价:</label>
<input type="text" name="price" value="" class="required"/>
<label>产品库存:</label>
<input type="text" name="stock" value="" class="required"/>
</div>
<div class="divider"></div>
<div class="row">
<div class="col-md-8">
@ueditor('', 'content')
</div>
<div class="col-md-4">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
<img src="" style="display:none;width:100%" alt="">
</div>
<input type="hidden" id="storageID" name="storage_id" value="">
</div>
</div>
</div>
@csrf
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,117 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.goods.update', $good) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
<div class="pageFormContent" layoutH="55">
@if(Admin::id() == 1)
<div class="unit">
<label>所属商户:</label>
<select name="seller_id" class="combox">
@foreach ($sellers as $seller)
<option value="{{ $seller['id'] }}" @if($good->seller_id == $seller['id']) selected @endif>{{ $seller['name'] }}</option>
@endforeach
</select>
</div>
@endif
<div class="divider"></div>
<div class="unit">
<label>商品分类:</label>
<select name="category_id" class="combox">
@foreach ($categoies as $category)
<option value="{{ $category['id'] }}" @if($category['id'] == $good->category_id) selected @endif>{{ $category['title_show'] }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>商品名称:</label>
<input type="text" name="title" value="{{ $good->title }}" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>商品描述:</label>
<textarea name="description" rows="3" cols="80">{{ $good->description }}</textarea>
</div>
<div class="divider"></div>
<div class="row">
<div class="col-md-8">
@ueditor($good->content, 'content',"goods{{ $good->id }}")
</div>
<div class="col-md-4">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
@if ($good->storage->path)
<img src="{{$good->storage->path}}" style="width:100%" alt="">
@else
<img src="" style="display:none;width:100%" alt="">
@endif
</div>
<input type="hidden" id="storageID" name="storage_id" value="{{ $good->storage_id }}">
</div>
</div>
<div class="tabs">
<div class="tabsContent" style="height: 150px;">
<div>
<table class="list nowrap itemDetail" addButton="添加规格" width="100%">
<thead>
<tr>
<th type="text" name="params[#index#][value]" size="30" fieldClass="required" fieldAttrs="{remote:'validate_remote.html', maxlength:40}">规格名称</th>
<th type="text" name="params[#index#][original]" defaultVal="0" size="18" fieldClass="number">原价</th>
<th type="text" name="params[#index#][price]" defaultVal="0" size="18" fieldClass="number">售价</th>
<th type="text" name="params[#index#][stock]" defaultVal="0" size="15" fieldClass="digits">库存</th>
<th type="text" name="params[#index#][heavy]" defaultVal="0" size="15" fieldClass="number">单品重量(kg)</th>
<th type="text" name="params[#index#][is_free_freight]" defaultVal="0" size="15" fieldClass="number">包邮(0:不包邮;1:包邮)</th>
<th type="del" width="60">操作</th>
</tr>
</thead>
<tbody>
@foreach($good->params()->where('status',1)->get() as $key => $params)
<tr class="unitBox">
<input type="hidden" name="params[{{ $key }}][id]" value="{{ $params->id }}">
<td><input type="text" name="params[{{ $key }}][value]" value="{{ $params->value }}" size="30" class="required" maxlength="40"></td>
<td><input type="text" name="params[{{ $key }}][original]" value="{{ $params->original }}" size="18" class="number textInput"></td>
<td><input type="text" name="params[{{ $key }}][price]" value="{{ $params->price }}" size="18" class="number textInput"></td>
<td><input type="text" name="params[{{ $key }}][stock]" value="{{ $params->stock }}" size="15" class="digits textInput"></td>
<td><input type="text" name="params[{{ $key }}][heavy]" value="{{ $params->heavy }}" size="15" class="number textInput"></td>
<td><input type="text" name="params[{{ $key }}][is_free_freight]" value="{{ $params->is_free_freight }}" size="15" class="number textInput"></td>
<td><a href="javascript:void(0)" class="btnDel">删除</a></td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<div class="tabsFooter">
<div class="tabsFooterContent"></div>
</div>
</div>
</div>
@csrf
<div class="formBar">
<ul>
@csrf
@method('PUT')
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,33 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.goods.giftsetting', $good) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>商品名称:</label>
<input type="text" value="{{ $good->title }}" size="50" readonly/>
</div>
<div class="unit">
<label>开通会员平台赠品:</label>
<select name="is_recommend" class="combox">
<option value="0" @if($good->is_mall_gift == 0) selected @endif></option>
<option value="1" @if($good->is_mall_gift == 1) selected @endif></option>
</select>
</div>
<div class="unit">
<label>开通会员商户赠品:</label>
<select name="is_hot_sell" class="combox">
<option value="0" @if($good->is_seller_gift == 0) selected @endif></option>
<option value="1" @if($good->is_seller_gift == 1) selected @endif></option>
</select>
</div>
</div>
@csrf
<div class="formBar">
<ul>
@csrf
@method('PUT')
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,130 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
商品名称:
<input type="text" name="title" value="{{ Request::input('title') }}" placeholder=""/>
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li><a class="add" href="{{ route('Admin.goods.create') }}" mask="true" target="navTab" rel="navTab_{{ time() }}" title="添加商品"><span>添加商品</span></a></li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
<th width="80">商品类型</th>
<th width="200">商品名称</th>
<th width="100">商户名称</th>
<th width="100">规格</th>
<th width="100">售价</th>
<th width="100">成本价</th>
<th width="80">赠品设置</th>
<th width="80">奖品设置</th>
<th width="60">状态</th>
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="120"></th>
</tr>
</thead>
<tbody>
@php
$goodids = array();
@endphp
@foreach ($goods as $good)
@foreach($good->params()->where('status',1)->get() as $params)
<tr>
@if(!in_array($good->id, $goodids))
<td>{{ $good->id }}</td>
<td>{{ $good->category->title }}</td>
<td>{{ $good->title }}</td>
<td>{{ $good->seller->name }}</td>
@else
<td></td>
<td></td>
<td></td>
<td></td>
@endif
<td>{{ $params->value }}</td>
<td>
{{ number_format($params->price,2) }}
</td>
<td>{{ number_format($params->cost,2) }}
</td>
@if(!in_array($good->id, $goodids))
<td>
@if($good->is_seller_gift == 0 && $good->status == 1)
<a title="设为赠品" target="ajaxTodo" href="{{ route('Admin.goods.setgift', $good) }}">设为赠品</a>
@endif
@if($good->is_seller_gift == 1 && $good->status == 1)
<span style="color: red">赠品</span>
&nbsp; <a title="取消赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelgift', $good) }}">取消</a>
@endif
</td>
<td>
@if($good->is_lottery_gift == 0 && $good->status == 1)<a title="设为奖品" target="ajaxTodo" href="{{ route('Admin.goods.setlottery', $good) }}">设为奖品</a>@endif
@if($good->is_lottery_gift == 1 && $good->status == 1)<span style="color: red">奖品</span> &nbsp; <a title="取消奖品" target="ajaxTodo" href="{{ route('Admin.goods.cancellottery', $good) }}">取消</a>@endif
</td>
<td>{!! $good->status_text !!}</td>
<td>{{ $good->created_at }}</td>
<td>
@if($good->status == 1)<a title="编辑商品" target="navTab" href="{{ route('Admin.goods.edit', $good) }}" rel="navTab_{{ time() }}">编辑</a>@endif
@if($good->canDel())<a title="请确认要删除商品吗?" target="ajaxDelete" href="{{ route('Admin.goods.delete', $good) }}">删除</a>@endif
@if($good->canCancel())<a title="请确认要下架商品吗?" target="ajaxDelete" href="{{ route('Admin.goods.destroy', $good) }}">下架</a>@endif
@if($good->is_seller_gift == 1 && $good->status == 1)<a title="取消赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelgift', $good) }}">取消赠品</a> @endif
</td>
@else
<td></td>
<td></td>
<td></td>
<td></td>
@endif
</tr>
@php
array_push($goodids,$good->id);
@endphp
@endforeach
@endforeach
<tr><td colspan="10" height="50px">
<p style="color: red;padding: 10px;">
1》删除商品- 未产生订单的商品可删除删除操作不可逆。2》下架商品- 已产生订单的商品不可删除,只能下架,下架后不会再产生新订单,下架操作可通过上架操作恢复商品。
</p>
</td>
</tr>
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $goods->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $goods->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($goods->perPage() == 30) selected @endif value="30">30</option>
<option @if ($goods->perPage() == 100) selected @endif value="100">100</option>
<option @if ($goods->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $goods->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $goods->total() }}" numPerPage="{{ $goods->perPage() }}" pageNumShown="10" currentPage="{{ $goods->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,115 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.goods.update', $good) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>商品名称:</label>
<input type="text" name="title" value="{{ $good->title }}" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>商品描述:</label>
<textarea name="description" rows="3" cols="80">{{ $good->description }}</textarea>
</div>
<div class="divider"></div>
<div class="unit">
<label>商品分类:</label>
<select name="category_id" class="combox">
@foreach ($categoies as $category)
<option value="{{ $category['id'] }}" @if($category['id'] == $good->category_id) selected @endif>{{ $category['title_show'] }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="row">
<div class="col-md-8">
@ueditor($good->content, 'content',"goods{{ $good->id }}")
</div>
<div class="col-md-4">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
@if ($good->storage->path)
<img src="{{$good->storage->path}}" style="width:100%" alt="">
@else
<img src="" style="display:none;width:100%" alt="">
@endif
</div>
<input type="hidden" id="storageID" name="storage_id" value="{{ $good->storage_id }}">
</div>
</div>
<h3 class="contentTitle">商品规格</h3>
<div class="tabs">
<div class="tabsContent" style="height: 150px;">
<div>
<table class="list nowrap itemDetail" addButton="添加规格" width="100%">
<thead>
<tr>
<th type="text" name="params[#index#][value]" size="30" fieldClass="required" fieldAttrs="{remote:'validate_remote.html', maxlength:40}">规格名称</th>
<th type="text" name="params[#index#][cost]" defaultVal="0" size="18" fieldClass="number">成本</th>
@if(Amind::user()->id==1)
<th type="text" name="params[#index#][repeat]" defaultVal="0" size="18" fieldClass="number">复消分润</th>
<th type="text" name="params[#index#][profit]" defaultVal="0" size="18" fieldClass="number">总裁分红</th>
@endif
<th type="text" name="params[#index#][original]" defaultVal="0" size="18" fieldClass="number">原价</th>
<th type="text" name="params[#index#][taobao]" defaultVal="0" size="18" fieldClass="number">某宝</th>
<th type="text" name="params[#index#][price]" defaultVal="0" size="18" fieldClass="number">售价</th>
<th type="text" name="params[#index#][score]" defaultVal="0" size="18" fieldClass="number">可抵扣积分</th>
<th type="text" name="params[#index#][stock]" defaultVal="0" size="15" fieldClass="digits">库存</th>
<th type="text" name="params[#index#][heavy]" defaultVal="0" size="15" fieldClass="number">单品重量(kg)</th>
<th type="del" width="60">操作</th>
</tr>
</thead>
<tbody>
@foreach($good->params()->where('status',1)->get() as $key => $params)
<tr class="unitBox">
<input type="hidden" name="params[{{ $key }}][id]" value="{{ $params->id }}">
<td><input type="text" name="params[{{ $key }}][value]" value="{{ $params->value }}" size="30" class="required" maxlength="40"></td>
<td><input type="text" name="params[{{ $key }}][cost]" value="{{ $params->cost }}" size="18" class="number textInput"></td>
@if(Amind::user()->id==1)
<td><input type="text" name="params[{{ $key }}][repeat]" value="{{ $params->repeat }}" size="18" class="number textInput"></td>
<td><input type="text" name="params[{{ $key }}][profit]" value="{{ $params->profit }}" size="18" class="number textInput"></td>
@endif
<td><input type="text" name="params[{{ $key }}][original]" value="{{ $params->original }}" size="18" class="number textInput"></td>
<td><input type="text" name="params[{{ $key }}][taobao]" value="{{ $params->taobao }}" size="18" class="number textInput"></td>
<td><input type="text" name="params[{{ $key }}][price]" value="{{ $params->price }}" size="18" class="number textInput"></td>
<td><input type="text" name="params[{{ $key }}][score]" value="{{ $params->score }}" size="18" class="number textInput"></td>
<td><input type="text" name="params[{{ $key }}][stock]" value="{{ $params->stock }}" size="15" class="digits textInput"></td>
<td><input type="text" name="params[{{ $key }}][heavy]" value="{{ $params->heavy }}" size="15" class="number textInput"></td>
<td><a href="javascript:void(0)" class="btnDel">删除</a></td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<div class="tabsFooter">
<div class="tabsFooterContent"></div>
</div>
</div>
</div>
@csrf
<div class="formBar">
<ul>
@csrf
@method('PUT')
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,106 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.goods.putOn', $good) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>商品名称:</label>
<input type="text" name="title" value="{{ $good->title }}" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>商品描述:</label>
<textarea name="description" rows="3" cols="80">{{ $good->description }}</textarea>
</div>
<div class="divider"></div>
<div class="unit">
<label>商品分类:</label>
<select name="category_id" class="combox">
@foreach ($categoies as $category)
<option value="{{ $category['id'] }}" @if($category['id'] == $good->category_id) selected @endif>{{ $category['title_show'] }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="row">
<div class="col-md-8">
@ueditor($good->content, 'content',"goods{{ $good->id }}")
</div>
<div class="col-md-4">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
@if ($good->storage->path)
<img src="{{$good->storage->path}}" style="width:100%" alt="">
@else
<img src="" style="display:none;width:100%" alt="">
@endif
</div>
<input type="hidden" id="storageID" name="storage_id" value="{{ $good->storage_id }}">
</div>
</div>
<h3 class="contentTitle">商品规格</h3>
<div class="tabs">
<div class="tabsContent" style="height: 150px;">
<div>
<table class="list nowrap itemDetail" addButton="添加规格" width="100%">
<thead>
<tr>
<th type="text" name="params[#index#][value]" size="30" fieldClass="required" fieldAttrs="{remote:'validate_remote.html', maxlength:40}">规格名称</th>
<th type="text" name="params[#index#][cost]" defaultVal="0" size="18" fieldClass="number">成本</th>
<th type="text" name="params[#index#][original]" defaultVal="0" size="18" fieldClass="number">原价</th>
<th type="text" name="params[#index#][price]" defaultVal="0" size="18" fieldClass="number">售价</th>
<th type="text" name="params[#index#][score]" defaultVal="0" size="18" fieldClass="number">可抵扣积分</th>
<th type="text" name="params[#index#][stock]" defaultVal="0" size="15" fieldClass="digits">库存</th>
<th type="text" name="params[#index#][heavy]" defaultVal="0" size="15" fieldClass="number">单品重量(kg)</th>
<th type="del" width="60">操作</th>
</tr>
</thead>
<tbody>
@foreach($good->params()->get() as $key => $params)
<tr class="unitBox">
<input type="hidden" name="params[{{ $key }}][id]" value="{{ $params->id }}">
<input type="hidden" name="params[{{ $key }}][status]" value="1">
<td><input type="text" name="params[{{ $key }}][value]" value="{{ $params->value }}" size="30" class="required" maxlength="40"></td>
<td><input type="text" name="params[{{ $key }}][cost]" value="{{ $params->cost }}" size="18" class="number textInput"></td>
<td><input type="text" name="params[{{ $key }}][original]" value="{{ $params->original }}" size="18" class="number textInput"></td>
<td><input type="text" name="params[{{ $key }}][price]" value="{{ $params->price }}" size="18" class="number textInput"></td>
<td><input type="text" name="params[{{ $key }}][score]" value="{{ $params->score }}" size="18" class="number textInput"></td>
<td><input type="text" name="params[{{ $key }}][stock]" value="{{ $params->stock }}" size="15" class="digits textInput"></td>
<td><input type="text" name="params[{{ $key }}][heavy]" value="{{ $params->heavy }}" size="15" class="number textInput"></td>
<td><a href="javascript:void(0)" class="btnDel">删除</a></td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<div class="tabsFooter">
<div class="tabsFooterContent"></div>
</div>
</div>
</div>
@csrf
<div class="formBar">
<ul>
@csrf
@method('PUT')
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">上架</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,74 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
商品名称:
<input type="text" name="title" value="{{ Request::input('title') }}"/>
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li><a class="delete" href="{{ route('Admin.goods.clean') }}" target="ajaxDelete" title="清空回收站?"><span>清空回收站</span></a></li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
<th>商品名称</th>
<th width="100">商户名称</th>
<th width="80">单价</th>
<th width="80">库存</th>
<th width="80">销量</th>
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="80"></th>
</tr>
</thead>
<tbody>
@foreach ($goods as $good)
<tr>
<td>{{ $good->id }}</td>
<td>{{ $good->title }}</td>
<td>{{ $good->seller->name }}</td>
<td>{{ $good->price }}</td>
<td>{{ $good->stock }}</td>
<td>{{ $good->sales }}</td>
<td>{{ $good->created_at }}</td>
<td>
<a title="还原商品?" target="ajaxTodo" href="{{ route('Admin.goods.resume', $good) }}" class="btnSelect">还原</a>
<a title="删除商品?" target="ajaxDelete" href="{{ route('Admin.goods.delete', $good) }}" class="btnDel">彻底删除</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $goods->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $goods->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($goods->perPage() == 30) selected @endif value="30">30</option>
<option @if ($goods->perPage() == 100) selected @endif value="100">100</option>
<option @if ($goods->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $goods->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $goods->total() }}" numPerPage="{{ $goods->perPage() }}" pageNumShown="10" currentPage="{{ $goods->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,90 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.goods.setting', $good) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label style="width: 150px">商品名称:</label>
<input type="text" value="{{ $good->title }}" size="50" readonly/>
</div>
<div class="unit">
<label style="width: 150px">推荐到[首页全积分购]</label>
<select name="is_recommend" class="combox">
<option value="0" @if($good->is_recommend == 0) selected @endif></option>
<option value="1" @if($good->is_recommend == 1) selected @endif></option>
</select>
</div>
<div class="unit">
<label style="width: 150px">推荐到[首页全现金购]</label>
<select name="is_hot_sell" class="combox">
<option value="0" @if($good->is_hot_sell == 0) selected @endif></option>
<option value="1" @if($good->is_hot_sell == 1) selected @endif></option>
</select>
</div>
<div class="unit">
<label style="width: 150px">推荐到[首页积分+现金]</label>
<select name="is_hot_changed" class="combox">
<option value="0" @if($good->is_hot_changed == 0) selected @endif></option>
<option value="1" @if($good->is_hot_changed == 1) selected @endif></option>
</select>
</div>
<div class="unit">
<label style="width: 150px">推荐到[首页99套餐]</label>
<select name="is_seller_package" class="combox" id="banner_setting">
<option value="0" @if($good->is_seller_package == 0) selected @endif></option>
<option value="1" @if($good->is_seller_package == 1) selected @endif></option>
</select>
</div>
<div class="unit" id="banner_cover" @if($good->is_seller_package == 0) style="display: none" @endif>
<label style="width: 150px">[首页99套餐推荐图]</label>
<div class="col-md-4">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-width:200px;min-height:100px">
@if ($good->banner->path)
<img src="{{$good->banner->path}}" style="width:200px;height: 100px" alt="">
@else
<img src="" style="display:none;width:200px;height: 100px" alt="">
@endif
</div>
<input type="hidden" id="storageID" name="banner_id" value="{{ $good->banner_id }}">
</div>
</div>
<div class="unit">
<label style="width: 150px">推荐位排序:</label>
<input type="text" value="{{ $good->sort }}" size="40" name="sort"/>
<span style="float:right;color: red">数字越大,手机端越靠前显示</span>
</div>
</div>
@csrf
<div class="formBar">
<ul>
@csrf
@method('PUT')
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>
<script type="text/javascript">
$('#banner_setting').change(function(){
var banner_setting=$(this).val();
if (banner_setting == 1) {
$('#banner_cover').show();
}else{
$('#banner_cover').hide();
}
})
</script>

View File

@@ -0,0 +1,91 @@
@extends('RuLong::layouts.app')
@section('content')
<h1 class="m-b">Dashboard</h1>
<div class="row">
<div class="col-sm-4 m-b">
<div class="ibox">
<div class="ibox-content">
<table class="table">
<thead>
<tr>
<th>参数名称</th>
<th>参数值</th>
</tr>
</thead>
<tbody>
<tr>
<td>PHP 版本</td>
<td>PHP/{{ phpversion() }}</td>
</tr>
<tr>
<td>Laravel 版本</td>
<td>{{ app()->version() }}</td>
</tr>
<tr>
<td>CGI 模式</td>
<td>{{ php_sapi_name() }}</td>
</tr>
<tr>
<td>Web Server</td>
<td>{{ array_get($_SERVER, 'SERVER_SOFTWARE') }}</td>
</tr>
<tr>
<td>Cache Driver</td>
<td>{{ config('cache.default') }}</td>
</tr>
<tr>
<td>Session Driver</td>
<td>{{ config('session.driver') }}</td>
</tr>
<tr>
<td>Queue Driver</td>
<td>{{ config('queue.driver') }}</td>
</tr>
<tr>
<td>Timezone</td>
<td>{{ config('app.timezone') }}</td>
</tr>
<tr>
<td>Locale</td>
<td>{{ config('app.locale') }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="col-sm-4 m-b">
<div class="ibox">
<div class="ibox-content">
<table class="table">
<thead>
<tr>
<th>参数名称</th>
<th>参数值</th>
</tr>
</thead>
<tbody>
<tr>
<td>Panel版本</td>
<td><img src="https://poser.pugx.org/rulong/laravel-panel/v/stable" alt=""></td>
</tr>
<tr>
<td>模板库地址</td>
<td><a href="http://tpl.cjango.com/" target="_blank">模板库</a></td>
</tr>
<tr>
<td>Laravel文档</td>
<td><a href="https://laravel-china.org/docs/laravel/5.6" target="_blank">Laravel文档</a></td>
</tr>
<tr>
<td>PHP设计模式</td>
<td><a href="https://laravel-china.org/docs/php-design-patterns/2018" target="_blank">PHP设计模式</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,132 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.lessons.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>课程名称:</label>
<input type="text" name="title" value="" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>章介数:</label>
<input type="text" name="chapter" value="" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>价格:</label>
<input type="text" name="price" value="" size="79" class="required number"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>库存:</label>
<input type="text" name="stock" value="" size="79" class="required number"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>适合基础:</label>
<input type="text" name="crowd" value="" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>适合年龄:</label>
<input type="text" name="crowd_age" value="" size="79" class="required "/>
</div>
<div class="divider"></div>
<div class="unit">
<label>上课人数:</label>
<input type="text" name="maximum" value="" size="79" class="required number"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>状态:</label>
<select name="status" >
<option value="1">正常</option>
<option value="2">禁用</option>
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>所属机构:</label>
<select name="seller_id" >
<option value="">请选择机构</option>
@foreach ($organs as $organ)
<option value="{{ $organ->id }}">{{ $organ->name }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>分类:</label>
<select name="category_id" class="combox">
@foreach ($categoies as $category)
<option value="{{ $category['id'] }}" >{{ $category['title_show'] }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>课程开始时间:</label>
<input type="text" name="start_at" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
<a class="inputDateButton" href="javascript:;">选择</a>
</div>
<div class="divider"></div>
<div class="unit">
<label>课程结束时间:</label>
<input type="text" name="end_at" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
<a class="inputDateButton" href="javascript:;">选择</a>
</div>
<div class="divider"></div>
<div class="unit">
<label>简介:</label>
<textarea name="description" rows="3" cols="80"></textarea>
</div>
<div class="divider"></div>
<div class="row">
<div class="col-md-8">
@ueditor('', 'content')
</div>
<div class="col-md-4">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
<img src="" style="display:none;width:100%" alt="">
</div>
<input type="hidden" id="storageID" name="storage_id" value="">
</div>
</div>
</div>
@csrf
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,136 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.lessons.update',$lesson) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>课程名称:</label>
<input type="text" name="title" value="{{ $lesson->title }}" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>章介数:</label>
<input type="text" name="chapter" value="{{ $lesson->chapter }}" size="79" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>价格:</label>
<input type="text" name="price" value="{{ $lesson->price }}" size="79" class="required number"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>库存:</label>
<input type="text" name="stock" value="{{ $lesson->stock }}" size="79" class="required number"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>适合基础:</label>
<input type="text" name="crowd" value="{{ $lesson->crowd }}" size="79" class="required "/>
</div>
<div class="divider"></div>
<div class="unit">
<label>适合年龄:</label>
<input type="text" name="crowd_age" value="{{ $lesson->crowd_age }}" size="79" class="required "/>
</div>
<div class="divider"></div>
<div class="unit">
<label>上课人数:</label>
<input type="text" name="maximum" value="{{ $lesson->maximum }}" size="79" class="required number"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>状态:</label>
<select name="status" >
<option value="1" @if($lesson->status==1) selected @endif >正常</option>
<option value="0" @if($lesson->status===0) selected @endif >禁用</option>
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>所属机构:</label>
<select name="seller_id" >
<option value="">请选择机构</option>
@foreach ($organs as $organ)
<option value="{{ $organ->id }}" @if($lesson->seller_id==$organ->id) selected @endif >{{ $organ->name }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>分类:</label>
<select name="category_id" class="combox">
@foreach ($categoies as $category)
<option value="{{ $category['id'] }}" @if($lesson->category_id==$category['id']) selected @endif >{{ $category['title_show'] }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>课程开始时间:</label>
<input type="text" name="start_at" class="date textInput readonly valid" value="{{ $lesson->start_at }}" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
<a class="inputDateButton" href="javascript:;">选择</a>
</div>
<div class="divider"></div>
<div class="unit">
<label>课程结束时间:</label>
<input type="text" name="end_at" value="{{ $lesson->end_at }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
<a class="inputDateButton" href="javascript:;">选择</a>
</div>
<div class="divider"></div>
<div class="unit">
<label>简介:</label>
<textarea name="description" rows="3" cols="80"> {{ $lesson->description }} </textarea>
</div>
<div class="divider"></div>
<div class="row">
<div class="col-md-8">
@ueditor($lesson->content, 'content')
</div>
<div class="col-md-4">
<input id="testFileInput" type="file" name="image" uploaderOption="{
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
formData:{_token: '{{ csrf_token() }}'},
fileObjName: 'fileup',
buttonText:'选择封面图片',
fileSizeLimit:'20MB',
auto:true,
multi:false,
onUploadSuccess: function(file, res) {
var d = JSON.parse(res)
$('.cover img').attr('src', d.data.url).show();
$('#storageID').val(d.data.id);
}}"/>
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
@if ($lesson->storage->path)
<img src="{{$lesson->storage->path}}" style="width:100%" alt="">
@else
<img src="" style="display:none;width:100%" alt="">
@endif
</div>
<input type="hidden" id="storageID" name="storage_id" value="{{ $lesson->storage_id }}">
</div>
</div>
</div>
@csrf
@method('PUT')
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,99 @@
<div class="pageHeader">
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
课程名称:
<input type="text" name="title" value="{{ Request::input('title') }}"/>
</td>
<td>
起:
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td>
止:
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li><a class="add" href="{{ route('Admin.lessons.create') }}" mask="true" target="navTab" rel="navTab_{{ time() }}" title="添加课程"><span>添加课程</span></a></li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50">课程编号</th>
<th width="140">课程名称</th>
<th width="140">所属机构</th>
<th width="140">所属地域</th>
<th width="140">分类</th>
<th width="80">章节数</th>
<th width="80">价格</th>
<th width="80">状态</th>
<th width="80">库存</th>
<th width="80">报名人数</th>
<th width="150">适合基础</th>
<th width="80">适合年龄</th>
<th width="80">上课人数</th>
<th width="80" orderField="start_at" @if (Request::input('orderField') == 'start_at') class="{{ Request::input('orderDirection') }}" @endif>开始时间</th>
<th width="150" orderField="end_at" @if (Request::input('orderField') == 'end_at') class="{{ Request::input('orderDirection') }}" @endif>结束时间</th>
<th width="100" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="200"></th>
</tr>
</thead>
<tbody>
@foreach ($lists as $lesson)
<tr target="sid" rel="{{ $lesson->id }}">
<td>{{ $lesson->id }}</td>
<td>{{ $lesson->title }}</td>
<td>{{ $lesson->organ->name }}</td>
<td>{{ $lesson->organ->Area->info??'' }}</td>
<td>{{ $lesson->category->title }}</td>
<td>{{ $lesson->chapter }}</td>
<td>{{ $lesson->price }}</td>
<td>{!! $lesson->status_text !!}</td>
<td>{{ $lesson->stock }}</td>
<td> <a href="{{ route('Admin.lessons.logs',$lesson) }}" mask="true" target="navTab" rel="navTab_{{ time() }}" ><span>{{ $lesson->logs()->where('status',1)->count() }}</span></a></td>
<td>{{ $lesson->crowd }}</td>
<td>{{ $lesson->crowd_age }}</td>
<td>{{ $lesson->maximum }}</td>
<td>{{ $lesson->start_at }}</td>
<td>{{ $lesson->end_at }}</td>
<td>{{ $lesson->created_at }}</td>
<td>
<a title="编辑课程" target="navTab" rel="listshow" href="{{ route('Admin.lessons.edit', $lesson) }}">编辑</a>
<a title="请确认要删除课程吗?" target="ajaxDelete" href="{{ route('Admin.lessons.delete', $lesson) }}">删除</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $lists->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $lists->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($lists->perPage() == 30) selected @endif value="30">30</option>
<option @if ($lists->perPage() == 100) selected @endif value="100">100</option>
<option @if ($lists->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $lists->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $lists->total() }}" numPerPage="{{ $lists->perPage() }}" pageNumShown="10" currentPage="{{ $lists->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,48 @@
<div class="pageContent">
<table class="table" width="100%" layoutH="85">
<thead>
<tr>
<th width="150">用户</th>
<th width="150">宝宝姓名</th>
<th width="150">宝宝年龄</th>
<th width="150">手机号</th>
<th width="150">课程</th>
<th width="150">报名时间</th>
</tr>
</thead>
<tbody>
@foreach ($logs as $log)
<tr>
<td>{{ $log->user->info->nickname }}</td>
<td>{{ $log->name }}</td>
<td>{{ $log->age }}</td>
<td>{{ $log->mobile }}</td>
<td>{{ $log->lesson->title }}</td>
<td>{{ $log->created_at }}</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="{{ url()->current() }}">
<input type="hidden" name="page" value="{{ $logs->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $logs->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($logs->perPage() == 30) selected @endif value="30">30</option>
<option @if ($logs->perPage() == 100) selected @endif value="100">100</option>
<option @if ($logs->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $logs->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $logs->total() }}" numPerPage="{{ $logs->perPage() }}" pageNumShown="10" currentPage="{{ $logs->currentPage() }}"></div>
</div>
</div>
<script type="text/javascript">
//点击导出
</script>

View File

@@ -0,0 +1,62 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.lottery.addgifts',$lottery) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>奖项:</label>
<select name="level" >
<option value=""> 请选择奖项 </option>
@foreach($levels as $key=>$level)
@if(!in_array($key,$hasLevels))
<option value="{{ $key }}">{{ $level }}</option>
@endif
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>奖品:</label>
<select name="item_id" >
<option value=""> 请选择奖品 </option>
@foreach($params as $gift)
<option value="{{ $gift->id }}">{{ $gift->getTitle() }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>类型:</label>
<select name="type" >
<option value="1"> 正常奖品 </option>
<option value="0"> 谢谢参与 </option>
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>概率:</label>
<input type="text" name="chance" value="" size="35" class="required"/>
<span class="info"> 数字如4</sp an>
</div>
<div class="divider"></div>
<div class="unit">
<label>数量:</label>
<input type="text" name="number" value="1" size="35" class="required"/>
<span class="info"> 谢谢参与不减少这个数据</span>
</div>
</div>
@csrf
<input type="hidden" name="item_type" value="{{ $item_type }}">
<input type="hidden" name="lottery_id" value="{{ $lottery->id }}">
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,43 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.lottery.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>名称:</label>
<input type="text" name="title" value="" size="35" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>状态:</label>
<select name="status" >
<option value="1">正常</option>
<option value="2">关闭</option>
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>开始时间:</label>
<input type="text" name="start_at" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
<a class="inputDateButton" href="javascript:;">选择</a>
</div>
<div class="divider"></div>
<div class="unit">
<label>结束时间:</label>
<input type="text" name="end_at" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
<a class="inputDateButton" href="javascript:;">选择</a>
</div>
</div>
@csrf
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,44 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.lottery.update',$lottery) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>名称:</label>
<input type="text" name="title" value="{{ $lottery->title }}" size="35" class="required"/>
</div>
<div class="divider"></div>
<div class="unit">
<label>状态:</label>
<select name="status" >
<option value="1">正常</option>
<option value="2">关闭</option>
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>开始时间:</label>
<input type="text" name="start_at" class="date textInput readonly valid" value="{{ $lottery->start_at }}" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
<a class="inputDateButton" href="javascript:;">选择</a>
</div>
<div class="divider"></div>
<div class="unit">
<label>结束时间:</label>
<input type="text" name="end_at" class="date textInput readonly valid" value="{{ $lottery->end_at }}" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
<a class="inputDateButton" href="javascript:;">选择</a>
</div>
</div>
@csrf
@method('PUT')
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,58 @@
<div class="pageContent">
<form method="post" action="{{ route('Admin.lottery.editgifts',$gift) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="55">
<div class="unit">
<label>奖项:</label>
<select name="level" >
@foreach($levels as $key=>$level)
<option value="{{ $key }}" @if($key==$gift->level) selected @endif >{{ $level }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>奖品:</label>
<select name="item_id" >
<option value=""> 请选择奖品 </option>
@foreach($params as $param)
<option value="{{ $param->id }}" @if($param->id==$gift->item_id) selected @endif >{{ $param->getTitle() }}</option>
@endforeach
</select>
</div>
<div class="divider" style="display: none"></div>
<div class="unit" style="display: none">
<label>类型:</label>
<select name="type" >
<option value="1" @if(1==$gift->type) selected @endif > 正常奖品 </option>
<option value="0" @if(0===$gift->type) selected @endif > 谢谢参与 </option>
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>概率:</label>
<input type="text" name="chance" value="{{ $gift->chance }}" size="35" class="required"/>
<span class="info">数字如4</span>
</div>
<div class="divider"></div>
<div class="unit">
<label>数量:</label>
<input type="text" name="number" value="{{ $gift->number }}" size="35" class="required"/>
<span class="info"> 谢谢参与不减少这个数据</span>
</div>
</div>
@csrf
@method('PUT')
<input type="hidden" name="item_type" value="App\Models\GoodsParams">
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,76 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="get">
<div class="searchBar">
<table class="searchContent">
</table>
</div>
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li>
<a class="add" href="{{ route('Admin.lottery.addgifts',['lottery'=>$lottery,'type'=>'goods']) }}" mask="true" width="600" height="400" target="dialog" rel="dialog_{{ time() }}" title="添加奖品" ><span>添加奖品(商品)</span></a>
</li>
<li>
<a class="add" href="{{ route('Admin.lottery.addgifts',['lottery'=>$lottery,'type'=>'coupon']) }}" mask="true" width="600" height="400" target="dialog" rel="dialog_{{ time() }}" title="添加奖品" ><span>添加奖品(优惠券)</span></a>
</li>
<li>
<a class="add" href="{{ route('Admin.lottery.addgifts',['lottery'=>$lottery,'type'=>'activity']) }}" mask="true" width="600" height="400" target="dialog" rel="dialog_{{ time() }}" title="添加奖品" ><span>添加奖品(服务)</span></a>
</li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50">编号</th>
<th width="">奖品</th>
<th width="">奖项</th>
<th width="">概率</th>
<th width="">类型</th>
<th width="">所属</th>
<th width="">数量</th>
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="200"></th>
</tr>
</thead>
<tbody>
@foreach ($lists as $gift)
<tr>
<td>{{ $gift->id }}</td>
<td>{{ $gift->getTitle() }}</td>
<td>{{ $gift->level_text }}</td>
<td>{{ $gift->chance }}{{ $gift->chance_text }}%</td>
<td>{{ $gift->type_text }}</td>
<td>{{ $gift->class }}</td>
<td>{{ $gift->number }}</td>
<td>{{ $gift->created_at }}</td>
<td>
<a title="编辑" target="dialog" href="{{ route('Admin.lottery.editgifts', $gift) }}" width="650" height="390" rel="dialog_{{ time() }}" >编辑</a>
<a title="请确认要删除吗?" target="ajaxDelete" href="{{ route('Admin.lottery.delgifts', $gift) }}">删除</a>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $lists->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $lists->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($lists->perPage() == 30) selected @endif value="30">30</option>
<option @if ($lists->perPage() == 100) selected @endif value="100">100</option>
<option @if ($lists->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $lists->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $lists->total() }}" numPerPage="{{ $lists->perPage() }}" pageNumShown="10" currentPage="{{ $lists->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,62 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="get">
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<!-- <li><a class="add" href="{{ route('Admin.lottery.create') }}" mask="true" width="480" height="350" target="dialog" rel="dialog_{{ time() }}" title="创建抽奖" ><span>创建抽奖</span></a></li> -->
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50">编号</th>
<th width="200">标题</th>
<th width="100">状态</th>
<th width="120">开始时间</th>
<th width="120">结束时间</th>
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="200"></th>
</tr>
</thead>
<tbody>
@foreach ($lists as $lottery)
<tr>
<td>{{ $lottery->id }}</td>
<td>{{ $lottery->title }}</td>
<td>{{ $lottery->status_text }}</td>
<td>{{ $lottery->start_at }}</td>
<td>{{ $lottery->end_at }}</td>
<td>{{ $lottery->created_at }}</td>
<td>
<a title="编辑" target="dialog" href="{{ route('Admin.lottery.edit', $lottery) }}" width="650" height="390" rel="dialog_{{ time() }}" >编辑</a>
<a title="记录" target="dialog" href="{{ route('Admin.lottery.logs', $lottery) }}" width="800" height="600" rel="dialog_{{ time() }}" >记录</a>
<a title="奖品管理" target="navTab" href="{{ route('Admin.lottery.gifts', $lottery) }}" width="800" height="600" rel="navTab_{{ time() }}" >奖品管理</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $lists->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $lists->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($lists->perPage() == 30) selected @endif value="30">30</option>
<option @if ($lists->perPage() == 100) selected @endif value="100">100</option>
<option @if ($lists->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $lists->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $lists->total() }}" numPerPage="{{ $lists->perPage() }}" pageNumShown="10" currentPage="{{ $lists->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,49 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="get">
</form>
</div>
<div class="pageContent">
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="50">编号</th>
<th width="200">活动名称</th>
<th width="150">用户</th>
<th width="120">奖品</th>
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>抽奖时间</th>
</tr>
</thead>
<tbody>
@foreach ($logs as $log)
<tr>
<td>{{ $log->id }}</td>
<td>{{ $log->lottery->title }}</td>
<td>{{ $log->user->info->nickname }}</td>
<td>{{ $log->gift->item->getTitle() }}</td>
<td>{{ $log->created_at }}</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $logs->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $logs->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($logs->perPage() == 30) selected @endif value="30">30</option>
<option @if ($logs->perPage() == 100) selected @endif value="100">100</option>
<option @if ($logs->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $logs->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $logs->total() }}" numPerPage="{{ $logs->perPage() }}" pageNumShown="10" currentPage="{{ $logs->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,76 @@
<div class="pageHeader">
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
起:
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td>
止:
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<div class="panelBar">
<ul class="toolBar">
<li><a title="确实要删除这些记录吗?" target="selectedDelete" rel="ids[]" href="{{ route('Admin.notifications.destroy', 'batch') }}" class="delete"><span>批量删除</span></a></li>
</ul>
</div>
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="22"><input type="checkbox" group="ids[]" class="checkboxCtrl"></th>
<th width="100">通知用户</th>
<th width="200">通知类型</th>
<th>交付数据</th>
<th width="120" orderField="read_at" @if (Request::input('orderField') == 'read_at') class="{{ Request::input('orderDirection') }}" @endif>阅读时间</th>
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>发送时间</th>
<th width="60"></th>
</tr>
</thead>
<tbody>
@foreach ($notifications as $notification)
<tr>
<td><input name="ids[]" value="{{ $notification->id }}" type="checkbox"></td>
<td>{{ $notification->notifiable->info->nickname }}</td>
<td>{{ $notification->type::title() }}</td>
<td>@json($notification->data)</td>
<td>{{ $notification->read_at }}</td>
<td>{{ $notification->created_at }}</td>
<td>
<a title="删除消息" target="ajaxDelete" href="{{ route('Admin.notifications.destroy', $notification) }}" class="btnDel">删除</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" value="{{ $notifications->currentPage() }}" />
<input type="hidden" name="numPerPage" value="{{ $notifications->perPage() }}" />
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
<option @if ($notifications->perPage() == 30) selected @endif value="30">30</option>
<option @if ($notifications->perPage() == 100) selected @endif value="100">100</option>
<option @if ($notifications->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $notifications->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $notifications->total() }}" numPerPage="{{ $notifications->perPage() }}" pageNumShown="10" currentPage="{{ $notifications->currentPage() }}"></div>
</div>
</div>

View File

@@ -0,0 +1,89 @@
<div class="pageHeader">
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
发货开始时间:
<input type="text" name="start" value="{{ $start }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
</td>
<td>
发货结束时间:
<input type="text" name="end" value="{{ $end }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
@if(Admin::id() == 1)
<td>
所属商户:
<select name="seller_id">
<option value="">全部商户</option>
@foreach ($sellers as $seller)
<option value="{{ $seller['id'] }}" @if($seller['id'] == Request::get('seller_id')) selected @endif>{{ $seller['name'] }}</option>
@endforeach
</select>
</td>
@endif
<input name="type" type="hidden" value="PAID|DELIVERED">
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="250">已发货商品信息</th>
<th width="150">已发货商品总数</th>
<th width="150">支付现金总额</th>
<th width="150">消耗积分总额</th>
<th width="150">结算成本总额</th>
<th width="150">操作</th>
</tr>
</thead>
<tbody>
@foreach ($details as $detail)
<tr>
<td>{{ \App\Models\GoodsParams::find($detail->item_id)->getTitle() }}</td>
<td>{{ $detail->number_sum }}</td>
<td>{{ $detail->price_sum }}</td>
<td>{{ $detail->score_sum }}</td>
<td>{{ $detail->seller_price_sum }}</td>
<td>
<a title="订单明细" target="navTab" rel="ordershow" href="{{ route('Admin.orderData.order', ['item_id'=>$detail->item_id,'start'=>$start,'end'=>$end,'type'=>'PAID|DELIVERED']) }}">
订单明细
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" order="{{ $details->currentPage() }}" />
<input type="hidden" name="numPerPage" order="{{ $details->perPage() }}" />
<input type="hidden" name="orderField" order="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" order="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.order})">
<option @if ($details->perPage() == 30) selected @endif value="30">30</option>
<option @if ($details->perPage() == 100) selected @endif value="100">100</option>
<option @if ($details->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $details->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $details->total() }}" numPerPage="{{ $details->perPage() }}" pageNumShown="10" currentPage="{{ $details->currentPage() }}"></div>
</div>
</div>
<script type="text/javascript">
//点击导出
$('.export-data').click(function (event) {
location.href = "{{ route('Admin.export.report') }}?" + $(this).parents('form').serialize();
});
</script>

View File

@@ -0,0 +1,191 @@
<div class="pageHeader">
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
订单编号:
<input type="text" name="orderid" value="{{ Request::input('orderid') }}"/>
</td>
<td>
商品名称:
<input type="text" name="title" value="{{ Request::input('title') }}"/>
</td>
<td>
买家手机号:
<input type="text" name="mobile" value="{{ Request::input('mobile') }}"/>
</td>
<td>
买家昵称:
<input type="text" name="nickname" value="{{ Request::input('nickname') }}"/>
</td>
<input name="type" type="hidden" value="{{ $type }}">
<input name="seller_id" type="hidden" value="{{ Request::get('seller_id') }}">
</tr>
<tr>
<td>
开始时间:
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
</td>
<td>
结束时间:
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td>
<select class="combox" name="item_type">
<option value="">订单类型</option>
<option value="GOODS" @if(Request::get('item_type') == 'GOODS') selected @endif>商品订单</option>
<option value="VIP_GIFT" @if(Request::get('item_type') == 'VIP_GIFT') selected @endif>会员赠品</option>
<option value="FULL_GIFT" @if(Request::get('item_type') == 'FULL_GIFT') selected @endif>满仓赠品</option>
<option value="ACTIVITY_GIFT" @if(Request::get('item_type') == 'ACTIVITY_GIFT') selected @endif>活动赠品</option>
</select>
</td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="200">订单编号</th>
<th width="200">商品信息</th>
<th width="60">商品数量</th>
<th width="60">商品总额</th>
<th width="60">商品积分</th>
<th width="60">订单金额</th>
<th width="60">订单运费</th>
<th width="60">积分抵扣</th>
<th width="60">总计支付</th>
<th width="60">总成本</th>
<th width="60">结算运费</th>
<th width="60">商家结算</th>
<th width="60">配送</th>
<th width="120">收件地址</th>
<th width="60">状态</th>
@if($type == 'DELIVERED|SIGNED')
<th width="100">发货时间</th>
<th width="100">签收时间</th>
@endif
@if($type == 'PAID|DELIVERED')
<th width="100">支付时间</th>
<th width="100">发货时间</th>
@endif
</tr>
</thead>
<tbody>
@php
$orderids = array();
@endphp
@foreach ($orders as $order)
@foreach($order->details as $detail)
<tr target="sid" rel="{{ $order->id }}">
@if(!in_array($order->id, $orderids))
<td>@switch($order->item_type)
@case('GOODS')
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #39a6ad;color: #39a6ad;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">商品</span>
@break
@case('FULL_GIFT')
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #1153ff;color: #1153ff;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">满仓</span>
@break
@case('ACTIVITY_GIFT')
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ff6417;color: #ff6417;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">活动</span>
@break
@case('VIP_GIFT')
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ec6d64;color: #ec6d64;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">赠品</span>
@break
@endswitch{{ $order->orderid }}
</td>
@else<td></td>
@endif
<td>{{$detail->item->getTitle() }}
</td>
<td>{{$detail->number }}
</td>
<td>{{$detail->price * $detail->number - $detail->score * $detail->number }}
</td>
<td>{{$detail->score * $detail->number }}
</td>
@if(!in_array($order->id, $orderids))
<td>{{ number_format($order->amount,2) }}</td>
<td>{{ number_format($order->freight, 2)}}</td>
<td>{{ number_format($order->score, 2) }}</td>
<td>{{ number_format($order->total - $order->score, 2) }}</td>
<td>{{ number_format($order->seller_amount, 2) }}</td>
<td>{{ number_format($order->seller_freight, 2) }}</td>
<td>{{ number_format($order->seller_freight + $order->seller_amount, 2) }}</td>
<td>{!! $order->express_type == 1 ? '快递' : '<span style="color: #ec6d64;">自提</span>' !!}</td>
<td>{{ $order->express->name ?? $order->user->info->nickname }} {{ $order->express->mobile ?? $order->user->mobile }} {{ $order->express->address ?? '' }}</td>
<td>{{ $order->state_text }}</td>
@if($type == 'DELIVERED|SIGNED')
<td>{{ $order->logs()->where('state','PAID|DELIVERED')->first()->created_at }}</td>
<td>{{ $order->logs()->where('state','DELIVERED|SIGNED')->first()->created_at }}</td>
@endif
@if($type == 'PAID|DELIVERED')
<td>{{ $order->paid_at }}</td>
<td>{{ $order->logs()->where('state','PAID|DELIVERED')->first()->created_at }}</td>
@endif
@else
<td colspan="12"></td>
@endif
</tr>
@php
array_push($orderids,$order->id);
@endphp
@endforeach
@endforeach
<tr>
<td>
{{ $orders->count() }}
</td>
<td colspan="8">
</td>
<td>
{{ number_format($orders->sum('seller_amount'),2) }}
</td>
<td>
{{ number_format($orders->sum('seller_freight'),2) }}
</td>
<td>
{{ number_format($orders->sum('seller_freight') + $orders->sum('seller_amount'),2) }}
</td>
<td colspan="5">
</td>
</tr>
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" order="{{ $orders->currentPage() }}" />
<input type="hidden" name="numPerPage" order="{{ $orders->perPage() }}" />
<input type="hidden" name="orderField" order="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" order="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.order})">
<option @if ($orders->perPage() == 30) selected @endif value="30">30</option>
<option @if ($orders->perPage() == 100) selected @endif value="100">100</option>
<option @if ($orders->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $orders->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $orders->total() }}" numPerPage="{{ $orders->perPage() }}" pageNumShown="10" currentPage="{{ $orders->currentPage() }}"></div>
</div>
</div>
<script type="text/javascript">
//点击导出
$('.export-data').click(function (event) {
location.href = "{{ route('Admin.export.report') }}?" + $(this).parents('form').serialize();
});
</script>

View File

@@ -0,0 +1,127 @@
<div class="pageHeader">
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
发货开始时间:
<input type="text" name="start" value="" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
</td>
<td>
发货结束时间:
<input type="text" name="end" value="" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
@if(Admin::id() == 1)
<td>
所属商户:
<select name="seller_id">
<option value="">全部商户</option>
@foreach ($sellers as $seller)
<option value="{{ $seller['id'] }}" @if($seller['id'] == Request::get('seller_id')) selected @endif>{{ $seller['name'] }}</option>
@endforeach
</select>
</td>
@endif
<input type="hidden" name="type" value="DELIVERED">
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="250">发货商户</th>
<th width="150">日期</th>
<th width="150">商品总数</th>
<th width="150">订单总数</th>
<th width="150">商品现金总额</th>
<th width="150">商品积分总额</th>
<th width="150">支付现金总额</th>
<th width="150">消耗积分总额</th>
<th width="150">订单运费总额</th>
<th width="150">结算成本</th>
<th width="150">结算运费</th>
<th width="150">结算总额</th>
<th width="240">操作</th>
</tr>
</thead>
<tbody>
@foreach ($reports as $report)
<tr>
<td>{{ $report->seller->name }}</td>
<td>{{ $report->action_time }}</td>
<td>{{ $report->goods_total }}</td>
<td>{{ $report->orders_total }}</td>
<td>{{ $report->goods_price_total - $report->goods_score_total}}</td>
<td>{{ $report->goods_score_total }}</td>
<td>{{ $report->orders_price - $report->orders_score }}</td>
<td>{{ $report->orders_score }}</td>
<td>{{ $report->orders_freight }}</td>
<td>{{ $report->seller_total }}</td>
<td>{{ $report->seller_freight }}</td>
<td>{{ number_format($report->seller_total + $report->seller_freight,2) }}</td>
<td>
<a title="订单明细" target="navTab" rel="ordershow" href="{{ route('Admin.orderData.order', ['seller_id'=>$report->seller_id,'start'=>$report->action_time,'end'=>$report->action_time,'type'=>'PAID|DELIVERED']) }}">
明细
</a>
</td>
</tr>
@endforeach
<tr>
<td colspan="2">
</td>
<td>
{{ $reports->sum('goods_total') }}
</td>
<td>
{{ $reports->sum('orders_total') }}
</td>
<td colspan="5">
</td>
<td>
{{ number_format($reports->sum('seller_total'),2) }}
</td>
<td>
{{ number_format($reports->sum('seller_freight'),2) }}
</td>
<td>
{{ number_format($reports->sum('seller_freight') + $reports->sum('seller_total'),2) }}
</td>
<td>
</td>
</tr>
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" order="{{ $reports->currentPage() }}" />
<input type="hidden" name="numPerPage" order="{{ $reports->perPage() }}" />
<input type="hidden" name="orderField" order="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" order="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.order})">
<option @if ($reports->perPage() == 30) selected @endif value="30">30</option>
<option @if ($reports->perPage() == 100) selected @endif value="100">100</option>
<option @if ($reports->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $reports->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $reports->total() }}" numPerPage="{{ $reports->perPage() }}" pageNumShown="10" currentPage="{{ $reports->currentPage() }}"></div>
</div>
</div>
<script type="text/javascript">
//点击导出
$('.export-data').click(function (event) {
location.href = "{{ route('Admin.export.dataReport') }}?" + $(this).parents('form').serialize();
});
</script>

View File

@@ -0,0 +1,128 @@
<div class="pageHeader">
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
发货开始时间:
<input type="text" name="start" value="" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
</td>
<td>
发货结束时间:
<input type="text" name="end" value="" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
@if(Admin::id() == 1)
<td>
所属商户:
<select name="seller_id">
<option value="">全部商户</option>
@foreach ($sellers as $seller)
<option value="{{ $seller['id'] }}" @if($seller['id'] == Request::get('seller_id')) selected @endif>{{ $seller['name'] }}</option>
@endforeach
</select>
</td>
@endif
<input type="hidden" name="type" value="SIGNED">
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="250">签收商户</th>
<th width="150">签收日期</th>
<th width="150">商品总数</th>
<th width="150">订单总数</th>
<th width="150">商品现金总额</th>
<th width="150">商品积分总额</th>
<th width="150">支付现金总额</th>
<th width="150">消耗积分总额</th>
<th width="150">订单运费总额</th>
<th width="150">结算成本</th>
<th width="150">结算运费</th>
<th width="150">结算总额</th>
<th width="240">操作</th>
</tr>
</thead>
<tbody>
@foreach ($reports as $report)
<tr>
<td>{{ $report->seller->name }}</td>
<td>{{ $report->action_time }}</td>
<td>{{ $report->goods_total }}</td>
<td>{{ $report->orders_total }}</td>
<td>{{ $report->goods_price_total - $report->goods_score_total}}</td>
<td>{{ $report->goods_score_total }}</td>
<td>{{ $report->orders_price - $report->orders_score }}</td>
<td>{{ $report->orders_score }}</td>
<td>{{ $report->orders_freight }}</td>
<td>{{ $report->seller_total }}</td>
<td>{{ $report->seller_freight }}</td>
<td>{{ number_format($report->seller_total + $report->seller_freight,2) }}</td>
<td>
<a title="订单明细" target="navTab" rel="ordershow" href="{{ route('Admin.orderData.order', ['seller_id'=>$report->seller_id,'start'=>$report->action_time,'end'=>$report->action_time,'type'=>'DELIVERED|SIGNED']) }}">
明细
</a>
</td>
</tr>
@endforeach
<tr>
<td colspan="2">
</td>
<td>
{{ $reports->sum('goods_total') }}
</td>
<td>
{{ $reports->sum('orders_total') }}
</td>
<td colspan="5">
</td>
<td>
{{ number_format($reports->sum('seller_total'),2) }}
</td>
<td>
{{ number_format($reports->sum('seller_freight'),2) }}
</td>
<td>
{{ number_format($reports->sum('seller_freight') + $reports->sum('seller_total'),2) }}
</td>
<td>
</td>
</tr>
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" order="{{ $reports->currentPage() }}" />
<input type="hidden" name="numPerPage" order="{{ $reports->perPage() }}" />
<input type="hidden" name="orderField" order="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" order="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.order})">
<option @if ($reports->perPage() == 30) selected @endif value="30">30</option>
<option @if ($reports->perPage() == 100) selected @endif value="100">100</option>
<option @if ($reports->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $reports->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $reports->total() }}" numPerPage="{{ $reports->perPage() }}" pageNumShown="10" currentPage="{{ $reports->currentPage() }}"></div>
</div>
</div>
<script type="text/javascript">
//点击导出
$('.export-data').click(function (event) {
location.href = "{{ route('Admin.export.dataReport') }}?" + $(this).parents('form').serialize();
});
</script>

View File

@@ -0,0 +1,181 @@
<div class="pageHeader">
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
订单编号:
<input type="text" name="orderid" value="{{ Request::input('orderid') }}"/>
</td>
<td>
商户名称:
<input type="text" name="seller" value="{{ Request::input('seller') }}"/>
</td>
<td>
买家手机号:
<input type="text" name="mobile" value="{{ Request::input('mobile') }}"/>
</td>
<td>
买家昵称:
<input type="text" name="nickname" value="{{ Request::input('nickname') }}"/>
</td>
</tr>
<tr>
<td>
商品名称:
<input type="text" name="title" value="{{ Request::input('title') }}"/>
</td>
<td>
起:
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td>
止:
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td>
<select class="combox" name="item_type">
<option value="">订单类型</option>
<option value="GOODS" @if(Request::get('item_type') == 'GOODS') selected @endif>商品订单</option>
<option value="LESSON" @if(Request::get('item_type') == 'LESSON') selected @endif>报名</option>
<option value="GIFT" @if(Request::get('item_type') == 'GIFT') selected @endif>赠品</option>
<option value="ACTIVITY" @if(Request::get('item_type') == 'ACTIVITY') selected @endif>娱乐/生活</option>
</select>
</td>
<td>
<select class="combox" name="state">
<option value="">订单状态</option>
<option value="UNPAY" @if(Request::get('state') == 'UNPAY') selected @endif>待支付</option>
<option value="UNADDRESS" @if(Request::get('state') == 'UNADDRESS') selected @endif>待设收货地址</option>
<option value="PAID" @if(Request::get('state') == 'PAID') selected @endif>已支付</option>
<option value="DELIVERED" @if(Request::get('state') == 'DELIVERED') selected @endif>已发货</option>
<option value="SIGNED" @if(Request::get('state') == 'SIGNED') selected @endif>已签收</option>
<option value="CLOSED" @if(Request::get('state') == 'CLOSED') selected @endif>已关闭</option>
<option value="CANCEL" @if(Request::get('state') == 'CANCEL') selected @endif>已取消</option>
<option value="COMPLETED" @if(Request::get('state') == 'COMPLETED') selected @endif>已完成</option>
</select>
</td>
<td></td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="140">订单编号</th>
<th width="80">商户名称</th>
<th width="80">手机号</th>
<th width="80">用户名</th>
<th width="200">商品信息</th>
<th width="60">商品金额</th>
<th width="60">运费</th>
<th width="60">抵值</th>
<th width="60">总计支付</th>
<th width="60">总成本</th>
<!-- <th width="60">结算运费</th> -->
<!-- <th width="60">商家结算</th> -->
<th width="60">配送</th>
<th width="120">收件地址</th>
<th width="60">状态</th>
<th></th>
<th width="100" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="100" orderField="paid_at" @if (Request::input('orderField') == 'paid_at') class="{{ Request::input('orderDirection') }}" @endif>支付时间</th>
<th width="200"></th>
</tr>
</thead>
<tbody>
@foreach ($orders as $order)
<tr target="sid" rel="{{ $order->id }}">
<td>@switch($order->item_type)
@case('GOODS')
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #39a6ad;color: #39a6ad;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">商品</span>
@break
@case('ACTIVITY_GIFT')
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ec6d64;color: #ec6d64;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">活动</span>
@break
@case('VIP_GIFT')
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ec6d64;color: #ec6d64;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">赠品</span>
@break
@case('FULL_GIFT')
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #1153ff;color: #1153ff;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">满仓</span>
@break
@endswitch{{ $order->orderid }}</td>
<td>{{ $order->seller->name }}</td>
<td>{{ $order->user->mobile }}</td>
<td>{{ $order->user->info->nickname }}</td>
<td> @foreach ($order->details as $detail)
@if($detail->item){{ $detail->item->getTitle() ?? '未知'}} @endif <span style="color: red;font-size: 12px"><b>{{ number_format($detail->price,2) }}</b> * {{ $detail->number }}</span>
@endforeach
</td>
<td>{{ number_format($order->amount,2) }}</td>
<td>{{ number_format($order->freight, 2)}}</td>
<td>{{ number_format($order->score, 2) }}</td>
<td>{{ number_format($order->total - $order->score, 2) }}</td>
<td>{{ number_format($order->seller_amount, 2) }}</td>
<!-- <td>{{ number_format($order->seller_freight, 2) }}</td> -->
<!-- <td>{{ number_format($order->seller_freight + $order->seller_amount, 2) }}</td> -->
<td>{!! $order->express_type == 1 ? '快递' : '<span style="color: #ec6d64;">不需邮寄</span>' !!}</td>
<td>{{ $order->express->name ?? '' }} {{ $order->express->mobile ?? '' }} {{ $order->express->address ?? '' }}</td>
<td>{{ $order->state_text }}</td>
<td>{{ $order->remark }}</td>
<td>{{ $order->created_at }}</td>
<td>{{ $order->paid_at }}</td>
<td>
@if ($order->canDeliver() && $order->express_type == 1)
<a title="订单发货" target="dialog" href="{{ route('Admin.orders.deliver', $order) }}" width="550" height="250">订单发货</a>
@endif
@if ($order->canDeliver() && $order->express_type == 0)
<a title="自提完成" target="ajaxTodo" href="{{ route('Admin.orders.signin', $order) }}">自提完成</a>
@endif
@if ($order->canComplete())
<a title="完成订单?" target="ajaxTodo" href="{{ route('Admin.orders.complete', $order) }}">完成订单</a>
@endif
@if (!empty($order->express->company) && !empty($order->express->number))
<a title="物流跟踪" target="dialog" href="{{ route('Admin.orders.logistic', $order) }}" width="550" height="450">物流跟踪</a>
@endif
@if ($order->canClose())
<a title="关闭订单?" target="ajaxTodo" href="{{ route('Admin.orders.close', $order) }}">关闭订单</a>
@endif
<a title="订单详情" target="navTab" rel="ordershow" href="{{ route('Admin.orders.show', $order) }}">订单详情</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" order="{{ $orders->currentPage() }}" />
<input type="hidden" name="numPerPage" order="{{ $orders->perPage() }}" />
<input type="hidden" name="orderField" order="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" order="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.order})">
<option @if ($orders->perPage() == 30) selected @endif value="30">30</option>
<option @if ($orders->perPage() == 100) selected @endif value="100">100</option>
<option @if ($orders->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $orders->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $orders->total() }}" numPerPage="{{ $orders->perPage() }}" pageNumShown="10" currentPage="{{ $orders->currentPage() }}"></div>
</div>
</div>
<script type="text/javascript">
//点击导出
$('.export-data').click(function (event) {
location.href = "{{ route('Admin.export.allOrders') }}?" + $(this).parents('form').serialize();
});
</script>

View File

@@ -0,0 +1,41 @@
<div class="pageContent">
<form method="post" action="{{ url()->current() }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="59">
<div class="unit">
<label>订单编号:</label>
<input type="text" value="{{ $order->orderid }}" disabled/>
</div>
<div class="divider"></div>
<div class="unit">
<label>收件人信息:</label>
<input type="text" size="50" value="{{ $order->express->name ?? '' }} {{ $order->express->mobile ?? '' }}" disabled/>
</div>
<div class="unit">
<label>收件人地址:</label>
<input type="text" size="50" value="{{ $order->express->address ?? '' }}" disabled/>
</div>
<div class="divider"></div>
<div class="unit">
<label>物流名称:</label>
<select name="company" class="combox">
@foreach (Params::get('deliver_list', 'array') as $key => $deliver)
<option value="{{ $key }}">{{ $deliver }}</option>
@endforeach
</select>
</div>
<div class="divider"></div>
<div class="unit">
<label>物流单号:</label>
<input type="text" name="number" value="" class="required"/>
</div>
</div>
<div class="formBar">
<ul>
@csrf
@method('PUT')
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,173 @@
<div class="pageHeader">
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
<div class="searchBar">
<table class="searchContent">
<tr>
<td>
订单编号:
<input type="text" name="orderid" value="{{ Request::input('orderid') }}"/>
</td>
<td>
商品名称:
<input type="text" name="title" value="{{ Request::input('title') }}"/>
</td>
<td>
买家手机号:
<input type="text" name="mobile" value="{{ Request::input('mobile') }}"/>
</td>
<td>
买家昵称:
<input type="text" name="nickname" value="{{ Request::input('nickname') }}"/>
</td>
</tr>
<tr>
<td>
起:
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td>
止:
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
</td>
<td>
<select class="combox" name="item_type">
<option value="">订单类型</option>
<!-- <option value="GOODS" @if(Request::get('item_type') == 'GOODS') selected @endif>商品订单</option> -->
<option value="LESSON" @if(Request::get('item_type') == 'LESSON') selected @endif>报课</option>
<option value="GIFT" @if(Request::get('item_type') == 'GIFT') selected @endif>赠品</option>
<option value="ACTIVITY" @if(Request::get('item_type') == 'ACTIVITY') selected @endif>娱乐/生活</option>
</select>
</td>
<td>
<select class="combox" name="state">
@switch(url()->current())
@case(route('Admin.orders.index'))
<option value="">订单状态</option>
<option value="UNPAY" @if(Request::get('state') == 'UNPAY') selected @endif>待支付</option>
<option value="PAID" @if(Request::get('state') == 'PAID') selected @endif>已支付</option>
<option value="DELIVERED" @if(Request::get('state') == 'DELIVERED') selected @endif>已发货</option>
<option value="SIGNED" @if(Request::get('state') == 'SIGNED') selected @endif>已签收</option>
<option value="CLOSED" @if(Request::get('state') == 'CLOSED') selected @endif>已关闭</option>
<option value="CANCEL" @if(Request::get('state') == 'CANCEL') selected @endif>已取消</option>
<option value="COMPLETED" @if(Request::get('state') == 'COMPLETED') selected @endif>已完成</option>
@break
@case(route('Admin.orders.unpay'))
<option value="UNPAY">待支付</option>
@break
@case(route('Admin.orders.paid'))
<option value="PAID">已支付</option>
@break
@case(route('Admin.orders.signed'))
<option value="SIGNED">已签收</option>
@break
@endswitch
</select>
</td>
<td></td>
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
</tr>
</table>
</div>
</form>
</div>
<div class="pageContent">
<table class="table" width="100%" layoutH="112">
<thead>
<tr>
<th width="140">订单编号</th>
<th width="80">商户名称</th>
<th width="80">手机号</th>
<th width="80">用户名</th>
<th width="200">商品信息</th>
<th width="60">商品金额</th>
<th width="60">运费</th>
<th width="60">抵值</th>
<th width="60">实际支付</th>
<th width="60">配送</th>
<th width="120">收件地址</th>
<th width="60">状态</th>
<th></th>
<th width="100" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
<th width="100" orderField="paid_at" @if (Request::input('orderField') == 'paid_at') class="{{ Request::input('orderDirection') }}" @endif>支付时间</th>
<th width="200"></th>
</tr>
</thead>
<tbody>
@foreach ($orders as $order)
<tr target="sid" rel="{{ $order->id }}">
<td>
{{ $order->orderid }}
</td>
<td>{{ $order->seller->name }}</td>
<td>{{ $order->user->mobile }}</td>
<td>{{ $order->user->info->nickname }}</td>
<td> @foreach ($order->details as $detail)
@if($detail->item){{ $detail->item->getTitle() ?? '未知'}} @endif <span style="color: red;font-size: 12px"><b>{{ number_format($detail->price,2) }}</b> * {{ $detail->number }}</span>
@endforeach
</td>
<td>{{ number_format($order->amount,2) }}</td>
<td>{{ number_format($order->freight, 2)}}</td>
<td>{{ number_format($order->score, 2) }}</td>
<td>{{ number_format($order->total - $order->score, 2) }}</td>
<td>{!! $order->express_type == 1 ? '快递' : '<span style="color: #ec6d64;">不需邮寄</span>' !!}</td>
<td>{{ $order->express->name ?? '' }} {{ $order->express->mobile ?? '' }} {{ $order->express->address ?? '' }}</td>
<td>{{ $order->state_text }}</td>
<td>{{ $order->remark }}</td>
<td>{{ $order->created_at }}</td>
<td>{{ $order->paid_at }}</td>
<td>
@if ($order->canDeliver() && $order->express_type == 1)
<a title="订单发货" target="dialog" href="{{ route('Admin.orders.deliver', $order) }}" width="550" height="250">订单发货</a>
@endif
@if ($order->canDeliver() && $order->express_type == 0)
<a title="自提完成" target="ajaxTodo" href="{{ route('Admin.orders.signin', $order) }}">自提完成</a>
@endif
@if ($order->canComplete())
<a title="完成订单?" target="ajaxTodo" href="{{ route('Admin.orders.complete', $order) }}">完成订单</a>
@endif
@if (!empty($order->express->company) && !empty($order->express->number))
<a title="物流跟踪" target="dialog" href="{{ route('Admin.orders.logistic', $order) }}" width="550" height="450">物流跟踪</a>
@endif
@if ($order->canClose())
<a title="关闭订单?" target="ajaxTodo" href="{{ route('Admin.orders.close', $order) }}">关闭订单</a>
@endif
<a title="订单详情" target="navTab" rel="ordershow" href="{{ route('Admin.orders.show', $order) }}">订单详情</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="panelBar">
<form id="pagerForm" method="post" action="#rel#">
<input type="hidden" name="page" order="{{ $orders->currentPage() }}" />
<input type="hidden" name="numPerPage" order="{{ $orders->perPage() }}" />
<input type="hidden" name="orderField" order="{{ Request::input('orderField') }}" />
<input type="hidden" name="orderDirection" order="{{ Request::input('orderDirection') }}" />
</form>
<div class="pages">
<span>显示</span>
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.order})">
<option @if ($orders->perPage() == 30) selected @endif value="30">30</option>
<option @if ($orders->perPage() == 100) selected @endif value="100">100</option>
<option @if ($orders->perPage() == 200) selected @endif value="200">200</option>
</select>
<span>条,共 {{ $orders->total() }} </span>
</div>
<div class="pagination" targetType="navTab" totalCount="{{ $orders->total() }}" numPerPage="{{ $orders->perPage() }}" pageNumShown="10" currentPage="{{ $orders->currentPage() }}"></div>
</div>
</div>
<script type="text/javascript">
//点击导出
$('.export-data').click(function (event) {
location.href = "{{ route('Admin.export.orders') }}?" + $(this).parents('form').serialize();
});
</script>

View File

@@ -0,0 +1,40 @@
<div class="pageContent">
<div class="pageFormContent" layoutH="59">
<div class="unit">
<label>订单编号:</label>
<input type="text" value="{{ $order->orderid }}" disabled/>
</div>
@if($message['code'] == 'OK')
<div class="divider"></div>
<div class="unit">
<label>物流信息:</label>
<input type="text" value="{{ $message['name'] }}" disabled/>
</div>
<div class="divider"></div>
<div class="unit">
<label>物流单号:</label>
<input type="text" value="{{ $message['no'] }}" disabled/>
</div>
<div class="divider"></div>
<div class="unit">
<label>物流跟踪:</label>
</div>
<div class="unit">
<div style="width: 100%">
@foreach($message['list'] as $logistic)
<p style="line-height: 18px;height: 60px">{{ $logistic->content }}<br>{{ $logistic->time }}</p>
@endforeach
</div>
</div>
@else
<div class="unit">
<label>物流跟踪:</label>
<p style="color: red">{{ $message['msg'] }}</p>
</div>
@endif
</div>
</div>

View File

@@ -0,0 +1,24 @@
<div class="pageContent">
<form method="post" action="{{ url()->current() }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
<div class="pageFormContent" layoutH="59">
<div class="unit">
<label>订单编号:</label>
<input type="text" value="{{ $order->orderid }}" disabled/>
</div>
<div class="divider"></div>
<div class="unit">
<label>订单备注:</label>
<textarea name="remark_mgr" placeholder="请输入备注内容" rows="3"></textarea>
</div>
</div>
<div class="formBar">
<ul>
@csrf
@method('PUT')
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
</div>

View File

@@ -0,0 +1,106 @@
<div class="pageContent">
<table class="table" width="100%" layoutH="85">
<tbody>
<tr>
<td colspan="12" style="text-align: right;color: red;font-weight: bold">订单信息:</td>
</tr>
<tr>
<td colspan="3" style="text-align: right">@switch($order->item_type)
@case('GOODS')
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #39a6ad;color: #39a6ad;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .5rem">商品订单</span>
@break
@case('ACTIVITY')
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ec6d64;color: #ec6d64;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .5rem">娱乐/生活</span>
@break
@case('GIFT')
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ec6d64;color: #ec6d64;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .5rem">报名赠品</span>
@break
@case('LESSON')
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ec6d64;color: #ec6d64;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .5rem">课程</span>
@break
@endswitch{{ $order->orderid }}</td>
<td colspan="3" style="text-align: right">下单用户:{{ $order->user->mobile }}{{ $order->user->info->nickname }}</td>
<td colspan="3" style="text-align: right">创建时间:{{ $order->created_at }}</td>
<td colspan="3" style="text-align: right">订单状态:{{ $order->status_text }}</td>
</tr>
<tr>
<td colspan="12" style="text-align: right;color: red;font-weight: bold">支付时间:{{ $order->paid_at }}</td>
</tr>
<tr>
<td colspan="3" style="text-align: right">商品金额:{{ number_format($order->amount,2) }}</td>
<td colspan="3" style="text-align: right">订单运费:{{ number_format($order->freight, 2)}}</td>
<td colspan="3" style="text-align: right">抵值:-{{ number_format($order->score, 2) }}</td>
<td colspan="3" style="text-align: right">总计支付:{{ number_format($order->total - $order->score, 2) }}</td>
</tr>
<tr>
<td colspan="12" style="text-align: right;color: red;font-weight: bold">商户信息:</td>
</tr>
<!-- <tr>
<td colspan="3" style="text-align: right">商户名称:{{ $order->seller->name }}</td>
<td colspan="3" style="text-align: right">
总成本:{{ number_format($order->seller_amount, 2) }}</td>
<td colspan="3" style="text-align: right">
结算运费:{{ number_format($order->seller_freight, 2) }}</td>
<td colspan="3" style="text-align: right">
结算金额:{{ number_format($order->seller_amount + $order->seller_freight, 2) }}</td>
</tr> -->
<tr>
<td colspan="12" style="text-align: right;color: red;font-weight: bold">产品信息:</td>
</tr>
<tr>
<td colspan="4" style="text-align: right">产品名称:</td>
<td colspan="4" style="text-align: right">单价*数量:</td>
<td colspan="4" style="text-align: right">小计:</td>
</tr>
@foreach ($order->details as $detail)
<tr>
<td colspan="4" style="text-align: right">{{ $detail->item->getTitle() }}</td>
<td colspan="4" style="text-align: right">{{ $detail->price }} * {{ $detail->number }}</td>
<td colspan="4" style="text-align: right">{{ number_format($detail->total,2) }}</td>
</tr>
@endforeach
<tr>
<td colspan="12" style="text-align: right;color: red;font-weight: bold">收货信息:</td>
</tr>
<tr>
<td colspan="3" style="text-align: right">配送方式:{!! $order->express_type == 1 ? '快递' : '<span style="color: #ec6d64;">自提</span>' !!}</td>
<td colspan="3" style="text-align: right">收件人:{{ $order->express->name ?? '' }}</td>
<td colspan="3" style="text-align: right">手机号:{{ $order->express->mobile ?? '' }}</td>
<td colspan="3" style="text-align: right">地址:{{ $order->express->address ?? '' }}</td>
</tr>
@if(!empty($order->express->number))
<tr>
<td colspan="12" style="text-align: right;color: red;font-weight: bold">发货信息:</td>
</tr>
<tr>
<td colspan="6" style="text-align: right">物流公司:{{ $order->express->company ?? '' }}</td>
<td colspan="6" style="text-align: right">快递单号:{{ $order->express->number ?? '' }}</td>
</tr>
@endif
<tr>
<td colspan="12" style="text-align: right;color: red;font-weight: bold">买家留言:</td>
</tr>
<tr>
<td colspan="12" style="text-align: right">{{ $order->remark ?? '买家无留言' }}</td>
</tr>
<tr>
<td colspan="12" style="text-align: right;color: red;font-weight: bold">管理员备注:</td>
</tr>
<tr>
<td colspan="12" style="text-align: right;height: 40px">
@if($order->remark_mgr)
管理元备注内容:{{ $order->remark_mgr }}
@else
<a title="备注订单" target="dialog" href="{{ route('Admin.orders.remark', $order) }}" width="350" height="250" ><span style="border: solid 1px #ededed; background-color:#1153ff;color:white;padding: 5px;border-radius: 3px">备注订单</span></a>
@endif
</td>
</tr>
</tbody>
</table>
</div>

Some files were not shown because too many files have changed in this diff Show More