_logisticDetail.blade.php 6.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. <div class="font-weight-bolder offset-3">物流收费标准</div>
  11. </div>
  12. </div>
  13. <div class="modal-body">
  14. <div class="w-100 text-center mb-1" v-if="importError.length > 0">
  15. <button type="button" class="btn btn-sm btn-danger mb-1" @click="isShowError = true" v-if="!isShowError">@{{ importError.length }}条错误,点击展开</button>
  16. <button type="button" class="btn btn-sm btn-dark mb-1" @click="isShowError = false" v-else>收起错误展示</button>
  17. <div v-if="isShowError" class="container-fluid text-danger font-weight-bolder">
  18. <div class="row text-left">
  19. <div class="col-6" v-for="err in importError">@{{ err }}</div>
  20. </div>
  21. </div>
  22. </div>
  23. <div class="w-100 text-primary text-center mt-0" v-else>
  24. <div class="small"><b class="text-dark font-weight-bold">导入表头示例:</b>计数单位,计数区间,省份,市,单价,送货费,起始计费,起始计数,费率</div>
  25. </div>
  26. <table class="table table-sm table-bordered">
  27. <tr class="text-success">
  28. <th>计价单位</th>
  29. <th>计价区间</th>
  30. <th style="min-width: 100px">省份</th>
  31. <th style="min-width: 100px">市</th>
  32. <th>单价</th>
  33. <th>送货费</th>
  34. <th>起始计费</th>
  35. <th>起始计数</th>
  36. <th>费率(%)</th>
  37. <th>操作</th>
  38. </tr>
  39. <tr v-for="(detail,i) in model.logistic.items">
  40. <td>
  41. <label>
  42. <select class="form-control form-control-sm col-6" style="min-width: 80px" v-model="detail.unit_id" :class="'items.'+i+'.unit_id' ? 'is-invalid' : ''">
  43. <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>
  44. </select>
  45. </label>
  46. </td>
  47. <td>
  48. <label>
  49. <select class="form-control form-control-sm col-6" style="min-width: 80px" v-model="detail.range" :class="'items.'+i+'.range' ? 'is-invalid' : ''">
  50. <option v-for="range in (detail.unit_id == model.logistic.unit_id ? model.logistic.ranges : model.logistic.other_ranges)" :value="range">@{{ range }}</option>
  51. </select>
  52. </label>
  53. </td>
  54. <td>
  55. <label>
  56. <select class="form-control form-control-sm" v-model="detail.province_id" :class="'items.'+i+'.province_id' ? 'is-invalid' : ''">
  57. <option v-for="province in pool.provinces" :value="province.id">@{{ province.name }}</option>
  58. </select>
  59. </label>
  60. </td>
  61. <td>
  62. <label>
  63. <select class="form-control form-control-sm" v-model="detail.city_id" :class="'items.'+i+'.city_id' ? 'is-invalid' : ''">
  64. <option v-for="city in pool.cities" v-if="detail.province_id === city.province_id" :value="city.id">@{{ city.name }}</option>
  65. </select>
  66. </label>
  67. </td>
  68. <td>
  69. <label><input type="number" min="0" step="0.001" class="form-control form-control-sm" v-model="detail.unit_price" :class="'items.'+i+'.unit_price' ? 'is-invalid' : ''"></label>
  70. </td>
  71. <td>
  72. <label><input type="number" min="0" step="0.001" class="form-control form-control-sm" v-model="detail.delivery_fee" :class="'items.'+i+'.delivery_fee' ? '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.initial_fee" :class="'items.'+i+'.initial_fee' ? 'is-invalid' : ''"></label>
  76. </td>
  77. <td>
  78. <label><input type="number" min="0" class="form-control form-control-sm" v-model="detail.initial_amount" :class="'items.'+i+'.initial_amount' ? 'is-invalid' : ''"></label>
  79. </td>
  80. <td>
  81. <label><input type="number" min="0" step="0.001" class="form-control form-control-sm" v-model="detail.rate" :class="'items.'+i+'.rate' ? 'is-invalid' : ''"></label>
  82. </td>
  83. <td>
  84. <button type="button" class="btn btn-sm btn-outline-danger" @click="delLogisticItem(i)">删</button>
  85. </td>
  86. </tr>
  87. </table>
  88. </div>
  89. </div>
  90. </div>
  91. </div>