_QueryModal.cshtml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. @using System.Linq;
  2. @using IwbZero.AppServiceBase
  3. @using NPOI.SS.Formula.Functions
  4. @using ShwasherSys
  5. @using ShwasherSys.Models.Modal
  6. @model QueryModalModel
  7. @{
  8. string modalId = Model.ModalId ?? "";
  9. string submit = Model.SubmitEventName ?? "";
  10. string click = Model.ItemClickEventName ?? "";
  11. string dbClick = Model.ItemDbClickEventName ?? "";
  12. string width = Model.ModalWidth > 0 ? "width:" + Model.ModalWidth + "px" : "";
  13. string submitEx = Model.SubmitEx;
  14. List<MultiSearchDto> searchDtos = Model.SearchList;
  15. }
  16. <style>
  17. .query-modal .key.form-control, .query-modal .input-group-addon {
  18. height: 25px;
  19. line-height: 25px;
  20. padding: 0 0 0 10px;
  21. font-size: 12px;
  22. }
  23. .query-modal .input-group-addon {
  24. line-height: 23px;
  25. padding: 0 15px;
  26. cursor: pointer;
  27. position: relative
  28. }
  29. .query-modal .input-group-addon .icon-search {
  30. position: absolute;
  31. top: 5px;
  32. right: 5px;
  33. }
  34. .query-modal .btn-toolbar {
  35. padding: 4px 5px 5px 2px;
  36. background: #583d9c;
  37. border: 1px solid #583d9c;
  38. }
  39. </style>
  40. <section>
  41. <div class="modal fade query-modal" id="@modalId" role="dialog" tabindex="-1" aria-hidden="true">
  42. <div class="modal-dialog modal-dialog-centered" role="document" style="@width">
  43. <div class="modal-content">
  44. <div class="modal-header">
  45. <button type="button" class="close" data-dismiss="modal" aria-hidden="true"><span aria-hidden="true">&times;</span></button>
  46. <h4 class="modal-title">
  47. <span>@Html.Raw(Model.ModalName)</span>
  48. </h4>
  49. </div>
  50. <div class="modal-body container-fluid" style="padding:5px ">
  51. <div class="table-box mr-4 iwb-bootstrap-table">
  52. <div class="btn-toolbar row" id="query_tableTool" role="toolbar" aria-label="Toolbar with button groups">
  53. <div class="col-sm-12 pull-left" style="padding: 0">
  54. <form>
  55. @if (Model.QueryItems != null && Model.QueryItems.Any())
  56. {
  57. string spilter = Model.QueryItems.Count(a => a.IsSearch) > 2 ? "col-md-4" : "col-md-6";
  58. int i = 0;
  59. foreach (var item in Model.QueryItems)
  60. {
  61. if (item.IsSearch)
  62. {
  63. i++;
  64. int filedType = (int) item.FiledType,expType = (int) item.ExpType;
  65. <div class="@spilter" @item.IsHidden >
  66. <div class="input-group">
  67. <input type="text" class="form-control key" id="Q-KeyWords-@i" name="KeyWords-@i" placeholder="请输入@(item.Name)">
  68. <input type="hidden" id="Q-KeyField-@i" name="KeyField-@i" value="@item.Key">
  69. <input type="hidden" id="Q-FieldType-@i" name="FieldType-@i" value="@filedType">
  70. <input type="hidden" id="Q-ExpType-@i" name="ExpType-@i" value="@expType">
  71. <span class="input-group-addon" onclick="@(modalId)Search()">
  72. <i class="iconfont icon-search"></i>
  73. </span>
  74. </div>
  75. </div>
  76. }
  77. }
  78. }
  79. </form>
  80. </div>
  81. </div>
  82. <table data-url="@Model.QueryUrl"
  83. data-striped="true" data-id-field="id" data-unique-id="id"
  84. data-method="post"
  85. data-side-pagination="server"
  86. data-content-type="application/x-www-form-urlencoded; charset=UTF-8"
  87. data-cache="false"
  88. data-pagination="true" data-page-size="10" data-page-number="1" data-page-list="[10,20,50]" data-pagination-detail-h-align="right" data-pagination-h-align="left"
  89. data-query-params="QueryParams_@(modalId)"
  90. data-response-handler="ResponseHandler"
  91. data-click-to-select="true"
  92. data-single-select="true">
  93. <thead>
  94. <tr class="row">
  95. @if (Model.QueryItems != null && Model.QueryItems.Any())
  96. {
  97. <th data-field="state" data-checkbox="true"></th>
  98. foreach (var item in Model.QueryItems)
  99. {
  100. if (string.IsNullOrEmpty(item.IsHidden))
  101. {
  102. var formatter = string.IsNullOrEmpty(item.Formatter) ? "" : "data-formatter=\"" + item.Formatter + "\"";
  103. var sort = item.IsSort ? "data-sortable=\"true\"" : "";
  104. <th data-align="center" data-field="@item.Key" @Html.Raw(formatter) @Html.Raw(sort)>@item.Name</th>
  105. }
  106. }
  107. }
  108. </tr>
  109. </thead>
  110. </table>
  111. </div>
  112. </div>
  113. <div class="modal-footer" style="text-align: center;padding-top: 10px">
  114. <button type="button" class="btn btn-default waves-effect" data-dismiss="modalProduct" style="min-width: 100px; background: #FFFFFF; border: 1px solid #DDDDDD;" onclick="$('#@modalId').modal('hide');">取消</button>
  115. <button type="button" class="btn btn-success waves-effect" style="min-width: 100px;background-color: #583d9c !important;border: 1px solid #583d9c !important;" onclick="Submit_@(modalId)()">确定</button>
  116. </div>
  117. </div>
  118. </div>
  119. </div>
  120. </section>
  121. @using (Html.BeginScripts())
  122. {
  123. <script>
  124. var $@(modalId)_table = $("#@modalId table"), _searchList_@modalId = [];
  125. $("#@modalId").off('show.bs.modal').on('show.bs.modal', function () {
  126. $("#@modalId form").find(".key").val("");
  127. if ('@(Model.DefaultValueFunction)'!=='QueryDefaultValueFunction') {
  128. @(Model.DefaultValueFunction) && @(Model.DefaultValueFunction)();
  129. }
  130. @(modalId)Search();
  131. });
  132. function @(modalId)Search() {
  133. $@(modalId)_table.bootstrapTable("destroy");
  134. SearchList_@(modalId)();
  135. $@(modalId)_table.bootstrapTable({
  136. onClickRow: ClickRow_@(modalId),
  137. onDblClickRow: DbClickRow_@(modalId),
  138. queryParams:QueryParams_@(modalId)
  139. });
  140. }
  141. function QueryParams_@(modalId)(params) { //bootstrapTable自带参数
  142. var sorting = '';
  143. if (params.sort) {
  144. sorting = params.sort;
  145. if (params.order) {
  146. sorting += ' ' + params.order;
  147. }
  148. }
  149. return {
  150. //limit: params.limit, //页面大小
  151. //page: (params.offset / params.limit) + 1, //页码
  152. MaxResultCount: params.limit,
  153. SkipCount: params.offset,
  154. Sorting: sorting, //排序列名
  155. sortOrder: params.order, //排位命令(desc,asc)
  156. SearchList: _searchList_@modalId
  157. };
  158. }
  159. function SearchList_@(modalId)() {
  160. var count = $("#@modalId form").find(".key").length;
  161. _searchList_@modalId = [];
  162. @if (searchDtos!=null&&searchDtos.Count>0)
  163. {
  164. foreach (var searchDto in searchDtos)
  165. {
  166. <text>
  167. _searchList_@(modalId).push({
  168. KeyWords: "@searchDto.KeyWords",
  169. KeyField: "@searchDto.KeyField",
  170. FieldType: @searchDto.FieldType,
  171. ExpType: @searchDto.ExpType
  172. });
  173. </text>
  174. }
  175. }
  176. for (var i = 1; i <= count; i++) {
  177. var keyWords = $("#@modalId #Q-KeyWords-" + i).val();
  178. if (keyWords) {
  179. var keyField = $("#@modalId #Q-KeyField-" + i).val();
  180. var fieldType = $("#@modalId #Q-FieldType-" + i).val();
  181. var expType = $("#@modalId #Q-ExpType-" + i).val();
  182. _searchList_@(modalId).push({
  183. KeyWords: keyWords,
  184. KeyField: keyField,
  185. FieldType: fieldType,
  186. ExpType: expType
  187. });
  188. }
  189. }
  190. }
  191. function Submit_@(modalId)(row) {
  192. //console.log('@(modalId)submit', row);
  193. @{
  194. string str;
  195. if (string.IsNullOrEmpty(submit))
  196. {
  197. str = " var $target, row =row|| $" + modalId + "_table.bootstrapTable(\"getSelections\")[0];";
  198. str += "if (row) {";
  199. int i = 0;
  200. foreach (var targetFileds in Model.TargetFileds)
  201. {
  202. for (var j = 0; j < targetFileds.Length; j++)
  203. {
  204. str += @"$target = $(targetDom + ' "+ targetFileds[j] + "');\r\n";
  205. str += "if ($target) {\r\n";
  206. str += "var value = row." + Model.OriginFileds[i] + " ? row." + Model.OriginFileds[i] + ":'';\r\n";
  207. str += "$target.val(value);$target.change();$target.trigger('blur');\r\ntry{$target.select2();}catch (e){}}\r\n";
  208. }
  209. i++;
  210. }
  211. str += " } else{abp.message.warn(abp.localization.localize(\"ChooseOneToOp\"));}";
  212. }
  213. else
  214. {
  215. str = submit+ "(row);";
  216. }
  217. }
  218. @Html.Raw(str)
  219. @submitEx
  220. $("#@modalId").modal('hide');
  221. }
  222. function DbClickRow_@(modalId)(row) {
  223. //console.log('@(modalId)dbclick', row);
  224. @{
  225. str = string.IsNullOrEmpty(dbClick) ? "Submit_" + modalId+ "(row)" : dbClick + "();";
  226. }
  227. @Html.Raw(str)
  228. }
  229. function ClickRow_@(modalId)() {
  230. console.log('@(modalId)click');
  231. @{
  232. str = "";
  233. if (!string.IsNullOrEmpty(click))
  234. {
  235. str = click + "();";
  236. }
  237. }
  238. @Html.Raw(str)
  239. }
  240. </script>
  241. }