ShopItemView2.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <template>
  2. <div style="margin: 10px;border: #dddddd solid 1px;padding: 10px">
  3. <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
  4. <el-tab-pane label="全部" name="all">
  5. <el-table :data="shopItems" border stripe>
  6. <el-table-column prop="Name" label="商品名称"></el-table-column>
  7. <el-table-column prop="data.Description" label="商品描述"></el-table-column>
  8. <el-table-column prop="data.Price" label="商品价格"></el-table-column>
  9. <el-table-column prop="data.Type" label="商品类型">
  10. <template #default="scope">
  11. <el-text>{{ getTypeNameByType(scope.row.data.Type) }}</el-text>
  12. </template>
  13. </el-table-column>
  14. </el-table>
  15. </el-tab-pane>
  16. <el-tab-pane label="物品" name="item">
  17. <ShopItemsComponent v-if="activeName=='item'"/>
  18. </el-tab-pane>
  19. <el-tab-pane label="恐龙" name="dino">
  20. <ShopDinoComponent v-if="activeName=='dino'"/>
  21. </el-tab-pane>
  22. <el-tab-pane label="信标" name="beacon">
  23. <ShopBeaconComponent v-if="activeName=='beacon'"/>
  24. </el-tab-pane>
  25. <el-tab-pane label="经验" name="experience">
  26. <ShopExperienceComponent v-if="activeName=='experience'"/>
  27. </el-tab-pane>
  28. <el-tab-pane label="技能点?" name="unlockengram">
  29. <ShopUnlockengramComponent v-if="activeName=='unlockengram'"/>
  30. </el-tab-pane>
  31. <el-tab-pane label="命令" name="command">
  32. <ShopCommandsComponent v-if="activeName=='command'"/>
  33. </el-tab-pane>
  34. </el-tabs>
  35. </div>
  36. </template>
  37. <script setup lang="ts">
  38. import {ref} from "vue";
  39. import {TabsPaneContext} from "element-plus";
  40. import {GetShopItems, ShopData, ShopItem} from "../../api/ARKShopItemAPI";
  41. import {BaseData} from "../../api/ConfigFile";
  42. import ShopItemsComponent from "../../components/ShopItemsComponent.vue";
  43. import ShopCommandsComponent from "../../components/ShopCommandsComponent.vue";
  44. import ShopDinoComponent from "../../components/ShopDinoComponent.vue";
  45. import ShopBeaconComponent from "../../components/ShopBeaconComponent.vue";
  46. import ShopExperienceComponent from "../../components/ShopExperienceComponent.vue";
  47. import ShopUnlockengramComponent from "../../components/ShopUnlockengramComponent.vue";
  48. import router from "../../router";
  49. let activeName = ref<string>('all')
  50. let shopItems = ref<BaseData<ShopData>[]>([])
  51. initRouterActiveName()
  52. function initRouterActiveName() {
  53. let an = router.currentRoute.value.params.activeName
  54. if (an) {
  55. activeName.value = an.toString()
  56. }
  57. }
  58. function replay() {
  59. let type = activeName.value
  60. if (activeName.value == "all") {
  61. type = ""
  62. }
  63. shopItems.value = []
  64. GetShopItems(type).then(res => {
  65. if (res.code == 200) {
  66. if (type == "") {
  67. for (let item in res.data) {
  68. shopItems.value.push(new BaseData(item, res.data[item]))
  69. }
  70. }
  71. if (type == "item") {
  72. for (let item in res.data) {
  73. shopItems.value.push(new BaseData(item, res.data[item] as ShopItem))
  74. }
  75. }
  76. if (type == "dino") {
  77. for (let item in res.data) {
  78. shopItems.value.push(new BaseData(item, res.data[item] as ShopData))
  79. }
  80. }
  81. if (type == "beacon") {
  82. for (let item in res.data) {
  83. shopItems.value.push(new BaseData(item, res.data[item] as ShopData))
  84. }
  85. }
  86. if (type == "experience") {
  87. for (let item in res.data) {
  88. shopItems.value.push(new BaseData(item, res.data[item] as ShopData))
  89. }
  90. }
  91. if (type == "unlockengram") {
  92. for (let item in res.data) {
  93. shopItems.value.push(new BaseData(item, res.data[item] as ShopData))
  94. }
  95. }
  96. if (type == "command") {
  97. for (let item in res.data) {
  98. shopItems.value.push(new BaseData(item, res.data[item] as ShopData))
  99. }
  100. }
  101. }
  102. })
  103. }
  104. replay()
  105. function getTypeNameByType(type: string): string {
  106. switch (type) {
  107. case "item":
  108. return "物品"
  109. case "dino":
  110. return "恐龙"
  111. case "beacon":
  112. return "信标"
  113. case "experience":
  114. return "经验"
  115. case "unlockengram":
  116. return "技能点"
  117. case "command":
  118. return "命令"
  119. default:
  120. return ""
  121. }
  122. }
  123. const handleClick = (tab: TabsPaneContext) => {
  124. activeName.value = tab.props.name+""
  125. router.push({path: "/back/shopItem/"+tab.props.name})
  126. replay()
  127. }
  128. </script>
  129. <style scoped lang="scss">
  130. </style>