cgform_jspTemplate_update.ftl 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412
  1. <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@include file="/context/mytags.jsp"%>
  3. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  4. <#include "../../ui/datatype.ftl"/>
  5. <#include "../../ui/dictInfo.ftl"/>
  6. <#-- update--end--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  7. <!DOCTYPE html>
  8. <#assign callbackFlag = false />
  9. <#assign fileName = "" />
  10. <#list pageColumns as callBackTestPo>
  11. <#-- update--begin--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  12. <#if callBackTestPo.showType=='file' || callBackTestPo.showType == 'image'>
  13. <#assign callbackFlag = true />
  14. <#break>
  15. </#if>
  16. <#-- update--begin--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  17. </#list>
  18. <#if cgformConfig.cgFormHead.isTree == 'Y'>
  19. <style type="text/css">
  20. .combo_self{height: 22px !important;width: 150px !important;}
  21. .layout-header .btn {
  22. margin:0;
  23. float: none !important;
  24. }
  25. .btn-default {
  26. height: 35px;
  27. line-height: 35px;
  28. font-size:14px;
  29. }
  30. </style>
  31. <script type="text/javascript">
  32. $(function(){
  33. $(".combo").removeClass("combo").addClass("combo combo_self");
  34. $(".combo").each(function(){
  35. $(this).parent().css("line-height","0px");
  36. });
  37. });
  38. /**树形列表数据转换**/
  39. function convertTreeData(rows, textField) {
  40. for(var i = 0; i < rows.length; i++) {
  41. var row = rows[i];
  42. row.text = row[textField];
  43. if(row.children) {
  44. row.state = "open";
  45. convertTreeData(row.children, textField);
  46. }
  47. }
  48. }
  49. /**树形列表加入子元素**/
  50. function joinTreeChildren(arr1, arr2) {
  51. for(var i = 0; i < arr1.length; i++) {
  52. var row1 = arr1[i];
  53. for(var j = 0; j < arr2.length; j++) {
  54. if(row1.id == arr2[j].id) {
  55. var children = arr2[j].children;
  56. if(children) {
  57. row1.children = children;
  58. }
  59. }
  60. }
  61. }
  62. }
  63. </script>
  64. </#if>
  65. <html>
  66. <head>
  67. <title>${ftl_description}</title>
  68. <t:base type="jquery,easyui,tools,DatePicker"></t:base>
  69. <#if callbackFlag == true>
  70. <link rel="stylesheet" href="plug-in/uploadify/css/uploadify.css" type="text/css" />
  71. <script type="text/javascript" src="plug-in/uploadify/jquery.uploadify-3.1.js"></script>
  72. </#if>
  73. </head>
  74. <body>
  75. <#-- update--begin--author:zhangjiaqiang date:20170522 for:ueditor配置文件只加载一次 -->
  76. <#assign ue_widget_count = 0>
  77. <#-- update--end--author:zhangjiaqiang date:20170522 for:ueditor配置文件只加载一次 -->
  78. <t:formvalid formid="formobj" dialog="true" usePlugin="password" layout="div" action="${entityName?uncap_first}Controller.do?doUpdate" ${callbackFlag?string("callback=\"jeecgFormFileCallBack@Override\"", "")}>
  79. <#list columns as po>
  80. <#if po.isShow == 'N'>
  81. <input id="${po.fieldName}" name="${po.fieldName}" type="hidden" value="${'$'}{${entityName?uncap_first}Page.${po.fieldName} }"/>
  82. </#if>
  83. </#list>
  84. <fieldset class="step">
  85. <#list columns as po>
  86. <#if po.isShow == 'Y'>
  87. <div class="form">
  88. <label class="Validform_label">${po.content}:</label>
  89. <#if cgformConfig.cgFormHead.isTree=='Y' && cgformConfig.cgFormHead.treeParentIdFieldNamePage==po.fieldName>
  90. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  91. <input id="${po.fieldName}" name="${po.fieldName}" type="text" style="width: 150px" class="inputxt easyui-combotree" <@datatype validType="${po.fieldValidType!''}" isNull="${po.isNull}" type="${po.type}" mustInput="${po.fieldMustInput!''}"/>
  92. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  93. data-options="panelHeight:'220',
  94. url: '${entityName?uncap_first}Controller.do?datagrid&field=id,${cgformConfig.cgFormHead.treeFieldnamePage}',
  95. loadFilter: function(data) {
  96. var rows = data.rows || data;
  97. var win = frameElement.api.opener;
  98. var listRows = win.getDataGrid().treegrid('getData');
  99. joinTreeChildren(rows, listRows);
  100. convertTreeData(rows, '${cgformConfig.cgFormHead.treeFieldnamePage}');
  101. return rows;
  102. },
  103. <#-- update--begin--author:zhangjiaqiang Date:20170518 for:修订树形菜单选择必填项问题-->
  104. onSelect:function(node){
  105. $('#${po.fieldName}').val(node.id);
  106. },
  107. <#-- update--end--author:zhangjiaqiang Date:20170518 for:修订树形菜单选择必填项问题 -->
  108. onLoadSuccess: function() {
  109. var win = frameElement.api.opener;
  110. var currRow = win.getDataGrid().treegrid('getSelected');
  111. if(!'${'$'}{${entityName?uncap_first}Page.id}') {
  112. //增加时,选择当前父菜单
  113. if(currRow) {
  114. $('#${po.fieldName}').combotree('setValue', currRow.id);
  115. }
  116. }else {
  117. //编辑时,选择当前父菜单
  118. if(currRow) {
  119. $('#${po.fieldName}').combotree('setValue', currRow.${po.fieldName});
  120. }
  121. }
  122. } "/>
  123. <#elseif po.showType=='text'>
  124. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  125. <input id="${po.fieldName}" name="${po.fieldName}" type="text" style="width: 150px" class="inputxt" <@datatype validType="${po.fieldValidType!''}" isNull="${po.isNull}" type="${po.type}" mustInput="${po.fieldMustInput!''}"/> value='${'$'}{${entityName?uncap_first}Page.${po.fieldName}}'/>
  126. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  127. <#elseif po.showType=='popup'>
  128. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  129. <input id="${po.fieldName}" name="${po.fieldName}" type="text" style="width: 150px" class="searchbox-inputtext"<@datatype validType="${po.fieldValidType!''}" isNull="${po.isNull}" type="${po.type}" mustInput="${po.fieldMustInput!''}"/> <#if po.dictTable?if_exists?html!="">onclick="inputClick(this,'${po.dictField}','${po.dictTable}')"</#if> value='${'$'}{${entityName?uncap_first}Page.${po.fieldName}}'/>
  130. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  131. <#elseif po.showType=='textarea'>
  132. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  133. <textarea id="${po.fieldName}" style="width:600px;" class="inputxt" rows="6" name="${po.fieldName}" <@datatype validType="${po.fieldValidType!''}" isNull="${po.isNull}" type="${po.type}" mustInput="${po.fieldMustInput!''}"/>>${'$'}{${entityName?uncap_first}Page.${po.fieldName}}</textarea>
  134. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  135. <#elseif po.showType=='password'>
  136. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  137. <input id="${po.fieldName}" name="${po.fieldName}" type="password" style="width: 150px" class="inputxt"<@datatype validType="${po.fieldValidType!''}" isNull="${po.isNull}" type="${po.type}" mustInput="${po.fieldMustInput!''}"/> value='${'$'}{${entityName?uncap_first}Page.${po.fieldName}}'/>
  138. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  139. <#elseif po.showType=='radio' || po.showType=='select' || po.showType=='checkbox' || po.showType=='list'>
  140. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  141. <t:dictSelect field="${po.fieldName}" type="${po.showType?if_exists?html}" <@datatype inputCheck="2" validType="${po.fieldValidType!''}" isNull="${po.isNull}" type="${po.type}" mustInput="${po.fieldMustInput!''}" isNull="${po.isNull}"/> <@dictInfo dictTable="${po.dictTable}" dictField="${po.dictField}" dictText="${po.dictText}" /> defaultVal="${'$'}{${entityName?uncap_first}Page.${po.fieldName}}" hasLabel="false" title="${po.content}"></t:dictSelect>
  142. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  143. <#elseif po.showType=='date'>
  144. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  145. <input id="${po.fieldName}" name="${po.fieldName}" type="text" style="width: 150px" class="Wdate" onClick="WdatePicker()" <@datatype showType="2" validType="${po.fieldValidType!''}" isNull="${po.isNull}" type="${po.type}" mustInput="${po.fieldMustInput!''}" isNull="${po.isNull}"/> value='<fmt:formatDate value='${'$'}{${entityName?uncap_first}Page.${po.fieldName}}' type="date" pattern="yyyy-MM-dd"/>'/>
  146. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  147. <#elseif po.showType=='datetime'>
  148. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  149. <input id="${po.fieldName}" name="${po.fieldName}" type="text" style="width: 150px" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" <@datatype showType="2" validType="${po.fieldValidType!''}" isNull="${po.isNull}" type="${po.type}" mustInput="${po.fieldMustInput!''}" isNull="${po.isNull}"/> value='<fmt:formatDate value='${'$'}{${entityName?uncap_first}Page.${po.fieldName}}' type="date" pattern="yyyy-MM-dd hh:mm:ss"/>'/>
  150. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  151. <#-- update--begin--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  152. <#elseif po.showType=='file' || po.showType == 'image'>
  153. <#-- update--end--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  154. <#-- update--begin--author:zhangjiaqiang date:20170531 for:数据回显表格ID区分 -->
  155. <table id="${fieldMeta[po.fieldName]?lower_case}_fileTable"></table>
  156. <#-- update--end--author:zhangjiaqiang date:20170531 for:数据回显表格ID区分 -->
  157. <#if !(po.operationCodesReadOnly ??)>
  158. <#assign fileName = fileName + "${po.fieldName}," />
  159. <table></table>
  160. <script type="text/javascript">
  161. var serverMsg="";
  162. $(function(){
  163. $('#${po.fieldName}').uploadify({
  164. <#-- update--begin--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  165. <#if po.showType == 'image'>
  166. buttonText:'添加图片',
  167. <#else>
  168. buttonText:'添加文件',
  169. </#if>
  170. <#-- update--end--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  171. auto:false,
  172. progressData:'speed',
  173. multi:true,
  174. height:25,
  175. overrideEvents:['onDialogClose'],
  176. fileTypeDesc:'文件格式:',
  177. <#-- update--begin--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  178. queueID:'filediv_${po.fieldName}',
  179. <#-- update--end--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  180. <#-- fileTypeExts:'*.rar;*.zip;*.doc;*.docx;*.txt;*.ppt;*.xls;*.xlsx;*.html;*.htm;*.pdf;*.jpg;*.gif;*.png', 页面弹出很慢解决 20170317 scott -->
  181. fileSizeLimit:'15MB',
  182. swf:'plug-in/uploadify/uploadify.swf',
  183. uploader:'cgUploadController.do?saveFiles&jsessionid='+$("#sessionUID").val()+'',
  184. onUploadStart : function(file) {
  185. var cgFormId=$("input[name='id']").val();
  186. $('#${po.fieldName}').uploadify("settings", "formData", {
  187. 'cgFormId':cgFormId,
  188. 'cgFormName':'${tableName}',
  189. 'cgFormField':'${fieldMeta[po.fieldName]}'
  190. });
  191. } ,
  192. onQueueComplete : function(queueData) {
  193. var win = frameElement.api.opener;
  194. win.reloadTable();
  195. win.tip(serverMsg);
  196. frameElement.api.close();
  197. },
  198. onUploadSuccess : function(file, data, response) {
  199. var d=$.parseJSON(data);
  200. if(d.success){
  201. var win = frameElement.api.opener;
  202. serverMsg = d.msg;
  203. }
  204. },
  205. onFallback: function() {
  206. tip("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试")
  207. },
  208. onSelectError: function(file, errorCode, errorMsg) {
  209. switch (errorCode) {
  210. case - 100 : tip("上传的文件数量已经超出系统限制的" + $('#file').uploadify('settings', 'queueSizeLimit') + "个文件!");
  211. break;
  212. case - 110 : tip("文件 [" + file.name + "] 大小超出系统限制的" + $('#file').uploadify('settings', 'fileSizeLimit') + "大小!");
  213. break;
  214. case - 120 : tip("文件 [" + file.name + "] 大小异常!");
  215. break;
  216. case - 130 : tip("文件 [" + file.name + "] 类型不正确!");
  217. break;
  218. }
  219. },
  220. onUploadProgress: function(file, bytesUploaded, bytesTotal, totalBytesUploaded, totalBytesTotal) {}
  221. });
  222. });
  223. </script>
  224. <span id="file_uploadspan"><input type="file" name="${po.fieldName}" id="${po.fieldName}" /></span>
  225. <#-- update--begin--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  226. <div class="form" id="filediv_${po.fieldName}"></div>
  227. <#-- update--end--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  228. </#if>
  229. <#--update-start--Author: jg_huangxg Date:20160421 for:TASK #1027 【online】代码生成器模板不支持UE编辑器 -->
  230. <#elseif po.showType='umeditor'>
  231. <#-- update--begin--author:zhangjiaqiang date:20170522 for:ueditor配置文件只加载一次 -->
  232. <#assign ue_widget_count = ue_widget_count + 1>
  233. <#if ue_widget_count == 1>
  234. <script type="text/javascript" charset="utf-8" src="plug-in/ueditor/ueditor.config.js"></script>
  235. <script type="text/javascript" charset="utf-8" src="plug-in/ueditor/ueditor.all.min.js"></script>
  236. </#if>
  237. <#-- update--end--author:zhangjiaqiang date:20170522 for:ueditor配置文件只加载一次 -->
  238. <#--update-start--Author: dangzhenghui Date:20170510 for:TASK #1899 【代码生成器bug】控件类型为UE编辑器 ,编辑页面内容显示为空-->
  239. <textarea name="${po.fieldName}" id="${po.fieldName}" style="width: 650px;height:300px">${'$'}{${entityName?uncap_first}Page.${po.fieldName} }</textarea>
  240. <#--update-end--Author: dangzhenghui Date:20170510 for:TASK #1899 【代码生成器bug】控件类型为UE编辑器 ,编辑页面内容显示为空-->
  241. <script type="text/javascript">
  242. <#-- update--begin--author:zhangjiaqiang date:20170522 for:editor编辑器变量唯一 -->
  243. var ${po.fieldName}_editor = UE.getEditor('${po.fieldName}');
  244. <#-- update--begin--author:zhangjiaqiang date:20170522 for:editor编辑器变量唯一 -->
  245. </script>
  246. <#--update-end--Author: jg_huangxg Date:20160421 for:TASK #1027 【online】代码生成器模板不支持UE编辑器 -->
  247. <#else>
  248. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  249. <input id="${po.fieldName}" name="${po.fieldName}" type="text" style="width: 150px" class="inputxt" <@datatype validType="${po.fieldValidType!''}" isNull="${po.isNull}" type="${po.type}" mustInput="${po.fieldMustInput!''}" isNull="${po.isNull}"/> value='${'$'}{${entityName?uncap_first}Page.${po.fieldName}}'/>
  250. <#-- update--begin--author:zhangjiaqiang Date:20170509 for:修订生成页面乱 -->
  251. </#if>
  252. <span class="Validform_checktip"></span>
  253. </div>
  254. </#if>
  255. </#list>
  256. </fieldset>
  257. </t:formvalid>
  258. </body>
  259. <script src = "webpage/${bussiPackage?replace('.','/')}/${entityPackage}/${entityName?uncap_first}.js"></script>
  260. <#if callbackFlag == true>
  261. <script type="text/javascript">
  262. //加载 已存在的 文件
  263. $(function(){
  264. var table = $("#fileTable");
  265. var cgFormId=$("input[name='id']").val();
  266. $.ajax({
  267. type: "post",
  268. url: "${entityName?uncap_first}Controller.do?getFiles&id=" + cgFormId,
  269. success: function(data){
  270. var arrayFileObj = jQuery.parseJSON(data).obj;
  271. $.each(arrayFileObj,function(n,file){
  272. <#-- update--begin--author:zhangjiaqiang date:20170531 for:多个附件的数据显示 -->
  273. var fieldName = file.field.toLowerCase();
  274. var table = $("#"+fieldName+"_fileTable");
  275. <#-- update--end--author:zhangjiaqiang date:20170531 for:多个附件的数据显示 -->
  276. var tr = $("<tr style=\"height:34px;\"></tr>");
  277. var td_title = $("<td>" + file.title + "</td>")
  278. var td_download = $("<td><a href=\"commonController.do?viewFile&fileid=" + file.fileKey + "&subclassname=org.jeecgframework.web.cgform.entity.upload.CgUploadEntity\" title=\"下载\">下载</a></td>")
  279. var td_view = $("<td><a href=\"javascript:void(0);\" onclick=\"openwindow('预览','commonController.do?openViewFile&fileid=" + file.fileKey + "&subclassname=org.jeecgframework.web.cgform.entity.upload.CgUploadEntity','fList',700,500)\">预览</a></td>");
  280. var td_del = $("<td><a href=\"javascript:void(0)\" class=\"jeecgDetail\" onclick=\"del('cgUploadController.do?delFile&id=" + file.fileKey + "',this)\">删除</a></td>");
  281. tr.appendTo(table);
  282. td_title.appendTo(tr);
  283. td_download.appendTo(tr);
  284. td_view.appendTo(tr);
  285. td_del.appendTo(tr);
  286. });
  287. }
  288. });
  289. });
  290. <#-- update--begin--author:zhangjiaqiang date:20170531 for:附件资源删除处理 -->
  291. /**
  292. * 删除图片数据资源
  293. */
  294. function del(url,obj){
  295. var content = "请问是否要删除该资源";
  296. var navigatorName = "Microsoft Internet Explorer";
  297. if( navigator.appName == navigatorName ){
  298. $.dialog.confirm(content, function(){
  299. submit(url,obj);
  300. }, function(){
  301. });
  302. }else{
  303. layer.open({
  304. title:"提示",
  305. content:content,
  306. icon:7,
  307. yes:function(index){
  308. submit(url,obj);
  309. },
  310. btn:['确定','取消'],
  311. btn2:function(index){
  312. layer.close(index);
  313. }
  314. });
  315. }
  316. }
  317. function submit(url,obj){
  318. $.ajax({
  319. async : false,
  320. cache : false,
  321. type : 'POST',
  322. url : url,// 请求的action路径
  323. error : function() {// 请求失败处理函数
  324. },
  325. success : function(data) {
  326. var d = $.parseJSON(data);
  327. if (d.success) {
  328. var msg = d.msg;
  329. tip(msg);
  330. obj.parentNode.parentNode.parentNode.deleteRow(obj.parentNode.parentNode);
  331. } else {
  332. tip(d.msg);
  333. }
  334. }
  335. });
  336. }
  337. <#-- update--end--author:zhangjiaqiang date:20170531 for:附件资源删除处理 -->
  338. function jeecgFormFileCallBack(data){
  339. if (data.success == true) {
  340. uploadFile(data);
  341. } else {
  342. if (data.responseText == '' || data.responseText == undefined) {
  343. $.messager.alert('错误', data.msg);
  344. $.Hidemsg();
  345. } else {
  346. try {
  347. var emsg = data.responseText.substring(data.responseText.indexOf('错误描述'), data.responseText.indexOf('错误信息'));
  348. $.messager.alert('错误', emsg);
  349. $.Hidemsg();
  350. } catch(ex) {
  351. $.messager.alert('错误', data.responseText + '');
  352. }
  353. }
  354. return false;
  355. }
  356. if (!neibuClickFlag) {
  357. var win = frameElement.api.opener;
  358. win.reloadTable();
  359. }
  360. }
  361. function upload() {
  362. <#-- update--begin--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  363. <#assign subFileName = fileName?substring(0,fileName?length - 1) />
  364. <#list subFileName?split(",") as name>
  365. $('#${name}').uploadify('upload', '*');
  366. </#list>
  367. <#-- update--end--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  368. }
  369. var neibuClickFlag = false;
  370. function neibuClick() {
  371. neibuClickFlag = true;
  372. $('#btn_sub').trigger('click');
  373. }
  374. function cancel() {
  375. <#-- update--begin--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  376. <#assign subFileName = fileName?substring(0,fileName?length - 1) />
  377. <#list subFileName?split(",") as name>
  378. $('#${name}').uploadify('cancel', '*');
  379. </#list>
  380. <#-- update--end--author:zhangjiaqiang date:20170531 for:增加图片和文件的支持 -->
  381. }
  382. function uploadFile(data){
  383. if(!$("input[name='id']").val()){
  384. if(data.obj!=null && data.obj!='undefined'){
  385. $("input[name='id']").val(data.obj.id);
  386. }
  387. }
  388. if($(".uploadify-queue-item").length>0){
  389. upload();
  390. }else{
  391. if (neibuClickFlag){
  392. alert(data.msg);
  393. neibuClickFlag = false;
  394. }else {
  395. var win = frameElement.api.opener;
  396. win.reloadTable();
  397. win.tip(data.msg);
  398. frameElement.api.close();
  399. }
  400. }
  401. }
  402. </script>
  403. </#if>