_SearchForm.cshtml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. @using WeApp.Helpers
  2. @model WeApp.Views.Shared.SearchForm.SearchFormViewModel
  3. @{
  4. var scriptStr = "";
  5. var selectItemStr = "{";
  6. }
  7. <!-- SEARCH-FORM @(Model.FormId) START-->
  8. <div class="hidden-sm hidden-xs search-box" id="" style="position: absolute; right: 0; z-index: 2; width: 100%; max-width: 400px;">
  9. <form id="@Model.FormId">
  10. @if (!string.IsNullOrEmpty(Model.Field))
  11. {
  12. <input id="keyWords" name="keyWords" data-field="@(Model.Field)" data-ftype="@(Model.FType)" data-etype="@(Model.EType)" type="hidden" value="" />
  13. }
  14. @{
  15. if (Model.SearchItems.Any())
  16. {
  17. int i = 0;
  18. if (Model.IsSingle)
  19. {
  20. <div class="search-unit" data-index="1">
  21. <select id="Single-KeyField" name="Single-KeyField" class="form-control" style="width: 100px !important">
  22. @foreach (var item in Model.SearchItems)
  23. {
  24. int isSelect = 0;
  25. if (!string.IsNullOrEmpty(item.SelectItemStr))
  26. {
  27. selectItemStr += (selectItemStr == "{" ? "" : ",") + item.SelectItemStr;
  28. isSelect = 1;
  29. }
  30. string selected = i == 0 ? "selected" : "";
  31. int fieldType = (int)item.FieldType;
  32. int expType = (int)item.ExpType;
  33. <option value="@item.Field" data-index="1" data-select="@isSelect" data-field="@item.Field" data-field-type="@fieldType" data-exp-type="@expType" @selected>@item.DisplayName</option>
  34. i++;
  35. }
  36. </select>
  37. <input id="Single-KeyWords" data-field="" data-ftype="0" data-etype="6" name="Single-KeyWords" class="form-control pull-right KeyWords" style="width: calc(100% - 100px) !important" placeholder="@(L("SearchPlaceholder"))" autocomplete="off" />
  38. <span class="btn search-btn menu-btn" data-type="_btnSearch"><i class="fa fa-search "></i></span>
  39. </div>
  40. }
  41. else
  42. {
  43. <div class="card card-default search-card collapsed-card">
  44. <div class="card-header" data-card-widget="collapse">
  45. <h5 class="card-title">@(L("SearchLabel"))</h5>
  46. <div class="card-tools">
  47. @*<button type="button" class="btn btn-tool" data-card-widget="collapse"><i class="fas fa-minus"></i></button>*@
  48. <button type="button" class="btn btn-tool"><i class="fa fa-search"></i></button>
  49. </div>
  50. </div>
  51. <!-- /.card-header -->
  52. <div class="card-body" style="display: none">
  53. @{
  54. foreach (var item in Model.SearchItems)
  55. {
  56. i++;
  57. int fieldType = (int)item.FieldType;
  58. int expType = (int)item.ExpType;
  59. int inputWidth = 80;
  60. string isShow = !item.IsShow ? " style=\"display:none\"" : "";
  61. string classStr = item.IsOnlyView ? "" : "KeyWords";
  62. <div class="search-unit" data-index="@i" @Html.Raw(isShow)>
  63. <div class="input-group input-group-sm text-non" style="position: relative; width: 100%;">
  64. <span class="input-group-prepend"><span class="input-group-text">@item.DisplayName</span></span>
  65. @{
  66. var selectItem = item.SelectItems.FirstOrDefault(a => a.Filed == item.Field);
  67. if (selectItem != null)
  68. {
  69. <select id="@(Model.FormId)-@(item.Field)" name="@(Model.FormId)-@(item.Field)" class="form-control @(classStr)" data-field="@(item.Field)" data-ftype="@(fieldType)" data-etype="@(expType)" placeholder="请选择查询项..." autocomplete="off" data-placeholder="请选择查询项..." style="width: calc(100% - @(inputWidth)px)" @(item.Other)>
  70. @Html.Raw(selectItem.ItemStrs)
  71. </select>
  72. if (!string.IsNullOrEmpty(item.Value))
  73. {
  74. scriptStr += "$('#" + Model.FormId + "-" + item.Field + "').val('" + item.Value + "').select2();\r\n";
  75. }
  76. if (item.IsTree)
  77. {
  78. scriptStr += "$('#" + Model.FormId + "-" + item.Field + "').select2tree();\r\n";
  79. }
  80. }
  81. else if (fieldType == 5 || fieldType == 6)
  82. {
  83. //scriptStr += "$('#" + Model.FormId + "-" + item.Field + "').iwbDate({\r\nmethod:'twoDate',\r\nendId:'" + Model.FormId + "-" + item.Field + "-end',format:'" + item.DateItem.Formatter + "'\r\n,startView:" + item.DateItem.StartView + "\r\n,minView:" + item.DateItem.MinView + "\r\n,maxView:" + item.DateItem.MaxView + "\r\n,isAutoSetDate:" + item.DateItem.IsAutoSetStr + "\r\n,startEndInterval:" + item.DateItem.Interval + "\r\n});\r\n";
  84. scriptStr += "$('#" + Model.FormId + "-" + item.Field + "').iwbDateRange({opens:'left',dayStep:" + item.DateItem.Interval + ",format:'" + item.DateItem.Formatter + "',autoApply:" + item.DateItem.IsAutoApplyStr + "})\r\n";
  85. <input id="@(Model.FormId)-@(item.Field)" name="@(Model.FormId)-@(item.Field)" class="form-control dataRange @(classStr)" data-field="@(item.Field)" data-ftype="@(fieldType)" data-etype="4" placeholder="@(L("SearchPlaceholder"))" autocomplete="off" type="text" style="padding-right: 0;" @(item.Other) />
  86. i++;
  87. if (!string.IsNullOrEmpty(item.Value))
  88. {
  89. string[] arrDate = item.Value.Split(new[] { '@' }, StringSplitOptions.RemoveEmptyEntries);
  90. var interval = item.DateItem.Interval > 0 ? item.DateItem.Interval : 30;
  91. if (item.DateItem.Interval > 0)
  92. {
  93. string startValue = "new Date(new Date('" + arrDate[0] + "').valueOf() - 1000 * 60 * 60 * 24 * " + interval + ")";
  94. scriptStr += "$('#" + Model.FormId + "-" + item.Field + "').iwbDateRange('setStartDate'," + startValue + ");\r\n";
  95. }
  96. else if (arrDate.Length == 2)
  97. {
  98. string startValue = "new Date(new Date('" + arrDate[1] + "'))";
  99. scriptStr += "$('#" + Model.FormId + "-" + item.Field + "').iwbDateRange('setStartDate'," + startValue + ");\r\n";
  100. }
  101. scriptStr += "$('#" + Model.FormId + "-" + item.Field + "').iwbDateRange('setEndDate','" + arrDate[0] + "');\r\n";
  102. }
  103. }
  104. else
  105. {
  106. if (fieldType == 1 || fieldType == 2)
  107. {
  108. classStr += " number";
  109. }
  110. if (string.IsNullOrEmpty(item.ShowId))
  111. {
  112. <input id="@(Model.FormId)-@(item.Field)" name="@(Model.FormId)-@(item.Field)" class="form-control @(classStr)" data-field="@(item.Field)" data-ftype="@(fieldType)" data-etype="@(expType)" placeholder="@(L("SearchPlaceholder"))" autocomplete="off" type="text" />
  113. }
  114. else
  115. {
  116. <input id="@(Model.FormId)-@(item.ShowId)" name="@(Model.FormId)-@(item.ShowId)" class="form-control" placeholder="@(L("SearchPlaceholder"))" autocomplete="off" type="text" disabled="disabled" />
  117. <input id="@(Model.FormId)-@(item.Field)" name="@(Model.FormId)-@(item.Field)" class="form-control @(classStr)" data-field="@(item.Field)" data-ftype="@(fieldType)" data-etype="@(expType)" placeholder="@(L("SearchPlaceholder"))" autocomplete="off" type="hidden" />
  118. }
  119. if (!string.IsNullOrEmpty(item.SearchModalId))
  120. {
  121. <div class="input-group-append search-icon" title="@(L("Clean"))" onclick="$(this).closest('.input-group').find('.form-control').val('')" style="border-right: 2px solid #eee; cursor: pointer; ">
  122. <span class="input-group-text"><i class="far fa-minus-square"></i></span>
  123. </div>
  124. <div class="input-group-append search-icon" title="@(L("Search"))" onclick="ShowQueryModal('@item.SearchModalId','@(item.Target)');" style=" cursor: pointer;">
  125. <span class="input-group-text"><i class="fa fa-search"></i></span>
  126. </div>
  127. }
  128. if (!string.IsNullOrEmpty(item.Value))
  129. {
  130. scriptStr += "$('#" + Model.FormId + "-" + item.Field + "').val('" + item.Value + "');\r\n";
  131. }
  132. }
  133. }
  134. </div>
  135. </div>
  136. }
  137. }
  138. </div>
  139. <!-- /.card-body -->
  140. <div class="card-footer">
  141. <span class="btn btn-sm btn-outline-iwb btn-block menu-btn" type="button" data-type="_btnSearch"><i class="fa fa-search"></i> 查询</span>
  142. </div>
  143. </div>
  144. <!-- /.card -->
  145. }
  146. }
  147. selectItemStr += "}";
  148. }
  149. </form>
  150. </div>
  151. <!-- SEARCH-FORM @(Model.FormId) END-->
  152. @using (Html.BeginScripts())
  153. {
  154. <!-- SEARCH-FORM @(Model.FormId) START-->
  155. <script>
  156. $(function () {
  157. $(".search-unit select").select2();
  158. @Html.Raw(scriptStr);
  159. $("#Single-KeyField").off("change.keyfield").on("change.keyfield", function () {
  160. var $that = $(this).find("option:selected");
  161. var isSelect = $that.data("select"),
  162. field = $that.data("field"),
  163. expType = $that.data("exp-type"),
  164. fieldType = $that.data("field-type");
  165. changeKeyWord($that, isSelect,field, expType, fieldType);
  166. });
  167. var selectItem = @Html.Raw(selectItemStr);
  168. function changeKeyWord($that,isSelect,field,expType, fieldType) {
  169. var str;
  170. console.log(fieldType, "-", isSelect);
  171. if (isSelect) {
  172. if (selectItem.length < 0) {
  173. return;
  174. }
  175. str = '<select id="Single-KeyWords" data-field="' + field + '" data-ftype="' + fieldType + '" data-etype="' + expType + '" name="Single-KeyWords" class="form-control pull-right KeyWords" style="width: calc(100% - 120px) !important;" placeholder="@(L("SearchPlaceholder"))..." autocomplete="off" data-placeholder="@(L("SearchPlaceholder"))...">';
  176. str += selectItem[field];
  177. str += '</select>';
  178. $("#Single-KeyWords").next("span.select2").remove();
  179. $("#Single-KeyWords").remove();
  180. $("#Single-KeyField").parent().find('.menu-btn').before(str);
  181. $("#Single-KeyWords").select2();
  182. if ($("#Single-KeyField").parent().find(".search-btn").length>0) {
  183. $("#Single-KeyWords").next().find(".select2-selection__arrow").css("right", "30px");
  184. }
  185. } else {
  186. if (fieldType === 1) {
  187. str = ' <input id="Single-KeyWords" data-field="' + field + '" data-ftype="' + fieldType + '" data-etype="' + expType + '" name="Single-KeyWords" class="form-control number pull-right KeyWords" style="width: calc(100% - 100px) !important" placeholder="@(L("SearchPlaceholder"))..." autocomplete="off" />';
  188. } else if (fieldType === 5) {
  189. str = ' <input id="Single-KeyWords" data-field="' + field + '" data-ftype="' + fieldType + '" data-etype="' + expType + '" name="Single-KeyWords" class="form-control dateISO pull-right KeyWords" style="width: calc(100% - 100px) !important" placeholder="@(L("SearchPlaceholder"))..." autocomplete="off" />';
  190. } else {
  191. str = '<input id="Single-KeyWords" data-field="' + field + '" data-ftype="' + fieldType + '" data-etype="' + expType + '" name="Single-KeyWords" class="form-control pull-right KeyWords" style="width: calc(100% - 100px) !important" placeholder="@(L("SearchPlaceholder"))..." autocomplete="off" />';
  192. }
  193. $("#Single-KeyWords").next("span.select2").remove();
  194. $("#Single-KeyWords").remove();
  195. $("#Single-KeyField").parent().find('.menu-btn').before(str);
  196. }
  197. //AddSearchEvents();
  198. }
  199. });
  200. </script>
  201. <!-- SEARCH-FORM @(Model.FormId) END-->
  202. }