generalDetailList.jsp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@include file="/context/mytags.jsp"%>
  3. <t:base type="jquery,easyui,tools,DatePicker"></t:base>
  4. <!-- 排班审核详细页 -->
  5. <style>
  6. .divYearMonth{
  7. /* width: 119px; */
  8. /* height: 13px; */
  9. /* font-family: MicrosoftYaHei; */
  10. font-size: 13px;
  11. font-weight: bold;
  12. /* line-height: 2.77; */
  13. /* text-align: left; */
  14. color: #323232;
  15. }
  16. </style>
  17. <div class="easyui-layout" fit="true">
  18. <div region="center" style="padding:0px;border:0px;overflow: auto;">
  19. <input id="tempTime" name="tempTime" type="hidden" value="${yearmonth}"/>
  20. <input id="calendaridStr" name="calendaridStr" type="hidden" value="${calendaridStr}"/>
  21. <input id="specialCalendar" name="specialCalendar" type="hidden" value="${specialCalendar}"/>
  22. <input id="projarrangegeneralId" name="projarrangegeneralId" type="hidden" value="${projarrangegeneralId}"/>
  23. <t:datagrid name="projarrangeDetailList" checkbox="false" fitColumns="false" title="项目排班详细" actionUrl="projarrangeDetailController.do?datagrid&yearmonth=${yearmonth}&pid=${pid}" pagination="false" idField="id" fit="true" queryMode="group">
  24. <t:dgCol title="主键" field="id" hidden="true" queryMode="single" width="120"></t:dgCol>
  25. <t:dgCol title="项目排班总揽表ID" field="projarrangeGeneralid" hidden="true" query="false" width="120"></t:dgCol>
  26. <t:dgCol title="项目id" field="pid" hidden="true" query="false" width="120"></t:dgCol>
  27. <t:dgCol title="月度" field="yearmonth" hidden="true" queryMode="single" width="120"></t:dgCol>
  28. <t:dgCol title="项目岗位" field="pjtPostId" frozenColumn="true" dictionary="t_bus_project_post_detail,id,ptj_post_name, and delete_flag = '0' and pid='${pid}' " width="120"></t:dgCol>
  29. <t:dgCol title="员工姓名" field="userid" frozenColumn="true" queryMode="single" dictionary="t_s_base_user,id,realname" width="120"></t:dgCol>
  30. <!-- 遍历动态列,将动态列添加至此 -->
  31. <c:forEach items="${titlelist}" var="temp">
  32. <t:dgCol title="${temp.title}" width="120" field="${temp.field}" extendParams="editor:'combobox'" dictionary="t_bus_arrange_duty,id,duty_name, and delete_flag <> 1 and status = '0'"></t:dgCol>
  33. </c:forEach>
  34. <t:dgCol title="上班天数(日)" field="workingDays" style="text-align: right;" extendParams="editor:'numberbox'" queryMode="single" width="120"></t:dgCol>
  35. <t:dgCol title="超时加班(小时)" field="timeOutOvertimeHours" style="text-align: right;" extendParams="editor:'numberbox'" queryMode="single" width="120"></t:dgCol>
  36. <t:dgCol title="国定加班(小时)" field="countryOvertimeHours" style="text-align: right;" extendParams="editor:'numberbox'" queryMode="single" width="120"></t:dgCol>
  37. <t:dgCol title="值班天数(日)" field="ondutyDays" style="text-align: right;" queryMode="single" extendParams="editor:'numberbox'" width="120"></t:dgCol>
  38. <t:dgCol title="备注" field="remark" queryMode="single" extendParams="editor:'text'" width="120"></t:dgCol>
  39. <t:dgCol title="创建人名称" field="createName" hidden="true" queryMode="single" width="120"></t:dgCol>
  40. <t:dgCol title="创建人登录名称" field="createBy" hidden="true" queryMode="single" width="120"></t:dgCol>
  41. <t:dgCol title="创建日期" field="createDate" formatter="yyyy-MM-dd hh:mm:ss" hidden="true" queryMode="single" width="120"></t:dgCol>
  42. <t:dgCol title="更新人名称" field="updateName" hidden="true" queryMode="single" width="120"></t:dgCol>
  43. <t:dgCol title="更新人登录名称" field="updateBy" hidden="true" queryMode="single" width="120"></t:dgCol>
  44. <t:dgCol title="更新日期" field="updateDate" formatter="yyyy-MM-dd hh:mm:ss" hidden="true" queryMode="single" width="120"></t:dgCol>
  45. <t:dgCol title="所属部门" field="sysOrgCode" hidden="true" queryMode="single" width="120"></t:dgCol>
  46. <t:dgCol title="所属公司" field="sysCompanyCode" hidden="true" queryMode="single" width="120"></t:dgCol>
  47. <%-- <t:dgCol title="操作" field="opt"></t:dgCol> --%>
  48. <%-- <t:dgDelOpt title="删除" url="projarrangeDetailController.do?doDel&id={id}" urlclass="ace_button" urlfont="fa-trash-o"/>
  49. <t:dgToolBar title="录入" icon="icon-add" operationCode="add" url="projarrangeDetailController.do?goAdd" funname="add"></t:dgToolBar>
  50. <t:dgToolBar title="修改" icon="icon-edit" operationCode="edit" url="projarrangeDetailController.do?goUpdate" funname="update"></t:dgToolBar>
  51. <t:dgToolBar title="批量删除" icon="icon-remove" operationCode="remove" url="projarrangeDetailController.do?doBatchDel" funname="deleteALLSelect"></t:dgToolBar>
  52. <t:dgToolBar title="查看" icon="icon-search" url="projarrangeDetailController.do?goUpdate" funname="detail"></t:dgToolBar>
  53. <t:dgToolBar title="导入" icon="icon-putout" operationCode="put" funname="ImportXls"></t:dgToolBar>
  54. <t:dgToolBar title="导出" icon="icon-put" operationCode="put" funname="ExportXls"></t:dgToolBar>
  55. <t:dgToolBar title="模板下载" icon="icon-putout" operationCode="putout" funname="ExportXlsByT"></t:dgToolBar> --%>
  56. <%-- <t:dgToolBar operationCode="edit" title="修改" icon="icon-edit" operationCode="edit" funname="editRow"></t:dgToolBar>
  57. <t:dgToolBar operationCode="undo" title="取消编辑" icon="icon-undo" funname="reject"></t:dgToolBar>
  58. <t:dgToolBar operationCode="save" title="保存" icon="icon-save" url="projarrangeDetailController.do?saveRows" funname="saveData"></t:dgToolBar>
  59. <t:dgToolBar operationCode="putout" title="上报" icon="icon-putout" operationCode="putout" funname="putout"></t:dgToolBar> --%>
  60. <%-- <t:dgToolBar title="刷新" float="right" icon="icon-search" url="" funname="refresh"></t:dgToolBar> --%>
  61. <t:dgToolBar title="导出" icon="icon-put" operationCode="put" funname="ExportXls"></t:dgToolBar>
  62. </t:datagrid>
  63. <script>
  64. $(function() {
  65. var datagrid = $("#projarrangeDetailListtb");
  66. // datagrid.prepend($("#yearmonth1 div[name='yearmonth2']").html());
  67. datagrid.children(".datagrid-toolbar").before($("#yearmonth1 div[name='yearmonth2']").html());
  68. $("#yearmonth1").html('');
  69. datagrid.children(".datagrid-toolbar").children("span:first").attr("style","float:left;margin-bottom:4px;");
  70. });
  71. </script>
  72. <div id="yearmonth1" style="display: none;">
  73. <div name="yearmonth2">
  74. <div name="yearmonth" style="margin:23px 0 18px 0;">
  75. <!-- <span style="float: left;"> -->
  76. <label class="divYearMonth">排班月度:<span>&nbsp;&nbsp;&nbsp;${yearmonth}&nbsp;&nbsp;&nbsp;</span></label>
  77. <label class="divYearMonth">项目名称:<span>&nbsp;&nbsp;&nbsp;${departname}&nbsp;&nbsp;&nbsp;</span></label>
  78. <input id="yearmonth" type="hidden" value="${yearmonth}">
  79. <input id="pid" type="hidden" value="${pid}">
  80. <!-- </span> -->
  81. <span style="float: right;">
  82. <a href="#" class="easyui-linkbutton" plain="true" icon="icon-confirm" id="" onclick="enableConfirm()">确认</a>
  83. <a href="#" class="easyui-linkbutton l-btn l-btn-plain" iconcls="icon-refresh" plain="true" onclick="refresh()">刷新</a>
  84. <a href="#" class="easyui-linkbutton" plain="true" icon="icon-return" id="departRedo" onclick="callbackProjArrangeGeneralList()">返回</a>
  85. </span
  86. </div>
  87. </div>
  88. </div>
  89. </div>
  90. </div>
  91. <script src = "webpage/cn/com/lzt/projarrangedetail/projarrangeDetailList.js"></script>
  92. <script type="text/javascript">
  93. //导入
  94. function ImportXls() {
  95. openuploadwin('Excel导入', 'projarrangeDetailController.do?upload', "projarrangeDetailList");
  96. }
  97. //导出
  98. function ExportXls() {
  99. var pid=$("#pid").val();
  100. var yearmonth=$("#yearmonth").val();
  101. console.log(pid);
  102. console.log(yearmonth);
  103. JeecgExcelExport("projarrangeDetailController.do?exportXls&pid="+pid+"&yearmonth="+yearmonth ,"projarrangeDetailList");
  104. }
  105. //模板下载
  106. function ExportXlsByT() {
  107. JeecgExcelExport("projarrangeDetailController.do?exportXlsByT","projarrangeDetailList");
  108. }
  109. //新增
  110. function add(title,url,id){
  111. window.location.href=url
  112. }
  113. //修改
  114. function update(title,url, id){
  115. updateNotCreateWin("修改",url, "projarrangeDetailList",false);
  116. }
  117. //查看
  118. function view(title,url, id){
  119. viewNotCreateWin("查看",url, "projarrangeDetailList",false)
  120. }
  121. $(function(){
  122. var specialCalendar=$("#specialCalendar").val();
  123. var specialCalendarArr=eval(specialCalendar);
  124. var datagrid = $(".datagrid-view2").children("div").children("div");
  125. //$("td[field='postid']").css({"color":"red"})
  126. datagrid.children("table").find("td").each(function(){
  127. //arr[$(this).index()] = $(this).val();
  128. //获取filed值;
  129. var field=($(this)[0].attributes)[0].value;
  130. //获取td值;
  131. var tdVal=$(this).text();
  132. for(var key in specialCalendarArr[0]){
  133. if(field==key){
  134. if(parseInt(specialCalendarArr[0][key])>5){
  135. //给列赋颜色
  136. $("td[field='"+field+"']").css({"background":"#d65653"});
  137. $("td[field='"+field+"']").children("div").css({"color":"#ffffff"});
  138. }else{
  139. //给列赋颜色
  140. $("td[field='"+field+"']").css({"background":"#5187c9"});
  141. $("td[field='"+field+"']").children("div").css({"color":"#ffffff"});
  142. }
  143. }
  144. }
  145. })
  146. })
  147. function getYearMonth(){
  148. var myDate = new Date();
  149. //获取当前年
  150. var year=myDate.getFullYear();
  151. //获取当前月
  152. var month=myDate.getMonth()+1;
  153. //获取当前日
  154. //var date=myDate.getDate();
  155. return year+"-"+month;
  156. }
  157. //选择排班月度
  158. function yearmonthChange(){
  159. var yearmonth=$(this).val();
  160. $("#tempTime").val(yearmonth);
  161. var pid=$("#pid").val();
  162. if(pid.length==0){
  163. return false;
  164. }
  165. var dateNumber=yearmonth.split("-");
  166. window.location.href="projarrangeDetailController.do?list&year="+dateNumber[0]+"&month="+dateNumber[1]+"&pid="+pid;
  167. }
  168. //部门选择==========
  169. function openDepartmentSelect() {
  170. //$.dialog.setting.zIndex = getzIndex();
  171. var orgIds = $("#pid").val();
  172. $.dialog({content: 'url:departController.do?departSelect&orgIds='+orgIds, zIndex: getzIndex(), title: '所属部门列表', lock: true, width: '400px', height: '350px', opacity: 0.4, button: [
  173. {name: '<t:mutiLang langKey="common.confirm"/>', callback: callbackDepartmentSelect, focus: true},
  174. {name: '<t:mutiLang langKey="common.cancel"/>', callback: function (){}}
  175. ]}).zindex();
  176. }
  177. function callbackDepartmentSelect() {
  178. var iframe = this.iframe.contentWindow;
  179. var treeObj = iframe.$.fn.zTree.getZTreeObj("departSelect");
  180. var nodes = treeObj.getCheckedNodes(true);
  181. if(nodes.length>0){
  182. var ids='',names='';
  183. for(i=0;i<nodes.length;i++){
  184. var node = nodes[i];
  185. ids += node.id+',';
  186. names += node.name+',';
  187. }
  188. $('#departname').val(names);
  189. $('#departname').blur();
  190. $('#pid').val(ids);
  191. var tempTime=$("#tempTime").val();
  192. //根据项目名称查询数据
  193. if(ids!=""&&tempTime!=""){
  194. var myPId=$('#pid').val();
  195. var dateNumber=tempTime.split("-");
  196. window.location.href="projarrangeDetailController.do?list&year="+dateNumber[0]+"&month="+dateNumber[1]+"&pid="+myPId;
  197. }else{
  198. }
  199. }
  200. }
  201. //清空
  202. function callbackClean(){//projarrangeDetailList
  203. //$('#projarrangeDetailListtb').datagrid('loadData', { total: 0, rows: [] });
  204. $('#departname').val('');
  205. $('#pid').val('');
  206. //获得所有行数据并删除
  207. var rowsAll = $("#projarrangeDetailList").datagrid('getData').rows;
  208. if (rowsAll.length>0) {
  209. for (var i = rowsAll.length - 1; i >= 0; i--) {
  210. var index = $('#projarrangeDetailList').datagrid('getRowIndex', rowsAll[i]);
  211. $('#projarrangeDetailList').datagrid('deleteRow', index);
  212. }
  213. }
  214. }
  215. //部门选择==========
  216. //编辑行
  217. function editRow(title,addurl,gname){
  218. var rows=$('#'+gname).datagrid("getChecked");
  219. if(rows.length==0){
  220. layer.alert("请选择条目");
  221. return false;
  222. }
  223. for(var i=0;i<rows.length;i++){
  224. var index= $('#'+gname).datagrid('getRowIndex', rows[i]);
  225. $('#'+gname).datagrid('beginEdit', index);
  226. }
  227. }
  228. //结束编辑
  229. function endEdit(gname){
  230. var editIndex = $('#'+gname).datagrid('getRows').length-1;
  231. for(var i=0;i<=editIndex;i++){
  232. if($('#'+gname).datagrid('validateRow', i))
  233. $('#'+gname).datagrid('endEdit', i);
  234. else
  235. return false;
  236. }
  237. return true;
  238. }
  239. //取消编辑
  240. function reject(title,addurl,gname){
  241. var pid = $('#pid').val();
  242. if(pid.length==0){
  243. return false;
  244. }
  245. $('#'+gname).datagrid('clearChecked');
  246. $('#'+gname).datagrid('rejectChanges');
  247. }
  248. function putout(){
  249. //排班月度
  250. var yearmonth=$("#yearmonth").val();
  251. //项目id
  252. var pid=$("#pid").val();
  253. //日历id
  254. var calendaridStr=$("#calendaridStr").val();
  255. //排班状态1已上报
  256. var arrangeDutyStatus="1";
  257. //获得所有行数据并删除
  258. var rows = $("#projarrangeDetailList").datagrid('getData').rows;
  259. if (rows.length>0) {
  260. var strmap="[";
  261. for(var i=0;i<rows.length;i++){
  262. strmap+="{";
  263. for(var d in rows[i]){
  264. //result["projectPostUserMiniDaoDtoList["+i+"]."+d]=rows[i][d];
  265. /* if(strmap.length==2){
  266. strmap+='"'+d+'":"'+rows[i][d]+'"';
  267. }else{
  268. strmap+=',"'+d+'":"'+rows[i][d]+'"';
  269. } */
  270. strmap+='"'+d+'":"'+rows[i][d]+'",';
  271. }
  272. //strmap+="}";
  273. if(i!=rows.length-1){
  274. strmap+="},";
  275. }else{
  276. strmap+="}";
  277. }
  278. }
  279. strmap+="]";
  280. //console.log(strmap);
  281. $.ajax({
  282. url:"projarrangeDetailController.do?saveRows",
  283. type:"post",
  284. data: {"strmap":strmap,
  285. "calendaridStr":calendaridStr,
  286. "yearmonth":yearmonth,
  287. "pid":pid,
  288. "arrangeDutyStatus":arrangeDutyStatus},
  289. cache : false,
  290. success:function(data){
  291. var d = data; // ------ $.parseJSON(data);
  292. if(d.success){
  293. tip(d.msg);
  294. reloadTable();
  295. }else{
  296. layer.alert(d.msg);
  297. }
  298. }
  299. });
  300. }else{
  301. layer.alert("没有需要上报的数据!");
  302. return false;
  303. }
  304. }
  305. //保存数据
  306. function saveData(title,addurl,gname){
  307. if(!endEdit(gname))
  308. return false;
  309. var rows=$('#'+gname).datagrid("getChanges","inserted");
  310. var uprows=$('#'+gname).datagrid("getChanges","updated");
  311. rows=rows.concat(uprows);
  312. if(rows.length<=0){
  313. layer.alert("没有需要保存的数据!")
  314. return false;
  315. }
  316. //排班月度
  317. var yearmonth=$("#yearmonth").val();
  318. //项目id
  319. var pid=$("#pid").val();
  320. //日历id
  321. var calendaridStr=$("#calendaridStr").val();
  322. //排班状态0未上报
  323. var arrangeDutyStatus="0";
  324. //console.log(calendaridStr);
  325. var strmap="[";
  326. for(var i=0;i<rows.length;i++){
  327. strmap+="{";
  328. for(var d in rows[i]){
  329. //result["projectPostUserMiniDaoDtoList["+i+"]."+d]=rows[i][d];
  330. /* if(strmap.length==2){
  331. strmap+='"'+d+'":"'+rows[i][d]+'"';
  332. }else{
  333. strmap+=',"'+d+'":"'+rows[i][d]+'"';
  334. } */
  335. strmap+='"'+d+'":"'+rows[i][d]+'",';
  336. }
  337. //strmap+="}";
  338. if(i!=rows.length-1){
  339. strmap+="},";
  340. }else{
  341. strmap+="}";
  342. }
  343. }
  344. strmap+="]";
  345. //console.log(strmap);
  346. //return false;
  347. $.ajax({
  348. url:"projarrangeDetailController.do?saveRows",
  349. type:"post",
  350. data: {"strmap":strmap,
  351. "calendaridStr":calendaridStr,
  352. "yearmonth":yearmonth,
  353. "pid":pid,
  354. "arrangeDutyStatus":arrangeDutyStatus},
  355. cache : false,
  356. success:function(data){
  357. var d = data; // ------ $.parseJSON(data);
  358. if(d.success){
  359. tip(d.msg);
  360. reloadTable();
  361. }else{
  362. layer.alert(d.msg);
  363. }
  364. }
  365. })
  366. }
  367. //刷新表格数据
  368. function refresh(){
  369. //$(".pagination-load").click();
  370. $("#projarrangeDetailList").datagrid('reload');
  371. }
  372. //返回排班审核按钮
  373. function callbackProjArrangeGeneralList(){
  374. window.location.href="projArrangeGeneralController.do?list";
  375. }
  376. //数据确认
  377. function enableConfirm(){
  378. var projarrangegeneralId=$("#projarrangegeneralId").val();
  379. var id=projarrangegeneralId.substring(0,projarrangegeneralId.length-1);
  380. var arrangeDutyStatus=projarrangegeneralId.substring(projarrangegeneralId.length-1,projarrangegeneralId.length);
  381. if(arrangeDutyStatus==2){
  382. layer.alert("数据已确认");
  383. return false;
  384. }
  385. $.messager.confirm("确认", "确定要确认这条数据?", function (r) {
  386. $.ajax({
  387. url : "projArrangeGeneralController.do?enableConfirm",
  388. type : 'post',
  389. data : {
  390. id : id
  391. },
  392. cache : false,
  393. success : function(data) {
  394. var d = data; // ------ $.parseJSON(data);
  395. if (d.success) {
  396. var msg = d.msg;
  397. layer.alert(msg);
  398. callbackProjArrangeGeneralList();
  399. }
  400. }
  401. });
  402. });
  403. }
  404. </script>