isAjax()) { $list = Db::name('AttendanceWorkPlan')->where('is_del', '=', 0)->order('create_time asc')->select()->each(function ($item, $key) { $item['create_time'] = date('Y-m-d H:i:s', $item['create_time']); $item['update_time'] = $item['update_time'] > 0 ? date('Y-m-d H:i:s', $item['update_time']) : ""; return $item; })->toArray(); foreach ($list as &$val) { $mappingTimes = Db::name('AttendanceWorkPlanWorkTimeLink')->where(['work_plan_id' => $val['id']])->column('work_time_id'); $times = Db::name('AttendanceWorkTime')->where('id', 'in', $mappingTimes)->where('is_del', '=', 0)->select()->toArray(); $val['times'] = $times; } $res['data'] = $list; return table_assign(0, '', $res); } else { return view(); } } //添加&编辑 public function add() { $param = get_params(); if (request()->isAjax()) { if (!empty($param['id']) && $param['id'] > 0) { try { validate(WorkPlanCheck::class)->scene('edit')->check($param); } catch (ValidateException $e) { // 验证失败 输出错误信息 return to_assign(1, $e->getError()); } // 启动事务 Db::startTrans(); try { // 处理时间 foreach ($param['begin_time'] as $key => $value) { if (!$value) { continue; } $timeData = [ 'id' => intval($param['time_id'][$key]), 'begin_time' => $param['begin_time'][$key], 'need_begin_check' => intval($param['need_begin_check'][$key]), 'end_time' => $param['end_time'][$key], 'need_end_check' => intval($param['need_end_check'][$key]), 'check_begin_start_time' => $param['check_begin_start_time'][$key], 'check_begin_end_time' => $param['check_begin_end_time'][$key], 'check_end_start_time' => $param['check_end_start_time'][$key], 'check_end_end_time' => $param['check_end_end_time'][$key], ]; if ($timeData['id'] > 0) { // 更新 $resa = Db::name('AttendanceWorkTime')->strict(false)->field(true)->update($timeData); } else { // 新增 unset($timeData['id']); $timeId = Db::name('AttendanceWorkTime')->strict(false)->field(true)->insertGetId($timeData); $mappingData = [ 'work_plan_id' => $param['id'], 'work_time_id' => $timeId, ]; $mappingId = Db::name('AttendanceWorkPlanWorkTimeLink')->strict(false)->field(true)->insertGetId($mappingData); } } // 处理班次 $param['update_time'] = time(); Db::name('AttendanceWorkPlan')->where(['id' => $param['id']])->strict(false)->field(true)->update($param); add_log('edit', $param['id'], $param); // 提交事务 Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); return to_assign(1, '提交失败:' . $e->getMessage()); } } else { try { validate(WorkPlanCheck::class)->scene('add')->check($param); } catch (ValidateException $e) { // 验证失败 输出错误信息 return to_assign(1, $e->getError()); } // 启动事务 Db::startTrans(); try { // 插入班次表 $param['is_del'] = 0; $param['create_time'] = time(); unset($param['id']); $uid = Db::name('AttendanceWorkPlan')->strict(false)->field(true)->insertGetId($param); // 插入时间表 for ($i = 0; $i < count($param['begin_time']); $i++) { // 获取时间数据 $timeData = [ 'begin_time' => $param['begin_time'][$i], 'need_begin_check' => intval($param['need_begin_check'][$i]), 'end_time' => $param['end_time'][$i], 'need_end_check' => intval($param['need_end_check'][$i]), 'check_begin_start_time' => $param['check_begin_start_time'][$i], 'check_begin_end_time' => $param['check_begin_end_time'][$i], 'check_end_start_time' => $param['check_end_start_time'][$i], 'check_end_end_time' => $param['check_end_end_time'][$i], ]; // 插入时间数据 $timeIds[$i] = Db::name('AttendanceWorkTime')->strict(false)->field(true)->insertGetId($timeData); } // mapping数据 foreach ($timeIds as $key => $value) { $mappingData[$key] = [ 'work_plan_id' => $uid, 'work_time_id' => $value, ]; } Db::name('AttendanceWorkPlanWorkTimeLink')->strict(false)->field(true)->insertAll($mappingData); add_log('add', $uid, $param); // 提交事务 Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); return to_assign(1, '提交失败:' . $e->getMessage()); } } return to_assign(); } else { $id = isset($param['id']) ? $param['id'] : 0; if ($id > 0) { $detail = Db::name('AttendanceWorkPlan')->where(['id' => $id])->find(); $mappingTimes = Db::name('AttendanceWorkPlanWorkTimeLink')->where(['work_plan_id' => $id])->column('work_time_id'); $times = Db::name('AttendanceWorkTime')->where('id', 'in', $mappingTimes)->where('is_del', '=', 0)->select()->toArray(); $detail['times'] = $times; View::assign('detail', $detail); } View::assign('id', $id); return view(); } } // 删除 public function delete() { $id = get_params("id"); if (Db::name('AttendanceWorkPlan')->where('id', $id)->update(['is_del'=>1]) !== false) { add_log('delete', $id,[],'班次'); return to_assign(0, "删除成功"); } else { return to_assign(1, "删除失败"); } } }