feat: 手动处理鱼,商店购买输入数量

main
LyMysterious 1 year ago
parent 5842b01f22
commit 80e90eeb96

@ -5,7 +5,7 @@
<!-- 处理按钮 --> <!-- 处理按钮 -->
<div style="text-align: right; margin-bottom: 20px;"> <div style="text-align: right; margin-bottom: 20px;">
<el-button type="primary" @click="fetchFishList"></el-button> <el-button type="primary" @click="fetchFishList"></el-button>
<el-button type="primary" @click="handleProcessFish"></el-button> <el-button type="primary" @click="handleProcessFish"></el-button>
</div> </div>
<el-tabs v-model="activeTab" type="card"> <el-tabs v-model="activeTab" type="card">
@ -19,7 +19,7 @@
<el-table-column prop="name" label="鱼名" align="center" width="200" /> <el-table-column prop="name" label="鱼名" align="center" width="200" />
<el-table-column prop="weight" label="重量" align="right" width="150" /> <el-table-column prop="weight" label="重量" align="right" width="150" />
<el-table-column prop="description" label="描述" /> <el-table-column prop="description" label="描述" />
<el-table-column label="是否稀有" align="center" width="150"> <el-table-column label="稀有" align="center" width="150">
<template #default="{ row }"> <template #default="{ row }">
<el-tag :type="row.isRare ? 'danger' : 'info'"> <el-tag :type="row.isRare ? 'danger' : 'info'">
{{ row.isRare ? '稀有' : '普通' }} {{ row.isRare ? '稀有' : '普通' }}
@ -29,6 +29,7 @@
<!-- 出售按钮 --> <!-- 出售按钮 -->
<el-table-column label="操作" align="center" width="180"> <el-table-column label="操作" align="center" width="180">
<template #default="{ row }"> <template #default="{ row }">
<el-button type="primary" @click="handleFish(row.id)"></el-button>
<el-button v-if="row.isRare" type="danger" @click="handleSell(row)"></el-button> <el-button v-if="row.isRare" type="danger" @click="handleSell(row)"></el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -51,7 +52,6 @@ const fetchFishList = async () => {
const res = await myFishBaskets() const res = await myFishBaskets()
if (res) { if (res) {
fishList.value = res; fishList.value = res;
ElMessage.success('鱼篓数据加载成功')
} }
} catch (err) { } catch (err) {
ElMessage.warning('请检查网络或重试') ElMessage.warning('请检查网络或重试')
@ -85,6 +85,21 @@ const handleProcessFish = async () => {
ElMessage.warning('处理失败,请稍后再试') ElMessage.warning('处理失败,请稍后再试')
} }
} }
//
const handleFish = async (fishId) => {
try {
const res = await handleFishById(fishId)
if (res) {
ElMessage.success(res)
fetchFishList()
}
} catch (err) {
console.log('====================================');
console.log(err);
console.log('====================================');
ElMessage.warning('处理失败,请稍后再试')
}
}
// //
const handleSell = async (fish) => { const handleSell = async (fish) => {

@ -3,15 +3,15 @@
<h1>商店 - 您当前拥有 {{ points }} 积分</h1> <h1>商店 - 您当前拥有 {{ points }} 积分</h1>
<el-table :data="items" style="width: 100%;" height="calc(100vh - 110px)" border> <el-table :data="items" style="width: 100%;" height="calc(100vh - 110px)" border>
<el-table-column label="ID" prop="id" width="100" align="center"/> <el-table-column label="ID" prop="id" width="100" align="center" />
<el-table-column label="名称" prop="name" width="200" align="center" /> <el-table-column label="名称" prop="name" width="200" align="center" />
<el-table-column label="描述" prop="description" /> <el-table-column label="描述" prop="description" />
<el-table-column label="价格(积分)" prop="points" width="150" align="right"/> <el-table-column label="价格(积分)" prop="points" width="150" align="right" />
<el-table-column label="您已拥有" prop="myQuantity" width="150" align="right"/> <el-table-column label="您已拥有" prop="myQuantity" width="150" align="right" />
<el-table-column label="操作" width="180" align="center"> <el-table-column label="操作" width="180" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-if="row.points <= points" type="primary" @click="buyItem(row)" :disabled="row.myQuantity >= 1"> <el-button v-if="row.points <= points" type="primary" @click="buyItem(row)">
{{ row.myQuantity >= 1 ? '已拥有' : '购买' }} 购买
</el-button> </el-button>
<el-button v-else type="warning" disabled> <el-button v-else type="warning" disabled>
积分不足 积分不足
@ -25,7 +25,7 @@
<script setup> <script setup>
import { ref, onMounted } from 'vue' import { ref, onMounted } from 'vue'
import { whatCanIBuy, buy } from '@/api/shop/shop' import { whatCanIBuy, buy } from '@/api/shop/shop'
import { ElButton, ElTable, ElTableColumn, ElMessage } from 'element-plus' import { ElButton, ElTable, ElTableColumn, ElMessage, ElInput, ElMessageBox } from 'element-plus'
const points = ref(0) // const points = ref(0) //
const items = ref([]) // const items = ref([]) //
@ -33,34 +33,36 @@ const items = ref([]) // 商店物品列表
// //
const fetchData = async () => { const fetchData = async () => {
try { try {
//
const pointsRes = await whatCanIBuy() const pointsRes = await whatCanIBuy()
points.value = pointsRes.points points.value = pointsRes.points
items.value = pointsRes.items items.value = pointsRes.items
} catch (err) { } catch (err) {
console.log('====================================');
console.log(err);
console.log('====================================');
ElMessage.error('加载数据失败,请重试') ElMessage.error('加载数据失败,请重试')
} }
} }
// //
const buyItem = async (item) => { const buyItem = async (good) => {
try { const { value: count } = await ElMessageBox.prompt('请输入购买数量', `物品名称 ${good.name}`, {
const res = await buy({ EquipmentId: item.id, Quantity: 1 }) confirmButtonText: '确认',
if (res.success) { cancelButtonText: '取消',
item.myQuantity += 1 inputPattern: /^(?:[1-9]\d{0,3}|10000)$/,
points.value -= item.points inputErrorMessage: '请输入 1 到 10000 之间的整数'
ElMessage.success(res.message) })
} else {
ElMessage.error(res.message) if (count) {
try {
const res = await await buy({ EquipmentId: good.id, Quantity: 1 })
if (res) {
good.myQuantity += 1
points.value -= good.points
ElMessage.success("购买成功")
} else {
ElMessage.error(res.message)
}
} catch (err) {
ElMessage.error('购买失败,请稍后再试')
} }
} catch (err) {
console.log('====================================');
console.log(err);
console.log('====================================');
ElMessage.error('购买过程中出错,请稍后再试')
} }
} }

Loading…
Cancel
Save