index.blade.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. @extends('layouts.app')
  2. @section('title','供应商')
  3. @section('content')
  4. <div class="container-fluid d-none" id="supplier">
  5. <div class="card">
  6. @can('供应商-编辑')
  7. @include('maintenance.supplier._create')
  8. @include('maintenance.supplier._edit')
  9. @endcan
  10. <div class="card-body">
  11. <div class="row pull-left m-1">
  12. @can('供应商-编辑')
  13. <button class="btn btn-outline-info mb-1 mr-3" @click="store"><span class="fa fa-plus"></span>&nbsp;新&nbsp;&nbsp;增</button>
  14. @endcan
  15. </div>
  16. @include('maintenance.supplier._table')
  17. </div>
  18. </div>
  19. </div>
  20. @endsection
  21. @section('lastScript')
  22. <script>
  23. new Vue({
  24. el:'#supplier',
  25. data:{
  26. suppliers:{!! $suppliers->toJson() !!}['data'],
  27. materials : [
  28. @foreach($materials as $material)
  29. {id:"{{$material->id}}",name:"{{$material->name}}"},
  30. @endforeach
  31. ],
  32. material_id:{!! old('material_id') ? json_encode(old('material_id')) : '[]' !!},
  33. editSupplier:{material_id:[]},
  34. addSupplier:{material_id:[]},
  35. supplierErrors:{},
  36. index:'' ,
  37. selectTr:0,
  38. selectIndex:0,
  39. },
  40. mounted(){
  41. $(".up").slideUp();
  42. $("#xx").slideDown();
  43. $('#supplier').removeClass('d-none');
  44. },
  45. watch:{
  46. 'editSupplier.material_id':function(){
  47. this.supplierErrors.material_id =[];
  48. },
  49. 'addSupplier.material_id':function(){
  50. this.supplierErrors.material_id = [];
  51. },
  52. },
  53. methods:{
  54. show(id,$e){
  55. $("#"+id).slideToggle();
  56. let value= $($e.target).html();
  57. if(value=== '点击展开'){
  58. value = '点击收起';
  59. }else if(value === '点击收起'){
  60. value ='点击展开'
  61. }
  62. $($e.target).html(value);
  63. },
  64. destroy(id,index){
  65. if (!confirm('是否删除当前供应商')) return;
  66. tempTip.setIndex(1009);
  67. tempTip.setDuration(3000);
  68. axios.delete('{{url('apiLocal/supplier')}}/'+id).then(res=>{
  69. if(res.data.success){
  70. tempTip.showSuccess('删除成功');
  71. this.$delete(this.suppliers,index);
  72. return ;
  73. }
  74. tempTip.show(res.data.message);
  75. }).catch(err=>{
  76. tempTip.show('删除当前项目耗材失败:'+err);
  77. });
  78. },
  79. edit(supplier,i){
  80. this.selectIndex = i;
  81. this.editSupplier = JSON.parse(JSON.stringify(supplier));
  82. this.editSupplier.material_id = [];
  83. this.supplierErrors = {material_id:[]}; // 重置异常信息
  84. supplier.material.forEach((item)=>{
  85. this.editSupplier.material_id.push(item.id);
  86. });
  87. $('#edit-supplier').modal('show');
  88. },
  89. update(editSupplier,index){
  90. this.supplierErrors = {material_id:[]}; // 重置异常信息
  91. let url = '{{url('apiLocal/supplier/update')}}';
  92. window.tempTip.setIndex(1099);
  93. window.tempTip.setDuration(2000);
  94. if(!this.validatePhone(editSupplier))return;
  95. window.axios.post(url,editSupplier).then(res=>{
  96. if(res.data.success){
  97. this.$set(this.suppliers,index,res.data.data);
  98. this.selectIndex = null;
  99. this.editSupplier = {material_id:[]};
  100. $("#edit-supplier").modal('hide');
  101. window.tempTip.showSuccess("修改成功")
  102. return;
  103. }else if(res.data.errors){
  104. this.supplierErrors =res.data.errors;
  105. return;
  106. }
  107. window.tempTip.show(res.data.message ?? '修改失败')
  108. }).catch(err=>{
  109. window.tempTip.showSuccess(err)
  110. });
  111. },
  112. store(){
  113. this.addSupplier = {material_id:[]};
  114. this.supplierErrors = {material_id:null};
  115. $('#add-supplier').modal('show');
  116. },
  117. create(supplier){
  118. let url = '{{url('apiLocal/supplier/store')}}';
  119. window.tempTip.setIndex(1099);
  120. window.tempTip.setDuration(2000);
  121. if(!this.validatePhone(supplier))return;
  122. window.axios.post(url,supplier).then(res=>{
  123. if(res.data.success){
  124. this.suppliers.unshift(res.data.data);
  125. this.addSupplier = {material_id:[]};
  126. window.tempTip.showSuccess("创建成功");
  127. $("#add-supplier").modal('hide');
  128. return;
  129. }else if(res.data.errors){
  130. this.supplierErrors =res.data.errors;
  131. return;
  132. }
  133. window.tempTip.show(res.data.message ?? '创建失败')
  134. }).catch(err=>{
  135. window.tempTip.showSuccess(err)
  136. });
  137. },
  138. validatePhone(param){
  139. let is_validate = true;
  140. if(!(/^1[34578]\d{9}$/.test(param['phone']))){
  141. this.$set(this.supplierErrors,'phone',['请输入正确的联系号码','']);
  142. is_validate = false;
  143. }
  144. if(!param.hasOwnProperty('name') || (param['name'].trim().length === 0)){
  145. this.$set(this.supplierErrors,'name',['供应商为必填项']);
  146. is_validate = false;
  147. }
  148. if(!param.hasOwnProperty('contact_man') || (param['contact_man'].trim().length === 0)){
  149. this.$set(this.supplierErrors,'contact_man',['联系人为必填项']);
  150. is_validate = false;
  151. }
  152. if(!param.hasOwnProperty('invoice_title') || (param['invoice_title'].trim().length === 0)){
  153. this.$set(this.supplierErrors,'invoice_title',['发票抬头为必填项']);
  154. is_validate = false;
  155. }
  156. if(!param.hasOwnProperty('bank') || (param['bank'].trim().length === 0)){
  157. this.$set(this.supplierErrors,'bank',['账户银行必填项']);
  158. is_validate = false;
  159. }
  160. if(!param.hasOwnProperty('bank_account') || (param['bank_account'].trim().length === 0)){
  161. this.$set(this.supplierErrors,'bank_account',['收款账户为必填项']);
  162. is_validate = false;
  163. }
  164. if(!param.hasOwnProperty('opening_bank') || (param['opening_bank'].trim().length === 0)){
  165. this.$set(this.supplierErrors,'opening_bank',['开户行为必填项']);
  166. is_validate = false;
  167. }
  168. if(!param.hasOwnProperty('material_id') || (param['material_id'].length === 0)){
  169. this.$set(this.supplierErrors,'material_id',['耗材类型为必填项']);
  170. is_validate = false;
  171. }
  172. if(!is_validate)this.$forceUpdate();
  173. return is_validate;
  174. }
  175. }
  176. })
  177. </script>
  178. @endsection