_logisticDetail.blade.php 6.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <div class="modal fade" tabindex="-1" role="dialog" id="logisticModal">
  2. <div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable">
  3. <div class="modal-content">
  4. <div class="modal-header">
  5. <div class="row w-100">
  6. <button type="button" class="btn btn-sm btn-outline-dark col-1" @click="addLogisticDetail()">新增</button>
  7. <input id="logisticFile" type="file" style="display:none" accept=".csv, .xlsx, .xls" @change="importLogistic($event)"/>
  8. <button type="button" class="btn btn-sm btn-outline-info col-1" @click="selectFile('logisticFile')">导入</button>
  9. <h5><span class="ml-0 fa fa-question-circle-o cursor-pointer" data-toggle="tooltip" data-placement="top" title="导入与保存时自动过滤重复数据和与当前选择单位不一致数据"></span></h5>
  10. <label class="ml-1" v-if="model.logistic.items.length>searchBase">
  11. <input placeholder=" 定位" class="form-control form-control-sm rounded-pill" @input="searchLogistic($event)"/>
  12. </label>
  13. <div class="font-weight-bolder offset-3">物流收费标准</div>
  14. </div>
  15. </div>
  16. <div class="modal-body">
  17. <div class="w-100 text-center mb-1" v-if="importError.length > 0">
  18. <button type="button" class="btn btn-sm btn-danger mb-1" @click="isShowError = true" v-if="!isShowError">@{{ importError.length }}条错误,点击展开</button>
  19. <button type="button" class="btn btn-sm btn-dark mb-1" @click="isShowError = false" v-else>收起错误展示</button>
  20. <div v-if="isShowError" class="container-fluid text-danger font-weight-bolder">
  21. <div class="row text-left">
  22. <div class="col-6" v-for="err in importError">@{{ err }}</div>
  23. </div>
  24. </div>
  25. </div>
  26. <div class="w-100 text-primary text-center mt-0" v-else>
  27. <div class="small"><b class="text-dark font-weight-bold">导入表头示例:</b>计数单位,计数区间,省份,市,单价,送货费,起始计费,起始计数,费率</div>
  28. </div>
  29. <table class="table table-sm table-bordered">
  30. <tr class="text-success">
  31. <th>计价单位</th>
  32. <th>计价区间</th>
  33. <th style="min-width: 100px">省份</th>
  34. <th style="min-width: 100px">市</th>
  35. <th>单价</th>
  36. <th>送货费</th>
  37. <th>起始计费</th>
  38. <th>起始计数</th>
  39. <th>费率(%)</th>
  40. <th>操作</th>
  41. </tr>
  42. <tr v-for="(detail,i) in model.logistic.items" v-if="!searchItem.logistic || (searchItem.logistic && searchItem.logistic.includes(i))">
  43. <td>
  44. <label>
  45. <select class="form-control form-control-sm col-6" style="min-width: 80px" v-model="detail.unit_id" :class="errors['items.'+i+'.unit_id'] ? 'is-invalid' : ''">
  46. <option v-for="unit in pool.units" :value="unit.id" v-if="unit.id == model.logistic.unit_id || unit.id == model.logistic.other_unit_id">@{{ unit.name }}</option>
  47. </select>
  48. </label>
  49. </td>
  50. <td>
  51. <label>
  52. <select class="form-control form-control-sm col-6" style="min-width: 80px" v-model="detail.range" :class="errors['items.'+i+'.range'] ? 'is-invalid' : ''">
  53. <option v-for="range in (detail.unit_id == model.logistic.unit_id ? model.logistic.ranges : model.logistic.other_ranges)" :value="range">@{{ range }}</option>
  54. </select>
  55. </label>
  56. </td>
  57. <td>
  58. <label>
  59. <select class="form-control form-control-sm" v-model="detail.province_id" :class="errors['items.'+i+'.province_id'] ? 'is-invalid' : ''">
  60. <option v-for="province in pool.provinces" :value="province.id">@{{ province.name }}</option>
  61. </select>
  62. </label>
  63. </td>
  64. <td>
  65. <label>
  66. <select class="form-control form-control-sm" v-model="detail.city_id" :class="errors['items.'+i+'.city_id'] ? 'is-invalid' : ''">
  67. <option v-for="city in pool.cities" v-if="detail.province_id === city.province_id" :value="city.id">@{{ city.name }}</option>
  68. </select>
  69. </label>
  70. </td>
  71. <td>
  72. <label><input type="number" min="0" step="0.001" class="form-control form-control-sm" v-model="detail.unit_price" :class="errors['items.'+i+'.unit_price'] ? 'is-invalid' : ''"></label>
  73. </td>
  74. <td>
  75. <label><input type="number" min="0" step="0.001" class="form-control form-control-sm" v-model="detail.delivery_fee" :class="errors['items.'+i+'.delivery_fee'] ? 'is-invalid' : ''"></label>
  76. </td>
  77. <td>
  78. <label><input type="number" min="0" step="0.001" class="form-control form-control-sm" v-model="detail.initial_fee" :class="errors['items.'+i+'.initial_fee'] ? 'is-invalid' : ''"></label>
  79. </td>
  80. <td>
  81. <label><input type="number" min="0" class="form-control form-control-sm" v-model="detail.initial_amount" :class="errors['items.'+i+'.initial_amount'] ? 'is-invalid' : ''"></label>
  82. </td>
  83. <td>
  84. <label><input type="number" min="0" step="0.001" class="form-control form-control-sm" v-model="detail.rate" :class="errors['items.'+i+'.rate'] ? 'is-invalid' : ''"></label>
  85. </td>
  86. <td>
  87. <button type="button" class="btn btn-sm btn-outline-danger" @click="delLogisticItem(i)">删</button>
  88. </td>
  89. </tr>
  90. </table>
  91. </div>
  92. </div>
  93. </div>
  94. </div>