feat(ticket): 门票撤单及编辑功能完善

This commit is contained in:
woody 2025-05-28 10:45:36 +08:00
parent b63155a5ac
commit 3a7d66807f
4 changed files with 70 additions and 30 deletions

View File

@ -21,3 +21,11 @@ export const buyTicket = data => http.post('/sale/api/ticket/pay-ticket', data)
// 获取门票详情
export const getTicketDetail = params =>
http.get('/sale/api/ticket/detail', { params })
// 撤销门票
export const cancelTicket = data =>
http.post('/sale/api/ticket/cancel-pay-ticket', data)
// 更新门票
export const updateTicket = data =>
http.post('/sale/api/ticket/update-ticket', data)

View File

@ -328,7 +328,6 @@ export default {
menuKey: 'incomeDetail',
ifshow: false,
},
{
url: '/pages/market/examineDetail/examineDetail',
name: '考核明细',
@ -381,6 +380,14 @@ export default {
menuKey: 'pickGoods',
ifshow: false,
},
{
url: '/pages/ticket/index',
name: '自助购票',
imgurl: '../../static/images/tickets.png',
menuKey: 'ticket',
ifshow: true,
alwaysShow: true,
},
// {
// url: "/pages/memberCard/index",
// name: '',
@ -594,7 +601,13 @@ export default {
// menuKey: "",
// ifshow: false,
// },
{
url: '/pages/ticket/index',
name: '自助购票',
imgurl: '../../static/images/tickets.png',
menuKey: 'ticket',
ifshow: true,
},
{
url: '/pages/selfService/index',
name: '自助服务',

View File

@ -194,9 +194,10 @@
<!-- 撤销确认弹窗 -->
<u-modal
v-model="showCancelModal"
:show="showCancelModal"
title="确认撤销"
:content="cancelModalContent"
:show-cancel-button="true"
confirm-text="确认撤销"
cancel-text="取消"
@confirm="confirmCancel"
@ -204,7 +205,7 @@
></u-modal>
<!-- 修改信息弹窗 -->
<u-popup v-model="editModalVisible" mode="center" border-radius="12">
<u-popup :show="editModalVisible" mode="center" border-radius="12">
<view class="edit-modal">
<view class="modal-header">
<text class="modal-title">修改门票信息</text>
@ -228,7 +229,7 @@
/>
</view>
<view class="form-item">
<text class="form-label">姓名 *</text>
<text class="form-label">姓名</text>
<input
class="form-input"
v-model="editForm.buyName"
@ -236,7 +237,7 @@
/>
</view>
<view class="form-item">
<text class="form-label">手机号 *</text>
<text class="form-label">手机号</text>
<input
class="form-input"
v-model="editForm.phone"
@ -244,7 +245,7 @@
/>
</view>
<view class="form-item">
<text class="form-label">身份证号 *</text>
<text class="form-label">身份证号</text>
<input
class="form-input"
v-model="editForm.idCard"
@ -252,14 +253,14 @@
/>
</view>
<view class="form-item">
<text class="form-label">性别 *</text>
<text class="form-label">性别</text>
<u-radio-group v-model="editForm.sex" direction="row">
<u-radio name="1" label="男"></u-radio>
<u-radio name="0" label="女"></u-radio>
<u-radio :name="1" label="男"></u-radio>
<u-radio :name="0" label="女"></u-radio>
</u-radio-group>
</view>
<view class="form-item">
<text class="form-label">尺码 *</text>
<text class="form-label">尺码</text>
<input
class="form-input"
v-model="editForm.clothSize"
@ -292,7 +293,12 @@
</template>
<script>
import { getTicketActivityList, getMyTicketList } from '@/config/ticket.js'
import {
getTicketActivityList,
getMyTicketList,
cancelTicket,
updateTicket,
} from '@/config/ticket.js'
export default {
data() {
@ -454,14 +460,28 @@ export default {
this.$set(item, 'expanded', !item.expanded)
},
// 24
//
isWithin24Hours(creationTime) {
if (!creationTime) return false
const createDate = new Date(creationTime)
const now = new Date()
const timeDiff = now.getTime() - createDate.getTime()
const hoursDiff = timeDiff / (1000 * 3600)
return hoursDiff <= 24
//
const createYear = createDate.getFullYear()
const createMonth = createDate.getMonth()
const createDay = createDate.getDate()
//
const nowYear = now.getFullYear()
const nowMonth = now.getMonth()
const nowDay = now.getDate()
//
return (
createYear === nowYear &&
createMonth === nowMonth &&
createDay === nowDay
)
},
//
@ -476,12 +496,9 @@ export default {
try {
uni.showLoading({ title: '撤销中...' })
const res = await this.$http.post(
'/sale/api/ticket/cancel-pay-ticket',
{
orderCode: this.selectedTicket.orderCode,
}
)
const res = await cancelTicket({
orderCode: this.selectedTicket.orderCode,
})
if (res.code === 200) {
uni.$u.toast('撤销成功')
@ -580,10 +597,7 @@ export default {
try {
uni.showLoading({ title: '更新中...' })
const res = await this.$http.post(
'sale/api/ticket/update-ticket',
this.editForm
)
const res = await updateTicket(this.editForm)
if (res.code === 200) {
uni.$u.toast('修改成功')
@ -605,6 +619,9 @@ export default {
</script>
<style lang="scss" scoped>
::v-deep(.uni-scroll-view) {
box-sizing: border-box;
}
.ticket-container {
min-height: 100vh;
background: #f8f8f8;
@ -830,7 +847,7 @@ export default {
color: #666;
&.price {
color: #005bac;
color: #ff4444;
font-weight: 600;
}
}
@ -927,7 +944,7 @@ export default {
//
.edit-modal {
width: 640rpx;
max-height: 80vh;
max-height: 90vh;
background: #fff;
border-radius: 24rpx;
overflow: hidden;
@ -947,9 +964,11 @@ export default {
}
.modal-content {
max-height: 60vh;
max-height: 70vh;
padding: 32rpx;
box-sizing: border-box;
padding-bottom: 20px;
overflow-y: hidden;
.form-item {
margin-bottom: 32rpx;

BIN
static/images/tickets.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB