maintainPlan.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402
  1. //初始化下标
  2. function resetTrNum(tableId) {
  3. var projectid = $('#projectid').val();
  4. $tbody = $("#"+tableId+"");
  5. $tbody.find('>tr').each(function(i){
  6. $(':input, select,button,a', this).each(function(){
  7. var $this = $(this), name = $this.attr('name'),id=$this.attr('id'),onclick_str=$this.attr('onclick'), val = $this.val();
  8. if(name!=null){
  9. if (name.indexOf("#index#") >= 0){
  10. $this.attr("name",name.replace('#index#',i));
  11. }else{
  12. var s = name.indexOf("[");
  13. var e = name.indexOf("]");
  14. var new_name = name.substring(s+1,e);
  15. $this.attr("name",name.replace(new_name,i));
  16. }
  17. }
  18. //给明细添加弹出框
  19. if(name.indexOf("maintainPlanProjservList") >= 0 && name.indexOf("projectservicename") >= 0 ){
  20. $this.attr("class","searchbox-inputtext");
  21. $this.unbind("click");
  22. $this.bind("click",function(){popClick_embed("maintainPlanProjservList\["+i+"\]\.projectservicename,maintainPlanProjservList\["+i+"\]\.projectserviceid," +
  23. "maintainPlanProjservList\["+i+"\]\.projectname,maintainPlanProjservList\["+i+"\]\.projectid," +
  24. "maintainPlanProjservList\["+i+"\]\.servicetypedetail"
  25. ,"name,id,projectName,projectid,servicetypedetail","projectServiceController.do?selectedlist&projectid="+projectid+"&classname=cn.com.lzt.projectservice.entity.ProjectServiceEntity&codefield=code&namefield=name")
  26. });
  27. }
  28. //开始日期、截止日期
  29. if(name.indexOf("maintainPlanTimesList") >= 0 && (name.indexOf("servicetimestart") >= 0 || name.indexOf("servicetimeend") >= 0) ){
  30. $this.unbind("change");
  31. $this.bind("change",function(event){
  32. if(event.currentTarget.value == "")
  33. return;
  34. //debugger;
  35. if($('#startdate').val()=="" || $('#enddate').val()==""){
  36. tip("请先选择【计划开始日期】、【计划截止日期】后再设置时间明细的【计划开始日期】、【最晚完成日期】");
  37. return;
  38. }
  39. if(event.currentTarget.value < $('#startdate').val() || event.currentTarget.value > $('#enddate').val()){
  40. event.currentTarget.value = "";
  41. tip("设置的日期必须在【计划开始日期】-【计划截止日期】之间,请重新设置");
  42. }
  43. });
  44. $this.unbind("click");
  45. $this.bind("click",function(event){
  46. if(!$('#startdate').val() || !$('#enddate').val()){
  47. tip("请先选择【计划开始日期】、【计划截止日期】后再设置时间明细的【计划开始日期】、【最晚完成日期】");
  48. return;
  49. }
  50. });
  51. }
  52. if(id!=null){
  53. if (id.indexOf("#index#") >= 0){
  54. $this.attr("id",id.replace('#index#',i));
  55. }else{
  56. var s = id.indexOf("[");
  57. var e = id.indexOf("]");
  58. var new_id = id.substring(s+1,e);
  59. $this.attr("id",id.replace(new_id,i));
  60. }
  61. }
  62. if(onclick_str!=null){
  63. if (onclick_str.indexOf("#index#") >= 0){
  64. $this.attr("onclick",onclick_str.replace(/#index#/g,i));
  65. }else{
  66. }
  67. }
  68. });
  69. $(this).find('div[name=\'xh\']').html(i+1);
  70. });
  71. }
  72. //通用弹出式文件上传
  73. function commonUpload(callback,inputId){
  74. $.dialog({
  75. content: "url:systemController.do?commonUpload",
  76. lock : true,
  77. title:"文件上传",
  78. zIndex:getzIndex(),
  79. width:700,
  80. height: 200,
  81. parent:windowapi,
  82. cache:false,
  83. ok: function(){
  84. var iframe = this.iframe.contentWindow;
  85. iframe.uploadCallback(callback,inputId);
  86. return true;
  87. },
  88. cancelVal: '关闭',
  89. cancel: function(){
  90. }
  91. });
  92. }
  93. //通用弹出式文件上传-回调
  94. function commonUploadDefaultCallBack(url,name,inputId){
  95. $("#"+inputId+"_href").attr('href',url).html('下载');
  96. $("#"+inputId).val(url);
  97. }
  98. function browseImages(inputId, Img) {// 图片管理器,可多个上传共用
  99. }
  100. function browseFiles(inputId, file) {// 文件管理器,可多个上传共用
  101. }
  102. function decode(value, id) {//value传入值,id接受值
  103. var last = value.lastIndexOf("/");
  104. var filename = value.substring(last + 1, value.length);
  105. $("#" + id).text(decodeURIComponent(filename));
  106. }
  107. //选择项目名称,列表================
  108. function openDepartmentSelect() {
  109. //$.dialog.setting.zIndex = getzIndex();
  110. var orgIds = $("#departId").val();
  111. /* var orgCode = $("#orgCode").val();*/
  112. $.dialog({
  113. //content: 'url:userWageController.do?projectDepartTableAll&ids='+orgIds, zIndex: getzIndex(), title: '项目名称列表', lock: true, width: '600px', height: '350px', opacity: 0.4, button: [
  114. content: 'url:publicpageController.do?projectSelect&ids='+orgIds, zIndex: getzIndex(), title: '项目名称列表', lock: true, width: '600px', height: '350px', opacity: 0.4, button: [
  115. {name: '确定', callback: function (){
  116. var iframe = this.iframe.contentWindow;
  117. if(iframe.getReason().length>0){
  118. var strData=eval(iframe.getReason());
  119. for(var key in strData[0]){
  120. if(key=="strId"){
  121. $("#departId").val(strData[0][key]);
  122. }else if(key=="strName"){
  123. $("#depName").val(strData[0][key]);
  124. }
  125. }
  126. }
  127. afterProjectEdit();
  128. }, focus: true},
  129. {name: '取消', callback: function (){}}
  130. ]}).zindex();
  131. }
  132. function callbackClean(){
  133. $('#projectname').val('');
  134. $('#projectid').val('');
  135. afterProjectEdit();
  136. }
  137. //选择供应商
  138. function openPartnerSelect() {
  139. //$.dialog.setting.zIndex = getzIndex();
  140. var partnerIds = $("#relatedunitid").val();
  141. /* var orgCode = $("#orgCode").val();*/
  142. $.dialog({
  143. content: 'url:partnerController.do?supplierAll&ids='+partnerIds, zIndex: getzIndex(), title: '供应商列表', lock: true, width: '600px', height: '350px', opacity: 0.4, button: [
  144. {name: '确定', callback: function (){
  145. var iframe = this.iframe.contentWindow;
  146. if(iframe.getReason().length>0){
  147. var strData=eval(iframe.getReason());
  148. for(var key in strData[0]){
  149. if(key=="strId"){
  150. $("#relatedunitid").val(strData[0][key]);
  151. }else if(key=="strPartnerName"){
  152. $("#relatedunitname").val(strData[0][key]);
  153. }
  154. }
  155. }
  156. }, focus: true},
  157. {name: '取消', callback: function (){}}
  158. ]}).zindex();
  159. }
  160. //服务明细
  161. function openProServList(projectid) {
  162. var departId = $('#departId').val();
  163. if(!departId) {
  164. layer.alert('请先选择项目');
  165. return;
  166. }
  167. var url ="projectServiceController.do?selectedlist&classname=cn.com.lzt.projectservice.entity.ProjectServiceEntity&codefield=code&namefield=name";
  168. url+="&checkbox=true";
  169. url+="&projectid="+departId;
  170. url+="&servicetypedetail="+$('#servicetype').val();
  171. url+="&hiddenProjectSearch=true";
  172. // url+="&projectServiceId="+$('#contractServiceIds').val();
  173. // t"+projectid+"
  174. _openDialog(url,'选择服务',function (iframe) {
  175. var rows = iframe.getSelectedRow();
  176. if(rows.length==0){
  177. iframe.tip('请选择服务');
  178. return false;
  179. }
  180. var ids = new Array();
  181. var names = new Array();
  182. for(var i =0;i<rows.length;i++){
  183. var one = rows[i];
  184. ids.push(one.id);
  185. names.push(one.name);
  186. }
  187. $('#projectServiceId').val(ids.join(','));
  188. $('#projectServiceName').val(names.join(','));
  189. },'900px','600px');
  190. }
  191. function callbackCleanPartner(){
  192. $('#relatedunitname').val('');
  193. $('#relatedunitid').val('');
  194. }
  195. function beforeSave(){
  196. $tbody = $("#add_maintainPlanProjserv_table");
  197. $tbody.find('>tr').each(function(i){
  198. $(':input, select,button,a', this).each(function(){
  199. $("#add_maintainPlanProjserv_table").find("tr").eq(i).find("select").eq(0).removeAttr("disabled");
  200. });
  201. });
  202. if($('#add_maintainPlanTimes_table tr').length==0){
  203. layer.msg('请至少添加一条时间明细',{icon:5, shift: 6});
  204. return false;
  205. }
  206. var timeStarts = $('#add_maintainPlanTimes_table input[name$=servicetimestart]');
  207. for(var i=0;i<timeStarts.length;i++){
  208. if(!$(timeStarts[i]).val()){
  209. layer.msg('请选择预计开始日期',{icon:5, shift: 6});
  210. return false;
  211. }
  212. }
  213. var timeEnds = $('#add_maintainPlanTimes_table input[name$=servicetimeend]');
  214. for(var i=0;i<timeEnds.length;i++){
  215. if(!$(timeEnds[i]).val()){
  216. layer.msg('请选择最晚完成日期',{icon:5, shift: 6});
  217. return false;
  218. }
  219. }
  220. if(!$('#startdate').val()){
  221. layer.msg('请选择计划开始日期',{icon:5, shift: 6});
  222. return false;
  223. }
  224. if(!$('#enddate').val()){
  225. layer.msg('请选择计划截止日期',{icon:5, shift: 6});
  226. return false;
  227. }
  228. if(updateContract){
  229. if(!$('#contractId').val()){
  230. layer.msg('请选择合同',{icon:5, shift: 6});
  231. return false;
  232. }
  233. var contractServiceIds = $('#contractServiceIds').val();
  234. var projectServiceId = $('#projectServiceId').val();
  235. var projectServiceArray = projectServiceId.split(',');
  236. var contractServiceArray = contractServiceIds.split(',');
  237. var err=false;
  238. if(contractServiceArray.length==0) {
  239. err =true;
  240. }else {
  241. for(var i=0;i<projectServiceArray.length;i++){
  242. var projectService = projectServiceArray[i];
  243. var has=false;
  244. for(var j=0;j<contractServiceArray.length;j++){
  245. var contractService = contractServiceArray[j];
  246. if(projectService==contractService) {
  247. has=true;
  248. break;
  249. }
  250. }
  251. if(!has){
  252. err = true;
  253. break;
  254. }
  255. }
  256. }
  257. if(err){
  258. layer.open({
  259. title:'提示信息',
  260. content:'合同不包含所选服务明细,确认保存吗?',
  261. icon:7,
  262. yes:function(index){
  263. updateContract=false;//不设置这个会一直不通过beforeSubmit
  264. $('#btn_sub').click();
  265. },
  266. btn:['确定','取消'],
  267. btn2:function(index){
  268. layer.close(index);
  269. }
  270. });
  271. return false;
  272. }
  273. }
  274. $('#relatedunitname').removeAttr('disabled');
  275. $('#contractStartDate').removeAttr('disabled');
  276. $('#contractEndDate').removeAttr('disabled');
  277. $('#contractId').removeAttr('disabled');
  278. $('#contractName').removeAttr('disabled');
  279. $('#relatedunitid').removeAttr('disabled');
  280. return true;
  281. }
  282. function afterProjectEdit(){
  283. resetTrNum('add_maintainPlanProjserv_table');
  284. }
  285. function openContract(){
  286. var departId = $('#departId').val();
  287. if(!departId) {
  288. layer.alert('请先选择项目');
  289. return;
  290. }
  291. selectContract(function(one){
  292. var id = one.id;//合同id
  293. var name = one.name;//合同名称
  294. var startdate = one.startdate;//合同开始时间
  295. var enddate = one.enddate;//合同结束时间
  296. $('#contractId').val(id);
  297. $('#contractName').val(name);
  298. //供应商
  299. var partnerid = one.partnerid;//供应商id
  300. $('#relatedunitid').val(partnerid);
  301. $.get('relatedUnitsController/'+partnerid+'.do',{},function(d){
  302. $('#relatedunitname').val(d.unitName);
  303. },'json');
  304. getContractProjectServices();
  305. $('#contractStartDate').val(startdate?startdate.substring(0,10):'');
  306. $('#contractEndDate').val(enddate?enddate.substring(0,10):'');
  307. },{'projectid':departId},'100%','100%');
  308. }
  309. //查询合同的服务信息
  310. function getContractProjectServices(){
  311. var contractId= $('#contractId').val();
  312. $.get('contractController.do?contractItemService',{id:contractId},function(d){
  313. var serviceIds = d.serviceIds;
  314. var serviceNames = d.serviceNames;
  315. $('#contractServiceIds').val(serviceIds);
  316. var serviceType;
  317. if(serviceIds){
  318. // var serviceIdArray = serviceIds.split(',');
  319. $.get('projectServiceController.do?getServiceTypeByIds',{'ids':serviceIds},function(sd){//获得服务类型
  320. serviceType = sd;
  321. if (serviceType) {
  322. if(!updateContract) {
  323. var serviceTypeArray = serviceType.split(',');
  324. if (serviceTypeArray.length == 1) {//一种类型
  325. $('#projectServiceId').val(serviceIds);
  326. $('#projectServiceName').val(serviceNames);
  327. }
  328. changeServiceTypeSelect(serviceType);
  329. }
  330. }
  331. },'json')
  332. }else {
  333. if(!updateContract) {
  334. $('#projectServiceId').val('');
  335. $('#projectServiceName').val('');
  336. changeServiceTypeSelect();
  337. }
  338. }
  339. },'json');
  340. }
  341. function changeServiceTypeSelect(serviceType){
  342. if(updateContract) {//补录合同不影响服务类型选择
  343. return;
  344. }
  345. var inserOptionArray = new Array();
  346. if(serviceType) {
  347. serviceTypeSelectOptions.each(function(){
  348. var t = $(this);
  349. var value = t.val();
  350. if(!value) return;
  351. if(serviceType.indexOf(value)!=-1){
  352. inserOptionArray.push(t);
  353. }
  354. });
  355. }
  356. $('#servicetype').html('');
  357. if(inserOptionArray.length>0){
  358. $('#servicetype').append(inserOptionArray);
  359. }else {
  360. $('#servicetype').append(serviceTypeSelectOptions);
  361. $('#servicetype option').first().attr('selected','selected');
  362. }
  363. }
  364. function clearContract(){
  365. $('#contractId').val('');
  366. $('#contractName').val('');
  367. $('#relatedunitid').val('');
  368. $('#relatedunitname').val('');
  369. $('#contractStartDate').val('');
  370. $('#contractEndDate').val('');
  371. changeServiceTypeSelect();
  372. }
  373. var serviceTypeSelectOptions;
  374. $(function(){
  375. serviceTypeSelectOptions = $('#servicetype option').clone();
  376. $('#servicetype').bind('change',function(){
  377. $('#projectServiceId').val('');
  378. $('#projectServiceName').val('');
  379. });
  380. });