From a3629141d3ac1fc12f5eda82eca0eac963df55f0 Mon Sep 17 00:00:00 2001 From: zhuyu Date: Sun, 6 Apr 2025 13:41:02 +0800 Subject: [PATCH] feature: task --- application/admin/controller/oa/Doc.php | 159 ++++++++++++++++++ application/admin/view/oa/doc/add.html | 7 + application/admin/view/oa/doc/edit.html | 7 + .../admin/view/oa/schedule/custom_index.html | 9 - public/assets/js/backend/oa/schedule.js | 4 +- 5 files changed, 175 insertions(+), 11 deletions(-) diff --git a/application/admin/controller/oa/Doc.php b/application/admin/controller/oa/Doc.php index b14dac8..fd08188 100644 --- a/application/admin/controller/oa/Doc.php +++ b/application/admin/controller/oa/Doc.php @@ -2,7 +2,12 @@ namespace app\admin\controller\oa; +use app\admin\model\AuthGroup; use app\common\controller\Backend; +use fast\Tree; +use think\Db; +use think\exception\PDOException; +use think\exception\ValidateException; /** * 资料 @@ -22,7 +27,36 @@ class Doc extends Backend { parent::_initialize(); $this->model = new \app\admin\model\oa\Doc; + + + $this->childrenAdminIds = $this->auth->getChildrenAdminIds($this->auth->isSuperAdmin()); + $this->childrenGroupIds = $this->auth->getChildrenGroupIds($this->auth->isSuperAdmin()); + + $groupList = collection(AuthGroup::where('id', 'in', $this->childrenGroupIds)->select())->toArray(); + + Tree::instance()->init($groupList); + $groupdata = []; + if ($this->auth->isSuperAdmin()) { + $result = Tree::instance()->getTreeList(Tree::instance()->getTreeArray(0)); + foreach ($result as $k => $v) { + $groupdata[$v['id']] = $v['name']; + } + } else { + $result = []; + $groups = $this->auth->getGroups(); + foreach ($groups as $m => $n) { + $childlist = Tree::instance()->getTreeList(Tree::instance()->getTreeArray($n['id'])); + $temp = []; + foreach ($childlist as $k => $v) { + $temp[$v['id']] = $v['name']; + } + $result[__($n['name'])] = $temp; + } + $groupdata = $result; + } + $this->view->assign("typeList", $this->model->getTypeList()); + $this->view->assign('groupdata', $groupdata); } @@ -34,4 +68,129 @@ class Doc extends Backend */ + + + public function index() + { + //设置过滤方法 + $this->request->filter(['strip_tags', 'trim']); + if (false === $this->request->isAjax()) { + return $this->view->fetch(); + } + //如果发送的来源是 Selectpage,则转发到 Selectpage + if ($this->request->request('keyField')) { + return $this->selectpage(); + } + [$where, $sort, $order, $offset, $limit] = $this->buildparams(); + + $this->childrenAdminIds = $this->auth->getChildrenAdminIds($this->auth->isSuperAdmin()); + $list = $this->model + ->where($where) + ->whereRaw('JSON_OVERLAPS(group_ids, ?)', [json_encode($this->childrenAdminIds)]) + ->order($sort, $order) + ->paginate($limit); + $result = ['total' => $list->total(), 'rows' => $list->items()]; + return json($result); + } + + + /** + * 添加 + * + * @return string + * @throws \think\Exception + */ + public function add() + { + if (false === $this->request->isPost()) { + return $this->view->fetch(); + } + $params = $this->request->post('row/a'); + if (empty($params)) { + $this->error(__('Parameter %s can not be empty', '')); + } + $params = $this->preExcludeFields($params); + + if ($this->dataLimit && $this->dataLimitFieldAutoFill) { + $params[$this->dataLimitField] = $this->auth->id; + } + $result = false; + Db::startTrans(); + try { + //是否采用模型验证 + if ($this->modelValidate) { + $name = str_replace("\\model\\", "\\validate\\", get_class($this->model)); + $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate; + $this->model->validateFailException()->validate($validate); + } + + $group = $this->request->post("group/a"); + $group = array_map(function ($item) { + return intval($item); + }, $group); + $params['group_ids'] = json_encode($group); + + $result = $this->model->allowField(true)->save($params); + Db::commit(); + } catch (ValidateException|PDOException|Exception $e) { + Db::rollback(); + $this->error($e->getMessage()); + } + if ($result === false) { + $this->error(__('No rows were inserted')); + } + $this->success(); + } + + public function edit($ids = null) + { + $row = $this->model->get($ids); + if (!$row) { + $this->error(__('No Results were found')); + } + $adminIds = $this->getDataLimitAdminIds(); + if (is_array($adminIds) && !in_array($row[$this->dataLimitField], $adminIds)) { + $this->error(__('You have no permission')); + } + if (false === $this->request->isPost()) { + + $this->view->assign("groupids", json_decode($row['group_ids'])); + $this->view->assign('row', $row); + return $this->view->fetch(); + } + $params = $this->request->post('row/a'); + if (empty($params)) { + $this->error(__('Parameter %s can not be empty', '')); + } + $params = $this->preExcludeFields($params); + $result = false; + Db::startTrans(); + try { + //是否采用模型验证 + if ($this->modelValidate) { + $name = str_replace("\\model\\", "\\validate\\", get_class($this->model)); + $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate; + $row->validateFailException()->validate($validate); + } + + + $group = $this->request->post("group/a"); + $group = array_map(function ($item) { + return intval($item); + }, $group); + $params['group_ids'] = json_encode($group); + + $result = $row->allowField(true)->save($params); + Db::commit(); + } catch (ValidateException|PDOException|Exception $e) { + Db::rollback(); + $this->error($e->getMessage()); + } + if (false === $result) { + $this->error(__('No rows were updated')); + } + $this->success(); + } + + } diff --git a/application/admin/view/oa/doc/add.html b/application/admin/view/oa/doc/add.html index 4402289..d412acf 100644 --- a/application/admin/view/oa/doc/add.html +++ b/application/admin/view/oa/doc/add.html @@ -1,5 +1,12 @@
+
+ +
+ {:build_select('group[]', $groupdata, null, ['class'=>'form-control selectpicker', 'multiple'=>'', 'data-rule'=>'required'])} +
+
+
diff --git a/application/admin/view/oa/doc/edit.html b/application/admin/view/oa/doc/edit.html index 09a9cbc..b7c0ce2 100644 --- a/application/admin/view/oa/doc/edit.html +++ b/application/admin/view/oa/doc/edit.html @@ -1,5 +1,12 @@ + +
+ +
+ {:build_select('group[]', $groupdata, $groupids, ['class'=>'form-control selectpicker', 'multiple'=>'', 'data-rule'=>'required'])} +
+
diff --git a/application/admin/view/oa/schedule/custom_index.html b/application/admin/view/oa/schedule/custom_index.html index 991f097..45b5ec5 100644 --- a/application/admin/view/oa/schedule/custom_index.html +++ b/application/admin/view/oa/schedule/custom_index.html @@ -36,15 +36,6 @@
-
-
- - -
- -
-
-
diff --git a/public/assets/js/backend/oa/schedule.js b/public/assets/js/backend/oa/schedule.js index c4dc9df..86a4a76 100644 --- a/public/assets/js/backend/oa/schedule.js +++ b/public/assets/js/backend/oa/schedule.js @@ -57,7 +57,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin var defaultColumnArr = []; defaultColumnArr.push({ - "title":"username", + "title":"用户名", "field":"name", }); @@ -94,7 +94,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin let changeColumn = []; if (selectedValue == 2) { changeColumn = [{ - "title":"username", + "title":"用户名", "field":"name", }];