WhiteListFleet.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <template>
  2. <div>
  3. <div
  4. class="rate-list-view"
  5. v-for="(item, index) in fleetWhitelist"
  6. :key="index">
  7. <el-form-item
  8. label-width="50px"
  9. label="Group">
  10. <el-select
  11. v-model="item.groupPk"
  12. style="margin-right: 10px;">
  13. <el-option
  14. v-for="item in companyOptions"
  15. :key="item.groupPk"
  16. :label="item.groupName"
  17. :value="item.groupPk">
  18. </el-option>
  19. </el-select>
  20. </el-form-item>
  21. <img
  22. class="list-item-icon"
  23. @click="handleClickSubWhiteFleetButton(item, index)"
  24. src="../../../assets/form-list-sub.png"/>
  25. <img
  26. v-if="index === fleetWhitelist.length - 1"
  27. class="list-item-icon"
  28. @click="handleClickAddWhiteFleetButton"
  29. src="../../../assets/form-list-add.png"/>
  30. </div>
  31. </div>
  32. </template>
  33. <script>
  34. import site from '@/http/api/site'
  35. import group from '@/http/api/group'
  36. import driver from '@/http/api/driver'
  37. export default {
  38. name: 'WhiteListFleet',
  39. props: {
  40. value: {
  41. type: Array,
  42. required: true
  43. }
  44. },
  45. model: {
  46. prop: 'value',
  47. event: 'change'
  48. },
  49. data() {
  50. return{
  51. fleetWhitelist: [{
  52. //siteFleetId: "",
  53. groupPk: ''
  54. }],
  55. companyOptions: []
  56. }
  57. },
  58. watch: {
  59. value: {
  60. deep: true,
  61. handler(n, o) {
  62. this.fleetWhitelist = n;
  63. }
  64. }
  65. },
  66. mounted() {
  67. this.fleetWhitelist = this.value;
  68. this.getCompanyOptions();
  69. if (this.fleetWhitelist.length === 0) {
  70. this.handleClickAddWhiteFleetButton()
  71. }
  72. },
  73. methods: {
  74. onChange() {
  75. this.$emit('change', this.fleetWhitelist);
  76. },
  77. getCompanyOptions() {
  78. group.getAllUserGroups().then(res => {
  79. if (res.data) {
  80. this.companyOptions = res.data
  81. }
  82. })
  83. },
  84. handleClickAddWhiteFleetButton() {
  85. this.fleetWhitelist.push({
  86. groupPk: ''
  87. })
  88. this.onChange();
  89. },
  90. handleClickSubWhiteFleetButton(fleet, index) {
  91. if (fleet.siteFleetId) {
  92. this.$confirm('Are you sure you want to delete this fleet?', 'Delete', {
  93. confirmButtonText: 'Ok',
  94. cancelButtonText: 'Cancel',
  95. type: 'warning',
  96. }).then(() => {
  97. this.deleteWhiteFleet(fleet, index);
  98. })
  99. } else {
  100. this.fleetWhitelist.splice(index, 1)
  101. if (this.fleetWhitelist.length === 0) {
  102. this.handleClickAddWhiteFleetButton()
  103. }
  104. }
  105. },
  106. deleteWhiteFleet(fleet, index) {
  107. site.deleteWhitelistFleet({siteFleetId: fleet.siteFleetId}).then(res => {
  108. this.fleetWhitelist.splice(index, 1)
  109. if (this.fleetWhitelist.length === 0) {
  110. this.handleClickAddWhiteFleetButton()
  111. }
  112. }).catch(err => {
  113. this.$notify({
  114. type: 'error',
  115. message: error,
  116. title: 'Delete fleet failed'
  117. })
  118. })
  119. }
  120. }
  121. }
  122. </script>
  123. <style scoped>
  124. .rate-list-view {
  125. display: flex;
  126. flex-wrap: wrap;
  127. align-items: center;
  128. }
  129. .list-item-icon {
  130. width: 30px;
  131. height: 30px;
  132. cursor: pointer;
  133. margin: 0 10px 22px;
  134. }
  135. </style>