reportModifyApply.jsp 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771
  1. <%@ page contentType="text/html;charset=UTF-8" %>
  2. <%@ include file="/webpage/include/taglib.jsp"%>
  3. <html>
  4. <head>
  5. <title>报告详情管理</title>
  6. <meta name="decorator" content="default"/>
  7. <script type="text/javascript">
  8. var validateForm;
  9. function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
  10. if(validateForm.form()){
  11. $("#inputForm").submit();
  12. return true;
  13. }
  14. return false;
  15. }
  16. function hasInArr(id,idArr) {
  17. for(var i=0;i<idArr.length;i++){
  18. if(id==$(idArr[i]).val()){
  19. return true;
  20. }
  21. }
  22. return false;
  23. }
  24. $(document).ready(function() {
  25. validateForm = $("#inputForm").validate({
  26. submitHandler: function(form){
  27. loading('正在提交,请稍等...');
  28. form.submit();
  29. },
  30. errorContainer: "#messageBox",
  31. errorPlacement: function(error, element) {
  32. $("#messageBox").text("输入有误,请先更正。");
  33. if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
  34. error.appendTo(element.parent().parent());
  35. } else {
  36. error.insertAfter(element);
  37. }
  38. }
  39. });
  40. laydate.render({
  41. elem: '#reportDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  42. event: 'focus', //响应事件。如果没有传入event,则按照默认的click
  43. type : 'date'
  44. });
  45. $("#attachment_btn").click(function () {
  46. $("#attachment_file").click();
  47. });
  48. });
  49. function insertTitle(tValue){
  50. var files = $("#attachment_file")[0].files; for(var i = 0;i<files.length;i++) { var file = files[i];
  51. var attachmentId = "";
  52. var attachmentFlag = "84";
  53. console.log(file);
  54. var timestamp=new Date().getTime();
  55. var storeAs = "attachment-file/basedData/"+timestamp+"/"+file['name'];
  56. var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
  57. var divId = "_attachment";
  58. $("#addFile"+divId).show();
  59. multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,"0");}
  60. }
  61. function openDialogre(title,url,width,height,formId){
  62. if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
  63. width='auto';
  64. height='auto';
  65. }else{//如果是PC端,根据用户设置的width和height显示。
  66. }
  67. top.layer.open({
  68. type: 2,
  69. area: [width, height],
  70. title: title,
  71. skin: 'three-btns',
  72. maxmin: true, //开启最大化最小化按钮
  73. content: url ,
  74. btn: ['提交','关闭'],
  75. btn1: function(index, layero){
  76. var body = top.layer.getChildFrame('body', index);
  77. var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
  78. var inputForm = body.find('#inputForm');
  79. var top_iframe;
  80. inputForm.attr("action","${ctx}/projectcontentinfo/projectcontentinfo/ajaxsaveBaseData");//表单提交成功后,从服务器返回的url在当前tab中展示
  81. var $document = iframeWin.contentWindow.document;
  82. formSubmitAjax($document,formId,index);
  83. },
  84. btn2: function(index){
  85. }
  86. });
  87. }
  88. function formSubmitAjax($document,inputForm,index){
  89. var validateForm = $($document.getElementById(inputForm)).validate({
  90. submitHandler: function(form){
  91. loading('正在提交,请稍等...');
  92. form.submit();
  93. },
  94. errorContainer: "#messageBox",
  95. errorPlacement: function(error, element) {
  96. $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
  97. if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
  98. error.appendTo(element.parent().parent());
  99. } else {
  100. error.insertAfter(element);
  101. }
  102. }
  103. });
  104. if(validateForm.form()){
  105. $($document.getElementById(inputForm)).ajaxSubmit({
  106. success:function(data) {
  107. if(!data.success){
  108. top.layer.msg("保存依据资料信息异常!",{icon:2});
  109. return false;
  110. }
  111. var idx = $("#workBaseDataList tr").length;
  112. addRowBaseData("#workBaseDataList",idx,workBaseDataTpl,data.body.workBasedData);
  113. parent.layer.msg(data.msg,{icon:1});
  114. top.layer.close(index)
  115. }
  116. });
  117. }
  118. }
  119. function delRowBaseData(obj, prefix,userId){
  120. var id = $(prefix+"_id").val();
  121. /* var createBy = $(prefix+"_userId").val();*/
  122. var currentUser = '${fns:getUser().id}';
  123. var contentId = '${projectcontentinfo.projectContentData.id}';
  124. console.log(contentId);
  125. $.ajax({
  126. type:"post",
  127. url:'${ctx}/projectcontentinfo/projectContentData/ajaxdelete',
  128. data:{"contentId":contentId,"basedId":id},
  129. dataType:"json",
  130. success:function(data){
  131. if(data.success) {
  132. $(obj).parent().parent().remove();
  133. /*parent.parent.refreshTrees();*/
  134. if(data.body.inuse){
  135. return;
  136. }
  137. if (currentUser == userId) {
  138. confirmDelete('是否同步删除资料库的文件?','${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+id+'&id=${projectcontentinfo.id}&type=1');
  139. }
  140. }else {
  141. top.layer.msg("删除依据资料失败!", {icon: 0});
  142. }
  143. }
  144. })
  145. return;
  146. }
  147. // 确认对话框
  148. function reviewAudits(mess, href,obj,remarks){
  149. top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
  150. console.log(remarks);
  151. var remark = $(remarks);
  152. remark.val("确认");
  153. $("#check1"+obj).attr("style","display:none");
  154. $("#check2"+obj).attr("style","display");
  155. top.layer.msg("已确认!", {icon: 1});
  156. top.layer.close(index);
  157. });
  158. return false;
  159. }
  160. function addReview(obj){
  161. var infoId = $("#id").val();
  162. var name = $("#name").val();
  163. $.ajax({
  164. type:"post",
  165. url:'${ctx}/projectcontentinfo/projectContentData/addReview',
  166. data:{"reviewId":obj,"name":name,"infoId":infoId},
  167. dataType:"json",
  168. success:function(data){
  169. if(data.success) {
  170. $("#projectContentDataList2").html("");
  171. var list = eval(data.body.list);
  172. for(var i in list){
  173. var tr = "<tr>" +
  174. "<td>" +
  175. "<input id=\"projectReviewList"+i+"_id\" name=\"projectReportData.projectReviewList["+i+"].id\" type=\"hidden\" value=\""+list[i].id+"\"/>" +
  176. "<input id=\"projectReviewList"+i+"_delFalg\" name=\"projectReportData.projectReviewList["+i+"].delFalg\" type=\"hidden\" value=\"1\"/>" +
  177. "<input id=\"projectReviewList"+i+"_remarks\" name=\"projectReportData.projectReviewList["+i+"].remarks\" type=\"hidden\" value=\"\"/>" +
  178. ""+i+1+"" +
  179. "</td>" +
  180. "<td>" +
  181. ""+list[i].standardDetail+"" +
  182. "</td>" +
  183. "<td>" +
  184. "<div id = \"check1"+list[i].id+"\">\n" +
  185. "<input type=\"hidden\" id=\"audit"+list[i].id+"\" value=\"0\"/>\n" +
  186. "<a href=\"projectReviewList"+list[i]+"\" onclick=\"return reviewAudits('确认要审核该质量复核内容吗?', this.href,'"+list[i].id+"','#projectReviewList"+i+"_remarks')\" style=\"color:#fff;\" class=\"op-btn op-btn-edit\">确认</a>" +
  187. "</div>\n" +
  188. "<div id = \"check2"+list[i].id+"\" class=\"check-ok\" style=\"display: none\">" +
  189. "<i class=\"fa fa-check\"></i>" +
  190. "</div>"
  191. "</td>" +
  192. "</tr>";
  193. $("#projectContentDataList2").append(tr);
  194. }
  195. }else {
  196. top.layer.msg("获取数据失败!", {icon: 0});
  197. }
  198. }
  199. });
  200. }
  201. </script>
  202. </head>
  203. <body>
  204. <div class="single-form">
  205. <div class="container${container}">
  206. <form:form id="inputForm" modelAttribute="projectcontentinfo" action="${ctx}/projectcontentinfo/projectcontentinfo/reportAudit?view=reportModify" method="post" class="form-horizontal">
  207. <form:hidden path="id"/>
  208. <form:hidden path="name"/>
  209. <form:hidden path="home"/>
  210. <form:hidden path="parentIds"/>
  211. <form:hidden path="edit"/>
  212. <form:hidden path="projectReportData.id"/>
  213. <form:hidden path="projectReportData.createBy.id"/>
  214. <form:hidden path="projectReportData.act.taskId"/>
  215. <form:hidden path="projectReportData.act.taskName"/>
  216. <form:hidden path="projectReportData.act.taskDefKey"/>
  217. <form:hidden path="projectReportData.act.procInsId"/>
  218. <form:hidden path="projectReportData.act.procDefId"/>
  219. <form:hidden id="flag" path="projectReportData.act.flag"/>
  220. <sys:message content="${message}"/>
  221. <div class="form-group layui-row first lw12">
  222. <div class="form-group-label"><h2>基本信息</h2></div>
  223. <div class="layui-item layui-col-sm6">
  224. <label class="layui-form-label"><span class="require-item">*</span>报告名称:</label>
  225. <div class="layui-input-block with-icon">
  226. <form:input path="projectReportData.name" htmlEscape="false" class="form-control layui-input required"/>
  227. </div>
  228. </div>
  229. <div class="layui-item layui-col-sm6">
  230. <label class="layui-form-label">报告编号:</label>
  231. <div class="layui-input-block">
  232. <div class="input-group">
  233. <form:input path="projectReportData.number" readonly="true" htmlEscape="false" class="form-control layui-input "/>
  234. <span class="input-group-btn">
  235. <label class="form-status">
  236. <c:choose>
  237. <c:when test="${not empty projectcontentinfo.projectReportData.status}">${fns:getDictLabel(projectcontentinfo.projectReportData.status, 'audit_state', '')}
  238. </c:when>
  239. <c:otherwise>新添</c:otherwise>
  240. </c:choose></label>
  241. </span>
  242. </div>
  243. </div>
  244. </div>
  245. <div class="layui-item layui-col-sm6">
  246. <label class="layui-form-label"><span class="require-item">*</span>工作内容类型:</label>
  247. <div class="layui-input-block">
  248. <form:select path="projectReportData.type" htmlEscape="false" class="form-control simple-select required">
  249. <form:option value="" label=""/>
  250. <optgroup label="决策阶段"/>
  251. <form:options items="${fns:getProjectContentTypeList('1',projectcontentinfo.project.id)}" itemLabel="typeName" itemValue="typeId"></form:options>
  252. <optgroup label="设计阶段"/>
  253. <form:options items="${fns:getProjectContentTypeList('2',projectcontentinfo.project.id)}" itemLabel="typeName" itemValue="typeId"></form:options>
  254. <optgroup label="发承包阶段"/>
  255. <form:options items="${fns:getProjectContentTypeList('3',projectcontentinfo.project.id)}" itemLabel="typeName" itemValue="typeId"></form:options>
  256. <optgroup label="实施阶段"/>
  257. <form:options items="${fns:getProjectContentTypeList('4',projectcontentinfo.project.id)}" itemLabel="typeName" itemValue="typeId"></form:options>
  258. <optgroup label="竣工阶段"/>
  259. <form:options items="${fns:getProjectContentTypeList('5',projectcontentinfo.project.id)}" itemLabel="typeName" itemValue="typeId"></form:options>
  260. <optgroup label="运营阶段"/>
  261. <form:options items="${fns:getProjectContentTypeList('6',projectcontentinfo.project.id)}" itemLabel="typeName" itemValue="typeId"></form:options>
  262. </form:select>
  263. </div>
  264. </div>
  265. <div class="layui-item layui-col-sm6">
  266. <label class="layui-form-label"><span class="require-item">*</span>成果类型:</label>
  267. <div class="layui-input-block">
  268. <form:select path="projectReportData.achievementType" class="form-control simple-select required">
  269. <form:option value="" label=""/>
  270. <form:options items="${fns:getMainDictList('achievement_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
  271. </form:select>
  272. </div>
  273. </div>
  274. <div class="layui-item layui-col-sm6">
  275. <label class="layui-form-label"><span class="require-item">*</span>复核标准:</label>
  276. <div class="layui-input-block">
  277. <form:select path="projectReportData.reviewStandard" class="form-control simple-select" onchange="addReview(this.value)">
  278. <form:option value="" label=""/>
  279. <form:options items="${fns:getDictList('reviewStandard')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
  280. </form:select>
  281. </div>
  282. </div>
  283. <div class="layui-item layui-col-sm6">
  284. <label class="layui-form-label"><span class="require-item">*</span>报告日期:</label>
  285. <div class="layui-input-block">
  286. <input id="reportDate" name="projectReportData.reportDate" type="text" htmlEscape="false" readonly="true" class="laydate-icondate form-control layer-date required layui-input laydate-icon"
  287. value="<fmt:formatDate value="${projectcontentinfo.projectReportData.reportDate}" pattern="yyyy-MM-dd"/>"/>
  288. </div>
  289. </div>
  290. <%--<div class="layui-item layui-col-sm6">
  291. <label class="layui-form-label">签字造价师一:</label>
  292. <div class="layui-input-block with-icon">
  293. <sys:treeselect id="signCostOne" name="projectReportData.signCostOne.id" value="${projectcontentinfo.projectReportData.signCostOne.id}" labelName="projectReportData.signCostOne.name" labelValue="${projectcontentinfo.projectReportData.signCostOne.name}"
  294. title="签字造价师一" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/></div>
  295. </div>
  296. <div class="layui-item layui-col-sm6">
  297. <label class="layui-form-label">签字造价师二:</label>
  298. <div class="layui-input-block with-icon">
  299. <sys:treeselect id="signCostTwo" name="projectReportData.signCostTwo.id" value="${projectcontentinfo.projectReportData.signCostTwo.id}" labelName="projectReportData.signCostTwo.name" labelValue="${projectcontentinfo.projectReportData.signCostTwo.name}"
  300. title="签字造价师二" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
  301. </div>
  302. </div>--%>
  303. <div class="layui-item layui-col-sm6">
  304. <label class="layui-form-label"><span class="require-item">*</span>签章类型:</label>
  305. <div class="layui-input-block">
  306. <form:select path="projectReportData.reportType" class="form-control simple-select required">
  307. <form:option value="" label=""/>
  308. <form:option value="电子章" label="电子章"/>
  309. <form:option value="实体章" label="实体章"/>
  310. </form:select>
  311. </div>
  312. </div>
  313. <div class="layui-item layui-col-sm6">
  314. <label class="layui-form-label">归档状态:</label>
  315. <div class="layui-input-block">
  316. <input id="fileStatusDict" type="text" readonly="true" value="${fns:getDictLabel(projectcontentinfo.projectReportData.fileStatus, 'record_state', '')}" class="form-control layui-input "/>
  317. </div>
  318. </div>
  319. </div>
  320. <div class="form-group layui-row first lw12">
  321. <div class="form-group-label"><h2>依据性资料明细</h2></div>
  322. <div class="layui-item nav-btns">
  323. <a href="javascript:void(0)" onclick="openDialogre('新增依据性资料', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=basedData&dictType=${projectcontentinfo.dictType}&id=${projectcontentinfo.id}&parentIds=${projectcontentinfo.parentIds}','90%','90%','inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
  324. <sys:gridselectBaseData url="${ctx}/projectcontentinfo/projectBasedData/selectList" id="baseData" title="选择依据资料"
  325. cssClass="form-control" projectId="${projectcontentinfo.project.id}" fieldLabels="" fieldKeys="" searchLabel="依据资料名称" searchKey="name"></sys:gridselectBaseData>
  326. </div>
  327. <div class="layui-item layui-col-xs12 form-table-container">
  328. <table id="contentTableBase" class="table table-bordered table-condensed details">
  329. <thead>
  330. <tr>
  331. <th class="hide"></th>
  332. <th >资料编号</th>
  333. <th >资料名称</th>
  334. <th >资料类别</th>
  335. <th >上传人</th>
  336. <th >上传日期</th>
  337. <th>操作</th>
  338. </tr>
  339. </thead>
  340. <tbody id="workBaseDataList">
  341. <c:forEach items="${projectcontentinfo.projectReportData.projectBasedDataList}" var="projectBasedData" varStatus="idx">
  342. <tr>
  343. <td class="hide">
  344. <input type="hidden" id="workBaseDataList${idx.index}_id" value="${projectBasedData.id}" class="clientId">
  345. </td>
  346. <td style="text-align:center;">
  347. ${projectBasedData.number}
  348. </td>
  349. <td style="text-align:center;">
  350. ${projectBasedData.name}
  351. </td>
  352. <td style="text-align:center;">
  353. ${fns:getDictLabel(projectBasedData.type, 'project_document_type', '')}
  354. </td>
  355. <td style="text-align:center;">
  356. ${projectBasedData.uploadUser.name}
  357. </td>
  358. <td style="text-align:center;">
  359. <fmt:formatDate value="${projectBasedData.uploadDate}" pattern="yyyy-MM-dd"/>
  360. </td>
  361. <td class="text-center op-td">
  362. <a href=javascript:void(0); onclick="delRowBaseData(this, '#workBaseDataList${idx.index}','${projectBasedData.uploadUser.id}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  363. </td>
  364. </tr>
  365. </c:forEach>
  366. </tbody>
  367. </table>
  368. </div>
  369. <script type="text/template" id="workBaseDataTpl">//<!--
  370. <tr id="budgetList{{idx}}">
  371. <td class="hide">
  372. <input id="workBaseDataList{{idx}}_id" name="projectReportData.projectBasedDataList[{{idx}}].id" type="hidden" value="{{row.id}}" class="clientId"/>
  373. <input id="workBaseDataList{{idx}}_number" name="projectReportData.projectBasedDataList[{{idx}}].number" type="hidden" value="{{row.number}}"/>
  374. <input id="workBaseDataList{{idx}}_name" name="projectReportData.projectBasedDataList[{{idx}}].name" type="hidden" value="{{row.name}}"/>
  375. <input id="workBaseDataList{{idx}}_type" name="projectReportData.projectBasedDataList[{{idx}}].type" type="hidden" value="{{row.type}}"/>
  376. </td>
  377. <td style="text-align:center;">
  378. {{row.number}}
  379. </td>
  380. <td style="text-align:center;">
  381. {{row.name}}
  382. </td>
  383. <td style="text-align:center;">
  384. {{row.typeLabel}}
  385. </td>
  386. <td style="text-align:center;">
  387. {{row.uploadUser.name}}
  388. </td>
  389. <td style="text-align:center;">
  390. {{row.uploadDate}}
  391. </td>
  392. <td class="text-center op-td">
  393. <a href=javascript:void(0); onclick="delRowBaseData(this, '#workBaseDataList{{idx}}','{{row.uploadUser.id}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
  394. </td>
  395. </tr>//-->
  396. </script>
  397. <script type="text/javascript">
  398. var workBaseDataTpl = $("#workBaseDataTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  399. var workBaseDataRowIdx = ${fn:length(projectcontentinfo.projectReportData.projectBasedDataList)};
  400. /* function setValuee(obj){
  401. var idx = $("#workBaseDataList tr").length;
  402. if(existBaseData(obj.id,idx)) {
  403. return;
  404. }
  405. addRowBaseData("#workBaseDataList",idx,workBaseDataTpl,obj);
  406. }*/
  407. function setValuee(obj){
  408. for(var i=0;i<obj.length;i++){
  409. var idArr = $("#workBaseDataList tr:visible .clientId");
  410. if(obj[i].id!=''&&!hasInArr(obj[i].id,idArr)){
  411. addRowBaseData("#workBaseDataList",workBaseDataRowIdx,workBaseDataTpl,obj[i]);
  412. workBaseDataRowIdx=workBaseDataRowIdx+1;
  413. }
  414. }
  415. }
  416. function existBaseData(id,length) {
  417. for (var i=0;i<length;i++) {
  418. var val = $('#workBaseDataList'+i+'_id').val();
  419. if(id==val){
  420. return true;
  421. }
  422. }
  423. return false;
  424. }
  425. function addRowBaseData(list, idx, tpl, row){
  426. bornTemplete(list, idx, tpl, row, idx);
  427. }
  428. function bornTemplete(list, idx, tpl, row, idx1){
  429. var idx1 = $("#workBaseDataList tr").length +1;
  430. $(list).append(Mustache.render(tpl, {
  431. idx: idx, delBtn: true, row: row,
  432. order:idx1 + 1, idx1:idx1
  433. }));
  434. $(list+idx).find("select").each(function(){
  435. $(this).val($(this).attr("data-value"));
  436. });
  437. $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
  438. var ss = $(this).attr("data-value").split(',');
  439. for (var i=0; i<ss.length; i++){
  440. if($(this).val() == ss[i]){
  441. $(this).attr("checked","checked");
  442. }
  443. }
  444. });
  445. }
  446. function delRowBaseData(obj, prefix,userId){
  447. var id = $(prefix+"_id").val();
  448. /* var createBy = $(prefix+"_userId").val();*/
  449. var currentUser = '${fns:getUser().id}';
  450. var contentId = '${projectcontentinfo.projectReportData.id}';
  451. console.log(contentId);
  452. $.ajax({
  453. type:"post",
  454. url:'${ctx}/projectcontentinfo/projectContentData/ajaxdelete',
  455. data:{"contentId":contentId,"basedId":id},
  456. dataType:"json",
  457. success:function(data){
  458. if(data.success) {
  459. $(obj).parent().parent().remove();
  460. /*parent.parent.refreshTrees();*/
  461. if(data.body.inuse){
  462. return;
  463. }
  464. if (currentUser == userId) {
  465. confirmDelete('是否同步删除资料库的文件?','${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+id+'&id=${projectcontentinfo.id}&type=1');
  466. }
  467. }else {
  468. top.layer.msg("删除依据资料失败!", {icon: 0});
  469. }
  470. }
  471. })
  472. return;
  473. }
  474. function confirmDelete(mess, href){
  475. top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
  476. //do something
  477. if (typeof href == 'function') {
  478. href();
  479. }else{
  480. $.ajax({
  481. url:href,
  482. type:"post",
  483. success:function(data){
  484. if(data.success){
  485. top.layer.msg("删除依据资料成功!", {icon: 0});
  486. }
  487. }
  488. });
  489. }
  490. top.layer.close(index);
  491. });
  492. return false;
  493. }
  494. </script>
  495. </div>
  496. <div class="form-group layui-row first lw12">
  497. <div class="form-group-label"><h2>依据工作内容</h2></div>
  498. <div class="layui-item layui-col-xs12" style="padding:0 16px;">
  499. <!-- 表格 -->
  500. <div style="float: left;">
  501. <sys:gridselectContentData url="${ctx}/projectcontentinfo/projectContentData/selectcontentData" id="contentData" title="选择工作内容"
  502. cssClass="form-control" projectId="${projectcontentinfo.project.id}" fieldLabels="" fieldKeys="" searchLabel="${fns:urlEncode('工作内容名称')}" searchKey="name"></sys:gridselectContentData>
  503. </div>
  504. <table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
  505. <thead>
  506. <tr>
  507. <th style="text-align: center;width:15%">工作内容编号</th>
  508. <th style="text-align: center;width:20%">工作内容名称</th>
  509. <th style="text-align: center;width:15%">工作内容类型</th>
  510. <th style="text-align: center;width:15%">负责人</th>
  511. <th style="text-align: center;width:20%">创建时间</th>
  512. <th style="text-align: center;width:15%">操作</th>
  513. </tr>
  514. </thead>
  515. <tbody id="projectContentDataList">
  516. <c:forEach items="${projectcontentinfo.projectReportData.projectContentDataList}" var="projectContentData" varStatus="index">
  517. <tr>
  518. <td>
  519. <input id="projectContentDataList${index.index}_id" name="projectReportData.projectContentDataList[${index.index}].id" type="hidden" value="${projectContentData.id}"/>
  520. <input id="projectContentDataList${index.index}_delFalg" name="projectReportData.projectContentDataList[${index.index}].delFalg" type="hidden" value="1"/>
  521. ${projectContentData.number}
  522. </td>
  523. <td>
  524. ${projectContentData.name}
  525. </td>
  526. <td>
  527. ${fns:getContentTypeName(projectContentData.type,"")}
  528. </td>
  529. <td>
  530. ${projectContentData.master.name}
  531. </td>
  532. <td>
  533. <fmt:formatDate value="${projectContentData.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
  534. </td>
  535. <td>
  536. <a href="javascript:void(0)" onclick="delRowData(this, '#projectContentDataList${index.index}','${projectContentData.id}')" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 取消</a>
  537. </td>
  538. </tr>
  539. </c:forEach>
  540. </tbody>
  541. </table>
  542. <script type="text/template" id="projectContentDataTpl">//<!--
  543. <tr id="budgetList{{idx}}">
  544. <td class="hide">
  545. <input id="projectContentDataList{{idx}}_id" name="projectReportData.projectContentDataList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
  546. <input id="projectContentDataList{{idx}}_delFlag" name="projectReportData.projectContentDataList[{{idx}}]._delFlag" type="hidden" value="0"/>
  547. </td>
  548. <td style="text-align:center;">
  549. {{row.number}}
  550. </td>
  551. <td style="text-align:center;">
  552. {{row.name}}
  553. </td>
  554. <td style="text-align:center;">
  555. {{row.typeName}}
  556. </td>
  557. <td style="text-align:center;">
  558. {{row.master.name}}
  559. </td>
  560. <td style="text-align:center;">
  561. {{row.createDate}}
  562. </td>
  563. <td class="text-center" width="10">
  564. <a href="#" onclick="delRow(this, '#projectContentDataList{{idx}}','{{row.id}}')" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 取消</a>
  565. </td>
  566. </tr>//-->
  567. </script>
  568. <script type="text/javascript">
  569. var projectContentDataTpl = $("#projectContentDataTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  570. function setValueeContent(obj){
  571. var idx = $("#projectContentDataList tr").length;
  572. if(existContentData(obj.id,idx)) {
  573. return;
  574. }
  575. addRowContentData("#projectContentDataList",idx,projectContentDataTpl,obj);
  576. }
  577. function existContentData(id,length) {
  578. for (var i=0;i<length;i++) {
  579. var val = $('#projectContentDataList'+i+'_id').val();
  580. if(id==val){
  581. return true;
  582. }
  583. }
  584. return false;
  585. }
  586. function addRowContentData(list, idx, tpl, row){
  587. bornTemplete(list, idx, tpl, row, idx);
  588. }
  589. function bornTemplete(list, idx, tpl, row, idx1){
  590. var idx1 = $("#workBaseDataList tr").length +1;
  591. $(list).append(Mustache.render(tpl, {
  592. idx: idx, delBtn: true, row: row,
  593. order:idx1 + 1, idx1:idx1
  594. }));
  595. $(list+idx).find("select").each(function(){
  596. $(this).val($(this).attr("data-value"));
  597. });
  598. $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
  599. var ss = $(this).attr("data-value").split(',');
  600. for (var i=0; i<ss.length; i++){
  601. if($(this).val() == ss[i]){
  602. $(this).attr("checked","checked");
  603. }
  604. }
  605. });
  606. }
  607. function delRow(obj, prefix){
  608. $(prefix+"_delFalg").val("1");
  609. $(obj).parent().parent().remove();
  610. }
  611. function delRowData(obj, prefix){
  612. var contentId = $(prefix+"_id").val();
  613. var reportId = '${projectcontentinfo.projectReportData.id}';
  614. var projectId = '${projectcontentinfo.project.id}';
  615. if(reportId!=null&&reportId!=''){
  616. $.ajax({
  617. type:"post",
  618. url:'${ctx}/projectcontentinfo/projectcontentinfo/ajaxContentdelete',
  619. data:{"contentId":contentId,"reportId":reportId,"projectId":projectId},
  620. dataType:"json",
  621. success:function(data){
  622. if(data.success) {
  623. $(obj).parent().parent().remove();
  624. }
  625. }
  626. })
  627. return;
  628. }
  629. }
  630. </script>
  631. </div>
  632. </div>
  633. <div class="form-group layui-row">
  634. <div class="form-group-label"><h2>报告文件</h2></div>
  635. <div class="layui-item nav-btns">
  636. <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
  637. </div>
  638. <div id="addFile_attachment" style="display: none" class="upload-progress">
  639. <span id="fileName_attachment" ></span>
  640. <b><span id="baifenbi_attachment" ></span></b>
  641. <div class="progress">
  642. <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
  643. </div>
  644. </div>
  645. </div>
  646. <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
  647. <span id="attachment_title"></span>
  648. <div class="layui-item layui-col-xs12" style="padding:0 16px;">
  649. <table id="upTable" class="table table-bordered table-condensed details">
  650. <thead>
  651. <tr>
  652. <%-- <th>序号</th>--%>
  653. <th>文件预览</th>
  654. <th>上传人</th>
  655. <th>上传时间</th>
  656. <th width="150px">操作</th>
  657. </tr>
  658. </thead>
  659. <tbody id="file_attachment">
  660. <c:forEach items="${projectcontentinfo.projectReportData.workAttachments}" var = "workClientAttachment" varStatus="status">
  661. <tr>
  662. <%-- <td>${status.index + 1}</td>--%>
  663. <c:choose>
  664. <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
  665. or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
  666. or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
  667. or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
  668. or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
  669. <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
  670. </c:when>
  671. <c:otherwise>
  672. <c:choose>
  673. <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
  674. <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
  675. </c:when>
  676. <c:otherwise>
  677. <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
  678. </c:otherwise>
  679. </c:choose>
  680. </c:otherwise>
  681. </c:choose>
  682. <td>${workClientAttachment.createBy.name}</td>
  683. <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
  684. <td class="op-td">
  685. <div class="op-btn-box" >
  686. <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
  687. <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
  688. <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
  689. </c:if>
  690. </div>
  691. </td>
  692. </tr>
  693. </c:forEach>
  694. </tbody>
  695. </table>
  696. </div>
  697. </div>
  698. <div class="form-group layui-row">
  699. <div class="form-group-label"><h2>自检</h2></div>
  700. <div class="layui-item layui-col-xs12 form-table-container">
  701. <table id="contentTable2" class="table details table-bordered table-condensed">
  702. <thead>
  703. <tr>
  704. <th style="text-align: center;width:15%">序号</th>
  705. <th style="text-align: center;width:70%">复核内容及评分标准</th>
  706. <th style="text-align: center;width:15%">操作</th>
  707. </tr>
  708. </thead>
  709. <tbody id="projectContentDataList2">
  710. <c:forEach items="${projectcontentinfo.projectReportData.projectReviewList}" var="projectReview" varStatus="index">
  711. <tr>
  712. <td>
  713. <input id="projectReviewList${index.index}_id" name="projectReportData.projectReviewList[${index.index}].id" type="hidden" value="${projectReview.id}"/>
  714. <input id="projectReviewList${index.index}_delFalg" name="projectReportData.projectReviewList[${index.index}].delFalg" type="hidden" value="1"/>
  715. <input id="projectReviewList${index.index}_remarks" name="projectReportData.projectReviewList[${index.index}].remarks" type="hidden" value="${projectReview.remarks}"/>
  716. ${index.index + 1}
  717. </td>
  718. <td>
  719. ${projectReview.standardDetail}
  720. </td>
  721. <td>
  722. <c:choose>
  723. <c:when test="${not empty projectReview.remarks}">
  724. <div class="check-ok">
  725. <i class="fa fa-check"></i>
  726. </div>
  727. </c:when>
  728. <c:otherwise>
  729. <div id = "check1${projectReview.id}">
  730. <input type="hidden" id="audit${projectReview.id}" value="0"/>
  731. <a href="${ctx}/workreview/workReviewStandard/reviewAudit?auditId=${projectReview.id}" onclick="return reviewAudits('确认要审核该质量复核内容吗?', this.href,'${projectReview.id}','#projectReviewList${index.index}_remarks')" style="color:#fff;" class="op-btn op-btn-edit">确认</a>
  732. </div>
  733. <div id = "check2${projectReview.id}" class="check-ok" style="display: none">
  734. <i class="fa fa-check"></i>
  735. </div>
  736. </c:otherwise>
  737. </c:choose>
  738. </td>
  739. </tr>
  740. </c:forEach>
  741. </tbody>
  742. </table>
  743. </div>
  744. </div>
  745. <div class="form-group layui-row page-end"></div>
  746. </form:form>
  747. </div>
  748. </div>
  749. </body>
  750. </html>