From 11fd07693fba079d23120b64b11b0c17773ad278 Mon Sep 17 00:00:00 2001 From: qinzexin <“731344816@qq.com”> Date: Tue, 27 May 2025 18:33:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=92=8C=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/score/Employee.php | 31 +- application/admin/controller/score/Log.php | 217 +- application/admin/controller/score/Team.php | 167 + application/admin/controller/user/User.php | 183 + .../admin/lang/zh-cn/score/employee.php | 1 + application/admin/lang/zh-cn/score/event.php | 4 +- application/admin/lang/zh-cn/score/log.php | 9 + application/admin/lang/zh-cn/score/team.php | 2 + application/admin/model/score/Log.php | 22 +- application/admin/model/score/Team.php | 35 +- .../admin/view/score/employee/add.html | 39 +- .../admin/view/score/employee/edit.html | 40 +- application/admin/view/score/log/add.html | 97 +- application/admin/view/score/log/edit.html | 37 +- application/admin/view/score/log/index.html | 27 +- application/admin/view/score/team/add.html | 28 + application/admin/view/score/team/edit.html | 28 + .../admin/view/user/user/changeuser.html | 34 + application/admin/view/user/user/index.html | 2 + application/api/controller/Score.php | 177 + application/api/controller/User.php | 12 +- application/common/library/Auth.php | 71 + application/common/model/User.php | 63 + application/common/model/score/Employee.php | 83 + application/common/model/score/Event.php | 187 + application/common/model/score/Log.php | 505 ++ application/common/model/score/Team.php | 72 + application/config.php | 9 + public/api.html | 5648 +++++++++++++++++ public/assets/js/backend/score/employee.js | 78 +- public/assets/js/backend/score/event.js | 21 + public/assets/js/backend/score/log.js | 126 +- public/assets/js/backend/score/team.js | 81 +- .../619995a18849fce5f33889f88976df62.jpg | Bin 0 -> 47093 bytes .../fa63d5222a158cc34803afa4ddbc6a40.jpg | Bin 0 -> 77232 bytes 35 files changed, 8064 insertions(+), 72 deletions(-) create mode 100644 application/admin/view/user/user/changeuser.html create mode 100644 application/api/controller/Score.php create mode 100644 application/common/model/score/Employee.php create mode 100644 application/common/model/score/Event.php create mode 100644 application/common/model/score/Log.php create mode 100644 application/common/model/score/Team.php create mode 100644 public/api.html create mode 100644 public/uploads/20250527/619995a18849fce5f33889f88976df62.jpg create mode 100644 public/uploads/20250527/fa63d5222a158cc34803afa4ddbc6a40.jpg diff --git a/application/admin/controller/score/Employee.php b/application/admin/controller/score/Employee.php index a5209e3..740dd57 100644 --- a/application/admin/controller/score/Employee.php +++ b/application/admin/controller/score/Employee.php @@ -17,11 +17,14 @@ class Employee extends Backend * @var \app\admin\model\score\Employee */ protected $model = null; + protected $qSwitch = true; + protected $qFields = ["team_id","user_id"]; public function _initialize() { - parent::_initialize(); + $this->model = new \app\admin\model\score\Employee; + parent::_initialize(); $this->view->assign("statusList", $this->model->getStatusList()); } @@ -48,8 +51,16 @@ class Employee extends Backend if ($this->request->request('keyField')) { return $this->selectpage(); } - list($where, $sort, $order, $offset, $limit) = $this->buildparams(); + list($where, $sort, $order, $offset, $limit, $page, $alias, $bind,$excludearray) = $this->buildparams(null,null,['opertime']); + //得到查询时间 + $opertime = $excludearray['opertime'] ?? []; + $start_time = $end_time =null; + if($opertime){ + //得到查询值 + $value = $opertime['value']; + list($start_time,$end_time) = explode(" - ",$value); + } $list = $this->model ->with(['user','team']) ->where($where) @@ -62,9 +73,23 @@ class Employee extends Backend $row->getRelation('team')->visible(['name']); } - $result = array("total" => $list->total(), "rows" => $list->items()); + $total = $list->total(); + $list = $list->items(); + + foreach ($list as &$row) { + $row['score_count'] = 0; + $row['opertime'] = ''; + if($start_time){ + $row['opertime'] = $start_time.'至'.$end_time; + } + $row['score_count'] = \app\common\model\score\Employee::getPriceByCoachAndTime($row['id'],$start_time,$end_time); + + } + + $result = array("total" => $total, "rows" => $list); return json($result); + } return $this->view->fetch(); } diff --git a/application/admin/controller/score/Log.php b/application/admin/controller/score/Log.php index b4009ba..bfd9e7a 100644 --- a/application/admin/controller/score/Log.php +++ b/application/admin/controller/score/Log.php @@ -3,6 +3,12 @@ namespace app\admin\controller\score; use app\common\controller\Backend; +use think\Db; +use think\db\exception\DataNotFoundException; +use think\db\exception\ModelNotFoundException; +use think\exception\DbException; +use think\exception\PDOException; +use think\exception\ValidateException; /** * 积分记录管理 @@ -18,11 +24,15 @@ class Log extends Backend */ protected $model = null; + protected $qSwitch = true; + protected $qFields = ["team_id","user_id"]; + public function _initialize() { - parent::_initialize(); $this->model = new \app\admin\model\score\Log; + parent::_initialize(); + $this->view->assign("statusList", $this->model->getStatusList()); } @@ -71,4 +81,209 @@ class Log extends Backend return $this->view->fetch(); } + + + /** + * 添加 + * + * @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; + } + try { + $result = (new \app\common\model\score\Log)->add($params ,false, true); + }catch (\Exception $e){ + $this->error($e->getMessage()); + } + + if ($result === false) { + $this->error(__('No rows were inserted')); + } + $this->success(); + } + + + + + + /** + * 编辑 + * + * @param $ids + * @return string + * @throws DbException + * @throws \think\Exception + */ + 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('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); + } + //如果审核失败,需要填写原因 + if ($params["status"] == 2) { + if (!$params['reason']) { + $this->error('审核失败,请填写原因'); + } + } + if($row["status"] != $params["status"]){ + $params['authtime'] = time(); + } + + + $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(); + } + + + + + /** + * 审核成功 + * + * @param $ids + * @return void + * @throws DbException + * @throws DataNotFoundException + * @throws ModelNotFoundException + */ + public function auth_yes($ids = null) + { + if (false === $this->request->isPost()) { + $this->error(__("Invalid parameters")); + } + $ids = $ids ?: $this->request->post("ids"); + if (empty($ids)) { + $this->error(__('Parameter %s can not be empty', 'ids')); + } + $pk = $this->model->getPk(); + $adminIds = $this->getDataLimitAdminIds(); + if (is_array($adminIds)) { + $this->model->where($this->dataLimitField, 'in', $adminIds); + } + $list = $this->model->where($pk, 'in', $ids)->select(); + + $count = 0; + Db::startTrans(); + try { + foreach ($list as $item) { +// $count += $item->delete(); + if($item["status"]!= 1){ + $item["status"] = 1; + $item["authtime"] = time(); + $item["reason"] = ""; + $item->save(); + $count++; + } + + + } + Db::commit(); + } catch (PDOException|Exception $e) { + Db::rollback(); + $this->error($e->getMessage()); + } + if ($count) { + $this->success("操作成功{$count}条记录"); + } + $this->error(__('操作成功0条记录')); + } + + + + /** + * 审核失败 + * + * @param $ids + * @return void + * @throws DbException + * @throws DataNotFoundException + * @throws ModelNotFoundException + */ + public function auth_no($ids = null) + { + if (false === $this->request->isPost()) { + $this->error(__("Invalid parameters")); + } + $ids = $ids ?: $this->request->post("ids"); + if (empty($ids)) { + $this->error(__('Parameter %s can not be empty', 'ids')); + } + $pk = $this->model->getPk(); + $adminIds = $this->getDataLimitAdminIds(); + if (is_array($adminIds)) { + $this->model->where($this->dataLimitField, 'in', $adminIds); + } + $list = $this->model->where($pk, 'in', $ids)->select(); + + $count = 0; + Db::startTrans(); + try { + foreach ($list as $item) { +// $count += $item->delete(); + if($item["status"]!= 2){ + $item["status"] = 2; + $item["authtime"] = time(); + $item["reason"] = "批量操作拒绝"; + $item->save(); + $count++; + } + + + + } + Db::commit(); + } catch (PDOException|Exception $e) { + Db::rollback(); + $this->error($e->getMessage()); + } + if ($count) { + $this->success("操作成功{$count}条记录"); + } + $this->error(__('操作成功0条记录')); + } + + } diff --git a/application/admin/controller/score/Team.php b/application/admin/controller/score/Team.php index a2c7341..4f2a04d 100644 --- a/application/admin/controller/score/Team.php +++ b/application/admin/controller/score/Team.php @@ -3,6 +3,12 @@ namespace app\admin\controller\score; use app\common\controller\Backend; +use think\Db; +use think\exception\DbException; +use think\exception\PDOException; +use think\exception\ValidateException; +use app\common\model\score\Employee; +use think\response\Json; /** * 队伍管理 @@ -34,4 +40,165 @@ class Team extends Backend */ + /** + * 查看 + * + * @return string|Json + * @throws \think\Exception + * @throws DbException + */ + 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(); + } + list($where, $sort, $order, $offset, $limit, $page, $alias, $bind,$excludearray) = $this->buildparams(null,null,['opertime']); + //得到查询时间 + $opertime = $excludearray['opertime'] ?? []; + $start_time = $end_time =null; + if($opertime){ + //得到查询值 + $value = $opertime['value']; + list($start_time,$end_time) = explode(" - ",$value); + + } + + + + $list = $this->model + ->where($where) + ->order($sort, $order) + ->paginate($limit); + + + $total = $list->total(); + $list = $list->items(); + + foreach ($list as &$row) { + $row['score_count'] = 0; + $row['opertime'] = ''; + if($start_time){ + $row['opertime'] = $start_time.'至'.$end_time; + } + $row['score_count'] = \app\common\model\score\Team::getPriceByCoachAndTime($row['id'],$start_time,$end_time); + + } + $result = array("total" => $total, "rows" => $list); + 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); + } + $score_employee_ids = $params["score_employee_ids"] ?? []; + + $result = $this->model->allowField(true)->save($params); + //建立新的关联 + Employee::where( "id","in",$score_employee_ids)->update(["team_id"=>$this->model->id]); + + + Db::commit(); + } catch (ValidateException|PDOException|Exception $e) { + Db::rollback(); + $this->error($e->getMessage()); + } + if ($result === false) { + $this->error(__('No rows were inserted')); + } + $this->success(); + } + + /** + * 编辑 + * + * @param $ids + * @return string + * @throws DbException + * @throws \think\Exception + */ + 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('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); + } + + + $score_employee_ids = $params["score_employee_ids"] ?? []; + $result = $row->allowField(true)->save($params); + + + //清除旧的关联 + Employee::where( "team_id",$row->id)->update(["team_id"=>0]); + //建立新的关联 + Employee::where( "id","in",$score_employee_ids)->update(["team_id"=>$row->id]); + + 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/controller/user/User.php b/application/admin/controller/user/User.php index 6908ad6..a42ee46 100644 --- a/application/admin/controller/user/User.php +++ b/application/admin/controller/user/User.php @@ -4,6 +4,8 @@ namespace app\admin\controller\user; use app\common\controller\Backend; use app\common\library\Auth; +use fast\Tree; +use think\Model; /** * 会员管理 @@ -102,4 +104,185 @@ class User extends Backend $this->success(); } + + + /** + * Selectpage的实现方法 + * + * 当前方法只是一个比较通用的搜索匹配,请按需重载此方法来编写自己的搜索逻辑,$where按自己的需求写即可 + * 这里示例了所有的参数,所以比较复杂,实现上自己实现只需简单的几行即可 + * + */ + protected function selectpage() + { + //设置过滤方法 + $this->request->filter(['trim', 'strip_tags', 'htmlspecialchars']); + + //搜索关键词,客户端输入以空格分开,这里接收为数组 + $word = (array)$this->request->request("q_word/a"); + //当前页 + $page = $this->request->request("pageNumber"); + //分页大小 + $pagesize = $this->request->request("pageSize"); + //搜索条件 + $andor = $this->request->request("andOr", "and", "strtoupper"); + //排序方式 + $orderby = (array)$this->request->request("orderBy/a"); + //显示的字段 + $field = $this->request->request("showField"); + //主键 + $primarykey = $this->request->request("keyField"); + //主键值 + $primaryvalue = $this->request->request("keyValue"); + //搜索字段 +// $searchfield = (array)$this->request->request("searchField/a"); + $searchfield = [ + 'id','realname','nickname','mobile' + ]; + + //自定义搜索条件 + $custom = (array)$this->request->request("custom/a"); + //是否返回树形结构 + $istree = $this->request->request("isTree", 0); + $ishtml = $this->request->request("isHtml", 0); + if ($istree) { + $word = []; + $pagesize = 999999; + } + $order = []; + foreach ($orderby as $k => $v) { + $order[$v[0]] = $v[1]; + } + $field = $field ? $field : 'name'; + + //如果有primaryvalue,说明当前是初始化传值 + if ($primaryvalue !== null) { + $where = [$primarykey => ['in', $primaryvalue]]; + $pagesize = 999999; + } else { + $where = function ($query) use ($word, $andor, $field, $searchfield, $custom) { + $logic = $andor == 'AND' ? '&' : '|'; + $searchfield = is_array($searchfield) ? implode($logic, $searchfield) : $searchfield; + $searchfield = str_replace(',', $logic, $searchfield); + $word = array_filter(array_unique($word)); + if (count($word) == 1) { + $query->where($searchfield, "like", "%" . reset($word) . "%"); + } else { + $query->where(function ($query) use ($word, $searchfield) { + foreach ($word as $index => $item) { + $query->whereOr(function ($query) use ($item, $searchfield) { + $query->where($searchfield, "like", "%{$item}%"); + }); + } + }); + } + if ($custom && is_array($custom)) { + foreach ($custom as $k => $v) { + if (is_array($v) && 2 == count($v)) { + $query->where($k, trim($v[0]), $v[1]); + } else { + $query->where($k, '=', $v); + } + } + } + }; + } + $adminIds = $this->getDataLimitAdminIds(); + if (is_array($adminIds)) { + $this->model->where($this->dataLimitField, 'in', $adminIds); + } + $list = []; + $total = $this->model->where($where)->count(); + if ($total > 0) { + if (is_array($adminIds)) { + $this->model->where($this->dataLimitField, 'in', $adminIds); + } + + $fields = is_array($this->selectpageFields) ? $this->selectpageFields : ($this->selectpageFields && $this->selectpageFields != '*' ? explode(',', $this->selectpageFields) : []); + + //如果有primaryvalue,说明当前是初始化传值,按照选择顺序排序 + if ($primaryvalue !== null && preg_match("/^[a-z0-9_\-]+$/i", $primarykey)) { + $primaryvalue = array_unique(is_array($primaryvalue) ? $primaryvalue : explode(',', $primaryvalue)); + //修复自定义data-primary-key为字符串内容时,给排序字段添加上引号 + $primaryvalue = array_map(function ($value) { + return '\'' . $value . '\''; + }, $primaryvalue); + + $primaryvalue = implode(',', $primaryvalue); + + $this->model->orderRaw("FIELD(`{$primarykey}`, {$primaryvalue})"); + } else { + $this->model->order($order); + } + + $datalist = $this->model->where($where) + ->page($page, $pagesize) + ->select(); + + foreach ($datalist as $index => $item) { + unset($item['password'], $item['salt']); + if ($this->selectpageFields == '*') { + $result = [ + $primarykey => $item[$primarykey] ?? '', + $field => $item[$field] ?? '', + 'nickname' => isset($item['nickname']) ? $item['nickname'] : '', + 'mobile' => isset($item['mobile']) ? $item['mobile'] : '', + 'realname' => isset($item['realname']) ? $item['realname'] : '', + ]; + } else { + $result = array_intersect_key(($item instanceof Model ? $item->toArray() : (array)$item), array_flip($fields)); + } + $result['pid'] = isset($item['pid']) ? $item['pid'] : (isset($item['parent_id']) ? $item['parent_id'] : 0); + $list[] = $result; + } + if ($istree && !$primaryvalue) { + $tree = Tree::instance(); + $tree->init(collection($list)->toArray(), 'pid'); + $list = $tree->getTreeList($tree->getTreeArray(0), $field); + if (!$ishtml) { + foreach ($list as &$item) { + $item = str_replace(' ', ' ', $item); + } + unset($item); + } + } + } + //这里一定要返回有list这个字段,total是可选的,如果total<=list的数量,则会隐藏分页按钮 + return json(['list' => $list, 'total' => $total]); + } + + + + /**变更学员信息(教练专属) + * @return string + * @throws \think\Exception + * @throws \think\exception\DbException + */ + public function changeuser(){ + if($this->request->isPost()) + { + try{ + $people_name = $this->request->param('people_name/s'); + $people_mobile = $this->request->param('people_mobile/s'); + $password = $this->request->param('password/s'); + if (!$password) throw new \Exception("请设置登录密码!"); + + $user = \app\common\model\User::where("mobile",$people_mobile)->find(); + //检测更新教练下单学员账号创建状态 2022/8/27 new + if(!$user)$user = (new \app\common\model\User)->addUserByMobile($people_mobile,$people_name,$password); + $user['nickname'] = $people_name; + $user->save(); + + }catch (\Exception $e){ + $this->error($e->getMessage()); + } + //退押金 + $this->success("已成功创建{$people_name}"); + } +// $row = $this->model->get($param['ids']); +// $this->view->assign('vo', $row); + return $this->view->fetch(); + } + + } diff --git a/application/admin/lang/zh-cn/score/employee.php b/application/admin/lang/zh-cn/score/employee.php index 98a37d2..ffd62cc 100644 --- a/application/admin/lang/zh-cn/score/employee.php +++ b/application/admin/lang/zh-cn/score/employee.php @@ -3,6 +3,7 @@ return [ 'User_id' => '前端登錄用戶', 'Name' => '姓名', + 'Image' => '员工头像', 'Team_id' => '队伍id', 'Status' => '状态', 'Status entry' => '入职', diff --git a/application/admin/lang/zh-cn/score/event.php b/application/admin/lang/zh-cn/score/event.php index 82408cc..5d7a3d3 100644 --- a/application/admin/lang/zh-cn/score/event.php +++ b/application/admin/lang/zh-cn/score/event.php @@ -27,8 +27,8 @@ return [ 'Frequency day' => '天', 'Frequency week' => '周', 'Frequency once' => '次', - 'Max_times' => '最高次数(0为不限制)', - 'Monthly_highest_score' => '月度最高分(0为不限制)', + 'Max_times' => '当前频率最高次数(0为不限制)', + 'Monthly_highest_score' => '当前频率最高分(0为不限制)', 'Way' => '得分方式(多选)', 'Way free' => '自由申请', 'Way direct' => '直接奖励', diff --git a/application/admin/lang/zh-cn/score/log.php b/application/admin/lang/zh-cn/score/log.php index ce95d80..269dcef 100644 --- a/application/admin/lang/zh-cn/score/log.php +++ b/application/admin/lang/zh-cn/score/log.php @@ -9,6 +9,15 @@ return [ 'Score' => '分值', 'Images' => '多图', 'Desc' => '备注', + 'Status' => '审核状态', + 'Status 0' => '待审核', + 'Set status to 0' => '设为待审核', + 'Status 1' => '审核通过', + 'Set status to 1' => '设为审核通过', + 'Status 2' => '审核不通过', + 'Set status to 2' => '设为审核不通过', + 'Reason' => '审核不通过原因', + 'Authtime' => '审核时间', 'Createtime' => '创建时间', 'Updatetime' => '更新时间', 'Deletetime' => '删除时间', diff --git a/application/admin/lang/zh-cn/score/team.php b/application/admin/lang/zh-cn/score/team.php index 1bc4700..5c1f9d7 100644 --- a/application/admin/lang/zh-cn/score/team.php +++ b/application/admin/lang/zh-cn/score/team.php @@ -2,6 +2,8 @@ return [ 'Name' => '队伍名', + 'Image' => '队伍头像', + 'Score_employee_ids' => '队伍成员', 'Createtime' => '创建时间', 'Updatetime' => '更新时间' ]; diff --git a/application/admin/model/score/Log.php b/application/admin/model/score/Log.php index f2c239e..59d9271 100644 --- a/application/admin/model/score/Log.php +++ b/application/admin/model/score/Log.php @@ -25,16 +25,36 @@ class Log extends Model // 追加属性 protected $append = [ - + 'status_text', + 'authtime_text' ]; + public function getStatusList() + { + return ['0' => __('Status 0'), '1' => __('Status 1'), '2' => __('Status 2')]; + } + public function getStatusTextAttr($value, $data) + { + $value = $value ?: ($data['status'] ?? ''); + $list = $this->getStatusList(); + return $list[$value] ?? ''; + } + public function getAuthtimeTextAttr($value, $data) + { + $value = $value ?: ($data['authtime'] ?? ''); + return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; + } + protected function setAuthtimeAttr($value) + { + return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value); + } public function scoreevent() diff --git a/application/admin/model/score/Team.php b/application/admin/model/score/Team.php index efd4e34..c57786c 100644 --- a/application/admin/model/score/Team.php +++ b/application/admin/model/score/Team.php @@ -25,9 +25,40 @@ class Team extends Model // 追加属性 protected $append = [ - + "score_employee_ids", + "people_num", + "people_names" ]; - + + + public function getPeopleNumAttr($value, $data) + { + $value = $value ?: ($data['id'] ?? ''); + if(!$value) return 0; + $score_employee_ids = Employee::where( "team_id", $value)->count(); + return $score_employee_ids; + } + + + public function getPeopleNamesAttr($value, $data) + { + $value = $value ?: ($data['id'] ?? ''); + if(!$value) return ""; + $score_employee_ids = Employee::where( "team_id", $value)->column( "name"); + return implode(",", $score_employee_ids); + } + + + + public function getScoreEmployeeIdsAttr($value, $data) + { + $value = $value ?: ($data['id'] ?? ''); + if(!$value) return ""; + $score_employee_ids = Employee::where( "team_id", $value)->column( "id"); + return implode(",", $score_employee_ids); + } + + diff --git a/application/admin/view/score/employee/add.html b/application/admin/view/score/employee/add.html index 495cb94..3579a9d 100644 --- a/application/admin/view/score/employee/add.html +++ b/application/admin/view/score/employee/add.html @@ -3,21 +3,46 @@
- -
-
-
- -
- + + + + (没找到用户则点击按钮创建用户后重新下拉框选用户) + 根据手机号生成用户 + +
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ + +
+ +
+ +
+
+
diff --git a/application/admin/view/score/employee/edit.html b/application/admin/view/score/employee/edit.html index ace30ae..ccd7505 100644 --- a/application/admin/view/score/employee/edit.html +++ b/application/admin/view/score/employee/edit.html @@ -3,21 +3,47 @@
- -
-
-
- -
- + + + + (没找到用户则点击按钮创建用户后重新下拉框选用户) + 根据手机号生成用户 + + +
+
+ + +
+ +
+ +
+
+ +
+ +
+
+ +
+ + +
+ +
+
    +
    +
    +
    diff --git a/application/admin/view/score/log/add.html b/application/admin/view/score/log/add.html index 0efe9b7..bcdfcda 100644 --- a/application/admin/view/score/log/add.html +++ b/application/admin/view/score/log/add.html @@ -3,39 +3,62 @@
    - + + + + (没找到积分规则则点击按钮创建积分规则后重新下拉框选积分规则) + 添加新积分规则 + + + +
    + + + + (没找到员工则点击按钮创建员工后重新下拉框选员工) + 添加新员工 + + +
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    @@ -56,6 +79,30 @@
    +
    + +
    + +
    + {foreach name="statusList" item="vo"} + + {/foreach} +
    + +
    +
    +
    + +
    + +
    +
    + + + + + + +
    + +
    + +
    + {foreach name="statusList" item="vo"} + + {/foreach} +
    + +
    +
    +
    + +
    + +
    +
    + + + + + + +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 用户上传文件
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    filefile文件流
    categorystring分类标识:category1=非机密类1,category2=非机密类2,cert=证件机密类,code=二维码类,user=用户普通上传
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 验证码
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    idstring要生成验证码的标识
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    示例接口

    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 测试描述信息
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    tokenstring请求的Token
    +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    idinteger会员ID
    namestring用户名
    dataobject扩展数据
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    Headers
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型描述
    codeinteger
    msgstring
    dataobject扩展数据返回
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    {
    +         'code':'1',
    +         'msg':'返回成功'
    +        }
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 无需登录的接口
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + 无 +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + 无 +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 需要登录的接口
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + 无 +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + 无 +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 需要登录且需要验证有相应组的权限
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + 无 +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + 无 +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    邮箱验证码接口

    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 发送验证码
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    emailstring邮箱
    eventstring事件名称
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 检测验证码
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    emailstring邮箱
    eventstring事件名称
    captchastring验证码
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    首页接口

    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 首页
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + 无 +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + 无 +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    积分接口

    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 积分项列表
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    keywordsstring搜索关键字
    pagestring页数
    limitstring条数
    waystringfree=自由申请,direct=直接奖励 默认自由申请
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    {
    +     *
    +     *}
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 我的积分申请列表
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    keywordsstring搜索关键字
    pagestring页数
    limitstring条数
    statusstring审核状态:0=待审核,1=审核通过,2=审核不通过 可多值逗号拼接
    timestring复合时间查询:today今天,week本周,month本月,year本年,yesterday昨天,last year上一年,last week上周,last month上個月,lately7最近7天 , lately30最近30天,按开始时间区间查传值格式:Y/m/d H:M:S-Y/m/d H:M:S
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    {
    +     *
    +     *}
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 月度积分排行榜及个人月度当前积分累计
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    timestring要查询的月份的时间戳
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    {
    +     *
    +     *}
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 积分申请
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    score_event_idstring积分事件id
    imagesstring多图逗号拼接,附件只要相对路径,不要全路径
    descstring备注
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    {
    +     *
    +     *}
    +
    +
    +
    + +
    +
    +
    +
    +

    手机短信接口

    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 发送验证码
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    mobilestring手机号
    eventstring事件名称
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 检测验证码
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    mobilestring手机号
    eventstring事件名称
    captchastring验证码
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Token接口

    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 检测Token是否过期
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + 无 +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + 无 +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 刷新Token
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + 无 +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + 无 +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    会员接口

    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 会员中心
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + 无 +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + 无 +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 会员登录
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    accountstring账号
    passwordstring密码
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 手机验证码登录
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    mobilestring手机号
    captchastring验证码
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 注册会员
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    usernamestring用户名
    passwordstring密码
    emailstring邮箱
    mobilestring手机号
    codestring验证码
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 退出登录
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + 无 +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + 无 +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 修改会员个人信息
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    avatarstring头像地址
    usernamestring用户名
    nicknamestring昵称
    biostring个人简介
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 修改邮箱
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    emailstring邮箱
    captchastring验证码
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 修改手机号
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    mobilestring手机号
    captchastring验证码
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 第三方登录
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    platformstring平台名称
    codestringCode码
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 重置密码
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    mobilestring手机号
    newpasswordstring新密码
    captchastring验证码
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    验证接口

    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 检测邮箱
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    emailstring邮箱
    idstring排除会员ID
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 检测用户名
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    usernamestring用户名
    idstring排除会员ID
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 检测昵称
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    nicknamestring昵称
    idstring排除会员ID
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 检测手机
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    mobilestring手机号
    idstring排除会员ID
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 检测手机
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    mobilestring手机号
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 检测邮箱
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    emailstring邮箱
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 检测手机验证码
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    mobilestring手机号
    captchastring验证码
    eventstring事件
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + + +
    + +
    +
    + 检测邮箱验证码
    +
    +
    权限
    +
    + + + + + + + + + + + +
    登录
    鉴权
    +
    +
    +
    +
    Headers
    +
    + 无 +
    +
    +
    +
    参数
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    名称类型必选描述
    emailstring邮箱
    captchastring验证码
    eventstring事件
    +
    +
    +
    +
    正文
    +
    + 无
    +
    +
    + +
    +
    +
    +
    +
    参数 +
    + 追加 +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    响应输出
    +
    +
    +
    +
    
    +                                                            
    
    +                                                        
    +
    +
    +
    +
    +
    返回参数
    +
    + 无 +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    + + + +
    + + + + + + + + + + + diff --git a/public/assets/js/backend/score/employee.js b/public/assets/js/backend/score/employee.js index 86b1611..47f6f0f 100644 --- a/public/assets/js/backend/score/employee.js +++ b/public/assets/js/backend/score/employee.js @@ -22,21 +22,59 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', sortName: 'id', + fixedColumns: true, + fixedRightNumber: 1, columns: [ [ {checkbox: true}, {field: 'id', title: __('Id')}, - {field: 'user_id', title: __('User_id')}, + {field: 'user_id', title: __('User_id'),visible: false}, + {field: 'image', title: __('Image'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image}, + + {field: 'team.name', title: __('Team.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, {field: 'name', title: __('Name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, - {field: 'team_id', title: __('Team_id')}, + {field: 'opertime', title: __('统计时间查询'), operate:'RANGE', addclass:'datetimerange', autocomplete:false,formatter:function (value, row, index) { + return row.opertime ? row.opertime : '未查询'; + }}, + {field: 'score_count', title: __('积分统计(根据具体统计时间筛选)'),formatter:function (value, row, index) { + // if( !row.opertime){ + // return "#请在点开【搜索栏】后选择【统计时间查询】提交查询#"; + // } + return ` + ${row.score_count} + `; + },searchable:false}, + + {field: 'user.nickname', title: __('User.nickname'),visible: false, operate: 'LIKE'}, + {field: 'user.mobile', title: __('User.mobile'), operate: 'LIKE'}, + {field: 'user.avatar', title: __('User.avatar'),visible: false, operate: 'LIKE', events: Table.api.events.image, formatter: Table.api.formatter.image}, + + + {field: 'team_id', title: __('Team_id'),visible: false}, {field: 'status', title: __('Status'), searchList: {"entry":__('Status entry'),"exit":__('Status exit')}, formatter: Table.api.formatter.status}, {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, - {field: 'user.nickname', title: __('User.nickname'), operate: 'LIKE'}, - {field: 'user.mobile', title: __('User.mobile'), operate: 'LIKE'}, - {field: 'user.avatar', title: __('User.avatar'), operate: 'LIKE', events: Table.api.events.image, formatter: Table.api.formatter.image}, - {field: 'team.name', title: __('Team.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, - {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + + // {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + {field: 'operate', title: __('Operate'), table: table , buttons: [ + { + name: 'select', + text: __('积分记录'), + title: __('查看积分记录'), + classname: 'btn btn-xs btn-primary btn-dialog', + icon: 'fa fa-list', + url: log_url, + callback: function (data) { + + }, + // visible: function (row) { + // if(row.status == '1' || row.status == '2' ) return true; + // return false; + // } + }, + + ], events: Table.api.events.operate, formatter: Table.api.formatter.operate}, + ] ] }); @@ -52,9 +90,35 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin }, api: { bindevent: function () { + + $(document).on('click', '.btn-changeuser', function (event) { + var url = $(this).attr('data-url'); + if(!url) return false; + var title = $(this).attr('title'); + var width = $(this).attr('data-width'); + var height = $(this).attr('data-height'); + // var ids = $(this).attr('data-id'); + var area = [$(window).width() > 800 ? (width?width:'800px') : '95%', $(window).height() > 600 ? (height?height:'600px') : '95%']; + var options = { + shadeClose: false, + shade: [0.3, '#393D49'], + area: area, + callback:function(ret){//回调方法,需要在本页面Controller中增加方法监听且调用Fast.api.close(ret)传递结果; + Fast.api.close(ret); + } + }; + Fast.api.open(url,title,options); + }); Form.api.bindevent($("form[role=form]")); } } }; + + + var log_url = function (row,dom) { + return 'score/log/index?score_employee_id='+row.id; + } + + return Controller; }); diff --git a/public/assets/js/backend/score/event.js b/public/assets/js/backend/score/event.js index f1e1c11..2aa2f32 100644 --- a/public/assets/js/backend/score/event.js +++ b/public/assets/js/backend/score/event.js @@ -118,6 +118,27 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin }, api: { bindevent: function () { + + $(document).on('click', '.btn-changeuser', function (event) { + var url = $(this).attr('data-url'); + if(!url) return false; + var title = $(this).attr('title'); + var width = $(this).attr('data-width'); + var height = $(this).attr('data-height'); + // var ids = $(this).attr('data-id'); + var area = [$(window).width() > 800 ? (width?width:'800px') : '95%', $(window).height() > 600 ? (height?height:'600px') : '95%']; + var options = { + shadeClose: false, + shade: [0.3, '#393D49'], + area: area, + callback:function(ret){//回调方法,需要在本页面Controller中增加方法监听且调用Fast.api.close(ret)传递结果; + Fast.api.close(ret); + } + }; + Fast.api.open(url,title,options); + }); + + Form.api.bindevent($("form[role=form]")); } } diff --git a/public/assets/js/backend/score/log.js b/public/assets/js/backend/score/log.js index 87c8504..56ca810 100644 --- a/public/assets/js/backend/score/log.js +++ b/public/assets/js/backend/score/log.js @@ -11,6 +11,10 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin del_url: 'score/log/del', multi_url: 'score/log/multi', import_url: 'score/log/import', + + auth_yes_url: 'score/log/auth_yes', + auth_no_url: 'score/log/auth_no', + table: 'score_log', } }); @@ -28,22 +32,30 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin [ {checkbox: true}, {field: 'id', title: __('Id')}, - {field: 'score_event_id', title: __('Score_event_id')}, - {field: 'score_employee_id', title: __('Score_employee_id')}, - {field: 'user_id', title: __('User_id')}, - {field: 'score_team_id', title: __('Score_team_id')}, + {field: 'score_event_id', title: __('Score_event_id'),visible: false}, + {field: 'score_employee_id', title: __('Score_employee_id'),visible: false}, + {field: 'user_id', title: __('User_id'),visible: false}, + {field: 'score_team_id', title: __('Score_team_id'),visible: false}, {field: 'name', title: __('Name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, - {field: 'score', title: __('Score')}, + {field: 'score', title: __('Score'), operate: false}, {field: 'images', title: __('Images'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images}, {field: 'desc', title: __('Desc'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, - {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, - {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, - {field: 'scoreevent.name', title: __('Event.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, + {field: 'status', title: __('Status'), searchList: {"0":__('Status 0'),"1":__('Status 1'),"2":__('Status 2')}, formatter: Table.api.formatter.status}, + {field: 'reason', title: __('Reason'), operate: 'LIKE'}, {field: 'employee.name', title: __('Employee.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, + {field: 'team.name', title: __('Team.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, + + {field: 'user.nickname', title: __('User.nickname'), operate: 'LIKE'}, {field: 'user.mobile', title: __('User.mobile'), operate: 'LIKE'}, {field: 'user.avatar', title: __('User.avatar'), operate: 'LIKE', events: Table.api.events.image, formatter: Table.api.formatter.image}, - {field: 'team.name', title: __('Team.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, + + + + {field: 'authtime', title: __('Authtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, + {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, + {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, + // {field: 'scoreevent.name', title: __('Event.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} ] ] @@ -51,6 +63,82 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin // 为表格绑定事件 Table.api.bindevent(table); + + + // 批量审核成功 + $(document).on("click", ".btn-auth_yes", function () { + let ids = Table.api.selectedids(table); + ids = ($.isArray(ids) ? ids.join(",") : ids); + + //先提示,确认是否提交,确认提交再调用接口 + Layer.confirm('确定要批量审核通过吗?', function (index) { + //调用接口 + let url = $.fn.bootstrapTable.defaults.extend.auth_yes_url; + options = {url: url, data: { ids: ids}}; + Fast.api.ajax(options, function (data, ret) { + table.trigger("uncheckbox"); + // var success = $(element).data("success") || $.noop; + //提交成功提示信息 + Fast.api.success(ret.msg); + + // if (typeof success === 'function') { + // if (false === success.call(element, data, ret)) { + // return false; + // } + // } + table.bootstrapTable('refresh'); + }, function (data, ret) { + // var error = $(element).data("error") || $.noop; + //提交失败提示信息 + Fast.api.error(ret.msg); + // if (typeof error === 'function') { + // if (false === error.call(element, data, ret)) { + // return false; + // } + // } + }); + }); + + + + }); + // 批量审核失败 + $(document).on("click", ".btn-auth_no", function () { + let ids = Table.api.selectedids(table); + ids = ($.isArray(ids) ? ids.join(",") : ids); + //调用接口 + Layer.confirm('确定要批量审核不通过吗?', function (index) { + //调用接口 + let url = $.fn.bootstrapTable.defaults.extend.auth_no_url; + options = {url: url, data: { ids: ids}}; + Fast.api.ajax(options, function (data, ret) { + table.trigger("uncheckbox"); + // var success = $(element).data("success") || $.noop; + //提交成功提示信息 + Fast.api.success(ret.msg); + + // if (typeof success === 'function') { + // if (false === success.call(element, data, ret)) { + // return false; + // } + // } + table.bootstrapTable('refresh'); + }, function (data, ret) { + // var error = $(element).data("error") || $.noop; + //提交失败提示信息 + Fast.api.error(ret.msg); + // if (typeof error === 'function') { + // if (false === error.call(element, data, ret)) { + // return false; + // } + // } + }); + }); + + + }); + + }, recyclebin: function () { // 初始化表格参数配置 @@ -121,6 +209,26 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin }, api: { bindevent: function () { + + $(document).on('click', '.btn-changeuser', function (event) { + var url = $(this).attr('data-url'); + if(!url) return false; + var title = $(this).attr('title'); + var width = $(this).attr('data-width'); + var height = $(this).attr('data-height'); + // var ids = $(this).attr('data-id'); + var area = [$(window).width() > 800 ? (width?width:'800px') : '95%', $(window).height() > 600 ? (height?height:'600px') : '95%']; + var options = { + shadeClose: false, + shade: [0.3, '#393D49'], + area: area, + callback:function(ret){//回调方法,需要在本页面Controller中增加方法监听且调用Fast.api.close(ret)传递结果; + Fast.api.close(ret); + } + }; + Fast.api.open(url,title,options); + }); + Form.api.bindevent($("form[role=form]")); } } diff --git a/public/assets/js/backend/score/team.js b/public/assets/js/backend/score/team.js index 6beafb2..c86dd09 100644 --- a/public/assets/js/backend/score/team.js +++ b/public/assets/js/backend/score/team.js @@ -22,14 +22,64 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', sortName: 'id', + fixedColumns: true, + fixedRightNumber: 1, columns: [ [ {checkbox: true}, {field: 'id', title: __('Id')}, + {field: 'image', title: __('Image'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image}, {field: 'name', title: __('Name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, + {field: 'people_num', title: __('人数'), operate: false}, + {field: 'people_names', title: __('成员'), operate: false}, + {field: 'opertime', title: __('统计时间查询'), operate:'RANGE', addclass:'datetimerange', autocomplete:false,formatter:function (value, row, index) { + return row.opertime ? row.opertime : '未查询'; + }}, + {field: 'score_count', title: __('积分统计(根据具体统计时间筛选)'),formatter:function (value, row, index) { + // if( !row.opertime){ + // return "#请在点开【搜索栏】后选择【统计时间查询】提交查询#"; + // } + return ` + ${row.score_count} + `; + },searchable:false}, {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, - {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + // {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + {field: 'operate', title: __('Operate'), table: table , buttons: [ + { + name: 'select', + text: __('积分记录'), + title: __('查看积分记录'), + classname: 'btn btn-xs btn-primary btn-dialog', + icon: 'fa fa-list', + url: log_url, + callback: function (data) { + + }, + // visible: function (row) { + // if(row.status == '1' || row.status == '2' ) return true; + // return false; + // } + }, + { + name: 'select2', + text: __('队员详情'), + title: __('队员详情'), + classname: 'btn btn-xs btn-primary btn-dialog', + icon: 'fa fa-list', + url: employee_url, + callback: function (data) { + + }, + // visible: function (row) { + // if(row.status == '1' || row.status == '2' ) return true; + // return false; + // } + }, + + ], events: Table.api.events.operate, formatter: Table.api.formatter.operate}, + ] ] }); @@ -45,9 +95,38 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin }, api: { bindevent: function () { + + $(document).on('click', '.btn-changeuser', function (event) { + var url = $(this).attr('data-url'); + if(!url) return false; + var title = $(this).attr('title'); + var width = $(this).attr('data-width'); + var height = $(this).attr('data-height'); + // var ids = $(this).attr('data-id'); + var area = [$(window).width() > 800 ? (width?width:'800px') : '95%', $(window).height() > 600 ? (height?height:'600px') : '95%']; + var options = { + shadeClose: false, + shade: [0.3, '#393D49'], + area: area, + callback:function(ret){//回调方法,需要在本页面Controller中增加方法监听且调用Fast.api.close(ret)传递结果; + Fast.api.close(ret); + } + }; + Fast.api.open(url,title,options); + }); + + Form.api.bindevent($("form[role=form]")); } } }; + + var log_url = function (row,dom) { + return 'score/log/index?score_team_id='+row.id; + } + var employee_url= function (row,dom) { + return 'score/employee/index?team_id='+row.id; + } + return Controller; }); diff --git a/public/uploads/20250527/619995a18849fce5f33889f88976df62.jpg b/public/uploads/20250527/619995a18849fce5f33889f88976df62.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0657bcb77c7f62e897e2123204ab1cc6038a9ffe GIT binary patch literal 47093 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%0DGrE4v>9f6Q~_2@PaqdMIam