_storage.blade.php 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <div class="row">
  2. <label for="name" class="col-2 text-info">名称</label>
  3. <input id="name" type="text" :class="errors.name ? 'is-invalid' : ''" class="col-6 form-control" v-model="model.storage.name">
  4. <span class="invalid-feedback mt-0 offset-2" role="alert" v-if="errors.name">
  5. <strong>@{{ errors.name[0] }}</strong>
  6. </span>
  7. </div>
  8. <div class="row mt-3">
  9. <label for="counting_type" class="col-2 text-info">计费类型</label>
  10. <select id="counting_type" class="col-3 form-control"
  11. :class="errors.counting_type ? 'is-invalid' : ''" v-model="model.storage.counting_type">
  12. <option v-for="type in pool.counting_type" :value="type">@{{ type }}</option>
  13. </select>
  14. <span class="invalid-feedback mt-0 offset-2" role="alert" v-if="errors.counting_type">
  15. <strong>@{{ errors.counting_type[0] }}</strong>
  16. </span>
  17. </div>
  18. <div class="row mt-3">
  19. <label for="using_type" class="col-2 text-info">用仓类型</label>
  20. <select id="using_type" class="col-3 form-control"
  21. :class="errors.using_type ? 'is-invalid' : ''" v-model="model.storage.using_type">
  22. <option v-for="type in pool.using_type" :value="type">@{{ type }}</option>
  23. </select>
  24. <span class="invalid-feedback mt-0 offset-2" role="alert" v-if="errors.using_type">
  25. <strong>@{{ errors.using_type[0] }}</strong>
  26. </span>
  27. </div>
  28. <div class="row mt-3">
  29. <label for="minimum_area" class="col-2">最低起租面积</label>
  30. <input id="minimum_area" type="number" min="0" step="0.001" class="col-6 form-control"
  31. :class="errors.minimum_area ? 'is-invalid' : ''" v-model="model.storage.minimum_area">
  32. <span class="invalid-feedback mt-0 offset-2" role="alert" v-if="errors.minimum_area">
  33. <strong>@{{ errors.minimum_area[0] }}</strong>
  34. </span>
  35. </div>
  36. <div class="row mt-3">
  37. <label for="isInterval" class="col-2 text-info">设定区间</label>
  38. <input id="isInterval" type="checkbox" class="switch" v-model="model.storage.isInterval">
  39. </div>
  40. <div class="row mt-3">
  41. <div class="col-4 row">
  42. <label for="unit_id" class="col-4 text-info">单位</label>
  43. <select id="unit_id" class="offset-3 col-5 form-control"
  44. :class="errors.unit_id ? 'is-invalid' : ''" v-model="model.storage.unit_id">
  45. <option v-for="unit in pool.units" :value="unit.id" v-if="unit.name == 'm²' || unit.name=='㎡' || unit.name == 'm³' || unit.name == '件'">
  46. @{{ unit.name }}</option>
  47. </select>
  48. <span class="invalid-feedback mt-0 offset-6" role="alert" v-if="errors.unit_id">
  49. <strong>@{{ errors.unit_id[0] }}</strong>
  50. </span>
  51. </div>
  52. <div class="col-3 row m-0">
  53. <label for="time_unit_id" class="col-5 offset-1 text-info">计时</label>
  54. <select id="time_unit_id" class="col-6 form-control"
  55. :class="errors.time_unit_id ? 'is-invalid' : ''" v-model="model.storage.time_unit_id">
  56. <option v-for="unit in pool.units" :value="unit.id" v-if="unit.name == '日' || unit.name == '月'">@{{ unit.name }}</option>
  57. </select>
  58. <span class="invalid-feedback mt-0 offset-6" role="alert" v-if="errors.time_unit_id">
  59. <strong>@{{ errors.time_unit_id[0] }}</strong>
  60. </span>
  61. </div>
  62. <div class="col-3 row m-0" v-if="!model.storage.isInterval">
  63. <label for="price" class="col-5 offset-1 text-info">单价</label>
  64. <input id="price" type="number" min="0" step="0.001" class="col-6 form-control"
  65. :class="errors['price.0'] ? 'is-invalid' : ''" v-model="model.storage.price[0]">
  66. <span class="invalid-feedback mt-0 offset-6" role="alert" v-if="errors['price.0']">
  67. <strong>@{{ errors['price.0'][0] }}</strong>
  68. </span>
  69. </div>
  70. </div>
  71. <div class="row mt-3" v-if="model.storage.isInterval">
  72. <label for="amount_interval" class="col-2 text-info">数量区间</label>
  73. <div class="col-8 scrollbar overflow-y-scrollbar-200">
  74. <div class="row mt-0 text-muted">
  75. <label class="col-4 offset-2 text-center">区间值</label>
  76. <label class="col-5 text-center">单价</label>
  77. </div>
  78. <div class="row mt-1" v-for="(amount,i) in model.storage.amount_interval">
  79. <label class="col-2">
  80. <span class="fa fa-plus cursor-pointer" @click="addStoreAmount()">&nbsp;增加</span>
  81. </label>
  82. <label class="col-4">
  83. <input type="number" class="form-control form-control-sm" :class="errors['amount_interval.'+i] ? 'is-invalid' : ''"
  84. step="1" :min="Number(model.storage.amount_interval[i-1] ? model.storage.amount_interval[i-1] : 0)+1" v-model="model.storage.amount_interval[i]">
  85. </label>
  86. <label class="col-5 text-center">
  87. <input type="number" class="form-control form-control-sm" step="0.01" v-model="model.storage.price[i]" :class="errors['price.'+i] ? 'is-invalid' : ''"
  88. :placeholder="model.storage.amount_interval[i] ?
  89. ('区间范围:'+model.storage.amount_interval[i]+(model.storage.amount_interval[i+1] ? '-'+(model.storage.amount_interval[i+1]-1) : ' +')) : ''">
  90. </label>
  91. <label class="col-1">
  92. <span class="cursor-pointer text-danger font-weight-bold h4" @click="delStoreAmount(i)" v-if="i!=0">&times;</span>
  93. </label>
  94. <label class="small text-danger offset-2 col-4" role="alert" v-if="errors['amount_interval.'+i]">
  95. <strong>@{{ errors['amount_interval.'+i][0] }}</strong>
  96. </label>
  97. <label class="small text-danger col-5" :class="!errors['amount_interval.'+i] ? 'offset-6' : ''" role="alert" v-if="errors['price.'+i]">
  98. <strong>@{{ errors['price.'+i][0] }}</strong>
  99. </label>
  100. </div>
  101. </div>
  102. </div>
  103. <div class="row mt-3">
  104. <label for="discount_type" class="col-2 text-info">减免类型</label>
  105. <select id="discount_type" class="col-3 form-control"
  106. :class="errors.discount_type ? 'is-invalid' : ''" v-model="model.storage.discount_type">
  107. <option v-for="type in pool.discount_type" :value="type">@{{ type }}</option>
  108. </select>
  109. <span class="invalid-feedback mt-0 offset-2" role="alert" v-if="errors.discount_type">
  110. <strong>@{{ errors.discount_type[0] }}</strong>
  111. </span>
  112. </div>
  113. <div class="row mt-3" v-if="model.storage.discount_type != '无减免'">
  114. <label for="discount_value" class="col-2">减免值</label>
  115. <label class="col-6 mb-0 input-group ml-0">
  116. <input id="discount_value" type="number" min="0" step="0.01" class="col-6 form-control" style="margin-left: -4%"
  117. :class="errors.discount_value ? 'is-invalid' : ''" v-model="model.storage.discount_value">
  118. <span class="d-block input-group-append">
  119. <span class="input-group-text font-weight-bold" v-if="model.storage.discount_type == '按单减免'">单减 1@{{ poolMapping.units[model.storage.unit_id] }}</span>
  120. <span class="input-group-text font-weight-bold" v-else>@{{ poolMapping.units[model.storage.unit_id] }}</span>
  121. </span>
  122. </label>
  123. <span class="invalid-feedback mt-0 offset-2" role="alert" v-if="errors.discount_value">
  124. <strong>@{{ errors.discount_value[0] }}</strong>
  125. </span>
  126. </div>
  127. <div class="row mt-3">
  128. <label for="tax_rate_id" class="col-2 text-muted">税率</label>
  129. <select id="tax_rate_id" class="col-3 form-control" v-model="model.storage.tax_rate_id" :class="errors.tax_rate_id ? 'is-invalid' : ''">
  130. <option> </option>
  131. <option v-for="tax in pool.taxRates" :value="tax.id">@{{ tax.value }}%</option>
  132. </select>
  133. </div>