jform.ftl 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400
  1. <#setting number_format="0.#####################">
  2. <html>
  3. <head>
  4. <base href="${basePath}/"/>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  6. <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
  7. <meta name="keywords" content="Jeecg 移动表单" />
  8. <meta name="description" content="Jeecg 移动表单" />
  9. <title>Jeecg 移动表单</title>
  10. <link type="text/css" rel="stylesheet" href="${basePath}/online/template/${this_olstylecode}/css/formviewm.css" />
  11. <link type="text/css" rel="stylesheet" href="${basePath}/online/template/${this_olstylecode}/css/theme/default.css" />
  12. <script type="text/javascript" src="${basePath}/online/template/${this_olstylecode}/js/head.load.min.js"></script>
  13. <script type="text/javascript" src="${basePath}/online/template/${this_olstylecode}/js/jquery-1.7.2.min.js"></script>
  14. <script type="text/javascript" src="${basePath}/online/template/${this_olstylecode}/js/lang-cn.js"></script>
  15. <script type="text/javascript" src="${basePath}/online/template/${this_olstylecode}/js/ajaxfileupload.js"></script>
  16. <script type="text/javascript" src="${basePath}/online/template/${this_olstylecode}/js/address-cn.js"></script>
  17. <script type="text/javascript" src="${basePath}/online/template/${this_olstylecode}/js/utils.js"></script>
  18. <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
  19. <script type="text/javascript" src="${basePath}/plug-in/My97DatePicker/WdatePicker.js"></script>
  20. <style id="__wechat_default_css">
  21. ::-webkit-scrollbar{
  22. width: 10px;
  23. height: 10px;
  24. background-color: #FFF;
  25. }
  26. ::-webkit-scrollbar-button:start:decrement,::-webkit-scrollbar-button:end:increment{
  27. display: block;
  28. }
  29. ::-webkit-scrollbar-button:vertical:start:increment,::-webkit-scrollbar-button:vertical:end:decrement{
  30. display: none;
  31. }
  32. ::-webkit-scrollbar-button:end:increment{
  33. background-color: transparent;
  34. }
  35. ::-webkit-scrollbar-button:start:decrement{
  36. background-color: transparent;
  37. }
  38. ::-webkit-scrollbar-track-piece:vertical:start{
  39. background-color: transparent;
  40. }
  41. ::-webkit-scrollbar-track-piece:vertical:end{
  42. background-color: transparent;
  43. }
  44. ::-webkit-scrollbar-thumb:vertical{
  45. background: rgb(191, 191, 191);
  46. }
  47. </style>
  48. </head>
  49. <body class="wallpaper wallpaperm">
  50. <div id="container" class="container" mobile="1">
  51. <div>
  52. <h1 id="logo" class="logo"><a></a></h1>
  53. </div>
  54. <div class="ui-content">
  55. <form id="form1" class="form" action="${basePath}/cgFormBuildController.do?saveOrUpdate" name="formobj" method="post">
  56. <input type="hidden" id="btn_sub" class="btn_sub"/>
  57. <input type="hidden" name="tableName" value="${tableName?if_exists?html}" >
  58. <input type="hidden" name="id" value="${id?if_exists?html}" >
  59. <#list columnhidden as po>
  60. <input type="hidden" id="${po.field_name}" name="${po.field_name}" value="${data['${tableName}']['${po.field_name}']?if_exists?html}" >
  61. </#list>
  62. <ul id="fields" class="fields">
  63. <#list columns as po>
  64. <#if po.show_type=='text'>
  65. <li id="${po.field_name}" class="clearfix " typ="name" reqd="1">
  66. <label class="desc">${po.content}:<#if po.is_null != 'Y'><span class="req">*</span></#if></label>
  67. <div class="content">
  68. <input
  69. type="text"
  70. maxlength="256"
  71. class="ui-input-text xl input fld"
  72. name="${po.field_name}"
  73. id="${po.field_name}"
  74. ${po.extend_json?if_exists}
  75. value="${data['${tableName}']['${po.field_name}']?if_exists?html}"
  76. <#if po.operationCodesReadOnly?exists> readonly = "readonly"</#if>
  77. <#-- update--begin--author:zhangjiaqiang Date:20170417 for:增加校验必填项 -->
  78. <#if po.field_must_input??><#if po.field_must_input == 'Y' || po.is_null != 'Y'>ignore="checked"<#else>ignore="ignore"</#if><#elseif po.is_null != "Y">ignore="checked"<#else>ignore="ignore"</#if>
  79. <#-- update--end--author:zhangjiaqiang Date:20170417 for:增加校验必填项 -->
  80. <#if po.field_valid_type?if_exists?html != ''>
  81. datatype="${po.field_valid_type?if_exists?html}"
  82. <#else>
  83. <#if po.type == 'int'>
  84. datatype="n"
  85. <#elseif po.type=='double'>
  86. datatype="/^(-?\d+)(\.\d+)?$/"
  87. <#else>
  88. <#if po.is_null != 'Y'>datatype="*"</#if>
  89. </#if>
  90. </#if>
  91. />
  92. </div>
  93. </li>
  94. <#elseif po.show_type=='password'>
  95. <li id="${po.field_name}" class="clearfix " typ="password" reqd="1">
  96. <label class="desc">${po.content}: <#if po.is_null != 'Y'><span class="req">*</span></#if></label>
  97. <div class="content">
  98. <input
  99. type="text"
  100. maxlength="256"
  101. class="ui-input-text xl input fld"
  102. name="${po.field_name}"
  103. id="${po.field_name}"
  104. ${po.extend_json?if_exists}
  105. value="${data['${tableName}']['${po.field_name}']?if_exists?html}"
  106. <#-- update--begin--author:zhangjiaqiang Date:20170417 for:增加校验必填项 -->
  107. <#if po.field_must_input??><#if po.field_must_input == 'Y' || po.is_null != 'Y'>ignore="checked"<#else>ignore="ignore"</#if><#elseif po.is_null != "Y">ignore="checked"<#else>ignore="ignore"</#if>
  108. <#-- update--end--author:zhangjiaqiang Date:20170417 for:增加校验必填项 -->
  109. <#if po.operationCodesReadOnly?exists> readonly = "readonly"</#if>
  110. <#if po.field_valid_type?if_exists?html != ''>
  111. datatype="${po.field_valid_type?if_exists?html}"
  112. <#else>
  113. <#if po.is_null != 'Y'>datatype="*"</#if>
  114. </#if>
  115. />
  116. </div>
  117. </li>
  118. <#elseif po.show_type=='radio'>
  119. <li id="${po.field_name}" class="clearfix " typ="radio" reqd="1">
  120. <label class="desc">${po.content} <#if po.is_null != 'Y'><span class="req">*</span></#if></label>
  121. <div class="content">
  122. <fieldset class="controlgroup">
  123. <@DictData name="${po.dict_field?if_exists?html}" text="${po.dict_text?if_exists?html}" tablename="${po.dict_table?if_exists?html}" var="dataList">
  124. <#list dataList as dictdata>
  125. <label <#if dictdata_index==0>class="first"</#if>>
  126. <input
  127. value="${dictdata.typecode?if_exists?html}"
  128. ${po.extend_json?if_exists}
  129. name="${po.field_name}"
  130. type="radio"
  131. <#if dictdata_index==0&&po.is_null != 'Y'>datatype="*"</#if>
  132. <#if po.operationCodesReadOnly?if_exists>onclick="return false;"</#if>
  133. <#if dictdata.typecode?if_exists?html=="${data['${tableName}']['${po.field_name}']?if_exists?html}"> checked="true</#if>
  134. /><label></label>${dictdata.typename?if_exists?html}
  135. </label>
  136. </#list>
  137. </@DictData>
  138. </fieldset>
  139. </div>
  140. </li>
  141. <#elseif po.show_type=='checkbox'>
  142. <li id="${po.field_name}" class="clearfix " typ="radio" reqd="1">
  143. <label class="desc">${po.content}: <#if po.is_null != 'Y'><span class="req">*</span></#if></label>
  144. <div class="content">
  145. <fieldset class="controlgroup">
  146. <#assign checkboxstr>${data['${tableName}']['${po.field_name}']?if_exists?html}</#assign>
  147. <#assign checkboxlist=checkboxstr?split(",")>
  148. <@DictData name="${po.dict_field?if_exists?html}" text="${po.dict_text?if_exists?html}" tablename="${po.dict_table?if_exists?html}" var="dataList">
  149. <#list dataList as dictdata>
  150. <label <#if dictdata_index==0>class="first"</#if>>
  151. <input
  152. value="${dictdata.typecode?if_exists?html}"
  153. ${po.extend_json?if_exists}
  154. name="${po.field_name}"
  155. type="checkbox"
  156. <#if po.operationCodesReadOnly?if_exists>onclick="return false;"</#if>
  157. <#if dictdata_index==0&&po.is_null != 'Y'>datatype="*"</#if>
  158. <#list checkboxlist as x >
  159. <#if dictdata.typecode?if_exists?html=="${x?if_exists?html}"> checked="true" </#if>
  160. </#list>
  161. /><label></label>${dictdata.typename?if_exists?html}
  162. </label>
  163. </#list>
  164. </@DictData>
  165. </fieldset>
  166. </div>
  167. </li>
  168. <#elseif po.show_type=='list'>
  169. <li id="${po.field_name}" class="clearfix " typ="list">
  170. <label class="desc">${po.content}:<#if po.is_null != 'Y'><span class="req">*</span></#if></label>
  171. <div class="content">
  172. <@DictData name="${po.dict_field?if_exists?html}" text="${po.dict_text?if_exists?html}" tablename="${po.dict_table?if_exists?html}" var="dataList">
  173. <select
  174. id="${po.field_name}"
  175. ${po.extend_json?if_exists}
  176. name="${po.field_name}"
  177. <#-- update--begin--author:zhangjiaqiang Date:20170417 for:增加校验必填项 -->
  178. <#if po.field_must_input??><#if po.field_must_input == 'Y' || po.is_null != 'Y'>ignore="checked"<#else>ignore="ignore"</#if><#elseif po.is_null != "Y">ignore="checked"<#else>ignore="ignore"</#if>
  179. <#-- update--end--author:zhangjiaqiang Date:20170417 for:增加校验必填项 -->
  180. <#if po.operationCodesReadOnly?if_exists>
  181. onfocus="this.defOpt=this.selectedIndex" onchange="this.selectedIndex=this.defOpt;"</#if><#if po.is_null != 'Y'>datatype="*"
  182. </#if>
  183. class="ui-input-select fld"
  184. >
  185. <#list dataList as dictdata>
  186. <option
  187. value="${dictdata.typecode?if_exists?html}"
  188. <#if dictdata.typecode?if_exists?html=="${data['${tableName}']['${po.field_name}']?if_exists?html}">
  189. selected="selected"
  190. </#if>>${dictdata.typename?if_exists?html}
  191. </option>
  192. </#list>
  193. </select>
  194. </@DictData>
  195. </div>
  196. </li>
  197. <#elseif po.show_type=="textarea">
  198. <li id="${po.field_name}" class="clearfix " typ="textarea">
  199. <label class="desc">${po.content}: <#if po.is_null != 'Y'><span class="req">*</span></#if></label>
  200. <div class="content">
  201. <textarea
  202. id="${po.field_name}" ${po.extend_json?if_exists}
  203. placeholder="${po.content}"
  204. class="ui-input-text s detail fld"
  205. name="${po.field_name}">
  206. <#-- update--begin--author:zhangjiaqiang Date:20170417 for:增加校验必填项 -->
  207. <#if po.field_must_input??><#if po.field_must_input == 'Y' || po.is_null != 'Y'>ignore="checked"<#else>ignore="ignore"</#if><#elseif po.is_null != "Y">ignore="checked"<#else>ignore="ignore"</#if>
  208. <#-- update--end--author:zhangjiaqiang Date:20170417 for:增加校验必填项 -->
  209. <#if po.operationCodesReadOnly?if_exists>readonly = "readonly" </#if>
  210. <#if po.field_valid_type?if_exists?html != ''>datatype="${po.field_valid_type?if_exists?html}"
  211. <#else>
  212. <#if po.is_null != 'Y'>datatype="*" </#if>
  213. </#if>>${data['${tableName}']['${po.field_name}']?if_exists?html}
  214. </textarea>
  215. </div>
  216. </li>
  217. <#elseif po.show_type=='date'>
  218. <li id="${po.field_name}" class="clearfix " typ="date" reqd="1">
  219. <label class="desc">${po.content}: <#if po.is_null != 'Y'><span class="req">*</span></#if></label>
  220. <div class="content">
  221. <input
  222. type="text"
  223. maxlength="256"
  224. class="ui-input-text xl input fld"
  225. name="${po.field_name}"
  226. id="${po.field_name}"
  227. ${po.extend_json?if_exists}
  228. value="<#if data['${tableName}']['${po.field_name}']??>${data['${tableName}']['${po.field_name}']?if_exists?string("yyyy-MM-dd")}</#if>"
  229. onClick="WdatePicker({<#if po.operationCodesReadOnly?if_exists> readonly = true</#if>})"
  230. <#-- update--begin--author:zhangjiaqiang Date:20170417 for:增加校验必填项 -->
  231. <#if po.field_must_input??><#if po.field_must_input == 'Y' || po.is_null != 'Y'>ignore="checked"<#else>ignore="ignore"</#if><#elseif po.is_null != "Y">ignore="checked"<#else>ignore="ignore"</#if>
  232. <#-- update--end--author:zhangjiaqiang Date:20170417 for:增加校验必填项 -->
  233. <#if po.operationCodesReadOnly?exists> readonly = "readonly"</#if>
  234. <#if po.field_valid_type?if_exists?html != ''>
  235. datatype="${po.field_valid_type?if_exists?html}"
  236. <#else>
  237. <#if po.is_null != 'Y'>datatype="*"</#if>
  238. </#if>
  239. />
  240. </div>
  241. </li>
  242. <#elseif po.show_type=='datetime'>
  243. <li id="${po.field_name}" class="clearfix " typ="date" reqd="1">
  244. <label class="desc">${po.content}: <#if po.is_null != 'Y'><span class="req">*</span></#if></label>
  245. <div class="content">
  246. <input
  247. type="text"
  248. maxlength="256"
  249. class="ui-input-text xl input fld"
  250. name="${po.field_name}"
  251. id="${po.field_name}"
  252. ${po.extend_json?if_exists}
  253. value="<#if data['${tableName}']['${po.field_name}']??>${data['${tableName}']['${po.field_name}']?if_exists?string("yyyy-MM-dd HH:mm:ss")}</#if>"
  254. onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'<#if po.operationCodesReadOnly?if_exists> readonly = true</#if>})"
  255. <#-- update--begin--author:zhangjiaqiang Date:20170417 for:增加校验必填项 -->
  256. <#if po.field_must_input??><#if po.field_must_input == 'Y' || po.is_null != 'Y'>ignore="checked"<#else>ignore="ignore"</#if><#elseif po.is_null != "Y">ignore="checked"<#else>ignore="ignore"</#if>
  257. <#-- update--end--author:zhangjiaqiang Date:20170417 for:增加校验必填项 -->
  258. <#if po.operationCodesReadOnly?exists> readonly = "readonly"</#if>
  259. <#if po.field_valid_type?if_exists?html != ''>
  260. datatype="${po.field_valid_type?if_exists?html}"
  261. <#else>
  262. <#if po.is_null != 'Y'>datatype="*"</#if>
  263. </#if>
  264. />
  265. </div>
  266. </li>
  267. </#if>
  268. </#list>
  269. <#-- 提交按钮 -->
  270. <li id="sub_tr">
  271. <input id="btnSubmit" type="button" class="btn-submit" value="提交" />
  272. </li>
  273. </ul>
  274. </form>
  275. <div style="display:block !important;" class="powerby">由<a href="#">JEECG</a>提供技术支持</div>
  276. </div>
  277. <div id="status" class="mobile hide"></div>
  278. <script type="text/javascript">
  279. var isEmbed=false,F={"DISSHARE":""};
  280. var RULE={FIELDSRULE:[]};
  281. var ADVPERM={};
  282. var signature={"timestamp":"1452579499","appId":"wxa88dd90f5f559968","nonceStr":"36d3857e-4ff1-4843-ad06-4a4c45518f79","jsapi_ticket":"sM4AOVdWfPE4DxkXGEs8VEwkz5fST0hI4gaRTYdQMTfWeqiKRj_EWv8_UDScCucbx1cyUO2_vwkS8mHo2k_ZnQ","signature":"1e7512cc14f6d833d8d2d11b3393ee22d7862fec","url":""};
  283. var isForMobile=true;
  284. //var IMAGEURL="",FILEIMAGEEDITSTYLE="@100w_90Q";
  285. //head.js("js/jquery-1.7.2.min.js",'js/lang-cn.js?v=20151214','js/ajaxfileupload.js?v=20151214','js/address-cn.js?v=20151214',
  286. //"js/utils.js?v=20151214",
  287. //"js/formview.js?v=20151214","http://res.wx.qq.com/open/js/jweixin-1.0.0.js");
  288. //微信分享自动带图片和说明
  289. head.ready(function(){
  290. $(function(){
  291. var title =$("#formHeader div:eq(0)").text();;
  292. var urlImg= $(".logo a").css("backgroundImage");
  293. var url = window.location.href;
  294. if("none"==urlImg){
  295. var img = $(".image-img:eq(0)")[0];
  296. if( typeof(img) != "undefined"){
  297. urlImg =img.src;
  298. }
  299. }else{
  300. //urlImg="url(htpp://xxxx)";
  301. var reg = new RegExp("[a-zA-z]+://[^\\s^\\)]*");
  302. urlImg = urlImg.match(reg)[0];
  303. }
  304. if(!window.signature){
  305. return;
  306. }
  307. wx.config({
  308.     debug: false,
  309.     appId:signature.appId,
  310.     timestamp:parseInt(signature.timestamp),
  311.     nonceStr: signature.nonceStr,
  312.     signature:signature.signature,
  313.     jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone']
  314.   });
  315. wx.ready(function(){
  316. wx.onMenuShareTimeline({
  317. title:title,
  318. link: url,
  319. imgUrl:urlImg,
  320. success: function () {
  321. // 用户确认分享后执行的回调函数
  322. },
  323. cancel: function () {
  324. // 用户取消分享后执行的回调函数
  325. }
  326. });
  327. wx.onMenuShareAppMessage({
  328. title:'', // 分享标题
  329. desc: title, // 分享描述
  330. link: url, // 分享链接
  331. imgUrl:urlImg, // 分享图标
  332. type: '', // 分享类型,music、video或link,不填默认为link
  333. dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
  334. success: function () {
  335. // 用户确认分享后执行的回调函数
  336. },
  337. cancel: function () {
  338. // 用户取消分享后执行的回调函数
  339. }
  340. });
  341. });
  342. });
  343. });
  344. $(function(){
  345. //查看模式情况下,删除和上传附件功能禁止使用
  346. if(location.href.indexOf("load=detail")!=-1){
  347. $(".jeecgDetail").hide();
  348. }
  349. if(location.href.indexOf("mode=read")!=-1){
  350. //查看模式控件禁用
  351. $("#formobj").find(":input").attr("disabled","disabled");
  352. $("#sub_tr").hide();
  353. }
  354. if(location.href.indexOf("mode=onbutton")!=-1){
  355. //其他模式显示提交按钮
  356. $("#sub_tr").show();
  357. }
  358. $("#btnSubmit").click(function(){
  359. if(validateForm()){
  360. $.post(
  361. '${basePath}/cgFormBuildController.do?saveOrUpdate',
  362. $("#form1").serialize(),
  363. function(data){
  364. var d = $.parseJSON(data);
  365. if(data.success){
  366. alert(d.msg);
  367. }else{
  368. alert(d.msg);
  369. }
  370. }
  371. );
  372. }
  373. });
  374. });
  375. function validateForm(){
  376. var flag = true;
  377. $("input[datatype]").each(function(){
  378. var value = $(this).val(),$this = $(this);
  379. if(value == ''){
  380. $this.focus();
  381. var html = $this.parent().prev().html();
  382. var s = html.indexOf(":");
  383. var new_html = html.substring(0,s);
  384. alert($.trim(new_html)+'不能为空!');
  385. flag = false;
  386. return false;
  387. }
  388. });
  389. return flag;
  390. }
  391. </script>
  392. </div>
  393. </body>
  394. </html>