CodeBuilder.cshtml 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008
  1. @using Lottomat.Util
  2. @using Lottomat.Utils.Date
  3. @{
  4. ViewBag.Title = "在线开发(多表)";
  5. Layout = "~/Views/Shared/_Form.cshtml";
  6. }
  7. <link href="~/Content/scripts/plugins/jqgrid/jqgrid.css" rel="stylesheet" />
  8. <script src="~/Content/scripts/plugins/jqgrid/grid.locale-cn.js"></script>
  9. <script src="~/Content/scripts/plugins/jqgrid/jqgrid.min.js"></script>
  10. <script src="~/Content/scripts/plugins/layout/jquery.layout.js"></script>
  11. <link href="~/Content/styles/txwl-applayout.css" rel="stylesheet" />
  12. <script src="~/Content/scripts/plugins/syntaxhighlighter/scripts/shCore.js"></script>
  13. <script src="~/Content/scripts/plugins/syntaxhighlighter/scripts/shBrushCSharp.js"></script>
  14. <script type="text/javascript" src="~/Content/scripts/plugins/syntaxhighlighter/scripts/shBrushJScript.js"></script>
  15. <link type="text/css" rel="stylesheet" href="~/Content/scripts/plugins/syntaxhighlighter/styles/shCoreDefault.css" />
  16. <script>
  17. $(function () {
  18. InitialPage();
  19. GetDataSource();
  20. })
  21. //初始化页面
  22. function InitialPage() {
  23. //所在区域
  24. $("#OutputAreas").ComboBox({
  25. description: "==请选择==",
  26. height: "200px"
  27. }).ComboBoxSetValue('BaseManage');
  28. //功能上级
  29. $("#ModuleParentId").ComboBoxTree({
  30. url: "../../AuthorizeManage/Module/GetTreeJson",
  31. description: "==请选择==",
  32. height: "300px",
  33. allowSearch: true
  34. });
  35. //加载导向
  36. $('#wizard').wizard().on('change', function (e, data) {
  37. var $finish = $("#btn_finish");
  38. var $next = $("#btn_next");
  39. if (data.direction == "next") {
  40. switch (data.step) {
  41. case 1:
  42. var pk = $("#gridTable").jqGridRowValue("pk");
  43. var tablename = $("#gridTable").jqGridRowValue("name");
  44. var name = tablename.replace("_", "").replace("_", "");
  45. var tdescription = $("#gridTable").jqGridRowValue("tdescription");
  46. if (!pk) {
  47. return false;
  48. } else {
  49. $("#DataBaseTablePK").ComboBox({
  50. url: "../../SystemManage/DataBaseTable/GetTableFiledListJson",
  51. param: { dataBaseLinkId: $("#txt_DataBase").val(), tableName: tablename },
  52. id: "column",
  53. text: "column",
  54. height: "350px"
  55. }).ComboBoxSetValue(pk);
  56. $("#Description").val(tdescription);
  57. $("#EntityClassName").val(name + "Entity").attr('tableName', tablename);
  58. $("#MapClassName").val(name + "Map");
  59. $("#ServiceClassName").val(name + "Service");
  60. $("#IServiceClassName").val("I" + name + "Service");
  61. $("#BusinesClassName").val(name + "BLL");
  62. $("#ControllerName").val(name + "Controller");
  63. $("#IndexPageName").val("Index");//name +
  64. $("#FormPageName").val("Form");//name +
  65. }
  66. break;
  67. case 2://绑定列表
  68. //验证初始化配置表单
  69. if (!$('#step-2').Validform()) {
  70. return false;
  71. }
  72. BindingIndex();
  73. break;
  74. case 3://绑定表单
  75. BindingForm();
  76. break;
  77. case 4://查看代码
  78. LookCode()
  79. break;
  80. case 5://创建代码
  81. CreateCode()
  82. $finish.removeAttr('disabled');
  83. $next.attr('disabled', 'disabled');
  84. //发布功能事件
  85. $("#publish_btn").click(function () {
  86. $(this).attr('moduleForm', '1');
  87. $("#publish_panel").show().animate({ top: 50, speed: 2000 });
  88. $("#ModuleEnCode").val($("#EntityClassName").attr('tableName'));
  89. $("#ModuleFullName").val($("#Description").val());
  90. return false;
  91. });
  92. //选取功能图标
  93. $("#ModuleIcon").next('.input-button').click(function () {
  94. dialogOpen({
  95. id: "SelectIcon",
  96. title: '选取图标',
  97. url: '/AuthorizeManage/Module/Icon?ControlId=ModuleIcon',
  98. width: "1000px",
  99. height: "600px",
  100. btn: false
  101. })
  102. })
  103. break;
  104. default:
  105. break;
  106. }
  107. } else {
  108. $finish.attr('disabled', 'disabled');
  109. $next.removeAttr('disabled');
  110. }
  111. });
  112. //完成
  113. $("#btn_finish").click(function () {
  114. if ($("#publish_btn").attr('moduleForm') == 1) {
  115. //自动创建功能菜单
  116. if (!$('#publish_panel').Validform()) {
  117. return false;
  118. }
  119. var baseConfig = $("#step-2").GetWebControls();
  120. baseConfig["DataBaseLinkId"] = $("#txt_DataBase").val();
  121. baseConfig["DataBaseTableName"] = $("#gridTable").jqGridRowValue("name");
  122. var postData = {
  123. EnCode: $("#ModuleEnCode").val(),
  124. FullName: $("#ModuleFullName").val(),
  125. ParentId: $("#ModuleParentId").attr('data-value'),
  126. Icon: $("#ModuleIcon").val(),
  127. Description: $("#ModuleDescription").val(),
  128. baseInfoJson: JSON.stringify(baseConfig)
  129. }
  130. $.SaveForm({
  131. url: "../../SystemManage/CodeGenerator/PublishModule",
  132. param: postData,
  133. loading: "正在发布功能...",
  134. success: function () {
  135. dialogClose();
  136. }
  137. })
  138. } else {
  139. dialogClose();
  140. }
  141. });
  142. }
  143. /*=========选择数据源(begin)================================================================*/
  144. function GetDataSource() {
  145. $.ajax({
  146. url: "../../SystemManage/DataBaseLink/GetListJson",
  147. type: "get",
  148. dataType: "json",
  149. async: false,
  150. success: function (data) {
  151. $.each(data, function (i) {
  152. $("#txt_DataBase").append($("<option title='" + data[i].DBName + "'></option>").val(data[i].DatabaseLinkId).html(data[i].DBAlias));
  153. });
  154. }
  155. });
  156. var $gridTable = $("#gridTable");
  157. $gridTable.jqGrid({
  158. url: "../../SystemManage/DataBaseTable/GetTableListJson",
  159. postData: { dataBaseLinkId: $("#txt_DataBase").val(), keyword: $("#txt_Keyword").val() },
  160. datatype: "json",
  161. height: $(window).height() - 255,
  162. autowidth: true,
  163. colModel: [
  164. { label: "表名", name: "name", width: 260, align: "left", sortable: false },
  165. { label: '主键', name: 'pk', width: 150, align: "left", sortable: false },
  166. {
  167. label: "记录数", name: "sumrows", width: 100, align: "left", sortable: false,
  168. formatter: function (cellvalue, options, rowObject) {
  169. return cellvalue + "条";
  170. }
  171. },
  172. { label: "使用大小", name: "reserved", width: 100, align: "left", sortable: false },
  173. { label: "更新时间", name: "updatetime", width: 120, align: "left", sortable: false },
  174. { label: "说明", name: "tdescription", width: 120, align: "left", sortable: false }
  175. ],
  176. rowNum: "1000",
  177. rownumbers: true,
  178. shrinkToFit: false,
  179. gridview: true,
  180. subGrid: true,
  181. subGridRowExpanded: function (subgrid_id, row_id) {
  182. var tableName = $gridTable.jqGrid('getRowData', row_id)['name'];
  183. var subgrid_table_id = subgrid_id + "_t";
  184. $("#" + subgrid_id).html("<table id='" + subgrid_table_id + "'></table>");
  185. $("#" + subgrid_table_id).jqGrid({
  186. url: "../../SystemManage/DataBaseTable/GetTableFiledListJson",
  187. postData: { dataBaseLinkId: $("#txt_DataBase").val(), tableName: tableName },
  188. datatype: "json",
  189. height: "100%",
  190. colModel: [
  191. { label: "列名", name: "column", index: "column", width: 250, sortable: false },
  192. { label: "数据类型", name: "datatype", index: "datatype", width: 120, align: "center", sortable: false },
  193. { label: "长度", name: "length", index: "length", width: 57, align: "center", sortable: false },
  194. {
  195. label: "允许空", name: "isnullable", index: "isnullable", width: 58, align: "center", sortable: false,
  196. formatter: function (cellvalue, options, rowObject) {
  197. return cellvalue == 1 ? "<i class=\"fa fa-check-square-o\"></i>" : "<i class=\"fa fa-square-o\"></i>";
  198. }
  199. },
  200. {
  201. label: "标识", name: "identity", index: "identity", width: 58, align: "center", sortable: false,
  202. formatter: function (cellvalue, options, rowObject) {
  203. return cellvalue == 1 ? "<i class=\"fa fa-check-square-o\"></i>" : "<i class=\"fa fa-square-o\"></i>";
  204. }
  205. },
  206. {
  207. label: "主键", name: "key", index: "key", width: 57, align: "center", sortable: false,
  208. formatter: function (cellvalue, options, rowObject) {
  209. return cellvalue == 1 ? "<i class=\"fa fa-check-square-o\"></i>" : "<i class=\"fa fa-square-o\"></i>";
  210. }
  211. },
  212. { label: "默认值", name: "default", index: "default", width: 120, align: "center", sortable: false },
  213. { label: "说明", name: "remark", index: "remark", width: 100, sortable: false }
  214. ],
  215. caption: "表字段信息",
  216. rowNum: "1000",
  217. rownumbers: true,
  218. shrinkToFit: false,
  219. gridview: true,
  220. hidegrid: false
  221. });
  222. }
  223. });
  224. //查询事件
  225. $("#btn_Search").click(function () {
  226. $gridTable.jqGrid('setGridParam', {
  227. url: "../../SystemManage/DataBaseTable/GetTableListJson",
  228. postData: { dataBaseLinkId: $("#txt_DataBase").val(), keyword: $("#txt_Keyword").val() },
  229. }).trigger('reloadGrid');
  230. });
  231. }
  232. /*=========选择数据源(end)==================================================================*/
  233. /*=========绑定表格(begin)==================================================================*/
  234. var childEntityPk = "";
  235. function BindingIndex() {
  236. primaryTable();
  237. detailsTable();
  238. //主表字段
  239. function primaryTable() {
  240. $('#primaryField').html('<table id="gridPrimaryField"></table>');
  241. var $grid = $("#gridPrimaryField");
  242. $grid.jqGrid({
  243. unwritten: false,
  244. datatype: "local",
  245. height: '320',
  246. colModel: [
  247. { label: '类型', name: "datatype", hidden: true },
  248. { label: '字段', name: "name", width: 300, align: 'left', sortable: false },
  249. { label: '题头', name: "label", width: 220, align: 'left', sortable: false },
  250. { label: '隐藏', name: 'hidden', width: 80, align: 'center', sortable: false },
  251. { label: '排序', name: 'sortable', width: 80, align: 'center', sortable: false },
  252. { label: '对齐', name: 'align', width: 80, align: 'left', sortable: false },
  253. { label: '宽度', name: 'width', width: 80, align: 'center', sortable: false },
  254. { label: '格式', name: 'formatter', width: 80, align: 'left', sortable: false },
  255. { label: '操作', name: 'enabled', width: 80, align: 'center', sortable: false },
  256. ],
  257. pager: false,
  258. rownumbers: true,
  259. shrinkToFit: false,
  260. gridview: true,
  261. hoverrows: false
  262. });
  263. $.ajax({
  264. url: "../../SystemManage/DataBaseTable/GetTableFiledListJson",
  265. data: { dataBaseLinkId: $("#txt_DataBase").val(), tableName: $("#gridTable").jqGridRowValue("name") },
  266. type: "get",
  267. dataType: "json",
  268. success: function (data) {
  269. $.each(data, function (i) {
  270. var rowdata = {
  271. datatype: '<input name="datatype" type="text" class="editable" value="' + data[i].datatype + '" />',
  272. name: '<input name="name" type="text" class="editable" value="' + data[i].column + '" />',
  273. label: '<input name="label" type="text" class="editable" value="' + data[i].remark + '" />',
  274. hidden: '<input name="hidden" type="checkbox" style="vertical-align: middle;" />',
  275. sortable: '<input name="sortable" type="checkbox" checked="checked" style="vertical-align: middle;" />',
  276. align: '<select name="align" class="editable"><option value="left">左边</option><option value="center">居中</option><option value="right">右边</option></select>',
  277. width: '<input name="width" type="text" class="editable" style="text-align:center;" value="80" />',
  278. formatter: '<select name="formatter" class="editable"><option value=""></option><option value="string">字符串</option><option value="date">日期</option><option value="int">数字</option><option value="money">金额</option></select>',
  279. enabled: '<span onclick="$(this).parent().parent().remove()" class=\"label label-danger\" style=\"cursor: pointer;\">移除</span>',
  280. }
  281. $grid.jqGrid('addRowData', i, rowdata);
  282. });
  283. }
  284. });
  285. }
  286. //明细字段
  287. function detailsTable() {
  288. $('#detailsField').find('.gridPanel').html('<table id="gridDetailsField"></table>');
  289. var $grid = $("#gridDetailsField");
  290. $grid.jqGrid({
  291. unwritten: false,
  292. datatype: "local",
  293. height: '260',
  294. autowidth: true,
  295. colModel: [
  296. { label: '类型', name: "datatype", hidden: true },
  297. { label: '字段', name: "name", width: 300, align: 'left', sortable: false },
  298. { label: '题头', name: "label", width: 220, align: 'left', sortable: false },
  299. { label: '隐藏', name: 'hidden', width: 80, align: 'center', sortable: false },
  300. { label: '排序', name: 'sortable', width: 80, align: 'center', sortable: false },
  301. { label: '对齐', name: 'align', width: 80, align: 'left', sortable: false },
  302. { label: '宽度', name: 'width', width: 80, align: 'center', sortable: false },
  303. { label: '格式', name: 'formatter', width: 80, align: 'left', sortable: false },
  304. { label: '操作', name: 'enabled', width: 80, align: 'center', sortable: false },
  305. ],
  306. rowNum: "1000",
  307. rownumbers: true,
  308. shrinkToFit: false,
  309. gridview: true,
  310. hoverrows: false
  311. });
  312. $.ajax({
  313. url: "../../SystemManage/DataBaseTable/GetTableListJson",
  314. data: { dataBaseLinkId: $("#txt_DataBase").val(), keyword: $("#txt_Keyword").val() },
  315. type: "get",
  316. dataType: "json",
  317. success: function (data) {
  318. //绑定表
  319. $.each(data, function (i) {
  320. $("#s_detailsTableName").append($("<option></option>").val(data[i].name).html(data[i].name));
  321. });
  322. //表字段
  323. $("#s_detailsTableName").change(function () {
  324. $grid.clearGridData();
  325. $("#s_detailsTable_Foreignkey").html('');
  326. $.ajax({
  327. url: "../../SystemManage/DataBaseTable/GetTableFiledListJson",
  328. data: { dataBaseLinkId: $("#txt_DataBase").val(), tableName: $("#s_detailsTableName").val() },
  329. type: "get",
  330. dataType: "json",
  331. success: function (data) {
  332. $.each(data, function (i) {
  333. if (data[i].key == 1) {
  334. childEntityPk = data[i];
  335. }
  336. var rowdata = {
  337. datatype: '<input name="datatype" type="text" class="editable" value="' + data[i].datatype + '" />',
  338. name: '<input name="name" type="text" class="editable" value="' + data[i].column + '" />',
  339. label: '<input name="label" type="text" class="editable" value="' + data[i].remark + '" />',
  340. hidden: '<input name="hidden" type="checkbox" style="vertical-align: middle;" />',
  341. sortable: '<input name="sortable" type="checkbox" checked="checked" style="vertical-align: middle;" />',
  342. align: '<select name="align" class="editable"><option value="left">左边</option><option value="center">居中</option><option value="right">右边</option></select>',
  343. width: '<input name="width" type="text" class="editable" style="text-align:center;" value="80" />',
  344. formatter: '<select name="formatter" class="editable"><option value=""></option><option value="string">字符串</option><option value="date">日期</option><option value="int">数字</option><option value="money">金额</option></select>',
  345. enabled: '<span onclick="$(this).parent().parent().remove()" class=\"label label-danger\" style=\"cursor: pointer;\">移除</span>',
  346. }
  347. $grid.jqGrid('addRowData', i, rowdata);
  348. $("#s_detailsTable_Foreignkey").append($("<option title='" + data[i].remark + "'></option>").val(data[i].column).html(data[i].column));
  349. });
  350. }
  351. });
  352. });
  353. }
  354. });
  355. }
  356. }
  357. /*=========绑定表格(end)====================================================================*/
  358. /*=========绑定表单(begin)==================================================================*/
  359. var bindingFormJson = [];
  360. function BindingForm() {
  361. $.ajax({
  362. url: "../../SystemManage/DataBaseTable/GetTableFiledListJson",
  363. data: { dataBaseLinkId: $("#txt_DataBase").val(), tableName: $("#gridTable").jqGridRowValue("name") },
  364. type: "get",
  365. dataType: "json",
  366. async: false,
  367. success: function (data) {
  368. console.log(data);
  369. bindingFormJson = data;
  370. var $Form_list = $("#Form_layout_list");
  371. $Form_list.html('');
  372. $.each(data, function (i) {
  373. $Form_list.append('<div class="item_row" data-value="' + data[i].column + '" data-isnullable="' + data[i].isnullable + '" style="width: 25%; float: left;"><div class="item_field_label"><span>' + data[i].remark + '</span></div><div class="item_field_value"></div><div class="item_close">移除</div><div class="editviewtitle">编辑控件</div></div>');
  374. });
  375. $Form_list.find(".item_row").hover(function () {
  376. $(this).find('.editviewtitle').show();
  377. $(this).find('.item_close').show();
  378. }, function (e) {
  379. $(this).find('.editviewtitle').hide();
  380. $(this).find('.item_close').hide();
  381. });
  382. $Form_list.sortable({
  383. handle: '.item_field_label',
  384. placeholder: "ui-state-highlight"
  385. });
  386. //移除控件
  387. $Form_list.find('.item_close').click(function () {
  388. $(this).parents('.item_row').remove();
  389. })
  390. //编辑控件
  391. $Form_list.find('.editviewtitle').click(function () {
  392. var Id = $(this).parents('.item_row').attr('data-value');
  393. //var name = $(this).parents('.item_row').find('.item_field_label').find('span').html();
  394. dialogOpen({
  395. id: "EditControl",
  396. title: '编辑控件',
  397. url: '/GeneratorManage/MultiTable/EditControl?controlId=' + Id,
  398. width: "450px",
  399. height: "220px",
  400. callBack: function (iframeId) {
  401. top.frames[iframeId].AcceptClick(function (data) {
  402. $Form_list.find('[data-value=' + Id + ']').find('.item_field_label span').html(data.ControlName);
  403. $.each(bindingFormJson, function (i) {
  404. if (bindingFormJson[i].column == Id) {
  405. bindingFormJson[i].remark = data.ControlName;
  406. return false;
  407. }
  408. });
  409. });
  410. }
  411. });
  412. })
  413. }
  414. });
  415. detailsFormTable();
  416. function detailsFormTable() {
  417. var $grid = $("#FormDetails_layout");
  418. $grid.jqGrid({
  419. unwritten: false,
  420. datatype: "local",
  421. height: '240',
  422. autowidth: true,
  423. colModel: [
  424. { label: '字段', name: "name", width: 300, align: 'left', sortable: false },
  425. { label: '题头', name: "label", width: 220, align: 'left', sortable: false },
  426. { label: '隐藏', name: 'hidden', width: 80, align: 'center', sortable: false },
  427. { label: '排序', name: 'sortable', width: 80, align: 'center', sortable: false },
  428. { label: '对齐', name: 'align', width: 80, align: 'left', sortable: false },
  429. { label: '宽度', name: 'width', width: 80, align: 'center', sortable: false },
  430. { label: '格式', name: 'formatter', width: 80, align: 'left', sortable: false },
  431. { label: '操作', name: 'enabled', width: 80, align: 'center', sortable: false },
  432. ],
  433. rowNum: "1000",
  434. rownumbers: true,
  435. shrinkToFit: false,
  436. gridview: true,
  437. hoverrows: false
  438. });
  439. $.ajax({
  440. url: "../../SystemManage/DataBaseTable/GetTableFiledListJson",
  441. data: { dataBaseLinkId: $("#txt_DataBase").val(), tableName: $("#s_detailsTableName").val() },
  442. type: "get",
  443. dataType: "json",
  444. async: false,
  445. success: function (data) {
  446. $.each(data, function (i) {
  447. var rowdata = {
  448. name: '<input name="name" type="text" class="editable" value="' + data[i].column + '" />',
  449. label: '<input name="label" type="text" class="editable" value="' + data[i].remark + '" />',
  450. hidden: '<input name="hidden" type="checkbox" style="vertical-align: middle;" />',
  451. sortable: '<input name="sortable" type="checkbox" checked="checked" style="vertical-align: middle;" />',
  452. align: '<select name="align" class="editable"><option value="left">左边</option><option value="center">居中</option><option value="right">右边</option></select>',
  453. width: '<input name="width" type="text" class="editable" style="text-align:center;" value="80" />',
  454. formatter: '<select name="formatter" class="editable"><option value=""></option><option value="string">字符串</option><option value="date">日期</option><option value="int">数字</option><option value="money">金额</option></select>',
  455. enabled: '<span onclick="$(this).parent().parent().remove()" class=\"label label-danger\" style=\"cursor: pointer;\">移除</span>',
  456. }
  457. $grid.jqGrid('addRowData', i, rowdata);
  458. $("#s_detailsTable_Foreignkey").append($("<option title='" + data[i].remark + "'></option>").val(data[i].column).html(data[i].column));
  459. });
  460. }
  461. });
  462. }
  463. }
  464. /*=========绑定表单(end)====================================================================*/
  465. /*=========查看代码(begin)==================================================================*/
  466. var LookCodeJson = [];
  467. function LookCode() {
  468. Loading(true, "正在生成代码...");
  469. window.setTimeout(function () {
  470. var baseConfig = $("#step-2").GetWebControls();
  471. baseConfig["DataBaseLinkId"] = $("#txt_DataBase").val();
  472. baseConfig["DataBaseTableName"] = $("#gridTable").jqGridRowValue("name");
  473. baseConfig["ChildTableName"] = $("#s_detailsTableName").val();
  474. baseConfig["ChildTableForeignkey"] = $("#s_detailsTable_Foreignkey").val();
  475. baseConfig["ChildTablePk"] = childEntityPk.column;
  476. var gridPrimaryFieldJson = [];
  477. $("#gridPrimaryField").find('[role=row]').each(function (i) {
  478. if ($(this).find('input[name="name"]').val() != undefined) {
  479. gridPrimaryFieldJson.push({
  480. datatype: $(this).find('input[name="datatype"]').val(),
  481. name: $(this).find('input[name="name"]').val(),
  482. label: $(this).find('input[name="label"]').val(),
  483. hidden: $(this).find('input[name="hidden"]').is(":checked") == true ? 1 : 0,
  484. sortable: $(this).find('input[name="sortable"]').is(":checked") == true ? 1 : 0,
  485. align: $(this).find('input[name="align"]').val(),
  486. width: $(this).find('input[name="width"]').val(),
  487. formatter: $(this).find('input[name="formatter"]').val()
  488. });
  489. }
  490. });
  491. var gridDetailsFieldJson = [];
  492. $("#gridDetailsField").find('[role=row]').each(function (i) {
  493. if ($(this).find('input[name="name"]').val() != undefined) {
  494. gridDetailsFieldJson.push({
  495. datatype: $(this).find('input[name="datatype"]').val(),
  496. name: $(this).find('input[name="name"]').val(),
  497. label: $(this).find('input[name="label"]').val(),
  498. hidden: $(this).find('input[name="hidden"]').is(":checked") == true ? 1 : 0,
  499. sortable: $(this).find('input[name="sortable"]').is(":checked") == true ? 1 : 0,
  500. align: $(this).find('input[name="align"]').val(),
  501. width: $(this).find('input[name="width"]').val(),
  502. formatter: $(this).find('input[name="formatter"]').val()
  503. });
  504. }
  505. });
  506. //获取表单数据
  507. var formPrimaryFieldJson = [];
  508. $("#Form_layout_list").find(".item_row").each(function (i, item) {
  509. formPrimaryFieldJson.push({
  510. name: $(this).attr('data-value'),
  511. label: $(this).find('span').html(),
  512. isnullable: $(this).attr('data-isnullable')
  513. })
  514. });
  515. var formDetailsFieldJson = [];
  516. $("#FormDetails_layout").find('[role=row]').each(function (i) {
  517. if ($(this).find('input[name="name"]').val() != undefined) {
  518. formDetailsFieldJson.push({
  519. name: $(this).find('input[name="name"]').val(),
  520. label: $(this).find('input[name="label"]').val(),
  521. hidden: $(this).find('input[name="hidden"]').is(":checked") == true ? 1 : 0,
  522. sortable: $(this).find('input[name="sortable"]').is(":checked") == true ? 1 : 0,
  523. align: $(this).find('input[name="align"]').val(),
  524. width: $(this).find('input[name="width"]').val(),
  525. formatter: $(this).find('input[name="formatter"]').val()
  526. });
  527. }
  528. });
  529. console.log(formDetailsFieldJson);
  530. $.ajax({
  531. url: "../../GeneratorManage/MultiTable/LookCode",
  532. data: {
  533. baseInfoJson: JSON.stringify(baseConfig),
  534. gridPrimaryFieldJson: JSON.stringify(gridPrimaryFieldJson),
  535. gridDetailsFieldJson: JSON.stringify(gridDetailsFieldJson),
  536. formPrimaryFieldJson: JSON.stringify(formPrimaryFieldJson),
  537. formDetailsFieldJson: JSON.stringify(formDetailsFieldJson)
  538. },
  539. type: "post",
  540. dataType: "json",
  541. async: false,
  542. success: function (data) {
  543. var dataJons = data;
  544. LookCodeJson = data;
  545. $('#showCodeAreas').html('<textarea name="SyntaxHighlighter" class="brush: c-sharp;">' + dataJons["entityCode"] + '</textarea>');
  546. SyntaxHighlighter.highlight();
  547. $("#step-5 .nav-tabs li").click(function () {
  548. var id = $(this).attr('id');
  549. $('#showCodeAreas').html('<textarea name="SyntaxHighlighter" class="brush: c-sharp;">' + dataJons[id.substring(4)] + '</textarea>');
  550. SyntaxHighlighter.highlight();
  551. })
  552. },
  553. complete: function () {
  554. Loading(false);
  555. }
  556. });
  557. }, 500);
  558. }
  559. /*=========查看代码(end)====================================================================*/
  560. /*=========自动创建(begin)==================================================================*/
  561. function CreateCode() {
  562. Loading(true, "正在创建代码...");
  563. window.setTimeout(function () {
  564. var baseConfig = $("#step-2").GetWebControls();
  565. baseConfig["DataBaseLinkId"] = $("#txt_DataBase").val();
  566. baseConfig["DataBaseTableName"] = $("#gridTable").jqGridRowValue("name");
  567. baseConfig["ChildTableName"] = $("#s_detailsTableName").val();
  568. baseConfig["ChildTableForeignkey"] = $("#s_detailsTable_Foreignkey").val();
  569. baseConfig["ChildTablePk"] = childEntityPk.column;
  570. $.ajax({
  571. url: "../../GeneratorManage/MultiTable/CreateCode",
  572. data: { baseInfoJson: JSON.stringify(baseConfig), strCode: encodeURIComponent(JSON.stringify(LookCodeJson)) },
  573. type: "post",
  574. dataType: "json",
  575. async: false,
  576. success: function (data) {
  577. $(".drag-tip").show();
  578. if (data.type == 1) {
  579. $("#finish-msg").html(data.message).css("color", "#0FA74F");
  580. $("#finish-msg").prev('i').attr('class', 'fa fa-check-circle').css("color", "#0FA74F");
  581. $("#finish-msg").next('p').show();
  582. } else {
  583. $("#finish-msg").html(data.message).css("color", "#d9534f");
  584. $("#finish-msg").prev('i').attr('class', 'fa fa-times-circle').css("color", "#d9534f");
  585. $("#finish-msg").next('p').hide();
  586. }
  587. },
  588. complete: function () {
  589. Loading(false);
  590. }
  591. });
  592. }, 500);
  593. }
  594. /*=========自动创建(end)====================================================================*/
  595. </script>
  596. <div class="widget-body">
  597. <div id="wizard" class="wizard" data-target="#wizard-steps" style="border-left: none; border-top: none; border-right: none;">
  598. <ul class="steps">
  599. <li data-target="#step-1" class="active"><span class="step">1</span>选择数据表<span class="chevron"></span></li>
  600. <li data-target="#step-2"><span class="step">2</span>基本配置<span class="chevron"></span></li>
  601. <li data-target="#step-3"><span class="step">3</span>列表页面<span class="chevron"></span></li>
  602. <li data-target="#step-4"><span class="step">4</span>表单页面<span class="chevron"></span></li>
  603. <li data-target="#step-5"><span class="step">5</span>查看代码<span class="chevron"></span></li>
  604. <li data-target="#step-6"><span class="step">6</span>自动创建<span class="chevron"></span></li>
  605. </ul>
  606. </div>
  607. <div class="step-content" id="wizard-steps" style="border-left: none; border-bottom: none; border-right: none;">
  608. <div class="step-pane active" id="step-1" style="margin: 10px; margin-bottom: 0px;">
  609. <div class="alert alert-danger" style="text-align: left; margin-bottom: 10px;">
  610. <i class="fa fa-question-circle alert-dismissible" style="position: relative; top: 1px; font-size: 15px; padding-right: 5px;"></i>
  611. 注:请选种表格中的一行 然后点击下一步进行操作
  612. </div>
  613. <div class="titlePanel">
  614. <div class="title-search">
  615. <table>
  616. <tr>
  617. <th style="white-space: nowrap; font-weight: normal;">数据库:</th>
  618. <td>
  619. <select id="txt_DataBase" class="form-control" style="width: 100px"></select>
  620. </td>
  621. <td style="padding-left: 1px;">
  622. <input id="txt_Keyword" type="text" class="form-control" placeholder="请输入要查询关键字" style="width: 200px;" />
  623. </td>
  624. <td style="padding-left: 5px;">
  625. <a id="btn_Search" class="btn btn-primary"><i class="fa fa-search"></i>&nbsp;查询</a>
  626. </td>
  627. </tr>
  628. </table>
  629. </div>
  630. </div>
  631. <div class="gridPanel">
  632. <table id="gridTable"></table>
  633. </div>
  634. </div>
  635. <div class="step-pane" id="step-2" style="margin: 10px; margin-bottom: 0px;">
  636. <div class="panel panel-default" style="margin-bottom: 10px;">
  637. <div class="panel-heading">
  638. <h3 class="panel-title">文件名配置</h3>
  639. </div>
  640. <div class="panel-body" style="width: 99%;">
  641. <table class="form">
  642. <tr>
  643. <th class="formTitle">创建人员<font face="宋体">*</font></th>
  644. <td class="formValue">
  645. <input id="CreateUser" type="text" class="form-control" value="@ViewBag.UserName" isvalid="yes" checkexpession="NotNull" />
  646. </td>
  647. <th class="formTitle">创建日期</th>
  648. <td class="formValue">
  649. <input id="CreateDate" type="text" class="form-control" value="@DateTimeHelper.Now.ToString("yyyy-MM-dd HH:mm")" isvalid="yes" checkexpession="NotNull" />
  650. </td>
  651. <th class="formTitle">类名描述<font face="宋体">*</font></th>
  652. <td class="formValue">
  653. <input id="Description" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" />
  654. </td>
  655. </tr>
  656. <tr>
  657. <th class="formTitle">表主键名<font face="宋体">*</font></th>
  658. <td class="formValue">
  659. <div id="DataBaseTablePK" type="select" class="ui-select" isvalid="yes" checkexpession="NotNull">
  660. </div>
  661. </td>
  662. <th class="formTitle">实体类名<font face="宋体">*</font></th>
  663. <td class="formValue">
  664. <input id="EntityClassName" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" />
  665. </td>
  666. <th class="formTitle">映射类名<font face="宋体">*</font></th>
  667. <td class="formValue">
  668. <input id="MapClassName" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" />
  669. </td>
  670. </tr>
  671. <tr>
  672. <th class="formTitle">服务类名<font face="宋体">*</font></th>
  673. <td class="formValue">
  674. <input id="ServiceClassName" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" />
  675. </td>
  676. <th class="formTitle">接口类名<font face="宋体">*</font></th>
  677. <td class="formValue">
  678. <input id="IServiceClassName" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" />
  679. </td>
  680. <th class="formTitle">业务类名<font face="宋体">*</font></th>
  681. <td class="formValue">
  682. <input id="BusinesClassName" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" />
  683. </td>
  684. </tr>
  685. <tr>
  686. <th class="formTitle">控制器名<font face="宋体">*</font></th>
  687. <td class="formValue">
  688. <input id="ControllerName" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" />
  689. </td>
  690. <th class="formTitle">列表页名<font face="宋体">*</font></th>
  691. <td class="formValue">
  692. <input id="IndexPageName" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" />
  693. </td>
  694. <th class="formTitle">表单页名<font face="宋体">*</font></th>
  695. <td class="formValue">
  696. <input id="FormPageName" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" />
  697. </td>
  698. </tr>
  699. </table>
  700. </div>
  701. </div>
  702. <div class="panel panel-default">
  703. <div class="panel-heading">
  704. <h3 class="panel-title">输出目录</h3>
  705. </div>
  706. <div class="panel-body" style="width: 99%;">
  707. <table class="form">
  708. <tr>
  709. <th class="formTitle">输出到所在区域</th>
  710. <td class="formValue">
  711. <div id="OutputAreas" type="select" class="ui-select" isvalid="yes" checkexpession="NotNull">
  712. <ul>
  713. <li data-value="AuthorizeManage">AuthorizeManage</li>
  714. <li data-value="BaseManage">BaseManage</li>
  715. <li data-value="CustomerManage">CustomerManage</li>
  716. <li data-value="FlowManage">FlowManage</li>
  717. <li data-value="PublicInfoManage">PublicInfoManage</li>
  718. <li data-value="ReportManage">ReportManage</li>
  719. <li data-value="SystemManage">SystemManage</li>
  720. <li data-value="WeChatManage">WeChatManage</li>
  721. <li data-value="InformationManage">InformationManage(资讯)</li>
  722. <li data-value="GalleryManage">GalleryManage(图库)</li>
  723. <li data-value="LotteryNumberManage">LotteryNumberManage(开奖号)</li>
  724. </ul>
  725. </div>
  726. </td>
  727. </tr>
  728. <tr>
  729. <th class="formTitle">实体层输出目录</th>
  730. <td class="formValue">
  731. <input id="OutputEntity" readonly type="text" class="form-control" value="@ViewBag.OutputDirectory\Lottomat.Application.Entity" />
  732. </td>
  733. </tr>
  734. <tr>
  735. <th class="formTitle">映射层输出目录</th>
  736. <td class="formValue">
  737. <input id="OutputMap" readonly type="text" class="form-control" value="@ViewBag.OutputDirectory\Lottomat.Application.Mapping" />
  738. </td>
  739. </tr>
  740. <tr>
  741. <th class="formTitle">服务层输出目录</th>
  742. <td class="formValue">
  743. <input id="OutputService" readonly type="text" class="form-control" value="@ViewBag.OutputDirectory\Lottomat.Application.Service" />
  744. </td>
  745. </tr>
  746. <tr>
  747. <th class="formTitle">接口层输出目录</th>
  748. <td class="formValue">
  749. <input id="OutputIService" readonly type="text" class="form-control" value="@ViewBag.OutputDirectory\Lottomat.Application.IService" />
  750. </td>
  751. </tr>
  752. <tr>
  753. <th class="formTitle">业务层输出目录</th>
  754. <td class="formValue">
  755. <input id="OutputBusines" readonly type="text" class="form-control" value="@ViewBag.OutputDirectory\Lottomat.Application.Busines" />
  756. </td>
  757. </tr>
  758. <tr>
  759. <th class="formTitle">应用层输出目录</th>
  760. <td class="formValue">
  761. <input id="OutputController" readonly type="text" class="form-control" value="@ViewBag.OutputDirectory\Lottomat.Application.Admin" />
  762. </td>
  763. </tr>
  764. </table>
  765. </div>
  766. </div>
  767. </div>
  768. <div class="step-pane" id="step-3">
  769. <div id="BindingList" style="margin: 10px;">
  770. <div class="panel panel-default" style="margin-bottom: 10px;">
  771. <div class="panel-heading">
  772. <h3 class="panel-title">工具栏</h3>
  773. </div>
  774. <div class="panel-body" style="width: 100%; padding: 0px;">
  775. <ul class="sys_spec_text">
  776. <li class="active"><a data-value="lr-replace"><i class="fa fa-refresh"></i>&nbsp;刷新</a></li>
  777. <li class="active"><a data-value="lr-add"><i class="fa fa-plus"></i>&nbsp;新增</a></li>
  778. <li class="active"><a data-value="lr-edit"><i class="fa fa-pencil-square-o"></i>&nbsp;编辑</a></li>
  779. <li class="active"><a data-value="lr-delete"><i class="fa fa-trash-o"></i>&nbsp;删除</a></li>
  780. <li class="active"><a data-value="lr-detail"><i class="fa fa-list-alt"></i>&nbsp;详细</a></li>
  781. </ul>
  782. </div>
  783. </div>
  784. <div class="panel panel-default" style="margin-bottom: 10px;">
  785. <div class="panel-heading">
  786. <h3 class="panel-title">绑定表格</h3>
  787. </div>
  788. <div class="panel-body" style="width: 100%; padding: 0px; height: 425px;">
  789. <ul class="nav nav-tabs" style="border-bottom: 1px solid #ddd;">
  790. <li class="active"><a href="#primaryField" data-toggle="tab">主表字段</a></li>
  791. <li><a href="#detailsField" data-toggle="tab">明细字段</a></li>
  792. <li><a href="#queryField" data-toggle="tab">查询条件</a></li>
  793. </ul>
  794. <div class="tab-content" style="padding-top: 15px; padding-left: 15px; padding-right: 15px;">
  795. <div id="primaryField" class="tab-pane active">
  796. <table id="gridPrimaryField"></table>
  797. </div>
  798. <div id="detailsField" class="tab-pane ">
  799. <div class="titlePanel" style="border: none; line-height: 50px;">
  800. <div class="title-search" style="padding-left: 0px;">
  801. <table>
  802. <tr>
  803. <th style="white-space: nowrap; font-weight: normal; width: 60px; text-align: right; padding-right: 5px;">数据表:</th>
  804. <td>
  805. <select id="s_detailsTableName" class="form-control" style="width: 150px"></select>
  806. </td>
  807. <th style="white-space: nowrap; font-weight: normal; width: 110px; text-align: right; padding-right: 5px;">与主表的管理:</th>
  808. <td>
  809. <select id="s_detailsTable_Foreignkey" class="form-control" style="width: 150px"></select>
  810. </td>
  811. </tr>
  812. </table>
  813. </div>
  814. </div>
  815. <div class="gridPanel">
  816. <table id="gridDetailsField"></table>
  817. </div>
  818. </div>
  819. <div id="queryField" class="tab-pane ">
  820. 查询条件
  821. </div>
  822. </div>
  823. </div>
  824. </div>
  825. </div>
  826. </div>
  827. <div class="step-pane" id="step-4">
  828. <div id="BindingForm" style="margin: 10px;">
  829. <div class="panel panel-default" style="margin-bottom: 10px;">
  830. <div class="panel-heading">
  831. <h3 class="panel-title">主表(表单)</h3>
  832. </div>
  833. <div class="panel-body" style="width: 100%; padding: 0px; height: 180px; overflow: auto;">
  834. <div id="Form_layout" class="app_layout" style="border-left: none;">
  835. <div id="Form_layout_list" class="item_table ui-sortable">
  836. </div>
  837. </div>
  838. </div>
  839. </div>
  840. <div class="panel panel-default" style="margin-bottom: 10px;">
  841. <div class="panel-heading">
  842. <h3 class="panel-title">明细(表单)</h3>
  843. </div>
  844. <div class="panel-body" style="width: 100%; padding: 0px; height: 301px;">
  845. <div class="gridPanel" style="padding-top: 15px; padding-left: 15px; padding-right: 15px;">
  846. <table id="FormDetails_layout"></table>
  847. </div>
  848. </div>
  849. </div>
  850. </div>
  851. </div>
  852. <div class="step-pane" id="step-5" style="margin: 5px;">
  853. <ul class="nav nav-tabs">
  854. <li class="active" id="Tab_entityCode" title="Entity"><a href="#" data-toggle="tab">实体类</a></li>
  855. <li id="Tab_entityChildCode" title="ChildEntity"><a href="#" data-toggle="tab">实体子类</a></li>
  856. <li id="Tab_entitymapCode" title="Mapping"><a href="#" data-toggle="tab">实体映射类</a></li>
  857. <li id="Tab_entitymapChildCode" title="ChildMapping"><a href="#" data-toggle="tab">实体映射子类</a></li>
  858. <li id="Tab_serviceCode" title="Service"><a href="#" data-toggle="tab">服务类</a></li>
  859. <li id="Tab_iserviceCode" title="IService"><a href="#" data-toggle="tab">服务接口类</a></li>
  860. <li id="Tab_businesCode" title="Busines"><a href="#" data-toggle="tab">业务类</a></li>
  861. <li id="Tab_controllerCode" title="Controller"><a href="#" data-toggle="tab">控制器</a></li>
  862. <li id="Tab_indexCode" title="Index"><a href="#" data-toggle="tab">列表页</a></li>
  863. <li id="Tab_formCode" title="Form"><a href="#" data-toggle="tab">表单页</a></li>
  864. </ul>
  865. <div id="showCodeAreas" class="tab-content" style="height: 525px; padding-left: 5px; padding-right: 5px; overflow: auto;">
  866. </div>
  867. </div>
  868. <div class="step-pane" id="step-6" style="margin: 5px; overflow: hidden; height: 600px;">
  869. <div class="drag-tip" style="text-align: center; padding-top: 100px; display: none;">
  870. <i class="fa fa-check-circle" style="font-size: 204px; color: #0FA74F;"></i>
  871. <div id="finish-msg" style="font-weight: bold; font-size: 24px; color: #0FA74F; margin-top: 20px;"></div>
  872. <p style="color: #666; font-size: 12px; margin-top: 10px;">
  873. <a id="publish_btn" href="#">发布功能</a>
  874. </p>
  875. </div>
  876. <div id="publish_panel" style="position: absolute; height: 400px; top: 700px; z-index: 100; background: #ffffff; margin-top: 15px; margin-right: 30px; display: none;">
  877. <table class="form">
  878. <tr>
  879. <th class="formTitle">功能编号<font face="宋体">*</font></th>
  880. <td class="formValue">
  881. <input id="ModuleEnCode" type="text" class="form-control" placeholder="请输入编号" isvalid="yes" checkexpession="NotNull" />
  882. </td>
  883. </tr>
  884. <tr>
  885. <th class="formTitle">功能名称<font face="宋体">*</font></th>
  886. <td class="formValue">
  887. <input id="ModuleFullName" type="text" class="form-control" placeholder="请输入名称" isvalid="yes" checkexpession="NotNull" />
  888. </td>
  889. </tr>
  890. <tr>
  891. <th class="formTitle">功能上级<font face="宋体">*</font></th>
  892. <td class="formValue">
  893. <div id="ModuleParentId" type="selectTree" class="ui-select" isvalid="yes" checkexpession="NotNull"></div>
  894. </td>
  895. </tr>
  896. <tr>
  897. <th class="formTitle">功能图标<font face="宋体">*</font></th>
  898. <td class="formValue">
  899. <input id="ModuleIcon" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" />
  900. <span class="input-button" title="选取图标">...</span>
  901. </td>
  902. </tr>
  903. <tr>
  904. <th class="formTitle" valign="top" style="padding-top: 4px;">
  905. 功能描述
  906. </th>
  907. <td class="formValue">
  908. <textarea id="ModuleDescription" class="form-control" style="height: 70px;"></textarea>
  909. </td>
  910. </tr>
  911. </table>
  912. </div>
  913. </div>
  914. </div>
  915. <div class="form-button" id="wizard-actions">
  916. <a id="btn_last" disabled class="btn btn-default btn-prev">上一步</a>
  917. <a id="btn_next" class="btn btn-default btn-next">下一步</a>
  918. <a id="btn_finish" disabled class="btn btn-success">完成</a>
  919. </div>
  920. </div>
  921. <style>
  922. body {
  923. overflow: hidden;
  924. }
  925. .app_layout .item_table {
  926. overflow: hidden;
  927. border-top: 1px solid #eeecec;
  928. border-bottom: none;
  929. min-height: 400px;
  930. }
  931. .app_layout .item_row {
  932. cursor: default;
  933. position: relative;
  934. height: 30px;
  935. line-height: 30px;
  936. }
  937. .app_layout .item_row .item_field_label {
  938. cursor: move;
  939. }
  940. .app_layout .item_row .item_close {
  941. display: none;
  942. position: absolute;
  943. right: 50px;
  944. top: -1px;
  945. z-index: 100;
  946. height: 20px;
  947. line-height: 20px;
  948. border: 1px solid #d43f3a;
  949. cursor: pointer;
  950. background-color: #d9534f;
  951. color: #fff;
  952. }
  953. .app_layout .item_row:hover {
  954. border: 1px dashed #337ab7;
  955. }
  956. .app_layout .item_row:last-child {
  957. border-bottom: 1px solid #eeecec;
  958. }
  959. .app_layout .ui-state-highlight {
  960. border: none;
  961. }
  962. .panel-body .ui-jqgrid tr.ui-row-ltr td {
  963. padding: 0px;
  964. border-right: 1px solid #ccc;
  965. }
  966. .panel-body .ui-jqgrid tr.ui-row-ltr td .editable {
  967. height: 25px;
  968. background-color: #fff;
  969. border: 0px;
  970. outline: 0;
  971. padding-left: 5px;
  972. padding-right: 5px;
  973. }
  974. .panel-body .ui-state-highlight {
  975. background: #ffffff;
  976. color: #000;
  977. }
  978. </style>