ShopUnlockengramComponent.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <template>
  2. <el-row>
  3. <el-col :span="1.5">
  4. <el-button plain class="el-btn-margin" type="primary"
  5. @click="OpenAddAndUpdateView('save',
  6. new BaseData<ShopExperience>('',ShopCommand.Create()))">
  7. 添加信标
  8. </el-button>
  9. </el-col>
  10. </el-row>
  11. <el-table :data="shopItems" border stripe>
  12. <el-table-column prop="Name" label="商品名称"></el-table-column>
  13. <el-table-column prop="data.Description" label="商品描述"></el-table-column>
  14. <el-table-column prop="data.Price" label="商品价格"></el-table-column>
  15. <el-table-column prop="data.Items" label="解锁技能条目">
  16. <template #default="scope">
  17. <template v-for="item in scope.row.data.Items">
  18. <el-text>{{ item.Blueprint }}</el-text>
  19. <br>
  20. </template>
  21. </template>
  22. </el-table-column>
  23. <el-table-column label="操作" width="180">
  24. <template #default="scope">
  25. <el-button type="success" link @click="OpenShow(scope.row.data.Items)">查看物品</el-button>
  26. <el-button type="primary" link @click="OpenAddAndUpdateView('save',
  27. new BaseData<ShopCommand>(scope.row.Name,scope.row.data))">修改
  28. </el-button>
  29. <el-button type="danger" link @click="DeleteItem(scope.row.Name)">删除
  30. </el-button>
  31. </template>
  32. </el-table-column>
  33. </el-table>
  34. <el-dialog title="添加/修改 技能点解锁" v-model="openView" width="1100px">
  35. <el-form :model="shopItemForm" label-width="100px">
  36. <el-row>
  37. <el-col :span="12">
  38. <el-form-item label="类型">
  39. <el-text type="primary" label="类型">
  40. {{ getTypeNameByType(shopItemForm.data.Type) }}
  41. </el-text>
  42. </el-form-item>
  43. </el-col>
  44. <el-col :span="12"></el-col>
  45. <el-col :span="8">
  46. <el-form-item label="名称">
  47. <el-input v-model="shopItemForm.Name" label="名称"/>
  48. </el-form-item>
  49. </el-col>
  50. <el-col :span="8">
  51. <el-form-item label="价格">
  52. <el-input-number v-model="shopItemForm.data.Price" label="价格"/>
  53. </el-form-item>
  54. </el-col>
  55. <el-col :span="12">
  56. <el-form-item label="描述">
  57. <el-input type="textarea" v-model="shopItemForm.data.Description" label="描述"/>
  58. </el-form-item>
  59. </el-col>
  60. </el-row>
  61. <el-divider/>
  62. <el-col :span="1.5">
  63. <el-button plain class="el-btn-margin" type="primary"
  64. @click="AddItems()">
  65. 添加
  66. </el-button>
  67. </el-col>
  68. <el-col :span="24">
  69. <el-table :data="shopItemForm.data.Items" border stripe>
  70. <el-table-column prop="Blueprint" label="图纸"></el-table-column>
  71. </el-table>
  72. </el-col>
  73. </el-form>
  74. </el-dialog>
  75. </template>
  76. <script setup lang="ts">
  77. import {ref} from "vue";
  78. import {BaseData} from "../api/ConfigFile";
  79. import {
  80. DeleteShopItem,
  81. GetShopItems,
  82. SaveShopItem,
  83. ShopCommand, ShopCommandItem,
  84. ShopDino,
  85. ShopExperience,
  86. ShopUnlockengram, ShopUnlockengramItem, UpdateShopItem
  87. } from "../api/ARKShopItemAPI";
  88. import {ElMessage} from "element-plus";
  89. const type = ref("unlockengram")
  90. let shopItems = ref<BaseData<ShopUnlockengram>[]>([])
  91. let shopItemForm = ref<BaseData<ShopUnlockengram>>(new BaseData<ShopUnlockengram>("", ShopDino.Create()))
  92. let itemStatus = ref<string>("")
  93. let openView = ref(false)
  94. function replay() {
  95. GetShopItems("unlockengram").then(res => {
  96. if (res.code == 200) {
  97. console.log(res.data)
  98. for (let item in res.data) {
  99. shopItems.value.push(new BaseData(item, res.data[item] as ShopUnlockengram))
  100. }
  101. }
  102. })
  103. }
  104. replay()
  105. function OpenAddAndUpdateView(status: string, shopItem: BaseData<ShopUnlockengram>) {
  106. openView.value = true
  107. itemStatus.value = status
  108. shopItemForm.value = shopItem
  109. }
  110. function SubmitForm() {
  111. switch (itemStatus.value) {
  112. case "save":
  113. SaveShopItem(shopItemForm.value.data, shopItemForm.value.Name, type.value).then(
  114. res => {
  115. if (res.code == 200) {
  116. ElMessage.success("保存成功")
  117. } else {
  118. ElMessage.error(res.message)
  119. }
  120. }
  121. )
  122. break
  123. case "update":
  124. UpdateShopItem(shopItemForm.value.data, shopItemForm.value.Name, type.value).then(res => {
  125. if (res.code == 200) {
  126. ElMessage.success("修改成功")
  127. } else {
  128. ElMessage.error(res.message)
  129. }
  130. }
  131. )
  132. break
  133. }
  134. replay()
  135. openView.value = false
  136. }
  137. function DeleteItem(itemName: string) {
  138. DeleteShopItem(itemName).then(res => {
  139. if (res.code == 200) {
  140. ElMessage.success("删除成功")
  141. } else {
  142. ElMessage.error(res.message)
  143. }
  144. })
  145. replay()
  146. }
  147. function AddItems() {
  148. shopItemForm.value.data.Items.push(new ShopUnlockengramItem("", ''))
  149. }
  150. function getTypeNameByType(type: string): string {
  151. switch (type) {
  152. case "item":
  153. return "物品"
  154. case "dino":
  155. return "恐龙"
  156. case "beacon":
  157. return "信标"
  158. case "experience":
  159. return "经验"
  160. case "unlockengram":
  161. return "技能点"
  162. case "command":
  163. return "命令"
  164. default:
  165. return ""
  166. }
  167. }
  168. </script>
  169. <style scoped lang="scss">
  170. </style>