leaveList.jsp 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399
  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. <div class="easyui-layout" fit="true">
  5. <div region="center" style="padding:0px;border:0px">
  6. <t:datagrid name="leaveList" checkbox="false" fitColumns="false" title="离职申请" actionUrl="leaveController.do?datagrid" idField="id" fit="true" queryMode="group">
  7. <t:dgCol title="主键" field="id" hidden="true" queryMode="single" width="110"></t:dgCol>
  8. <t:dgCol title="创建人登录名称" field="createBy" sortable="false" hidden="true" queryMode="single" width="120"></t:dgCol>
  9. <t:dgCol title="申请日期" field="applyDate" align="center" formatter="yyyy-MM-dd" query="false" sortable="false" queryMode="group" width="80"></t:dgCol>
  10. <t:dgCol title="员工编号" field="userid" align="center" hidden="true" query="false" sortable="false" queryMode="single" width="110"></t:dgCol>
  11. <t:dgCol title="员工姓名" field="realname" query="false" sortable="false" queryMode="single" width="120"></t:dgCol>
  12. <t:dgCol title="员工工号" field="username" query="false" sortable="false" queryMode="single" width="120"></t:dgCol>
  13. <t:dgCol title="所属单位" field="belongUnitid" sortable="false" queryMode="single" width="160"></t:dgCol>
  14. <t:dgCol title="离职日期" field="leaveDate" align="center" formatter="yyyy-MM-dd" sortable="false" query="false" queryMode="group" width="80"></t:dgCol>
  15. <t:dgCol title="离职类型" field="leaveType" sortable="false" query="false" queryMode="single" dictionary="outType" width="120"></t:dgCol>
  16. <t:dgCol title="是否为<br/>缴金人员" field="ifpayment" sortable="false" align="center" dictionary="shifou_01" queryMode="single" width="90"></t:dgCol>
  17. <t:dgCol title="离职申请状态" field="leaveStatus" sortable="false" align="center" query="false" hidden="true" queryMode="single" width="110"></t:dgCol>
  18. <t:dgCol title="文件路径" field="fileUrl" sortable="false" align="center" query="false" hidden="true" queryMode="single" width="110"></t:dgCol>
  19. <t:dgCol title="申请人" field="applicantId" sortable="false" queryMode="single" dictionary="t_s_base_user,id,realname" width="100"></t:dgCol>
  20. <t:dgCol title="申请状态" field="bpmStatus" sortable="false" align="center" queryMode="single" query="false" dictionary="bpm_status" width="60"></t:dgCol>
  21. <t:dgCol title="流程id" field="procInstId" sortable="false" align="center" queryMode="single" hidden="true" width="60"></t:dgCol>
  22. <t:dgCol title="" field="reject" queryMode="single" hidden="true" width="120"></t:dgCol>
  23. <t:dgCol title="" field="iamApplyUser" queryMode="single" hidden="true" width="120"></t:dgCol>
  24. <t:dgCol title="操作" sortable="false" field="opt" width="300"></t:dgCol>
  25. <%-- <t:dgFunOpt title="开启" funname="enableObj(id,bpmStatus)" urlclass="ace_button" urlfont="fa-cog"></t:dgFunOpt> --%>
  26. <t:dgFunOpt title="离职报告下载" funname="downloadFile(id)" urlclass="ace_button" urlfont="fa-check" ></t:dgFunOpt>
  27. <t:dgFunOpt exp="bpmStatus#eq#1" urlclass="ace_button" urlfont="fa-cog" funname="startUserDefinedProcess(id,bpmStatus,applicantId)" title="提交流程" />
  28. <t:dgFunOpt exp="bpmStatus#ne#1" urlclass="ace_button" urlfont="fa-cog" funname="startus(id,procInstId)" title="查看流程" />
  29. <t:dgFunOpt exp="bpmStatus#eq#2" urlclass="ace_button" urlfont="fa-cog" funname="startusr(id,procInstId,bpmStatus,reject,iamApplyUser,applicantId)" title="撤回流程" />
  30. <%-- <t:dgDelOpt title="删除" url="leaveController.do?doDel&id={id}" urlclass="ace_button" urlfont="fa-trash-o"/> --%>
  31. <t:dgToolBar title="录入" icon="icon-add" operationCode="add" url="leaveController.do?goAdd" funname="add"></t:dgToolBar>
  32. <t:dgToolBar title="修改" icon="icon-edit" operationCode="edit" url="leaveController.do?goUpdate" funname="update"></t:dgToolBar>
  33. <t:dgToolBar title="删除" icon="icon-remove" operationCode="remove" url="leaveController.do?logicDel" funname="deleteObj"></t:dgToolBar>
  34. <t:dgToolBar title="查看" icon="icon-view" url="leaveController.do?goview" funname="goview"></t:dgToolBar>
  35. <%-- <t:dgToolBar title="定时" icon="icon-search" url="leaveController.do?modify" funname="modify"></t:dgToolBar> --%>
  36. <%-- <t:dgToolBar title="撤销" icon="icon-edit" operationCode="edit" url="leaveController.do?disable" funname="disableObj"></t:dgToolBar> --%>
  37. <%-- <t:dgToolBar title="导出" icon="icon-put" operationCode="put" funname="ExportXls"></t:dgToolBar> --%>
  38. </t:datagrid>
  39. </div>
  40. <script>
  41. $(function() {
  42. var datagrid = $("#leaveListtb");
  43. datagrid.prepend($("#pinjie1 div[name='pinjie2']").html());
  44. $("#pinjie1").html('');
  45. datagrid.children(".datagrid-toolbar").children("span:first").after($("#pinjiechaxun1 div[name='pinjiechaxun2']").html());
  46. $("#pinjiechaxun1").html('');
  47. });
  48. </script>
  49. <div id="pinjie1">
  50. <div name="pinjie2" style="padding:3px; height: auto" class="datagrid-toolbar">
  51. <table style="height:85px;padding:0px" cellpadding="0" cellspacing="1" >
  52. <tbody>
  53. <tr>
  54. <td align="right" style="width: 74px;">
  55. <label class="Validform_label">
  56. 员工姓名:
  57. </label>
  58. </td>
  59. <td class="value">
  60. <input id="realname" name="realname" type="text" style="width: 157px; " class="inputxt" placeholder="请输入员工姓名">
  61. </td>
  62. <td align="right" style="width: 74px;">
  63. <label class="Validform_label">
  64. 申请状态:
  65. </label>
  66. </td>
  67. <td class="value">
  68. <t:dictSelect field="bpmStatus" type="select" typeGroupCode="bpm_status" hasLabel="false" title="申请状态" ></t:dictSelect>
  69. </td>
  70. <td align="right" style="width: 74px;">
  71. <label class="Validform_label">
  72. 所属单位:
  73. </label>
  74. </td>
  75. <td class="value" colspan="3">
  76. <input readonly="true" type="text" id="departname" name="departname" style="width: 157px" placeholder="请选择所属单位" onclick="openDepartmentSelect()">
  77. <input id="orgIds" name="orgIds" type="hidden" value="">
  78. <a href="#" class="easyui-linkbutton" plain="true" icon="icon-select" id="departSearch" onclick="openDepartmentSelect()">选择</a>
  79. <a href="#" class="easyui-linkbutton" plain="true" icon="icon-clean" id="departRedo" onclick="callbackClean()">清空</a>
  80. </td>
  81. </tr>
  82. <tr>
  83. <td align="right">
  84. <label class="Validform_label">
  85. 申请日期:
  86. </label>
  87. </td>
  88. <td class="value" colspan="3">
  89. <input id="applyDate_begin" name="applyDate_begin" type="text" style="width: 150px" class="Wdate"
  90. onclick="WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'#F{$dp.$D(\'applyDate_end\')}'})" readonly="readonly" placeholder="yyyy-MM-dd"/>~
  91. <input id="applyDate_end" name="applyDate_end" type="text" style="width: 150px" class="Wdate"
  92. onclick="WdatePicker({dateFmt:'yyyy-MM-dd',minDate:'#F{$dp.$D(\'applyDate_begin\')}'})" readonly="readonly" placeholder="yyyy-MM-dd"/>
  93. </td>
  94. <td align="right">
  95. <label class="Validform_label">
  96. 离职日期:
  97. </label>
  98. </td>
  99. <td class="value">
  100. <input id="leaveDate_begin" name="leaveDate_begin" type="text" style="width: 150px" class="Wdate"
  101. onclick="WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'#F{$dp.$D(\'leaveDate_end\')}'})" readonly="readonly" placeholder="yyyy-MM-dd"/>~
  102. <input id="leaveDate_end" name="leaveDate_end" type="text" style="width: 150px" class="Wdate"
  103. onclick="WdatePicker({dateFmt:'yyyy-MM-dd',minDate:'#F{$dp.$D(\'leaveDate_begin\')}'})" readonly="readonly" placeholder="yyyy-MM-dd"/>
  104. </td>
  105. <td align="right" style="width: 74px;">
  106. <label class="Validform_label">
  107. 离职类型:
  108. </label>
  109. </td>
  110. <td class="value">
  111. <t:dictSelect field="leaveType" type="select" typeGroupCode="outType" hasLabel="false" title="离职类型" ></t:dictSelect>
  112. </td>
  113. </tr>
  114. </tbody>
  115. </table>
  116. </div>
  117. </div>
  118. <div id="pinjiechaxun1">
  119. <div name="pinjiechaxun2" style="padding:3px; height: auto" class="datagrid-toolbar">
  120. <div style="float: right;">
  121. <span>
  122. <a href="#" class="easyui-linkbutton" plain="true" icon="icon-search" id="personnelBaseArchivesManageSearch" onclick="leaveListsearch()">查询</a>
  123. </span>
  124. <span>
  125. <a href="#" class="easyui-linkbutton" plain="true" icon="icon-reload " id="personnelBaseArchivesManageRedo" onclick="searchReset('leaveList')">重置</a>
  126. </span>
  127. </div>
  128. </div>
  129. </div>
  130. </div>
  131. <input id = "user" value="${user.id}" />
  132. <script src = "webpage/cn/com/lzt/leave/leaveList.js"></script>
  133. <script type="text/javascript">
  134. var showAndDownUrl = "${showAndDownUrl}";
  135. function downloadFile(fileUrl) {
  136. $.ajax({
  137. async : false,
  138. type : 'POST',
  139. url : "tSysFileController/getFilelistByBusikey.do",// 请求的action路径
  140. data:{bizType:"departurefile",busiId:fileUrl},
  141. success : function(data) {
  142. var d = data; // ------ $.parseJSON(data);
  143. if(d.obj.filelist != ''){
  144. var datas = eval("("+d.obj.filelist+")");
  145. //var downsrc = "tSysFileController/showOrDownByurl.do?dbPath=" + datas[0].fileUrl + '&down=1';
  146. var downsrc = showAndDownUrl + datas[0].fileUrl + '&down=1';
  147. location.href = downsrc;
  148. }else{
  149. layer.alert('<t:mutiLang langKey="该条申请没有文件,请先上传文件!"/>');
  150. return;
  151. }
  152. }
  153. });
  154. };
  155. function startusr(id,usid,bpmStatus,reject,iamApplyUser,applicantId){
  156. if(reject == '2'/* && iamApplyUser == '2' */){
  157. retractProcess1(id,"t_bus_leave",usid,"leaveList");
  158. return;
  159. }
  160. /* if(applicantId != $("#user").val()){
  161. layer.alert('您无权限操作该数据!');
  162. return;
  163. } */
  164. /* if(bpmStatus != 2){
  165. layer.alert('<t:mutiLang langKey="只有状态为<处理中>时才可进行<流程撤回>操作"/>');
  166. return;
  167. } */
  168. //业务表名
  169. retractProcess(id,"t_bus_leave",usid,"leaveList");
  170. }
  171. function startus(id,usid){
  172. processtracking(id,usid);
  173. }
  174. //启动流程
  175. function startUserDefinedProcess(id,bpmStatus,applicantId,tableName,formUrl){
  176. if(bpmStatus == 2){
  177. layer.alert('<t:mutiLang langKey="申请处理中不可再次提交流程"/>');
  178. return;
  179. }else if(bpmStatus == 3){
  180. layer.alert('<t:mutiLang langKey="申请已完成不可再次提交流程"/>');
  181. return;
  182. }
  183. /* if(applicantId != $("#user").val()){
  184. layer.alert('您无权限操作该数据!');
  185. return;
  186. } */
  187. //业务表名
  188. var tableName = 't_bus_leave';
  189. //流程对应表单 URL
  190. var formUrl = 'leaveController.do?goView';
  191. confirm('activitiController.do?startUserDefinedProcess&id='+id+'&tableName='+tableName+'&formUrl='+formUrl,'确定提交流程吗?','leaveList');
  192. }
  193. function enableObj(id,bpmStatus) {
  194. if(bpmStatus != 1){
  195. layer.alert('<t:mutiLang langKey="只有状态为<待提交>时才可进行<开启>操作"/>');
  196. return;
  197. }
  198. var url = "leaveController.do?enable";
  199. url += '&id='+id;
  200. $.dialog.confirm('<t:mutiLang langKey="确定要启用此转正申请吗?"/>', function(){
  201. lockuploadify(url);
  202. }, function(){
  203. });
  204. }
  205. function disableObj(title,url, id) {
  206. var rowsData = $('#'+id).datagrid('getSelections');
  207. if (!rowsData || rowsData.length==0) {
  208. layer.alert('请选中一条数据');
  209. return;
  210. }
  211. if(rowsData[0].bpmStatus != 2){
  212. layer.alert('<t:mutiLang langKey="只有状态为<处理中>时才可进行<撤销>操作"/>');
  213. return;
  214. }
  215. url += '&id='+rowsData[0].id;
  216. $.dialog.confirm('<t:mutiLang langKey="确定要撤销此离职申请吗?"/>', function(){
  217. lockuploadify(url);
  218. }, function(){
  219. });
  220. }
  221. function deleteObj(title,url, id){
  222. var rowsData = $('#'+id).datagrid('getSelections');
  223. if (!rowsData || rowsData.length==0) {
  224. layer.alert('请选中一条数据');
  225. return;
  226. }
  227. /* if(rowsData[0].bpmStatus != 1){
  228. layer.alert('<t:mutiLang langKey="只有状态为<待提交>时才可进行<删除>操作"/>');
  229. return;
  230. } */
  231. if(rowsData[0].bpmStatus == 2){
  232. layer.alert('<t:mutiLang langKey="申请处理中不可删除"/>');
  233. return;
  234. }else if(rowsData[0].bpmStatus == 3){
  235. layer.alert('<t:mutiLang langKey="申请已完成不可删除"/>');
  236. return;
  237. }
  238. /* if(rowsData[0].applicantId != $("#user").val()){
  239. layer.alert('您无权限操作该数据!');
  240. return;
  241. } */
  242. url += '&id='+rowsData[0].id;
  243. $.dialog.confirm('<t:mutiLang langKey="确定要删除此离职申请吗?"/>', function(){
  244. lockuploadify(url);
  245. }, function(){
  246. });
  247. }
  248. function modify(title,url, id){
  249. lockuploadify(url);
  250. }
  251. function lockuploadify(url) {
  252. $.ajax({
  253. async : false,
  254. cache : false,
  255. type : 'POST',
  256. url : url,// 请求的action路径
  257. error : function() {// 请求失败处理函数
  258. },
  259. success : function(data) {
  260. var d = data; // ------ $.parseJSON(data);
  261. if (d.success) {
  262. var msg = d.msg;
  263. layer.alert(msg);
  264. reloadTable();
  265. }
  266. }
  267. });
  268. }
  269. //导入
  270. function ImportXls() {
  271. openuploadwin('Excel导入', 'leaveController.do?upload', "leaveList");
  272. }
  273. //导出
  274. function ExportXls() {
  275. JeecgExcelExport("leaveController.do?exportXls","leaveList");
  276. }
  277. //模板下载
  278. function ExportXlsByT() {
  279. JeecgExcelExport("leaveController.do?exportXlsByT","leaveList");
  280. }
  281. //新增
  282. function add(title,url,id){
  283. window.location.href=url
  284. }
  285. //修改
  286. function update(title,url, id){
  287. var rowsData = $('#'+id).datagrid('getSelections');
  288. if (!rowsData || rowsData.length==0) {
  289. layer.alert('请选中一条数据');
  290. return;
  291. }
  292. /* if(rowsData[0].bpmStatus != 1){
  293. layer.alert('<t:mutiLang langKey="只有状态为<待提交>时才可进行<修改>操作"/>');
  294. return;
  295. } */
  296. if(rowsData[0].bpmStatus == 2){
  297. layer.alert('<t:mutiLang langKey="申请处理中不可编辑"/>');
  298. return;
  299. }else if(rowsData[0].bpmStatus == 3){
  300. layer.alert('<t:mutiLang langKey="申请已完成不可编辑"/>');
  301. return;
  302. }
  303. /* if(rowsData[0].applicantId != $("#user").val()){
  304. layer.alert('您无权限操作该数据!');
  305. return;
  306. } */
  307. updateNotCreateWin("修改",url, "leaveList",false);
  308. }
  309. //查看
  310. function view(title,url, id){
  311. viewNotCreateWin("查看",url, "leaveList",false)
  312. }
  313. //新增
  314. function goview(title,url,id){
  315. var rowsData = $('#'+id).datagrid('getSelections');
  316. if (!rowsData || rowsData.length==0) {
  317. layer.alert('请选中一条数据');
  318. return;
  319. }
  320. window.location.href=url+'&id='+rowsData[0].id+'&typeid='+rowsData[0].transferType;
  321. }
  322. function openDepartmentSelect() {
  323. $.dialog.setting.zIndex = getzIndex();
  324. var orgIds = $("#orgIds").val();
  325. /** 按照登录用户的组织查询所有子组织
  326. $.dialog({content: 'url:departController.do?departSelectByIds&belongUnitid='+belongUnitid, zIndex: 2100, title: '所属部门列表', lock: true, width: '400px', height: '350px', opacity: 0.4, button: [
  327. {name: '<t:mutiLang langKey="common.confirm"/>', callback: callbackDepartmentSelect, focus: true},
  328. {name: '<t:mutiLang langKey="common.cancel"/>', callback: function (){}}
  329. ]}).zindex();
  330. */
  331. // 查询所有组织结构
  332. $.dialog({content: 'url:departController.do?departSelect&orgIds='+orgIds, zIndex: getzIndex(), title: '所属部门列表', lock: true, width: '400px', height: '350px', opacity: 0.4, button: [
  333. {name: '<t:mutiLang langKey="common.confirm"/>', callback: callbackDepartmentSelect, focus: true},
  334. {name: '<t:mutiLang langKey="common.cancel"/>', callback: function (){}}
  335. ]}).zindex();
  336. }
  337. function callbackDepartmentSelect() {
  338. /** 按照登录用户的组织查询所有子组织
  339. var iframe = this.iframe.contentWindow;
  340. var treeObj = iframe.$.fn.zTree.getZTreeObj("departSelectByIds");
  341. var nodes = treeObj.getCheckedNodes(true);
  342. if(nodes.length>0){
  343. var ids='',names='';
  344. for(i=0;i<nodes.length;i++){
  345. var node = nodes[i];
  346. ids += node.id+',';
  347. names += node.name+',';
  348. }
  349. ids = ids.substring(0,ids.length - 1);
  350. names = names.substring(0,names.length - 1);
  351. $('#departname').val(names);
  352. $('#departname').blur();
  353. $('#orgIds').val(ids);
  354. }
  355. */
  356. // 查询所有组织结构
  357. var iframe = this.iframe.contentWindow;
  358. var treeObj = iframe.$.fn.zTree.getZTreeObj("departSelect");
  359. var nodes = treeObj.getCheckedNodes(true);
  360. if(nodes.length>0){
  361. var ids='',names='';
  362. for(i=0;i<nodes.length;i++){
  363. var node = nodes[i];
  364. ids += node.id+',';
  365. names += node.name+',';
  366. }
  367. $('#departname').val(names);
  368. $('#departname').blur();
  369. $('#orgIds').val(ids);
  370. }
  371. }
  372. function callbackClean(){
  373. $('#departname').val('');
  374. $('#orgIds').val('');
  375. }
  376. </script>