hour.html 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. {extend name="../../base/view/common/base" /}
  2. {block name="style"}
  3. <style>
  4. .layui-unselect dl {max-height:188px;}
  5. </style>
  6. {/block}
  7. <!-- 主体 -->
  8. {block name="body"}
  9. <div class="p-page">
  10. <form class="layui-form gg-form-bar border-x border-t" lay-filter="barsearchform">
  11. <div class="layui-input-inline" style="width:180px;">
  12. <input type="text" class="layui-input tool-time" data-range="至" placeholder="选择时间区间" readonly name="range_time">
  13. </div>
  14. <div class="layui-input-inline" style="width:100px;">
  15. <input type="text" name="username" placeholder="请选择员工" class="layui-input picker-admin" readonly />
  16. <input type="text" name="uid" value="" style="display:none" />
  17. </div>
  18. <div class="layui-input-inline" style="width:300px;">
  19. <input type="text" name="keywords" placeholder="关键字,输入工作内容" class="layui-input"/>
  20. </div>
  21. <div class="layui-input-inline" style="width:150px;">
  22. <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
  23. <button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
  24. </div>
  25. </form>
  26. <div>
  27. <table class="layui-hide" id="test" lay-filter="test"></table>
  28. </div>
  29. </div>
  30. <script type="text/html" id="toolbarDemo">
  31. <h3>任务工时</h3>
  32. </script>
  33. {/block}
  34. <!-- /主体 -->
  35. <!-- 脚本 -->
  36. {block name="script"}
  37. <script>
  38. const is_leader = '{$is_leader}';
  39. const role_auth = '{$role_auth}';
  40. const hour_auth = '{$hour_auth}';
  41. const moduleInit = ['tool','tablePlus','oaPicker','oaSchedule'];
  42. function gouguInit() {
  43. var form = layui.form,table = layui.tablePlus,tool=layui.tool, work = layui.oaSchedule,laydate = layui.laydate;
  44. layui.scheduleTable = table.render({
  45. elem: '#test'
  46. ,toolbar: '#toolbarDemo'
  47. ,title:'工时列表'
  48. ,url: "/project/task/hour"
  49. ,cellMinWidth: 80
  50. ,is_excel:true
  51. ,height: 'full-114'
  52. ,cols: [[ //表头
  53. {field: 'id', title: '序号',fixed: 'left', width:80, align:'center'}
  54. ,{field: 'labor_type_string', title: '工作类型', align:'center',width:90,templet:function(d){
  55. var html='';
  56. if(d.labor_type==0){
  57. html='<span class="layui-color-'+d.labor_type+'">-</span>';
  58. }
  59. else if(d.labor_type == 1){
  60. html='<span class="layui-color-'+d.labor_type+'">案头工作</span>';
  61. }
  62. else if(d.labor_type == 2){
  63. html='<span class="layui-color-'+d.labor_type+'">外勤工作</span>';
  64. }
  65. return html;
  66. }}
  67. ,{field: 'work_cate', title: '工作类别', align:'center',width:80}
  68. ,{field: 'start_time', title: '工作时间范围', align:'center',width:186,templet:function(d){
  69. var html=d.start_time+'至'+d.end_time;
  70. return html;
  71. }}
  72. ,{field: 'name', title: '执行人', align:'center',width:80}
  73. ,{field: 'labor_time', title: '工时', align:'center',width:80}
  74. ,{field: 'title', title: '工作内容'}
  75. ,{field: 'task', title: '关联任务', width:200}
  76. ,{field: 'project', title: '关联项目', width:180}
  77. ,{field: 'create_time', title: '记录时间', align:'center',width:150}
  78. ,{field: 'right', title: '操作',fixed:'right', width:180, align:'center',templet:function(d){
  79. var html='<div class="layui-btn-group">';
  80. if(hour_auth==2 && d.admin_id==login_admin){
  81. //开放员工自己调整
  82. html+='<button class="layui-btn layui-btn-xs layui-bg-orange" lay-event="time">调整工时</button>';
  83. html+='<button class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</button>';
  84. }
  85. if(hour_auth==3 && is_leader > 0){
  86. //开放部门负责人调整
  87. html+='<button class="layui-btn layui-btn-xs layui-bg-orange" lay-event="time">调整工时</button>';
  88. html+='<button class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</button>';
  89. }
  90. if(hour_auth==4 && role_auth > 0){
  91. //开放日常办公数据管理员调整
  92. html+='<button class="layui-btn layui-btn-xs layui-bg-orange" lay-event="time">调整工时</button>';
  93. html+='<button class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</button>';
  94. }
  95. if(d.admin_id==login_admin){
  96. html+='<button class="layui-btn layui-btn-xs" lay-event="edit">编辑</button>';
  97. }
  98. html+='<button class="layui-btn layui-btn-xs layui-btn-normal" lay-event="view">查看</button>';
  99. html+='</div>';
  100. return html;
  101. }}
  102. ]]
  103. });
  104. //更改工时
  105. table.on('tool(test)', function(obj){
  106. var data = obj.data;
  107. if(obj.event === 'time'){
  108. var content='<form class="layui-form" style="width:568px">\
  109. <table class="layui-table" style="margin:15px 15px 0;">\
  110. <tr>\
  111. <td class="layui-td-gray-2">工作时间范围<font>*</font></td>\
  112. <td>\
  113. <input id="start_time_a" name="start_time_a" style="width:120px; display:inline-block;" autocomplete="off" class="layui-input" value="" readonly lay-verify="required" lay-reqText="请选择"><div style="display: inline-block; margin-left:5px; width: 80px;"><select lay-filter="start_time_b" id="start_time_b"></select></div> 至 <input id="end_time_a" name="end_time_a" style="width:120px; display:inline-block;" autocomplete="off" class="layui-input" value="" readonly lay-verify="required" lay-reqText="请选择"><div style="display: inline-block; margin-left:5px; width: 80px;"><select lay-filter="end_time_b" id="end_time_b"></select></div>\
  114. </td>\
  115. </tr>\
  116. </table>\
  117. </form>';
  118. layer.open({
  119. type:1,
  120. title:'调整工时',
  121. area:['600px','388px'],
  122. content:content,
  123. success:function(){
  124. //日期时间范围
  125. laydate.render({
  126. elem: '#start_time_a',
  127. type: 'date',
  128. max:0,
  129. format: 'yyyy-MM-dd',
  130. showBottom: false,
  131. done:function(a,b,c){
  132. $('#end_time_a').val(a);
  133. }
  134. });
  135. //日期时间范围
  136. laydate.render({
  137. elem: '#end_time_a',
  138. type: 'date',
  139. max:0,
  140. format: 'yyyy-MM-dd',
  141. showBottom: false,
  142. done:function(a,b,c){
  143. $('#start_time_a').val(a);
  144. }
  145. });
  146. $('#start_time_b,#end_time_b').empty();
  147. var hourArray=[];
  148. for(var h=0;h<24;h++){
  149. var t=h<10?'0'+h:h
  150. var t_1=t+':00',t_2=t+':15',t_3=t+':30',t_4=t+':45';
  151. hourArray.push(t_1,t_2,t_3,t_4);
  152. }
  153. var html_1='', html_2='',def_h1='09:00',def_h2='09:30';
  154. for(var s=0;s<hourArray.length;s++){
  155. var check_1='',check_2='';
  156. if(hourArray[s]==def_h1){
  157. check_1='selected';
  158. }
  159. if(hourArray[s]==def_h2){
  160. check_2='selected';
  161. }
  162. html_1 += '<option value="'+hourArray[s]+'" '+check_1+'>'+hourArray[s]+'</option>';
  163. html_2 += '<option value="'+hourArray[s]+'" '+check_2+'>'+hourArray[s]+'</option>';
  164. }
  165. $('#start_time_b').append(html_1);
  166. $('#end_time_b').append(html_2);
  167. form.render();
  168. },
  169. btn: ['确定提交'],
  170. btnAlign: 'c',
  171. yes: function(idx){
  172. let start_time_a = $('#start_time_a').val();
  173. let end_time_a = $('#end_time_a').val();
  174. let start_time_b = $('#start_time_b').val();
  175. let end_time_b = $('#end_time_b').val();
  176. if(start_time_a=='' || end_time_a==''){
  177. layer.msg('请选择工作时间范围');
  178. return;
  179. }
  180. $.ajax({
  181. url: "/oa/api/update_schedule",
  182. type:'post',
  183. data:{
  184. id:data.id,
  185. admin_id:data.admin_id,
  186. start_time_a:start_time_a,
  187. end_time_a:end_time_a,
  188. start_time_b:start_time_b,
  189. end_time_b:end_time_b
  190. },
  191. success:function(e){
  192. layer.msg(e.msg);
  193. if(e.code==0){
  194. layer.close(idx);
  195. layui.scheduleTable.reload();
  196. }
  197. }
  198. })
  199. }
  200. })
  201. }
  202. else if(obj.event === 'edit'){
  203. work.add(0, obj.data);
  204. }
  205. else if(obj.event === 'view'){
  206. work.view(obj.data);
  207. }
  208. else if(obj.event === 'del'){
  209. layer.confirm('您确定要删除该工作记录?', {
  210. icon: 3,
  211. title: '提示'
  212. }, function (index) {
  213. let callback = function (e) {
  214. layer.msg(e.msg);
  215. if (e.code == 0) {
  216. layui.scheduleTable.reload();
  217. }
  218. }
  219. tool.delete("/oa/schedule/del", { id: obj.data.id }, callback);
  220. layer.close(index);
  221. });
  222. }
  223. });
  224. }
  225. </script>
  226. {/block}
  227. <!-- /脚本 -->