EditTable.js 61 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546
  1. /**
  2. * 下拉选项模版。
  3. */
  4. var optiontemplate = '<option value="#value">#text</option>';
  5. /**
  6. * 字段类型数据
  7. */
  8. var varchar_="varchar";
  9. var clob_="clob";
  10. var date_="date";
  11. var number_="number";
  12. /**
  13. * 控件类型。
  14. *16是隐藏域
  15. *4 用户单选,8,用户多选,
  16. *17,角色单选,5,角色多选,
  17. *18,组织单选,6,组织多选
  18. *19,岗位单选,7,岗位多选
  19. *
  20. */
  21. var controlList = [ {key : '1',value : '单行文本框'}, {key : '2',value : '多行文本框'},
  22. {key : '10',value : '富文本框'}, {key : '3',value : '数据字典'},
  23. {key : '4',value : '人员选择器(单选)'}, {key : '8',value : '人员选择器(多选)'},
  24. {key : '17',value :'角色选择器(单选)'},{key : '5',value : '角色选择器(多选)'},
  25. {key : '18',value : '组织选择器(单选)'},{key : '6',value : '组织选择器(多选)'},
  26. {key : '19',value : '岗位选择器(单选)'}, {key : '7',value : '岗位选择器(多选)'},
  27. {key : '16',value : '隐藏域'},{key : '9',value : '文件上传'},
  28. {key : '11',value : '下拉选项'},{key : '13',value : '复选框'},
  29. {key : '14',value : '单选按钮'},{key : '12',value : 'office控件'},
  30. {key : '15',value : '日期控件'},{key : '20',value : '流程引用'},
  31. {key : '21',value : 'WebSign控件'},{key : '22',value : '图片展示控件'},{key : '23',value : '正文'}
  32. ];
  33. /**
  34. * 是否外部表。
  35. */
  36. var isExternal=0;
  37. /**
  38. * 值来源。
  39. */
  40. var varFromList=[{key:0,value:'表单输入'},{key:1,value:'脚本运算(显示)'},
  41. {key:2,value:'脚本运算(不显示)'},{key:3,value:'流水号'}];
  42. /**
  43. * 判断字段名唯一
  44. */
  45. jQuery.validator.addMethod("uniqueName", function(value, element) {
  46. var rtn=TableRow.fieldManage.isFieldExist(value);
  47. return !rtn;
  48. }, '字段已存在');
  49. jQuery.validator.addMethod("word", function(value, element) {
  50. return /^[A-Za-z]{1}([a-zA-Z0-9_]+)?$/gi.test(value);
  51. }, '只能为字母开头,允许字母、数字和下划线');
  52. jQuery.validator.addMethod("quotation", function(value, element) {
  53. return /^[^'|"]*$/im.test(value);
  54. }, '不能有引号');
  55. /**
  56. * 数据表验证器。
  57. * @returns
  58. */
  59. function validTable(){
  60. var __valid__=$("#bpmTableForm").validate({
  61. rules: {
  62. name:{
  63. required:true,
  64. maxlength:30,
  65. word:true
  66. },
  67. comment:{
  68. maxlength:200,
  69. quotation:true
  70. }
  71. },
  72. messages: {
  73. name:{
  74. required:'表名必填',
  75. maxlength:'表名最多 30 个字符.'
  76. },
  77. comment:{
  78. maxlength:'注释 最多200字符.'
  79. }
  80. }
  81. });
  82. return __valid__;
  83. }
  84. /**
  85. * 验证字段填写是否正确。
  86. * @returns
  87. */
  88. function validateField(){
  89. var __valid__ = $('#frmFields').validate({
  90. rules : {
  91. fieldDesc:{
  92. quotation:true
  93. },
  94. fieldName : {
  95. required : true,
  96. uniqueName : __isFieldAdd__,
  97. word: true
  98. },
  99. charLen : {
  100. required : true,
  101. digits : true,
  102. range:[1,4000]
  103. },
  104. intLen : {
  105. required : true,
  106. digits : true,
  107. range:[1,18]
  108. },
  109. decimalLen : {
  110. required : true,
  111. digits : true,
  112. range:[0,6]
  113. }
  114. },
  115. messages : {
  116. fieldName : {
  117. required : '字段名称必填'
  118. },
  119. charLen : {
  120. required : '文字长度必填',
  121. digits:'填写数字'
  122. },
  123. intLen : {
  124. required : '整数长度必填',
  125. digits: '填写数字'
  126. },
  127. decimalLen : {
  128. required : '小数长度必填',
  129. digits: '填写数字'
  130. }
  131. }
  132. });
  133. return __valid__;
  134. }
  135. /**
  136. * 初始点击主表,子表选项按钮。
  137. */
  138. function handIsMain(){
  139. $("input[name='isMain']").click(function(){
  140. var curIsMain = $(this).val();
  141. var objTr=$("#spanMainTable");
  142. (curIsMain==1)?objTr.hide():objTr.show();
  143. handIsList(curIsMain);
  144. });
  145. }
  146. /**
  147. * 是主表,显示显示到列表列,否则不显示
  148. */
  149. function handIsList(curIsMain){
  150. var objTh=$("th[name='Listth']");
  151. var objTd=$("td[name='Listtd']");
  152. if(curIsMain==1){
  153. objTh.show();
  154. objTd.show();
  155. }else{
  156. objTh.hide();
  157. objTd.hide();
  158. }
  159. }
  160. /**
  161. * 处理【值来源】的change事件。
  162. */
  163. function handValueFrom(){
  164. $("#valueFrom").change(function(){
  165. var ft=$("#fieldType").val();
  166. var vf=$(this).val();
  167. //处理控制列表的显示
  168. hdlControlTypeShow(ft,vf);
  169. var ct=$("#controlType").val();
  170. hdlShowCurUserTrShow(ft,vf,ct);
  171. hdlShowCurOrgTrShow(ft,vf,ct);
  172. hdlShowCurPosTrShow(ft,vf,ct);
  173. hdlDictTrShow(ft,vf,ct);
  174. hdlIdentityTrShow(ft,vf,ct);
  175. hdlScriptTrShow(ft,vf,ct);
  176. hdlScriptIdTrShow(ft,vf,ct);
  177. hdlRuleTrShow(ft,vf,ct);
  178. hdlOptionTrShow(ft,vf,ct);
  179. hdlIsReferenceShow(vf,ct);
  180. // hdlShowComdifyShow(ft);
  181. });
  182. }
  183. /**
  184. * 判断控件类型是否为选择器。
  185. * @param ctlType
  186. * @returns {Boolean}
  187. */
  188. function isExecutorSelector(ctlType){
  189. ctlType=parseInt(ctlType);
  190. if(ctlType==4 || ctlType==8 || ctlType==17 || ctlType==5 || ctlType==18
  191. || ctlType==6 || ctlType==19 || ctlType==7 || ctlType==20)
  192. return true;
  193. return false;
  194. }
  195. /**
  196. * 处理【字段类型】(fieldType)的change事件。
  197. */
  198. function handFieldType(){
  199. $("#fieldType").change(function(){
  200. var val=$(this).val();
  201. if(val==varchar_ || val==clob_ || val==number_){
  202. $("#trControlType").show();
  203. }
  204. //处理条件。
  205. handCondition();
  206. //处理数据长度
  207. var controlType=$("#controlType").val();
  208. if(val==varchar_){
  209. $("#spanCharLen").show();
  210. $("#spanIntLen,#spanDecimalLen,#spanDateFormat").hide();
  211. $("#showComdify,#spanCoin,#spanCoinType").hide();
  212. //下拉框,复选框,单选按钮
  213. if(controlType=="11" || controlType=="13" || controlType=="14"){
  214. $("#trOption").show();
  215. }
  216. else{
  217. $("#trOption").hide();
  218. }
  219. }else if(val==number_){
  220. $("#spanCharLen,#trOption,#spanDateFormat").hide();
  221. $("#spanDecimalLen,#spanIntLen,#spanCoin").show();
  222. $("#showComdify").show();
  223. $("#showidentity").hide();
  224. //下拉框,复选框,单选按钮
  225. if(controlType=="11" || controlType=="13" || controlType=="14"){
  226. $("#trOption").show();
  227. }
  228. else{
  229. $("#trOption").hide();
  230. }
  231. }else if(val==date_){
  232. $("#spanCharLen,#spanIntLen,#spanDecimalLen,#trOption").hide();
  233. $("#spanDateFormat").show();
  234. $("#showComdify,#spanCoin,#spanCoinType").hide();
  235. $("#showidentity").hide();
  236. }
  237. else{
  238. $("#spanCharLen,#spanIntLen,#spanDecimalLen,#trOption,#spanDateFormat").hide();
  239. $("#showComdify,#spanCoin,#spanCoinType").hide();
  240. $("#showidentity").hide();
  241. }
  242. //验证规则
  243. if(val ==varchar_ || val==clob_){
  244. $("#trRule").show();
  245. }
  246. else{
  247. $("#trRule").hide();
  248. }
  249. //设置值来源
  250. setValueFromByFieldType(val);
  251. //设置控件类型
  252. setControlByType(val);
  253. //脚本隐藏
  254. $("#trScript").hide();
  255. $("#trScriptID").hide();
  256. //处理条件
  257. //处理表单用户,组织,岗位
  258. $('#showCurUserTr').hide();
  259. $('#showCurOrgTr').hide();
  260. $('#showCurPosTr').hide();
  261. //设置流程变量
  262. var controlType = $("#controlType").val();
  263. setShowFlowVar(controlType);
  264. });
  265. }
  266. /**
  267. * 处理复选框【是否作为查询条件】(isQuery)点击事件。
  268. */
  269. function handConditionClick(){
  270. $("#isQuery").click(handCondition);
  271. }
  272. /**
  273. * 处理【查询条件】选择的点击处理。
  274. */
  275. function handCondition(){
  276. var obj=$("#isQuery");
  277. var isChecked=obj.attr("checked")=="checked";
  278. if(isChecked){
  279. var selObj=$("#selCondition");
  280. var fieldType=$("#fieldType").val();
  281. //initCondition(selObj,fieldType);
  282. if(fieldType!==clob_){
  283. //$("#trCondition").show();
  284. }
  285. else{
  286. //$("#trCondition").hide();
  287. obj.removeAttr("checked");
  288. }
  289. }else{
  290. //$("#trCondition").hide();
  291. }
  292. }
  293. /**
  294. * 处理货币复选框【coin】事件
  295. */
  296. function handCoinClick(){
  297. var obj=$("#coin");
  298. obj.click(handCoin);
  299. }
  300. function handCoin(){
  301. var obj=$("#coin");
  302. var comdifyObj=$("#isShowComdify");
  303. var isChecked=obj.attr("checked")=="checked";
  304. if(isChecked){
  305. var fieldType=$("#fieldType").val();
  306. if(fieldType ==number_){
  307. $("#spanCoinType").show();
  308. $("#decimalLen").val(2);
  309. comdifyObj.attr("checked",true);
  310. comdifyObj.attr('disabled', true);
  311. }else {
  312. $("#spanCoinType").hide();
  313. $("#decimalLen").val(0);
  314. obj.removeAttr("checked");
  315. comdifyObj.removeAttr("checked");
  316. comdifyObj.attr('disabled', false);
  317. }
  318. }else{
  319. $("#spanCoinType").hide();
  320. $("#decimalLen").val(0);
  321. comdifyObj.attr('disabled', false);
  322. comdifyObj.attr("checked", false);
  323. }
  324. }
  325. /**
  326. * 改变值的长度
  327. * @param len
  328. */
  329. function changeCharLen(len){
  330. $("#charLen").val(len);
  331. }
  332. /**
  333. * 处理【控件类型】(ControlType)修改事件。
  334. */
  335. function handControlType(){
  336. //控件类型修改
  337. $("#controlType").change(function(){
  338. var val=parseInt($(this).val());
  339. $("#formUserTr").hide();
  340. //$("#spanDateFormat").hide();
  341. //设置流程变量
  342. setShowFlowVar(val);
  343. if(val==15){
  344. $("#spanDateFormat").show();
  345. }
  346. var ft=$("#fieldType").val();
  347. var vf=$("#valueFrom").val();
  348. var ct=$(this).val();
  349. hdlShowCurUserTrShow(ft,vf,ct);
  350. hdlShowCurOrgTrShow(ft,vf,ct);
  351. hdlShowCurPosTrShow(ft,vf,ct);
  352. hdlDictTrShow(ft,vf,ct);
  353. hdlIdentityTrShow(ft,vf,ct);
  354. hdlScriptTrShow(ft,vf,ct);
  355. hdlScriptIdTrShow(ft,vf,ct);
  356. hdlRuleTrShow(ft,vf,ct);
  357. hdlOptionTrShow(ft,vf,ct);
  358. hdlIsReferenceShow(vf,ct);
  359. hdlCharLen(ct);
  360. hdlIsWebSignShow(ft,vf,ct);
  361. hdlShowUpLoadTrShow(ft,vf,ct);
  362. });
  363. }
  364. /**
  365. * 根据值来源和控件类型控制 超连接 选项 显示
  366. * @param vf
  367. * @param ct
  368. * @param value
  369. */
  370. function hdlIsWebSignShow(ft,vf,value){
  371. $("#isWebSign").removeAttr("disabled"); //恢复之前的禁用WEB签章
  372. //Office和WEB签章
  373. if(value==12||value==21){
  374. $("#trRule").hide();
  375. $("#trDict").hide();
  376. $("#trScript").hide();
  377. $("#trScriptID").hide();
  378. $("#trOption").hide();
  379. $("#showCurUserTr").hide();
  380. $("#showCurOrgTr").hide();
  381. // $("#showCurUserTr").hide();
  382. // $("#showCurOrgTr").hide();
  383. $("#spanDateFormat").hide();
  384. $("#isWebSign").removeAttr("checked"); //去掉WEB签章验证的选中
  385. $("#isWebSign").attr("disabled","disabled"); //禁用WEB签章验证
  386. }
  387. };
  388. /**
  389. * 根据【字段类型】设置控件类型。
  390. * @param fieldType 【字段类型】
  391. */
  392. function setControlByType(fieldType){
  393. var objSelect=$('#controlType');
  394. objSelect.empty();
  395. //控件列表。
  396. $(controlList).each(function(i, d) {
  397. var option = optiontemplate.replaceAll('#value', d.key).replace('#text', d.value);
  398. //文本类型
  399. if(fieldType==varchar_){
  400. if(d.key!="10" )
  401. objSelect.append(option);
  402. }else if(fieldType==clob_){
  403. //富文本框和文件类型
  404. if(d.key=="2" || d.key=="10" )
  405. objSelect.append(option);
  406. }else if(fieldType==date_ ){
  407. if(d.key=="1" || d.key=="15")
  408. objSelect.append(option);
  409. }
  410. else if(fieldType==number_){
  411. //数字
  412. if(d.key=="1"|| d.key=="11" || d.key=="16" ){//单行文本框、下拉选项、隐藏域
  413. objSelect.append(option);
  414. }
  415. }
  416. });
  417. }
  418. /**
  419. * 设置字段来源。
  420. * @param fieldType
  421. */
  422. function setValueFromByFieldType(fieldType){
  423. var objSelect=$('#valueFrom');
  424. objSelect.empty();
  425. $(varFromList).each(function(i, d) {
  426. var key=d.key;
  427. var option = optiontemplate.replaceAll('#value', key).replace('#text', d.value);
  428. //文本
  429. if(fieldType==varchar_){
  430. objSelect.append(option);
  431. //数字
  432. }else if(fieldType==number_){
  433. if(key!=3){
  434. objSelect.append(option);
  435. }
  436. //大文本
  437. }else if(fieldType==clob_){
  438. if(key==0){
  439. objSelect.append(option);
  440. }
  441. //日期
  442. }else{
  443. if(key!=3){
  444. objSelect.append(option);
  445. }
  446. }
  447. });
  448. }
  449. /**
  450. * 添加列时初始化窗体的界面。
  451. * 设置数据。
  452. */
  453. function initAdd(_isExternal){
  454. isExternal=_isExternal;
  455. $("#spanIntLen,#spanCoin,#spanCoinType,#spanDecimalLen,#spanDecimalLen,#showidentity,#trDict,#trScript,#trScriptID,#trOption,#spanDateFormat,#trCondition").hide();
  456. setControlByType("varchar");
  457. //动态加载数据字典。
  458. JsLoader.LoadCount=1;
  459. JsLoader.Load(__ctx +"/js/lg/plugins/htCatCombo.js","javascript1");
  460. var fieldType=$("#fieldType").val();
  461. if(fieldType=='number'){
  462. $("#showComdify").show();
  463. $("#spanCoin").show();
  464. }else{
  465. $("#showComdify").hide();
  466. $("#spanCoin").hide();
  467. }
  468. }
  469. /**
  470. * 重置字段。
  471. */
  472. function resetField(){
  473. $("#spanIntLen,#spanDecimalLen,#spanDecimalLen,#trDict,#trScript,#trScriptID,#trOption,#spanDateFormat,#trCondition,#showIsReference,#showidentity,#trUpLoad,#fromTypeTr,#fromTypeScriptTr").hide();
  474. setControlByType("varchar");
  475. $("#fieldName,#fieldDesc").val("");
  476. $("#isRequired,#isFlowVar,#isQuery,#isReference,#isShowComdify,#coin,#isCurrentDate,#showCurUser,#showCurOrg,#showCurPos,#isWebSign,#isShowidentity").attr("checked",false);
  477. $("#isList").attr("checked","checked");
  478. $("#fieldType").val("varchar").change();
  479. $("#charLen").val(100);
  480. $("#intLen").val(13);
  481. $("#decimalLen").val(0);
  482. $("tr.normalTr",$("#option-table")).remove();
  483. $("tr.editable-tr",$("#option-table")).remove();
  484. //设置日期
  485. $("#selDateFormat").val("yyyy-MM-dd");
  486. //重置验证规则
  487. $("#validRule").get(0).selectedIndex=0;
  488. $("#identityName,#identityAlias").val("");
  489. $("#script,#scriptID,#fromScript").val("");
  490. $("#isShowComdify").attr('disabled', false);
  491. $("#fromType").val("all");
  492. }
  493. /**
  494. * 设置字段的长度。
  495. */
  496. function setFieldLengthByFieldValue(filed){
  497. if(filed.fieldType==varchar_){
  498. var charLen=parseInt( $("#charLen").val());
  499. filed.charLen=charLen;
  500. }
  501. else if(filed.fieldType==number_){
  502. var intLen=parseInt($("#intLen").val());
  503. var decimalLen=parseInt($("#decimalLen").val());
  504. filed.intLen=intLen;
  505. filed.decimalLen=decimalLen;
  506. }
  507. }
  508. /**
  509. * 根据值来源设置相应的字段。
  510. * @param field
  511. */
  512. function setFieldByValueFrom(field){
  513. var from=parseInt( field.valueFrom);
  514. switch(from){
  515. //表单
  516. case 0:
  517. break;
  518. //1,2脚本
  519. case 1:
  520. case 2:
  521. var ctlType=$("#controlType").val();
  522. var rtn=isExecutorSelector(ctlType);
  523. if(rtn){
  524. field.scriptID=$("#scriptID").val();
  525. }
  526. field.script=$("#script").val();
  527. break;
  528. //流水号
  529. case 3:
  530. field.identity=$("#identityAlias").val();
  531. field.script=$("#identityName").val();
  532. break;
  533. }
  534. }
  535. /**
  536. * 根据字段信息设置控件长度。
  537. * @param field
  538. */
  539. function setFieldLengthByField(field){
  540. var fieldType=field.fieldType;
  541. switch(fieldType){
  542. case varchar_:
  543. $("#charLen").val(field.charLen);
  544. $("#spanCharLen").show();
  545. $("#spanIntLen,#spanDecimalLen,#showComdify,#spanCoin,#spanCoinType").hide();
  546. break;
  547. case number_:
  548. $("#intLen").val(field.intLen);
  549. $("#decimalLen").val(field.decimalLen);
  550. $("#spanCharLen").hide();
  551. $("#spanIntLen,#spanDecimalLen,#showComdify,#spanCoin").show();
  552. break;
  553. default:
  554. $("#spanCharLen,#spanIntLen,#spanDecimalLen,#showComdify,#spanCoin,#spanCoinType").hide();
  555. break;
  556. }
  557. }
  558. /**
  559. * 根据数据来源,设置相关控件的状态。
  560. * @param field
  561. */
  562. function setValueFromByField(field){
  563. $("#valueFrom").val(field.valueFrom);
  564. var from=parseInt(field.valueFrom);
  565. switch(from){
  566. //表单输入
  567. case 0:
  568. $("#trScript,#trScriptID").hide();
  569. break;
  570. //脚本输入
  571. case 1://显示脚本
  572. case 2://隐藏脚本
  573. var controlType=field.controlType;
  574. if(isExecutorSelector(controlType)){
  575. $("#trScriptID").show();
  576. $("#scriptID").val(field.scriptID);
  577. }
  578. $("#trScript").show();
  579. $("#showidentity").hide();
  580. $("#script").val(field.script);
  581. break;
  582. //流水号
  583. case 3:
  584. $("#trScript").hide();
  585. $("#trScript,ID").hide();
  586. $("#showidentity").show();
  587. $("#identityAlias").val(field.identity);
  588. $("#identityName").val(field.identityName);
  589. break;
  590. }
  591. }
  592. /**
  593. * 设置验证规则
  594. * @param field
  595. */
  596. function setValidRuleByField(field){
  597. var validRule=field.validRule;
  598. if(field.fieldType==varchar_ || field.fieldType==clob_){
  599. $("#trRule").show();
  600. $("#validRule").val(validRule);
  601. }
  602. else{
  603. $("#trRule").hide();
  604. }
  605. }
  606. /**
  607. * 设置字段的验证规则。
  608. * @param field
  609. */
  610. function setFieldByValidRule(field){
  611. if(field.fieldType==varchar_ || field.fieldType==clob_ ){
  612. field.validRule=$("#validRule").val();
  613. }
  614. }
  615. function getOptionData(){
  616. var optionAry = [];
  617. $("tr.editable-tr",$("#option-table")).each(function(){
  618. var me = $(this),
  619. optionKey = $("input[name='optionKey']",me).val();
  620. var optionValue = [];
  621. $("input.long",me).each(function(){
  622. var me = $(this),
  623. name = me.attr("name"),
  624. val = me.val(),
  625. memo = me.attr("title");
  626. optionValue.push({lantype:name,lanres:val,lanmemo:memo});
  627. });
  628. optionAry.push({key:optionKey,value:optionValue});
  629. });
  630. return optionAry;;
  631. };
  632. //兼容3.2版本
  633. function getOptionData1(){
  634. var optionAry = [];
  635. var controlType = $("#controlType").val();
  636. $("tr.editable-tr",$("#option-table")).each(function(){
  637. var me = $(this);
  638. var optionKey = $("input[name='optionKey']",me).val();
  639. var optionValue = $("input[name='optionValue']",me).val();
  640. var isDefault = "-1";
  641. isDefault = $("input[name='isDefault']:checked",me).val();
  642. if(isDefault!="1"){
  643. isDefault="0";
  644. }
  645. optionAry.push({key:optionKey,value:optionValue,isDefault:isDefault});
  646. });
  647. return optionAry;
  648. };
  649. /**
  650. * 从页面控件获取字段数据对象。(编辑)
  651. * @returns
  652. */
  653. function getField(){
  654. var field={charLen:0,intLen:0,decimalLen:0,dictType:'',identity:'',validRule : '',isDeleted:0,
  655. valueFrom : 0,script:'',controlType : 1};
  656. field.fieldName=$("#fieldName").val();
  657. field.fieldDesc=$("#fieldDesc").val();
  658. field.fieldType=$("#fieldType").val();
  659. field.controlType=$("#controlType").val();
  660. //设置3:数据字典
  661. if(field.controlType==3){
  662. field.dictType=$("#dictType").val();
  663. }
  664. //控件类型为下拉框,复选框,单选按钮。
  665. //11,下拉选项
  666. //13,复选框
  667. //14,单选按钮
  668. if(field.controlType==11 || field.controlType==13 || field.controlType==14){
  669. var inputValues = $("input[name='optionValue']",$("#option-table")),
  670. optsAry;
  671. if(inputValues.length>0){//3.2版本
  672. optsAry = getOptionData1();
  673. }else{
  674. optsAry = getOptionData();
  675. }
  676. field.options = JSON2.stringify(optsAry);
  677. }
  678. //设置日期格式
  679. //数据类型为日期的时候,需要设置日期格式。
  680. //15,日期控件
  681. if(field.controlType==15 || field.fieldType==date_){
  682. var isCurrentDate=$("#isCurrentDate").attr("checked");
  683. var format=$("#selDateFormat").val().trim();
  684. var json;
  685. if(isCurrentDate!=undefined){
  686. json={"format":format,"displayDate":1};
  687. }else{
  688. json={"format":format,"displayDate":0};
  689. }
  690. field.ctlProperty=JSON2.stringify(json);
  691. }
  692. // 处理人员选择器和显示当前用户
  693. if(field.controlType==4|| field.controlType==8){
  694. var json={};
  695. if(field.controlType==4){
  696. var showCurUser=$("#showCurUser:checked").val()? 1:0;
  697. json.showCurUser = showCurUser;
  698. }
  699. var opt = $("#fromType").find('option:selected');
  700. var fromType = opt.attr("type");
  701. var typeVal = null;
  702. if(fromType == 'script'){
  703. typeVal = $("#fromScript").val();
  704. }else{
  705. typeVal = opt.val();
  706. }
  707. var scope ={};
  708. scope.type = fromType;
  709. scope.value = typeVal;
  710. json.scope = scope;
  711. field.ctlProperty=JSON2.stringify(json);
  712. }
  713. // 显示当前组织
  714. if(field.controlType==6 ||field.controlType==18){
  715. var json={};
  716. if(field.controlType==18){
  717. var showCurOrg=$("#showCurOrg:checked").val()? 1:0;
  718. json={"showCurOrg":showCurOrg};
  719. }
  720. var opt = $("#fromType").find('option:selected');
  721. var fromType = opt.attr("type");
  722. var typeVal = null;
  723. if(fromType == 'script'){
  724. typeVal = $("#fromScript").val();
  725. }else{
  726. typeVal = opt.val();
  727. }
  728. var scope ={};
  729. scope.type = fromType;
  730. scope.value = typeVal;
  731. json.scope = scope;
  732. field.ctlProperty=JSON2.stringify(json);
  733. }
  734. // 显示当前岗位
  735. if(field.controlType==19 || field.controlType==7){
  736. var json={};
  737. if(field.controlType==19){
  738. var showCurPos=$("#showCurPos:checked").val()?1:0;
  739. json={"showCurPos":showCurPos}
  740. }
  741. var opt = $("#fromType").find('option:selected');
  742. var fromType = opt.attr("type");
  743. var typeVal = null;
  744. if(fromType == 'script'){
  745. typeVal = $("#fromScript").val();
  746. }else{
  747. typeVal = opt.val();
  748. }
  749. var scope ={};
  750. scope.type = fromType;
  751. scope.value = typeVal;
  752. json.scope = scope;
  753. field.ctlProperty=JSON2.stringify(json);
  754. }
  755. //必填
  756. field.isRequired=$("#isRequired").attr("checked")?1:0;
  757. //显示到列表
  758. field.isList=$("#isList").attr("checked")?1:0;
  759. //作为查询条件
  760. field.isQuery=$("#isQuery").attr("checked")?1:0;
  761. //是否流程变量
  762. field.isFlowVar=$("#isFlowVar").attr("checked")?1:0;
  763. //是否Web签章
  764. field.isWebSign=$("#isWebSign").attr("checked")?1:0;
  765. //是否直接上传文件
  766. if(field.controlType==9) {
  767. var isDirectUpLoad=$('#isDirectUpLoad').attr('checked')?1:0;
  768. json={"isDirectUpLoad":isDirectUpLoad}
  769. field.ctlProperty=JSON2.stringify(json);
  770. }
  771. //是否直接上传正文
  772. if(field.controlType==23) {
  773. var isDirectUpLoad=$('#isDirectUpLoad').attr('checked')?1:0;
  774. json={"isDirectUpLoad":isDirectUpLoad}
  775. field.ctlProperty=JSON2.stringify(json);
  776. }
  777. //是否作为超链接
  778. if(isExecutorSelector(field.controlType)){
  779. field.isReference=$("#isReference").attr("checked")?1:0;
  780. //json={"showCurPos":showCurPos}
  781. //field.ctlProperty=JSON2.stringify(json);
  782. }
  783. if(field.fieldType==number_){
  784. var showCoin=$("input[name='coin']:checked").val();
  785. var showComdifyValue=$("#isShowComdify").attr("checked")?1:0;
  786. var json={};
  787. if(showCoin){
  788. var coinValue=$("#CoinType").val();
  789. json.coinValue=coinValue;
  790. json.isShowComdify=showComdifyValue;
  791. json.decimalValue=parseInt($("#decimalLen").val());
  792. field.ctlProperty=JSON2.stringify(json);
  793. }else{
  794. json.coinValue="";
  795. json.isShowComdify=showComdifyValue;
  796. json.decimalValue=parseInt($("#decimalLen").val());
  797. field.ctlProperty=JSON2.stringify(json);
  798. }
  799. }
  800. // if($("input[name='isShowComdify']:checked").val()){
  801. // json={"isShowComdify":true};
  802. // field.ctlProperty=JSON2.stringify(json);
  803. // }else{
  804. // json={"isShowComdify":false};
  805. // field.ctlProperty=JSON2.stringify(json);
  806. // }
  807. //
  808. // field.ccisread=$("#ccisread").attr("checked")?1:0;
  809. // field.isShowComdify=$("#isShowComdify").attr("checked")?1:0;
  810. //field.isAllowMobile=$('#isAllowMobile').attr('checked')?1:0;
  811. //设置字段长度
  812. setFieldLengthByFieldValue(field);
  813. //值来源
  814. field.valueFrom =$("#valueFrom").val();
  815. //值来源为流水号
  816. if(field.valueFrom==3){
  817. field.controlType=1;
  818. //isShowidentity 流水号是否显示在启动流程页面中 1=显示, 0=不显示
  819. if($("input[name='isShowidentity']:checked").val()){
  820. json={"isShowidentity":1};
  821. field.ctlProperty=JSON2.stringify(json);
  822. }else{
  823. json={"isShowidentity":0};
  824. field.ctlProperty=JSON2.stringify(json);
  825. }
  826. }
  827. //根据来源设置对应的属性值。
  828. setFieldByValueFrom(field);
  829. //设置验证规则
  830. setFieldByValidRule(field);
  831. //设置条件
  832. setCondition(field);
  833. //设置表单变量
  834. setShowFlowVar(field.controlType);
  835. return field;
  836. }
  837. /**
  838. * 控件类型或者字段类型
  839. * 限制表单变量
  840. */
  841. function setShowFlowVar(controlType){
  842. //附件,office
  843. if(isHideFlowVar(controlType)){
  844. $("#showFlowVar").hide()
  845. $("#isFlowVar").attr("checked",false);
  846. }else{
  847. $("#showFlowVar").show();
  848. }
  849. }
  850. function isHideFlowVar(controlType){
  851. if($.isEmpty(controlType)) return false;
  852. if(controlType==2 || controlType == 9 || controlType==10 || controlType== 12 || controlType== 21|| controlType == 23) return true;
  853. return false;
  854. }
  855. /**
  856. * 设置条件
  857. */
  858. function setCondition(field){
  859. if(field.isQuery==0){
  860. return;
  861. }
  862. var condition=$("#selCondition").val();
  863. var condValFrom=$("#selValueFrom").val();
  864. var condValue=$("#selValInput").val();
  865. if(field.ctlProperty!=null && field.ctlProperty!=""){
  866. var json=jQuery.parseJSON(field.ctlProperty);
  867. json.condition=condition;
  868. json.condValFrom=condValFrom;
  869. json.condValue=condValue;
  870. field.ctlProperty=JSON2.stringify(json) ;
  871. }
  872. else{
  873. var json={
  874. condition:condition,
  875. condValFrom:condValFrom,
  876. condValue:condValue
  877. };
  878. field.ctlProperty=JSON2.stringify(json);
  879. }
  880. }
  881. function initNumber(field){
  882. if(field.fieldType=='number'){
  883. $("#showComdify").show();
  884. $("#spanCoin").show();
  885. try{
  886. var property=eval("(" + field.ctlProperty +")");
  887. $("#isShowComdify").attr("checked",property.isShowComdify);
  888. if(property.coinValue!=null && property.coinValue!=""){
  889. $("#isShowComdify").attr('disabled', true);
  890. $("#spanCoinType").show();
  891. $("#CoinType").val(property.coinValue);
  892. $("#coin").attr("checked","checked");
  893. }
  894. }catch(e){
  895. }
  896. }else{
  897. $("#showComdify").hide();
  898. $("#spanCoin").hide();
  899. $("#spanCoinType").hide();
  900. }
  901. }
  902. /**
  903. * 根据字段设置页面控件状态。
  904. */
  905. function initControlByField(field,allowEditColName,_isExternal){
  906. //设置是否外部表。
  907. isExternal=_isExternal;
  908. $("#fieldName").val(field.fieldName);
  909. $("#fieldDesc").val(field.fieldDesc);
  910. $("#fieldType").val(field.fieldType);
  911. initNumber(field);
  912. //设置字段选项。
  913. $("#isRequired").attr("checked",field.isRequired==1);
  914. $("#isList").attr("checked",field.isList==1);
  915. $("#isQuery").attr("checked",field.isQuery==1);
  916. $("#isFlowVar").attr("checked",field.isFlowVar==1);
  917. //$("#isAllowMobile").attr("checked",field.isAllowMobile==1);
  918. $("#isReference").attr("checked",field.isReference==1);
  919. $("#isWebSign").attr("checked",field.isWebSign==1);
  920. // $("#isReference").attr("checked",field.isReference==1);
  921. // $("#ccisread").attr("checked",field.ccisread==1);
  922. //设置数据长度
  923. setFieldLengthByField(field);
  924. //日期类型
  925. if(field.fieldType==date_ || field.controlType==15){
  926. $("#spanDateFormat").show();
  927. try{
  928. var property=eval("(" + field.ctlProperty +")");
  929. $("#selDateFormat").val(property.format);
  930. if(property.displayDate==1){
  931. $("#isCurrentDate").attr("checked","checked");
  932. }
  933. }catch(e){
  934. }
  935. }
  936. //设置条件字段
  937. bindCondition(field);
  938. //设置表单变量
  939. setShowFlowVar(field.controlType);
  940. //修改控件是否允许编辑字段的名字和数据类型。
  941. setEditStatus(allowEditColName);
  942. //渲染数据字典。
  943. JsLoader.LoadCount=1;
  944. JsLoader.Load(__ctx + "/js/lg/plugins/htCatCombo.js","javascript1");
  945. var ft=field.fieldType;
  946. var vf=field.valueFrom;
  947. var ct=field.controlType;
  948. hdlValueFromShow(ft,vf);
  949. hdlControlTypeShow(ft,vf,ct);
  950. hdlIdentityTrShow(ft,vf,ct,field.identity,field.script);
  951. hdlScriptTrShow(ft,vf,ct,field.script);
  952. hdlScriptIdTrShow(ft,vf,ct,field.scriptID);
  953. hdlOptionTrShow(ft,vf,ct,field.options);
  954. hdlRuleTrShow(ft,vf,ct,field.validRule);
  955. hdlDictTrShow(ft,vf,ct,field.dictType);
  956. hdlIsReferenceShow(vf,ct,field.isReference);
  957. var curUser=null,curOrg=null,curPos=null,scope=null;
  958. if(field.ctlProperty){
  959. var prop = $.parseJSON(field.ctlProperty);
  960. curUser=prop.showCurUser||null;
  961. curOrg=prop.showCurOrg||null;
  962. curPos=prop.showCurPos||null;
  963. scope = prop.scope||null;
  964. }
  965. hdlShowCurUserTrShow(ft,vf,ct,curUser,scope);
  966. hdlShowCurOrgTrShow(ft,vf,ct,curOrg,scope);
  967. hdlShowCurPosTrShow(ft,vf,ct,curPos,scope);
  968. hdlIsWebSignShow(ft,vf,ct);
  969. var isDirectUpLoad=null;
  970. var isShowidentity=null;
  971. if(field.ctlProperty){
  972. var prop = $.parseJSON(field.ctlProperty);
  973. isDirectUpLoad=prop.isDirectUpLoad||null;
  974. isShowidentity=prop.isShowidentity||null;
  975. $("#isShowidentity").attr("checked",isShowidentity==1);
  976. }
  977. hdlShowUpLoadTrShow(ft,vf,ct,isDirectUpLoad);
  978. }
  979. /**
  980. * 设置控件状态,是否允许编辑。
  981. * @param allowEditColName
  982. */
  983. function setEditStatus(allowEditColName){
  984. //if(allowEditColName) return; 改为不设置只读
  985. return;
  986. $("#fieldName").attr('disabled', 'disabled');
  987. $("#charLen").attr('disabled', 'disabled');
  988. $("#intLen").attr('disabled', 'disabled');
  989. $("#decimalLen").attr('disabled', 'disabled');
  990. $("#fieldType").attr('disabled', 'disabled');
  991. if(isExternal==0){
  992. $("#valueFrom").attr('disabled', 'disabled');
  993. $("#controlType").attr('disabled', 'disabled');
  994. }
  995. /*
  996. if(isFlowVar){
  997. $("#isFlowVar").attr('disabled', 'disabled');
  998. }*/
  999. }
  1000. /**
  1001. * 绑定表和字段数据。
  1002. * @param table
  1003. */
  1004. function bindTable(data,allowEditTbColName,mainTableIsPublished){
  1005. var table=data.table;
  1006. $("#name").val(table.tableName);
  1007. $(":radio[name='deleteType'][value="+table.deleteType+"]").attr("checked","checked");
  1008. //禁止编辑
  1009. if(!allowEditTbColName){
  1010. $("#name").attr('disabled', 'disabled');
  1011. $(":radio[name='isMain']").attr('disabled', 'disabled');
  1012. $("#mainTable").attr('disabled', 'disabled');
  1013. }
  1014. //已生成的表不能再修改 是否主表 字段
  1015. if(table.isPublished){
  1016. $(":radio[name='isMain']").attr('disabled', 'disabled');
  1017. }
  1018. $("#comment").val(table.tableDesc);
  1019. $(":radio[name='isMain'][value="+table.isMain+"]").attr("checked","checked");
  1020. //是否是子表
  1021. if(table.isMain==0 ){
  1022. if(!allowEditTbColName && table.isPublished == 1) {
  1023. var href = __ctx + '/platform/form/bpmFormTable/get.ht?canClose=1&hasClose=true&tableId='+table.mainTableId;
  1024. $("a.moreinfo",$("#showMainTable")).attr("hrefstr",href).append(table.mainTableDesc);
  1025. $('#showMainTable').show();
  1026. $('#spanMainTable').hide();
  1027. }
  1028. else{
  1029. if(table.isPublished ==0){
  1030. $("div.generate").show();
  1031. }
  1032. if(table.mainTableId==null || table.mainTableId=="" ){
  1033. $('#spanMainTable').show();
  1034. $('#showMainTable').hide();
  1035. }
  1036. else{
  1037. var href = __ctx + '/platform/form/bpmFormTable/get.ht?canClose=1&hasClose=true&tableId='+table.mainTableId;
  1038. $("a.moreinfo",$("#showMainTable")).attr("hrefstr",href).append(table.mainTableDesc);
  1039. $("#showMainTable").show();
  1040. }
  1041. }
  1042. }else{
  1043. $('#spanMainTable').hide();
  1044. $('#showMainTable').hide();
  1045. }
  1046. //赋给下拉框,这个下拉框只包含未生成的主表列表。
  1047. $("#mainTable").val(table.mainTableId);
  1048. //将主表id赋给隐藏表单。
  1049. $("#mainTableId").val(table.mainTableId);
  1050. if(mainTableIsPublished){
  1051. $("#tableName").val(table.mainTableDesc);
  1052. }
  1053. var conf={showDel:false};
  1054. if(!allowEditTbColName){
  1055. conf.showDel=1;
  1056. }
  1057. var fieldList=data.fieldList;
  1058. TableRow.fieldManage.setFields(fieldList);
  1059. $("#tableColumnItem>tbody").append(TableRow.fieldManage.getHtml(conf));
  1060. handisList();
  1061. //$("#tableColumnItem>tbody tr").data("isAllowEdit",allowEditTbColName);
  1062. if(!allowEditTbColName){
  1063. $("[name=isFlowVar]:checked").each(function(){
  1064. var _this = $(this);
  1065. _this.attr("disabled","disabled");
  1066. _this.data("isFlowVar",true);
  1067. });
  1068. }
  1069. }
  1070. /**
  1071. * 绑定字段。
  1072. * @param table
  1073. */
  1074. function bindExtTable(data,hasForm){
  1075. var table=data.table;
  1076. $("#name").val(table.tableName);
  1077. //禁止编辑
  1078. $("#name").attr('disabled', 'disabled');
  1079. $("#comment").val(table.tableDesc);
  1080. var fieldList=data.fieldList;
  1081. TableRow.setAllowEditColName(false);
  1082. TableRow.fieldManage.setFields(fieldList);
  1083. $("#tableColumnItem>tbody").append(TableRow.fieldManage.getHtml({showDel:false}));
  1084. if(hasForm){
  1085. $("[name=isFlowVar]:checked").each(function(){
  1086. var _this = $(this);
  1087. _this.attr("disabled","disabled");
  1088. _this.data("isFlowVar",true);
  1089. });
  1090. }
  1091. //绑定主键字段下拉框
  1092. bindPkField("pkField",fieldList,table.pkField);
  1093. //绑外键
  1094. bindPkField("relation",fieldList,table.relation);
  1095. var isMain=table.isMain;
  1096. $(":radio[name='isMain'][value="+isMain+"]").attr("checked","checked");
  1097. if(table.isMain==1){
  1098. $("#trSubTable").hide();
  1099. }
  1100. else{
  1101. $("#trSubTable").show();
  1102. }
  1103. $("#mainTableId").val(table.mainTableId);
  1104. $("#mainTableName").val(table.mainTableName);
  1105. //绑定流水号下拉框
  1106. bindIdentity(data.identityList,"");
  1107. }
  1108. /**
  1109. * 绑定主键字段下拉框。
  1110. * @param pkField 控件ID值
  1111. * @param fieldList 字段列表
  1112. * @param defautValue 默认值
  1113. */
  1114. function bindPkField(pkField,fieldList,defautValue){
  1115. var obj=$("#" +pkField);
  1116. for(var i=0;i<fieldList.length;i++){
  1117. var field=fieldList[i];
  1118. var option = optiontemplate.replaceAll('#value', field.fieldName).replace('#text', field.fieldDesc);
  1119. obj.append(option);
  1120. }
  1121. if(defautValue!=undefined && defautValue!=null && defautValue!=""){
  1122. obj.val(defautValue);
  1123. }
  1124. }
  1125. /**
  1126. * 绑定流水号下拉框。
  1127. * @param identityList
  1128. * @param defautValue
  1129. */
  1130. function bindIdentity(identityList,defautValue){
  1131. var obj=$("#keyValue");
  1132. for(var i=0;i<identityList.length;i++){
  1133. var d=identityList[i];
  1134. var option = optiontemplate.replaceAll('#value', d.alias).replace('#text', d.name);
  1135. obj.append(option);
  1136. }
  1137. if(defautValue!=undefined && defautValue==null && defautValue!=""){
  1138. obj.val(defautValue);
  1139. }
  1140. }
  1141. /**
  1142. * 绑定字段条件式。
  1143. * @param dbType
  1144. * @param defaultValue
  1145. */
  1146. function bindCondition(field){
  1147. if(field.isQuery==0) {
  1148. //$("#trCondition").hide();
  1149. return;
  1150. }
  1151. //$("#trCondition").show();
  1152. var fieldType=field.fieldType;
  1153. var prop=field.ctlProperty;
  1154. var jsonObj=null;
  1155. if(prop!=null && prop!=undefined && prop!=""){
  1156. try{
  1157. jsonObj=eval("(" + prop +")");
  1158. }
  1159. catch(e){
  1160. jsonObj=null;
  1161. }
  1162. }
  1163. var obj=$("#selCondition");
  1164. //initCondition(obj,fieldType);
  1165. var valFrom=$('#selValueFrom');
  1166. var value=$('#selValue');
  1167. if(jsonObj!=null){
  1168. //hack ie6
  1169. setTimeout(function(){
  1170. var condition=jsonObj.condition;
  1171. var condValFrom=jsonObj.condValFrom;
  1172. var condValue=jsonObj.condValue;
  1173. obj.val(condition);
  1174. valFrom.val(condValFrom);
  1175. initSelValueFrom(value,condValFrom);
  1176. if(condValFrom==2||condValFrom==3){
  1177. $('#selValInput').val(condValue);
  1178. }else if(condValFrom==1){
  1179. $('#selValInput').html(condValue);
  1180. }
  1181. },100);
  1182. }
  1183. else{
  1184. initSelValueFrom(value,-1);
  1185. }
  1186. }
  1187. /**
  1188. * 在条件下拉框添加字段。
  1189. * @param selObj
  1190. * @param fieldType
  1191. *//*
  1192. function initCondition(selObj,fieldType){
  1193. //在下拉框中设置字段数据类型
  1194. var type=selObj.attr("fieldType");
  1195. if(fieldType==type){
  1196. return;
  1197. }
  1198. selObj.attr("fieldType",fieldType);
  1199. selObj.width(100);
  1200. selObj.empty();
  1201. switch(fieldType){
  1202. case "varchar":
  1203. selObj.append("<option value='='>大于</option>");
  1204. selObj.append("<option value='like'>LIKE</option>");
  1205. selObj.append("<option value='likeEnd'>LIKEEND</option>");
  1206. break;
  1207. case "number":
  1208. selObj.append("<option value='='>大于</option>");
  1209. selObj.append("<option value='>='>大于等于</option>");
  1210. selObj.append("<option value='>'>大于</option>");
  1211. selObj.append("<option value='<'>小于</option>");
  1212. selObj.append("<option value='<='>小于等于</option>");
  1213. break;
  1214. case "date":
  1215. selObj.append("<option value='='>大于</option>");
  1216. selObj.append("<option value='between'>'日期之间'</option>");
  1217. break;
  1218. }
  1219. }
  1220. */
  1221. function initSelValueFrom(selObj,val){
  1222. switch(val){
  1223. case "1":
  1224. var html="<span id='selValInput'>表单输入</span>";
  1225. selObj.html(html);
  1226. break;
  1227. case "2":
  1228. var html="<textarea id='selValInput' cols='40' rows='3'></textarea>";
  1229. selObj.html(html);
  1230. break;
  1231. case "3":
  1232. var html = "<a href='#' class='link var' title='常用脚本' onclick='selSelectScript(this)'>常用脚本</a></br>";
  1233. html+="<textarea id='selValInput' cols='40' rows='3'></textarea>";
  1234. selObj.html(html);
  1235. break;
  1236. default:
  1237. var html="";
  1238. selObj.html(html);
  1239. }
  1240. }
  1241. /**
  1242. * 查询条件处理。
  1243. * @param obj
  1244. *//*
  1245. function changeSelValFrom(obj){
  1246. var val=$(obj).val();
  1247. var selVal=$("#selValue");
  1248. initSelValueFrom(selVal,val);
  1249. }*/
  1250. function selSelectScript(obj) {
  1251. var txtObj=$('#selValInput');
  1252. ScriptDialog({
  1253. callback : function(script) {
  1254. txtObj.val(script);
  1255. }
  1256. });
  1257. };
  1258. /**
  1259. * 根据列类型,处理值来源显示
  1260. * @param fy 字段类型
  1261. */
  1262. function hdlValueFromShow(fy,value){
  1263. var varFromList=[];
  1264. switch(fy){
  1265. case varchar_://文本
  1266. var varFromList=[{key:0,value:'表单输入'},{key:1,value:'脚本运算(显示)'},
  1267. {key:2,value:'脚本运算(不显示)'},{key:3,value:'流水号'}];
  1268. break;
  1269. case clob_://大文本
  1270. var varFromList=[{key:0,value:'表单输入'}];
  1271. break;
  1272. case date_://日期
  1273. var varFromList=[{key:0,value:'表单输入'}];
  1274. break;
  1275. case number_://数字
  1276. var varFromList=[{key:0,value:'表单输入'},{key:1,value:'脚本运算(显示)'},
  1277. {key:2,value:'脚本运算(不显示)'}];
  1278. break;
  1279. }
  1280. var objSelect=$('#valueFrom');
  1281. objSelect.empty();
  1282. $(varFromList).each(function(i, d) {
  1283. var key=d.key;
  1284. var option = $(optiontemplate.replaceAll('#value', key).replace('#text', d.value));
  1285. if(value!=undefined && value!=null && value!=""){
  1286. if(key==value){
  1287. option.attr("selected","selected");
  1288. }
  1289. }
  1290. objSelect.append(option);
  1291. });
  1292. };
  1293. /**
  1294. * 根据字段类型、值来源,处理控件的显示
  1295. * @param ft 字段类型
  1296. * @param vf 值来源
  1297. */
  1298. function hdlControlTypeShow(ft,vf,value){
  1299. vf=""+vf;
  1300. var controlTypeTr = $("#trControlType");
  1301. var controlType = $("#controlType");
  1302. controlType.empty();
  1303. var controlList=[];
  1304. controlTypeTr.hide();
  1305. switch(ft){
  1306. case varchar_://文本
  1307. switch(vf){
  1308. case '0'://表单输入
  1309. controlTypeTr.show();
  1310. controlList =[ {key : '1',value : '单行文本框'}, {key : '2',value : '多行文本框'},
  1311. {key:'10',value:'富文本框'},{key : '3',value : '数据字典'},
  1312. {key : '4',value : '人员选择器(单选)'}, {key : '8',value : '人员选择器(多选)'},
  1313. {key : '17',value :'角色选择器(单选)'},{key : '5',value : '角色选择器(多选)'},
  1314. {key : '18',value : '组织选择器(单选)'},{key : '6',value : '组织选择器(多选)'},
  1315. {key : '19',value : '岗位选择器(单选)'}, {key : '7',value : '岗位选择器(多选)'},
  1316. {key : '16',value : '隐藏域'},{key : '9',value : '文件上传'},
  1317. {key : '11',value : '下拉选项'},{key : '13',value : '复选框'},
  1318. {key : '14',value : '单选按钮'},{key : '12',value : 'office控件'},
  1319. {key : '15',value : '日期控件'},{key : '20',value : '流程引用'},
  1320. {key : '21',value : 'WebSign控件'},{key : '22',value : '图片展示控件'},{key : '23',value : '正文'}
  1321. ];
  1322. break;
  1323. case '1'://脚本输入 (显示)
  1324. case '2'://脚本输入 (隐藏)
  1325. controlTypeTr.show();
  1326. controlList = [ {key : '1',value : '单行文本框'}, {key : '2',value : '多行文本框'},
  1327. {key : '3',value : '数据字典'},
  1328. {key : '4',value : '人员选择器(单选)'}, {key : '8',value : '人员选择器(多选)'},
  1329. {key : '17',value :'角色选择器(单选)'},{key : '5',value : '角色选择器(多选)'},
  1330. {key : '18',value : '组织选择器(单选)'},{key : '6',value : '组织选择器(多选)'},
  1331. {key : '19',value : '岗位选择器(单选)'}, {key : '7',value : '岗位选择器(多选)'},
  1332. {key : '16',value : '隐藏域'},{key : '9',value : '文件上传'},
  1333. {key : '11',value : '下拉选项'},{key : '13',value : '复选框'},
  1334. {key : '14',value : '单选按钮'},
  1335. {key : '15',value : '日期控件'},{key : '20',value : '流程引用'},{key : '23',value : '正文'}];
  1336. break;
  1337. case '3'://流水号
  1338. break;
  1339. }
  1340. break;
  1341. case clob_://大文本
  1342. switch(vf){
  1343. case '0'://表单输入
  1344. controlTypeTr.show();
  1345. controlList = [ {key : '2',value : '多行文本框'},
  1346. {key : '10',value : '富文本框'}];
  1347. break;
  1348. case '1'://脚本输入 (显示)
  1349. case '2'://脚本输入 (隐藏)
  1350. case '3'://流水号
  1351. break;
  1352. }
  1353. break;
  1354. case date_://日期
  1355. switch(vf){
  1356. case '0'://表单输入
  1357. controlTypeTr.show();
  1358. controlList = [ {key : '1',value : '单行文本框'},{key : '15',value : '日期控件'},{key : '16',value : '隐藏域'}];
  1359. break;
  1360. case '1'://脚本输入 (显示)
  1361. case '2'://脚本输入 (隐藏)
  1362. case '3'://流水号
  1363. break;
  1364. }
  1365. break;
  1366. case number_://数字
  1367. switch(vf){
  1368. case '0'://表单输入
  1369. controlList[2] = {key : '11',value : '下拉选项'};
  1370. case '1'://脚本输入 (显示)
  1371. case '2'://脚本输入 (隐藏)
  1372. controlTypeTr.show();
  1373. controlList[0] = {key : '1',value : '单行文本框'};
  1374. controlList[1] = {key : '16',value : '隐藏域'};
  1375. break;
  1376. case '3'://流水号
  1377. break;
  1378. }
  1379. break;
  1380. }
  1381. $(controlList).each(function(i, d) {
  1382. var option =$( optiontemplate.replaceAll('#value', d.key).replace('#text', d.value));
  1383. if(value!=undefined && value!=null && value!=""){
  1384. if(value==d.key){
  1385. option.attr("selected","selected");
  1386. }
  1387. }
  1388. if(isExternal==0){
  1389. controlType.append(option);
  1390. }
  1391. //外部表的情况,不支持选择器类型。
  1392. else{
  1393. if( !isExecutorSelector(d.key)){
  1394. controlType.append(option);
  1395. }
  1396. }
  1397. });
  1398. };
  1399. /**
  1400. * 根据字段类型、值来源和控件类型,处理是否显示当前用户,处理人员限定的范围
  1401. * @param fy 字段类型
  1402. * @param vf 值来源
  1403. * @param ct 控制类型
  1404. */
  1405. function hdlShowCurUserTrShow(fy,vf,ct,value,jsonObj){
  1406. vf=""+vf;
  1407. ct=""+ct;
  1408. var tr=$("#showCurUserTr");
  1409. var fromTypeTr=$("#fromTypeTr");
  1410. var fromTypeScriptTr = $("#fromTypeScriptTr");
  1411. tr.hide();
  1412. fromTypeTr.hide();
  1413. fromTypeScriptTr.hide();
  1414. switch(vf){
  1415. case '0'://表单输入
  1416. switch(ct){
  1417. case '1': //单行文本框
  1418. break;
  1419. case '2': //多行文本框
  1420. break;
  1421. case '3': //数据字典
  1422. break;
  1423. case '4': //人员选择器(单选)
  1424. tr.show();
  1425. fromTypeTr.show();
  1426. handFromType(jsonObj,fromTypeScriptTr);
  1427. break;
  1428. case '8': //人员选择器(多选)
  1429. fromTypeTr.show();
  1430. handFromType(jsonObj,fromTypeScriptTr);
  1431. break;
  1432. case '17': //角色选择器(单选)
  1433. break;
  1434. case '5': //角色选择器(多选)
  1435. break;
  1436. case '18': //组织选择器(单选)
  1437. break;
  1438. case '6': //组织选择器(多选)
  1439. break;
  1440. case '19': //岗位选择器(单选)
  1441. break;
  1442. case '7': //岗位选择器(多选)
  1443. break;
  1444. case '16': //隐藏域
  1445. break;
  1446. case '9': //文件上传
  1447. break;
  1448. case '11': //下拉选项
  1449. break;
  1450. case '13': //复选框
  1451. break;
  1452. case '14': //单选按钮
  1453. break;
  1454. case '12': //Office控件
  1455. break;
  1456. case '15': //日期控件
  1457. break;
  1458. case '20': //流程引用
  1459. break;
  1460. case '21': //WebSign控件
  1461. break;
  1462. case '22': //图片展示控件
  1463. break;
  1464. case '23': //正文
  1465. break;
  1466. }
  1467. break;
  1468. case '1'://脚本输入 (显示)
  1469. case '2'://脚本输入 (隐藏)
  1470. case '3'://流水号
  1471. break;
  1472. }
  1473. if(value){
  1474. $("#showCurUser").attr("checked","checked");
  1475. }
  1476. };
  1477. //处理人员选择器的左边树的控制范围
  1478. function handFromType(scope,ScriptTr){
  1479. if(scope){
  1480. var type = scope.type;
  1481. var typeVal = scope.value;
  1482. if(type == 'script'){
  1483. $("#fromType").val("");
  1484. $(ScriptTr).show();
  1485. $("#fromScript").val(typeVal);
  1486. }else{
  1487. if(typeVal){
  1488. $("#fromType").val(typeVal);
  1489. }
  1490. }
  1491. }
  1492. }
  1493. /**
  1494. * 根据字段类型、值来源和控件类型,处理是否显示直接上传文件
  1495. * @param fy 字段类型
  1496. * @param vf 值来源
  1497. * @param ct 控制类型
  1498. */
  1499. function hdlShowUpLoadTrShow(fy,vf,ct,value){
  1500. vf=""+vf;
  1501. ct=""+ct;
  1502. var tr=$("#trUpLoad");
  1503. tr.hide();
  1504. switch(vf){
  1505. case '0'://表单输入
  1506. switch(ct){
  1507. case '1': //单行文本框
  1508. break;
  1509. case '2': //多行文本框
  1510. break;
  1511. case '3': //数据字典
  1512. break;
  1513. case '4': //人员选择器(单选)
  1514. break;
  1515. case '8': //人员选择器(多选)
  1516. break;
  1517. case '17': //角色选择器(单选)
  1518. break;
  1519. case '5': //角色选择器(多选)
  1520. break;
  1521. case '18': //组织选择器(单选)
  1522. break;
  1523. case '6': //组织选择器(多选)
  1524. break;
  1525. case '19': //岗位选择器(单选)
  1526. break;
  1527. case '7': //岗位选择器(多选)
  1528. break;
  1529. case '16': //隐藏域
  1530. break;
  1531. case '9': //文件上传
  1532. tr.show();
  1533. break;
  1534. case '11': //下拉选项
  1535. break;
  1536. case '13': //复选框
  1537. break;
  1538. case '14': //单选按钮
  1539. break;
  1540. case '12': //Office控件
  1541. break;
  1542. case '15': //日期控件
  1543. break;
  1544. case '20': //流程引用
  1545. break;
  1546. case '21': //WebSign控件
  1547. break;
  1548. case '22': //图片展示控件
  1549. break;
  1550. case '23': //正文
  1551. break;
  1552. }
  1553. break;
  1554. case '1'://脚本输入 (显示)
  1555. case '2'://脚本输入 (隐藏)
  1556. case '3'://流水号
  1557. break;
  1558. }
  1559. if(value!=undefined || value!=null || value!=""){
  1560. if(value==1) {
  1561. $("input[name='isDirectUpLoad']").attr("checked","checked")
  1562. }
  1563. }
  1564. };
  1565. /**
  1566. * 根据字段类型、值来源和控件类型,处理是否显示脚本
  1567. * @param fy 字段类型
  1568. * @param vf 值来源
  1569. * @param ct 控制类型
  1570. */
  1571. function hdlScriptTrShow(ft,vf,ct,value){
  1572. vf=""+vf;
  1573. ct=""+ct;
  1574. var tr=$("#trScript");
  1575. tr.hide();
  1576. switch(vf){
  1577. case '0'://表单输入
  1578. break;
  1579. case '1'://脚本输入 (显示)
  1580. tr.show();
  1581. case '2'://脚本输入 (隐藏)
  1582. tr.show();
  1583. case '3'://流水号
  1584. break;
  1585. }
  1586. if(value!=undefined && value!=null && value!=""){
  1587. $("#script").val(value);
  1588. }
  1589. };
  1590. /**
  1591. * 根据字段类型、值来源和控件类型,处理是否显示脚本ID
  1592. * @param fy 字段类型
  1593. * @param vf 值来源
  1594. * @param ct 控制类型
  1595. */
  1596. function hdlScriptIdTrShow(ft,vf,ct,value){
  1597. vf=""+vf;
  1598. ct=""+ct;
  1599. var tr=$("#trScriptID");
  1600. tr.hide();
  1601. switch(vf){
  1602. case '0'://表单输入
  1603. break;
  1604. case '1'://脚本输入 (显示)
  1605. switch(ct){
  1606. case '1': //单行文本框
  1607. break;
  1608. case '2': //多行文本框
  1609. break;
  1610. case '3': //数据字典
  1611. break;
  1612. case '4': //人员选择器(单选)
  1613. tr.show();
  1614. break;
  1615. case '8': //人员选择器(多选)
  1616. tr.show();
  1617. break;
  1618. case '17': //角色选择器(单选)
  1619. tr.show();
  1620. break;
  1621. case '5': //角色选择器(多选)
  1622. tr.show();
  1623. break;
  1624. case '18': //组织选择器(单选)
  1625. tr.show();
  1626. break;
  1627. case '6': //组织选择器(多选)
  1628. tr.show();
  1629. break;
  1630. case '19': //岗位选择器(单选)
  1631. tr.show();
  1632. break;
  1633. case '7': //岗位选择器(多选)
  1634. tr.show();
  1635. break;
  1636. case '16': //隐藏域
  1637. break;
  1638. case '9': //文件上传
  1639. break;
  1640. case '11': //下拉选项
  1641. break;
  1642. case '13': //复选框
  1643. break;
  1644. case '14': //单选按钮
  1645. break;
  1646. case '12': //Office控件
  1647. break;
  1648. case '15': //日期控件
  1649. break;
  1650. case '20': //流程引用
  1651. tr.show();
  1652. break;
  1653. case '21': //WebSign控件
  1654. break;
  1655. case '22': //图片展示控件
  1656. break;
  1657. case '23': //正文
  1658. break;
  1659. }
  1660. break;
  1661. case '2'://脚本输入 (隐藏)
  1662. switch(ct){
  1663. case '1': //单行文本框
  1664. break;
  1665. case '2': //多行文本框
  1666. break;
  1667. case '3': //数据字典
  1668. break;
  1669. case '4': //人员选择器(单选)
  1670. tr.show();
  1671. break;
  1672. case '8': //人员选择器(多选)
  1673. tr.show();
  1674. break;
  1675. case '17': //角色选择器(单选)
  1676. tr.show();
  1677. break;
  1678. case '5': //角色选择器(多选)
  1679. tr.show();
  1680. break;
  1681. case '18': //组织选择器(单选)
  1682. tr.show();
  1683. break;
  1684. case '6': //组织选择器(多选)
  1685. tr.show();
  1686. break;
  1687. case '19': //岗位选择器(单选)
  1688. tr.show();
  1689. break;
  1690. case '7': //岗位选择器(多选)
  1691. tr.show();
  1692. break;
  1693. case '16': //隐藏域
  1694. break;
  1695. case '9': //文件上传
  1696. break;
  1697. case '11': //下拉选项
  1698. break;
  1699. case '13': //复选框
  1700. break;
  1701. case '14': //单选按钮
  1702. break;
  1703. case '12': //Office控件
  1704. break;
  1705. case '15': //日期控件
  1706. break;
  1707. case '20': //流程引用
  1708. tr.show();
  1709. break;
  1710. case '21': //WebSign控件
  1711. break;
  1712. case '22': //图片展示控件
  1713. break;
  1714. case '23': //正文
  1715. break;
  1716. }
  1717. break;
  1718. case '3'://流水号
  1719. break;
  1720. }
  1721. if(value!=undefined && value!=null && value!=""){
  1722. $("#scriptID").val(value);
  1723. }
  1724. };
  1725. /**
  1726. * 根据字段类型、值来源和控件类型,处理是否显示数据字典
  1727. * @param fy 字段类型
  1728. * @param vf 值来源
  1729. * @param ct 控制类型
  1730. */
  1731. function hdlDictTrShow(ft,vf,ct,value){
  1732. vf=""+vf;
  1733. ct=""+ct;
  1734. var tr=$("#trDict");
  1735. tr.hide();
  1736. switch(vf){
  1737. case '0'://表单输入
  1738. switch(ct){
  1739. case '1': //单行文本框
  1740. break;
  1741. case '2': //多行文本框
  1742. break;
  1743. case '3': //数据字典
  1744. tr.show();
  1745. break;
  1746. case '4': //人员选择器(单选)
  1747. break;
  1748. case '8': //人员选择器(多选)
  1749. break;
  1750. case '17': //角色选择器(单选)
  1751. break;
  1752. case '5': //角色选择器(多选)
  1753. break;
  1754. case '18': //组织选择器(单选)
  1755. break;
  1756. case '6': //组织选择器(多选)
  1757. break;
  1758. case '19': //岗位选择器(单选)
  1759. break;
  1760. case '7': //岗位选择器(多选)
  1761. break;
  1762. case '16': //隐藏域
  1763. break;
  1764. case '9': //文件上传
  1765. break;
  1766. case '11': //下拉选项
  1767. break;
  1768. case '13': //复选框
  1769. break;
  1770. case '14': //单选按钮
  1771. break;
  1772. case '12': //Office控件
  1773. break;
  1774. case '15': //日期控件
  1775. break;
  1776. case '20': //流程引用
  1777. break;
  1778. case '21': //WebSign控件
  1779. break;
  1780. case '22': //图片展示控件
  1781. break;
  1782. case '23': //正文
  1783. break;
  1784. }
  1785. break;
  1786. case '1'://脚本输入 (显示)
  1787. break;
  1788. case '2'://脚本输入 (隐藏)
  1789. break;
  1790. case '3'://流水号
  1791. break;
  1792. }
  1793. if(value!=undefined && value!=null && value!=""){
  1794. $("#dictTypeName").attr("catValue",value);
  1795. }
  1796. };
  1797. /**
  1798. * 根据字段类型、值来源和控件类型,处理是否显示验证规则
  1799. * @param fy 字段类型
  1800. * @param vf 值来源
  1801. * @param ct 控制类型
  1802. */
  1803. function hdlRuleTrShow(ft,vf,ct,value){
  1804. vf=""+vf;
  1805. ct=""+ct;
  1806. var tr=$("#trRule");
  1807. tr.hide();
  1808. switch(vf){
  1809. case '0'://表单输入
  1810. switch(ct){
  1811. case '1': //单行文本框
  1812. case '2': //多行文本框
  1813. tr.show();
  1814. break;
  1815. }
  1816. break;
  1817. case '1'://脚本输入 (显示)
  1818. break;
  1819. case '2'://脚本输入 (隐藏)
  1820. break;
  1821. case '3'://流水号
  1822. break;
  1823. }
  1824. //数字类型不设置表单规则。
  1825. if(ft==number_){
  1826. tr.hide();
  1827. }
  1828. if(value!=undefined && value!=null && value!=""){
  1829. $("#validRule").val(value);
  1830. }
  1831. };
  1832. /**
  1833. * 根据字段类型、值来源和控件类型,处理是否显示流水号
  1834. * @param fy 字段类型
  1835. * @param vf 值来源
  1836. * @param ct 控制类型
  1837. */
  1838. function hdlIdentityTrShow(ft,vf,ct,identityAlias,identityName){
  1839. vf=""+vf;
  1840. ct=""+ct;
  1841. var tr=$("#showidentity");
  1842. tr.hide();
  1843. switch(vf){
  1844. case '0'://表单输入
  1845. break;
  1846. case '1'://脚本输入 (显示)
  1847. break;
  1848. case '2'://脚本输入 (隐藏)
  1849. break;
  1850. case '3'://流水号
  1851. tr.show();
  1852. if(identityAlias){
  1853. $("#identityAlias").val(identityAlias);
  1854. $("#identityName").val(identityName);
  1855. }
  1856. break;
  1857. }
  1858. };
  1859. /**
  1860. * 根据字段类型、值来源和控件类型,处理是否显示数据字典
  1861. * @param fy 字段类型
  1862. * @param vf 值来源
  1863. * @param ct 控制类型
  1864. */
  1865. function hdlShowCurOrgTrShow(ft,vf,ct,value,jsonObj){
  1866. vf=""+vf;
  1867. ct=""+ct;
  1868. var tr=$("#showCurOrgTr");
  1869. var fromTypeTr=$("#fromTypeTr");
  1870. var fromTypeScriptTr = $("#fromTypeScriptTr");
  1871. tr.hide();
  1872. switch(vf){
  1873. case '0'://表单输入
  1874. switch(ct){
  1875. case '1': //单行文本框
  1876. break;
  1877. case '2': //多行文本框
  1878. break;
  1879. case '3': //数据字典
  1880. break;
  1881. case '4': //人员选择器(单选)
  1882. break;
  1883. case '8': //人员选择器(多选)
  1884. break;
  1885. case '17': //角色选择器(单选)
  1886. break;
  1887. case '5': //角色选择器(多选)
  1888. break;
  1889. case '18': //组织选择器(单选)
  1890. tr.show();
  1891. fromTypeTr.show();
  1892. handFromType(jsonObj,fromTypeScriptTr);
  1893. break;
  1894. case '6': //组织选择器(多选)
  1895. fromTypeTr.show();
  1896. handFromType(jsonObj,fromTypeScriptTr);
  1897. break;
  1898. case '19': //岗位选择器(单选)
  1899. break;
  1900. case '7': //岗位选择器(多选)
  1901. break;
  1902. case '16': //隐藏域
  1903. break;
  1904. case '9': //文件上传
  1905. break;
  1906. case '11': //下拉选项
  1907. break;
  1908. case '13': //复选框
  1909. break;
  1910. case '14': //单选按钮
  1911. break;
  1912. case '12': //Office控件
  1913. break;
  1914. case '15': //日期控件
  1915. break;
  1916. case '20':
  1917. break;
  1918. case '21': //WebSign控件
  1919. break;
  1920. case '22': //图片展示控件
  1921. break;
  1922. case '23': //正文
  1923. break;
  1924. }
  1925. break;
  1926. case '1'://脚本输入 (显示)
  1927. break;
  1928. case '2'://脚本输入 (隐藏)
  1929. break;
  1930. case '3'://流水号
  1931. break;
  1932. }
  1933. if(value){
  1934. $("#showCurOrg").attr("checked","checked");
  1935. }
  1936. };
  1937. /**
  1938. * 根据字段类型、值来源和控件类型,处理是否显示数据字典
  1939. * @param fy 字段类型
  1940. * @param vf 值来源
  1941. * @param ct 控制类型
  1942. */
  1943. function hdlShowCurPosTrShow(ft,vf,ct,value,jsonObj){
  1944. vf=""+vf;
  1945. ct=""+ct;
  1946. var tr=$("#showCurPosTr");
  1947. var fromTypeTr=$("#fromTypeTr");
  1948. var fromTypeScriptTr = $("#fromTypeScriptTr");
  1949. tr.hide();
  1950. switch(vf){
  1951. case '0'://表单输入
  1952. switch(ct){
  1953. case '1': //单行文本框
  1954. break;
  1955. case '2': //多行文本框
  1956. break;
  1957. case '3': //数据字典
  1958. break;
  1959. case '4': //人员选择器(单选)
  1960. break;
  1961. case '8': //人员选择器(多选)
  1962. break;
  1963. case '17': //角色选择器(单选)
  1964. break;
  1965. case '5': //角色选择器(多选)
  1966. break;
  1967. case '18': //组织选择器(单选)
  1968. break;
  1969. case '6': //组织选择器(多选)
  1970. break;
  1971. case '19': //岗位选择器(单选)
  1972. tr.show();
  1973. fromTypeTr.show();
  1974. handFromType(jsonObj,fromTypeScriptTr);
  1975. break;
  1976. case '7': //岗位选择器(多选)
  1977. fromTypeTr.show();
  1978. handFromType(jsonObj,fromTypeScriptTr);
  1979. break;
  1980. case '16': //隐藏域
  1981. break;
  1982. case '9': //文件上传
  1983. break;
  1984. case '11': //下拉选项
  1985. break;
  1986. case '13': //复选框
  1987. break;
  1988. case '14': //单选按钮
  1989. break;
  1990. case '12': //Office控件
  1991. break;
  1992. case '15': //日期控件
  1993. break;
  1994. case '20': //流程引用
  1995. break;
  1996. case '21': //WebSign控件
  1997. break;
  1998. case '23': //正文
  1999. break;
  2000. }
  2001. break;
  2002. case '1'://脚本输入 (显示)
  2003. break;
  2004. case '2'://脚本输入 (隐藏)
  2005. break;
  2006. case '3'://流水号
  2007. break;
  2008. }
  2009. if(value){
  2010. $("#showCurPos").attr("checked","checked");
  2011. }
  2012. };
  2013. /**
  2014. * 根据字段类型、值来源和控件类型,处理是否显示下拉选项
  2015. * @param fy 字段类型
  2016. * @param vf 值来源
  2017. * @param ct 控制类型
  2018. */
  2019. function hdlOptionTrShow(ft,vf,ct,value){
  2020. vf=""+vf;
  2021. ct=""+ct;
  2022. var tr=$("#trOption");
  2023. tr.hide();
  2024. switch(ft){
  2025. case varchar_:
  2026. switch(vf){
  2027. case '0'://表单输入
  2028. switch(ct){
  2029. case '1': //单行文本框
  2030. break;
  2031. case '2': //多行文本框
  2032. break;
  2033. case '3': //数据字典
  2034. break;
  2035. case '4': //人员选择器(单选)
  2036. break;
  2037. case '8': //人员选择器(多选)
  2038. break;
  2039. case '17': //角色选择器(单选)
  2040. break;
  2041. case '5': //角色选择器(多选)
  2042. break;
  2043. case '18': //组织选择器(单选)
  2044. break;
  2045. case '6': //组织选择器(多选)
  2046. break;
  2047. case '19': //岗位选择器(单选)
  2048. break;
  2049. case '7': //岗位选择器(多选)
  2050. break;
  2051. case '16': //隐藏域
  2052. break;
  2053. case '9': //文件上传
  2054. break;
  2055. case '11': //下拉选项
  2056. tr.show();
  2057. chrachange("11");
  2058. break;
  2059. case '13': //复选框
  2060. tr.show();
  2061. chrachange("13");//修改默认值的勾选框是复选,如果存在的话
  2062. break;
  2063. case '14': //单选按钮
  2064. tr.show();
  2065. chrachange("14");//修改默认值的勾选框是复选,如果存在的话
  2066. break;
  2067. case '12': //Office控件
  2068. break;
  2069. case '15': //日期控件
  2070. break;
  2071. case '21': //WebSign控件
  2072. break;
  2073. case '22': //图片展示控件
  2074. break;
  2075. case '23': //正文
  2076. break;
  2077. }
  2078. break;
  2079. case '1'://脚本输入 (显示)
  2080. break;
  2081. case '2'://脚本输入 (隐藏)
  2082. break;
  2083. case '3'://流水号
  2084. break;
  2085. }
  2086. break;
  2087. case number_:
  2088. switch(vf){
  2089. case '0'://表单输入
  2090. switch(ct){
  2091. case '1': //单行文本框
  2092. break;
  2093. case '2': //多行文本框
  2094. break;
  2095. case '3': //数据字典
  2096. break;
  2097. case '4': //人员选择器(单选)
  2098. break;
  2099. case '8': //人员选择器(多选)
  2100. break;
  2101. case '17': //角色选择器(单选)
  2102. break;
  2103. case '5': //角色选择器(多选)
  2104. break;
  2105. case '18': //组织选择器(单选)
  2106. break;
  2107. case '6': //组织选择器(多选)
  2108. break;
  2109. case '19': //岗位选择器(单选)
  2110. break;
  2111. case '7': //岗位选择器(多选)
  2112. break;
  2113. case '16': //隐藏域
  2114. break;
  2115. case '9': //文件上传
  2116. break;
  2117. case '11': //下拉选项
  2118. tr.show();
  2119. chrachange("11");
  2120. break;
  2121. case '13': //复选框
  2122. tr.show();
  2123. chrachange("13");//修改默认值的勾选框是复选,如果存在的话
  2124. break;
  2125. case '14': //单选按钮
  2126. tr.show();
  2127. chrachange("14");//修改默认值的勾选框是单选,如果存在的话
  2128. break;
  2129. case '12': //Office控件
  2130. break;
  2131. case '15': //日期控件
  2132. break;
  2133. case '21': //WebSign控件
  2134. break;
  2135. case '22': //图片展示控件
  2136. break;
  2137. case '23': //正文
  2138. break;
  2139. }
  2140. break;
  2141. case '1'://脚本输入 (显示)
  2142. break;
  2143. case '2'://脚本输入 (隐藏)
  2144. break;
  2145. }
  2146. break;
  2147. }
  2148. if(value!=undefined && value!=null && value!=""){
  2149. var optsAry = {};
  2150. try{
  2151. optsAry = eval("("+value+")");
  2152. }
  2153. catch(e){
  2154. }
  2155. initOptionArray(optsAry,ct);
  2156. }
  2157. };
  2158. function chrachange(controlType){
  2159. debugger
  2160. if(controlType=="13"){
  2161. $(".radioDefault").hide();
  2162. $(".checkboxDefault").show();
  2163. }else if(controlType=="14"){
  2164. $(".checkboxDefault").hide();
  2165. $(".radioDefault").show();
  2166. }else if(controlType=="11"){
  2167. $(".checkboxDefault").hide();
  2168. $(".radioDefault").show();
  2169. }
  2170. }
  2171. function initOptionArray(json,ct) {
  2172. var tbody = $('#option-table>tbody');
  2173. if (typeof(json)!=undefined && json!=null && json != '' && json.length>0){ //有数据时
  2174. for ( var i = 0, c; c = json[i++];) {
  2175. var tr = addColumn1(c);
  2176. tbody.append(tr);
  2177. }
  2178. }else{
  2179. if(ct=='11'){//这里是修复了下拉框选项为null时的BUG by liyj
  2180. return;
  2181. }
  2182. var value = [];
  2183. value.lantype=" ";
  2184. value.lanmemo=" ";
  2185. value.lanres=" ";
  2186. var data ={key:" ",value:value}; //key 为一个空格
  2187. var normalTr = addNormalColumn(data),
  2188. newTr = addColumn(data);
  2189. tbody.append(normalTr,newTr.hide());
  2190. }
  2191. };
  2192. /**
  2193. * 终止事件冒泡
  2194. * @param {[type]} e [description]
  2195. * @return {[type]} [description]
  2196. */
  2197. function stopBubble(e) {
  2198. if (e && e.stopPropagation) e.stopPropagation();
  2199. else window.event.cancelBubble = true;
  2200. };
  2201. /**
  2202. * 添加选项(兼容3.2版本)
  2203. * @param {[json]} data [数据]
  2204. * @return {[type]} [description]
  2205. */
  2206. function addColumn1(data){
  2207. var hiddenTable = $("#hiddenTable"),
  2208. tmpTr = $("tr.editable-tr",hiddenTable),
  2209. newTr = tmpTr.clone();
  2210. if(typeof(data.key)!= undefined && data.key!=null && data.key!=''){
  2211. $("input[name='optionKey']",newTr).val(data.key);
  2212. $("input[name='optionValue']",newTr).val(data.value);
  2213. var controlType = $("#controlType").val();
  2214. var isDefault = data.isDefault;
  2215. if((controlType=="11" || controlType=="14") && isDefault =="1"){
  2216. $(".radioDefault",newTr).attr("checked","checked");
  2217. }else if ((controlType=="13") && isDefault =="1"){
  2218. $(".checkboxDefault",newTr).attr("checked","checked");
  2219. }
  2220. }
  2221. return newTr;
  2222. };
  2223. /**
  2224. * 添加选项
  2225. * @param {[json]} data [数据]
  2226. * @return {[type]} [description]
  2227. */
  2228. function addColumn(data){
  2229. var hiddenTable = $("#hiddenTable"),
  2230. tmpTr = $("tr.editable-tr",hiddenTable),
  2231. newTr = tmpTr.clone();
  2232. if( typeof(data.key)!= undefined && data.key!=null && data.key!=''){
  2233. $("input[name='optionKey']",newTr).val(data.key);
  2234. $("input.long",newTr).each(function(){
  2235. var opinionValue = data.value;
  2236. var me = $(this).val(''),
  2237. name = me.attr("name");
  2238. for(var i=0,c;c=opinionValue[i++];){
  2239. if(c.lantype==name){
  2240. me.val(c.lanres);
  2241. }
  2242. }
  2243. });
  2244. }
  2245. return newTr;
  2246. };
  2247. function addNormalColumn(data){
  2248. var hiddenTable = $("#hiddenTable");
  2249. var tmpTr = $("tr.normalTr",hiddenTable);
  2250. var newTr = tmpTr.clone();
  2251. if( typeof(data.key)!= undefined && data.key!=null && data.key!=''){
  2252. var lanDetail = $("span.lanDetail",newTr);
  2253. var curLan = $("span.curLan",newTr);
  2254. var selector = "input[name='"+locale+"']";
  2255. var detail = getSelectValue(data.value);
  2256. var curLanMsg = getCurLan(data.value);
  2257. lanDetail.text(detail);
  2258. curLan.text(curLanMsg);
  2259. }
  2260. return newTr;
  2261. }
  2262. /**
  2263. * 获取选项值
  2264. */
  2265. function getSelectValue(val){
  2266. if(!val||val.length==0)return '';
  2267. var str = [];
  2268. if(val.length==0)return str;
  2269. for(var i=0,c;c=val[i++];){
  2270. str.push('['+c.lanmemo + ']' + c.lanres);
  2271. }
  2272. return str.join(' ');
  2273. };
  2274. /**
  2275. * 获取当前语言对应的选项值
  2276. */
  2277. function getCurLan(val){
  2278. if(!val||val.length==0)return '';
  2279. var str = "";
  2280. if(val.length==0)return str;
  2281. for(var i=0,c;c=val[i++];){
  2282. if(c.lantype==locale){
  2283. str = c.lanres;
  2284. return str;
  2285. }
  2286. }
  2287. return str;
  2288. };
  2289. /**
  2290. * 根据字段类型、值来源和控件类型,处理是否显示千分位显示
  2291. * @param fy 字段类型
  2292. */
  2293. function hdlShowComdifyShow(ft,value){
  2294. var showComdify=$("#showComdify");
  2295. showComdify.hide();
  2296. switch(ft){
  2297. case number_:
  2298. showComdify.show();
  2299. }
  2300. };
  2301. /**
  2302. * 根据值来源和控件类型控制 超连接 选项 显示
  2303. * @param vf
  2304. * @param ct
  2305. * @param value
  2306. */
  2307. function hdlIsReferenceShow(vf,ct,value){
  2308. ct = ""+ct;
  2309. var showIsLink = $("#showIsReference");
  2310. var isLink = $("#isReference");
  2311. showIsLink.hide();
  2312. switch(ct){
  2313. case '4': //人员选择器(单选)
  2314. case '8': //人员选择器(多选)
  2315. case '17': //角色选择器(单选)
  2316. case '5': //角色选择器(多选)
  2317. case '18': //组织选择器(单选)
  2318. case '6': //组织选择器(多选)
  2319. case '19': //岗位选择器(单选)
  2320. case '7': //岗位选择器(多选)
  2321. case '20': //流程引用
  2322. showIsLink.show();
  2323. break;
  2324. }
  2325. if(value && value==1){
  2326. isLink.attr("checked","checked");
  2327. }
  2328. };
  2329. /**
  2330. * 根据控件类型改变值的长度
  2331. * @param len
  2332. */
  2333. function hdlCharLen(ct){
  2334. ct=""+ct;
  2335. changeCharLen(2000);
  2336. switch(ct){
  2337. case '2':
  2338. case '3':
  2339. changeCharLen(2000);
  2340. break;
  2341. //部门选择器(单选)
  2342. case '4':
  2343. case '17':
  2344. case '18':
  2345. case '19':
  2346. changeCharLen(2000);
  2347. break;
  2348. //选择器(多选)
  2349. case '5':
  2350. case '6':
  2351. case '7':
  2352. case '8':
  2353. changeCharLen(2000);
  2354. break;
  2355. //隐藏域
  2356. case '16':
  2357. changeCharLen(100);
  2358. break;
  2359. //如果选择文件上传控件,将字符宽度默认修改为2000个字符。
  2360. case '9':
  2361. changeCharLen(2000);
  2362. break;
  2363. //如果选择正文控件,将字符宽度默认修改为2000个字符。
  2364. case '23':
  2365. changeCharLen(2000);
  2366. break;
  2367. //下拉选项,单选框,复选框
  2368. case '11':
  2369. case '13':
  2370. case '14':
  2371. changeCharLen(2000);
  2372. break;
  2373. //日期控件
  2374. case '15':
  2375. changeCharLen(20);
  2376. break;
  2377. case '20':
  2378. case '22':
  2379. changeCharLen(2000);
  2380. break;
  2381. case '12':
  2382. case '21':
  2383. changeCharLen(50);
  2384. break;
  2385. }
  2386. }