b41630280b49408824feb333849d51d83fa06fca..c4782840b8893dcc0bcf262153374237f40f6b9e
2025-04-10 YM
1
c47828 对比 | 目录
2025-04-10 闫增涛
正式版修改:替换图标,隐藏多余模块、按钮
298f8b 对比 | 目录
12个文件已修改
165 ■■■■■ 已修改文件
app/adm/view/flow/catelist.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/base/view/common/base.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/home/view/index/index.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/home/view/index/layout_action.html 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/home/view/index/layout_note.html 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/home/view/index/layout_system.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/home/view/login/index.html 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/home/view/role/add.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/user/controller/Attendance.php 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/user/view/attendance/index.html 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
public/static/home/images/syslogo.png 补丁 | 查看 | 原始文档 | blame | 历史
app/adm/view/flow/catelist.html
@@ -4,11 +4,11 @@
<div class="p-page">
    <table class="layui-hide" id="test" lay-filter="test"></table>
</div>
<script type="text/html" id="toolbarDemo">
<!-- <script type="text/html" id="toolbarDemo">
  <div class="layui-btn-container">
      <button class="layui-btn layui-btn-sm side-a" type="button" data-href="/adm/flow/cate_add">+ 添加审批类型</button>
  </div>
</script>
</script> -->
{/block}
<!-- /主体 -->
app/base/view/common/base.html
@@ -49,9 +49,9 @@
    勾股工作室 <hdm58@qq.com>
    +------------------------------------------------------------------------------------------
    -->
    {block name="copyright"}
    <!-- {block name="copyright"}
        <div class="copyright">Copyright © 2022-2024 勾股OA - {:CMS_VERSION}  ,Powered by GouguOPEN<a href="https://www.gougucms.com" target="_blank">官网</a><a href="https://blog.gougucms.com" target="_blank">社区</a><a href="https://blog.gougucms.com/home/book/detail/bid/3/id/7.html" target="_blank">文档</a></div></div>
    {/block}
    {/block} -->
    <!-- /版权标识 -->
</body>
</html>
app/home/view/index/index.html
@@ -16,12 +16,12 @@
                    <span class="gg-head-item gg-head-cache">
                        <a href="javascript:;" gg-event="cache" data-href="/api/index/cache_clear" title="清空缓存"><i class="layui-icon layui-icon-fonts-clear"></i></a>
                    </span>
                    <span class="gg-head-item gg-head-home">
                    <!-- <span class="gg-head-item gg-head-home">
                        <a href="https://www.gougucms.com/home/pages/detail/s/gouguoa.html" target="_blank" title="前台首页"><i class="layui-icon layui-icon-website"></i></a>
                    </span>
                    <span class="gg-head-item gg-head-home">
                        <a class="tab-a" data-href="/crud/crud/index" data-title="简单CRUD" title="简单CRUD"><i class="layui-icon layui-icon-template"></i></a>
                    </span>
                    </span> -->
                </div>
                <div class="layui-layout-right">
app/home/view/index/layout_action.html
@@ -1,3 +1,9 @@
<style>
    .layui-timeline {
        height: 100%;
        overflow: auto;
    }
</style>
<div class="layui-row layui-col-space16">
    <div class="layui-col-md12">
        <div class="layui-card">
app/home/view/index/layout_note.html
@@ -11,15 +11,15 @@
<script>
//公告
function layoutNote(table){
    table.render({
        elem: '#Note'
        , url: "/home/api/get_note_list" //数据接口
        , page: false //开启分页
        , cols: [[ //表头
            { field: 'cate_title', title: '公告分类', align: 'center','width': 90},
            { field: 'title', title: '公告标题',templet: '<div><a data-href="/oa/note/view/id/{{d.id}}.html" class="side-a">{{d.title}}</a></div>'},
            { field: 'create_time', title: '发布时间', align: 'center','width': 150}
        ]]
    });
    // table.render({
    //     elem: '#Note'
    //     , url: "/home/api/get_note_list" //数据接口
    //     , page: false //开启分页
    //     , cols: [[ //表头
    //         { field: 'cate_title', title: '公告分类', align: 'center','width': 90},
    //         { field: 'title', title: '公告标题',templet: '<div><a data-href="/oa/note/view/id/{{d.id}}.html" class="side-a">{{d.title}}</a></div>'},
    //         { field: 'create_time', title: '发布时间', align: 'center','width': 150}
    //     ]]
    // });
}
</script>
app/home/view/index/layout_system.html
@@ -130,5 +130,6 @@
    dom.addEventListener("click", () => {
      layer.msg("打卡成功");
    });
  }
</script>
app/home/view/login/index.html
@@ -61,20 +61,7 @@
                    </div>
                </div>
            </div>
            <div class="foot">
                <!-- 版权标识 -->
                <!--
                +------------------------------------------------------------------------------------------
                勾股OA系统开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息
                +------------------------------------------------------------------------------------------
                如需去除版权标识使用的,请微信(hdm588)联系作者去除,开源不易,请多支持!
                +------------------------------------------------------------------------------------------
                勾股工作室 <hdm58@qq.com>
                +------------------------------------------------------------------------------------------
                -->
                Copyright © 2022-2024 勾股OA - {:CMS_VERSION}  ,Powered by GouguOPEN,<a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow" style="color:#458BF3">{:get_system_config('web','icp')}</a><a target="_blank" rel="nofollow" style="margin-left: 15px;color:#458BF3" href="http://www.beian.gov.cn/portal/registerSystemInfo"> {:get_system_config('web','beian')}</a>
                <!-- /版权标识 -->
            </div>
        </div>
        <script src="{__GOUGU__}/layui/layui.js?v={:get_system_config('system','version')}"></script>
        <script type="text/javascript">
app/home/view/role/add.html
@@ -93,7 +93,7 @@
                {/volist}
            </td>
        </tr>
        <tr>
        <!-- <tr>
            <td class="layui-td-gray-3" style="vertical-align: top;">手机工作台展示模块</td>
            <td colspan="3">
                {volist name="mobile_menu" id="v"}
@@ -120,7 +120,7 @@
                    </div>
                {/volist}
            </td>
        </tr>
        </tr> -->
        <tr>
            <td class="layui-td-gray" style="vertical-align: top;">备注内容</td>
            <td colspan="3">
app/user/controller/Attendance.php
@@ -93,20 +93,38 @@
                // 启动事务
                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);
                    $setData = [
                        'name' => $param['name'],
                        'type' => $param['type'],
                        'is_del' => 0,
                        'create_time' => time(),
                        'mon_work_plan_id' => isset($param['work1']) && $param['work1'] == "on" && isset($param['mon_work_plan_id']) ? intval($param['mon_work_plan_id']) : 0,
                        'tue_work_plan_id' => isset($param['work2']) && $param['work2'] == "on" && isset($param['tue_work_plan_id']) ? intval($param['tue_work_plan_id']) : 0,
                        'wed_work_plan_id' => isset($param['work3']) && $param['work3'] == "on" && isset($param['wed_work_plan_id']) ? intval($param['wed_work_plan_id']) : 0,
                        'thur_work_plan_id' => isset($param['work4']) && $param['work4'] == "on" && isset($param['thur_work_plan_id']) ? intval($param['thur_work_plan_id']) : 0,
                        'fri_work_plan_id' => isset($param['work5']) && $param['work5'] == "on" && isset($param['fri_work_plan_id']) ? intval($param['fri_work_plan_id']) : 0,
                        'sat_work_plan_id' => isset($param['work6']) && $param['work6'] == "on" && isset($param['sat_work_plan_id']) ? intval($param['sat_work_plan_id']) : 0,
                        'sun_work_plan_id' => isset($param['work7']) && $param['work7'] == "on" && isset($param['sun_work_plan_id']) ? intval($param['sun_work_plan_id']) : 0,
                    ];
                    Db::name('AttendanceGroup')->where(['id' => $param['id']])->strict(false)->field(true)->update($setData);
                    // 删除用户关联
                    Db::name('AttendanceUserLink')->where(['group_id' => $param['id']])->delete();
                    // 删除时间
                    $specialDateIds = Db::name('AttendanceGroupSpecialDateLink')->where(['group_id' => $param['id']])->column('special_date_id');
                    Db::name('AttendanceSpecialDate')->where('id', 'in', $specialDateIds)->delete();
                    Db::name('AttendanceGroupSpecialDateLink')->where(['group_id' => $param['id']])->delete();
                    // 插入用户关联表
                    $this->model->insertUserLinks(intval($param['id']), $param['attendance_participants_id'], 1);
                    $this->model->insertUserLinks(intval($param['id']), $param['attendance_not_participants_id'], 2);
                    // 插入时间表
                    if (isset($param['necessaryTime'])) {
                        $this->model->insertSpecialDates(intval($param['id']), $param['necessaryTime'], 1);
                    }
                    if (isset($param['unNecessaryTime'])) {
                        $this->model->insertSpecialDates(intval($param['id']), $param['unNecessaryTime'], 2);
                    }
                    add_log('edit', $param['id'], $param);
                    //清除菜单\权限缓存
                    // clear_cache('adminMenu');
                    // clear_cache('adminRules');
                    // 提交事务
                    Db::commit();
                } catch (\Exception $e) {
@@ -207,8 +225,8 @@
                    $userName1[] = $value['userInfo']['name'];
                    $userId1[] = $value['userInfo']['id'];
                }
                $detail['attendance_participants'] = implode(",",$userName1);
                $detail['attendance_participants_id'] = implode(",",$userId1);
                $detail['attendance_participants'] = implode(",", $userName1);
                $detail['attendance_participants_id'] = implode(",", $userId1);
                $user2 = array_values(array_filter($mappingUsers, function ($item) {
                    return $item['type'] == 2;
                }));
@@ -219,8 +237,8 @@
                    $userName2[] = $value['userInfo']['name'];
                    $userName2[] = $value['userInfo']['id'];
                }
                $detail['attendance_not_participants'] = implode(",",$userName2);
                $detail['attendance_not_participants_id'] = implode(",",$userId2);
                $detail['attendance_not_participants'] = implode(",", $userName2);
                $detail['attendance_not_participants_id'] = implode(",", $userId2);
                // 获取关联的班次
                $detail['mon_work_plan'] = Db::name('AttendanceWorkPlan')->where(['id' => $detail['mon_work_plan_id']])->find();
                $mappingTimes = Db::name('AttendanceWorkPlanWorkTimeLink')->where(['work_plan_id' => $detail['mon_work_plan_id']])->column('work_time_id');
@@ -255,4 +273,16 @@
            return view();
        }
    }
    // 删除
    public function delete()
    {
        $id = get_params("id");
        if (Db::name('AttendanceGroup')->where('id', $id)->update(['is_del' => 1]) !== false) {
            add_log('delete', $id, [], '考勤组');
            return to_assign(0, "删除成功");
        } else {
            return to_assign(1, "删除失败");
        }
    }
}
app/user/view/attendance/index.html
@@ -75,53 +75,76 @@
              Object.keys(d.work_plan).forEach((key) => {
                var item = d.work_plan[key];
                var showTxt = "";
                var index = 0;
                if (key.indexOf("mon_") > -1) {
                  showTxt = "周一";
                  index = 1;
                }
                if (key.indexOf("tue_") > -1) {
                  showTxt = "周二";
                  index = 2;
                }
                if (key.indexOf("wed_") > -1) {
                  showTxt = "周三";
                  index = 3;
                }
                if (key.indexOf("thur_") > -1) {
                  showTxt = "周四";
                  index = 4;
                }
                if (key.indexOf("fri_") > -1) {
                  showTxt = "周五";
                  index = 5;
                }
                if (key.indexOf("sat_") > -1) {
                  showTxt = "周六";
                  index = 6;
                }
                if (key.indexOf("sun_") > -1) {
                  showTxt = "周日";
                  index = 7;
                }
                if (item.id) {
                  if (!planMap[item.id]) planMap[item.id] = { showTxt: [] };
                  if (!planMap[item.id])
                    planMap[item.id] = { showTxt: [], index: null };
                  planMap[item.id].times = item.times;
                  planMap[item.id].showTxt.push(showTxt);
                  if (planMap[item.id].index) {
                    if (planMap[item.id].index > index)
                      planMap[item.id].index = index;
                  } else {
                    planMap[item.id].index = index;
                  }
                } else {
                  if (!planMap["null"]) planMap["null"] = { showTxt: [] };
                  if (!planMap["null"]) planMap["null"] = { showTxt: [], index: 999 };
                  planMap.null.showTxt.push(showTxt);
                }
              });
              console.log(planMap, "planMap");
              // 根据班次分类显示时间
              var html_ = "";
              // 根据班次分类显示时间,并且根据周一到周日排序,休息放在最后
              var infoList = [];
              Object.keys(planMap).forEach((key) => {
                infoList.push(planMap[key])
              });
              infoList.sort((a, b) => a.index - b.index);
              console.log(infoList, "infoList");
              var html_ = "";
              for (let i = 0; i < infoList.length; i++) {
                const infoItem = infoList[i];
                html_ +=
                  "<p>" +
                  planMap[key].showTxt.join("、") +
                    infoItem.showTxt.join("、") +
                  ":" +
                  (planMap[key].times && planMap[key].times.length > 0
                    ? planMap[key].times.map(
                  (infoItem.times && infoItem.times.length > 0
                    ? infoItem.times.map(
                        (item) => item.begin_time + " - " + item.end_time
                      )
                    : "休息") +
                  "</p>";
              });
              console.log(html_);
              }
              
              console.log(html_);
              return html_;
            }
          },
public/favicon.ico

public/static/home/images/syslogo.png