| | |
| | | * @Author 勾股工作室 <hdm58@qq.com> |
| | | +----------------------------------------------------------------------------------------------- |
| | | */ |
| | | |
| | | declare (strict_types = 1); |
| | | |
| | | declare(strict_types=1); |
| | | |
| | | namespace app\finance\controller; |
| | | |
| | |
| | | class Expense extends BaseController |
| | | { |
| | | /** |
| | | * 构造函数 |
| | | */ |
| | | * 构造函数 |
| | | */ |
| | | protected $model; |
| | | public function __construct() |
| | | { |
| | | public function __construct() |
| | | { |
| | | parent::__construct(); // 调用父类构造函数 |
| | | $this->model = new ExpenseModel(); |
| | | } |
| | | |
| | | /** |
| | | * 数据列表 |
| | | */ |
| | | public function datalist() |
| | | { |
| | | $this->model = new ExpenseModel(); |
| | | } |
| | | |
| | | /** |
| | | * 数据列表 |
| | | */ |
| | | public function datalist() |
| | | { |
| | | $param = get_params(); |
| | | if (request()->isAjax()) { |
| | | if (request()->isAjax()) { |
| | | $tab = isset($param['tab']) ? $param['tab'] : 0; |
| | | $uid = $this->uid; |
| | | $where = array(); |
| | | $whereOr = array(); |
| | | $where[]=['delete_time','=',0]; |
| | | if($tab == 0){ |
| | | $where = array(); |
| | | $whereOr = array(); |
| | | $where[] = ['delete_time', '=', 0]; |
| | | if ($tab == 0) { |
| | | //全部 |
| | | $whereOr[] = ['admin_id', '=', $this->uid]; |
| | | $whereOr[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',check_uids)")]; |
| | | $whereOr[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',check_history_uids)")]; |
| | | $whereOr[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',check_copy_uids)")]; |
| | | $auth = isAuthExpense($uid); |
| | | if($auth == 0){ |
| | | $dids_a = get_leader_departments($uid); |
| | | if ($auth == 0) { |
| | | $dids_a = get_leader_departments($uid); |
| | | $dids_b = get_role_departments($uid); |
| | | $dids = array_merge($dids_a, $dids_b); |
| | | if(!empty($dids)){ |
| | | $whereOr[] = ['did','in',$dids]; |
| | | if (!empty($dids)) { |
| | | $whereOr[] = ['did', 'in', $dids]; |
| | | } |
| | | } |
| | | } |
| | | if($tab == 1){ |
| | | if ($tab == 1) { |
| | | //我创建的 |
| | | $where[] = ['admin_id', '=', $this->uid]; |
| | | } |
| | | if($tab == 2){ |
| | | if ($tab == 2) { |
| | | //待我审核的 |
| | | $where[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',check_uids)")]; |
| | | } |
| | | if($tab == 3){ |
| | | if ($tab == 3) { |
| | | //我已审核的 |
| | | $where[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',check_history_uids)")]; |
| | | } |
| | | if($tab == 4){ |
| | | if ($tab == 4) { |
| | | //抄送给我的 |
| | | $where[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',check_copy_uids)")]; |
| | | } |
| | | if($tab == 5){ |
| | | if ($tab == 5) { |
| | | //已打款的 |
| | | $where[] = ['pay_status', '=', 1]; |
| | | $auth = isAuthExpense($uid); |
| | | if($auth == 0){ |
| | | $dids_a = get_leader_departments($uid); |
| | | if ($auth == 0) { |
| | | $dids_a = get_leader_departments($uid); |
| | | $dids_b = get_role_departments($uid); |
| | | $dids = array_merge($dids_a, $dids_b); |
| | | if(!empty($dids)){ |
| | | $whereOr[] = ['did','in',$dids]; |
| | | if (!empty($dids)) { |
| | | $whereOr[] = ['did', 'in', $dids]; |
| | | } |
| | | } |
| | | } |
| | | //按时间检索 |
| | | if (!empty($param['diff_time'])) { |
| | | $diff_time =explode('~', $param['diff_time']); |
| | | $where[] = ['income_month', 'between', [strtotime(urldecode($diff_time[0])),strtotime(urldecode($diff_time[1].' 23:59:59'))]]; |
| | | $diff_time = explode('~', $param['diff_time']); |
| | | $where[] = ['income_month', 'between', [strtotime(urldecode($diff_time[0])), strtotime(urldecode($diff_time[1] . ' 23:59:59'))]]; |
| | | } |
| | | if (isset($param['pay_status']) && $param['pay_status'] != "") { |
| | | $where[] = ['pay_status', '=', $param['pay_status']]; |
| | | } |
| | | if (isset($param['pay_status']) && $param['pay_status'] != "") { |
| | | $where[] = ['pay_status', '=', $param['pay_status']]; |
| | | } |
| | | if (isset($param['check_status']) && $param['check_status'] != "") { |
| | | $where[] = ['check_status', '=', $param['check_status']]; |
| | | } |
| | | $list = $this->model->datalist($param,$where,$whereOr); |
| | | return table_assign(0, '', $list); |
| | | } |
| | | else{ |
| | | return view(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 添加/编辑 |
| | | */ |
| | | public function add() |
| | | { |
| | | $param = get_params(); |
| | | if (request()->isAjax()) { |
| | | $where[] = ['check_status', '=', $param['check_status']]; |
| | | } |
| | | $list = $this->model->datalist($param, $where, $whereOr); |
| | | return table_assign(0, '', $list); |
| | | } else { |
| | | return view(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 添加/编辑 |
| | | */ |
| | | public function add() |
| | | { |
| | | $param = get_params(); |
| | | if (request()->isAjax()) { |
| | | $param['income_month'] = isset($param['income_month']) ? strtotime(urldecode($param['income_month'])) : 0; |
| | | $param['expense_time'] = isset($param['expense_time']) ? strtotime(urldecode($param['expense_time'])) : 0; |
| | | $param['expense_time'] = isset($param['expense_time']) ? strtotime(urldecode($param['expense_time'])) : 0; |
| | | $amountData = isset($param['amount']) ? $param['amount'] : '0'; |
| | | $cost = 0; |
| | | if ($amountData == 0) { |
| | | return to_assign(1,'报销金额不完善'); |
| | | } |
| | | else{ |
| | | return to_assign(1, '报销金额不完善'); |
| | | } else { |
| | | foreach ($amountData as $key => $value) { |
| | | if ($value == 0) { |
| | | return to_assign(1,'第' . ($key + 1) . '条报销选项的金额不能为零'); |
| | | } |
| | | else{ |
| | | $cost+=$value; |
| | | return to_assign(1, '第' . ($key + 1) . '条报销选项的金额不能为零'); |
| | | } else { |
| | | $cost += $value; |
| | | } |
| | | } |
| | | } |
| | | if($cost==0){ |
| | | return to_assign(1,'报销金额不能为零'); |
| | | if ($cost == 0) { |
| | | return to_assign(1, '报销金额不能为零'); |
| | | } |
| | | $param['admin_id'] = $this->uid; |
| | | $param['did'] = $this->did; |
| | | $param['cost'] = $cost; |
| | | if (!empty($param['id']) && $param['id'] > 0) { |
| | | try { |
| | | validate(ExpenseValidate::class)->scene('edit')->check($param); |
| | | } catch (ValidateException $e) { |
| | | // 验证失败 输出错误信息 |
| | | return to_assign(1, $e->getError()); |
| | | } |
| | | if (!empty($param['id']) && $param['id'] > 0) { |
| | | try { |
| | | validate(ExpenseValidate::class)->scene('edit')->check($param); |
| | | } catch (ValidateException $e) { |
| | | // 验证失败 输出错误信息 |
| | | return to_assign(1, $e->getError()); |
| | | } |
| | | $this->model->edit($param); |
| | | } else { |
| | | try { |
| | | validate(ExpenseValidate::class)->scene('add')->check($param); |
| | | } catch (ValidateException $e) { |
| | | // 验证失败 输出错误信息 |
| | | return to_assign(1, $e->getError()); |
| | | } |
| | | $this->model->add($param); |
| | | } |
| | | }else{ |
| | | } else { |
| | | try { |
| | | validate(ExpenseValidate::class)->scene('add')->check($param); |
| | | } catch (ValidateException $e) { |
| | | // 验证失败 输出错误信息 |
| | | return to_assign(1, $e->getError()); |
| | | } |
| | | $this->model->add($param); |
| | | } |
| | | } else { |
| | | $id = isset($param['id']) ? $param['id'] : 0; |
| | | View::assign('expense_cate', Db::name('ExpenseCate')->where(['status' => 1])->select()->toArray()); |
| | | View::assign('expense_cate', Db::name('ExpenseCate')->where(['status' => 1])->select()->toArray()); |
| | | View::assign('user', get_admin($this->uid)); |
| | | if ($id>0) { |
| | | if ($id > 0) { |
| | | $detail = $this->model->getById($id); |
| | | View::assign('detail', $detail); |
| | | if(is_mobile()){ |
| | | if (is_mobile()) { |
| | | return view('qiye@/finance/add_expense'); |
| | | } |
| | | return view('edit'); |
| | | } |
| | | if(is_mobile()){ |
| | | if (is_mobile()) { |
| | | return view('qiye@/finance/add_expense'); |
| | | } |
| | | return view(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 查看 |
| | | */ |
| | | public function view($id) |
| | | { |
| | | } |
| | | |
| | | /** |
| | | * 查看 |
| | | */ |
| | | public function view($id) |
| | | { |
| | | $detail = $this->model->getById($id); |
| | | if (!empty($detail)) { |
| | | $file_array = Db::name('File')->where('id','in',$detail['file_ids'])->select(); |
| | | $file_array = Db::name('File')->where('id', 'in', $detail['file_ids'])->select(); |
| | | $detail['file_array'] = $file_array; |
| | | View::assign('detail', $detail); |
| | | View::assign('create_user', get_admin($detail['admin_id'])); |
| | | if(is_mobile()){ |
| | | if (is_mobile()) { |
| | | return view('qiye@/finance/view_expense'); |
| | | } |
| | | return view(); |
| | | } else { |
| | | return view(EEEOR_REPORTING, ['code' => 404, 'warning' => '找不到页面']); |
| | | } |
| | | else{ |
| | | return view(EEEOR_REPORTING,['code'=>404,'warning'=>'找不到页面']); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 删除 |
| | | */ |
| | | public function del() |
| | | { |
| | | } |
| | | |
| | | /** |
| | | * 删除 |
| | | */ |
| | | public function del() |
| | | { |
| | | $param = get_params(); |
| | | $id = isset($param['id']) ? $param['id'] : 0; |
| | | if (request()->isDelete()) { |
| | | $this->model->delById($id); |
| | | } else { |
| | | return to_assign(1, "错误的请求"); |
| | | } |
| | | } |
| | | |
| | | return to_assign(1, "错误的请求"); |
| | | } |
| | | } |
| | | |
| | | //报销记录 |
| | | public function record() |
| | | { |
| | | if (request()->isAjax()) { |
| | | public function record() |
| | | { |
| | | if (request()->isAjax()) { |
| | | $param = get_params(); |
| | | $where = []; |
| | | $where[]=['delete_time','=',0]; |
| | | $where[]=['check_status','=',2]; |
| | | if(isAuthExpense($this->uid)==0){ |
| | | $where[] = ['delete_time', '=', 0]; |
| | | $where[] = ['check_status', '=', 2]; |
| | | if (isAuthExpense($this->uid) == 0) { |
| | | $where[] = ['admin_id', '=', $this->uid]; |
| | | } |
| | | //按时间检索 |
| | | if (!empty($param['diff_time'])) { |
| | | $diff_time =explode('~', $param['diff_time']); |
| | | $where[] = ['expense_time', 'between', [strtotime(urldecode($diff_time[0])),strtotime(urldecode($diff_time[1].' 23:59:59'))]]; |
| | | $diff_time = explode('~', $param['diff_time']); |
| | | $where[] = ['expense_time', 'between', [strtotime(urldecode($diff_time[0])), strtotime(urldecode($diff_time[1] . ' 23:59:59'))]]; |
| | | } |
| | | if (isset($param['pay_status']) && $param['pay_status'] != "") { |
| | | $where[] = ['pay_status', '=', $param['pay_status']]; |
| | | } |
| | | $list = $this->model->datalist($param,$where); |
| | | |
| | | $cost = $this->model::where($where)->sum('cost'); |
| | | $totalRow['cost'] = sprintf("%.2f",$cost); |
| | | return table_assign(0, '', $list); |
| | | } else { |
| | | View::assign('authExpense',isAuthExpense($this->uid)); |
| | | return view(); |
| | | } |
| | | } |
| | | if (isset($param['pay_status']) && $param['pay_status'] != "") { |
| | | $where[] = ['pay_status', '=', $param['pay_status']]; |
| | | } |
| | | $list = $this->model->datalist($param, $where); |
| | | |
| | | $cost = $this->model::where($where)->sum('cost'); |
| | | $totalRow['cost'] = sprintf("%.2f", $cost); |
| | | return table_assign(0, '', $list); |
| | | } else { |
| | | View::assign('authExpense', isAuthExpense($this->uid)); |
| | | return view(); |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | //删除班次考勤时间 |
| | | public function del_work_plan_time() |
| | | { |
| | | $id = get_params("id"); |
| | | if (Db::name('AttendanceWorkTime')->where('id', $id)->update(['is_del'=>1]) !== false) { |
| | | return to_assign(0, "删除成功"); |
| | | } else { |
| | | return to_assign(1, "删除失败"); |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | public function index() |
| | | { |
| | | if (request()->isAjax()) { |
| | | $list = Db::name('Position')->where('status', '>=', 0)->order('create_time asc')->select()->toArray(); |
| | | foreach ($list as &$val) { |
| | | $groupId = Db::name('PositionGroup')->where(['pid' => $val['id']])->column('group_id'); |
| | | $groupName = Db::name('AdminGroup')->where('id', 'in', $groupId)->column('title'); |
| | | $val['groupName'] = implode(',', $groupName); |
| | | } |
| | | $list = Db::name('AttendanceGroup')->where('is_del', '=', 0)->order('create_time asc')->select()->toArray(); |
| | | // var_dump($list); |
| | | // foreach ($list as &$val) { |
| | | // $groupId = Db::name('PositionGroup')->where(['pid' => $val['id']])->column('group_id'); |
| | | // $groupName = Db::name('AdminGroup')->where('id', 'in', $groupId)->column('title'); |
| | | // $val['groupName'] = implode(',', $groupName); |
| | | // } |
| | | $res['data'] = $list; |
| | | return table_assign(0, '', $res); |
| | | } else { |
| | |
| | | { |
| | | $param = get_params(); |
| | | if (request()->isAjax()) { |
| | | // if (!empty($param['id']) && $param['id'] > 0) { |
| | | // if($param['id']==1){ |
| | | // return to_assign(1, '超级管理员不能编辑'); |
| | | // } |
| | | // try { |
| | | // validate(PositionCheck::class)->scene('edit')->check($param); |
| | | // } catch (ValidateException $e) { |
| | | // // 验证失败 输出错误信息 |
| | | // return to_assign(1, $e->getError()); |
| | | // } |
| | | // // 启动事务 |
| | | // Db::startTrans(); |
| | | // try { |
| | | // Db::name('Position')->where(['id' => $param['id']])->strict(false)->field(true)->update($param); |
| | | // Db::name('PositionGroup')->where(['pid' => $param['id']])->delete(); |
| | | // foreach ($param['group_id'] as $k => $v) { |
| | | // $data[$k] = [ |
| | | // 'pid' => $param['id'], |
| | | // 'group_id' => $v, |
| | | // 'create_time' => time(), |
| | | // ]; |
| | | // } |
| | | // Db::name('PositionGroup')->strict(false)->field(true)->insertAll($data); |
| | | // add_log('edit', $param['id'], $param); |
| | | // //清除菜单\权限缓存 |
| | | // clear_cache('adminMenu'); |
| | | // clear_cache('adminRules'); |
| | | // // 提交事务 |
| | | // Db::commit(); |
| | | // } catch (\Exception $e) { |
| | | // // 回滚事务 |
| | | // Db::rollback(); |
| | | // return to_assign(1, '提交失败:' . $e->getMessage()); |
| | | // } |
| | | // } else { |
| | | // try { |
| | | // validate(PositionCheck::class)->scene('add')->check($param); |
| | | // } catch (ValidateException $e) { |
| | | // // 验证失败 输出错误信息 |
| | | // return to_assign(1, $e->getError()); |
| | | // } |
| | | // // 启动事务 |
| | | // Db::startTrans(); |
| | | // try { |
| | | // $uid = Db::name('Position')->strict(false)->field(true)->insertGetId($param); |
| | | // foreach ($param['group_id'] as $k => $v) { |
| | | // $data[$k] = [ |
| | | // 'pid' => $uid, |
| | | // 'group_id' => $v, |
| | | // 'create_time' => time(), |
| | | // ]; |
| | | // } |
| | | // Db::name('PositionGroup')->strict(false)->field(true)->insertAll($data); |
| | | // add_log('add', $uid, $param); |
| | | // // 提交事务 |
| | | // Db::commit(); |
| | | // } catch (\Exception $e) { |
| | | // // 回滚事务 |
| | | // Db::rollback(); |
| | | // return to_assign(1, '提交失败:' . $e->getMessage()); |
| | | // } |
| | | // } |
| | | if (!empty($param['id']) && $param['id'] > 0) { |
| | | try { |
| | | validate(PositionCheck::class)->scene('edit')->check($param); |
| | | } catch (ValidateException $e) { |
| | | // 验证失败 输出错误信息 |
| | | return to_assign(1, $e->getError()); |
| | | } |
| | | // 启动事务 |
| | | Db::startTrans(); |
| | | try { |
| | | Db::name('AttendanceGroup')->where(['id' => $param['id']])->strict(false)->field(true)->update($param); |
| | | // Db::name('PositionGroup')->where(['pid' => $param['id']])->delete(); |
| | | // foreach ($param['group_id'] as $k => $v) { |
| | | // $data[$k] = [ |
| | | // 'pid' => $param['id'], |
| | | // 'group_id' => $v, |
| | | // 'create_time' => time(), |
| | | // ]; |
| | | // } |
| | | // Db::name('PositionGroup')->strict(false)->field(true)->insertAll($data); |
| | | add_log('edit', $param['id'], $param); |
| | | //清除菜单\权限缓存 |
| | | // clear_cache('adminMenu'); |
| | | // clear_cache('adminRules'); |
| | | // 提交事务 |
| | | Db::commit(); |
| | | } catch (\Exception $e) { |
| | | // 回滚事务 |
| | | Db::rollback(); |
| | | return to_assign(1, '提交失败:' . $e->getMessage()); |
| | | } |
| | | } else { |
| | | try { |
| | | validate(PositionCheck::class)->scene('add')->check($param); |
| | | } catch (ValidateException $e) { |
| | | // 验证失败 输出错误信息 |
| | | return to_assign(1, $e->getError()); |
| | | } |
| | | // 启动事务 |
| | | Db::startTrans(); |
| | | try { |
| | | $uid = Db::name('AttendanceGroup')->strict(false)->field(true)->insertGetId($param); |
| | | // foreach ($param['group_id'] as $k => $v) { |
| | | // $data[$k] = [ |
| | | // 'pid' => $uid, |
| | | // 'group_id' => $v, |
| | | // 'create_time' => time(), |
| | | // ]; |
| | | // } |
| | | // Db::name('PositionGroup')->strict(false)->field(true)->insertAll($data); |
| | | 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; |
| | | $id = isset($param['id']) ? $param['id'] : 0; |
| | | // $group = Db::name('AdminGroup')->order('create_time asc')->select()->toArray(); |
| | | // if ($id > 0) { |
| | | // $detail = Db::name('Position')->where(['id' => $id])->find(); |
| | | $detail = Db::name('AttendanceGroup')->where(['id' => $id])->find(); |
| | | // $detail['group_id'] = Db::name('PositionGroup')->where(['pid' => $id])->column('group_id'); |
| | | // foreach ($group as &$val) { |
| | | // if (in_array($val['id'], $detail['group_id'])) { |
| | |
| | | // $val['checked'] = 0; |
| | | // } |
| | | // } |
| | | // View::assign('detail', $detail); |
| | | View::assign('detail', $detail); |
| | | // } |
| | | // View::assign('group', $group); |
| | | // View::assign('id', $id); |
| | | View::assign('id', $id); |
| | | return view(); |
| | | } |
| | | } |
New file |
| | |
| | | <?php |
| | | |
| | | declare(strict_types=1); |
| | | |
| | | namespace app\user\controller; |
| | | |
| | | use app\base\BaseController; |
| | | use app\user\validate\WorkPlanCheck; |
| | | use think\exception\ValidateException; |
| | | use think\facade\Db; |
| | | use think\facade\View; |
| | | |
| | | class WorkPlan extends BaseController |
| | | { |
| | | public function index() |
| | | { |
| | | if (request()->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, "删除失败"); |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | <?php |
| | | /** |
| | | +----------------------------------------------------------------------------------------------- |
| | | * GouGuOPEN [ 左手研发,右手开源,未来可期!] |
| | | +----------------------------------------------------------------------------------------------- |
| | | * @Copyright (c) 2021~2024 http://www.gouguoa.com All rights reserved. |
| | | +----------------------------------------------------------------------------------------------- |
| | | * @Licensed 勾股OA,开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息 |
| | | +----------------------------------------------------------------------------------------------- |
| | | * @Author 勾股工作室 <hdm58@qq.com> |
| | | +----------------------------------------------------------------------------------------------- |
| | | */ |
| | | |
| | | namespace app\user\validate; |
| | | use think\facade\Db; |
| | | use think\Validate; |
| | | |
| | | class WorkPlanCheck extends Validate |
| | | { |
| | | // 自定义验证规则 |
| | | protected function checkUnique($value, $rule, $data) |
| | | { |
| | | [$table, $field, $id] = explode(',', $rule); |
| | | $idField = $id ?: 'id'; |
| | | $idValue = $data[$idField] ?? null; |
| | | $map = [ |
| | | [$field, '=', $value], |
| | | ]; |
| | | if (!is_null($idValue)) { |
| | | $map[] = [$idField, '<>', $idValue]; |
| | | } |
| | | return !Db::name(name: $table)->where($map)->count(); |
| | | } |
| | | protected $rule = [ |
| | | 'name' => 'require|checkUnique:AttendanceWorkPlan,name,id', |
| | | 'id' => 'require' |
| | | ]; |
| | | |
| | | protected $message = [ |
| | | 'name.require' => '班次名称不能为空', |
| | | 'name.checkUnique' => '同样的班次名称已经存在', |
| | | 'id.require' => '缺少更新条件', |
| | | ]; |
| | | |
| | | protected $scene = [ |
| | | 'add' => ['name'], |
| | | 'edit' => ['name', 'id'], |
| | | ]; |
| | | } |
New file |
| | |
| | | {extend name="../../base/view/common/base" /} |
| | | <!-- 主体 --> |
| | | {block name="body"} |
| | | <form class="layui-form p-4"> |
| | | <h3 class="pb-3">班次</h3> |
| | | {if condition="$id eq 0"} |
| | | <table class="layui-table"> |
| | | <tr> |
| | | <td class="layui-td-gray">班次名称<font>*</font></td> |
| | | <td colspan="3"> |
| | | <input |
| | | type="text" |
| | | name="name" |
| | | lay-verify="required" |
| | | autocomplete="off" |
| | | placeholder="请输入班次名称" |
| | | lay-reqText="请输入班次名称" |
| | | class="layui-input" |
| | | /> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="layui-td-gray">时间设置<font>*</font></td> |
| | | <td colspan="5"> |
| | | <table |
| | | id="timeBox" |
| | | class="layui-table layui-table-min" |
| | | style="margin: 0" |
| | | > |
| | | <tr> |
| | | <th width="180">上班时间</th> |
| | | <th width="100">上班是否打卡</th> |
| | | <th width="180">下班时间</th> |
| | | <th width="100">下班是否打卡</th> |
| | | <th>打卡时段</th> |
| | | <th width="60">操作</th> |
| | | </tr> |
| | | <tr class="timeItem"> |
| | | <td> |
| | | <input |
| | | type="text" |
| | | class="layui-input tool-time" |
| | | data-type="time" |
| | | data-format="HH:mm" |
| | | name="begin_time[]" |
| | | lay-verify="required" |
| | | placeholder="请选择时间" |
| | | lay-reqText="请选择时间" |
| | | readonly |
| | | value="" |
| | | /> |
| | | </td> |
| | | <td style="text-align: left"> |
| | | <select |
| | | name="need_begin_check[]" |
| | | lay-verify="required" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">请选择</option> |
| | | <option value="1">是</option> |
| | | <option value="0">否</option> |
| | | </select> |
| | | </td> |
| | | <td> |
| | | <input |
| | | type="text" |
| | | class="layui-input tool-time" |
| | | data-type="time" |
| | | data-format="HH:mm" |
| | | name="end_time[]" |
| | | lay-verify="required" |
| | | placeholder="请选择时间" |
| | | lay-reqText="请选择时间" |
| | | readonly |
| | | |
| | | /> |
| | | </td> |
| | | <td style="text-align: left"> |
| | | <select |
| | | name="need_end_check[]" |
| | | lay-verify="required" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">请选择</option> |
| | | <option value="1">是</option> |
| | | <option value="0">否</option> |
| | | </select> |
| | | </td> |
| | | <td style="text-align: left"> |
| | | <div |
| | | style=" |
| | | display: flex; |
| | | line-height: 36px; |
| | | gap: 10px; |
| | | margin-bottom: 10px; |
| | | " |
| | | > |
| | | <span>上班前</span> |
| | | <select |
| | | name="check_begin_start_time[]" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">未设置</option> |
| | | <option value="10">10分钟</option> |
| | | <option value="30">半小时</option> |
| | | <option value="60">一小时</option> |
| | | </select> |
| | | <span>→ 上班后</span> |
| | | <select |
| | | name="check_begin_end_time[]" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">未设置</option> |
| | | <option value="10">10分钟</option> |
| | | <option value="30">半小时</option> |
| | | <option value="60">一小时</option> |
| | | </select> |
| | | </div> |
| | | <div style="display: flex; line-height: 36px; gap: 10px"> |
| | | <span>下班前</span> |
| | | <select |
| | | name="check_end_start_time[]" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">未设置</option> |
| | | <option value="10">10分钟</option> |
| | | <option value="30">半小时</option> |
| | | <option value="60">一小时</option> |
| | | </select> |
| | | <span>→ 下班后</span> |
| | | <select |
| | | name="check_end_end_time[]" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">未设置</option> |
| | | <option value="10">10分钟</option> |
| | | <option value="30">半小时</option> |
| | | <option value="60">一小时</option> |
| | | </select> |
| | | </div> |
| | | </td> |
| | | <td> |
| | | <a |
| | | class="layui-btn layui-btn-danger layui-btn-xs" |
| | | data-id="0" |
| | | lay-event="del" |
| | | >删除</a |
| | | > |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | <div class="pt-2"> |
| | | <button class="layui-btn layui-btn-sm" type="button" id="addTimeBtn"> |
| | | + 上下班时间选项 |
| | | </button> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="layui-td-gray">弹性打卡</td> |
| | | <td colspan="3" style="display: flex; line-height: 36px; gap: 10px"> |
| | | <p>上班后</p> |
| | | <select |
| | | name="check_begin_bounce" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">未设置</option> |
| | | <option value="5">5分钟</option> |
| | | <option value="10">10分钟</option> |
| | | <option value="30">半小时</option> |
| | | </select> |
| | | <p>下班前</p> |
| | | <select |
| | | name="check_end_bounce" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">未设置</option> |
| | | <option value="5">5分钟</option> |
| | | <option value="10">10分钟</option> |
| | | <option value="30">半小时</option> |
| | | </select> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | {else/} |
| | | <table class="layui-table layui-table-form"> |
| | | <tr> |
| | | <td class="layui-td-gray">班次名称<font>*</font></td> |
| | | <td> |
| | | <input |
| | | type="text" |
| | | name="name" |
| | | value="{$detail.name}" |
| | | lay-verify="required" |
| | | autocomplete="off" |
| | | placeholder="请输入班次名称" |
| | | lay-reqText="请输入班次名称" |
| | | class="layui-input" |
| | | /> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="layui-td-gray">时间设置<font>*</font></td> |
| | | <td colspan="5"> |
| | | <table |
| | | id="timeBox" |
| | | class="layui-table layui-table-min" |
| | | style="margin: 0" |
| | | > |
| | | <tr> |
| | | <th width="180">上班时间</th> |
| | | <th width="100">上班是否打卡</th> |
| | | <th width="180">下班时间</th> |
| | | <th width="100">下班是否打卡</th> |
| | | <th>打卡时段</th> |
| | | <th width="60">操作</th> |
| | | </tr> |
| | | {volist name="$detail.times" id="val"} |
| | | <tr class="timeItem"> |
| | | <td> |
| | | <input |
| | | type="text" |
| | | class="layui-input tool-time" |
| | | data-type="time" |
| | | data-format="HH:mm" |
| | | name="begin_time[]" |
| | | lay-verify="required" |
| | | placeholder="请选择时间" |
| | | lay-reqText="请选择时间" |
| | | readonly |
| | | value="{$val.begin_time}" |
| | | /> |
| | | </td> |
| | | <td style="text-align: left"> |
| | | <select |
| | | name="need_begin_check[]" |
| | | lay-verify="required" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">请选择</option> |
| | | <option value="1" {eq name="1" value="$val.need_begin_check"} selected{/eq}>是</option> |
| | | <option value="0" {eq name="0" value="$val.need_begin_check"} selected{/eq}>否</option> |
| | | </select> |
| | | </td> |
| | | <td> |
| | | <input |
| | | type="text" |
| | | class="layui-input tool-time" |
| | | data-type="time" |
| | | data-format="HH:mm" |
| | | name="end_time[]" |
| | | lay-verify="required" |
| | | placeholder="请选择时间" |
| | | lay-reqText="请选择时间" |
| | | readonly |
| | | value="{$val.end_time}" |
| | | /> |
| | | </td> |
| | | <td style="text-align: left"> |
| | | <select |
| | | name="need_end_check[]" |
| | | lay-verify="required" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">请选择</option> |
| | | <option value="1" {eq name="1" value="$val.need_end_check"} selected{/eq}>是</option> |
| | | <option value="0" {eq name="0" value="$val.need_end_check"} selected{/eq}>否</option> |
| | | </select> |
| | | </td> |
| | | <td style="text-align: left"> |
| | | <div |
| | | style=" |
| | | display: flex; |
| | | line-height: 36px; |
| | | gap: 10px; |
| | | margin-bottom: 10px; |
| | | " |
| | | > |
| | | <span>上班前</span> |
| | | <select |
| | | name="check_begin_start_time[]" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">未设置</option> |
| | | <option value="10" {eq name="10" value="$val.check_begin_start_time"} selected{/eq}>10分钟</option> |
| | | <option value="30" {eq name="30" value="$val.check_begin_start_time"} selected{/eq}>半小时</option> |
| | | <option value="60" {eq name="60" value="$val.check_begin_start_time"} selected{/eq}>一小时</option> |
| | | </select> |
| | | <span>→ 上班后</span> |
| | | <select |
| | | name="check_begin_end_time[]" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">未设置</option> |
| | | <option value="10" {eq name="10" value="$val.check_begin_end_time"} selected{/eq}>10分钟</option> |
| | | <option value="30" {eq name="30" value="$val.check_begin_end_time"} selected{/eq}>半小时</option> |
| | | <option value="60" {eq name="60" value="$val.check_begin_end_time"} selected{/eq}>一小时</option> |
| | | </select> |
| | | </div> |
| | | <div style="display: flex; line-height: 36px; gap: 10px"> |
| | | <span>下班前</span> |
| | | <select |
| | | name="check_end_start_time[]" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">未设置</option> |
| | | <option value="10" {eq name="10" value="$val.check_end_start_time"} selected{/eq}>10分钟</option> |
| | | <option value="30" {eq name="30" value="$val.check_end_start_time"} selected{/eq}>半小时</option> |
| | | <option value="60" {eq name="60" value="$val.check_end_start_time"} selected{/eq}>一小时</option> |
| | | |
| | | </select> |
| | | <span>→ 下班后</span> |
| | | <select |
| | | name="check_end_end_time[]" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">未设置</option> |
| | | <option value="10" {eq name="10" value="$val.check_end_end_time"} selected{/eq}>10分钟</option> |
| | | <option value="30" {eq name="30" value="$val.check_end_end_time"} selected{/eq}>半小时</option> |
| | | <option value="60" {eq name="60" value="$val.check_end_end_time"} selected{/eq}>一小时</option> |
| | | |
| | | </select> |
| | | </div> |
| | | </td> |
| | | <td> |
| | | <input type="hidden" name="time_id[]" class="layui-input" value="{$val.id}"> |
| | | <a |
| | | class="layui-btn layui-btn-danger layui-btn-xs" |
| | | data-id="{$val.id}" |
| | | lay-event="del" |
| | | >删除</a |
| | | > |
| | | </td> |
| | | </tr> |
| | | {/volist} |
| | | </table> |
| | | <div class="pt-2"> |
| | | <button class="layui-btn layui-btn-sm" type="button" id="addTimeBtn"> |
| | | + 上下班时间选项 |
| | | </button> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="layui-td-gray">弹性打卡</td> |
| | | <td colspan="3" style="display: flex; line-height: 36px; gap: 10px"> |
| | | <p>上班后</p> |
| | | <select |
| | | name="check_begin_bounce" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">未设置</option> |
| | | |
| | | <option value="5" {eq name="5" value="$detail.check_begin_bounce"} selected{/eq}>5分钟</option> |
| | | <option value="10" {eq name="10" value="$detail.check_begin_bounce"} selected{/eq}>10分钟</option> |
| | | <option value="30" {eq name="30" value="$detail.check_begin_bounce"} selected{/eq}>半小时</option> |
| | | </select> |
| | | <p>下班前</p> |
| | | <select |
| | | name="check_end_bounce" |
| | | lay-reqText="请选择" |
| | | > |
| | | <option value="">未设置</option> |
| | | <option value="5" {eq name="5" value="$detail.check_end_bounce"} selected{/eq}>5分钟</option> |
| | | <option value="10" {eq name="10" value="$detail.check_end_bounce"} selected{/eq}>10分钟</option> |
| | | <option value="30" {eq name="30" value="$detail.check_end_bounce"} selected{/eq}>半小时</option> |
| | | </select> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | {/if} |
| | | <div class="pt-4"> |
| | | <input type="hidden" name="id" value="{$id}" /> |
| | | <button |
| | | class="layui-btn layui-btn-normal" |
| | | lay-submit="" |
| | | lay-filter="webform" |
| | | > |
| | | 立即提交 |
| | | </button> |
| | | <button type="reset" class="layui-btn layui-btn-primary">重置</button> |
| | | </div> |
| | | </form> |
| | | {/block} |
| | | <!-- /主体 --> |
| | | |
| | | <!-- 脚本 --> |
| | | {block name="script"} |
| | | <script> |
| | | const moduleInit = ["tool"]; |
| | | function gouguInit() { |
| | | |
| | | //添加报销信息表格 |
| | | $('#addTimeBtn').on('click',function(){ |
| | | var html = ''; |
| | | html += '<tr class="timeItem">\ |
| | | <td>\ |
| | | <input\ |
| | | type="text"\ |
| | | class="layui-input tool-time"\ |
| | | data-type="time"\ |
| | | data-format="HH:mm"\ |
| | | name="begin_time[]"\ |
| | | lay-verify="required"\ |
| | | placeholder="请选择时间"\ |
| | | lay-reqText="请选择时间"\ |
| | | readonly\ |
| | | value=""\ |
| | | />\ |
| | | </td>\ |
| | | <td style="text-align: left">\ |
| | | <select\ |
| | | name="need_begin_check[]"\ |
| | | lay-verify="required"\ |
| | | lay-reqText="请选择"\ |
| | | >\ |
| | | <option value="">请选择</option>\ |
| | | <option value="1">是</option>\ |
| | | <option value="0">否</option>\ |
| | | </select>\ |
| | | </td>\ |
| | | <td>\ |
| | | <input\ |
| | | type="text"\ |
| | | class="layui-input tool-time"\ |
| | | data-type="time"\ |
| | | data-format="HH:mm"\ |
| | | name="end_time[]"\ |
| | | lay-verify="required"\ |
| | | placeholder="请选择时间"\ |
| | | lay-reqText="请选择时间"\ |
| | | readonly\ |
| | | value=""\ |
| | | />\ |
| | | </td>\ |
| | | <td style="text-align: left">\ |
| | | <select\ |
| | | name="need_end_check[]"\ |
| | | lay-verify="required"\ |
| | | lay-reqText="请选择"\ |
| | | >\ |
| | | <option value="">请选择</option>\ |
| | | <option value="1">是</option>\ |
| | | <option value="0">否</option>\ |
| | | </select>\ |
| | | </td>\ |
| | | <td style="text-align: left">\ |
| | | <div\ |
| | | style="\ |
| | | display: flex;\ |
| | | line-height: 36px;\ |
| | | gap: 10px;\ |
| | | margin-bottom: 10px;\ |
| | | "\ |
| | | >\ |
| | | <span>上班前</span>\ |
| | | <select\ |
| | | name="check_begin_start_time[]"\ |
| | | lay-reqText="请选择"\ |
| | | >\ |
| | | <option value="">未设置</option>\ |
| | | <option value="10">10分钟</option>\ |
| | | <option value="30">半小时</option>\ |
| | | <option value="60">一小时</option>\ |
| | | </select>\ |
| | | <span>→ 上班后</span>\ |
| | | <select\ |
| | | name="check_begin_end_time[]"\ |
| | | lay-reqText="请选择"\ |
| | | >\ |
| | | <option value="">未设置</option>\ |
| | | <option value="10">10分钟</option>\ |
| | | <option value="30">半小时</option>\ |
| | | <option value="60">一小时</option>\ |
| | | </select>\ |
| | | </div>\ |
| | | <div style="display: flex; line-height: 36px; gap: 10px">\ |
| | | <span>下班前</span>\ |
| | | <select\ |
| | | name="check_end_start_time[]"\ |
| | | lay-reqText="请选择"\ |
| | | >\ |
| | | <option value="">未设置</option>\ |
| | | <option value="10">10分钟</option>\ |
| | | <option value="30">半小时</option>\ |
| | | <option value="60">一小时</option>\ |
| | | </select>\ |
| | | <span>→ 下班后</span>\ |
| | | <select\ |
| | | name="check_end_end_time[]"\ |
| | | lay-reqText="请选择"\ |
| | | >\ |
| | | <option value="">未设置</option>\ |
| | | <option value="10">10分钟</option>\ |
| | | <option value="30">半小时</option>\ |
| | | <option value="60">一小时</option>\ |
| | | </select>\ |
| | | </div>\ |
| | | </td>\ |
| | | <td>\ |
| | | <input type="hidden" name="time_id[]" class="layui-input" value="0">\ |
| | | <a\ |
| | | class="layui-btn layui-btn-danger layui-btn-xs"\ |
| | | data-id="0"\ |
| | | lay-event="del"\ |
| | | >删除</a\ |
| | | >\ |
| | | </td>\ |
| | | </tr>'; |
| | | $("#timeBox").append(html); |
| | | form.render(); |
| | | }); |
| | | |
| | | $('#timeBox').on('click', '[lay-event="del"]', function() { |
| | | if($('.timeItem').length<2){ |
| | | layer.msg('至少保留一个时间设置'); |
| | | return false; |
| | | } |
| | | var that=$(this); |
| | | var _id = that.data('id'); |
| | | if (_id > 0) { |
| | | layer.confirm('确定删除该时间设置?', { |
| | | icon: 3, |
| | | title: '提示' |
| | | }, function(index) { |
| | | $.ajax({ |
| | | url: "/user/api/del_work_plan_time", |
| | | type:'post', |
| | | data: {id: _id}, |
| | | success: function(res) { |
| | | layer.msg(res.msg); |
| | | if (res.code == 0) { |
| | | that.parents(".timeItem").remove(); |
| | | } |
| | | } |
| | | }) |
| | | layer.close(index); |
| | | }); |
| | | } else { |
| | | $(this).parents(".timeItem").remove(); |
| | | } |
| | | }); |
| | | |
| | | var form = layui.form, |
| | | tool = layui.tool; |
| | | form.on("submit(webform)", function (data) { |
| | | let callback = function (e) { |
| | | layer.msg(e.msg); |
| | | if (e.code == 0) { |
| | | setTimeout(function () { |
| | | parent.location.reload(); |
| | | }, 1000); |
| | | } |
| | | }; |
| | | tool.post("/user/workPlan/add", data.field, callback); |
| | | return false; |
| | | }); |
| | | //监听提交 |
| | | form.on("submit(webform)", function (data) { |
| | | let callback = function (e) { |
| | | layer.msg(e.msg); |
| | | if (e.code == 0) { |
| | | tool.sideClose(1000); |
| | | } |
| | | }; |
| | | tool.post("/user/workPlan/add", data.field, callback); |
| | | return false; |
| | | }); |
| | | } |
| | | </script> |
| | | {/block} |
| | | <!-- /脚本 --> |
New file |
| | |
| | | {extend name="../../base/view/common/base" /} |
| | | <!-- 主体 --> |
| | | {block name="body"} |
| | | <div class="p-page"> |
| | | <table class="layui-hide" id="test" lay-filter="test"></table> |
| | | </div> |
| | | |
| | | <script type="text/html" id="status"> |
| | | <i |
| | | class="layui-icon {{# if(d.status == 1){ }}green layui-icon-ok{{# } else { }}yellow layui-icon-close{{# } }}" |
| | | ></i> |
| | | </script> |
| | | <script type="text/html" id="toolbarDemo"> |
| | | <div class="layui-btn-container"> |
| | | <button class="layui-btn layui-btn-sm" lay-event="add">+ 添加班次</button> |
| | | </div> |
| | | </script> |
| | | <script type="text/html" id="barDemo"> |
| | | <div class="layui-btn-group"> |
| | | <button class="layui-btn layui-btn-xs" lay-event="edit">编辑</button |
| | | ><button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"> |
| | | 删除 |
| | | </button> |
| | | </div> |
| | | </script> |
| | | |
| | | {/block} |
| | | <!-- /主体 --> |
| | | |
| | | <!-- 脚本 --> |
| | | {block name="script"} |
| | | <script> |
| | | const moduleInit = ["tool"]; |
| | | function gouguInit() { |
| | | var table = layui.table, |
| | | tool = layui.tool; |
| | | layui.pageTable = table.render({ |
| | | elem: "#test", |
| | | title: "班次列表", |
| | | toolbar: "#toolbarDemo", |
| | | defaultToolbar: false, |
| | | url: "/user/workPlan/index", //数据接口 |
| | | page: false, //开启分页 |
| | | cols: [ |
| | | [ |
| | | { |
| | | field: "name", |
| | | title: "班次名称", |
| | | align: "center", |
| | | width: 300 |
| | | }, |
| | | { |
| | | field: "times", |
| | | title: "考勤时间", |
| | | templet: function (d) { |
| | | var html = ""; |
| | | if (d.times && d.times.length) { |
| | | for (var i = 0; i < d.times.length; i++) { |
| | | html += |
| | | "<span style='margin-right: 30px'>" + |
| | | d.times[i].begin_time + |
| | | " - " + |
| | | d.times[i].end_time + |
| | | "</span>"; |
| | | } |
| | | } else { |
| | | html = "-"; |
| | | } |
| | | return html; |
| | | } |
| | | }, |
| | | { |
| | | field: "create_time", |
| | | title: "创建时间", |
| | | align: "center", |
| | | width: 200 |
| | | }, |
| | | { |
| | | field: "update_time", |
| | | title: "更新时间", |
| | | align: "center", |
| | | width: 200, |
| | | templet: function (d) { |
| | | if (d.update_time) { |
| | | return d.update_time; |
| | | } else { |
| | | return "-"; |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | field: "right", |
| | | title: "操作", |
| | | toolbar: "#barDemo", |
| | | width: 120, |
| | | align: "center" |
| | | } |
| | | ] |
| | | ] |
| | | }); |
| | | |
| | | //表头工具栏事件 |
| | | table.on("toolbar(test)", function (obj) { |
| | | if (obj.event === "add") { |
| | | tool.side("/user/workPlan/add"); |
| | | return; |
| | | } |
| | | }); |
| | | //监听行工具事件 |
| | | table.on("tool(test)", function (obj) { |
| | | var data = obj.data; |
| | | if (obj.event === "edit") { |
| | | tool.side("/user/workPlan/add?id=" + data.id); |
| | | return; |
| | | } |
| | | if (obj.event === "del") { |
| | | layer.confirm( |
| | | "您确定要删除该班次", |
| | | { |
| | | icon: 3, |
| | | title: "提示" |
| | | }, |
| | | function (index) { |
| | | let callback = function (e) { |
| | | layer.msg(e.msg); |
| | | if (e.code == 0) { |
| | | obj.del(); |
| | | } |
| | | }; |
| | | tool.delete("/user/workPlan/delete", { id: obj.data.id }, callback); |
| | | layer.close(index); |
| | | } |
| | | ); |
| | | } |
| | | }); |
| | | } |
| | | </script> |
| | | {/block} |
| | | <!-- /脚本 --> |