app/finance/controller/Expense.php | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/user/controller/Api.php | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/user/controller/Attendance.php | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/user/controller/WorkPlan.php | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/user/validate/WorkPlanCheck.php | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/user/view/work_plan/add.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/user/view/work_plan/index.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/finance/controller/Expense.php
@@ -104,8 +104,7 @@ } $list = $this->model->datalist($param,$where,$whereOr); return table_assign(0, '', $list); } else{ } else { return view(); } } @@ -123,13 +122,11 @@ $cost = 0; if ($amountData == 0) { return to_assign(1,'报销金额不完善'); } else{ } else { foreach ($amountData as $key => $value) { if ($value == 0) { return to_assign(1,'第' . ($key + 1) . '条报销选项的金额不能为零'); } else{ } else { $cost+=$value; } } @@ -191,8 +188,7 @@ return view('qiye@/finance/view_expense'); } return view(); } else{ } else { return view(EEEOR_REPORTING,['code'=>404,'warning'=>'找不到页面']); } } app/user/controller/Api.php
@@ -29,4 +29,15 @@ } } //删除班次考勤时间 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, "删除失败"); } } } app/user/controller/Attendance.php
@@ -15,12 +15,13 @@ 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 { @@ -33,20 +34,17 @@ { $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); 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] = [ @@ -56,28 +54,28 @@ // ]; // } // Db::name('PositionGroup')->strict(false)->field(true)->insertAll($data); // add_log('edit', $param['id'], $param); // //清除菜单\权限缓存 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); // 提交事务 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, @@ -86,22 +84,22 @@ // ]; // } // 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()); // } // } 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'])) { @@ -110,10 +108,10 @@ // $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(); } } app/user/controller/WorkPlan.php
New file @@ -0,0 +1,166 @@ <?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, "删除失败"); } } } app/user/validate/WorkPlanCheck.php
New file @@ -0,0 +1,49 @@ <?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'], ]; } app/user/view/work_plan/add.html
New file @@ -0,0 +1,572 @@ {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} <!-- /脚本 --> app/user/view/work_plan/index.html
New file @@ -0,0 +1,139 @@ {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} <!-- /脚本 -->