You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

534 lines
24 KiB

3 weeks ago
  1. @{
  2. ViewBag.Title = "Form";
  3. Layout = "~/Views/Shared/_Form.cshtml";
  4. }
  5. <link href="~/Content/css/CommonReport/CommonReport.css" rel="stylesheet" />
  6. <script src="~/Content/js/CommonReport/CommonReport.js"></script>
  7. <link href="~/Content/css/bootstrap/bootstrap-select.css" rel="stylesheet" />
  8. <script src="~/Content/js/bootstrap/bootstrap-select.min.js"></script>
  9. <style>
  10. * {
  11. box-sizing: border-box;
  12. }
  13. </style>
  14. <script>
  15. var keyValue = $.request("keyValue");
  16. var MenuID = keyValue;
  17. var LogString_Num = new Array();
  18. var LogString_Str = new Array();
  19. var LogString_Date = new Array();
  20. var LogString_Bool = new Array();
  21. var SourceID = "";
  22. var DataTypeString = new Array();
  23. var NewLine = 0;
  24. var MaxPaiXu = 0;
  25. var FirstShow = 0;
  26. $(function () {
  27. initControl();
  28. if (!!keyValue) {
  29. $.ajax({
  30. url: "/SystemManage/Module/GetFormJson",
  31. data: { keyValue: keyValue },
  32. dataType: "json",
  33. async: false,
  34. success: function (data) {
  35. $("#form1").formSerialize(data);
  36. }
  37. });
  38. }
  39. LogString_Num = GetLogString("数值型");
  40. LogString_Str = GetLogString("字符型");
  41. LogString_Date = GetLogString("日期型");
  42. LogString_Bool = GetLogString("布尔值");
  43. DataTypeString = GetDataTypeString();
  44. DataActiongridList();
  45. $(window).resize(function () {
  46. $("#DataActiongridList").setGridWidth($(window).width() * 0.99);
  47. $("#DataActiongridList").setGridWidth(document.body.clientWidth * 0.99);
  48. $("#DataActiongridList").setGridHeight($(window).height() - 96);
  49. $("#DataActiongridList").setGridHeight(document.body.clientHeight - 96);
  50. });
  51. });
  52. function DataActiongridList() {
  53. if (keyValue == "") {
  54. SourceID = guid();
  55. $("#F_Id").val(SourceID);
  56. }
  57. else {
  58. SourceID = keyValue;
  59. }
  60. var $gridList = $("#DataActiongridList");
  61. $gridList.dataGrid({
  62. url: "/SystemManage/Module/GetCondition?" + Math.random(),
  63. postData: { SourceID: SourceID },
  64. height: $(window).height() - 96,
  65. colModel: [//IDStr 排序 必填 条件名称 字段名称 替代符号 数据类型 默认逻辑符号 默认值
  66. //参照选择, 参照语句, 其他数据源, 本系统数据源, 返回字段
  67. {
  68. label: 'IDStr', name: 'IDStr', width: 80, align: 'left', hidden: true, sortable: false,
  69. },
  70. {
  71. label: 'IsNew', name: 'IsNew', width: 80, align: 'left', hidden: true, sortable: false,
  72. },
  73. { label: '默认值', name: '默认值', hidden: true, sortable: false, },
  74. { label: '默认值2', name: '默认值2', hidden: true, sortable: false, },
  75. {
  76. label: '排序', name: '排序', width: 80, align: 'left', sortable: false,
  77. formatter: function (cellvalue, options, rowObject) {
  78. if (parseInt(cellvalue) > MaxPaiXu) {
  79. MaxPaiXu = parseInt(cellvalue);
  80. }
  81. var str_retrun = '<input type="text" class="form-control" id="PaiXu_' + rowObject.IDStr + '" style="width:50px" value="' + cellvalue + '" />';
  82. return cellvalue = str_retrun;
  83. },
  84. },
  85. {
  86. label: '条件名称', name: '条件名称', width: 150, align: 'left', sortable: false,
  87. formatter: function (cellvalue, options, rowObject) {
  88. var str_retrun = '<input type="text" class="form-control" id="Caption_' + rowObject.IDStr + '" value="' + cellvalue + '" />';
  89. return cellvalue = str_retrun;
  90. },
  91. },
  92. {
  93. label: '字段名称', name: '字段名称', width: 150, align: 'left', sortable: false,
  94. formatter: function (cellvalue, options, rowObject) {
  95. var str_retrun = '<input type="text" class="form-control" id="FiledName_' + rowObject.IDStr + '" value="' + cellvalue + '" />';
  96. return cellvalue = str_retrun;
  97. },
  98. },
  99. {
  100. label: '替代符号', name: '替代符号', width: 150, align: 'left', sortable: false,
  101. formatter: function (cellvalue, options, rowObject) {
  102. var str_retrun = '<input type="text" class="form-control" id="Index_' + rowObject.IDStr + '" value="' + cellvalue + '" />';
  103. return cellvalue = str_retrun;
  104. },
  105. },
  106. {
  107. label: '数据类型Data', name: '数据类型Data', hidden: true, width: 150, align: 'left', sortable: false,
  108. },
  109. {
  110. label: '数据类型', name: '数据类型', width: 150, align: 'left', sortable: false,
  111. formatter: function (cellvalue, options, rowObject) {
  112. var str_retrun = '<select class="selectpicker" id="selDataType_' + rowObject.IDStr + '" Title="" onchange="ChangeSel(\'' + rowObject.IDStr + '\')" data-width="100px" > ';
  113. str_retrun += "<option value=''></option>";
  114. for (var i = 0; i < DataTypeString.length; i++) {
  115. str_retrun += "<option value=\"" + DataTypeString[i].value + "\">" + DataTypeString[i].Str + "</option>";
  116. }
  117. str_retrun += '</select>';
  118. return cellvalue = str_retrun;
  119. }
  120. },
  121. {
  122. label: '起始值', name: '起始值', width: 190, align: 'left', sortable: false,
  123. formatter: function (cellvalue, options, rowObject) {
  124. var dataTypeStr = GetDataTypeByNum(rowObject.数据类型);
  125. switch (dataTypeStr) {
  126. case "数值型":
  127. case "布尔值":
  128. case "字符型":
  129. var str_retrun = '<input class="form-control" id="QiShi_' + rowObject.IDStr + '" type="text" />';
  130. return cellvalue = str_retrun;
  131. break;
  132. case "日期型":
  133. var str_retrun = '<input class="form-control" id="QiShi_' + rowObject.IDStr + '" type="text" onclick="WdatePicker({ dateFmt: \'yyyy-MM-dd\'})" />';
  134. return cellvalue = str_retrun;
  135. break;
  136. case "":
  137. var str_retrun = '<input class="form-control" id="QiShi_' + rowObject.IDStr + '" type="text" />';
  138. return cellvalue = str_retrun;
  139. break;
  140. }
  141. }
  142. },
  143. {
  144. label: '结束值', name: '结束值', width: 190, align: 'left', sortable: false,
  145. formatter: function (cellvalue, options, rowObject) {
  146. var dataTypeStr = GetDataTypeByNum(rowObject.数据类型);
  147. switch (dataTypeStr) {
  148. case "数值型":
  149. case "布尔值":
  150. case "字符型":
  151. var str_retrun = '<input class="form-control" id="JieShu_' + rowObject.IDStr + '" type="text" />';
  152. return cellvalue = str_retrun;
  153. break;
  154. case "日期型":
  155. var str_retrun = '<input class="form-control" id="JieShu_' + rowObject.IDStr + '" type="text" onclick="WdatePicker({ dateFmt: \'yyyy-MM-dd\'})" />';
  156. return cellvalue = str_retrun;
  157. break;
  158. case "":
  159. var str_retrun = '<input class="form-control" id="JieShu_' + rowObject.IDStr + '" type="text" />';
  160. return cellvalue = str_retrun;
  161. break;
  162. }
  163. }
  164. }
  165. ],
  166. viewrecords: true,
  167. rownumbers: true,
  168. multiselect: true,
  169. rowNum: 500,
  170. // cellEdit: false,
  171. // multiboxonly: true,
  172. // multikey:'shiftKey',
  173. gridComplete: function () {
  174. $("#DataActiongridList").setGridParam().hideCol("IDStr");//隐藏ID列
  175. $("#DataActiongridList").setGridParam().hideCol("IsNew");
  176. $("#DataActiongridList").setGridParam().hideCol("数据类型Data");
  177. var strIds = $("#DataActiongridList").jqGrid("getDataIDs");
  178. if (FirstShow == 0) {
  179. debugger;
  180. for (var i = 0; i < strIds.length; i++) {
  181. var IDStr = $("#DataActiongridList").jqGrid("getCell", strIds[i], "IDStr");
  182. var selDataType = $("#DataActiongridList").jqGrid("getCell", strIds[i], "数据类型Data");
  183. $("#selDataType_" + IDStr).selectpicker('refresh');
  184. $("#selDataType_" + IDStr).selectpicker('val', selDataType);
  185. //默认值
  186. var MoRen = $("#DataActiongridList").jqGrid("getCell", strIds[i], "默认值");
  187. if (MoRen != "") {
  188. $("#QiShi_" + IDStr).val(MoRen);
  189. }
  190. //默认值2
  191. var MoRen = $("#DataActiongridList").jqGrid("getCell", strIds[i], "默认值2");
  192. if (MoRen != "") {
  193. $("#JieShu_" + IDStr).val(MoRen);
  194. }
  195. }
  196. FirstShow = 1;
  197. }
  198. NewLine = strIds.length;
  199. $("#DataActiongridList").jqGrid('hideCol', 'cb');//隐藏勾选框 //勾选框选中的时候 与行选中有异常,所以隐藏
  200. },
  201. });
  202. }
  203. //修改字符类型 ->逻辑符号修改
  204. function ChangeSel(ColsName) {
  205. var datatype = $("#selDataType_" + ColsName).find("option:selected").text();
  206. var $LogString = $("#selLogString_" + ColsName);
  207. switch (datatype) {
  208. case "日期型":
  209. $LogString.find("option").remove();
  210. $LogString.append("<option value=''></option>");
  211. for (var i = 0; i < LogString_Date.length; i++) {
  212. $LogString.append("<option value='" + LogString_Date[i].value + "'>" + LogString_Date[i].Str + "</option>");
  213. }
  214. $("#QiShi_" + ColsName).show();
  215. $("#JieShu_" + ColsName).show();
  216. $("#QiShi_" + ColsName).click(WdatePicker);
  217. $("#JieShu_" + ColsName).click(WdatePicker);
  218. break;
  219. case "字符型":
  220. $LogString.find("option").remove();
  221. $LogString.append("<option value=''></option>");
  222. for (var i = 0; i < LogString_Str.length; i++) {
  223. $LogString.append("<option value='" + LogString_Str[i].value + "'>" + LogString_Str[i].Str + "</option>");
  224. }
  225. $("#QiShi_" + ColsName).show();
  226. $("#JieShu_" + ColsName).show();
  227. $("#QiShi_" + ColsName).click();
  228. $("#JieShu_" + ColsName).click();
  229. break;
  230. case "数值型":
  231. $LogString.find("option").remove();
  232. $LogString.append("<option value=''></option>");
  233. for (var i = 0; i < LogString_Num.length; i++) {
  234. $LogString.append("<option value='" + LogString_Num[i].value + "'>" + LogString_Num[i].Str + "</option>");
  235. }
  236. $("#QiShi_" + ColsName).show();
  237. $("#JieShu_" + ColsName).show();
  238. $("#QiShi_" + ColsName).click();
  239. $("#JieShu_" + ColsName).click();
  240. break;
  241. case "布尔值":
  242. $LogString.find("option").remove();
  243. $LogString.append("<option value=''></option>");
  244. for (var i = 0; i < LogString_Bool.length; i++) {
  245. $LogString.append("<option value='" + LogString_Bool[i].value + "'>" + LogString_Bool[i].Str + "</option>");
  246. }
  247. $("#QiShi_" + ColsName).hide();
  248. $("#JieShu_" + ColsName).hide();
  249. $("#QiShi_" + ColsName).click();
  250. $("#JieShu_" + ColsName).click();
  251. break;
  252. }
  253. $LogString.selectpicker('refresh');
  254. $LogString.selectpicker('render');
  255. }
  256. function initControl() {
  257. $("#F_Target").select2({
  258. minimumResultsForSearch: -1
  259. });
  260. $("#F_ParentId").bindSelect({
  261. url: "/SystemManage/Module/GetTreeSelectJson",
  262. });
  263. }
  264. function guid() {
  265. return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
  266. var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
  267. return v.toString(16);
  268. });
  269. }
  270. function submitForm() {
  271. var SubmitLine = new Array();
  272. var strIds = $("#DataActiongridList").jqGrid("getDataIDs");
  273. for (var i = 0; i < strIds.length; i++) {
  274. //IDStr 排序 必填 条件名称 字段名称 替代符号 数据类型 默认逻辑符号 默认值
  275. // NotNullFlag CCaption CFiledName CIndex CLogString CDefaultLogStirng CDataType CDefaultValue CSortSeq
  276. var ID = "";
  277. var IDStr = $("#DataActiongridList").jqGrid("getCell", strIds[i], "IDStr");
  278. var IsNew = $("#DataActiongridList").jqGrid("getCell", strIds[i], "IsNew");//是新增:“1” ,修改:“0”
  279. if (IsNew == "0") {
  280. ID = IDStr;
  281. }
  282. var CSortSeq = $("#PaiXu_" + IDStr).val();
  283. var CCaption = $("#Caption_" + IDStr).val();
  284. var CFiledName = $("#FiledName_" + IDStr).val();
  285. var CIndex = $("#Index_" + IDStr).val();
  286. var CDataType = $("#selDataType_" + IDStr).val();
  287. var FromStr = $("#QiShi_" + IDStr).val();
  288. var ToStr = $("#JieShu_" + IDStr).val();
  289. if (FromStr != '' && ToStr != '') {
  290. if (FromStr.indexOf(',') != -1 || ToStr.indexOf(',') != -1) {
  291. $.modalAlertNew("WMS00015", '起始值和结束值同时录入时不能存在复数条件!', '','warning');
  292. return;
  293. }
  294. }
  295. var obj = {
  296. ID: ID,
  297. CSortSeq: CSortSeq,
  298. CCaption: CCaption,
  299. CFiledName: CFiledName,
  300. CIndex: CIndex,
  301. CDataType: CDataType,
  302. CLogString: GetCLogString(CDataType),
  303. CValueBegin: FromStr,
  304. CValueEnd: ToStr
  305. }
  306. SubmitLine.push(obj);
  307. }
  308. $.ajax({
  309. url: "/SystemManage/Module/SetDataAction" + "?" + Math.random(),
  310. type: "post",
  311. data: { SourceID: SourceID, List_Condition: JSON.stringify(SubmitLine), },
  312. async: false,
  313. success: function (data) {
  314. },
  315. error: function (aa) {
  316. //alert("异常:" + aa.responseText);
  317. $.modalAlertNew("WMS00015", aa.responseText);
  318. }
  319. });
  320. if (!$('#form1').formValid()) {
  321. return false;
  322. }
  323. $.submitForm({
  324. url: "/SystemManage/Module/SubmitForm?keyValue=" + keyValue,
  325. param: $("#form1").formSerialize(),
  326. success: function () {
  327. $.currentWindow().$("#gridList").resetSelection();
  328. $.currentWindow().$("#gridList").trigger("reloadGrid");
  329. }
  330. })
  331. }
  332. //新增一行
  333. function btn_ADD() {
  334. NewLine = NewLine + 1;
  335. MaxPaiXu = MaxPaiXu + 1;
  336. var ids = jQuery("#DataActiongridList").jqGrid('getDataIDs');
  337. if (ids.length == 0) {
  338. ids = [0];
  339. }
  340. //获得当前最大行号(数据编号)
  341. var rowid = Math.max.apply(Math, ids);
  342. //获得新添加行的行号(数据编号)
  343. var newrowid = rowid + 1;
  344. $("#DataActiongridList").addRowData(newrowid,
  345. {//排序 必填 条件名称 字段名称 替代符号 数据类型 默认逻辑符号 默认值
  346. "IDStr": NewLine.toString(),
  347. "IsNew": "1",
  348. "排序": MaxPaiXu,
  349. "条件名称": "",
  350. "字段名称": "",
  351. "替代符号": "1=1",
  352. "数据类型Data": "",
  353. "数据类型": "",
  354. "起始值": "",
  355. "结束值": "",
  356. },
  357. "last");
  358. var unwritten = document.getElementsByClassName("unwritten")[0];
  359. if (unwritten != null && unwritten != 'undefined') {
  360. unwritten.style.display = "none";
  361. // $(".unwritten").attr("display", "none");
  362. }
  363. var strIds = $("#DataActiongridList").jqGrid("getDataIDs");
  364. var rr = strIds.length - 1;
  365. var IDStr = $("#DataActiongridList").jqGrid("getCell", strIds[rr], "IDStr");
  366. var selDataType = $("#DataActiongridList").jqGrid("getCell", strIds[rr], "数据类型Data");
  367. $("#selDataType_" + IDStr).selectpicker('refresh');
  368. $("#selDataType_" + IDStr).selectpicker('val', selDataType);
  369. }
  370. //删除选中行
  371. function btn_Del() {
  372. var selectedRowIds = $("#DataActiongridList").jqGrid("getGridParam", "selarrrow");
  373. var len = selectedRowIds.length;
  374. for (var i = 0; i < len; i++) {
  375. $("#DataActiongridList").jqGrid("delRowData", selectedRowIds[i]);
  376. }
  377. var selectedRowIds = $("#DataActiongridList").jqGrid("getGridParam", "selarrrow");
  378. var len = selectedRowIds.length;
  379. for (var i = 0; i < len; i++) {
  380. $("#DataActiongridList").jqGrid("delRowData", selectedRowIds[i]);
  381. }
  382. }
  383. function btn_Basic() {
  384. $('#liBasic').addClass('active');
  385. $('#liDataAction').removeClass();
  386. $("#divBasic").show();
  387. $("#divDataAction").hide();
  388. }
  389. function btn_DataAction() {
  390. $('#liDataAction').addClass('active');
  391. $('#liBasic').removeClass();
  392. $("#divBasic").hide();
  393. $("#divDataAction").show();
  394. }
  395. </script>
  396. <form id="form1">
  397. <div id="divform" style="margin-top: 10px; margin-left: 10px; margin-right: 10px;">
  398. <ul class="nav nav-tabs">
  399. <li id="liBasic" role="presentation" class="active"><a href="#" onclick="btn_Basic()">基本信息</a></li>
  400. <li id="liDataAction" role="presentation"><a href="#" onclick="btn_DataAction()">数据权限配置</a></li>
  401. </ul>
  402. <div id="divBasic" style="padding-top: 20px; margin-right: 30px;">
  403. <table class="form">
  404. <tr>
  405. <th class="formTitle">上级</th>
  406. <td class="formValue">
  407. <select id="F_ParentId" name="F_ParentId" class="form-control required">
  408. <option value="0">父节点</option>
  409. </select>
  410. </td>
  411. <th class="formTitle">名称</th>
  412. <td class="formValue">
  413. <input id="F_FullName" name="F_FullName" type="text" class="form-control required" placeholder="请输入名称" />
  414. <input id="F_Id" name="F_Id" type="text" class="form-control" style="display:none" />
  415. </td>
  416. </tr>
  417. <tr>
  418. <th class="formTitle">连接</th>
  419. <td class="formValue">
  420. <input id="F_UrlAddress" name="F_UrlAddress" type="text" class="form-control" />
  421. </td>
  422. <th class="formTitle">目标</th>
  423. <td class="formValue">
  424. <select id="F_Target" name="F_Target" class="form-control required">
  425. <option value="">==请选择==</option>
  426. <option value="expand" title="expand">无页面</option>
  427. <option value="iframe" title="iframe">框架页</option>
  428. <option value="open" title="open">弹出页</option>
  429. <option value="blank" title="blank">新窗口</option>
  430. </select>
  431. </td>
  432. </tr>
  433. <tr>
  434. <th class="formTitle">图标</th>
  435. <td class="formValue">
  436. <div class="input-group">
  437. <input id="F_Icon" name="F_Icon" type="text" class="form-control">
  438. <span class="input-group-btn">
  439. <a class="btn btn-primary"><i class="fa fa-ellipsis-h"></i></a>
  440. </span>
  441. </div>
  442. </td>
  443. <th class="formTitle">排序</th>
  444. <td class="formValue">
  445. <input id="F_SortCode" name="F_SortCode" type="text" class="form-control required" placeholder="请输入排序" />
  446. </td>
  447. </tr>
  448. <tr>
  449. <th class="formTitle" style="height: 35px;">选项</th>
  450. <td class="formValue" colspan="3" style="padding-top: 1px;">
  451. <div class="ckbox">
  452. <input id="F_IsMenu" name="F_IsMenu" type="checkbox"><label for="F_IsMenu">菜单</label>
  453. </div>
  454. <div class="ckbox">
  455. <input id="F_IsPublic" name="F_IsPublic" type="checkbox"><label for="F_IsPublic">公共</label>
  456. </div>
  457. <div class="ckbox">
  458. <input id="F_IsExpand" name="F_IsExpand" type="checkbox"><label for="F_IsExpand">展开</label>
  459. </div>
  460. <div class="ckbox">
  461. <input id="F_EnabledMark" name="F_EnabledMark" type="checkbox" checked="checked"><label for="F_EnabledMark">有效</label>
  462. </div>
  463. <div class="ckbox">
  464. <input id="F_AllowEdit" name="F_AllowEdit" type="checkbox"><label for="F_AllowEdit">允许编辑</label>
  465. </div>
  466. <div class="ckbox">
  467. <input id="F_AllowDelete" name="F_AllowDelete" type="checkbox"><label for="F_AllowDelete">允许删除</label>
  468. </div>
  469. </td>
  470. </tr>
  471. <tr>
  472. <th class="formTitle" valign="top" style="padding-top: 5px;">
  473. 介绍
  474. </th>
  475. <td class="formValue" colspan="3">
  476. <textarea id="F_Description" name="F_Descriptions" class="form-control" style="height: 100px;"></textarea>
  477. </td>
  478. </tr>
  479. </table>
  480. </div>
  481. <div id="divDataAction" style="margin-top: 10px; margin-left: 10px; margin-right: 10px;display:none">
  482. <div class="form-group" style="height:40px;margin-bottom:5px">
  483. <div class="btn-group">
  484. <a id="Btn_ADD" authorize="yes" class="btn btn-primary dropdown-text" onclick="btn_ADD()"><i class="fa fa-plus"></i>新增</a>
  485. <a id="Btn_Del" authorize="yes" class="btn btn-primary dropdown-text" onclick="btn_Del()"><i class="fa fa-minus"></i>删除</a>
  486. </div>
  487. </div>
  488. <div class="gridPanel">
  489. <table id="DataActiongridList"></table>
  490. @*<div id="gridPager"></div>*@
  491. </div>
  492. </div>
  493. </div>
  494. </form>