7b8241de by 杨炀

Merge commit '566e93c5' into dev

2 parents 55b26a7d 566e93c5
......@@ -8,6 +8,14 @@ export function getHotelList(params) {
})
}
export function getScenicList(params) {
return request({
url: `/ota/activityScenic/getScenicList`,
method: 'get',
params: params
})
}
export function getStudioList(params) {
return request({
url: `/ota/studio/list`,
......@@ -23,6 +31,16 @@ export function getHotelById(id) {
})
}
export function getScenicById(id) {
return request({
url: `/ota/scenic/getScenicInfo`,
method: 'get',
params: {
id
}
})
}
export function getStudioById(id) {
return request({
url: `/ota/studio/${id}`,
......@@ -54,6 +72,14 @@ export function newsSubmitOrderHotel(data) {
})
}
export function submitOrderScenic(data) {
return request({
url: `/ota/norder/submitOrderScenic`,
method: 'post',
data: data
})
}
export function getRoomBilldetailbyId(params) {
return request({
url: `/ota/orderRoom/getRoomOrderInfoByOrderId`,
......@@ -221,6 +247,18 @@ export function checkRoomPayByUserId(id) {
})
}
export function checkOrderPay(orderType) {
return request({
url: `/ota/norder/checkNonPayment`,
method: 'get',
params: {
orderType
}
})
}
export function submitInvoice(form) {
return request({
url: `/ota/invoice`,
......@@ -471,7 +509,7 @@ export function checkNonPayment() {
return request({
url: `/ota/norder/checkNonPayment`,
method: 'get',
params: {orderType: 5}
params: { orderType: 5 }
})
}
......@@ -503,11 +541,27 @@ export function aadCustomer(data) {
})
}
export function aadSceneCustomer(data) {
return request({
url: `/ota/customer/insertSceneCustomer`,
method: 'post',
data
})
}
export function checkSceneCustomer(data) {
return request({
url: `/ota/orderTourist/checkDiscounts`,
method: 'post',
data
})
}
// 删除观影人
export function delCustomer(id) {
return request({
url: `/ota/customer/${id}`,
method: 'delete',
method: 'delete'
})
}
......@@ -537,3 +591,20 @@ export function getTicketOrderInfo(params) {
params
})
}
export function getGateListByLasId(params) {
return request({
url: `/ota/scenicConfig/getGateListByLasId`,
method: 'get',
params
})
}
export function getMyFriends() {
return request({
url: `/ota/orderTourist/getMyFriends`,
method: 'get'
})
}
......
<template>
<el-dialog v-model="show" title="出行人信息" center append-to-body>
<el-form>
<el-form-item prop="message">
<div class="p_box">
<div class="people">
<el-radio-group v-model="personId">
<div
v-for="(it, index) in personList" :key="index" class="prople_item"
>
<el-radio :value="it.id" :disabled="hasPersonIds?.indexOf(it.id)!=-1">
<div>
{{ it.name }} {{ it.idCard }}
</div>
</el-radio>
</div>
</el-radio-group>
</div>
<el-button @click="addPeopl">{{ languageFormat(language, "新增", "Add") }}</el-button>
</div>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="show = false">取 消</el-button>
<el-button type="primary" @click="addPerson">完成</el-button>
</div>
</template>
</el-dialog>
<el-dialog v-model="showAdd" title="新增出现人" center append-to-body>
<el-form
ref="formRef" :model="form" label-width="100px" size="large"
style="margin: 80px"
>
<el-form-item :label="language==0?'姓名':'name'" prop="name" required :show-message="false">
<el-input v-model="form.name" :placeholder="language==0?'请输入':'Please input'" />
</el-form-item>
<el-form-item :label="language==0?'证件类型':'ID Type'" prop="idcType" required :show-message="false">
<el-select v-model="form.idcType" :placeholder="language==0?'请选择':'Please choose'">
<el-option :label="language==0?'身份证':'Identity card'" value="0" />
<el-option :label="language==0?'护照':'Passport'" value="1" />
<el-option :label="language==0?'其他':'Other'" value="2" />
</el-select>
</el-form-item>
<el-form-item :label="language==0?'证件号':'ID number'" prop="idCard" required :show-message="false">
<el-input v-model="form.idCard" :placeholder="language==0?'请输入证件号':'Please enter the ID after ah'" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button class="can_pay" @click="showAdd = false">{{ language == 0 ? '取 消' : 'cancel' }}</el-button>
<el-button class="pay" type="primary" @click="submit">{{ language == 0 ? '确 定' : 'confirm' }}</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import { aadSceneCustomer, checkSceneCustomer, getMyFriends } from '/@/apiPc/booking'
import { languageFormat } from '/@/viewsPc/seat/utils/language'
import { onMounted, ref } from 'vue'
import { useStorage } from '@vueuse/core/index'
import _ from 'lodash'
import { getCurrentInstance } from '@vue/runtime-core'
const emit = defineEmits(['addPerson'])
const { proxy } = getCurrentInstance()
const show = ref(false)
const showAdd = ref(false)
const personList = ref([])
const personId = ref(null)
const hasPersonIds = ref(null)
const language = useStorage('language', 0)
const form = ref({})
const formRef = ref(null)
onMounted(() => {
getData()
})
const getData = () => {
getMyFriends().then((res) => {
personList.value = res.data
})
}
const addPeopl = () => {
formRef.value?.resetFields()
showAdd.value = true
}
const addPerson = () => {
const person = _.find(personList.value, (it) => it.id == personId.value)
checkSceneCustomer({
customerId: person.id,
gateType: currParams.gateType
}).then((res) => {
if (res.data == 201) {
proxy.$modal.msgError('护照只能购买成人票')
} else if (res.data == 202) {
proxy.$modal.msgError('此身份证不能购买老人票')
} else if (res.data == 203) {
proxy.$modal.msgError('此身份证不能购买儿童票')
} else {
show.value = false
emit('addPerson', Object.assign(currParams, {
customerId: person.id,
name: person.name,
idcType: person.idcType,
idCard: person.idCard
}))
}
})
}
const submit = () => {
formRef.value.validate((valid) => {
if (valid) {
aadSceneCustomer(form.value).then(res => {
if (res.data == -100) {
proxy.$modal.msgError('人员信息已存在')
} else if (res.data == -101) {
proxy.$modal.msgError('实名认证未通过')
} else {
proxy.$modal.msgSuccess(language.value == 0 ? '添加成功' : 'successfully added')
showAdd.value = false
getData()
}
})
} else {
proxy.$modal.msgWarning(language.value == 0 ? '请完善信息' : 'Please complete the information')
}
})
}
let currParams
defineExpose({
open: (params) => {
currParams = params
personId.value = params.customerId
hasPersonIds.value = params.hasCustomerIds
show.value = true
}
})
</script>
<style scoped lang="scss">
</style>
......@@ -163,6 +163,55 @@
</el-row>
</div>
</div>
<div v-if="type == 'travel'">
<div class="leftboderTT">{{ language == 0 ? '购票信息' : 'Ticket Information' }}</div>
<div class="border-info mt20">
<h3>{{ matchForm.name }}</h3>
<el-row>
<el-col>
{{ language == 0 ? '地址' : 'Address' }}
{{ matchForm.address }}
</el-col>
<el-col>
{{
form?.extJson?.ticketType?.name
}}:{{ form?.extJson?.num }}{{ language == 0 ? '张' : 'Tickets' }}
</el-col>
<el-col>
{{
language == 0 ? '时间' : 'Time'
}}{{
dayjs(form?.extJson?.ticketDate?.ticketStart).format('YYYY-MM-DD')
}}{{
form.extJson?.ticketDate?.ticketType == 1 ? '~' + dayjs(form?.extJson?.ticketDate?.ticketEnd).format('YYYY-MM-DD') : ''
}}
</el-col>
<el-col v-if="form?.extJson?.ticketDate?.isCountSale==1">
{{
language == 0 ? `满${form?.extJson?.ticketDate.counts}人优惠` : `Discount for up to ${form?.extJson?.ticketDate.counts} people`
}}<span v-if="language == 0">{{ form?.extJson?.ticketDate.discount }}</span>
<span v-else>{{ (10 - form?.extJson?.ticketDate.discount) * 10 + '%' }}off</span>
</el-col>
<!-- <el-col>-->
<!-- {{-->
<!-- language == 0 ? '原价票' : 'Cost Ticket'-->
<!-- }}{{-->
<!-- language == 0 ? form?.extJson?.ticketDate?.price : form?.extJson?.ticketDate?.priceEn-->
<!-- }}{{ language == 0 ? '元' : 'Euro' }} x 1-->
<!-- {{ language == 0 ? '张' : 'Tickets' }}-->
<!-- </el-col>-->
<!-- <el-col>-->
<!-- {{-->
<!-- language == 0 ? '优惠票' : 'Concession Ticket'-->
<!-- }}{{-->
<!-- language == 0 ? form?.extJson?.ticketDate?.rebatePrice : form?.extJson?.ticketDate?.rebatePriceEn-->
<!-- }}{{ language == 0 ? '元' : 'Euro' }} x 1-->
<!-- {{ language == 0 ? '张' : 'Tickets' }}-->
<!-- </el-col>-->
</el-row>
</div>
</div>
<div class="leftboderTT">{{ language == 0 ? '预订信息' : 'Booking information' }}</div>
......@@ -328,7 +377,56 @@
</el-row>
</el-row>
<el-row v-if="type == 'travel'" style="width: 100%">
<el-row v-for="v in form.extJson?.message" style="width: 100%">
<el-col :lg="8" :md="12" :sm="12" :xs="24">
<div>{{ v.name }}
</div>
</el-col>
<el-col :lg="8" :md="12" :sm="12" :xs="24">
<!-- <div>{{-->
<!-- !v.discount ? language == 0 ? '原价票' : 'Cost Ticket' : language == 0 ? '优惠票' : 'Concession Ticket'-->
<!-- }}-->
<!-- </div>-->
<div>{{ v.idCard }}
</div>
</el-col>
<el-col :lg="8" :md="12" :sm="12" :xs="24">
<div v-if="language == 0 ">
{{ language == 0 ? '¥' : '€' }}
{{
!v.discount ? form.extJson?.ticketDate?.price : form.extJson?.ticketDate?.rebatePrice
}}
/{{ language == 0 ? '张' : 'Tickets' }}
</div>
<div v-else>
{{ language == 0 ? '¥' : '€' }}
{{
!v.discount ? form.extJson?.ticketDate?.priceEn : form.extJson?.ticketDate?.rebatePriceEn
}}
/{{ language == 0 ? '张' : 'Tickets' }}
</div>
</el-col>
</el-row>
<el-row style="width: 100%">
<el-col :lg="8" :md="12" :sm="12" :xs="24">
<div>{{
language == 0 ? '购票数量' : 'Number of tickets purchased'
}}{{ form.num }}{{ language == 0 ? '张' : 'Tickets' }}
</div>
</el-col>
<el-col :lg="8" :md="12" :sm="12" :xs="24">{{
language == 0 ? '联系方式' : 'Contact Information'
}}{{ form.phone }}
</el-col>
<el-col :lg="8" :md="12" :sm="12" :xs="24">
{{ language == 0 ? '共计' : 'total' }}:{{
language == 0 ? '¥' : '€'
}}{{ Number(totalFee).toFixed(2) }}
</el-col>
</el-row>
</el-row>
</div>
<el-row align="middle" justify="space-between">
......
<template>
<div>
<div class="banner">
<h2>{{ language==0?'旅游服务':'Travel Service' }}</h2>
</div>
<div class="box">
<div class="searchBar">
<el-input :placeholder="language==0?'请输入关键字搜索':'Search'" v-model="query.name" class="no-border">
</el-input>
<el-button size="large" type="primary" class="btn-lineG" icon="search" @click="getList">
{{ language==0?'搜索':'Search' }}</el-button>
<div>
<div class="banner">
<h2>{{ language==0?'旅游服务':'Travel Service' }}</h2>
</div>
<div class="box">
<div class="searchBar">
<el-input v-model="query.name" :placeholder="language==0?'请输入关键字搜索':'Search'" class="no-border" />
<el-button size="large" type="primary" class="btn-lineG" icon="search" @click="getList">
{{ language==0?'搜索':'Search' }}</el-button>
</div>
</div>
</div>
<div class="box" v-loading="loading">
<el-row :gutter="20">
<el-col :lg="24" :md="24" :sm="24" :xs="24" :xl="24" v-for="(h,index) in list" class="mb20">
<el-card @click="goDetail(h)">
<!-- 酒店列表-->
<el-row class="hotel" align="middle" :gutter="20">
<el-col :span="6">
<div class="imgbox">
<img class="w100" :src="fillImgUrl(h.photos?.split(',')[0])"/>
</div>
</el-col>
<el-col :span="12">
<h3 class="esp">{{h.name}}</h3>
<div class="starBox">
<img v-for="i in Number(h.starLevel||0)" src="@/assets/booking/star.png">
</div>
<div class="tagbox esp">
<span v-for="(t,index) in h.label?.split(',')" v-show="index<4">{{t}}</span>
<a v-show="h.label?.split(',').length>4">{{ language==0?'更多':'MORE' }} ></a>
</div>
<p class="esp addr mt20">
<el-icon size="16" style="position: relative;top: 2px" color="#929AA0"><LocationFilled /></el-icon>
{{h.address}}
</p>
</el-col>
<el-col :span="4" class="text-right">
<div class="price">{{ language==0?'¥':'€' }}<span>{{ h.price }}</span>
<i v-if="language==0"></i>
</div>
<el-button class="btn-lineG w200px" round type="primary" >{{ language==0?'立即预订':'Select' }}</el-button>
</el-col>
</el-row>
</el-card>
</el-col>
</el-row>
<el-empty v-show="!loading&&list.length==0" :image="`/img/order_no.png`" :image-size="228" description="" />
<div style="height: 50px"></div>
<div v-loading="loading" class="box">
<el-row :gutter="20">
<el-col
v-for="(h,index) in list" :lg="24" :md="24" :sm="24" :xs="24"
:xl="24" class="mb20"
>
<el-card>
<!-- 酒店列表-->
<el-row class="hotel" align="middle" :gutter="20">
<el-col :span="6">
<div class="imgbox">
<img class="w100" :src="fillImgUrl(h.photos?.split(',')[0])">
</div>
</el-col>
<el-col :span="12">
<h3 class="esp">{{ h.name }}</h3>
<div class="starBox">
<img v-for="i in Number(h.rank||0)" src="@/assets/booking/star.png">
</div>
<p class="esp addr mt20">
<el-icon size="16" style="position: relative;top: 2px" color="#929AA0">
<Clock />
</el-icon>
<span class="ml5">{{ language == 0 ? '开园时间' : 'Opening Time' }}{{ h.startTime }}{{ h.workTime }}</span>
</p>
<p class="esp addr mt20">
<el-icon size="16" style="position: relative;top: 2px" color="#929AA0"><LocationFilled /></el-icon>
{{ h.address }}
</p>
</el-col>
<el-col :span="4" class="text-right">
<div class="price">{{ language==0?'¥':'€' }}<span>{{ h.price }}</span>
<i v-if="language==0"></i>
</div>
<el-button class="btn-lineG w200px" round type="primary" @click="goDetail(h)">{{ language==0?'立即预订':'Select' }}</el-button>
</el-col>
</el-row>
</el-card>
</el-col>
</el-row>
<el-empty v-show="!loading&&list.length==0" :image="`/img/order_no.png`" :image-size="228" description="" />
<div style="height: 50px" />
</div>
</div>
</div>
</template>
<script setup>
import {onMounted} from "@vue/runtime-core"
import * as booking from "@/apiPc/booking"
import {useRouter,useRoute} from "vue-router";
import {useStorage} from "@vueuse/core/index";
import useUserStore from "@/store/modules/user";
const router = useRouter()
const route = useRoute()
const user = useUserStore().user
const useStore = useUserStore
const language= useStorage('language',0)
const query = ref({
name:''
})
const cptId = ref('')
const list = ref([])
const loading = ref(false)
onMounted(()=>{
query.value.activityId = route.params.cptId
getList()
})
import { onMounted } from '@vue/runtime-core'
import * as booking from '@/apiPc/booking'
import { useRouter, useRoute } from 'vue-router'
import { useStorage } from '@vueuse/core/index'
import useUserStore from '@/store/modules/user'
function getList() {
loading.value = true
booking.getHotelList(query.value).then(res=>{
list.value = res.rows
loading.value = false
console.log(list.value)
const router = useRouter()
const route = useRoute()
const user = useUserStore().user
const useStore = useUserStore
const language = useStorage('language', 0)
const query = ref({
name: ''
})
const cptId = ref('')
const list = ref([])
const loading = ref(false)
onMounted(() => {
query.value.activityId = route.params.cptId
getList()
})
}).catch(e=>{
loading.value = false
})
function getList() {
loading.value = true
booking.getScenicList(query.value).then(res => {
list.value = res.rows
loading.value = false
console.log(list.value)
}).catch(e => {
loading.value = false
})
}
function goDetail(item) {
if (!user) {
useStore().setVisitor()
return
}
function goDetail(item) {
if(!user){
useStore().setVisitor()
return
router.push({
name: 'travelDetail',
params: {
scenicId: item.scenicId
},
query: {
lasId: item.id
}
router.push({
name:'travelDetail',
params:{
hotelId:item.hotelId,
},
query:{
id:item.id
}
})
}
})
}
</script>
<style scoped lang="scss">
......
......@@ -81,8 +81,8 @@ export default defineConfig(({ mode, command }) => {
rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '')
},
'/dev-api': {
// target: 'http://192.168.1.118:8081/',
target: 'http://192.168.1.253:8081',
target: 'http://192.168.1.118:8081/',
// target: 'http://192.168.1.253:8081',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
// target: 'https://wdsfwuxicenter.com/stage-api/',
changeOrigin: true,
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!