Merge branch 'v5.0.0dev' of https://gitee.com/ZhongBangKeJi/CRMEB into v5.0.0dev

This commit is contained in:
From-wh 2023-04-20 15:17:50 +08:00
commit 0feb7ebc1d
76 changed files with 298 additions and 190 deletions

View File

@ -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']));
}
/**

View File

@ -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;
}
}

View File

@ -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' => '分销']);

View File

@ -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' => '应用']);

View File

@ -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' => '文章']);

View File

@ -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' => '公共']);

View File

@ -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']);

View File

@ -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']);

View File

@ -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' => '导出']);

View File

@ -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' => '附件']);

View File

@ -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' => '财务']);

View File

@ -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' => '物流']);

View File

@ -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' => '直播']);

View File

@ -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' => '营销']);

View File

@ -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' => '物流']);

View File

@ -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' => '消息']);

View File

@ -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' => '退款']);

View File

@ -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' => '商品']);

View File

@ -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' => '一号通']);

View File

@ -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' => '设置']);

View File

@ -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' => '统计']);

View File

@ -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' => '文件']);

View File

@ -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' => '用户']);

View File

@ -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;//好友是否启用

View File

@ -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,

View File

@ -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);

View File

@ -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']);
});
}

View File

@ -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);

View File

@ -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();
}
}

View File

@ -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');
}
}

View File

@ -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]);

View File

@ -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];
}

View File

@ -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;
}

View File

@ -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 */

View File

@ -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 */

View File

@ -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) {

View File

@ -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'),
]);
//生成路由

View File

@ -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)

View File

@ -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']);
}
}
}
/**

View File

@ -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);

View File

@ -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);

View File

@ -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' => '关闭']

View File

@ -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);

View File

@ -9,6 +9,8 @@
{%field-php%}
]);
validate({%validateName%})->check($data);
$this->service->crudSave($data);
return app('json')->success(100021);

View File

@ -14,6 +14,8 @@
{%field-php%}
]);
validate({%validateName%})->check($data);
$this->service->crudUpdate((int)$id, $data);
return app('json')->success(100001);

View File

@ -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: {

View File

@ -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

View File

@ -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%}

View File

@ -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}

View File

@ -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

View File

@ -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}

View File

@ -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}

View File

@ -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

View File

@ -0,0 +1 @@
.tableBox[data-v-3b385f76] .ivu-table-header table{border:none!important}

View File

@ -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}

View File

@ -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}

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

View File

@ -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;

View File

@ -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">