freeze.blade.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. @extends("layouts.app")
  2. @section('title')订单管理-自动冻结@endsection
  3. @section('content')
  4. @component('order.index.menu')@endcomponent
  5. <div class="card d-none" id="container">
  6. <div class="card-body">
  7. <div class="container-fluid">
  8. @include("order.index._freezeModal")
  9. <div class="pull-left">
  10. <button class="btn btn-outline-info mb-1 mr-3" @click="openModal()"><span class="fa fa-plus"></span>&nbsp;新&nbsp;&nbsp;增</button>
  11. </div>
  12. <table class="table table-striped table-borderless rounded">
  13. <tr>
  14. <th>序号</th>
  15. <th>承运商</th>
  16. <th>省</th>
  17. <th>市</th>
  18. <th>区/县</th>
  19. <th>乡/镇</th>
  20. <th>村/街</th>
  21. <th></th>
  22. </tr>
  23. <tr v-for="(freeze,i) in freezes">
  24. <td>@{{ i+1 }}</td>
  25. <td>@{{ freeze.logistic ? freeze.logistic.name : '' }}</td>
  26. <td>@{{ freeze.province ? freeze.province.name : '' }}</td>
  27. <td>@{{ freeze.city ? freeze.city.name : '' }}</td>
  28. <td>@{{ freeze.district ? freeze.district.name : '' }}</td>
  29. <td>@{{ freeze.town ? freeze.town.name : '' }}</td>
  30. <td>@{{ freeze.street ? freeze.street.name : '' }}</td>
  31. <td>
  32. <button class="btn btn-sm btn-outline-danger" @click="deleteFreeze(freeze,i)">删除</button>
  33. <button class="btn btn-sm btn-outline-info" @click="openModal(freeze,i)">编辑</button>
  34. </td>
  35. </tr>
  36. </table>
  37. {{$freezes->links()}}
  38. </div>
  39. </div>
  40. </div>
  41. @stop
  42. @section("lastScript")
  43. <script>
  44. new Vue({
  45. el:"#container",
  46. data:{
  47. freezes:[
  48. @foreach($freezes as $freeze)
  49. {!! $freeze !!},
  50. @endforeach
  51. ],
  52. data:{},
  53. freeze:{},
  54. errors : {},
  55. mapping:{},
  56. mappingPool:{},
  57. result : [],
  58. stop:false,
  59. },
  60. mounted(){
  61. $("#container").removeClass("d-none");
  62. },
  63. methods:{
  64. openModal(model = null,index = null){
  65. if (!model)this.freeze = {};
  66. else {
  67. model.index = index;
  68. this.freeze = model;
  69. }
  70. this._load();
  71. $("#modal").modal("show");
  72. },
  73. _load(){
  74. if (!this.data.logistics){
  75. let url = "{{url('maintenance/logistic/get')}}";
  76. window.tempTip.postBasicRequest(url,{},res=>{
  77. this.$set(this.data,'logistics',res);
  78. });
  79. }
  80. if (!this.data.regions){
  81. let url = "{{url('maintenance/region/get')}}";
  82. window.tempTip.postBasicRequest(url,{},res=>{
  83. this.$set(this.data,'regions',res);
  84. let mapping = {};
  85. let mappingPool = {};
  86. res.forEach((region,i)=>{
  87. if (!region["parent_id"])region["parent_id"] = 0;
  88. if (mapping[region["parent_id"]]) mapping[region["parent_id"]].push(region);
  89. else mapping[region["parent_id"]] = [region];
  90. mappingPool[region.id] = i;
  91. });
  92. this.mapping = mapping;
  93. this.mappingPool = mappingPool;
  94. });
  95. }
  96. },
  97. submit(){
  98. if (!this.freeze.logistic_id){
  99. window.tempTip.setIndex(1099);
  100. window.tempTip.setDuration(3000);
  101. window.tempTip.show("必须选择承运商");
  102. return;
  103. }
  104. let url = "{{url('order/index/freeze')}}";
  105. window.tempTip.postBasicRequest(url,this.freeze,res=>{
  106. let msg = "新增冻结选项成功!";
  107. if (this.freeze.id){
  108. msg = "修改冻结选项成功!";
  109. this.freezes[this.freeze.index] = res;
  110. } else this.freezes.unshift(res);
  111. $("#modal").modal("hide");
  112. return msg;
  113. },true)
  114. },
  115. deleteFreeze(freeze,index){
  116. let url = "{{url('order/index/freeze/delFreeze')}}";
  117. window.tempTip.confirm("确定要解除该冻结条件吗?",()=>{
  118. window.tempTip.postBasicRequest(url,freeze,res=>{
  119. this.$delete(this.freezes,index);
  120. return "删除成功!";
  121. })
  122. });
  123. },
  124. addRegion(e,type){
  125. let val = e.target.value;
  126. if (!val)return;
  127. window.tempTip.setDuration(3000);
  128. window.tempTip.setIndex(1099);
  129. let prent = "";
  130. let msg = "";
  131. let map = {2:"城市",3:"区/县",4:"乡/镇",5:"村/街"};
  132. switch (type) {
  133. case 3:
  134. prent = this.freeze.city_id;
  135. msg = map[2];
  136. break;
  137. case 4:
  138. prent = this.freeze.district_id;
  139. msg = map[3];
  140. break;
  141. case 5:
  142. prent = this.freeze.town_id;
  143. msg = map[4];
  144. break;
  145. }
  146. if (!prent){
  147. window.tempTip.show("尚未选择所属"+msg);
  148. return;
  149. }
  150. let params = {
  151. parent_id:prent,
  152. name:val,
  153. type:type,
  154. };
  155. window.tempTip.postBasicRequest("{{url('maintenance/region/store')}}",params,res=>{
  156. let arr = [];
  157. if (this.mapping[prent])arr=this.mapping[prent];
  158. arr.push(res);
  159. this.$set(this.mapping,prent,arr);
  160. switch (type) {
  161. case 3:
  162. this.freeze.district_id = res.id;
  163. break;
  164. case 4:
  165. this.freeze.town_id = res.id;
  166. break;
  167. case 5:
  168. this.freeze.street_id = res.id;
  169. break;
  170. }
  171. return "新增"+map[type]+"成功";
  172. })
  173. },
  174. search(e){
  175. this.stop = false;
  176. this.result = [];
  177. let val = e.target.value;
  178. if (!val)return;
  179. this.data.regions.some(region=>{
  180. if (this.stop)return true;
  181. if (region.name.indexOf(val) !== -1)this.result.push(this._traceParent(region));
  182. });
  183. },
  184. _traceParent(region){
  185. let text = "<b class='text-warning font-weight-bold'>"+region.name+"</b>";
  186. let sign = false;
  187. let obj = {};
  188. let isGo = true;
  189. while (isGo){
  190. if (sign) text = region.name+"&nbsp;<span class='text-dark'>-></span>&nbsp;"+text;
  191. else sign = true;
  192. switch (region.type) {
  193. case 1:
  194. obj.province_id = region.id;
  195. break;
  196. case 2:
  197. obj.city_id = region.id;
  198. break;
  199. case 3:
  200. obj.district_id = region.id;
  201. break;
  202. case 4:
  203. obj.town_id = region.id;
  204. break;
  205. case 5:
  206. obj.street_id = region.id;
  207. break;
  208. }
  209. if (!region.parent_id)isGo = false;
  210. region = this.data.regions[this.mappingPool[region.parent_id]];
  211. }
  212. obj.text = text;
  213. return obj;
  214. },
  215. selectedSearch(obj){
  216. this.freeze = obj;
  217. this.stop = true;
  218. },
  219. },
  220. });
  221. </script>
  222. @stop