Express.cshtml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. @using ShwasherSys.Authorization.Permissions
  2. @using ShwasherSys.BasicInfo
  3. @using ShwasherSys.Models.Layout
  4. @using ShwasherSys.Models.Modal
  5. @{
  6. /**/
  7. ViewBag.ActiveMenu = PermissionNames.PagesBasicInfoExpress; //The menu item will be active for this page.
  8. ViewBag.Title = "快递公司信息管理";
  9. // List<SelectListItem> classification = ViewBag.Classification;
  10. //var regionInfo = ViewBag.RegionInfo;
  11. var loProviders = ViewBag.Providers;
  12. }
  13. @section styles
  14. {
  15. <style>
  16. .form-group-sm > div {
  17. margin-bottom: 1rem;
  18. }
  19. .MapperItem {
  20. border: 1px solid rebeccapurple;
  21. border-radius: 4px;
  22. padding: 3px 10px;
  23. margin-top: 3px;
  24. }
  25. .MapperItem:after, .MapperItem:before {
  26. display: table;
  27. content: " ";
  28. }
  29. .MapperItem:after {
  30. clear: both;
  31. }
  32. label.error {
  33. bottom: 4px;
  34. right: -45px;
  35. }
  36. [type="radio"]:not(:checked) + label, [type="radio"]:checked + label {
  37. padding-left: 25px;
  38. font-size: 1.5rem;
  39. color: #dad9db;
  40. }
  41. [type="radio"]:not(:checked) + label::before, [type="radio"]:not(:checked) + label::after {
  42. border: 2px solid rgb(0,155,244);
  43. }
  44. </style>
  45. }
  46. <div class="table-box mr-4 iwb-bootstrap-table">
  47. @Html.Action("ToolMenu", "Layout", new { pageName = ViewBag.ActiveMenu })
  48. <table id="table"
  49. data-url="/api/services/app/Express/GetAll"
  50. data-striped="true" data-id-field="id" data-unique-id="id"
  51. data-method="post"
  52. data-side-pagination="server"
  53. data-content-type="application/x-www-form-urlencoded; charset=UTF-8"
  54. data-cache="false"
  55. data-pagination="true" data-page-size="30" data-page-number="1" data-page-list="[30,50,100,200]" data-pagination-detail-h-align="right" data-pagination-h-align="left"
  56. data-query-params="QueryParams"
  57. data-response-handler="ResponseHandler"
  58. data-click-to-select="true"
  59. data-single-select="true">
  60. <thead>
  61. <tr class="row" id="header">
  62. <th data-field="state" data-checkbox="true"></th>
  63. <th data-align="center" data-field="expressName" data-sortable="true">快递名称</th>
  64. <th data-align="center" data-field="code" data-sortable="true">编码</th>
  65. <th data-align="center" data-field="sort" data-sortable="true">排序</th>
  66. </tr>
  67. </thead>
  68. </table>
  69. </div>
  70. @section modal{
  71. <section>
  72. <!--Main Modal-->
  73. <div class="modal fade" id="modal" role="dialog" tabindex="-1" aria-labelledby="ModalLabel" aria-hidden="true">
  74. <div class="modal-dialog modal-dialog-centered" role="document">
  75. <div class="modal-content">
  76. <div class="modal-header" style="cursor: move;">
  77. <button type="button" class="close" data-dismiss="modal" aria-hidden="true"><span aria-hidden="true">×</span></button>
  78. <h4 class="modal-title">
  79. <span class="modal-title-span">添加</span>
  80. <span>快递公司信息</span>
  81. </h4>
  82. </div>
  83. <div class="modal-body container-fluid" style="padding-top: 15px;padding-bottom: 0;">
  84. <form class="pr-3 pl-3 form-horizontal " id="form">
  85. <input id="id" name="id" type="hidden">
  86. <div class="form-group-sm">
  87. <label class="iwb-label col-md-2 control-label iwb-label-required" for="id">快递编码</label>
  88. <div class="col-md-10">
  89. <input class="form-control required" id="code" name="code" type="text" required="" placeholder="请输入快递代码..." value="" style="">
  90. </div>
  91. </div>
  92. <div class="form-group-sm">
  93. <label class="iwb-label col-md-2 control-label iwb-label-required" for="expressName">公司名称</label>
  94. <div class="col-md-10">
  95. <input class="form-control required" id="expressName" name="expressName" type="text" required="" placeholder="请输入公司名称..." value="" style="">
  96. </div>
  97. </div>
  98. <div class="form-group-sm">
  99. <label class="iwb-label col-md-2 control-label iwb-label-required" for="sort">查询排序</label>
  100. <div class="col-md-10">
  101. <input class="form-control number required" id="sort" name="sort" type="text" min="1" placeholder="请输入..." value="" style="">
  102. </div>
  103. </div>
  104. <div class="form-group-sm" style="margin-right: 15px;text-align: right"><button type="button" class="btn btn-sm btn-info" style="width:20%; background-color: #583d9c;border-color: #583d9c;" onclick="AddServiceProvider()">增加服务商映射</button></div>
  105. </form>
  106. </div>
  107. <div class="modal-footer" style="text-align: center;">
  108. <button type="button" class="btn btn-default waves-effect" data-dismiss="modal" style="min-width:100px;background: #FFFFFF;border: 1px solid #DDDDDD;">取消</button>
  109. <button type="button" class="btn btn-success save-btn waves-effect" style="min-width:100px;background-color: #678ceb;border: 1px solid #678ceb;">保存</button>
  110. </div>
  111. </div>
  112. </div>
  113. </div>
  114. </section>
  115. }
  116. @section scripts
  117. {
  118. <script src="~/Content/Plugins/select2/js/select2tree.js"></script>
  119. @*<script src="~/Content/Plugins/kindeditor/kindeditor-all.js"></script>
  120. <script src="~/Content/Plugins/kindeditor/lang/zh-CN.js"></script>*@
  121. <script type="text/javascript">
  122. //var exId = "";
  123. var allProvider = [];
  124. $(function() {
  125. //show完毕前执行
  126. @{
  127. foreach (var p in loProviders)
  128. {
  129. <text>
  130. allProvider.push({ Id: "@p.Id", ProviderName: "@p.ProviderName" });
  131. </text>
  132. }
  133. }
  134. LoadTable();
  135. var funs = window.funs || { none: function() { console.log("No type"); } };
  136. funs["btnUpdate"] = function(url) { BtnUpdate(url); };
  137. funs["btnCreate"] = function(url) { BtnCreate(url); };
  138. });
  139. function BtnCreate(url) {
  140. console.log("Create");
  141. $(".MapperItem").remove();
  142. activeCount = 0;
  143. OpenModal({
  144. modaltitle: window.opCreate,
  145. url: url,
  146. save: function() {
  147. SaveAjax({
  148. url: url,
  149. data: getFormData(),
  150. success: function(res) {
  151. $("#modal").modal("hide");
  152. RefreshTable($("#table"));
  153. }
  154. });
  155. }
  156. });
  157. }
  158. function BtnUpdate(url) {
  159. var row = $("#table").bootstrapTable("getSelections")[0];
  160. if (row) {
  161. $(".MapperItem").remove();
  162. activeCount = 0;
  163. SaveAjax({
  164. url: window.appUrl + 'Express/GetExpressDtoById',
  165. data: {id:row.id},
  166. isValidate: false,
  167. isAlert: false,
  168. success: function(res) {
  169. console.log(res);
  170. OpenModal({
  171. modaltitle: window.opUpdate,
  172. data: row,
  173. url: url,
  174. readonly: "code",
  175. save: function() {
  176. SaveAjax({
  177. url: url,
  178. data: getFormData(),
  179. success: function(res) {
  180. $("#modal").modal("hide");
  181. RefreshTable($("#table"));
  182. }
  183. });
  184. }
  185. });
  186. var rs = res.expressProviderMapper;
  187. rs.forEach(function(v, i) {
  188. AddServiceProvider();
  189. $('.MapperItem:eq(' + i + ') [name="providerId"]').val(v.providerId).select2();
  190. $('.MapperItem:eq(' + i + ') [name="mapperCode"]').val(v.mapperCode);
  191. $('.MapperItem:eq(' + i + ') [name="extendInfo"]').val(v.extendInfo);
  192. if (v.activeStatus == 1) {
  193. $('.MapperItem:eq(' + i + ') [name="activeStatus"]').prop('checked', true);
  194. } else {
  195. $('.MapperItem:eq(' + i + ') [name="activeStatus"]').prop('checked', false);
  196. }
  197. });
  198. }
  199. });
  200. }
  201. }
  202. var activeCount = 0;
  203. function AddServiceProvider() {
  204. activeCount++;
  205. var str = ' <div class="MapperItem">';
  206. str += '<label class="iwb-label col-md-2 control-label iwb-label-required" for="providerId">服务商</label>';
  207. str += ' <div class="col-md-4">';
  208. str +=
  209. ' <select class="form-control" name="providerId" type="text" placeholder="请输入服务商名称..." value="" style="width: 100%; ">';
  210. str += getOptions() + ' </select>';
  211. str += '</div>';
  212. str += '<label class="iwb-label col-md-2 control-label iwb-label-required" for="mapperCode">映射编码</label>';
  213. str += '<div class="col-md-4">';
  214. str +=
  215. '<input class="form-control" name="mapperCode" type="text" placeholder="请输入编码..." value="" style="width: 100%;">';
  216. str += '</div>';
  217. str +=
  218. '<label class="iwb-label col-md-2 control-label " for="extendInfo" style="margin-top:10px;">扩展信息</label>';
  219. str += '<div class="col-md-4">';
  220. str +=
  221. '<input class="form-control" name="extendInfo" type="text" placeholder="请输入..." value="" style="width: 100%;margin-top:10px">';
  222. str += '</div>';
  223. str += ' <div class="col-md-2" style="display: flex;justify-content: center;align-items: center; height: 50px;">';
  224. str +=
  225. ' <input name="activeStatus" type="radio" class="activeStatus" id="activeStatus'+activeCount+'" value=""/><label for="activeStatus'+activeCount+'" style="color:#000;">激活</label>';
  226. str += ' </div>';
  227. str += ' <div class="col-md-4" style="text-align:center;">';
  228. str +=
  229. ' <button type="button" class="btn btn-sm btn-danger" style="width:90%;margin-top:10px; " onclick="DeleteMapper(this)">删除</button>';
  230. str += ' </div>';
  231. str += '</div>';
  232. $("#form").append(str);
  233. }
  234. function DeleteMapper(that) {
  235. $(that).closest('.MapperItem').remove();
  236. }
  237. function getOptions() {
  238. var options = "";
  239. var items = $('.MapperItem');
  240. allProvider.forEach(function(v, i) {
  241. var isAdd = true;
  242. for (var j = 0; j < items.length; j++) {
  243. if ($('.MapperItem:eq(' + j + ') [name="providerId"]').val() == v.Id) {
  244. isAdd = false;
  245. break;
  246. }
  247. }
  248. if (isAdd) {
  249. options += '<option value="' + v.Id + '">' + v.ProviderName + '</option>';
  250. }
  251. });
  252. return options;
  253. }
  254. function getFormData() {
  255. var d = {
  256. Id: $("#form #id").val(),
  257. Code: $("#form #code").val(),
  258. ExpressName: $("#form #expressName").val(),
  259. Sort: $("#form #sort").val(),
  260. ExpressProviderMapper: []
  261. };
  262. var items = $('.MapperItem');
  263. for (var i = 0; i < items.length; i++) {
  264. if (!$('.MapperItem:eq(' + i + ') [name="providerId"]').val()) {
  265. continue;
  266. }
  267. d.ExpressProviderMapper[i] = {
  268. ProviderId: $('.MapperItem:eq(' + i + ') [name="providerId"]').val(),
  269. MapperCode: $('.MapperItem:eq(' + i + ') [name="mapperCode"]').val(),
  270. ExtendInfo: $('.MapperItem:eq(' + i + ') [name="extendInfo"]').val(),
  271. ActiveStatus:$('.MapperItem:eq(' + i + ') [name="activeStatus"]').is(":checked")?"1":"0"
  272. }
  273. }
  274. return d;
  275. }
  276. </script>
  277. }