From 4d415fadc7a5b17f88646cffc343f98370f3b026 Mon Sep 17 00:00:00 2001 From: YM <479443481@qq.com> Date: 星期二, 04 三月 2025 21:26:14 +0800 Subject: [PATCH] 添加考勤组 --- app/user/view/attendance/index.html | 113 ++++++++++++++++++ app/user/view/attendance/add.html | 117 +++++++++++++++++++ app/user/controller/Attendance.php | 121 ++++++++++++++++++++ config/database.php | 2 4 files changed, 352 insertions(+), 1 deletions(-) diff --git a/app/user/controller/Attendance.php b/app/user/controller/Attendance.php new file mode 100644 index 0000000..7bf1907 --- /dev/null +++ b/app/user/controller/Attendance.php @@ -0,0 +1,121 @@ +<?php + +declare (strict_types = 1); + +namespace app\user\controller; + +use app\base\BaseController; +// use app\user\validate\PositionCheck; +use think\exception\ValidateException; +use think\facade\Db; +use think\facade\View; + +class Attendance extends BaseController +{ + 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); + } + $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) { + // 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()); + // } + // } + return to_assign(); + } + else{ + // $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['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'] = 1; + // } else { + // $val['checked'] = 0; + // } + // } + // View::assign('detail', $detail); + // } + // View::assign('group', $group); + // View::assign('id', $id); + return view(); + } + } + +} diff --git a/app/user/view/attendance/add.html b/app/user/view/attendance/add.html new file mode 100644 index 0000000..668246c --- /dev/null +++ b/app/user/view/attendance/add.html @@ -0,0 +1,117 @@ +{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> + <input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="璇疯緭鍏ュ矖浣嶅悕绉�" lay-reqText="璇疯緭鍏ュ矖浣嶅悕绉�" class="layui-input"> + </td> + <td class="layui-td-gray-3">宀椾綅宸ユ椂鍗曚环(鍏�)<font>*</font></td> + <td> + <input type="text" name="work_price" lay-verify="required|number" placeholder="璇疯緭鍏ュ矖浣嶅伐鏃跺崟浠�" lay-reqText="璇疯緭鍏ュ矖浣嶅伐鏃跺崟浠�" autocomplete="off" class="layui-input"> + </td> + </tr> + <tr> + <td class="layui-td-gray">鐘舵��<font>*</font></td> + <td colspan="3"> + <input type="radio" name="status" value="1" title="姝e父" checked> + <input type="radio" name="status" value="0" title="绂佺敤"> + </td> + </tr> + <tr> + <td class="layui-td-gray">鏉冮檺瑙掕壊<font>*</font></td> + <td colspan="3"> + {volist name="$group" id="v"} + <input type="checkbox" name="group_id[]" title="{$v.title}" value="{$v.id}" lay-skin="primary"> + {/volist} + </td> + </tr> + <tr> + <td class="layui-td-gray">宀椾綅澶囨敞</td> + <td colspan="3"> + <textarea name="remark" placeholder="璇疯緭鍏ュ矖浣嶅娉�" class="layui-textarea"></textarea> + </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="title" value="{$detail.title}" lay-verify="required" autocomplete="off" placeholder="璇疯緭鍏ュ矖浣嶅悕绉�" lay-reqText="璇疯緭鍏ュ矖浣嶅悕绉�" class="layui-input"> + </td> + <td class="layui-td-gray-3">宀椾綅宸ユ椂鍗曚环(鍏�)<font>*</font></td> + <td> + <input type="text" name="work_price" value="{$detail.work_price}" lay-verify="required|number" placeholder="璇疯緭鍏ュ矖浣嶅伐鏃跺崟浠�" lay-reqText="璇疯緭鍏ュ矖浣嶅伐鏃跺崟浠�" autocomplete="off" class="layui-input"> + </td> + </tr> + <tr> + <td class="layui-td-gray">鐘舵��<font>*</font></td> + <td colspan="3"> + <input type="radio" name="status" value="1" title="姝e父" {eq name="$detail.status" value="1"}checked{/eq}> + <input type="radio" name="status" value="0" title="绂佹" {eq name="$detail.status" value="0"}checked{/eq}> + </td> + </tr> + <tr> + <td class="layui-td-gray">鏉冮檺瑙掕壊<font>*</font></td> + <td colspan="3"> + {volist name="$group" id="v"} + <input type="checkbox" name="group_id[]" title="{$v.title}" value="{$v.id}" {eq name="$v.checked" value="1" }checked{/eq} lay-skin="primary"> + {/volist} + </td> + </tr> + <tr> + <td class="layui-td-gray">宀椾綅澶囨敞</td> + <td colspan="3"> + <textarea name="remark" placeholder="璇疯緭鍏ュ矖浣嶅娉�" class="layui-textarea">{$detail.remark}</textarea> + </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() { + 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/position/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/position/add", data.field, callback); + return false; + }); + } + +</script> +{/block} +<!-- /鑴氭湰 --> \ No newline at end of file diff --git a/app/user/view/attendance/index.html b/app/user/view/attendance/index.html new file mode 100644 index 0000000..5bdd46c --- /dev/null +++ b/app/user/view/attendance/index.html @@ -0,0 +1,113 @@ +{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/attendance/index", //鏁版嵁鎺ュ彛 + page: false, //寮�鍚垎椤� + cols: [ + [ + { + field: "title", + title: "鍚嶇О", + align: "center" + }, + { + field: "peopleNum", + title: "浜烘暟", + width: 120 + }, + { + field: "type", + title: "绫诲瀷", + width: 120 + }, + { + field: "time", + title: "鑰冨嫟鏃堕棿" + }, + { + field: "right", + title: "鎿嶄綔", + toolbar: "#barDemo", + width: 120, + align: "center" + } + ] + ] + }); + + //琛ㄥご宸ュ叿鏍忎簨浠� + table.on("toolbar(test)", function (obj) { + if (obj.event === "add") { + tool.side("/user/attendance/add"); + return; + } + }); + //鐩戝惉琛屽伐鍏蜂簨浠� + table.on("tool(test)", function (obj) { + var data = obj.data; + if (obj.event === "edit") { + tool.side("/user/attendance/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/attendance/delete", { id: obj.data.id }, callback); + layer.close(index); + } + ); + } + }); + } +</script> +{/block} +<!-- /鑴氭湰 --> diff --git a/config/database.php b/config/database.php index 1b9ac73..bd37f40 100644 --- a/config/database.php +++ b/config/database.php @@ -16,7 +16,7 @@ // 鏁版嵁搴撶被鍨� 'type' => 'mysql', // 鏈嶅姟鍣ㄥ湴鍧� - 'hostname' => '127.0.0.1', + 'hostname' => '192.168.3.145', // 鏁版嵁搴撳悕 'database' => 'oa', // 鐢ㄦ埛鍚� -- Gitblit v1.9.1