field.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2. var Controller = {
  3. fields: function () {
  4. // 初始化表格参数配置
  5. Table.config.dragsortfield = 'name';
  6. var name = $("#assign-data-name").val();
  7. var is_admin = $("#assign-data-is_admin").val();
  8. Table.api.init({
  9. extend: {
  10. index_url: 'famysql/field/fields?name=' + name + '&is_admin=' + is_admin,
  11. add_url: 'famysql/field/field_add?name=' + name,
  12. dragsort_url: 'famysql/field/field_drag?name=' + name,
  13. },
  14. showExport: false,//导出按钮导出整个表的所有行
  15. showToggle: false,//切换卡片视图和表格视图
  16. showColumns: false,//切换显示隐藏列
  17. search: false,//关闭快速搜索
  18. commonSearch: false,//关闭通用搜索
  19. });
  20. var table = $("#table");
  21. // 初始化表格
  22. table.bootstrapTable({
  23. url: $.fn.bootstrapTable.defaults.extend.index_url,
  24. pk: 'id',
  25. sortName: 'id',
  26. columns: [
  27. [
  28. { field: 'id', title: __('Id') },
  29. { field: 'name', title: __('Name') },
  30. { field: 'type', title: __('Type') },
  31. { field: 'length', title: __('Length') },
  32. { field: 'default', title: __('Default') },
  33. { field: 'is_null', title: __('Is_null') },
  34. { field: 'unsigned', title: __('Unsigned') },
  35. { field: 'comment', title: __('Comment') },
  36. {
  37. field: 'operate',
  38. title: __('Table Operate'),
  39. buttons: [
  40. {
  41. name: 'dragsort',
  42. icon: 'fa fa-arrows',
  43. title: __('Drag to sort'),
  44. extend: 'data-toggle="tooltip"',
  45. classname: 'btn btn-xs btn-primary btn-dragsort',
  46. },
  47. {
  48. name: 'field_edit',
  49. icon: 'fa fa-pencil',
  50. title: __('Edit'),
  51. extend: 'data-toggle="tooltip"',
  52. url: function (row) {
  53. return Fast.api.fixurl("famysql/field/field_edit?table=" + name + "&field=" + row.name);
  54. },
  55. classname: 'btn btn-xs btn-success btn-dialog'
  56. },
  57. {
  58. name: 'field_del',
  59. icon: 'fa fa-trash',
  60. title: __('Del'),
  61. extend: 'data-toggle="tooltip"',
  62. url: function (row) {
  63. return Fast.api.fixurl("famysql/field/field_del?table=" + name + "&field=" + row.name);
  64. },
  65. classname: 'btn btn-xs btn-danger btn-ajax',
  66. confirm: function (row) {
  67. return '是否确定删除该“' + row.name + '”字段,不可恢复?';
  68. },
  69. success: function (data, ret) {
  70. $(".btn-refresh").trigger("click"); //刷新数据
  71. },
  72. error: function (data, ret) {
  73. console.log(data, ret);
  74. Layer.alert(ret.msg);
  75. return false;
  76. }
  77. }
  78. ],
  79. table: table,
  80. events: Table.api.events.operate,
  81. formatter: function (value, row, index) {
  82. var that = $.extend({}, this);
  83. if (!row.is_admin || row.name == 'id') {
  84. return '-';
  85. }
  86. return Table.api.formatter.operate.call(that, value, row, index);
  87. }
  88. }
  89. ]
  90. ]
  91. });
  92. // 为表格绑定事件
  93. Table.api.bindevent(table);
  94. },
  95. field_add: function () {
  96. Controller.api.bindevent();
  97. var ints = ["int", "tinyint", "smallint", "mediumint", "bigint", "float", "double", "decimal"]
  98. $(document).on("change", "#field-suffix", function () {
  99. var suffix = $(this).val();
  100. if (suffix !== "无") {
  101. $.ajax({
  102. type: "POST",
  103. url: "famysql/field/getSuffix",
  104. data: { name: suffix },
  105. async: false
  106. }).done(function (data) {
  107. $("#c-type").val((data.type)[0]);
  108. var type = $("#c-type").val();
  109. var unsigned_show = $(".form-input-unsigned").hasClass("hidden");
  110. var length_show = $(".form-input-length").hasClass("hidden");
  111. var basic_show = $(".form-input-basic").hasClass("hidden");
  112. var default_show = $(".form-input-default").hasClass("hidden");
  113. if (ints.indexOf(type) !== -1) {
  114. if (unsigned_show) {
  115. $(".form-input-unsigned").removeClass("hidden");
  116. $(".form-input-zerofill").removeClass("hidden");
  117. $(".form-input-unsigned input").attr("disabled", false);
  118. $(".form-input-zerofill input").attr("disabled", false);
  119. }
  120. if (!length_show) {
  121. $(".form-input-length").removeClass("hidden");
  122. $(".form-input-length input").attr("disabled", false);
  123. }
  124. if (!basic_show) {
  125. $(".form-input-basic").addClass("hidden");
  126. $(".form-input-basic textarea").attr("disabled", "disabled");
  127. }
  128. if (default_show) {
  129. $(".form-input-default").removeClass("hidden");
  130. $(".form-input-default input").attr("disabled", false);
  131. }
  132. } else if (type == 'enum' || type == 'set') {
  133. if (!unsigned_show) {
  134. $(".form-input-unsigned").addClass("hidden");
  135. $(".form-input-zerofill").addClass("hidden");
  136. $(".form-input-unsigned input").attr("disabled", "disabled");
  137. $(".form-input-zerofill input").attr("disabled", "disabled");
  138. }
  139. if (!length_show) {
  140. $(".form-input-length").addClass("hidden");
  141. $(".form-input-length input").attr("disabled", "disabled");
  142. }
  143. if (basic_show) {
  144. $(".form-input-basic").removeClass("hidden");
  145. $(".form-input-basic textarea").attr("disabled", false);
  146. }
  147. if (default_show) {
  148. $(".form-input-default").removeClass("hidden");
  149. $(".form-input-default input").attr("disabled", false);
  150. }
  151. } else if (type == 'text' || type == 'longtext' || type == 'mediumtext') {
  152. if (!unsigned_show) {
  153. $(".form-input-unsigned").addClass("hidden");
  154. $(".form-input-zerofill").addClass("hidden");
  155. $(".form-input-unsigned input").attr("disabled", "disabled");
  156. $(".form-input-zerofill input").attr("disabled", "disabled");
  157. }
  158. if (!length_show) {
  159. $(".form-input-length").addClass("hidden");
  160. $(".form-input-length input").attr("disabled", "disabled");
  161. }
  162. if (!basic_show) {
  163. $(".form-input-basic").addClass("hidden");
  164. $(".form-input-basic textarea").attr("disabled", "disabled");
  165. }
  166. if (!default_show) {
  167. $(".form-input-default").addClass("hidden");
  168. $(".form-input-default input").attr("disabled", "disabled");
  169. }
  170. } else if (type == 'date' || type == 'datetime' || type == 'time' || type == 'year') {
  171. if (!unsigned_show) {
  172. $(".form-input-unsigned").addClass("hidden");
  173. $(".form-input-zerofill").addClass("hidden");
  174. $(".form-input-unsigned input").attr("disabled", "disabled");
  175. $(".form-input-zerofill input").attr("disabled", "disabled");
  176. }
  177. if (!length_show) {
  178. $(".form-input-length").addClass("hidden");
  179. $(".form-input-length input").attr("disabled", "disabled");
  180. }
  181. if (!basic_show) {
  182. $(".form-input-basic").addClass("hidden");
  183. $(".form-input-basic textarea").attr("disabled", "disabled");
  184. }
  185. if (!default_show) {
  186. $(".form-input-default").addClass("hidden");
  187. $(".form-input-default input").attr("disabled", "disabled");
  188. }
  189. } else {
  190. if (!unsigned_show) {
  191. $(".form-input-unsigned").addClass("hidden");
  192. $(".form-input-zerofill").addClass("hidden");
  193. $(".form-input-unsigned input").attr("disabled", "disabled");
  194. $(".form-input-zerofill input").attr("disabled", "disabled");
  195. }
  196. if (length_show) {
  197. $(".form-input-length").removeClass("hidden");
  198. $(".form-input-length input").attr("disabled", false);
  199. } else if (!length_show && !data.length) {
  200. $(".form-input-length").addClass("hidden");
  201. $(".form-input-length input").attr("disabled", "disabled");
  202. }
  203. if (!basic_show) {
  204. $(".form-input-basic").addClass("hidden");
  205. $(".form-input-basic textarea").attr("disabled", "disabled");
  206. }
  207. if (default_show) {
  208. $(".form-input-default").removeClass("hidden");
  209. $(".form-input-default input").attr("disabled", false);
  210. }
  211. }
  212. $("#c-length").val(data.length);
  213. $("#c-comment").val(data.comment);
  214. $("#c-remark").val(data.remark);
  215. })
  216. $(".form-input-remark").removeClass("hidden");
  217. } else {
  218. $("#field_add-form").trigger("reset");
  219. $('#c-type').val("varchar");
  220. $(".form-input-remark").addClass("hidden");
  221. $(".form-input-remark input").attr("disabled", "disabled");
  222. $(".form-input-length").removeClass("hidden");
  223. $(".form-input-basic").addClass("hidden");
  224. }
  225. $("#c-type").selectPageRefresh();
  226. });
  227. },
  228. field_edit: function () {
  229. Controller.api.bindevent();
  230. },
  231. create: function () {
  232. Controller.api.bindevent();
  233. },
  234. api: {
  235. bindevent: function () {
  236. var ints = ["int", "tinyint", "smallint", "mediumint", "bigint", "float", "double", "decimal"]
  237. $(document).on("change", "#c-type", function () {
  238. var type = $(this).val();
  239. var unsigned_show = $(".form-input-unsigned").hasClass("hidden");
  240. var length_show = $(".form-input-length").hasClass("hidden");
  241. var basic_show = $(".form-input-basic").hasClass("hidden");
  242. var default_show = $(".form-input-default").hasClass("hidden");
  243. if (ints.indexOf(type) !== -1) {
  244. if (unsigned_show) {
  245. $(".form-input-unsigned").removeClass("hidden");
  246. $(".form-input-zerofill").removeClass("hidden");
  247. $(".form-input-unsigned input").attr("disabled", false);
  248. $(".form-input-zerofill input").attr("disabled", false);
  249. }
  250. if (!length_show) {
  251. $(".form-input-length").removeClass("hidden");
  252. $(".form-input-length input").attr("disabled", false);
  253. }
  254. if (!basic_show) {
  255. $(".form-input-basic").addClass("hidden");
  256. $(".form-input-basic textarea").attr("disabled", "disabled");
  257. }
  258. if (default_show) {
  259. $(".form-input-default").removeClass("hidden");
  260. $(".form-input-default input").attr("disabled", false);
  261. }
  262. } else if (type == 'enum' || type == 'set') {
  263. if (!unsigned_show) {
  264. $(".form-input-unsigned").addClass("hidden");
  265. $(".form-input-zerofill").addClass("hidden");
  266. $(".form-input-unsigned input").attr("disabled", "disabled");
  267. $(".form-input-zerofill input").attr("disabled", "disabled");
  268. }
  269. if (!length_show) {
  270. $(".form-input-length").addClass("hidden");
  271. $(".form-input-length input").attr("disabled", "disabled");
  272. }
  273. if (basic_show) {
  274. $(".form-input-basic").removeClass("hidden");
  275. $(".form-input-basic textarea").attr("disabled", false);
  276. }
  277. if (default_show) {
  278. $(".form-input-default").removeClass("hidden");
  279. $(".form-input-default input").attr("disabled", false);
  280. }
  281. } else if (type == 'text' || type == 'longtext' || type == 'mediumtext') {
  282. if (!unsigned_show) {
  283. $(".form-input-unsigned").addClass("hidden");
  284. $(".form-input-zerofill").addClass("hidden");
  285. $(".form-input-unsigned input").attr("disabled", "disabled");
  286. $(".form-input-zerofill input").attr("disabled", "disabled");
  287. }
  288. if (!length_show) {
  289. $(".form-input-length").addClass("hidden");
  290. $(".form-input-length input").attr("disabled", "disabled");
  291. }
  292. if (!basic_show) {
  293. $(".form-input-basic").addClass("hidden");
  294. $(".form-input-basic textarea").attr("disabled", "disabled");
  295. }
  296. if (default_show) {
  297. $(".form-input-default").removeClass("hidden");
  298. $(".form-input-default input").attr("disabled", false);
  299. }
  300. } else if (type == 'date' || type == 'datetime' || type == 'time' || type == 'year') {
  301. if (!unsigned_show) {
  302. $(".form-input-unsigned").addClass("hidden");
  303. $(".form-input-zerofill").addClass("hidden");
  304. $(".form-input-unsigned input").attr("disabled", "disabled");
  305. $(".form-input-zerofill input").attr("disabled", "disabled");
  306. }
  307. if (!length_show) {
  308. $(".form-input-length").addClass("hidden");
  309. $(".form-input-length input").attr("disabled", "disabled");
  310. }
  311. if (!basic_show) {
  312. $(".form-input-basic").addClass("hidden");
  313. $(".form-input-basic textarea").attr("disabled", "disabled");
  314. }
  315. if (!default_show) {
  316. $(".form-input-default").addClass("hidden");
  317. $(".form-input-default input").attr("disabled", "disabled");
  318. }
  319. } else {
  320. if (!unsigned_show) {
  321. $(".form-input-unsigned").addClass("hidden");
  322. $(".form-input-zerofill").addClass("hidden");
  323. $(".form-input-unsigned input").attr("disabled", "disabled");
  324. $(".form-input-zerofill input").attr("disabled", "disabled");
  325. }
  326. if (length_show) {
  327. $(".form-input-length").removeClass("hidden");
  328. $(".form-input-length input").attr("disabled", false);
  329. }
  330. if (!basic_show) {
  331. $(".form-input-basic").addClass("hidden");
  332. $(".form-input-basic textarea").attr("disabled", "disabled");
  333. }
  334. if (default_show) {
  335. $(".form-input-default").removeClass("hidden");
  336. $(".form-input-default input").attr("disabled", false);
  337. }
  338. }
  339. $("#c-length").val("");
  340. $("#c-default").val("");
  341. });
  342. Form.api.bindevent($("form[role=form]"));
  343. }
  344. }
  345. };
  346. return Controller;
  347. });