mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-10-29 22:10:49 +00:00
Merge branch 'v5.0.0dev' of https://gitee.com/ZhongBangKeJi/CRMEB into v5.0.0dev
This commit is contained in:
commit
0feb7ebc1d
@ -231,7 +231,7 @@ class SystemCrud extends AuthController
|
||||
public function getMenus()
|
||||
{
|
||||
return app('json')->success(app()->make(SystemMenusServices::class)
|
||||
->getList(['auth_type' => 1], ['pid', 'id', 'menu_name as label', 'id as value']));
|
||||
->getList(['auth_type' => 1, 'is_show' => 1], ['auth_type', 'pid', 'id', 'menu_name as label', 'id as value']));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -13,6 +13,7 @@ namespace app\adminapi\controller\v1\setting;
|
||||
|
||||
use app\adminapi\controller\AuthController;
|
||||
use app\services\system\SystemMenusServices;
|
||||
use app\services\system\SystemRouteCateServices;
|
||||
use app\services\system\SystemRouteServices;
|
||||
use think\facade\App;
|
||||
use think\facade\Route;
|
||||
@ -274,14 +275,21 @@ class SystemMenus extends AuthController
|
||||
public function ruleList()
|
||||
{
|
||||
//获取所有的路由
|
||||
$ruleList = app()->make(SystemRouteServices::class)->selectList(['app_name' => 'adminapi'], 'name,path,method,type,id')->toArray();
|
||||
$ruleList = app()->make(SystemRouteCateServices::class)->selectList(['app_name' => 'adminapi'], 'id,name', 0, 0, 'id asc,sort desc', ['children'])->toArray();
|
||||
$menuApiList = $this->services->getColumn(['auth_type' => 2, 'is_del' => 0], "concat(`api_url`,'_',lower(`methods`)) as rule");
|
||||
if ($menuApiList) $menuApiList = array_column($menuApiList, 'rule');
|
||||
$list = [];
|
||||
foreach ($ruleList as $item) {
|
||||
if ($item['type'] || !in_array($item['path'] . '_' . strtolower($item['method']), $menuApiList)) {
|
||||
$item['real_name'] = $item['name'] ?? '';
|
||||
$item['method'] = strtoupper($item['method']);
|
||||
$children = [];
|
||||
foreach ($item['children'] as $value) {
|
||||
if ($value['type'] || !in_array($value['path'] . '_' . strtolower($value['method']), $menuApiList)) {
|
||||
$value['real_name'] = $value['name'] ?? '';
|
||||
$value['method'] = strtoupper($value['method']);
|
||||
$children[] = $value;
|
||||
}
|
||||
}
|
||||
if ($children) {
|
||||
$item['children'] = $children;
|
||||
$list[] = $item;
|
||||
}
|
||||
}
|
||||
|
||||
@ -93,4 +93,4 @@ Route::group('agent', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '分销']);
|
||||
|
||||
@ -154,4 +154,4 @@ Route::group('app', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '应用']);
|
||||
|
||||
@ -52,4 +52,4 @@ Route::group('cms', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '文章']);
|
||||
|
||||
@ -48,5 +48,5 @@ Route::group(function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '公共']);
|
||||
|
||||
|
||||
@ -32,4 +32,4 @@ Route::group(function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => 'CRUD']);
|
||||
|
||||
@ -74,4 +74,4 @@ Route::group('diy', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => 'DIY']);
|
||||
|
||||
@ -60,4 +60,4 @@ Route::group('export', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '导出']);
|
||||
|
||||
@ -47,4 +47,4 @@ Route::group('file', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '附件']);
|
||||
|
||||
@ -54,4 +54,4 @@ Route::group('finance', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '财务']);
|
||||
|
||||
@ -39,4 +39,4 @@ Route::group('freight', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '物流']);
|
||||
|
||||
@ -68,4 +68,4 @@ Route::group('live', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '直播']);
|
||||
|
||||
@ -97,9 +97,9 @@ Route::group('marketing', function () {
|
||||
//秒杀统计
|
||||
Route::get('seckill/statistics/head/:id', 'v1.marketing.StoreSeckill/seckillStatistics')->option(['real_name' => '秒杀统计']);
|
||||
//参与活动人员
|
||||
Route::get('seckill/statistics/people/:id','v1.marketing.StoreSeckill/seckillPeople')->option(['real_name' => '秒杀参与人']);
|
||||
Route::get('seckill/statistics/people/:id', 'v1.marketing.StoreSeckill/seckillPeople')->option(['real_name' => '秒杀参与人']);
|
||||
//秒杀订单
|
||||
Route::get('seckill/statistics/order/:id','v1.marketing.StoreSeckill/seckillOrder')->option(['real_name' => '秒杀参与人']);
|
||||
Route::get('seckill/statistics/order/:id', 'v1.marketing.StoreSeckill/seckillOrder')->option(['real_name' => '秒杀参与人']);
|
||||
|
||||
//积分日志列表
|
||||
Route::get('integral', 'v1.marketing.UserPoint/index')->option(['real_name' => '积分日志列表']);
|
||||
@ -196,4 +196,4 @@ Route::group('marketing', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '营销']);
|
||||
|
||||
@ -53,4 +53,4 @@ Route::group('merchant', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '物流']);
|
||||
|
||||
@ -48,4 +48,4 @@ Route::group('notify', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '消息']);
|
||||
|
||||
@ -111,7 +111,7 @@ Route::group('order', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '订单']);
|
||||
|
||||
/**
|
||||
* 售后 相关路由
|
||||
@ -138,4 +138,4 @@ Route::group('refund', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '退款']);
|
||||
|
||||
@ -105,4 +105,4 @@ Route::group('product', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '商品']);
|
||||
|
||||
@ -65,4 +65,4 @@ Route::group('serve', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '一号通']);
|
||||
|
||||
@ -322,4 +322,4 @@ Route::group('setting', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '设置']);
|
||||
|
||||
@ -76,4 +76,4 @@ Route::group('statistic', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '统计']);
|
||||
|
||||
@ -154,7 +154,7 @@ Route::group('system', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '维护']);
|
||||
|
||||
Route::group('system', function () {
|
||||
|
||||
@ -182,5 +182,5 @@ Route::group('system', function () {
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminEditorTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '文件']);
|
||||
|
||||
|
||||
@ -164,4 +164,4 @@ Route::group('user', function () {
|
||||
\app\adminapi\middleware\AdminAuthTokenMiddleware::class,
|
||||
\app\adminapi\middleware\AdminCheckRoleMiddleware::class,
|
||||
\app\adminapi\middleware\AdminLogMiddleware::class
|
||||
]);
|
||||
])->option(['cate_name' => '用户']);
|
||||
|
||||
@ -681,7 +681,7 @@ class PublicController
|
||||
$data['member_card_status'] = sys_config('member_card_status');//是否开启付费会员
|
||||
$data['member_price_status'] = sys_config('member_price_status');//商品会员折扣价展示启用
|
||||
$data['ali_pay_status'] = sys_config('ali_pay_status') != '0';//支付宝是否启用
|
||||
$data['wechat_pay_status'] = sys_config('pay_weixin_open') != '0';//微信是否启用
|
||||
$data['pay_weixin_open'] = sys_config('pay_weixin_open') != '0';//微信是否启用
|
||||
$data['yue_pay_status'] = sys_config('yue_pay_status') == 1 && sys_config('balance_func_status') != 0;//余额是否启用
|
||||
$data['offline_pay_status'] = sys_config('offline_pay_status') == 1;//线下是否启用
|
||||
$data['friend_pay_status'] = sys_config('friend_pay_status') == 1;//好友是否启用
|
||||
|
||||
@ -121,6 +121,7 @@ class StoreIntegralOrderController
|
||||
/**
|
||||
* 订单 查看物流
|
||||
* @param Request $request
|
||||
* @param ExpressServices $expressServices
|
||||
* @param $uni
|
||||
* @return mixed
|
||||
*/
|
||||
@ -128,6 +129,8 @@ class StoreIntegralOrderController
|
||||
{
|
||||
if (!$uni || !($order = $this->services->getUserOrderDetail($uni, $request->uid()))) return app('json')->fail(410173);
|
||||
if ($order['delivery_type'] != 'express' || !$order['delivery_id']) return app('json')->fail(410206);
|
||||
$order['price'] = (int)$order['price'];
|
||||
$order['total_price'] = (int)$order['total_price'];
|
||||
$cacheName = 'integral' . $order['order_id'] . $order['delivery_id'];
|
||||
return app('json')->success([
|
||||
'order' => $order,
|
||||
|
||||
@ -124,7 +124,8 @@ class StoreCartController
|
||||
['id', 0],//购物车编号
|
||||
['number', 0],//购物车编号
|
||||
]);
|
||||
if (!$where['id'] || !$where['number'] || !is_numeric($where['id']) || !is_numeric($where['number'])) return app('json')->fail(100100);
|
||||
if (!$where['id'] || !is_numeric($where['id'])) return app('json')->fail(100100);
|
||||
if (!$where['number'] || !is_numeric($where['number'])) return app('json')->fail(100007);
|
||||
$res = $this->services->changeUserCartNum($where['id'], $where['number'], $request->uid());
|
||||
if ($res) return app('json')->success(100001);
|
||||
else return app('json')->fail(100007);
|
||||
|
||||
@ -59,6 +59,8 @@ class StoreCombinationDao extends BaseDao
|
||||
$query->name('store_category')->where('pid', $where['cid'])->field('id')->select();
|
||||
})->field('product_id')->select();
|
||||
});
|
||||
})->when(isset($where['id']) && $where['id'], function ($query) use ($where) {
|
||||
$query->where('id', $where['id']);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -53,7 +53,7 @@ class StoreOrderInvoiceDao extends BaseDao
|
||||
return parent::search($where, $search)->when($type, function ($query) use ($type) {
|
||||
switch ($type) {
|
||||
case 1://待开
|
||||
$query->where('is_invoice', 0)->where('invoice_time', 0)->where('is_refund', 0);
|
||||
$query->where('is_invoice', 0)->where('is_refund', 0);
|
||||
break;
|
||||
case 2://已开
|
||||
$query->where('is_invoice', 1);
|
||||
|
||||
@ -145,4 +145,17 @@ class SystemMenusDao extends BaseDao
|
||||
return $this->search(['is_show' => 1, 'auth_type' => 1, 'is_del' => 0, 'is_show_path' => 0])
|
||||
->field('id,pid,menu_name,menu_path,unique_auth,sort')->order('sort DESC')->select();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $path
|
||||
* @param string $method
|
||||
* @return bool
|
||||
* @author 等风来
|
||||
* @email 136327134@qq.com
|
||||
* @date 2023/4/20
|
||||
*/
|
||||
public function deleteMenu(string $path, string $method)
|
||||
{
|
||||
return $this->getModel()->where('api_url', $path)->where('methods', $method)->delete();
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,6 +39,6 @@ class SystemRouteCate extends BaseModel
|
||||
*/
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany(SystemRoute::class, 'cate_id', 'id')->field(['id', 'cate_id', 'name', 'path', 'method'])->order('add_time desc');
|
||||
return $this->hasMany(SystemRoute::class, 'cate_id', 'id')->field(['id', 'type', 'cate_id', 'name', 'name as real_name', 'path', 'method'])->order('add_time desc');
|
||||
}
|
||||
}
|
||||
|
||||
@ -220,7 +220,7 @@ class StoreBargainUserServices extends BaseServices
|
||||
public function userBargainStatusFail($bargain_id, $is_true)
|
||||
{
|
||||
if ($is_true) {
|
||||
$this->dao->delete(['bargain_id' => $bargain_id, 'status' => 1]);
|
||||
$this->dao->delete(['bargain_id' => $bargain_id]);
|
||||
/** @var StoreBargainUserHelpServices $service */
|
||||
$service = app()->make(StoreBargainUserHelpServices::class);
|
||||
$service->delete(['bargain_id' => $bargain_id]);
|
||||
|
||||
@ -184,6 +184,7 @@ class StorePinkServices extends BaseServices
|
||||
$v['s'] = date('s', (int)$v['stop_time']);
|
||||
$pinkAll[] = $v['id'];//开团团长ID
|
||||
$v['stop_time'] = (int)$v['stop_time'];
|
||||
$v['avatar'] = set_file_url($v['avatar']);
|
||||
}
|
||||
return [$list, $pinkAll];
|
||||
}
|
||||
|
||||
@ -120,6 +120,8 @@ class StoreIntegralOrderServices extends BaseServices
|
||||
} else if ($order['status'] == 3) {
|
||||
$order['status_name'] = '已完成';
|
||||
}
|
||||
$order['price'] = (int)$order['price'];
|
||||
$order['total_price'] = (int)$order['total_price'];
|
||||
return $order;
|
||||
}
|
||||
|
||||
@ -139,6 +141,8 @@ class StoreIntegralOrderServices extends BaseServices
|
||||
} else if ($item['status'] == 3) {
|
||||
$item['status_name'] = '已完成';
|
||||
}
|
||||
$item['price'] = (int)$item['price'];
|
||||
$item['total_price'] = (int)$item['total_price'];
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
@ -338,11 +342,12 @@ class StoreIntegralOrderServices extends BaseServices
|
||||
}
|
||||
$data = [];
|
||||
$attrValue = is_object($attrValue) ? $attrValue->toArray() : $attrValue;
|
||||
$attrValue['price'] = (int)$attrValue['price'];
|
||||
/** @var UserBillServices $userBillServices */
|
||||
$userBillServices = app()->make(UserBillServices::class);
|
||||
$data['integral'] = bcsub((string)$user['integral'], (string)$userBillServices->getBillSum(['uid' => $user['uid'], 'is_frozen' => 1]), 0);
|
||||
$data['num'] = $num;
|
||||
$data['total_price'] = bcmul($num, $attrValue['price'], 2);
|
||||
$data['total_price'] = bcmul($num, $attrValue['price']);
|
||||
$data['productInfo'] = $attrValue;
|
||||
return $data;
|
||||
}
|
||||
|
||||
@ -119,7 +119,7 @@ class StoreIntegralServices extends BaseServices
|
||||
if (!$data) {
|
||||
throw new AdminException(400337);
|
||||
}
|
||||
if(!$data['attrs']) throw new AdminException(400337);
|
||||
if (!$data['attrs']) throw new AdminException(400337);
|
||||
$attrs = [];
|
||||
foreach ($data['attrs'] as $k => $v) {
|
||||
$attrs[$v['product_id']][] = $v;
|
||||
@ -283,6 +283,7 @@ class StoreIntegralServices extends BaseServices
|
||||
$siteUrl = sys_config('site_url');
|
||||
$storeInfo['image'] = set_file_url($storeInfo['image'], $siteUrl);
|
||||
$storeInfo['image_base'] = set_file_url($storeInfo['image'], $siteUrl);
|
||||
$storeInfo['product_price'] = (int)$storeInfo['product_price'];
|
||||
$storeInfo['sale_stock'] = 0;
|
||||
if ($storeInfo['stock'] > 0) $storeInfo['sale_stock'] = 1;
|
||||
$uid = $request->uid();
|
||||
@ -296,6 +297,12 @@ class StoreIntegralServices extends BaseServices
|
||||
/** @var StoreProductAttrServices $storeProductAttrServices */
|
||||
$storeProductAttrServices = app()->make(StoreProductAttrServices::class);
|
||||
list($productAttr, $productValue) = $storeProductAttrServices->getProductAttrDetail($id, $uid, 0, 4, $storeInfo['product_id']);
|
||||
foreach ($productValue as &$item) {
|
||||
$item['cost'] = (int)$item['cost'];
|
||||
$item['ot_price'] = (int)$item['ot_price'];
|
||||
$item['price'] = (int)$item['price'];
|
||||
$item['vip_price'] = (int)$item['vip_price'];
|
||||
}
|
||||
$data['productAttr'] = $productAttr;
|
||||
$data['productValue'] = $productValue;
|
||||
/** @var StoreVisitServices $storeVisit */
|
||||
|
||||
@ -469,7 +469,7 @@ class StoreSeckillServices extends BaseServices
|
||||
/** @var StoreProductServices $storeProductService */
|
||||
$storeProductService = app()->make(StoreProductServices::class);
|
||||
$productInfo = $storeProductService->get($storeInfo['product_id']);
|
||||
$storeInfo['total'] = $productInfo['sales'] + $productInfo['ficti'];
|
||||
$storeInfo['total'] = $productInfo['sales'] + $productInfo['ficti'] + $storeInfo['sales'];
|
||||
|
||||
if (sys_config('share_qrcode', 0) && request()->isWechat()) {
|
||||
/** @var QrcodeServices $qrcodeService */
|
||||
|
||||
@ -226,8 +226,8 @@ class StoreOrderComputedServices extends BaseServices
|
||||
// 可用积分
|
||||
$usable = bcsub((string)$userInfo['integral'], (string)$userBillServices->getBillSum(['uid' => $userInfo['uid'], 'is_frozen' => 1]), 0);
|
||||
|
||||
$SurplusIntegral = 0;
|
||||
if ($useIntegral && $userInfo['integral'] > 0) {
|
||||
$SurplusIntegral = $usable;
|
||||
if ($useIntegral && $userInfo['integral'] > 0 && $other['integralRatio'] > 0) {
|
||||
//积分抵扣上限
|
||||
$integralMaxNum = sys_config('integral_max_num', 200);
|
||||
if ($integralMaxNum > 0 && $usable > $integralMaxNum) {
|
||||
|
||||
@ -536,6 +536,7 @@ class SystemCrudServices extends BaseServices
|
||||
$controller = app()->make(Controller::class);
|
||||
$controller->setFilePathName($filePath['controller'] ?? '')->setbasePath($basePath)->handle($tableName, [
|
||||
'usePath' => $service->getUsePath(),
|
||||
'validateName' => '\\' . str_replace('/', '\\', $validate->getUsePath()) . '::class',
|
||||
'field' => array_column($options['fromField'], 'field'),
|
||||
]);
|
||||
//生成路由
|
||||
|
||||
@ -103,7 +103,7 @@ class SystemRouteCateServices extends BaseServices
|
||||
}
|
||||
$options = $this->dao->selectList(['app_name' => $appName], 'name as label,id as value,id,pid')->toArray();
|
||||
$rule = [
|
||||
FormBuilder::cascader('path', '上级分类', $path)->data(get_tree_children($options)),
|
||||
// FormBuilder::cascader('path', '上级分类', $path)->data(get_tree_children($options)),
|
||||
FormBuilder::input('name', '分类名称', $cateInfo['name'] ?? '')->required(),
|
||||
FormBuilder::number('sort', '排序', (int)($cateInfo['sort'] ?? 0)),
|
||||
FormBuilder::hidden('app_name', $appName)
|
||||
|
||||
@ -170,13 +170,13 @@ class SystemRouteServices extends BaseServices
|
||||
* @email 136327134@qq.com
|
||||
* @date 2023/4/11
|
||||
*/
|
||||
public function topCateId(string $app)
|
||||
public function topCateId(string $app, string $name = '全部权限')
|
||||
{
|
||||
$id = app()->make(SystemRouteCateServices::class)->value(['app_name' => $app, 'name' => '全部权限', 'pid' => 0], 'id');
|
||||
$id = app()->make(SystemRouteCateServices::class)->value(['app_name' => $app, 'name' => $name, 'pid' => 0], 'id');
|
||||
if (!$id) {
|
||||
$res = app()->make(SystemRouteCateServices::class)->save([
|
||||
'app_name' => $app,
|
||||
'name' => '全部权限',
|
||||
'name' => $name,
|
||||
'pid' => 0,
|
||||
'add_time' => time(),
|
||||
]);
|
||||
@ -195,21 +195,38 @@ class SystemRouteServices extends BaseServices
|
||||
public function syncRoute(string $app = 'adminapi')
|
||||
{
|
||||
$id = $this->topCateId($app);
|
||||
$commmonId = $this->topCateId($app, '公共权限');
|
||||
$listAll = $this->getRouteListAll($app);
|
||||
|
||||
$list = [];
|
||||
foreach ($listAll as $item) {
|
||||
if (isset($item['option']['is_common']) && $item['option']['is_common']) {
|
||||
$cateId = $commmonId;
|
||||
} else {
|
||||
if (!isset($item['option']['cate_name'])) {
|
||||
$cateId = $id;
|
||||
} else {
|
||||
$cateId = $this->topCateId($app, $item['option']['cate_name']);
|
||||
}
|
||||
}
|
||||
$list[$cateId][] = $item;
|
||||
}
|
||||
//保持新增的权限路由
|
||||
$data = $this->dao->selectList(['app_name' => $app], 'path,method')->toArray();
|
||||
$save = [];
|
||||
foreach ($listAll as $item) {
|
||||
if (!$this->diffRoute($data, $item['rule'], $item['method']) && strstr($item['rule'], '<MISS>') === false) {
|
||||
$save[] = [
|
||||
'name' => $item['option']['real_name'] ?? $item['name'],
|
||||
'path' => $item['rule'],
|
||||
'cate_id' => $id,
|
||||
'app_name' => $app,
|
||||
'type' => isset($item['option']['is_common']) && $item['option']['is_common'] ? 1 : 0,
|
||||
'method' => $item['method'],
|
||||
'add_time' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
foreach ($list as $key => $value) {
|
||||
foreach ($value as $item) {
|
||||
if (!$this->diffRoute($data, $item['rule'], $item['method']) && strstr($item['rule'], '<MISS>') === false) {
|
||||
$save[] = [
|
||||
'name' => $item['option']['real_name'] ?? $item['name'],
|
||||
'path' => $item['rule'],
|
||||
'cate_id' => $key,
|
||||
'app_name' => $app,
|
||||
'type' => isset($item['option']['is_common']) && $item['option']['is_common'] ? 1 : 0,
|
||||
'method' => $item['method'],
|
||||
'add_time' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -219,14 +236,26 @@ class SystemRouteServices extends BaseServices
|
||||
//删除不存在的权限路由
|
||||
$data = $this->dao->selectList(['app_name' => $app], 'path,method,id')->toArray();
|
||||
$delete = [];
|
||||
$deleteData = [];
|
||||
foreach ($data as $item) {
|
||||
if (!$this->diffRoute($listAll, $item['path'], $item['method'], 'rule') && $item['path'] !== '<MISS>') {
|
||||
$delete[] = $item['id'];
|
||||
$deleteData[] = [
|
||||
'path' => $item['path'],
|
||||
'methods' => $item['method']
|
||||
];
|
||||
}
|
||||
}
|
||||
//删除不存在的路由
|
||||
if ($delete) {
|
||||
$this->dao->delete([['id', 'in', $delete]]);
|
||||
}
|
||||
//删除不存在的权限
|
||||
if ($deleteData) {
|
||||
foreach ($deleteData as $item) {
|
||||
app()->make(SystemMenusServices::class)->deleteMenu($item['path'], $item['method']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -53,8 +53,8 @@ class Controller extends Make
|
||||
{
|
||||
$path = $options['path'] ?? '';
|
||||
$contentPhp = '';
|
||||
$var = ["{%date%}"];
|
||||
$fieldPhp = [$this->value['date']];
|
||||
$var = ["{%date%}", '{%validateName%}'];
|
||||
$fieldPhp = [$this->value['date'], $options['validateName'] ?? ''];
|
||||
|
||||
$action = $options['action'] ?? [];
|
||||
$field = $options['field'] ?? [];
|
||||
@ -94,7 +94,7 @@ class Controller extends Make
|
||||
$this->value['name'] = $className;
|
||||
$this->value['path'] = $this->getfolderPath($path);
|
||||
$this->value['content-php'] = $contentPhp;
|
||||
$this->value['use-php'] = "use " . $options['usePath'] . "Services;\n";
|
||||
$this->value['use-php'] = "use " . str_replace('/', '\\', $options['usePath']) . "Services;\n";
|
||||
|
||||
$contentStr = str_replace($this->var, $this->value, $contentController);
|
||||
|
||||
|
||||
@ -236,7 +236,7 @@ abstract class Make
|
||||
$this->value['path'] = $this->getfolderPath($path);
|
||||
}
|
||||
if (isset($this->value['use-php']) && !empty($options['usePath'])) {
|
||||
$this->value['use-php'] = "use " . $options['usePath'] . ";\n";
|
||||
$this->value['use-php'] = "use " . str_replace('/', '\\', $options['usePath']) . ";\n";
|
||||
}
|
||||
|
||||
$contentStr = str_replace($this->var, $this->value, $content);
|
||||
|
||||
@ -75,7 +75,7 @@ class Service extends Make
|
||||
$from[] = $this->tab(2) . $this->getframeImagesPhpContent($item['field'], $item['name'], $item['required'] ?? false) . ';';
|
||||
break;
|
||||
default:
|
||||
$from[] = $this->tab(2) . '$rule[] = FormBuilder::' . $item['type'] . '("' . $item['field'] . '","' . $item['name'] . '",$info["' . $item['field'] . '"] ?? "")' . $this->getOptionContent($item['option'] ?? []) . (!empty($item['required']) ? '->required()' : '') . ';';
|
||||
$from[] = $this->tab(2) . '$rule[] = FormBuilder::' . $item['type'] . '("' . $item['field'] . '","' . $item['name'] . '",$info["' . $item['field'] . '"] ?? "")' . $this->getOptionContent(in_array($item['type'], ['radio']), $item['option'] ?? []) . (!empty($item['required']) ? '->required()' : '') . ';';
|
||||
break;
|
||||
}
|
||||
|
||||
@ -117,9 +117,9 @@ class Service extends Make
|
||||
* @email 136327134@qq.com
|
||||
* @date 2023/3/23
|
||||
*/
|
||||
protected function getOptionContent(array $option = [])
|
||||
protected function getOptionContent(bool $isOption, array $option = [])
|
||||
{
|
||||
if (!$option) {
|
||||
if (!$option && $isOption) {
|
||||
$option = [
|
||||
['value' => 1, 'label' => '开启'],
|
||||
['value' => 0, 'label' => '关闭']
|
||||
|
||||
@ -88,8 +88,9 @@ class ViewPages extends Make
|
||||
}
|
||||
$columnStr[] = ($key == 0 ? $this->tab(2) : '') . "{\n" . $this->tab(3) . "title:\"{$item['name']}\"," . $this->tab(2) . "\n" . $this->tab(3) . "key:\"{$item['field']}\"\n" . $this->tab(2) . "}\n";
|
||||
}
|
||||
$this->value['route'] = $route;
|
||||
$this->value['auth'] = Str::snake($name);
|
||||
$this->value['componentName'] = $this->value['auth'];
|
||||
$this->value['route'] = $route;
|
||||
$this->value['content-vue'] = $columnStr ? "\n" . implode($this->tab(2) . ',', $columnStr) . $this->tab(2) . ',' : '';
|
||||
$this->value['pathApiJs'] = $options['pathApiJs'] ?? '';
|
||||
$this->value['nameStudly'] = Str::studly($name);
|
||||
|
||||
@ -9,6 +9,8 @@
|
||||
{%field-php%}
|
||||
]);
|
||||
|
||||
validate({%validateName%})->check($data);
|
||||
|
||||
$this->service->crudSave($data);
|
||||
|
||||
return app('json')->success(100021);
|
||||
|
||||
@ -14,6 +14,8 @@
|
||||
{%field-php%}
|
||||
]);
|
||||
|
||||
validate({%validateName%})->check($data);
|
||||
|
||||
$this->service->crudUpdate((int)$id, $data);
|
||||
|
||||
return app('json')->success(100001);
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
import { mapState } from 'vuex';
|
||||
import { {%nameCamel%}SaveApi, {%nameCamel%}DeleteApi, {%nameCamel%}UpdateApi, get{%nameStudly%}CreateApi, get{%nameStudly%}EditApi, get{%nameStudly%}ListApi} from '{%pathApiJs%}';
|
||||
export default {
|
||||
name: 'user_group',
|
||||
name: '{%componentName%}',
|
||||
data() {
|
||||
return {
|
||||
grid: {
|
||||
|
||||
@ -180,7 +180,7 @@ class Terminal
|
||||
* @email 136327134@qq.com
|
||||
* @date 2023/4/13
|
||||
*/
|
||||
protected function echoOutputFlag(string $message)
|
||||
public function echoOutputFlag(string $message)
|
||||
{
|
||||
if ($this->output && $this->output instanceof Output) {
|
||||
$this->output->info($message);
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
.card_box_cir1[data-v-f9f647ba] .ivu-icon{font-size:26px;color:#fff}.one[data-v-f9f647ba]{background:#e4ecff}.two[data-v-f9f647ba]{background:#fff3e0}.three[data-v-f9f647ba]{background:#eaf9e1}.four[data-v-f9f647ba]{background:#ffeaf4}.five[data-v-f9f647ba]{background:#f1e4ff}.one1[data-v-f9f647ba]{background:#4d7cfe}.two1[data-v-f9f647ba]{background:#ffab2b}.three1[data-v-f9f647ba]{background:#6dd230}.four1[data-v-f9f647ba]{background:#ff85c0}.five1[data-v-f9f647ba]{background:#b37feb}.card_box[data-v-f9f647ba]{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:25px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.card_box .card_box_cir[data-v-f9f647ba]{width:60px;height:60px;overflow:hidden;margin-right:20px}.card_box .card_box_cir .card_box_cir1[data-v-f9f647ba],.card_box .card_box_cir[data-v-f9f647ba]{border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.card_box .card_box_cir .card_box_cir1[data-v-f9f647ba]{width:48px;height:48px}.card_box .card_box_txt .sp1[data-v-f9f647ba]{display:block;color:#252631;font-size:24px}.card_box .card_box_txt .sp2[data-v-f9f647ba]{display:block;color:#98a9bc;font-size:12px}.cl[data-v-fa712ef4]{margin-right:20px}.code-row-bg[data-v-fa712ef4]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.code-row-bg .ivu-mt[data-v-fa712ef4]{width:100%;margin:0 5px}.ech-box[data-v-fa712ef4]{margin-top:10px}.change-style[data-v-fa712ef4]{border:1px solid #ccc;border-radius:15px;padding:0 10px;cursor:pointer}.table-head[data-v-fa712ef4]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.return[data-v-fa712ef4]{margin-bottom:6px}[data-v-fa712ef4] .ivu-tabs-nav-scroll{background-color:#fff;padding-top:5px}.tabBox_img[data-v-fa712ef4]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-fa712ef4]{width:100%;height:100%}
|
||||
@ -0,0 +1 @@
|
||||
.trees-coadd[data-v-fd00980a]{width:100%;height:500px;border-radius:4px;overflow:hidden}.scollhide[data-v-fd00980a]{width:100%;height:100%;overflow:auto;margin-left:18px;padding:10px 0 10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.content[data-v-fd00980a]{font-size:12px}.time[data-v-fd00980a]{font-size:12px;color:#2d8cf0}.icons-item[data-v-fd00980a]{float:left;margin:6px 6px 6px 0;width:53px;text-align:center;list-style:none;cursor:pointer;height:50px;color:#5c6b77;-webkit-transition:all .2s ease;transition:all .2s ease;position:relative;padding-top:10px}.icons-item .ivu-icon[data-v-fd00980a]{font-size:16px}.search-rule[data-v-fd00980a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px;background-color:#f2f2f2}.rule[data-v-fd00980a]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;max-height:700px;overflow:scroll}.rule[data-v-fd00980a]::-webkit-scrollbar{width:10px;height:10px;background-color:#f5f5f5}.rule[data-v-fd00980a]::-webkit-scrollbar-track{border-radius:4px;background-color:#f5f5f5}.rule[data-v-fd00980a]::-webkit-scrollbar-thumb{border-radius:4px;background-color:#555}.rule-list[data-v-fd00980a]{background-color:#f8f5f5;width:32%;margin:5px;border-radius:3px;padding:10px;color:#333;cursor:pointer;-webkit-transition:all .1s;transition:all .1s}.rule-list[data-v-fd00980a]:hover{background-color:#c5d1dd}.rule-list div[data-v-fd00980a]{white-space:nowrap}.select-rule[data-v-fd00980a]{background-color:#c5d1dd}.add[data-v-fd00980a]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add[data-v-fd00980a],.df[data-v-fd00980a]{display:-webkit-box;display:-ms-flexbox;display:flex}.df[data-v-fd00980a]{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vxeTable[data-v-1f21fc65] .vxe-table--header-wrapper{background:#fff!important}.rule[data-v-1f21fc65]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;max-height:600px;overflow-y:scroll}.rule[data-v-1f21fc65]::-webkit-scrollbar{width:10px;height:10px;background-color:#f5f5f5}.rule[data-v-1f21fc65]::-webkit-scrollbar-track{border-radius:4px;background-color:#f5f5f5}.rule[data-v-1f21fc65]::-webkit-scrollbar-thumb{border-radius:4px;background-color:#ccc}.rule-list[data-v-1f21fc65]{background-color:#f2f2f2;width:32%;margin:5px;border-radius:3px;padding:10px;color:#333;cursor:pointer;-webkit-transition:all .1s;transition:all .1s}.rule-list[data-v-1f21fc65]:hover{background-color:#badbfb}.rule-list div[data-v-1f21fc65]{white-space:nowrap}.select-rule[data-v-1f21fc65]{background-color:#badbfb}
|
||||
@ -0,0 +1 @@
|
||||
.card_box_cir1[data-v-f9f647ba] .ivu-icon{font-size:26px;color:#fff}.one[data-v-f9f647ba]{background:#e4ecff}.two[data-v-f9f647ba]{background:#fff3e0}.three[data-v-f9f647ba]{background:#eaf9e1}.four[data-v-f9f647ba]{background:#ffeaf4}.five[data-v-f9f647ba]{background:#f1e4ff}.one1[data-v-f9f647ba]{background:#4d7cfe}.two1[data-v-f9f647ba]{background:#ffab2b}.three1[data-v-f9f647ba]{background:#6dd230}.four1[data-v-f9f647ba]{background:#ff85c0}.five1[data-v-f9f647ba]{background:#b37feb}.card_box[data-v-f9f647ba]{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:25px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.card_box .card_box_cir[data-v-f9f647ba]{width:60px;height:60px;overflow:hidden;margin-right:20px}.card_box .card_box_cir .card_box_cir1[data-v-f9f647ba],.card_box .card_box_cir[data-v-f9f647ba]{border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.card_box .card_box_cir .card_box_cir1[data-v-f9f647ba]{width:48px;height:48px}.card_box .card_box_txt .sp1[data-v-f9f647ba]{display:block;color:#252631;font-size:24px}.card_box .card_box_txt .sp2[data-v-f9f647ba]{display:block;color:#98a9bc;font-size:12px}.tab_data[data-v-582542c9] .ivu-form-item-content{margin-left:0!important}.table_box[data-v-582542c9] .ivu-divider-horizontal{margin-top:0!important}.table_box[data-v-582542c9] .ivu-form-item{margin-bottom:15px!important}.tabform[data-v-582542c9]{margin-bottom:10px}.Refresh[data-v-582542c9]{font-size:12px;color:#1890ff;cursor:pointer}.v-transfer-dom[data-v-306b6d59] .ivu-modal-content-drag{z-index:2!important}.radio[data-v-306b6d59]{margin-bottom:14px}.radio[data-v-306b6d59] .name{width:125px;text-align:right;padding-right:12px}img[data-v-faec86b6]{height:36px;display:block}.tabBox[data-v-faec86b6]{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:2px}.tabBox .tabBox_img[data-v-faec86b6]{width:36px;height:36px}.tabBox .tabBox_img img[data-v-faec86b6]{width:100%;height:100%}.tabBox .tabBox_tit[data-v-faec86b6]{width:60%;font-size:12px!important;margin:0 10px 0 10px;letter-spacing:1px;padding:5px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.orderData[data-v-faec86b6] .ivu-table-cell{padding-left:0!important}.vertical-center-modal[data-v-faec86b6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.uid[data-v-faec86b6]{color:#2d8cf0}.pink_name[data-v-faec86b6]{color:#666}.img[data-v-faec86b6]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.img img[data-v-faec86b6]{width:30px;height:30px;margin-right:3px}.card_cent[data-v-0ba1d268] .ivu-card-body{width:100%;height:100%}.card_box[data-v-0ba1d268]{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:25px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.card_box .card_box_img[data-v-0ba1d268]{width:48px;height:48px;border-radius:50%;overflow:hidden;margin-right:20px}.card_box .card_box_img img[data-v-0ba1d268]{width:100%;height:100%}.card_box .card_box_txt .sp1[data-v-0ba1d268]{display:block;color:#252631;font-size:24px}.card_box .card_box_txt .sp2[data-v-0ba1d268]{display:block;color:#98a9bc;font-size:12px}.product_tabs[data-v-d3be6f7e] .ivu-page-header-breadcrumb,.product_tabs[data-v-d3be6f7e] .ivu-page-header-content,.product_tabs[data-v-d3be6f7e] .ivu-tabs-bar{margin-bottom:0!important}[data-v-d3be6f7e] .ivu-badge-count-alone{top:-7px;right:2px}.i-layout-page-header[data-v-d3be6f7e] .ivu-badge-count{line-height:14px;height:15px}
|
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
.ivu-description-list-title[data-v-58881868]{margin-bottom:16px;color:#17233d;font-weight:500;font-size:14px}.logistics[data-v-58881868]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 0}.logistics .logistics_img[data-v-58881868]{width:45px;height:45px;margin-right:12px}.logistics .logistics_img img[data-v-58881868]{width:100%;height:100%}.logistics .logistics_cent span[data-v-58881868]{display:block;font-size:12px}.trees-coadd[data-v-58881868]{width:100%;height:400px;border-radius:4px;overflow:hidden}.trees-coadd .scollhide[data-v-58881868]{width:100%;height:100%;overflow:auto;margin-left:18px;padding:10px 0 10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.trees-coadd .scollhide .content[data-v-58881868]{font-size:12px}.trees-coadd .scollhide .time[data-v-58881868]{font-size:12px;color:#2d8cf0}.order_box2[data-v-58881868]{position:absolute;z-index:999999999}.order_box[data-v-58881868] .ivu-modal-header{padding:30x 16px!important}.order_box[data-v-58881868] .ivu-card{font-size:12px!important}.fontColor1[data-v-58881868]{color:red!important}.fontColor2[data-v-58881868]{color:#733af9!important}.order_box[data-v-58881868] .ivu-description-detail,.order_box[data-v-58881868] .ivu-description-term{padding-bottom:10px!important}.order_box[data-v-58881868] .ivu-modal-body{padding:0 16px!important}.fontColor3[data-v-58881868]{color:#f1a417!important}.pic[data-v-58881868]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.img[data-v-58881868]{width:100px;height:100px;margin:10px 10px}.img img[data-v-58881868]{width:100%;height:100%}.ivu-table-wrapper[data-v-55a92d1e]{border-left:1px solid #dcdee2;border-top:1px solid #dcdee2}.order_box[data-v-55a92d1e] .ivu-table th{background:#f8f8f9!important}
|
||||
@ -0,0 +1 @@
|
||||
.expand-row[data-v-1a725052]{margin-bottom:16px}.labelInput[data-v-7f436d82]{border:1px solid #dcdee2;width:400px;padding:0 8px;border-radius:5px;min-height:30px;cursor:pointer}.labelInput .span[data-v-7f436d82]{color:#c5c8ce}.labelInput .iconxiayi[data-v-7f436d82]{font-size:12px}.ivu-form-item[data-v-7f436d82]{margin-bottom:10px}.form-sty[data-v-7f436d82]{width:400px!important}.addfont[data-v-7f436d82]{display:inline-block;font-size:13px;font-weight:400;color:#1890ff;margin-left:14px;cursor:pointer;margin-left:10px}.ivu-icon-ios-arrow-down[data-v-7f436d82]{font-size:14px}.tip[data-v-7f436d82]{color:#bbb}.sp[data-v-290dedde]{line-height:32px}.picBox[data-v-5577d074]{display:inline-block;cursor:pointer}.picBox .upLoad[data-v-5577d074]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02)}.picBox .pictrue[data-v-5577d074]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:10px}.picBox .pictrue img[data-v-5577d074]{width:100%;height:100%}.userFrom[data-v-5577d074] .ivu-form-item-content{margin-left:0!important}.userAlert[data-v-5577d074]{margin-top:20px}.userI[data-v-5577d074]{color:#1890ff;font-style:normal}img[data-v-5577d074]{height:36px;display:block}.tabBox_img[data-v-5577d074]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-5577d074]{width:100%;height:100%}.tabBox_tit[data-v-5577d074]{width:60%;font-size:12px!important;margin:0 2px 0 10px;letter-spacing:1px;padding:5px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.modelBox[data-v-5577d074] .ivu-modal-body{padding:0 16px 16px 16px!important}.vipName[data-v-5577d074]{color:#dab176}.listbox[data-v-5577d074] .ivu-divider-horizontal{margin:0!important}.labelInput[data-v-5577d074]{border:1px solid #dcdee2;padding:0 6px;border-radius:5px;min-height:30px;cursor:pointer}.labelInput .span[data-v-5577d074]{color:#c5c8ce}.labelInput .ivu-icon-ios-arrow-down[data-v-5577d074]{font-size:14px;color:#808695}.demo-drawer-footer[data-v-5577d074]{width:100%;position:absolute;bottom:0;left:0;border-top:1px solid #e8e8e8;padding:10px 16px;text-align:right;background:#fff}
|
||||
@ -0,0 +1 @@
|
||||
[data-v-40417597] .diy-fullscreen{overflow:hidden}[data-v-40417597] .diy-fullscreen .ivu-modal{top:0;left:0;right:0;bottom:0;height:100%;width:100%!important}[data-v-40417597] .diy-fullscreen .ivu-modal .ivu-modal-content,[data-v-40417597] .diy-fullscreen .ivu-modal .ivu-modal-content .ivu-modal-body{height:100%}[data-v-40417597] .diy-fullscreen .ivu-modal .ivu-tabs .ivu-tabs-content-animated{height:92%;background-color:#2f2f2f!important}[data-v-40417597] .diy-fullscreen .ivu-modal .ivu-tabs-content{height:100%}[data-v-40417597] .diy-fullscreen .ivu-modal .ivu-tabs .ivu-tabs-tabpane{height:92%}.diy-header[data-v-40417597]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.diy-header .diy-header-icon[data-v-40417597]{margin-right:30px;cursor:pointer}.diy-header .diy-header-icon[data-v-40417597]:hover{opacity:.8}[data-v-40417597] .ivu-modal{top:70px}.ivu-modal-content .ivu-modal-body[data-v-40417597]{min-height:632px;height:80vh;overflow:hidden}.ivu-tabs .ivu-tabs-content-animated[data-v-40417597],.ivu-tabs .ivu-tabs-tabpane[data-v-40417597]{min-height:560px;height:73vh;margin-top:-1px}.ivu-tabs-nav .ivu-tabs-tab .ivu-icon[data-v-40417597]{color:red}[data-v-40417597] body .ivu-select-dropdown .ivu-dropdown-transfer{background:red!important}.file-left[data-v-40417597] .ivu-select-dropdown.ivu-dropdown-transfer .ivu-dropdown-menu .ivu-dropdown-item:hover{background-color:#e5e5e5!important}[data-v-40417597] .ivu-tabs.ivu-tabs-card>.ivu-tabs-bar .ivu-tabs-nav-container{background-color:#fff}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
.tableBox[data-v-3b385f76] .ivu-table-header table{border:none!important}
|
||||
@ -0,0 +1 @@
|
||||
.content_font[data-v-5fbe6be5]{color:#2b85e4}.search[data-v-5fbe6be5] .ivu-form-item-content{margin-left:0!important}.ivu-mt .Button .bnt[data-v-5fbe6be5]{margin-right:6px}.ivu-mt .ivu-table-row[data-v-5fbe6be5]{font-size:12px;color:rgba(0,0,0,.65)}.ivu-mt[data-v-5fbe6be5] .ivu-table-cell{padding:10px 0!important}.pictrue[data-v-5fbe6be5]{width:36px;height:36px;display:inline-block;cursor:pointer}.pictrue img[data-v-5fbe6be5]{width:100%;height:100%;display:block;-o-object-fit:cover;object-fit:cover}.ivu-mt .imgPic .info[data-v-5fbe6be5]{width:60%;margin-left:10px}.ivu-mt .picList .pictrue[data-v-5fbe6be5]{height:36px;margin:7px 3px 0 3px}.ivu-mt .picList .pictrue img[data-v-5fbe6be5]{height:100%;display:block}
|
||||
@ -0,0 +1 @@
|
||||
.form-width[data-v-4cd76107],.form-width[data-v-eae4886e]{width:500px}.item[data-v-eae4886e]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.item .row[data-v-eae4886e]{width:140px;margin-right:10px}.ivu-steps .ivu-steps-title[data-v-47064b81]{line-height:26px}.btn[data-v-47064b81]{position:fixed;bottom:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:85%}.tab-1[data-v-47064b81]{padding-bottom:100px}[data-v-47064b81] .el-input__inner{padding-left:7px}[data-v-47064b81] .ivu-form-item{margin-bottom:15px}[data-v-47064b81] .tip{color:#bbb;line-height:16px;padding-top:5px}
|
||||
1
crmeb/public/admin/system_static/js/app.31344de0.js
Normal file
1
crmeb/public/admin/system_static/js/app.31344de0.js
Normal file
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
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
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
@ -2,11 +2,11 @@
|
||||
<div>
|
||||
<Card :bordered="false" dis-hover class="ivu-mt">
|
||||
<Form
|
||||
ref="roleData"
|
||||
:model="roleData"
|
||||
:label-width="labelWidth"
|
||||
:label-position="labelPosition"
|
||||
@submit.native.prevent
|
||||
ref="roleData"
|
||||
:model="roleData"
|
||||
:label-width="labelWidth"
|
||||
:label-position="labelPosition"
|
||||
@submit.native.prevent
|
||||
>
|
||||
<Row type="flex" :gutter="24">
|
||||
<Col v-bind="grid">
|
||||
@ -19,29 +19,30 @@
|
||||
</Col>
|
||||
<Col v-bind="grid">
|
||||
<FormItem label="按钮名称:" prop="status2" label-for="status2">
|
||||
<Input v-model="roleData.keyword" search enter-button placeholder="请输入按钮名称" @on-search="getData" />
|
||||
<Input v-model="roleData.keyword" search enter-button placeholder="请输入按钮名称" @on-search="getData"/>
|
||||
</FormItem>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row type="flex">
|
||||
<Col v-bind="grid">
|
||||
<Button v-auth="['setting-system_menus-add']" type="primary" @click="menusAdd('添加规则')" icon="md-add"
|
||||
>添加规则</Button
|
||||
>添加规则
|
||||
</Button
|
||||
>
|
||||
</Col>
|
||||
</Row>
|
||||
</Form>
|
||||
<vxe-table
|
||||
:border="false"
|
||||
class="vxeTable mt25"
|
||||
highlight-hover-row
|
||||
highlight-current-row
|
||||
:loading="loading"
|
||||
ref="xTable"
|
||||
header-row-class-name="false"
|
||||
:tree-config="tabconfig"
|
||||
:data="tableData"
|
||||
row-id="id"
|
||||
:border="false"
|
||||
class="vxeTable mt25"
|
||||
highlight-hover-row
|
||||
highlight-current-row
|
||||
:loading="loading"
|
||||
ref="xTable"
|
||||
header-row-class-name="false"
|
||||
:tree-config="tabconfig"
|
||||
:data="tableData"
|
||||
row-id="id"
|
||||
>
|
||||
<vxe-table-column field="id" title="ID" tooltip min-width="70"></vxe-table-column>
|
||||
<vxe-table-column field="menu_name" tree-node title="按钮名称" min-width="200"></vxe-table-column>
|
||||
@ -55,12 +56,12 @@
|
||||
<vxe-table-column field="flag" title="规则状态" min-width="120">
|
||||
<template v-slot="{ row }">
|
||||
<i-switch
|
||||
v-model="row.is_show"
|
||||
:value="row.is_show"
|
||||
:true-value="1"
|
||||
:false-value="0"
|
||||
@on-change="onchangeIsShow(row)"
|
||||
size="large"
|
||||
v-model="row.is_show"
|
||||
:value="row.is_show"
|
||||
:true-value="1"
|
||||
:false-value="0"
|
||||
@on-change="onchangeIsShow(row)"
|
||||
size="large"
|
||||
>
|
||||
<span slot="open">显示</span>
|
||||
<span slot="close">隐藏</span>
|
||||
@ -71,63 +72,62 @@
|
||||
<template v-slot="{ row, index }">
|
||||
<span v-auth="['setting-system_menus-add']">
|
||||
<a @click="addRoute(row)" v-if="row.auth_type === 1">添加权限</a>
|
||||
<Divider type="vertical" v-if="row.auth_type === 1" />
|
||||
<Divider type="vertical" v-if="row.auth_type === 1"/>
|
||||
<a @click="addE(row, '添加子菜单')" v-if="row.auth_type === 1">添加子菜单</a>
|
||||
<!-- <a @click="addE(row, '添加规则')" v-else>添加规则</a> -->
|
||||
</span>
|
||||
<Divider type="vertical" v-if="row.auth_type === 1" />
|
||||
<Divider type="vertical" v-if="row.auth_type === 1"/>
|
||||
<a @click="edit(row, '编辑')">编辑</a>
|
||||
<Divider type="vertical" />
|
||||
<Divider type="vertical"/>
|
||||
<a @click="del(row, '删除规则')">删除</a>
|
||||
</template>
|
||||
</vxe-table-column>
|
||||
</vxe-table>
|
||||
</Card>
|
||||
<menus-from
|
||||
:formValidate="formValidate"
|
||||
:titleFrom="titleFrom"
|
||||
@getList="getList"
|
||||
@changeMenu="getMenusUnique"
|
||||
ref="menusFrom"
|
||||
@clearFrom="clearFrom"
|
||||
:formValidate="formValidate"
|
||||
:titleFrom="titleFrom"
|
||||
@getList="getList"
|
||||
@changeMenu="getMenusUnique"
|
||||
ref="menusFrom"
|
||||
@clearFrom="clearFrom"
|
||||
></menus-from>
|
||||
<Modal
|
||||
v-model="ruleModal"
|
||||
scrollable
|
||||
width="1100"
|
||||
title="权限列表"
|
||||
@on-ok="addRouters"
|
||||
@on-cancel="ruleModal = false"
|
||||
@on-visible-change="modalchange"
|
||||
v-model="ruleModal"
|
||||
scrollable
|
||||
width="1100"
|
||||
title="权限列表"
|
||||
@on-ok="addRouters"
|
||||
@on-cancel="ruleModal = false"
|
||||
@on-visible-change="modalchange"
|
||||
>
|
||||
<div class="search-rule">
|
||||
<Alert>基础接口,可多选,并且添加后不会再展示出现;删除权限后才会出现;公共接口,可多选,并且添加后会继续展示;</Alert>
|
||||
<Input
|
||||
class="mr10"
|
||||
v-model="searchRule"
|
||||
placeholder="输入关键词搜索"
|
||||
clearable
|
||||
style="width: 300px"
|
||||
ref="search"
|
||||
@on-enter="searchRules"
|
||||
@on-clear="searchRules"
|
||||
class="mr10"
|
||||
v-model="searchRule"
|
||||
placeholder="输入关键词搜索"
|
||||
clearable
|
||||
style="width: 300px"
|
||||
ref="search"
|
||||
@on-enter="searchRules"
|
||||
@on-clear="searchRules"
|
||||
/>
|
||||
<Button class="mr10" type="primary" @click="searchRules">搜索</Button>
|
||||
<Button @click="init">重置</Button>
|
||||
</div>
|
||||
|
||||
<Tabs v-model="routeType" @on-click="changTab">
|
||||
<TabPane label="公共接口" name="1"></TabPane>
|
||||
<TabPane label="基础接口" name="0"></TabPane>
|
||||
<TabPane :label="item.name" :name="''+index" v-for="(item,index) in foundationList"></TabPane>
|
||||
</Tabs>
|
||||
<div class="rule">
|
||||
<div
|
||||
class="rule-list"
|
||||
v-show="!arrs.length || arrs.includes(item.id)"
|
||||
:class="{ 'select-rule': seletRouteIds.includes(item.id) }"
|
||||
v-for="(item, index) in routeType == 1 ? foundationList : openList"
|
||||
:key="index"
|
||||
@click="selectRule(item)"
|
||||
class="rule-list"
|
||||
v-show="!arrs.length || arrs.includes(item.id)"
|
||||
:class="{ 'select-rule': seletRouteIds.includes(item.id) }"
|
||||
v-for="(item, index) in children"
|
||||
:key="index"
|
||||
@click="selectRule(item)"
|
||||
>
|
||||
<div>接口名称:{{ item.real_name }}</div>
|
||||
<div>请求方式:{{ item.method }}</div>
|
||||
@ -139,7 +139,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from 'vuex';
|
||||
import {mapState} from 'vuex';
|
||||
import {
|
||||
getTable,
|
||||
menusDetailsApi,
|
||||
@ -151,13 +151,14 @@ import {
|
||||
} from '@/api/systemMenus';
|
||||
import formCreate from '@form-create/iview';
|
||||
import menusFrom from './components/menusFrom';
|
||||
import { formatFlatteningRoutes } from '@/libs/system';
|
||||
import {formatFlatteningRoutes} from '@/libs/system';
|
||||
|
||||
export default {
|
||||
name: 'systemMenus',
|
||||
data() {
|
||||
return {
|
||||
tabconfig: { children: 'children', reserve: true, accordion: true },
|
||||
children: [],
|
||||
tabconfig: {children: 'children', reserve: true, accordion: true},
|
||||
spinShow: false,
|
||||
ruleModal: false,
|
||||
searchRule: '',
|
||||
@ -179,7 +180,7 @@ export default {
|
||||
formValidate: {},
|
||||
titleFrom: '',
|
||||
modalTitleSs: '',
|
||||
routeType: '1',
|
||||
routeType: '0',
|
||||
arrs: [],
|
||||
foundationList: [], // 基础接口列表
|
||||
openList: [], // 公开接口列表
|
||||
@ -188,7 +189,7 @@ export default {
|
||||
menusId: 0, // 选中分类id
|
||||
};
|
||||
},
|
||||
components: { menusFrom, formCreate: formCreate.$form() },
|
||||
components: {menusFrom, formCreate: formCreate.$form()},
|
||||
computed: {
|
||||
...mapState('admin/layout', ['isMobile']),
|
||||
labelWidth() {
|
||||
@ -213,13 +214,13 @@ export default {
|
||||
menus: this.seletRoute,
|
||||
};
|
||||
menusBatch(data)
|
||||
.then((res) => {
|
||||
console.log(res);
|
||||
this.getData();
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
.then((res) => {
|
||||
console.log(res);
|
||||
this.getData();
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
},
|
||||
selectRule(data) {
|
||||
if (this.seletRouteIds.includes(data.id)) {
|
||||
@ -238,14 +239,16 @@ export default {
|
||||
}
|
||||
},
|
||||
changTab(name) {
|
||||
console.log(name);
|
||||
this.routeType = name;
|
||||
let index = parseInt(name)
|
||||
this.children = this.foundationList[index] ? this.foundationList[index].children : []
|
||||
this.searchRules();
|
||||
},
|
||||
// 搜索规则
|
||||
searchRules() {
|
||||
if (this.searchRule.trim()) {
|
||||
this.arrs = [];
|
||||
let arr = this.routeType == 1 ? this.foundationList : this.openList;
|
||||
let arr = this.foundationList;
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
if (arr[i].real_name.indexOf(this.searchRule) !== -1) {
|
||||
this.arrs.push(arr[i].id);
|
||||
@ -257,23 +260,19 @@ export default {
|
||||
},
|
||||
addRoute(row) {
|
||||
this.menusId = row.id;
|
||||
this.routeType = '0';
|
||||
this.getRuleList();
|
||||
},
|
||||
modalchange() {},
|
||||
modalchange() {
|
||||
},
|
||||
// 获取权限列表
|
||||
getRuleList() {
|
||||
getRuleList().then((res) => {
|
||||
this.foundationList = [];
|
||||
this.foundationList = res.data;
|
||||
this.children = this.foundationList[0] ? this.foundationList[0].children : []
|
||||
this.openList = [];
|
||||
this.seletRouteIds = [];
|
||||
this.seletRoute = [];
|
||||
res.data.map((e) => {
|
||||
if (e.type) {
|
||||
this.foundationList.push(e);
|
||||
} else {
|
||||
this.openList.push(e);
|
||||
}
|
||||
});
|
||||
this.ruleModal = true;
|
||||
});
|
||||
},
|
||||
@ -284,13 +283,13 @@ export default {
|
||||
is_show: row.is_show,
|
||||
};
|
||||
isShowApi(data)
|
||||
.then(async (res) => {
|
||||
this.$Message.success(res.msg);
|
||||
this.$store.dispatch('menus/getMenusNavList');
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
.then(async (res) => {
|
||||
this.$Message.success(res.msg);
|
||||
this.$store.dispatch('menus/getMenusNavList');
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
},
|
||||
// 请求列表
|
||||
getList() {
|
||||
@ -308,20 +307,20 @@ export default {
|
||||
let pid = row.id.toString();
|
||||
if (pid) {
|
||||
menusDetailsApi(row.id)
|
||||
.then(async (res) => {
|
||||
this.formValidate.path = res.data.path;
|
||||
this.formValidate.path.push(row.id);
|
||||
this.formValidate.pid = pid;
|
||||
this.$refs.menusFrom.modals = true;
|
||||
this.$refs.menusFrom.valids = false;
|
||||
this.titleFrom = title;
|
||||
this.formValidate.auth_type = 1;
|
||||
this.formValidate.is_show = 0;
|
||||
this.formValidate.is_show_path = 0;
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
.then(async (res) => {
|
||||
this.formValidate.path = res.data.path;
|
||||
this.formValidate.path.push(row.id);
|
||||
this.formValidate.pid = pid;
|
||||
this.$refs.menusFrom.modals = true;
|
||||
this.$refs.menusFrom.valids = false;
|
||||
this.titleFrom = title;
|
||||
this.formValidate.auth_type = 1;
|
||||
this.formValidate.is_show = 0;
|
||||
this.formValidate.is_show_path = 0;
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
} else {
|
||||
this.formValidate.pid = pid;
|
||||
this.$refs.menusFrom.modals = true;
|
||||
@ -348,25 +347,25 @@ export default {
|
||||
};
|
||||
|
||||
this.$modalSure(delfromData)
|
||||
.then((res) => {
|
||||
this.$Message.success(res.msg);
|
||||
this.getData();
|
||||
this.$store.dispatch('menus/getMenusNavList');
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
.then((res) => {
|
||||
this.$Message.success(res.msg);
|
||||
this.getData();
|
||||
this.$store.dispatch('menus/getMenusNavList');
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
},
|
||||
// 规则详情
|
||||
menusDetails(id) {
|
||||
menusDetailsApi(id)
|
||||
.then(async (res) => {
|
||||
this.formValidate = res.data;
|
||||
this.$refs.menusFrom.modals = true;
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
.then(async (res) => {
|
||||
this.formValidate = res.data;
|
||||
this.$refs.menusFrom.modals = true;
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
},
|
||||
// 编辑
|
||||
edit(row, title, index) {
|
||||
@ -404,14 +403,14 @@ export default {
|
||||
this.loading = true;
|
||||
this.roleData.is_show = this.roleData.is_show || '';
|
||||
getTable(this.roleData)
|
||||
.then(async (res) => {
|
||||
this.tableData = res.data;
|
||||
this.loading = false;
|
||||
})
|
||||
.catch((res) => {
|
||||
this.loading = false;
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
.then(async (res) => {
|
||||
this.tableData = res.data;
|
||||
this.loading = false;
|
||||
})
|
||||
.catch((res) => {
|
||||
this.loading = false;
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
},
|
||||
getMenusUnique() {
|
||||
getMenusUnique().then((res) => {
|
||||
@ -429,7 +428,7 @@ export default {
|
||||
const cacheList = [];
|
||||
arr.forEach((v) => {
|
||||
if (v && v.meta && v.meta.keepAlive) {
|
||||
newArr.push({ ...v });
|
||||
newArr.push({...v});
|
||||
cacheList.push(v.name);
|
||||
this.$store.dispatch('keepAliveNames/setCacheKeepAlive', cacheList);
|
||||
}
|
||||
@ -446,10 +445,11 @@ export default {
|
||||
|
||||
<style scoped lang="scss">
|
||||
.vxeTable {
|
||||
>>> .vxe-table--header-wrapper {
|
||||
> > > .vxe-table--header-wrapper {
|
||||
background: #fff !important;
|
||||
}
|
||||
}
|
||||
|
||||
.rule {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
<view class="text acea-row row-column-around">
|
||||
<view class="line1" style="width: 100%;">{{ item.store_name }}</view>
|
||||
<view class="line1 gray-sty">{{item.suk}}</view>
|
||||
<view class="line1 gray-sty">{{$t(`积分`)}}:{{item.total_price}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bottom acea-row row-between-wrapper">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user