修改添加分类为多级

This commit is contained in:
liaofei 2023-04-10 11:47:51 +08:00
parent c133f4c898
commit f701fc87ac
2 changed files with 18 additions and 20 deletions

View File

@ -73,7 +73,7 @@ class SystemRouteCate extends AuthController
public function save(Request $request)
{
$data = $request->postMore([
['pid', 0],
['path', []],
['name', ''],
['sort', 0],
['app_name', ''],
@ -84,11 +84,9 @@ class SystemRouteCate extends AuthController
}
$data['add_time'] = time();
$res = $this->services->save($data);
$path = $this->services->getPathValue($data['pid']);
$path = $this->services->setPathValue($path, $res->id);
$res->path = $path;
$res->save();
$data['pid'] = $data['path'][count($data['path']) - 1] ?? 0;
$this->services->save($data);
return app('json')->success('保存成功');
@ -117,7 +115,7 @@ class SystemRouteCate extends AuthController
public function update(Request $request, $id)
{
$data = $request->postMore([
['pid', 0],
['path', []],
['name', ''],
['sort', 0],
['app_name', ''],
@ -127,12 +125,7 @@ class SystemRouteCate extends AuthController
return app('json')->fail('缺少分类名称');
}
$pid = $this->services->value($id, 'pid');
if ($data['pid'] != $pid) {
$path = $this->services->getPathValue($data['pid']);
$data['path'] = $this->services->setPathValue($path, $id);
}
$data['pid'] = $data['path'][count($data['path']) - 1] ?? 0;
$this->services->update($id, $data);
return app('json')->success('修改成功');

View File

@ -37,12 +37,8 @@ class SystemRouteCateServices extends BaseServices
$this->dao = $dao;
}
public function getPathValue(int $pid)
public function getPathValue(array $path)
{
if (!$pid) {
return [];
}
$path = $this->dao->value($pid, 'path');
$pathAttr = explode('/', $path);
$pathData = [];
foreach ($pathAttr as $item) {
@ -91,14 +87,23 @@ class SystemRouteCateServices extends BaseServices
{
$url = '/system/route_cate';
$cateInfo = [];
$path = [];
if ($id) {
$cateInfo = $this->dao->get($id);
$cateInfo = $cateInfo ? $cateInfo->toArray() : [];
$url .= '/' . $id;
$path = explode('/', $cateInfo['path']);
$newPath = [];
foreach ($path as $item) {
if ($item) {
$newPath[] = $item;
}
}
$path = $newPath;
}
$options = $this->dao->selectList(['app_name' => $appName], 'name as label,id as value')->toArray();
$options = $this->dao->selectList(['app_name' => $appName], 'name as label,id as value,id,pid')->toArray();
$rule = [
FormBuilder::select('pid', '上级分类', (int)($cateInfo['pid'] ?? 0))->options($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)