isAjax()) { $param = get_params(); $admin = $this->uid; $rows = empty($param['limit']) ? get_md_contentconfig('app.page_size') : $param['limit']; $list = ReimbursementOrderList::withoutField('') ->where('delete_time', null) ->where('creater', $admin) // 只显示creater等于$admin的数据 ->order('order') ->order('id', 'desc') ->paginate($rows, false, ['query' => $param]) ->each(function ($item, $key) { $ro = ReimbursementOrderList::where(['id' => $item->id])->find(); $item->order = $ro['order']; $item->total = $ro['total']; $item->department = DepartmentList::where('id', $ro['department'])->value('title'); $item->project = ProjectList::where('id', $ro['project'])->value('name_short'); $item->creater = Admin::where('id', $ro['creater'])->value('name'); $item->status = $ro['status']; $item->remark = $ro['remark']; }) ->filter(function ($item) { return $item->delete_time === null; }); return table_assign(0, '', $list); } else { return view(); } } //获取报销列表 public function getReimbursementlist() { $list = ReimbursementOrderList::order('id', 'desc') ->whereNull('delete_time') ->select() ->map(function ($item) { // 查询 department 的名称 $department = DepartmentList::where('id', $item->department)->value('title'); // 查询 creater 的名称 $creater = Admin::where('id', $item->creater)->value('name'); // 将 project 和 cate 名称赋值到当前项 $item->department = $department; $item->creater = $creater; return $item; }); return json(['data' => $list, 'code' => 0, 'msg' => '获取账单成功']); } // 获取账单详情 public function getorderviewdetail($pid) { // 获取符合条件的记录列表 $list = ReimbursementList::where('pid', $pid) ->whereNull('delete_time') ->order('id', 'desc') ->select() ->map(function ($item) { // 查询 project 的名称 $project = ProjectList::where('id', $item->project)->value('name_short'); // 查询 cate 的名称 $cate = ReimbursementCategory::where('id', $item->cate)->value('name'); // 将 project 和 cate 名称赋值到当前项 $item->project = $project; $item->cate = $cate; return $item; }); return json(['data' => $list, 'code' => 0, 'msg' => '获取账单详情成功']); } // 获取报销内容 public function getreimbursementdetail($id) { // 获取符合条件的记录列表 $detail = ReimbursementList::where('id', $id) ->whereNull('delete_time') ->order('id', 'desc') ->select() ->map(function ($item) { // 查询 project 的名称 $project = ProjectList::where('id', $item->project)->value('name_short'); // 查询 cate 的名称 $cate = ReimbursementCategory::where('id', $item->cate)->value('name'); // 将 project 和 cate 名称赋值到当前项 $item->project = $project; $item->cate = $cate; return $item; }); return json(['data' => $detail, 'code' => 0, 'msg' => '获取报销成功']); } //添加条目 public function additem() { $param = get_params(); if (request()->isPost()) { // 新增逻辑 $param['create_time'] = date('Y-m-d H:i:s', time()); $param['admin_id'] = $this->uid; $sid = ReimbursementList::strict(false)->field(true)->insertGetId($param); if ($sid) { add_log('add', $sid, $param); // 从报销列表中重新计算总值 $total = ReimbursementList::where('pid', $param['pid'])->sum('price'); $param['total'] = $total; // 更新 ReimbursementOrderList,将重新计算的总值更新到对应的 pid=id 的 total 字段中 ReimbursementOrderList::where('id', $param['pid'])->strict(false)->update(['total' => $total]); return json(["code" => 2, "msg" => "添加成功"]); // 返回JSON格式数据 } else { return json(["code" => -2, "msg" => "添加失败"]); // 返回JSON格式数据 } } else { $id = isset($param['id']) ? $param['id'] : 0; if ($id > 0) { $reimbursementLists = ReimbursementList::where('id', $id) ->field('id, pid, times, department, project, cate, price, creater, haveticket, tickets, remark, create_time') ->find(); if (empty($reimbursementLists)) { return json(["code" => 1, "msg" => "信息不存在"]); // 返回JSON格式数据 } View::assign('sid', $reimbursementLists); } View::assign('id', $id); return view(); } } //编辑条目 public function edititem($id) { $param = get_params(); // 编辑逻辑 $reimbursementLists = ReimbursementList::where('id', $param['id']) ->field('id, pid, times, department, project, cate, price, creater, haveticket, tickets, remark, create_time') ->find(); if ($reimbursementLists) { // 获取项目名称 $project = ProjectList::where('id', $reimbursementLists['project'])->value('name_short'); // 获取部门名称 $department = DepartmentList::where('id', $reimbursementLists['department'])->value('title'); // 获取创建者名称 $creater = Admin::where('id', $reimbursementLists['creater'])->value('name'); if ($project) { $reimbursementLists['project'] = $project; } if ($department) { $reimbursementLists['department'] = $department; } if ($creater) { $reimbursementLists['creater'] = $creater; } View::assign('detail', $reimbursementLists); } else { return json(["code" => 1, "msg" => "信息不存在"]); // 返回JSON格式数据 } $param['update_time'] = date('Y-m-d H:i:s', time()); $param['update_time'] = date('Y-m-d', time()); $res = ReimbursementList::where('id', $param['id'])->strict(false)->field(true)->update($param); if ($res) { add_log('edit', $param['id'], $param, $reimbursementLists); return json(["code" => 0, "msg" => "编辑成功"]); // 返回JSON格式数据 } else { return json(["code" => -1, "msg" => "编辑失败"]); // 返回JSON格式数据 } } //添加 public function add() { $param = get_params(); if (request()->isPost()) { if (!empty($param['id']) && $param['id'] > 0) { $ro = (new ReimbursementOrderList())->detail($param['id']); $param['update_time'] = time(); $res = ReimbursementOrderList::where('id', $param['id'])->strict(false)->field(true)->update($param); if ($res) { add_log('edit', $param['id'], $param, $ro); } return to_assign(); } else { $param['create_time'] = date('Y-m-d H:i:s', time()); $param['admin_id'] = $this->uid; $param['creater'] = $this->uid; $param['status'] = '未报销'; // 添加状态字段赋值 $sid = ReimbursementOrderList::strict(false)->field(true)->insertGetId($param); if ($sid) { add_log('add', $sid, $param); $log_data = array( 'module' => 'plans', // 'id' => $sid, 'new_content' => $param['order'], 'field' => 'new', 'action' => 'add', 'admin_id' => $this->uid, 'create_time' => time(), ); Db::name('Log')->strict(false)->field(true)->insert($log_data); } return to_assign(2, '添加成功!'); } } else { $id = isset($param['id']) ? $param['id'] : 0; if ($id > 0) { $detail = (new ReimbursementOrderList())->detail($id); if (empty($detail)) { return to_assign(1, '1.信息不存在'); } View::assign('detail', $detail); } View::assign('id', $id); return view(); } } //查看 public function view($id) { $reimbursementOrder = ReimbursementOrderList::where('id', $id) ->field('id, order, total, department, project, creater, remark, status, lock, create_time') ->find(); // print_r($reimbursementOrder); if ($reimbursementOrder) { // 获取项目名称 $project = ProjectList::where('id', $reimbursementOrder['project'])->value('name_short'); // 获取部门名称 $department = DepartmentList::where('id', $reimbursementOrder['department'])->value('title'); // 获取创建者名称 $creater = Admin::where('id', $reimbursementOrder['creater'])->value('name'); // print_r($creater); if ($project) { $reimbursementOrder['project'] = $project; } if ($department) { $reimbursementOrder['department'] = $department; } if ($creater) { $reimbursementOrder['creater'] = $creater; } if ($reimbursementOrder) { View::assign('detail', $reimbursementOrder); } else { View::assign('message', '没有详细数据'); } } return view(); } // 查看报销详情 public function viewitem($id) { $reimbursementLists = ReimbursementList::where('pid', $id) ->whereNull('delete_time') ->order('times', 'desc') ->select(); foreach ($reimbursementLists as $item) { $cateName = ReimbursementCategory::where('id', $item->cate)->value('name'); $projectName = ProjectList::where('id', $item->project)->value('name_short'); $item->cate = $cateName; $item->project = $projectName; } return json(["code" => 0, "data" => $reimbursementLists]); } //删除 public function delete() { $request = request(); if ($request->isDelete() || $request->isAjax()) { $id = get_params("id"); $detail = ReimbursementList::where('id', $id)->find(); if (ReimbursementList::where('id', $id)->update(['delete_time' => date('Y-m-d H:i:s')]) !== false) { $log_data = array( 'module' => 'reimbursement', 'field' => 'delete', 'action' => 'delete', 'admin_id' => $this->uid, 'old_content' => '', 'new_content' => $detail['id'], 'create_time' => time(), ); Db::name('Log')->strict(false)->field(true)->insert($log_data); return to_assign(0, "删除成功"); } else { return to_assign(0, "删除失败"); } } else { return to_assign(1, "错误的请求"); } } //批量删除 public function batch_delete() { $request = request(); if ($request->isDelete() || $request->isAjax()) { $ids = get_params("ids"); foreach ($ids as $id) { $detail = ReimbursementOrderList::where('id', $id)->find(); if (ReimbursementOrderList::where('id', $id)->update(['delete_time' => date('Y-m-d H:i:s')]) !== false) { $log_data = array( 'module' => 'reimbursement', 'field' => 'delete', 'action' => 'delete', 'admin_id' => $this->uid, 'old_content' => '', 'new_content' => $detail['id'], 'create_time' => time(), ); Db::name('Log')->strict(false)->field(true)->insert($log_data); } } return to_assign(0, "批量删除成功"); } else { return to_assign(1, "错误的请求"); } } //获取项目列表 public function getproject() { $pageNumber = $_GET['page'] ?? 1; // 获取当前页码,默认为第1页 $pageSize = 50; // 每页显示的数据条数 $totalRecords = ProjectList::where('delete_time', null)->count(); // 获取总记录数 $totalPages = ceil($totalRecords / $pageSize); // 计算总页数 $offset = ($pageNumber - 1) * $pageSize; // 计算偏移量 $projects = ProjectList::limit($offset, $pageSize)->order('id', 'desc')->column('name_short', 'id'); $formattedProjects = []; foreach ($projects as $id => $project) { $formattedProjects[] = ["id" => $id, "project" => $project]; } return json(["code" => 0, "count" => $totalRecords, "data" => $formattedProjects, "pages" => $totalPages]); } //获取项目列表 public function getdepartment() { $pageNumber = $_GET['page'] ?? 1; // 获取当前页码,默认为第1页 $pageSize = 10; // 每页显示的数据条数 $totalRecords = DepartmentList::count(); // 获取总记录数 $totalPages = ceil($totalRecords / $pageSize); // 计算总页数 $offset = ($pageNumber - 1) * $pageSize; // 计算偏移量 $departments = DepartmentList::limit($offset, $pageSize)->order('id', 'desc')->column('title', 'id'); $formattedDepartments = []; foreach ($departments as $id => $department) { $formattedDepartments[] = ["id" => $id, "department" => $department]; } return json(["code" => 0, "count" => $totalRecords, "data" => $formattedDepartments, "pages" => $totalPages]); } //获取报销类别 public function reimcate() { $pageNumber = $_GET['page'] ?? 1; // 获取当前页码,默认为第1页 $pageSize = 50; // 每页显示的数据条数 $totalRecords = ReimbursementCategory::count(); // 获取总记录数 $totalPages = ceil($totalRecords / $pageSize); // 计算总页数 $offset = ($pageNumber - 1) * $pageSize; // 计算偏移量 $reimcates = ReimbursementCategory::limit($offset, $pageSize)->order('id', 'desc')->column('name', 'id'); $formattedReimcates = []; foreach ($reimcates as $id => $reimcate) { $formattedReimcates[] = ["id" => $id, "cate" => $reimcate]; } return json(["code" => 0, "count" => $totalRecords, "data" => $formattedReimcates, "pages" => $totalPages]); } //获取创建者 public function getcreater() { $createrId = $this->uid; $createrName = Admin::where('id', $createrId)->value('name'); header('Content-Type: application/json'); echo json_encode([ 'createrId' => $createrId, 'createrName' => $createrName, ]); exit; } //编辑报销状态 public function editstatus($id, $status) { $validStatus = ['未报销', '已报销']; if (in_array($status, $validStatus)) { ReimbursementOrderList::where('id', $id)->update(['status' => $status]); return json(["code" => 0, "msg" => "状态修改成功"]); } else { return json(["code" => 1, "msg" => "无效的状态值"]); } } public function editdetailitem($id) { $reimbursementLists = ReimbursementList::where('id', $id) ->field('id, pid, times, department, project, cate, price, creater, haveticket, tickets, remark, create_time') ->find(); // print_r($reimbursementLists); if ($reimbursementLists) { // 获取发生时间 $times = $reimbursementLists['times']; // 获取部门名称 $department = DepartmentList::where('id', $reimbursementLists['department'])->value('title'); // 获取创建者名称 $creater = Admin::where('id', $reimbursementLists['creater'])->value('name'); // print_r($creater); if ($times) { $timesDate = date('Y年m月d日', strtotime($times)); $reimbursementLists['times'] = $timesDate; } if ($department) { $reimbursementLists['department'] = $department; } if ($creater) { $reimbursementLists['creater'] = $creater; } if ($reimbursementLists) { View::assign('detail', $reimbursementLists); } else { View::assign('message', '没有详细数据'); } } return view(); // return $reimbursementLists; } //编辑锁定状态 public function editlock($id, $lock) { $validStatus = ['未锁定', '锁定']; if (in_array($lock, $validStatus)) { ReimbursementOrderList::where('id', $id)->update(['lock' => $lock]); return json(["code" => 0, "msg" => "状态修改成功"]); } else { return json(["code" => 1, "msg" => "无效的状态值"]); } } //增加费用类型(app端) public function addexpensetype() { $param = get_params(); if (request()->isPost()) { $sid = ReimbursementCategory::strict(false)->field(true)->insertGetId($param); if ($sid) { add_log('add', $sid, $param); return json(["code" => 0, "msg" => "添加成功"]); // 返回JSON格式数据 } else { return json(["code" => 1, "msg" => "添加失败"]); // 返回JSON格式数据 } } else { $id = isset($param['id']) ? $param['id'] : 0; if ($id > 0) { $businessinfoLists = ReimbursementCategory::where('id', $id) ->field('id, name') ->find(); if (empty($businessinfoLists)) { return json(["code" => 1, "msg" => "信息不存在"]); // 返回JSON格式数据 } } json(["code" => 0, "msg" => "编辑成功"]); // 返回JSON格式数据 } } }