objInp.jsp 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626
  1. <%@ page language="java" pageEncoding="UTF-8" isELIgnored="false" %>
  2. <%@ taglib uri="/ssTag" prefix="ss"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta http-equiv="pragma" content="no-cache">
  7. <meta http-equiv="cache-control" content="no-cache">
  8. <meta http-equiv="expires" content="0">
  9. <script type="text/javascript" src="/ss/jquery/jquery.js"></script>
  10. <script src="/js/load.js"></script> <%-- ="/newUI/ss/js/base.js"。Lin(新UI) --%>
  11. <script type="text/javascript" src="/js/display.js"></script>
  12. <script type="text/javascript" src="/js/form.js"></script>
  13. <%-- <script type="text/javascript" src="/ss/js/display.js"></script>--%>
  14. <%-- <script type="text/javascript" src="/ss/jquery/jquery.js"></script>--%>
  15. <%-- <script type="text/javascript" src="/ss/nicescroll/jquery.nicescroll.js"></script>--%>
  16. <%-- <script type="text/javascript" src="/ss/nicescroll/jquery.nicescroll.iframehelper.min.js"></script> --%>
  17. <%-- <script type="module" src="/newUI/ss/js/validation-manager.js"></script>
  18. <script type="module" src="/newUI/ss/js/validator-rules.js"></script> --%>
  19. <script>
  20. window.ss.dom.formElemConfig = window.ss.dom.formElemConfig || {};<%-- 放当前页面表单元素配置的变量--%>
  21. window.ss.dom.btnElemConfig = window.ss.dom.btnElemConfig|| {};<%-- 放当前页面按钮元素配置的变量 Ben(20251211) --%>
  22. </script>
  23. <style>
  24. .table-container>tr>th{
  25. width:130px !important;
  26. }
  27. /* 把content-box的高度限制 从公共css 抽到具体有需要的页面 by xu 20251215 */
  28. .form-container .content-box {
  29. height: calc(100% - 80px) !important;
  30. }
  31. </style>
  32. </head>
  33. <body class="env-input-body">
  34. <form method="post" id="app" class="form-container">
  35. <%-- 改为 <data@ss name="inp"/>。Lin
  36. <tab@ss name="include_input"/> --%>
  37. <ss:data name='inp'/>
  38. <div class="content-box fit-height-content">
  39. <jsp:include page="${include_input}" flush="true"/>
  40. <%-- <jsp:include page="/page/2ry_inp.jsp" flush="true"/>--%>
  41. </div>
  42. <div class='bottom-div'>
  43. <ss:equal val='${empty saveDest}' val2='false'>
  44. <%-- 保存按钮 --%>
  45. <ss-bottom-button
  46. text="${saveButtonValue}"
  47. <%-- type="submit"--%>
  48. onclick='ss.form.submit({url:"<ss:serv name='${save}' dest='${saveDest}' parm='${saveParam}'/>",width:${savewidth},height:${saveheight},minHeight:${saveminheight},maxHeight:${savemaxheight}});'
  49. <%-- onclick='wd.display.changeFormAction("<ss:serv name='${save}' dest='${saveDest}' parm='${saveParam}'/>",this,${savewidth},${saveheight},${saveminheight},${savemaxheight});'--%>
  50. icon-class="bottom-div-save"
  51. ></ss-bottom-button>
  52. </ss:equal>
  53. <%-- <div class="bottom-down-div border-top"> --%>
  54. <%-- <ss:equal val='${empty saveDest}' val2='false'>--%>
  55. <!-- 保存按钮 start -->
  56. <%-- <input v-show="false" type="submit" value="${saveButtonValue}" class="bottom-button"
  57. onclick='ss.display.changeFormAction("<ss:serv name='${save}' dest='${saveDest}' parm='${saveParam}'/>",this,${savewidth},${saveheight},${saveminheight},${savemaxheight});'
  58. > --%>
  59. <!-- 保存按钮 end -->
  60. <%-- </ss:equal>--%>
  61. <ss:equal val='${empty saveAndCommitDest}' val2='false'>
  62. <ss-bottom-button
  63. style="display:none"
  64. id="saveAndCommit"
  65. text="${saveAndCommitButtonValue}"
  66. onclick='ss.form.submit({url:"<ss:serv name='${saveAndCommit}' dest='${saveAndCommitDest}' parm='${saveAndCommitParam}'/>",width:${saveAndCommitwidth},height:${saveAndCommitheight},minHeight:${saveAndCommitminheight},maxHeight:${saveAndCommitmaxheight},targetWin:null});'<%-- 最后一个参数原来为targetWin:parent导致刷新了顶层窗口,改为null Ben(20251215) --%>
  67. <%-- onclick='ss.display.reset("dialog",this,"<ss:serv name='${saveAndCommit}' dest='${saveAndCommitDest}' parm='${saveAndCommitParam}'/>",${saveAndCommitwidth},${saveAndCommitheight},${saveAndCommitminheight},${saveAndCommitmaxheight});'--%>
  68. icon-class="bottom-div-save"
  69. ></ss-bottom-button>
  70. <!-- 保存并提交按钮 start -->
  71. <%-- <input type="button" value="${saveAndCommitButtonValue}" class="bottom-button"
  72. onclick='ss.display.reset("dialog",this,"<ss:serv name='${saveAndCommit}' dest='${saveAndCommitDest}' parm='${saveAndCommitParam}'/>",${saveAndCommitwidth},${saveAndCommitheight},${saveAndCommitminheight},${saveAndCommitmaxheight});'
  73. > --%>
  74. <!-- 保存并提交按钮 end -->
  75. </ss:equal>
  76. <ss:equal val='${empty changeNoFunctions}' val2='false'>
  77. <%--只有一个变动--%>
  78. <!-- 只有一个变动时的 停用按钮 start -->
  79. <ss:equal val='${changeNoSize}' val2='1'>
  80. <ss-bottom-button
  81. text="${changeNoFunctions[0].desc}"
  82. onclick='ss.form.submit({url:"<ss:serv name='${changeNoFunctions[0].servName}' dest='${changeNoFunctions[0].dest}' parm='{ssObjId:"${ssObjId}",ssObjName:"${ssObjName}","${ssObjIdName}":"${ssObjId}",dataType:"${empty dataType?1:dataType}",requestParentViewObject:"${requestParentViewObject}"}'/>",width:${changeNoFunctions[0].width},height:${changeNoFunctions[0].height},minHeight:${changeNoFunctions[0].minHeight},maxHeight:${changeNoFunctions[0].maxHeight},targetWin:parent});'
  83. icon-class="bottom-div-close"
  84. ></ss-bottom-button>
  85. <%-- <input type="button" value="${changeNoFunctions[0].name}" class="bottom-button"
  86. onclick='ss.display.reset("dialog",this,"<ss:serv name='${changeNoFunctions[0].servName}' dest='${changeNoFunctions[0].dest}' parm='{ssObjId:"${ssObjId}",ssObjName:"${ssObjName}","${ssObjIdName}":"${ssObjId}",dataType:"${empty dataType?1:dataType}",requestParentViewObject:"${requestParentViewObject}"}'/>",${changeNoFunctions[0].width},${changeNoFunctions[0].height},${changeNoFunctions[0].minHeight},${changeNoFunctions[0].maxHeight});'
  87. > --%>
  88. </ss:equal>
  89. <!-- 只有一个变动 end -->
  90. <%--有多个变动--%>
  91. <!--有多个变动 start -->
  92. <ss:notEqual val='${changeNoSize}' val2='1'>
  93. <%-- 更多变动按钮数据 Ben(20251211) --%>
  94. <script>
  95. window.ss.dom.btnElemConfig.moreChg={desc:"更多变动",dropOptions:[]};
  96. </script>
  97. <ss:rpt id='item' name='changeNoFunctions'>
  98. <script>
  99. window.ss.dom.btnElemConfig.moreChg.dropOptions.push(
  100. {
  101. desc:'${item.desc}',<%-- 按钮名 --%>
  102. callback: function(){
  103. ss.form.submit({url:"<ss:serv name='${item.servName}' dest='${item.dest}' parm='{ssObjId:"${ssObjId}",ssObjName:"${ssObjName}","${ssObjIdName}":"${ssObjId}",dataType:"${empty dataType?1:dataType}",requestParentViewObject:"${requestParentViewObject}"}'/>",width:${item.width},height:${item.height},minHeight:${item.minHeight},maxHeight:${item.maxHeight},targetWin:parent});
  104. }
  105. }
  106. );
  107. </script>
  108. <%-- 改成vue写法 Ben(20251211)
  109. <input style="display:none;" class="changebutton" index="${index}" type="button" value="${item.desc}"
  110. onclick='ss.form.submit({url:"<ss:serv name='${item.servName}' dest='${item.dest}' parm='{ssObjId:"${ssObjId}",ssObjName:"${ssObjName}","${ssObjIdName}":"${ssObjId}",dataType:"${empty dataType?1:dataType}",requestParentViewObject:"${requestParentViewObject}"}'/>",width:${item.width},height:${item.height},minHeight:${item.minHeight},maxHeight:${item.maxHeight},targetWin:parent});'
  111. >
  112. --%>
  113. </ss:rpt>
  114. <%-- 修改支持更多按钮 by xu 20251211 --%>
  115. <ss-bottom-button
  116. more="moreChg"
  117. ></ss-bottom-button>
  118. <%-- 改成vue写法 Ben(20251211)
  119. <input id="morebutton" type="button" value="更多变动" class="bottom-button"/>
  120. <script>ss.display.attachButton("morebutton","changebutton");</script>
  121. --%>
  122. </ss:notEqual>
  123. <!--有多个变动 end -->
  124. </ss:equal>
  125. <!-- 删除按钮 start -->
  126. <ss:equal val='${empty deleteDest}' val2='false'>
  127. <%--
  128. <input type="submit" value="删除" onclick="wd.display.changeFormAction(&quot;<wd:token service='${delete}' dest='${deleteDest}' param='${deleteParam}' test='' />&quot;,this);" class="bottom-button" ></wd:equal>
  129. --%>
  130. <ss-bottom-button
  131. text="${deleteButtonValue}"
  132. onclick='ss.form.confirm("删除","是否删除?",function (){ss.form.submit({url:"<ss:serv name='${delete}' dest='${deleteDest}' parm='${deleteParam}'/>",targetWin:parent});},null)'
  133. <%-- onclick='ss.display.confirm("删除","是否删除?",(function(button){return function(){var form=document.querySelector("form");button.form=form;form.setAttribute("vvv","2");--%>
  134. <%-- form.setAttribute("action",--%>
  135. <%-- "<ss:serv name='${delete}' dest='${deleteDest}' parm='${deleteParam}'/>");--%>
  136. <%-- ss.display.submitToTopTab(button);form.submit();}})(this))'--%>
  137. icon-class="bottom-div-close"
  138. ></ss-bottom-button>
  139. <%-- <input id="deleteButton" type="button" value="${deleteButtonValue}"
  140. onclick='wd.display.confirm("删除","是否删除?",(function(button){return function(){var form=document.querySelector("form");button.form=form;form.setAttribute("vvv","2");
  141. form.setAttribute("action",
  142. "<ss:serv name='${delete}' dest='${deleteDest}' parm='${deleteParam}'/>");
  143. wd.display.submitToTopTab(button);form.submit();}})(this))'
  144. class="bottom-button"
  145. > --%>
  146. </ss:equal>
  147. <!-- 删除按钮 end -->
  148. <%-- 再增加 删除二级对象的基本情况变动 功能 -- "删除变动" 按钮。Start。Lin --%>
  149. <!-- 删除二级对象的基本情况变动 功能 -- "删除变动" 按钮。Start -->
  150. <ss:equal val='${empty delChildChgDest}' val2='false'>
  151. <ss-bottom-button
  152. text="${delChildChgButtonValue}"
  153. onclick='ss.form.confirm("删除","是否删除?",function (){ss.form.submit({url:"<ss:serv name='${delChildChg}' dest='${delChildChgDest}' parm='${delChildChgParam}'/>",targetWin:parent});},null)'
  154. <%-- onclick='ss.display.confirm("删除变动","是否删除基本情况变动?",(function(button){return function(){var form=document.querySelector("form");button.form=form;form.setAttribute("vvv","2");--%>
  155. <%-- form.setAttribute("action",--%>
  156. <%-- "<ss:serv name='${delChildChg}' dest='${delChildChgDest}' parm='${delChildChgParam}'/>");--%>
  157. <%-- wd.display.submitToTopTab(button);form.submit();}})(this))'--%>
  158. icon-class="bottom-div-close"
  159. ></ss-bottom-button>
  160. <%-- <input id="delChildChgButton" type="button" value="${delChildChgButtonValue}"
  161. onclick='ss.display.confirm("删除变动","是否删除基本情况变动?",(function(button){return function(){var form=document.querySelector("form");button.form=form;form.setAttribute("vvv","2");
  162. form.setAttribute("action",
  163. "<ss:serv name='${delChildChg}' dest='${delChildChgDest}' parm='${delChildChgParam}'/>");
  164. wd.display.submitToTopTab(button);form.submit();}})(this))'
  165. class="bottom-button"
  166. > --%>
  167. </ss:equal>
  168. <!-- 删除二级对象的基本情况变动 功能 -- "删除变动" 按钮。end -->
  169. <%-- 再增加 删除二级对象的基本情况变动 功能 -- "删除变动" 按钮。End。Lin --%>
  170. <!-- 停用start -->
  171. <ss:equal val='${empty disableSubmitDest}' val2='false'>
  172. <ss-bottom-button
  173. text="${disableSubmitButtonValue}"
  174. onclick='ss.form.submit({url:"<ss:serv name='${disableSubmit}' dest='${disableSubmitDest}' parm='${disableSubmitParam}'/>",width:${disableSubmitwidth},height:${disableSubmitheight},minHeight:${disableSubmitminheight},maxHeight:${disableSubmitmaxheight},targetWin:parent});'
  175. <%-- onclick='ss.display.reset("dialog",this,"<ss:serv name='${disableSubmit}' dest='${disableSubmitDest}' parm='${disableSubmitParam}'/>",${disableSubmitwidth},${disableSubmitheight},${disableSubmitminheight},${disableSubmitmaxheight});'--%>
  176. icon-class="bottom-div-close"
  177. ></ss-bottom-button>
  178. <!-- <input type="submit" value="${disableSubmitButtonValue}" class="bottom-button"
  179. onclick='ss.display.reset("dialog",this,"<ss:serv name='${disableSubmit}' dest='${disableSubmitDest}' parm='${disableSubmitParam}'/>",${disableSubmitwidth},${disableSubmitheight},${disableSubmitminheight},${disableSubmitmaxheight});'
  180. > -->
  181. </ss:equal>
  182. <!-- 停用end -->
  183. <ss-bottom-button
  184. text="关闭"
  185. onclick='ss.display.closeDialog();'
  186. icon-class="bottom-div-close"
  187. ></ss-bottom-button>
  188. <%-- <input type="button" value="关闭" onclick="ss.display.closeDialog();" class="bottom-button"> --%>
  189. <%--
  190. ${param}
  191. --%>
  192. <%-- </div> --%>
  193. </div>
  194. </form>
  195. </body>
  196. </html>
  197. <script type="module">
  198. // function objectPickMockAjax(url) {
  199. // // return null;
  200. // return new Promise((resolve) => {
  201. // setTimeout(() => {
  202. // resolve([
  203. // // { label: '男', value: '1' },
  204. // // { label: '女', value: '2' }
  205. // ]);
  206. // }, 1);
  207. // });
  208. // }
  209. // // 模拟 Ajax 请求的工具函数
  210. // const mockAjax = {
  211. // // 缓存数据,避免重复请求
  212. // _cache: null,
  213. //
  214. // // 获取完整数据
  215. // async getData() {
  216. // if (this._cache) return this._cache;
  217. // const response = await fetch("/newUI/ss/js/level.json");
  218. // this._cache = await response.json();
  219. // return this._cache;
  220. // },
  221. //
  222. // // 获取所有省份
  223. // async getProvinces() {
  224. // const data = await this.getData();
  225. // return data.map((item) => ({
  226. // label: item.name,
  227. // value: item.code,
  228. // }));
  229. // },
  230. //
  231. // // 根据省份代码获取城市
  232. // async getCities(provinceCode) {
  233. // const data = await this.getData();
  234. // const province = data.find((p) => p.code === provinceCode);
  235. // if (!province || !province.children) return [];
  236. //
  237. // return province.children
  238. // .filter((item) => item.city) // 确保是市级数据
  239. // .map((item) => ({
  240. // label: item.name,
  241. // value: item.code,
  242. // }));
  243. // },
  244. //
  245. // // 根据城市代码获取区县
  246. // async getDistricts(cityCode) {
  247. // const data = await this.getData();
  248. // for (const province of data) {
  249. // if (!province.children) continue;
  250. // const city = province.children.find((c) => c.code === cityCode);
  251. // if (city && city.children) {
  252. // return city.children.map((item) => ({
  253. // label: item.name,
  254. // value: item.code,
  255. // }));
  256. // }
  257. // }
  258. // return [];
  259. // },
  260. // // 模拟专业数据
  261. // getMajors() {
  262. // return new Promise((resolve) => {
  263. // setTimeout(() => {
  264. // resolve([
  265. // { label: '计算机科学与技术', value: '08010000' }, // 补齐8位
  266. // { label: '软件工程', value: '08020000' },
  267. // { label: '网络工程', value: '08030000' }
  268. // ]);
  269. // }, 1000);
  270. // });
  271. // },
  272. // // 模拟班级数据
  273. // getClasses(majorCode) {
  274. // // majorCode 会是 '08010000' 这样的格式
  275. //
  276. // const classData = {
  277. // '08010000': [
  278. // { label: '计科1班', value: '08010001' },
  279. // { label: '计科2班', value: '08010002' }
  280. // ],
  281. // '08020000': [
  282. // { label: '软件1班', value: '08020001' },
  283. // { label: '软件2班', value: '08020002' }
  284. // ],
  285. // '08030000': [
  286. // { label: '网络1班', value: '08030001' },
  287. // { label: '网络2班', value: '08030002' }
  288. // ]
  289. // };
  290. //
  291. // return new Promise((resolve) => {
  292. // setTimeout(() => {
  293. // resolve(classData[majorCode] || []);
  294. // }, 1000);
  295. // });
  296. // }
  297. // };
  298. // const doCascade = async function({
  299. // children = [],
  300. // url,
  301. // vm,
  302. // prefix = 'Option',
  303. // loadData = () => {},
  304. // value, // 添加 value 参数用于测试阶段
  305. // mode = 1
  306. // }) {
  307. // try {
  308. // // 清空所有子级的值和选项
  309. // children.forEach(child => {
  310. // vm[child] = '';
  311. //
  312. // vm[child+'Option'] = [];
  313. // });
  314. //
  315. // // 测试阶段:使用 loadData 加载模拟数据
  316. // if (loadData && value) {
  317. // const data = await loadData(value);
  318. //
  319. // // mode=2 时,所有 children 都是同级的,都使用相同的数据
  320. // if (mode == '2') {
  321. //
  322. // children.forEach(child => {
  323. // vm[child+'Option'] = data;
  324. // });
  325. // } else {
  326. // // 原有的处理方式,只设置第一个子级的数据
  327. // if (children.length > 0) {
  328. // vm[children[0]+'Option'] = data;
  329. // }
  330. // }
  331. // return;
  332. // }
  333. //
  334. // // 正式环境:使用 url 加载数据(暂时不用)
  335. // if (url) {
  336. // const response = await fetch(url);
  337. // const data = await response.json();
  338. // if (children.length > 0) {
  339. // vm[children[0]+'Option'] = data;
  340. // }
  341. // }
  342. // } catch (error) {
  343. // console.log('级联数据加载失败:', error);
  344. // if (children.length > 0) {
  345. // vm[children[0]+'Option'] = [];
  346. // }
  347. // }
  348. // };
  349. // // 定义 objPickerLoad 函数
  350. // async function objPickerLoad(url, optName) {
  351. // const result = await objectPickMockAjax(url);
  352. // return result;
  353. // }
  354. //
  355. // // 省市区
  356. // async function ccpsingleFirstLoad(url) {
  357. // const provinces = await mockAjax.getProvinces();
  358. // return provinces;
  359. // }
  360. // async function getCcpsingleValue(children,value) {
  361. // if (children.length == 2) {
  362. // const result = await mockAjax.getCities(value);
  363. // return result;
  364. // }else if (children.length == 1) {
  365. // const result = await mockAjax.getDistricts(value);
  366. // return result;
  367. // }
  368. // }
  369. const data = {};
  370. if (window.SS.dom.formElemConfig) {
  371. Object.entries(window.SS.dom.formElemConfig).forEach(([key, config]) => {
  372. data[key] = config.val;
  373. // 处理 objPicker
  374. if (config.type === window.SS.dom.TYPE.OBJPICKER) {
  375. data[key + "ObjPicker"] = true;
  376. data[key + "Option"] = [];
  377. data[key + "Url"] = config.url;
  378. }
  379. // 处理级联选择器(hidden)
  380. // if (config.type === window.SS.dom.TYPE.CCPSINGLE) {
  381. // config.objP.forEach(function (item, index) {
  382. // data[item] = "";
  383. // data[item + "Option"] = [];
  384. // data[item + "CCPSINGLE"] = true;
  385. // data[item + "objP"] = config.objP;
  386. // // 第一个字段需要加载
  387. // if (index === 0) {
  388. // data[item + "InitLoad"] = true;
  389. // }
  390. // })
  391. // // 处理级联选择器的url
  392. // for(let key in config.param) {
  393. // if(config.param[key].url) {
  394. // data[key + "Url"] = config.param[key].url;
  395. // }
  396. // }
  397. // }
  398. // 处理级联,多个
  399. // if (config.type === window.SS.dom.TYPE.CCPMUTIPLE) {
  400. // config.objP.forEach(function (item, index) {
  401. // data[item] = "1";
  402. //
  403. // data[item + "Option"] = [];
  404. // data[item + "CCPMUTIPLE"] = true;
  405. // data[item + "objP"] = config.objP;
  406. // // 第一个字段需要加载
  407. // if (index === 0) {
  408. // data[item + "InitLoad"] = true;
  409. //
  410. // }
  411. // })
  412. // // 处理级联选择器的url
  413. // for(let key in config.param) {
  414. // if(config.param[key].url) {
  415. // data[key + "Url"] = config.param[key].url;
  416. // data[key] = config.param[key].value;
  417. // }
  418. // }
  419. // }
  420. // 处理datepicker
  421. if (config.type === window.SS.dom.TYPE.DATE) {
  422. data[key + "Mode"] = config.mode
  423. console.log(data[key + "Mode"]);
  424. }
  425. // 处理富文本编辑器
  426. if (config.type === window.SS.dom.TYPE.RICHTEXT) {
  427. data[key + "Url"] = config.val;
  428. data[key + "editor"] = config.val;
  429. }
  430. // 处理onoff
  431. if (config.type === window.SS.dom.TYPE.ONOFFBTN) {
  432. data[key] = config.val.split('|');
  433. }
  434. if (config.type === window.SS.dom.TYPE.IMG) {
  435. data[key + "showUrl"] = config.showUrl;
  436. data[key + "uploadUrl"] = config.uploadUrl;
  437. }
  438. });
  439. }
  440. // console.log("data",data);
  441. SS.ready(function () {
  442. if(ss.dom.formVmConfig)//加判断条件,页面有校验配置时,才运行下面的 Ben(20251206)
  443. for (let i = 0; i < ss.dom.formVmConfig.length; i++) {
  444. const item = ss.dom.formVmConfig[i];
  445. // 处理每个元素
  446. let rule = item.rule;
  447. let fieldArr = item.field;
  448. let param = item.param;
  449. let fieldValMap = [];
  450. for (let i = 0; i < fieldArr.length; i++) {//校验程序增加传入表单元素的值fieldValMap Ben(20260107)
  451. const field = fieldArr[i];
  452. fieldValMap[field] = window.SS.dom.formElemConfig[field].val;
  453. }
  454. window.ssVm.add(rule, fieldArr, param ,fieldValMap);//校验程序增加传入表单元素的值fieldValMap Ben(20260107)
  455. }
  456. // //下面是写死的
  457. // ssVm.add("ss.commonValidator.notNull", ["xm"], {
  458. // msgPrfx: "姓名",
  459. // });
  460. // ssVm.add("ss.commonValidator.notNull", ["ywm"], {
  461. // msgPrfx: "英文名",
  462. // });
  463. // ssVm.add("ss.commonValidator.notNull", ["zh"], {
  464. // msgPrfx: "帐号",
  465. // });
  466. // ssVm.add("ss.commonValidator.notNull", ["ryh"], {
  467. // msgPrfx: "人员号",
  468. // });
  469. // ssVm.add("ss.commonValidator.notNull", ["xbm"], {
  470. // msgPrfx: "性别",
  471. // });
  472. // ssVm.add("ss.commonValidator.notNull", ["zzmmm"], {
  473. // msgPrfx: "政治面貌",
  474. // });
  475. // ssVm.add("ss.commonValidator.notNull", ["rylbm"], {
  476. // msgPrfx: "人员类别",
  477. // });
  478. // ssVm.add("ss.commonValidator.notNull", ["gwid"], {
  479. // msgPrfx: "岗位",
  480. // });
  481. // ssVm.add("ss.commonValidator.notNull", ["csrq"], {
  482. // msgPrfx: "出生日期",
  483. // });
  484. // ssVm.add("ss.commonValidator.notNull", ["csrq"], {
  485. // msgPrfx: "出生日期",
  486. // });
  487. //
  488. // ssVm.add("ss.commonValidator.notNull", ["mswj"], {
  489. // msgPrfx: "描述",
  490. // });
  491. // 在这里直接初始化,不需要等待 load 事件
  492. window.SS.dom.initializeFormApp({
  493. el: "#app",
  494. data(){
  495. return data;
  496. },
  497. methods: {
  498. onChange(value){
  499. // console.log(value)
  500. },
  501. myChange(value){
  502. // alert(value);
  503. // console('@@@myChange:'+value);
  504. },
  505. save(){
  506. $('form').attr('action','<ss:serv name='${save}' dest='${saveDest}' parm='${saveParam}'/>');//name:${save},dest='${saveDest}',parm='${saveParam}'
  507. $('form').submit();
  508. // wd.display.changeFormAction("<ss:serv name='${save}' dest='${saveDest}' parm='${saveParam}'/>",this,${savewidth},${saveheight},${saveminheight},${savemaxheight});
  509. }
  510. },
  511. mounted() {
  512. const self = this;
  513. // 在这里可以使用 Vue 实例
  514. Object.entries(this.$data).forEach(([key, value]) => {
  515. // 处理 objPicker
  516. if (key.includes('ObjPicker')) {
  517. // const originalKey = key.replace('ObjPicker', '');
  518. // if (value) {
  519. // objPickerLoad(value, key).then(result => {
  520. // this[originalKey+'Option'] = result;
  521. // });
  522. // }
  523. }
  524. // 处理 CCPSINGLE
  525. if (key.includes('CCPSINGLE')) {
  526. const originalKey = key.replace('CCPSINGLE', '');
  527. const self = this;
  528. // 只有第一个字段需要自动加载
  529. if (this[originalKey + "InitLoad"]) {
  530. ccpsingleFirstLoad(this[originalKey + "Url"], key).then(result =>{
  531. this[originalKey+'Option'] = result;
  532. })
  533. }
  534. // 绑定 change 事件
  535. this[originalKey + 'Change'] = async function(value) {
  536. const objP = self[originalKey + "objP"] || [];
  537. const currentIndex = objP.indexOf(originalKey);
  538. const children = currentIndex < 0 || currentIndex >= objP.length - 1 ? [] : objP.slice(currentIndex + 1);
  539. await doCascade({
  540. children,
  541. value,
  542. vm: self,
  543. loadData: (value) => getCcpsingleValue(children,value),
  544. });
  545. };
  546. }
  547. // 如果是 CCPSINGLE 类型
  548. if (key.includes('CCPMUTIPLE')) {
  549. const originalKey = key.replace('CCPMUTIPLE', '');
  550. const self = this;
  551. // 只有第一个字段需要自动加载
  552. if (this[originalKey + "InitLoad"]) {
  553. ccpsingleFirstLoad(this[originalKey + "Url"], key).then(result =>{
  554. this[originalKey+'Option'] = result;
  555. })
  556. }
  557. // 绑定 change 事件
  558. this[originalKey + 'Change'] = async function(value) {
  559. const objP = self[originalKey + "objP"] || [];
  560. const currentIndex = objP.indexOf(originalKey);
  561. const children = currentIndex < 0 || currentIndex >= objP.length - 1 ? [] : objP.slice(currentIndex + 1);
  562. await doCascade({
  563. children,
  564. value,
  565. vm: self,
  566. loadData: (value) => getCcpsingleValue(children,value),
  567. });
  568. };
  569. }
  570. // 加载editor
  571. // if (key.includes('editor')) {
  572. // const originalKey = key.replace('editor', '');
  573. // if (this[key]) {
  574. // fetch(this[key])
  575. // .then(res => res.text()) // 使用 text() 而不是 data
  576. // .then(html => {
  577. // this[originalKey] = html;
  578. // console.log(this[originalKey])
  579. // })
  580. // .catch(error => {
  581. // console.error("获取HTML文件失败:", error);
  582. // });
  583. // }
  584. // }
  585. });
  586. }
  587. })
  588. });
  589. </script>
  590. <%--<script type="text/javascript">--%>
  591. <%-- tokenCleanser("<ss:serv name='ss.clearPageToken'/>", {tokenList:"<%= pageContext.getAttribute(ss.page.PageC.PAGE_tokenList)%>"});--%>
  592. <%--</script>--%>