wangmingchuan321@qq.com 10 months ago
commit 6dfb163982
  1. 30
      app/admin/controller/Goods.php
  2. 219
      app/api/controller/Article.php
  3. 53
      app/api/controller/Recovery.php
  4. 43
      app/api/controller/Shop.php
  5. 48
      app/api/controller/User.php
  6. 49
      app/api/model/Article.php
  7. 3
      app/api/model/RecoveryOrder.php
  8. 36
      app/api/model/article/Category.php
  9. 4
      app/api/service/User.php
  10. 8
      app/common/model/RecoveryOrder.php
  11. 2
      public/admin/config.js
  12. 0
      public/admin/css/app.8c279721.css
  13. 2
      public/admin/css/menu.4bfc0e69.css
  14. 2
      public/admin/index.html
  15. 2
      public/admin/js/app.aa724359.js
  16. 3
      public/admin/js/menu.2b80788d.js
  17. 3
      public/admin/js/menu.51d0dd02.js
  18. 3
      public/admin/js/store.c3f1a051.js
  19. 3
      public/admin/js/store.e34e83e7.js

@ -12,8 +12,8 @@ declare (strict_types=1);
namespace app\admin\controller;
use think\response\Json;
use think\facade\Db;
use think\response\Json;
/**
* 商城管理
@ -61,24 +61,20 @@ class Goods extends Controller
if (isset($params['max_price']) && $params['max_price']) {
$where[] = ['net_price', '<=', $params['max_price']];
}
$list = Db::connect("dataCenterMysql")->table('goods_sku')
->where($where)
->order($sort." ".$order)
->paginate($this->request->param('per_page', 15))->each(function ($item, $key){
$item['create_time'] = date("Y-m-d H:i:s", $item['create_time']);
$item['update_time'] = date("Y-m-d H:i:s", $item['update_time']);
$item['channel'] = config('app.platformList')[$item['channel']] ?? "";
return $item;
});
if (!empty($params['catalog_name'])) {
$where[] = ['catalog_name', 'like', "%{$params["catalog_name"]}%"];
}
$list = Db::connect("dataCenterMysql")->table('goods_sku')
->where($where)
->order($sort, $order)
->paginate($this->request->param('per_page', 15))->each(function ($item, $key) {
$item['create_time'] = date("Y-m-d H:i:s", $item['create_time']);
$item['update_time'] = date("Y-m-d H:i:s", $item['update_time']);
$item['channel'] = config('app.platformList')[$item['channel']] ?? "";
return $item;
});
return $this->renderSuccess(compact('list'));
}
}

@ -12,8 +12,13 @@ declare (strict_types=1);
namespace app\api\controller;
use think\response\Json;
use app\api\model\Article as ArticleModel;
use app\api\service\User as UserService;
use cores\exception\BaseException;
use think\db\exception\DataNotFoundException;
use think\db\exception\DbException;
use think\db\exception\ModelNotFoundException;
use think\response\Json;
/**
* 文章控制器
@ -26,12 +31,13 @@ class Article extends Controller
* 文章列表
* @param int $categoryId
* @return Json
* @throws \think\db\exception\DbException
* @throws DbException
*/
public function list(int $categoryId = 0): Json
{
$model = new ArticleModel;
$list = $model->getList($categoryId);
$title = (string)$this->request->input('title');
$list = $model->getList($categoryId, 15, $title);
return $this->renderSuccess(compact('list'));
}
@ -39,7 +45,7 @@ class Article extends Controller
* 文章详情
* @param int $articleId
* @return Json
* @throws \cores\exception\BaseException
* @throws BaseException
*/
public function detail(int $articleId): Json
{
@ -47,6 +53,211 @@ class Article extends Controller
return $this->renderSuccess(compact('detail'));
}
/**
* @notes:新增文章
* @return Json
* @throws BaseException
* @author: wanghousheng
*/
public function add(): Json
{
if (UserService::isStore()) {
throwError("无权限", 403);
}
$title = $this->request->post('title');
if (!$title) {
return $this->renderError('标题不能为空');
}
$category_id = intval($this->request->post('category_id'));
if (!$category_id) {
return $this->renderError('分类不能为空');
}
$image_id = intval($this->request->post('image_id'));
if (!$image_id) {
return $this->renderError('图片不能为空');
}
$content = $this->request->post('content');
if (!$content) {
return $this->renderError('内容不能为空');
}
$sort = intval($this->request->post('sort', 100));
$status = intval($this->request->post('status', 1));
$data = compact('status', 'sort', 'content', 'image_id', 'category_id', 'title');
if ((new ArticleModel)->add($data)) {
return $this->renderSuccess('添加成功');
}
return $this->renderError('添加失败');
}
/**
* @notes:编辑文章
* @return Json
* @throws BaseException
* @author: wanghousheng
*/
public function edit(): Json
{
if (UserService::isStore()) {
throwError("无权限", 403);
}
$articleId = intval($this->request->post('article_id'));
if (!$articleId) {
return $this->renderError('缺少必要参数');
}
$title = $this->request->post('title');
if (!$title) {
return $this->renderError('标题不能为空');
}
$category_id = intval($this->request->post('category_id'));
if (!$category_id) {
return $this->renderError('分类不能为空');
}
$image_id = intval($this->request->post('image_id'));
if (!$image_id) {
return $this->renderError('图片不能为空');
}
$content = $this->request->post('content');
if (!$content) {
return $this->renderError('内容不能为空');
}
$sort = intval($this->request->post('sort', 100));
$status = intval($this->request->post('status', 1));
$data = compact('status', 'sort', 'content', 'image_id', 'category_id', 'title');
// 文章详情
$model = ArticleModel::detail($articleId);
// 更新记录
if ($model->edit($data)) {
return $this->renderSuccess('更新成功');
}
return $this->renderError($model->getError() ?: '更新失败');
}
/**
* @notes:删除文章
* @return Json
* @throws BaseException
* @author: wanghousheng
*/
public function delete(): Json
{
if (UserService::isStore()) {
throwError("无权限", 403);
}
$articleId = intval($this->request->post('article_id'));
if (!$articleId) {
return $this->renderError('缺少必要参数');
}
// 文章详情
$model = ArticleModel::detail($articleId);
if (!$model->setDelete()) {
return $this->renderError($model->getError() ?: '删除失败');
}
return $this->renderSuccess('删除成功');
}
/**
* @notes:添加分类
* @return Json
* @throws BaseException
* @author: wanghousheng
*/
public function addCategory(): Json
{
if (UserService::isStore()) {
throwError("无权限", 403);
}
$name = $this->request->post('name');
if (!$name) {
return $this->renderError('名称不能为空');
}
$img_id = intval($this->request->post('img_id'));
if (!$img_id) {
return $this->renderError('图片不能为空');
}
$status = intval($this->request->post('status', 1));
$sort = intval($this->request->post('sort', 100));
$data = compact('status', 'sort', 'name', 'img_id');
if ((new \app\api\model\article\Category())->add($data)) {
return $this->renderSuccess('添加成功');
}
return $this->renderError('添加失败');
}
/**
* @notes:更新分类
* @return Json
* @throws BaseException
* @author: wanghousheng
*/
public function editCategory(): Json
{
if (UserService::isStore()) {
throwError("无权限", 403);
}
$categoryId = intval($this->request->post('category_id'));
if (!$categoryId) {
return $this->renderError('缺少必要参数');
}
$name = $this->request->post('name');
if (!$name) {
return $this->renderError('名称不能为空');
}
$img_id = intval($this->request->post('img_id'));
if (!$img_id) {
return $this->renderError('图片不能为空');
}
$status = intval($this->request->post('status', 1));
$sort = intval($this->request->post('sort', 100));
$data = compact('status', 'sort', 'name', 'img_id');
// 分类详情
$model = \app\api\model\article\Category::detail($categoryId);
// 更新记录
if ($model->edit($data)) {
return $this->renderSuccess('更新成功');
}
return $this->renderError($model->getError() ?: '更新失败');
}
/**
* @notes:删除分类
* @return Json
* @throws BaseException
* @author: wanghousheng
*/
public function delCategory(): Json
{
if (UserService::isStore()) {
throwError("无权限", 403);
}
$categoryId = intval($this->request->post('category_id'));
if (!$categoryId) {
return $this->renderError('缺少必要参数');
}
$model = \app\api\model\article\Category::detail($categoryId);
if (!$model->remove($categoryId)) {
return $this->renderError($model->getError() ?: '删除失败');
}
return $this->renderSuccess('删除成功');
}
/**
* @notes:分类列表
* @return Json
* @throws DataNotFoundException
* @throws DbException
* @throws ModelNotFoundException|BaseException
* @author: wanghousheng
*/
public function categoryList(): Json
{
if (UserService::isStore()) {
throwError("无权限", 403);
}
$model = new \app\api\model\article\Category;
$list = $model->getList();
return $this->renderSuccess(compact('list'));
}
public function helpCenter(): Json
{
$model = new ArticleModel;

@ -85,7 +85,7 @@ class Recovery extends Controller
$where['order_status'] = $order_status;
}
$model = new RecoveryOrder();
$list = $model->getUserList($where);
$list = $model->getUserList($where, 15, ['shop']);
$data['list'] = $list->items();
$data['total'] = $list->total();
if ($data['total']) {
@ -102,6 +102,7 @@ class Recovery extends Controller
foreach ($data['list'] as $key => $value) {
$data['list'][$key]['is_cancel'] = 0;
$data['list'][$key]['is_success'] = 0;
$data['list'][$key]['is_edit'] = 0;
$data['list'][$key]['recovery_image'] = '';
if (!empty($image_list[$value['recovery_id']])) {
$data['list'][$key]['recovery_image'] = $image_list[$value['recovery_id']];
@ -109,6 +110,7 @@ class Recovery extends Controller
if ($value['order_status'] == RecoveryStatusEnum::ACCEPTED) {
$data['list'][$key]['is_cancel'] = 1;
$data['list'][$key]['is_success'] = 1;
$data['list'][$key]['is_edit'] = 1;
}
}
}
@ -142,8 +144,12 @@ class Recovery extends Controller
$info = $model->getDetails($orderId);
if ($info && !empty($info['images'])) {
$info['is_cancel'] = 0;
$info['is_success'] = 0;
$info['is_edit'] = 0;
if ($info['order_status'] == RecoveryStatusEnum::ACCEPTED) {
$info['is_cancel'] = 1;
$info['is_success'] = 1;
$info['is_edit'] = 1;
}
$images_list = helper::getArrayColumn($info['images'], 'file');
$arr = [];
@ -152,6 +158,14 @@ class Recovery extends Controller
}
$info['images_list'] = $arr;
unset($info['images']);
//回收信息
$info['recovery_image'] = '';
$recoveryInfo = ServerRecovery::detail(['recovery_id' => $info['recovery_id']], ['image']);
if (!empty($recoveryInfo['recovery_image'])) {
$info['recovery_image'] = $recoveryInfo['recovery_image'];
}
//门店信息
$info['shop_info'] = \app\api\model\store\Shop::detail($info['shop_id'], ['logoImage']);
}
return $this->renderSuccess(['detail' => $info]);
}
@ -249,7 +263,6 @@ class Recovery extends Controller
return $this->renderError('门牌号不能为空');
}
}
$shipping_address .= $house_number;
$express_id = intval($this->request->post('express_id'));
$express_no = $this->request->post('express_no');
$data = [
@ -269,6 +282,7 @@ class Recovery extends Controller
'recovery_type' => $recovery_type,
'shop_id' => $shop_id,
'recovery_name' => $recovery_name,
'house_number' => $house_number,
];
$model = new RecoveryOrder();
if ($model->add($data, $imageIds)) {
@ -288,9 +302,19 @@ class Recovery extends Controller
if (!$order_id) {
return $this->renderError('缺少必要参数');
}
$imageIds = $this->request->post('image_ids');
$image_str = $this->request->post('image_ids');
$imageIds = [];
if ($image_str) {
if (!is_array($image_str)) {
$imageIds = explode(',', $image_str);
} else {
$imageIds = $image_str;
}
}
if ($imageIds && !is_array($imageIds)) {
$imageIds = explode(',', $imageIds);
} else {
$imageIds = [];
}
$shop_id = intval($this->request->post('shop_id'));
if (!$shop_id) {
@ -340,7 +364,6 @@ class Recovery extends Controller
return $this->renderError('门牌号不能为空');
}
}
$shipping_address .= $house_number;
$express_id = intval($this->request->post('express_id'));
$express_no = $this->request->post('express_no');
$data = [
@ -358,6 +381,7 @@ class Recovery extends Controller
'username' => $username,
'recovery_type' => $recovery_type,
'shop_id' => $shop_id,
'house_number' => $house_number,
];
$model = new RecoveryOrder();
if ($model->edit($data, $order_id, $imageIds)) {
@ -365,4 +389,25 @@ class Recovery extends Controller
}
return $this->renderError('操作失败');
}
/**
* @notes:订单验收
* @return Json
* @author: wanghousheng
*/
public function completeOrder(): Json
{
$order_id = intval($this->request->post('order_id'));
if (!$order_id) {
return $this->renderError('缺少必要参数');
}
if (!RecoveryOrder::detail(['order_id' => $order_id, 'order_status' => RecoveryStatusEnum::ACCEPTED])) {
return $this->renderError('订单信息不存在');
}
$model = new RecoveryOrder();
if ($model->where(['order_id' => $order_id])->save(['order_status' => RecoveryStatusEnum::ALREADY])) {
return $this->renderSuccess('操作成功');
}
return $this->renderError('操作失败');
}
}

@ -12,8 +12,8 @@ declare (strict_types=1);
namespace app\api\controller;
use think\response\Json;
use app\api\model\store\Shop as ShopModel;
use think\response\Json;
/**
* 门店列表
@ -46,4 +46,45 @@ class Shop extends Controller
$detail = ShopModel::detail($shopId, ['logoImage']);
return $this->renderSuccess(compact('detail'));
}
public function stopTimes(): Json
{
$data = [];
$shopId = intval($this->request->post('shop_id'));
if (!$shopId) {
return $this->renderError('缺少必要参数');
}
$detail = ShopModel::detail($shopId);
if (!empty($detail['shop_hours'])) {
$shop_hours = explode('-', $detail['shop_hours']);
if (count($shop_hours) == 2) {
$array = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"];
for ($i = 0; $i < 3; $i++) {
$start_time = date('Y-m-d', strtotime('+' . $i . ' day', time())) . ' ' . $shop_hours[0];
$end_time = date('Y-m-d', strtotime('+' . $i . ' day', time())) . ' ' . $shop_hours[1];
$timeOne = strtotime($start_time);
$timeTwo = strtotime($end_time);
$times = [];
while ($timeOne < $timeTwo) {
$status = 0;
if ($timeOne > time()) {
$status = 1;
}
$times[] = [
'value' => date('H:i', $timeOne),
'status' => $status,
'time' => date('Y-m-d H:i:s', $timeOne)
];
$timeOne = $timeOne + 30 * 60;
}
$data[] = [
'name' => $array[date("w", strtotime($start_time))],
'date' => date('m-d', strtotime($start_time)),
'list' => $times,
];
}
}
}
return $this->renderSuccess($data);
}
}

@ -12,16 +12,16 @@ declare (strict_types=1);
namespace app\api\controller;
use app\api\model\user\UserInvoice;
use app\api\model\user\InvoiceOrder;
use app\api\service\Feedback;
use think\response\Json;
use app\api\model\User as UserModel;
use app\api\model\user\BalanceLog;
use app\api\model\user\GoodSource as GoodsSourceModel;
use app\api\model\user\InvoiceOrder;
use app\api\model\user\UserInvoice;
use app\api\model\UserCoupon as UserCouponModel;
use app\api\service\Feedback;
use app\api\service\User as UserService;
use cores\exception\BaseException;
use app\api\model\user\BalanceLog;
use app\api\model\user\GoodSource as GoodsSourceModel;
use think\response\Json;
/**
* 用户管理
@ -45,13 +45,43 @@ class User extends Controller
$userInfo['finace_count'] = BalanceLog::where(['user_id' => $userInfo->user_id, 'scene' => 50])->count() ?? 0;
//获取用户收入
$userInfo['income'] = BalanceLog::where(['user_id' => $userInfo->user_id])
->whereIn('scene', [10, 30, 40, 60])
->where('money', '>', 0)
->sum('money') ?? 0;
->whereIn('scene', [10, 30, 40, 60])
->where('money', '>', 0)
->sum('money') ?? 0;
return $this->renderSuccess(compact('userInfo'));
}
/**
* @notes:编辑用户信息
* @return Json|void
* @throws BaseException
* @author: wanghousheng
*/
public function editUser()
{
$userId = UserService::getCurrentLoginUserId();
$data = [];
$avatar_id = intval($this->request->post('avatar_id'));
if ($avatar_id) {
$data['avatar_id'] = $avatar_id;
}
$nick_name = $this->request->post('nick_name');
if ($nick_name) {
$data['nick_name'] = $nick_name;
}
$gender = intval($this->request->post('gender'));
if ($gender) {
$data['gender'] = $gender;
}
if ($data) {
$model = new UserModel();
$model->where(['user_id' => $userId])->save($data);
return $this->renderSuccess('操作成功');
}
$this->renderError('操作失败');
}
/**
* 账户资产
* @return Json

@ -12,9 +12,8 @@ declare (strict_types=1);
namespace app\api\model;
use cores\exception\BaseException;
use app\common\model\Article as ArticleModel;
use app\api\model\article\Category as CategoryModel;
use app\common\model\Article as ArticleModel;
/**
* 商品评价模型
@ -81,11 +80,14 @@ class Article extends ArticleModel
* @return \think\Paginator
* @throws \think\db\exception\DbException
*/
public function getList(int $categoryId = 0, int $limit = 15): \think\Paginator
public function getList(int $categoryId = 0, int $limit = 15, string $title = ''): \think\Paginator
{
// 检索查询条件
$filter = [];
$categoryId > 0 && $filter[] = ['category_id', '=', $categoryId];
if ($title) {
$filter[] = ['title', 'like', "%$title%"];
}
// 获取列表数据
$list = $this->withoutField(['content'])
->where($filter)
@ -96,6 +98,17 @@ class Article extends ArticleModel
return static::preload($list, ['image', 'category']);
}
/**
* 新增记录
* @param array $data
* @return bool
*/
public function add(array $data): bool
{
$data['store_id'] = self::$storeId;
return $this->save($data);
}
public function helpCenter()
{
$cat = CategoryModel::where(['status' => 1])->with(['catImg'])->order('sort desc')->select()->toArray();
@ -108,4 +121,34 @@ class Article extends ArticleModel
}
return $cat;
}
/**
* 更新记录
* @param array $data
* @return bool
*/
public function edit(array $data): bool
{
return $this->save($data) !== false;
}
/**
* 软删除
* @return bool
*/
public function setDelete(): bool
{
return $this->save(['is_delete' => 1]);
}
/**
* 获取文章总数量
* @param array $where
* @return int
*/
public static function getArticleTotal(array $where = []): int
{
return (new static)->where($where)->where('is_delete', '=', 0)->count();
}
}

@ -30,7 +30,7 @@ class RecoveryOrder extends BaseRecoveryOrder
* @throws DbException
* @author: wanghousheng
*/
public function getUserList(array $where = [], int $listRows = 15): Paginator
public function getUserList(array $where = [], int $listRows = 15, array $with = []): Paginator
{
// 当前用户ID
$userId = UserService::getCurrentLoginUserId();
@ -39,6 +39,7 @@ class RecoveryOrder extends BaseRecoveryOrder
}
//分销商工程师
return $this
->with($with)
->where($where)
->order(['create_time' => 'desc'])
->paginate($listRows);

@ -12,6 +12,7 @@ declare (strict_types=1);
namespace app\api\model\article;
use app\api\model\Article as ArticleModel;
use app\common\model\article\Category as CategoryModel;
/**
@ -44,4 +45,39 @@ class Category extends CategoryModel
return $this->getList(['status' => 1]);
}
public function add(array $data): bool
{
// 保存记录
$data['store_id'] = self::$storeId;
return $this->save($data);
}
/**
* 编辑记录
* @param array $data
* @return bool
*/
public function edit(array $data): bool
{
// 保存记录
return $this->save($data);
}
/**
* 删除商品分类
* @param int $categoryId
* @return bool
*/
public function remove(int $categoryId): bool
{
// 判断是否存在文章
$articleCount = ArticleModel::getArticleTotal(['category_id' => $categoryId]);
if ($articleCount > 0) {
$this->error = '该分类下存在' . $articleCount . '个文章,不允许删除';
return false;
}
// 删除记录
return $this->delete();
}
}

@ -93,7 +93,7 @@ class User extends UserService
$userId = self::getCurrentLoginUserId();
//分销表里有没有
$dealerInfo = \app\api\model\dealer\User::detail($userId, []);
if (!$dealerInfo->isEmpty() && self::checkEffectiveTime()) {
if (!empty($dealerInfo) && self::checkEffectiveTime()) {
return true;
}
}
@ -113,7 +113,7 @@ class User extends UserService
$userId = self::getCurrentLoginUserId();
//分销表里有没有
$dealerInfo = \app\api\model\dealer\User::detail($userId, []);
if (!$dealerInfo->isEmpty() && self::checkEffectiveTime() && $dealerInfo['type'] == DealerUserEnum::ENGINEER) {
if (!empty($dealerInfo) && self::checkEffectiveTime() && $dealerInfo['type'] == DealerUserEnum::ENGINEER) {
return true;
}
}

@ -4,10 +4,12 @@ declare (strict_types=1);
namespace app\common\model;
use app\api\model\Server\ServerRecovery;
use app\api\model\store\Shop;
use app\common\enum\RecoveryStatusEnum;
use app\common\enum\RecoveryTypeEnum;
use cores\BaseModel;
use think\model\relation\HasMany;
use think\model\relation\HasOne;
class RecoveryOrder extends BaseModel
{
@ -69,4 +71,10 @@ class RecoveryOrder extends BaseModel
return static::get($where, $with);
}
public function shop(): HasOne
{
return $this->hasOne(Shop::class, 'shop_id', 'shop_id');
}
}

@ -6,5 +6,5 @@ window.serverConfig = {
BASE_API: 'https://www.saas.njrenzhou.com/index.php?s=/admin',
// 必填: store模块的入口地址
// 例如: https://www.你的域名.com/store
STORE_URL: 'https://www.saas.njrenzhou.com/store'
STORE_URL: 'https://www.saas.njrenzhou.com/store',
}

@ -1 +1 @@
.ant-tag[data-v-669d76dd]{cursor:pointer}.ant-tag[data-v-669d76dd]:hover{border:1px solid #fb9a9a;color:#fb9a9a}.formContent[data-v-7befcb3a]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.formContent .formItem[data-v-7befcb3a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.formContent .formItem .formTitle[data-v-7befcb3a]{display:inline-block;width:70px;text-align:right;margin-right:10px}
.ant-tag[data-v-669d76dd]{cursor:pointer}.ant-tag[data-v-669d76dd]:hover{border:1px solid #fb9a9a;color:#fb9a9a}.formContent[data-v-3c19673d]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.formContent .formItem[data-v-3c19673d]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.formContent .formItem .formTitle[data-v-3c19673d]{display:inline-block;width:50px;text-align:right;margin-right:5px}

@ -1 +1 @@
<!DOCTYPE html><html lang="zh-cmn-Hans"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>超级管理后台</title><style>#loading-mask{position:fixed;left:0;top:0;height:100%;width:100%;background:#fff;user-select:none;z-index:9999;overflow:hidden}.loading-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-100%)}.loading-dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:64px;width:64px;height:64px;box-sizing:border-box}.loading-dot i{width:22px;height:22px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.loading-dot i:nth-child(1){top:0;left:0}.loading-dot i:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.loading-dot i:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.loading-dot i:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antSpinMove{to{opacity:1}}</style><link href="css/cloud.0422aa4a.css" rel="prefetch"><link href="css/menu.bd0a1218.css" rel="prefetch"><link href="css/setting.13b2d651.css" rel="prefetch"><link href="css/store.bbb0f5dd.css" rel="prefetch"><link href="css/user.a645b22a.css" rel="prefetch"><link href="js/cloud.7bbfae1c.js" rel="prefetch"><link href="js/fail.306fabae.js" rel="prefetch"><link href="js/menu.51d0dd02.js" rel="prefetch"><link href="js/setting.4766d8b5.js" rel="prefetch"><link href="js/store.e34e83e7.js" rel="prefetch"><link href="js/user.8986244d.js" rel="prefetch"><link href="css/app.9fd2da7c.css" rel="preload" as="style"><link href="css/chunk-vendors.23cf87cf.css" rel="preload" as="style"><link href="js/app.6de5d359.js" rel="preload" as="script"><link href="js/chunk-vendors.597463c4.js" rel="preload" as="script"><link href="css/chunk-vendors.23cf87cf.css" rel="stylesheet"><link href="css/app.9fd2da7c.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"><div id="loading-mask"><div class="loading-wrapper"><span class="loading-dot loading-dot-spin"><i></i><i></i><i></i><i></i></span></div></div></div><script src="config.js"></script><script src="js/chunk-vendors.597463c4.js"></script><script src="js/app.6de5d359.js"></script></body></html>
<!DOCTYPE html><html lang="zh-cmn-Hans"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>超级管理后台</title><style>#loading-mask{position:fixed;left:0;top:0;height:100%;width:100%;background:#fff;user-select:none;z-index:9999;overflow:hidden}.loading-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-100%)}.loading-dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:64px;width:64px;height:64px;box-sizing:border-box}.loading-dot i{width:22px;height:22px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.loading-dot i:nth-child(1){top:0;left:0}.loading-dot i:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.loading-dot i:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.loading-dot i:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antSpinMove{to{opacity:1}}</style><link href="css/cloud.0422aa4a.css" rel="prefetch"><link href="css/menu.4bfc0e69.css" rel="prefetch"><link href="css/setting.13b2d651.css" rel="prefetch"><link href="css/store.bbb0f5dd.css" rel="prefetch"><link href="css/user.a645b22a.css" rel="prefetch"><link href="js/cloud.7bbfae1c.js" rel="prefetch"><link href="js/fail.306fabae.js" rel="prefetch"><link href="js/menu.2b80788d.js" rel="prefetch"><link href="js/setting.4766d8b5.js" rel="prefetch"><link href="js/store.c3f1a051.js" rel="prefetch"><link href="js/user.8986244d.js" rel="prefetch"><link href="css/app.8c279721.css" rel="preload" as="style"><link href="css/chunk-vendors.23cf87cf.css" rel="preload" as="style"><link href="js/app.aa724359.js" rel="preload" as="script"><link href="js/chunk-vendors.597463c4.js" rel="preload" as="script"><link href="css/chunk-vendors.23cf87cf.css" rel="stylesheet"><link href="css/app.8c279721.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"><div id="loading-mask"><div class="loading-wrapper"><span class="loading-dot loading-dot-spin"><i></i><i></i><i></i><i></i></span></div></div></div><script src="config.js"></script><script src="js/chunk-vendors.597463c4.js"></script><script src="js/app.aa724359.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save