8a5a4ea6 by zhangmeng

票务

1 parent 3544a940
......@@ -647,8 +647,6 @@ async function getTicketOrderInfoFN() {
} finally {
}
console.log(form.value)
}
......@@ -705,6 +703,17 @@ function startforGetData() {
startforGetData()
}
})
} else if (type.value == 'ticket') {
getTicketOrderInfoFN().then(res => {
if (form.value.payDate) {
if (handle) {
clearTimeout(handle)
handle = null
}
} else {
startforGetData()
}
})
} else {
getData().then(res => {
if (form.value.payDate) {
......
<template>
<div>
<div class="box">
<el-card class="mb60 mt30" v-loading="loading">
<el-card v-loading="loading" class="mb60 mt30">
<div class="text-center mt30">
<el-icon color="#32B16C" size="80">
<SuccessFilled/>
</el-icon>
<p class="text-success mb20">{{ language == 0 ? '支付成功' : 'successfully!' }}</p>
<el-button type="primary" class="btn-lineG mb60" @click="goBillDetail" round>
<el-button class="btn-lineG mb60" round type="primary" @click="goBillDetail">
{{ language == 0 ? '返回订单详情' : 'Return order details' }}
</el-button>
</div>
......@@ -26,18 +26,18 @@ import {useStorage} from "@vueuse/core/index";
const route = useRoute()
const router = useRouter()
const language= useStorage('language',0)
const language = useStorage('language', 0)
const orderId = ref(route.query.orderId)
const type = ref('')
const loading = ref(false)
onMounted(() => {
var code = decodeURIComponent(orderId.value)
let code = decodeURIComponent(orderId.value)
console.log(code)
loading.value = true
callbackPalPay(code).then(res => {
loading.value = false
type.value = res.data.orderType
loading.value = false
type.value = res.data.orderType
})
})
......@@ -52,6 +52,6 @@ function goBillDetail() {
}
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
</style>
......
......@@ -142,7 +142,7 @@ import {
listApi,
getTicketListApi, getTicketInfoByActivityId,
} from '@/apiPc/booking'
import {ElMessage} from "element-plus";
import {ElMessage, ElMessageBox} from "element-plus";
import {languageFormat} from "@/viewsPc/seat/utils/language.js";
import useUserStore from "/@/store/modules/user";
import {useStorage} from "@vueuse/core/index";
......@@ -208,110 +208,6 @@ const formRef = ref(null)
const TickForm = ref({})
let timer = null;
// const payment = reactive({
// showCodeDialog: false,
// btn_loading: false,
// form: {
// viewers: [],
// phone: "",
// },
// qrInfo: {},
// qrCodeData: "",
// paymentHandle() {
// if (payment.form.viewers.length != order.data?.seatInfo?.length)
// return ElMessage({
// type: "warning",
// message: languageFormat(
// language.value,
// "观看人与购买票数不符",
// "The number of viewers does not match the number of tickets purchased."
// ),
// });
// if (!payment.form.phone)
// return ElMessage({
// type: "warning",
// message: languageFormat(
// language.value,
// "请输入联系电话",
// "Please enter the contact phone number."
// ),
// });
// // if (!/^[1][3,4,5,7,8][0-9]{9}$/.test(payment.form.phone)) {
// // return ElMessage({
// // type: "warning",
// // message: languageFormat(
// // language.value,
// // "联系电话格式不正确",
// // "The format of the contact phone is incorrect."
// // ),
// // });
// // }
// loading.value = true
// payOrder({
// contactPhone: payment.form.phone,
// customerIds: payment.form.viewers,
// orderToken: order.data?.orderToken,
// payType: language.value == 0 ? 1 : 2,
// paymentAmount: order.data?.paymentAmount,
// }).then((res) => {
// if (res.data.language == "zh-cn") {
// payment.qrInfo = res.data;
// qrcode.toDataURL(res.data.scanCodeUrl, (err, url) => {
// if (url) {
// payment.qrCodeData = url;
// }
// });
// payment.showCodeDialog = true;
// startCheckSuccessListener(res.data.orderSn, props.activityId);
// } else {
// // TODO:这里是英文环境支付
// location.href = res.data.scanCodeUrl
// }
// }).finally(() => {
// loading.value = false
// });
// },
// handleCloce() {
// payment.showCodeDialog = false;
// payment.qrCodeData = "";
// clearInterval(timer);
// timer = null;
// router.replace({
// path: "/seat/order",
// });
// },
// });
// const order = reactive({
// data: null,
// fetchData() {
// confirmOrder({
// actId: props.activityId,
// openType: route.query.openType,
// sessionId: route.query.sessionId,
// sitePlace: route.query.sitePlace,
// ticketType: route.query.ticketType,
// seatIds: route.query.seatIds.split(","),
// }).then((res) => {
// this.data = res.data;
// });
// },
// });
// const audience = reactive({
// data: [],
// fetchData() {
// viewPeopleList().then((res) => {
// audience.data = res.data;
// });
// },
// });
// audience.fetchData();
// order.fetchData();
customerList()
function changeGroup() {
......@@ -359,10 +255,27 @@ async function paymentHandle() {
}
await formRef.value.validate()
const res = await submitOrderTicket(orderForm.value)
if (res.code == 200) {
ElMessage.success('提交成功')
}
await ElMessageBox.confirm(language.value == 0 ? '确认提交订单吗?' : 'Confirm to submit the order?', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(async () => {
const res = await submitOrderTicket(orderForm.value)
if (res.code == 200 && res.data.orderId > 0) {
// 去付钱
router.push({
name: 'bookingPay',
query: {
orderId: res.data.orderId,
money: res.data.total,
type: 'ticket'
}
})
} else {
ElMessage.warning(language.value == 0 ? '下单失败,' : 'Order failure')
}
})
}
async function getDetail() {
......
......@@ -37,43 +37,46 @@
<div class="address">
{{ triggerLanguage(language, "地址", "Location") }}{{ matchForm.address }}
</div>
<!-- 时间 -->
<div class="select_item_box">
<div class="label">
{{ triggerLanguage(language, "票档", "Tickets") }}
{{ triggerLanguage(language, "时间", "Event Date & Time") }}
</div>
<div class="select_item">
<div
v-for="(it, index) in tickClass"
v-for="(it, index) in tickList"
:key="index"
:class="[
it.id == selectForm.latId ? 'tagActive' : 'tag',
it.id == selectForm.id ? 'tagActive' : 'tag',
it.isView==0?'forbid':''
]"
@click="select(it)"
@click="selectTick(it)"
>
{{ it.name }}
{{ it.name }} <span v-if="it.ticketType==1" class="tao">{{
language == 0 ? '套票' : 'Package ticket'
}}</span>
</div>
</div>
</div>
<!-- 时间 -->
<!-- 票档 -->
<div class="select_item_box">
<div class="label">
{{ triggerLanguage(language, "时间", "Event Date & Time") }}
{{ triggerLanguage(language, "票档", "Tickets") }}
</div>
<div class="select_item">
<div
v-for="(it, index) in tickList"
v-for="(it, index) in tickClass"
:key="index"
:class="[
it.id == selectForm.id ? 'tagActive' : 'tag',
it.id == selectForm.latId ? 'tagActive' : 'tag',
]"
@click="selectTick(it)"
@click="select(it)"
>
{{ it.name }}
</div>
</div>
</div>
<!-- button -->
<div class="btn forPc" style="margin-left: 40px" @click="toSelectSeat()">
{{ triggerLanguage(language, "添加观影人", "Add Moviegoers") }}
......@@ -106,6 +109,7 @@ const user = computed(() => useUserStore().user)
const route = useRoute();
const router = useRouter();
const activeId = ref(route.params.activeId)
const flag = ref(false)
const props = defineProps({
activityId: [String, Number],
});
......@@ -140,6 +144,13 @@ async function getTicketList() {
async function getTicketListType() {
const res = await listApi({latId: selectForm.value.latId})
tickList.value = res.rows
flag.value = tickList.value.some((item) => {
return item.isView == 0
})
tickList.value.forEach(v => {
if (flag.value && v.ticketType == 1) v.isView = 0
})
}
function select(v) {
......@@ -148,14 +159,14 @@ function select(v) {
}
function selectTick(v) {
selectForm.value.id = v.id
if (v.isView != 0) selectForm.value.id = v.id
}
function toSelectSeat() {
if (!selectForm.value.latId) return ElMessage.error(language == 0 ? "请选择票档" : 'Please select a ticket file')
if (!selectForm.value.id) return ElMessage.error(language == 0 ? "请选择时间" : 'Please select time')
if (!user.value) {
useStore().setVisitor()
useStore.setVisitor()
return
}
router.push({
......@@ -242,6 +253,11 @@ function toSelectSeat() {
flex-shrink: 0;
}
.forbid {
opacity: 0.5;
cursor: not-allowed !important;
}
.select_item {
display: flex;
flex-wrap: wrap;
......@@ -280,6 +296,13 @@ function toSelectSeat() {
cursor: pointer;
}
.tao {
border: 1px solid #493ceb;
font-size: 14px;
color: #493ceb;
margin-left: 10px;
}
.tagDisabled {
padding: 12px 18px;
background: #878787;
......
<template>
<div>
<el-card :body-style="{'padding':'10px 0 0'}" class="mb60">
<!-- <div class="indexTitle">-->
<!-- <h3 class="leftboderTT">{{ language==0?'电子发票':'E-invoice' }}-->
<!-- </h3>-->
<!-- </div>-->
<!-- <div class="indexTitle">-->
<!-- <h3 class="leftboderTT">{{ language==0?'电子发票':'E-invoice' }}-->
<!-- </h3>-->
<!-- </div>-->
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane :label="language==0?'赛事报名':'REGISTRATION'" name="5"></el-tab-pane>
<el-tab-pane :label="language==0?'酒店订单':'HOTEL'" name="0"></el-tab-pane>
......@@ -24,163 +24,167 @@
style="width: 200px"
@change="getList"
>
<el-option label="全部" value="0" />
<el-option label="未申请" value="1" />
<el-option label="申请中" value="2" />
<el-option label="已开票" value="3" />
<el-option label="全部" value="0"/>
<el-option label="未申请" value="1"/>
<el-option label="申请中" value="2"/>
<el-option label="已开票" value="3"/>
</el-select>
</el-form-item>
</el-form>
<div v-show="list&&list.length>0" style="padding-left: 28px;color: red;font-size: 15px">温馨提示:发票申请成功后,将以电子发票的形式发送至您邮箱,请注意查收!</div>
<div v-show="list&&list.length>0" style="padding-left: 28px;color: red;font-size: 15px">
温馨提示:发票申请成功后,将以电子发票的形式发送至您邮箱,请注意查收!
</div>
</div>
<el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list?.length == 0"/>
<el-empty v-if="list?.length == 0" :image="`/img/order_no.png`" :image-size="228"/>
<div v-if="activeName=='6'" class="pd20">
<div v-for="b in list" class="item" v-loading="loading">
<div v-for="b in list" v-loading="loading" class="item">
<div class="title">
<label class="orangeTag"> {{ language==0?'票务':'Ticket' }} </label>
<span>{{b.orderSn}}</span>
<span class="fr text-warning status">{{b.invoiceStr}}</span>
<label class="orangeTag"> {{ language == 0 ? '票务' : 'Ticket' }} </label>
<span>{{ b.orderSn }}</span>
<span class="fr text-warning status">{{ b.invoiceStr }}</span>
</div>
<el-row class="pd20 mt10" justify="space-between" align="middle">
<el-col :lg="9" :md="12" :sm="12" :xs="24">
<h3 class="m0">{{ b.name }}</h3>
<p> {{ language==0? "时间": "Event Date & Time" }}{{
b.dateStr }}</p>
<p class="common">
{{ language==0?"张数":"Location"}}{{ b.ticketNum}}{{ language==0? "张": "tickets" }}
</p>
</el-col>
<el-col :lg="3" :md="6" :sm="6" :xs="6" class="text-center">
<span class="text-warning"> {{ b.payType=='2'?'€':'¥' }}
<span class="bigMoney">{{b.payAmount}}</span>
<el-row align="middle" class="pd20 mt10" justify="space-between">
<el-col :lg="9" :md="12" :sm="12" :xs="24">
<h3 class="m0">{{ b.name }}</h3>
<p> {{ language == 0 ? "时间" : "Event Date & Time" }}{{
b.dateStr
}}</p>
<p class="common">
{{ language == 0 ? "张数" : "Location" }}{{ b.ticketNum }}{{ language == 0 ? "张" : "tickets" }}
</p>
</el-col>
<el-col :lg="3" :md="6" :sm="6" :xs="6" class="text-center">
<span class="text-warning"> {{ b.payType == '2' ? '€' : '¥' }}
<span class="bigMoney">{{ b.payAmount }}</span>
</span>
</el-col>
<el-col :lg="6" :md="16" :sm="16" :xs="16">
<div class="text-right">
<el-button type="primary" plain round v-if="b.isInvoice == '0'&&!b.invoiceId" @click.stop="gokp(b)">
{{ language == 0 ? '申请开票' : 'Invoice' }}
</el-button>
<el-button type="primary" plain round v-if="b.isInvoice == '0'&&b.invoiceId" @click.stop="editkp(b)">
{{ language == 0 ? '重新申请' : 'Rebilling' }}
</el-button>
<el-button type="primary" plain round v-if="b.invoiceId"
@click.stop="showDetail(b)">{{ language == 0 ? '发票信息' : 'Detail' }}
</el-button>
</div>
</el-col>
</el-row>
</el-col>
<el-col :lg="6" :md="16" :sm="16" :xs="16">
<div class="text-right">
<el-button v-if="b.isInvoice == '0'&&!b.invoiceId" plain round type="primary" @click.stop="gokp(b)">
{{ language == 0 ? '申请开票' : 'Invoice' }}
</el-button>
<el-button v-if="b.isInvoice == '0'&&b.invoiceId" plain round type="primary" @click.stop="editkp(b)">
{{ language == 0 ? '重新申请' : 'Rebilling' }}
</el-button>
<el-button v-if="b.invoiceId" plain round type="primary"
@click.stop="showDetail(b)">{{ language == 0 ? '发票信息' : 'Detail' }}
</el-button>
</div>
</el-col>
</el-row>
</div>
</div>
<div v-else-if="activeName=='5'" class="pd20">
<div v-for="b in list" class="item" v-loading="loading">
<div v-for="b in list" v-loading="loading" class="item">
<div class="title">
<label class="bg-lineg"> {{ language==0?'大赛报名':'REGISTRATION' }} </label>
<span>{{ language==0?'订单编号:':'No.' }} {{ b.id }}</span>
<span class="fr text-warning status">{{b.invoiceStr}}</span>
<label class="bg-lineg"> {{ language == 0 ? '大赛报名' : 'REGISTRATION' }} </label>
<span>{{ language == 0 ? '订单编号:' : 'No.' }} {{ b.id }}</span>
<span class="fr text-warning status">{{ b.invoiceStr }}</span>
</div>
<el-row class="pd20" justify="space-between" align="middle">
<el-row align="middle" class="pd20" justify="space-between">
<el-col :lg="9" :md="12" :sm="12" :xs="24">
<div>
<h4 class="m0">{{b.cptName}}</h4>
<p v-if="b.groupName">{{ language == 0 ?'团队名称':'Team name' }}{{b.groupName}}</p>
<p v-if="b.payTime">{{ language == 0 ?'支付时间':'Pay time'}}{{b.payTime}}</p>
<h4 class="m0">{{ b.cptName }}</h4>
<p v-if="b.groupName">{{ language == 0 ? '团队名称' : 'Team name' }}{{ b.groupName }}</p>
<p v-if="b.payTime">{{ language == 0 ? '支付时间' : 'Pay time' }}{{ b.payTime }}</p>
</div>
</el-col>
<el-col :lg="3" :md="6" :sm="6" :xs="6" class="text-center">
<span class="text-warning"> {{ b.payType!='2'?'¥':'€' }}
<span class="bigMoney">{{b.totalPayAmount||b.totalAmount}}</span>
<span class="text-warning"> {{ b.payType != '2' ? '¥' : '€' }}
<span class="bigMoney">{{ b.totalPayAmount || b.totalAmount }}</span>
</span>
</el-col>
<el-col :lg="6" :md="16" :sm="16" :xs="16">
<div class="text-right">
<el-button type="primary" plain round v-if="b.isInvoice == '0'&&!b.invoiceId" @click.stop="gokp(b)">
<el-button v-if="b.isInvoice == '0'&&!b.invoiceId" plain round type="primary" @click.stop="gokp(b)">
{{ language == 0 ? '申请开票' : 'Invoice' }}
</el-button>
<el-button type="primary" plain round v-if="b.isInvoice == '0'&&b.invoiceId" @click.stop="editkp(b)">
<el-button v-if="b.isInvoice == '0'&&b.invoiceId" plain round type="primary" @click.stop="editkp(b)">
{{ language == 0 ? '重新申请' : 'Rebilling' }}
</el-button>
<el-button type="primary" plain round v-if="b.invoiceId"
<el-button v-if="b.invoiceId" plain round type="primary"
@click.stop="showDetail(b)">{{ language == 0 ? '发票信息' : 'Detail' }}
</el-button>
<!-- <el-button type="primary" v-if="b.isInvoice == '0'&&!b.invoiceId&&b.languageSource!='100'" plain round @click.stop="goSj(b)">-->
<!-- {{ language == 0 ? '开收据' : 'Receipt' }}-->
<!-- </el-button>-->
<!-- <el-button type="primary" plain round v-if="b.invoiceId&&b.languageSource!='100'"-->
<!-- @click.stop="showSJ(b)">{{ language == 0 ? '查看收据' : 'Detail' }}-->
<!-- </el-button>-->
<!-- <el-button type="primary" v-if="b.isInvoice == '0'&&!b.invoiceId&&b.languageSource!='100'" plain round @click.stop="goSj(b)">-->
<!-- {{ language == 0 ? '开收据' : 'Receipt' }}-->
<!-- </el-button>-->
<!-- <el-button type="primary" plain round v-if="b.invoiceId&&b.languageSource!='100'"-->
<!-- @click.stop="showSJ(b)">{{ language == 0 ? '查看收据' : 'Detail' }}-->
<!-- </el-button>-->
</div>
</el-col>
</el-row>
</div>
</div>
<div class="pd20" v-else>
<div v-for="b in list" class="item" v-loading="loading">
<div v-else class="pd20">
<div v-for="b in list" v-loading="loading" class="item">
<div class="title">
<label class="blueTag" v-if="b.orderType == 0"> {{ language==0?'酒店':'HOTEL' }} </label>
<label class="purpleTag" v-if="b.orderType == 1"> {{ language==0?'车辆':'TRANSPORTATION' }} </label>
<label class="orangeTag" v-if="b.orderType == 2"> {{ language==0?'餐饮':'DINING' }} </label>
<label class="orangeTag" v-if="b.orderType == 3"> {{ language==0?'化妆':'MakeUp' }} </label>
<label class="orangeTag" v-if="b.orderType == 4"> {{ language==0?'拍摄':'Shooting ' }} </label>
<span>{{ language==0?'订单编号:':'No.' }} {{ b.id }}</span>
<span class="fr text-warning status">{{b.invoiceStr}}</span>
<label v-if="b.orderType == 0" class="blueTag"> {{ language == 0 ? '酒店' : 'HOTEL' }} </label>
<label v-if="b.orderType == 1" class="purpleTag"> {{ language == 0 ? '车辆' : 'TRANSPORTATION' }} </label>
<label v-if="b.orderType == 2" class="orangeTag"> {{ language == 0 ? '餐饮' : 'DINING' }} </label>
<label v-if="b.orderType == 3" class="orangeTag"> {{ language == 0 ? '化妆' : 'MakeUp' }} </label>
<label v-if="b.orderType == 4" class="orangeTag"> {{ language == 0 ? '拍摄' : 'Shooting ' }} </label>
<span>{{ language == 0 ? '订单编号:' : 'No.' }} {{ b.id }}</span>
<span class="fr text-warning status">{{ b.invoiceStr }}</span>
</div>
<el-row class="pd20 mt10" justify="space-between" align="middle">
<el-row align="middle" class="pd20 mt10" justify="space-between">
<el-col :lg="9" :md="12" :sm="12" :xs="24">
<div v-if="b.orderType == 0">
<h3 class="m0">{{b.name}}</h3>
<p>{{b.messageObj.roomName}}</p>
<p>{{b.messageObj.roomInfo}}</p>
<p>{{b.messageObj.roomType}}</p>
<p>{{b.messageObj.roomStayDate}}</p>
<h3 class="m0">{{ b.name }}</h3>
<p>{{ b.messageObj.roomName }}</p>
<p>{{ b.messageObj.roomInfo }}</p>
<p>{{ b.messageObj.roomType }}</p>
<p>{{ b.messageObj.roomStayDate }}</p>
</div>
<div v-if="b.orderType == 1">
<h3 class="m0">{{b.name}}</h3>
<h3 class="m0">{{ b.name }}</h3>
<div v-for="(car,index) in b.messageObj.carsList" :key="index">
<p v-if="car.num>0">{{car.name}}{{car.num}}</p>
<p v-if="car.num>0">{{ car.name }}{{ car.num }}</p>
</div>
</div>
<div v-if="b.orderType == 2">
<h3 class="m0">{{b.name}}</h3>
<h3 class="m0">{{ b.name }}</h3>
<div v-for="(n,index) in b.messageObj.foodsList" :key="index">
<p v-if="n.num > 0">
{{n.name}}({{n.categoryName}}) <text>{{n.num}}</text>
{{ n.name }}({{ n.categoryName }})
<text>{{ n.num }}</text>
</p>
</div>
</div>
<div v-if="b.orderType == 3 || b.orderType == 4">
<h3 class="m0">{{b.name}}</h3>
<h3 class="m0">{{ b.name }}</h3>
<p>
{{language==0?'套餐名称:':''}}{{b.messageObj.packageName}}
{{ language == 0 ? '套餐名称:' : '' }}{{ b.messageObj.packageName }}
</p>
<p>
{{language==0?'预约时间:':''}}{{b.deliveryTime.slice(0,10)}} {{b.messageObj.timePeriod}}
{{ language == 0 ? '预约时间:' : '' }}{{ b.deliveryTime.slice(0, 10) }} {{ b.messageObj.timePeriod }}
</p>
</div>
</el-col>
<el-col :lg="3" :md="6" :sm="6" :xs="6" class="text-center">
<span class="text-warning"> {{ b.paymentType==3?'€':'¥' }}
<span class="bigMoney">{{b.totalStr}}</span>
<span class="text-warning"> {{ b.paymentType == 3 ? '€' : '¥' }}
<span class="bigMoney">{{ b.totalStr }}</span>
</span>
</el-col>
<el-col :lg="6" :md="16" :sm="16" :xs="16">
<div class="text-right">
<el-button type="primary" plain round v-if="b.isInvoice == '0'&&!b.invoiceId" @click.stop="gokp(b)">
<el-button v-if="b.isInvoice == '0'&&!b.invoiceId" plain round type="primary" @click.stop="gokp(b)">
{{ language == 0 ? '申请开票' : 'Invoice' }}
</el-button>
<el-button type="primary" plain round v-if="b.isInvoice == '0'&&b.invoiceId" @click.stop="editkp(b)">
<el-button v-if="b.isInvoice == '0'&&b.invoiceId" plain round type="primary" @click.stop="editkp(b)">
{{ language == 0 ? '重新申请' : 'Rebilling' }}
</el-button>
<el-button type="primary" plain round v-if="b.invoiceId"
<el-button v-if="b.invoiceId" plain round type="primary"
@click.stop="showDetail(b)">{{ language == 0 ? '发票信息' : 'Detail' }}
</el-button>
<!-- <el-button type="primary" v-if="b.isInvoice == '0'&&!b.invoiceId&&b.paymentType=='3'" plain round @click.stop="goSj(b)">-->
<!-- {{ language == 0 ? '开收据' : 'Receipt' }}-->
<!-- </el-button>-->
<!-- <el-button type="primary" plain round v-if="b.invoiceId&&b.paymentType=='3'"-->
<!-- @click.stop="showSJ(b)">{{ language == 0 ? '查看收据' : 'Detail' }}-->
<!-- </el-button>-->
<!-- <el-button type="primary" v-if="b.isInvoice == '0'&&!b.invoiceId&&b.paymentType=='3'" plain round @click.stop="goSj(b)">-->
<!-- {{ language == 0 ? '开收据' : 'Receipt' }}-->
<!-- </el-button>-->
<!-- <el-button type="primary" plain round v-if="b.invoiceId&&b.paymentType=='3'"-->
<!-- @click.stop="showSJ(b)">{{ language == 0 ? '查看收据' : 'Detail' }}-->
<!-- </el-button>-->
</div>
</el-col>
</el-row>
......@@ -188,21 +192,22 @@
</div>
</el-card>
<el-dialog :title="language==0?'开收据':'Issue a receipt'" v-model="showSJDialog" width="460px" :close-on-click-modal="false" :close-on-press-escape="false">
<el-dialog v-model="showSJDialog" :close-on-click-modal="false" :close-on-press-escape="false"
:title="language==0?'开收据':'Issue a receipt'" width="460px">
<div class="flex">
<el-form-item :label="language==0?'开票人':'Name'">
<div class="flex">
<el-input v-model="lpName" :placeholder="language==0?'请输入开票人':'Please enter your name'"></el-input>
<el-button type="primary" @click="submitSJ">{{ language==0?'提交并预览':'Submit' }}</el-button>
<el-button type="primary" @click="submitSJ">{{ language == 0 ? '提交并预览' : 'Submit' }}</el-button>
</div>
</el-form-item>
</div>
<div class="tip mt20">
<label>{{ language==0?'开电子收据须知':'Receipt notice' }}:</label>
<div class="pd10">
{{remark}}
</div>
<div class="tip mt20">
<label>{{ language == 0 ? '开电子收据须知' : 'Receipt notice' }}:</label>
<div class="pd10">
{{ remark }}
</div>
</div>
</el-dialog>
</div>
......@@ -222,52 +227,66 @@ import {
import {getCurrentInstance, onMounted, ref} from "vue";
import {ElMessage, ElMessageBox} from "element-plus";
import {md5} from "md5js";
import {loginFree,getCanInvoiceTicket} from "@/viewsPc/seat/api";
import {loginFree, getCanInvoiceTicket} from "@/viewsPc/seat/api";
import {setToken} from "@/viewsPc/seat/utils/local-store";
const router = useRouter()
const route = useRoute()
const language= useStorage('language',0)
const language = useStorage('language', 0)
const lpName = ref('')
const remark = ref('')
const showSJDialog = ref(false)
const userStore = useUserStore();
const user = useUserStore().user || {}
const activeName = ref(userStore.activeName||'5')
const activeName = ref(userStore.activeName || '5')
const query = ref({
createById: user.userId,
orderType:'5',
invoiced:'0',
pageNo:1,
pageSize:999
orderType: '5',
invoiced: '0',
pageNo: 1,
pageSize: 999
})
const {proxy} = getCurrentInstance()
const list = ref([])
const loading = ref(false)
onMounted(() => {
if(!user.utype){
if (!user.utype) {
router.push({name: 'home'})
return
}
if(language.value==1){
if (language.value == 1) {
router.push({name: 'myInfo'})
return
}
query.value.orderType= activeName.value=userStore.activeName||'5'
query.value.orderType = activeName.value = userStore.activeName || '5'
getList()
route.query.orderSn&&getDataInfo()
route.query.orderSn && getDataInfo()
})
const getList = () => {
loading.value = true
if(query.value.orderType=='5'){
getCanInvoiceBm(query.value).then(res=>{
if (query.value.orderType == '5') {
getCanInvoiceBm(query.value).then(res => {
list.value = res.rows
loading.value = false
})
}else if(query.value.orderType=='6'){
login()
}else {
getCanInvoiceBills(query.value).then(res=>{
} else if (query.value.orderType == '6') {
// login()
getCanInvoiceBills({
createById: user.userId,
orderType: '5',
invoiced: '0',
pageNo: 1,
pageSize: 999
}).then(res => {
list.value = res.rows
for (let b of list.value) {
b.messageObj = JSON.parse(b.message)
}
loading.value = false
})
} else {
getCanInvoiceBills(query.value).then(res => {
list.value = res.rows
for (let b of list.value) {
b.messageObj = JSON.parse(b.message)
......@@ -286,7 +305,7 @@ const login = async () => {
sign,
}).then((res) => {
setToken(res.data.token);
getCanInvoiceTicket(query.value).then(res=>{
getCanInvoiceTicket(query.value).then(res => {
loading.value = false
list.value = res.data.lists
})
......@@ -297,7 +316,7 @@ const handleClick = (e) => {
console.log(e.paneName)
query.value.orderType = e.paneName
list.value = []
query.value.invoiced='0'
query.value.invoiced = '0'
userStore.updataActiveName(e.paneName)
getList()
......@@ -307,35 +326,35 @@ const gokp = (item) => {
path: '/booking/addInvoice',
query: {
orders: encodeURIComponent(JSON.stringify(item)),
totalMoney:item.totalStr||item.totalPayAmount||item.payAmount||item.totalAmount,
paymentType:query.value.orderType==6||query.value.orderType==5?item.payType:item.paymentType,
orderType:query.value.orderType,
orderSn:query.value.orderType==6?item.orderSn:null
totalMoney: item.totalStr || item.totalPayAmount || item.payAmount || item.totalAmount,
paymentType: query.value.orderType == 6 || query.value.orderType == 5 ? item.payType : item.paymentType,
orderType: query.value.orderType,
orderSn: query.value.orderType == 6 ? item.orderSn : null
}
})
}
const editkp = (item) => {
router.push({
name:'addInvoice',
query:{
invoiceId:query.value.orderType==6?item.invoiceIdStr :item.invoiceId,
type:activeName.value,
isEdit:true,
orderType:query.value.orderType,
paymentType:query.value.orderType==6||query.value.orderType==5?item.payType:item.paymentType,
orderSn:query.value.orderType==6?item.orderSn:null
name: 'addInvoice',
query: {
invoiceId: query.value.orderType == 6 ? item.invoiceIdStr : item.invoiceId,
type: activeName.value,
isEdit: true,
orderType: query.value.orderType,
paymentType: query.value.orderType == 6 || query.value.orderType == 5 ? item.payType : item.paymentType,
orderSn: query.value.orderType == 6 ? item.orderSn : null
}
})
}
const showDetail = (item) => {
router.push({
name:'invoiceDetail',
query:{
invoiceId:query.value.orderType==6?item.invoiceIdStr :item.invoiceId,
type:activeName.value,
orderType:query.value.orderType,
paymentType:query.value.orderType==6||query.value.orderType==5?item.payType:item.paymentType,
orderSn:query.value.orderType==6?item.orderSn:null
name: 'invoiceDetail',
query: {
invoiceId: query.value.orderType == 6 ? item.invoiceIdStr : item.invoiceId,
type: activeName.value,
orderType: query.value.orderType,
paymentType: query.value.orderType == 6 || query.value.orderType == 5 ? item.payType : item.paymentType,
orderSn: query.value.orderType == 6 ? item.orderSn : null
}
})
}
......@@ -346,20 +365,22 @@ const goSj = (item) => {
showSJDialog.value = true
nowSj = item
}
function getremark(item) {
getBaseInfoByActiveId(item.cptId).then(res=>{
if(res.data){
getBaseInfoByActiveId(item.cptId).then(res => {
if (res.data) {
remark.value = res.data.remarks
}
})
}
const showSJ = (item) => {
// 查看电子收据预览信息
var obj = {
orderId:item.id,
orderId: item.id,
type: 1
}
if(nowSj.orderType){
if (nowSj.orderType) {
//预约
proxy.download(`/ota/norder/getReceipt/${obj.orderId}`, {
...obj
......@@ -384,12 +405,12 @@ const submitSJ = () => {
}
const downloadAndSend = () => {
if(nowSj.orderType){
if (nowSj.orderType) {
ppOtaReceipt({
orderId:nowSj.id,
receiptInfo:lpName.value,
orderId: nowSj.id,
receiptInfo: lpName.value,
type: 2
}).then(res=>{
}).then(res => {
loading.value = false
ElMessageBox.confirm(language.value == 0 ? `已发送至您的邮箱 ${user.userName},请注意查收` : `A receipt has been sent to your email ${user.userName}, please check it`, {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
......@@ -399,18 +420,18 @@ const downloadAndSend = () => {
showSJDialog.value = false
showSJ(nowSj)
})
}).catch(err=>{
}).catch(err => {
loading.value = false
if(!err){
ElMessage.warning(language.value==0?'出错了,请稍后重试':'Error, please try again later')
if (!err) {
ElMessage.warning(language.value == 0 ? '出错了,请稍后重试' : 'Error, please try again later')
}
})
} else {
getReceipt({
orderId:nowSj.id,
lpName:lpName.value,
orderId: nowSj.id,
lpName: lpName.value,
type: 1
}).then(res=>{
}).then(res => {
loading.value = false
ElMessageBox.confirm(language.value == 0 ? `已发送至您的邮箱 ${user.userName},请注意查收` : `A receipt has been sent to your email ${user.userName}, please check it`, {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
......@@ -420,7 +441,7 @@ const downloadAndSend = () => {
showSJDialog.value = false
showSJ(nowSj)
})
}).catch(err=>{
}).catch(err => {
loading.value = false
})
}
......@@ -428,50 +449,127 @@ const downloadAndSend = () => {
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
.indexTitle {
margin: 20px 0 12px; overflow: visible;
margin: 20px 0 12px;
overflow: visible;
padding: 0 20px 15px;
border-bottom: 1px solid #e5e5e5;
.fr{margin: -8px 0 0}
h3 {display: inline-block;
.fr {
margin: -8px 0 0
}
h3 {
display: inline-block;
font-size: 16px;
color: var(--el-color-primary);
}
}
.bigMoney{font-size: 24px;font-family: "DIN Alternate";}
.name{font-size: 18px;margin: 0;}
.status-po{position: absolute;right: 0;top: 0;font-size: 12px;
.bigMoney {
font-size: 24px;
font-family: "DIN Alternate";
}
.name {
font-size: 18px;
margin: 0;
}
.status-po {
position: absolute;
right: 0;
top: 0;
font-size: 12px;
color: #FFFFFF;
span{border-radius: 0px 10px 0px 10px;padding: 4px 10px;}
.bg-danger{background: #E60012;}
.bg-warning{background: #e89f39;}
.bg-pink{background: #F740A6;}
.bg-primary{background: var(--el-color-primary)}
.bg-blue{background: #00a0e9}
span {
border-radius: 0px 10px 0px 10px;
padding: 4px 10px;
}
.bg-danger {
background: #E60012;
}
.bg-warning {
background: #e89f39;
}
.bg-pink {
background: #F740A6;
}
.bg-primary {
background: var(--el-color-primary)
}
.bg-blue {
background: #00a0e9
}
}
.item{
.name{font-size: 18px;
color: #000000;margin: 0 0 10px;}
p{margin: 8px 0 0;color: #707070;font-size: 14px;}
margin: 0 0 20px;border: 1px solid #E5E5E5;
.item {
.name {
font-size: 18px;
color: #000000;
margin: 0 0 10px;
}
p {
margin: 8px 0 0;
color: #707070;
font-size: 14px;
}
margin: 0 0 20px;
border: 1px solid #E5E5E5;
border-radius: 10px;
position: relative;
.bbody{padding: 0 15px 20px;}
.title{background: #F7F7F7;border-bottom: 1px solid #E5E5E5;
span{font-size: 14px;color: #4C5359;}
.status{font-size: 12px;font-weight: bold;padding: 2px 10px;}
.bbody {
padding: 0 15px 20px;
}
.title label{border-radius: 5px 0 5px 0; font-size: 12px; color: #fff; padding:4px 10px;margin-right: 10px;}
.blueTag{
background-color: #1EC886;}
.title {
background: #F7F7F7;
border-bottom: 1px solid #E5E5E5;
span {
font-size: 14px;
color: #4C5359;
}
.status {
font-size: 12px;
font-weight: bold;
padding: 2px 10px;
}
}
.title label {
border-radius: 5px 0 5px 0;
font-size: 12px;
color: #fff;
padding: 4px 10px;
margin-right: 10px;
}
.blueTag {
background-color: #1EC886;
}
.purpleTag {
background-color: #717bef;
}
.orangeTag {
background-color: #ff8124;
}
}
:deep(.el-tabs__item){text-transform: uppercase}
:deep(.el-tabs__item) {
text-transform: uppercase
}
</style>
......
import { defineConfig, loadEnv } from 'vite'
import path, { resolve } from 'path'
import {defineConfig, loadEnv} from 'vite'
import path, {resolve} from 'path'
import createVitePlugins from './vite/plugins'
import inject from '@rollup/plugin-inject'
import commonjs from '@rollup/plugin-commonjs'
// import legacy from '@vitejs/plugin-legacy'
// https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => {
export default defineConfig(({mode, command}) => {
const env = loadEnv(mode, process.cwd())
return {
// 部署生产环境和开发环境下的URL。
......@@ -70,30 +70,30 @@ export default defineConfig(({ mode, command }) => {
rewrite: (p) => p.replace(/^\/dev-api\/ztx-train/, '')
},
'/dev-api/ztx-match': {
// target: 'http://192.168.1.118:8083',
target: 'https://jijin.wtwuxicenter.com/stage-api',
target: 'http://192.168.1.118:8083',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '')
},
'/dev-api/ztx-webSite': {
target: 'https://wdsfwuxicenter.com/stage-api/',
// target: 'https://dance.itechtop.cn/stage-api',
target: 'http://192.168.1.118:8081/',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '')
},
'/dev-api': {
// target: 'http://192.168.1.118:8081/',
target: 'http://192.168.1.118:8081/',
// target: 'http://192.168.1.131:8081/',
target: 'https://jijin.wtwuxicenter.com/stage-api',
// target: 'http://124.70.181.90:1880/stage-api',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
// target: 'https://wdsfwuxicenter.com/stage-api/',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
},
'/ticket': {
// target: 'http://192.168.1.131:8098/',
target: 'http://192.168.1.118:8098/',
// target: 'http://192.168.1.131:8081/',
// target: 'http://124.70.181.90:1880/h5/',
target: 'https://ticketh5.wdsfwuxicenter.com/h5/',
// target: 'https://jijin.wtwuxicenter.com/ticket',
// target: 'https://ticketh5.wdsfwuxicenter.com/ticket',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/ticket/, '')
}
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!