freeze.blade.php 11 KB

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