freeze.blade.php 11 KB

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