提交 7798190a authored 作者: matian's avatar matian

feat:代码更新

上级 8a65949a
VITE_LOGIN_URL=https://login.ezijing.com/auth/login/index
VITE_SHARE_URL=https://accounts.ezijing.com
VITE_LOGIN_URL=https://login.ezijing.com/auth/login/index
VITE_SHARE_URL=https://accounts.ezijing.com
VITE_LOGIN_URL=https://login2.ezijing.com/auth/login/index
VITE_SHARE_URL=https://accounts.ezijing.com
......@@ -11,6 +11,7 @@
"clipboard": "^2.0.8",
"element-ui": "^2.15.6",
"qrcode.vue": "^1.7.0",
"qs": "^6.10.3",
"query-string": "^7.0.1",
"vant": "^2.12.44",
"vue": "^2.6.14",
......@@ -2180,7 +2181,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2"
......@@ -3440,8 +3440,7 @@
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"node_modules/functional-red-black-tree": {
"version": "1.0.1",
......@@ -3462,7 +3461,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
......@@ -3583,7 +3581,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.1"
},
......@@ -3634,7 +3631,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
"dev": true,
"engines": {
"node": ">= 0.4"
},
......@@ -4498,7 +4494,6 @@
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
......@@ -4997,10 +4992,9 @@
}
},
"node_modules/qs": {
"version": "6.10.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
"integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
"dev": true,
"version": "6.10.3",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
"integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
"dependencies": {
"side-channel": "^1.0.4"
},
......@@ -5338,7 +5332,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
......@@ -8067,7 +8060,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"dev": true,
"requires": {
"function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2"
......@@ -9026,8 +9018,7 @@
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"functional-red-black-tree": {
"version": "1.0.1",
......@@ -9045,7 +9036,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
"dev": true,
"requires": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
......@@ -9139,7 +9129,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
"requires": {
"function-bind": "^1.1.1"
}
......@@ -9176,8 +9165,7 @@
"has-symbols": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
"dev": true
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
},
"has-tostringtag": {
"version": "1.0.0",
......@@ -9849,8 +9837,7 @@
"object-inspect": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
"dev": true
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg=="
},
"object-keys": {
"version": "1.1.1",
......@@ -10223,10 +10210,9 @@
"requires": {}
},
"qs": {
"version": "6.10.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
"integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
"dev": true,
"version": "6.10.3",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
"integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
"requires": {
"side-channel": "^1.0.4"
}
......@@ -10487,7 +10473,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"dev": true,
"requires": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
......
......@@ -14,6 +14,7 @@
"clipboard": "^2.0.8",
"element-ui": "^2.15.6",
"qrcode.vue": "^1.7.0",
"qs": "^6.10.3",
"query-string": "^7.0.1",
"vant": "^2.12.44",
"vue": "^2.6.14",
......
......@@ -27,3 +27,6 @@ export function uploadFile(data) {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
export function getAllSetting() {
return httpRequest.get('/api/highway/v1/util/common-map')
}
......@@ -4,3 +4,27 @@ import httpRequest from '@/utils/axios'
export function getUser() {
return httpRequest.get('/api/passport/account/get-user-info')
}
// 获取活动列表
export function getActivityList(params) {
return httpRequest.get('/api/highway/v1/activity/list', { params })
}
// 获取活动详情
export function getActivityDetail(params) {
return httpRequest.get('/api/highway/v1/activity/view', { params })
}
// 保存步骤信息
export function saveStepInfo(data) {
return httpRequest.post('/api/highway/v1/activity/step', data)
}
// 保存步骤信息
export function getPayInfo(data) {
return httpRequest.post('/api/highway/v1/activity/qr', data)
}
// 支付状态查询
export function getPayStatus(params) {
return httpRequest.get('/api/highway/v1/activity/pay-status', { params })
}
// 支付状态查询
export function getOrderList(params) {
return httpRequest.get('/api/highway/v1/activity/order', { params })
}
<template>
<div>
<van-nav-bar title="标题" left-text="返回" left-arrow fixed @click-left="onClickLeft">
<div class="main_header">
<van-nav-bar fixed :title="title" left-arrow @click-left="onClickLeft">
<template #right>
<van-icon name="contact" size="28" @click="onClickRight" />
</template>
......@@ -10,10 +10,20 @@
<script>
export default {
props: {
title: {
type: String,
default: ''
},
callBack: {
type: Boolean,
default: false
}
},
methods: {
// 首页返回按钮
onClickLeft() {
history.go(-1)
this.callBack ? this.$emit('back') : history.back()
},
// 右侧按钮 个人中心
onClickRight() {
......@@ -33,4 +43,9 @@ export default {
::v-deep .van-icon-contact {
color: #000;
}
.main_header {
position: fixed;
top: 0;
z-index: 2000;
}
</style>
......@@ -2,37 +2,51 @@
<div class="main">
<!-- 展示页面 -->
<div class="show_content">
<!-- <div class="show_content_img"> -->
<img
class="show_content_img"
src="https://img1.baidu.com/it/u=2404515989,4194507540&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500"
alt=""
/>
<!-- </div> -->
<div class="show_content_btn">报名填写</div>
<img class="show_content_img" :src="data.desc" />
<div class="show_content_btn" @click="handleSubmit">{{ data.title }}</div>
</div>
</div>
</template>
<script>
export default {}
export default {
props: {
stepList: { type: Array },
data: { type: Object },
// eslint-disable-next-line vue/require-prop-type-constructor
stepIndex: 0
},
methods: {
handleSubmit() {
const lastorder = this.stepList[this.stepList.length - 1].order
if (lastorder === this.data.order) {
this.$router.push('/')
} else {
this.$emit('next')
}
}
},
mounted() {
window.localStorage.setItem('stepForm', this.formList)
}
}
</script>
<style lang="scss" scoped>
.main {
background: #f7f7f7;
.show_content {
padding: 0.21rem 0.3rem 3.13rem 0.3rem;
.show_content_img {
margin-top: 0.84rem;
width: 6.9rem;
height: 6.81rem;
// background: rgba(255, 255, 255, 0.39);
height: 10.1rem;
border: 1px solid #707070;
}
.show_content_btn {
width: 6.42rem;
height: 0.88rem;
margin: 1.24rem auto;
background: #b80140;
border-radius: 0.44rem;
font-weight: 500;
......@@ -40,6 +54,10 @@ export default {}
font-size: 0.3rem;
text-align: center;
line-height: 0.88rem;
position: fixed;
bottom: 0.4rem;
left: 50%;
transform: translateX(-50%);
}
}
}
......
<template>
<div class="main">
<!-- 头部标题 -->
<commonheader />
<commonheader @back="handlePrev" :callBack="true" :title="title" />
<div class="main_content">
<div class="main_content_list">
<van-checkbox-group v-model="selctOrderData" ref="checkboxGroup">
<div class="main_content_list_card" v-for="(item, index) in orderList" :key="index">
<!-- {{ stepOrderInfo }} -->
<van-checkbox-group v-model="selctOrderData" ref="checkboxGroup" @change="checkItem">
<div class="main_content_list_card" v-for="(item, index) in stepOrderInfo.list" :key="index">
<div class="card_header">
<van-checkbox :name="item"></van-checkbox>
<span class="card_header_title">{{ item.title }}</span>
<van-checkbox :name="item" :disabled="item.pay_record.pay_status === '1'"></van-checkbox>
<span class="card_header_title">{{ stepName }}</span>
</div>
<div class="card_con">
<p>{{ item.desc }}</p>
<p>{{ item.name }} {{ item.mobile }}</p>
</div>
<div class="card_fotter">
<div class="card_fotter_left">
<span class="price">¥</span>
<span class="price_num">{{ item.price }}<span class="price_num">.00</span></span>
<span class="price_num">{{ stepOrderInfo.pay_price }}<span class="price_num"></span></span>
</div>
<div class="card_fotter_left card_fotter_right">
<span class="price">单位已优惠</span>
<span class="price">¥</span>
<span class="price_num">{{ item.price }}<span class="price_num">.00</span></span>
<span class="price_num">{{
(Number(stepOrderInfo.pay_price).toFixed(2) - Number(item.pay_record.pay_amount).toFixed(2)).toFixed(
2
)
}}</span>
</div>
</div>
</div>
</van-checkbox-group>
</div>
</div>
<van-submit-bar :price="totalPrice" button-text="提交订单" :disabled="!selctOrderData.length" @submit="onSubmit">
<div class="main_footer">
<van-checkbox v-model="isAll" @click="checkAll">全选</van-checkbox>
</van-submit-bar>
<div class="main_footer_total">
<div class="main_footer_total_top"></div>
<div class="main_footer_total_top">
<div class="total_text">合计:</div>
<div class="total_sign">¥</div>
<div class="price">{{ totalPrice }}.00</div>
</div>
<div class="main_footer_total_bottom">
<div class="company_yh">单位已优惠</div>
<div class="company_sign">¥</div>
<div class="company_yh">{{ totalCompanyPrice.toFixed(2) }}</div>
</div>
</div>
<van-button round @click="handlePrev" class="prev_btn">上一页</van-button>
<van-button round :disabled="!selctOrderData.length" @click="onSubmit" class="pay_btn">去支付</van-button>
</div>
</div>
</template>
<script>
import { getActivityDetail } from '../api'
import Commonheader from '../components/Commonheader.vue'
export default {
components: { Commonheader },
data() {
return {
title: '订单确认',
isAll: false,
numVsible: true,
orderList: [
{
id: 1,
title: '订单点的电大点啊点订单点的电大点啊点',
desc: '张三;1234456789;男;北京市;某某',
price: 10,
num: 1
},
{
id: 2,
title: '订单点的电大点啊点订单点的电大点啊点',
desc: '张三;1234456789;男;北京市;某某',
price: 20,
num: 1
},
{
id: 3,
title: '订单点的电大点啊点订单点的电大点啊点',
desc: '张三;1234456789;男;北京市;某某',
price: 30,
num: 1
},
{
id: 4,
title: '订单点的电大点啊点订单点的电大点啊点',
desc: '张三;1234456789;男;北京市;某某',
price: 40,
num: 1
}
],
payDetail: {},
selctOrderData: [] // 选中的数据
}
},
computed: {
totalPrice() {
return this.selctOrderData.map(item => item.price * 100 * item.num).reduce((pre, nex) => (pre += nex), 0)
return this.selctOrderData.map(item => Number(item.pay_record.pay_amount)).reduce((pre, nex) => (pre += nex), 0)
},
totalCompanyPrice() {
return this.selctOrderData
.map(item => Number(this.stepOrderInfo.pay_price) - Number(item.pay_record.pay_amount))
.reduce((pre, nex) => (pre += nex), 0)
},
stepOrderInfo() {
return this.$route.query.stepOrderInfo || this.$route.query.orderList
},
stepName() {
return JSON.parse(window.localStorage.getItem('detailList')).activity.name
}
},
mounted() {
console.log(this.$route.query.orderList)
console.log(JSON.parse(window.localStorage.getItem('stepOrderInfo')))
// this.getActivityDetail()
},
methods: {
onClickLeft() {
history.go(-1)
// getActivityDetail() {
// const params = { id: this.$route.query.orderList.list[0].activity_id }
// getActivityDetail(params).then(res => {
// console.log(res)
// // this.stepOrderInfo = res.data
// })
// },
checkItem() {
if (this.selctOrderData.length === this.stepOrderInfo.list.length) {
this.isAll = true
} else {
this.isAll = false
}
},
handlePrev() {
this.$router.push({
path: '/SignMainPage',
query: {
currentIndex: window.localStorage.getItem('stepIndex'),
isShowSkip: '1'
}
})
},
checkAll() {
this.$refs.checkboxGroup.toggleAll(this.isAll)
},
onSubmit() {
console.log(this.selctOrderData)
this.$router.push({
path: '/PayDetail'
})
if (this.selctOrderData.lenth && this.totalPrice === 0) {
this.$router.push('/')
} else {
this.$router.push({
path: '/PayDetail',
query: {
pay_record_ids: this.selctOrderData.map(item => item.pay_record.id).toString(),
join_rand: this.$route.query.orderList.join_rand
}
})
}
},
onClickRight() {}
}
......@@ -148,11 +186,12 @@ export default {
align-items: center;
justify-items: center;
.price {
font-size: 0.14rem;
font-size: 0.2rem;
color: #b80140;
font-weight: 300;
}
.price_num {
font-size: 0.2rem;
font-size: 0.28rem;
font-weight: bold;
color: #b80140;
}
......@@ -165,5 +204,72 @@ export default {
}
}
}
.main_footer {
width: 100%;
height: 1.48rem;
background: #fff;
position: fixed;
bottom: 0;
display: flex;
justify-content: space-around;
align-items: center;
.main_footer_total {
// background: #000;
// width: 1.7rem;
height: 0.8rem;
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
.main_footer_total_top {
display: flex;
.total_text {
font-size: 0.24rem;
font-weight: 400;
color: #333333;
}
.total_sign {
font-size: 0.2rem;
color: #b80140;
}
.price {
font-size: 0.2rem;
font-weight: bold;
color: #b80140;
}
}
.main_footer_total_bottom {
display: flex;
.company_yh {
font-size: 0.24rem;
font-weight: 400;
color: #b80140;
}
.company_sign {
font-size: 0.2rem;
color: #b80140;
}
}
}
.prev_btn {
background: #f5f5f5;
font-size: 0.3rem;
font-weight: 500;
color: #333333;
}
.pay_btn {
background: #b80140;
font-size: 0.3rem;
font-weight: 500;
color: #ffffff;
}
}
}
::v-deep .van-checkbox__label {
font-size: 0.28rem;
font-weight: 400;
color: #999999;
}
</style>
<template>
<div class="main">
<commonheader />
<commonheader :title="title" />
<div class="main_content">
<div class="main_content_desc">1.打开支付宝扫码二维码支付,或长按保存二维码打开支付宝支付。</div>
<div class="main_content_qdCode">
<qrcode-vue :value="value" size="180" ref="qrcode" />
<qrcode-vue :value="payDetail.url" size="180" ref="qrcode" />
</div>
<div class="main_content_link">
2.
......@@ -22,7 +22,7 @@
>
复制链接在浏览器打开去支付
</div>
<div id="value">{{ value }}</div>
<div id="value">{{ payDetail.url }}</div>
</div>
</div>
</template>
......@@ -31,6 +31,7 @@
import QrcodeVue from 'qrcode.vue'
import Clipboard from 'clipboard'
import { Toast } from 'vant'
import { getPayInfo, getPayStatus } from '../api'
import commonheader from '../components/Commonheader.vue'
export default {
......@@ -40,9 +41,17 @@ export default {
},
data() {
return {
title: '订单支付',
qrcodeUrl: '',
value: 'http://www.baidu.com',
clipboard: null
clipboard: null,
status: '', // 支付状态
payDetail: {},
join_rand: ''
}
},
computed: {
pay_record_ids() {
return this.$route.query.pay_record_ids
}
},
methods: {
......@@ -65,11 +74,49 @@ export default {
Toast.fail('复制失败,请重新复制!')
this.clipboard.destroy()
})
},
getPayStatus() {
const params = {
order_id: this.payDetail.order_id
}
getPayStatus(params).then(res => {
if (res.code === 0) {
this.status = res.data.status
if (this.status === 2) {
this.$route.push('/')
}
}
})
},
getPayDetail() {
if (JSON.parse(window.localStorage.getItem('detailList'))?.other_fill_in?.list.length) {
this.join_rand = JSON.parse(
window.localStorage.getItem('detailList')
).other_fill_in.list[0].pay_records.join_rand
} else if (JSON.parse(window.localStorage.getItem('detailList'))?.self_fill_in?.list.length) {
this.join_rand = JSON.parse(
window.localStorage.getItem('detailList')
).self_fill_in.list[0].pay_records.join_rand
} else {
this.join_rand = this.$route.query.join_rand || ''
}
const params = {
pay_record_ids: this.pay_record_ids,
join_rand: this.join_rand
}
getPayInfo(params).then(res => {
this.payDetail = res.data
setTimeout(this.getPayStatus(), 1000)
})
}
},
mounted() {
this.getPayDetail()
this.getQrcodeUrl()
this.initClipboard()
if (this.payDetail.order_id) {
setTimeout(this.getPayStatus(), 1000)
}
}
}
</script>
......
<template>
<div class="main">
<!-- 头部标题 -->
<!-- <van-nav-bar title="标题" left-text="返回" left-arrow fixed>
<template #right>
<van-icon name="contact" size="28" />
</template>
</van-nav-bar> -->
<commonheader />
<commonheader :title="title" />
<!-- 我的订单 -->
<div class="main_content">
<div class="main_content_order" @click="handleOrder">
<div class="main_content_order_text">我的订单</div>
<van-icon name="arrow" size="14" />
</div>
<div class="main_content_footer">退出登录</div>
<div class="main_content_footer" @click="handleLogout">退出登录</div>
</div>
</div>
</template>
......@@ -22,11 +17,19 @@
import Commonheader from '../components/Commonheader.vue'
export default {
components: { Commonheader },
data() {
return {
title: '个人中心'
}
},
methods: {
handleOrder() {
this.$router.push({
path: '/myOrder'
})
},
handleLogout() {
window.location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(window.location.origin)}`
}
}
}
......@@ -51,7 +54,7 @@ export default {
align-items: center;
padding: 0 0.25rem 0 0.3rem;
box-sizing: border-box;
margin-top: .21rem;
margin-top: 0.21rem;
.main_content_order_text {
font-size: 0.28rem;
font-weight: 400;
......@@ -69,7 +72,8 @@ export default {
color: #333333;
line-height: 0.88rem;
text-align: center;
margin-top: 6.11rem;
position: fixed;
bottom: 4.37rem;
}
}
}
......
<template>
<div class="main">
<!-- 头部标题 -->
<!-- <van-nav-bar title="标题" left-text="返回" left-arrow fixed>
<template #right>
<van-icon name="contact" size="28" />
</template>
</van-nav-bar> -->
<commonheader />
<img-show v-show="isShowStep" />
<sign-form v-show="isShowStep" />
<commonheader @back="handlePrev" :callBack="true" :title="title" />
<!-- 展示 -->
<img-show :stepList="stepList" :data="setpItem" @prev="handlePrev" @next="handleNext" v-if="setpItem.type === 1" />
<!-- 表单 -->
<sign-form
:data="setpItem"
:stepList="stepList"
:stepIndex="stepIndex"
@prev="handlePrev"
@next="handleNext"
v-if="setpItem.type === 2"
:isShowSkip="isShowSkip"
/>
</div>
</template>
......@@ -17,14 +21,44 @@ import SignForm from '../components/SignForm.vue'
import ImgShow from '../components/ImgShow.vue'
import Commonheader from '../components/Commonheader.vue'
export default {
components: {
SignForm,
ImgShow,
Commonheader
},
components: { SignForm, ImgShow, Commonheader },
data() {
return {
isShowStep: true
title: '报名主页面',
stepIndex: 0,
isShowSkip: ''
}
},
computed: {
stepItemid() {
return JSON.parse(window.localStorage.getItem('detailList')).other_fill_in.id
},
stepList() {
return JSON.parse(window.localStorage.getItem('stepList'))
},
setpItem() {
return this.stepList[this.stepIndex]
}
},
mounted() {
// this.stepIndex = window.localStorage.getItem('stepIndex')
if (this.$route.query.isShowSkip) {
this.isShowSkip = this.$route.query.isShowSkip
} else {
this.isShowSkip = ''
}
},
methods: {
handlePrev() {
// this.stepIndex--
if (this.stepIndex <= 0) {
this.$router.push('/')
} else {
this.stepIndex--
}
},
handleNext() {
this.stepIndex++
}
}
}
......
import Vue from 'vue'
import Vuex from 'vuex'
import { getUser, logout } from '@/api/base'
import { getUser, logout, getAllSetting } from '@/api/base'
Vue.use(Vuex)
export default new Vuex.Store({
const store = new Vuex.Store({
state: {
user: {}
user: {},
allSettings: {},
stepIndex: 0,
detailList: {},
stepResult: [],
stepForm: [],
stepOrderInfo: {}
},
mutations: {
setUser(state, user) {
state.user = user
},
setAllSettings(state, allSettings) {
state.allSettings = allSettings
},
saveStepIndex(state, stepIndex) {
state.stepIndex = stepIndex
},
setDetailList(state, detailList) {
state.detailList = detailList
},
setStepResult(state, stepResult) {
state.stepResult = stepResult
},
setFormList(state, stepForm) {
state.stepForm = stepForm
},
setStepOrderInfo(state, stepOrderInfo) {
state.stepOrderInfo = stepOrderInfo
}
},
actions: {
......@@ -43,6 +67,14 @@ export default new Vuex.Store({
return false
})
return isLogin
},
// 获取所有项目列表
getAllSetting({ commit }) {
getAllSetting().then(res => {
commit('setAllSettings', res.data)
})
}
}
})
store.dispatch('getAllSetting')
export default store
import axios from 'axios'
import queryString from 'query-string'
// import queryString from 'query-string'
import { Message } from 'element-ui'
import router from '../router'
import store from '../store'
import qs from 'qs'
const httpRequest = axios.create({
timeout: 60000,
......@@ -11,8 +14,23 @@ const httpRequest = axios.create({
// 请求拦截
httpRequest.interceptors.request.use(
function (config) {
// 设置项目
config.headers.tenant = store.state.activeProject?.tag
config.params = Object.assign({ project_prefix: store.state.activeProject?.tag }, config.params)
config.data = Object.assign({ project_prefix: store.state.activeProject?.tag }, config.data)
// 默认参数
const defaultHeaders = {
timestamp: parseInt(Date.now() / 1000),
nonce: Math.random().toString(36).slice(-8),
'secret-id': 'ezijing_20200410',
'secret-key': 'THIxz9hfbMDD5pil',
signature: 'UG7wBenexQhiuD2wpCwuxkU0jqcj006d'
}
config.headers = Object.assign(config.headers, defaultHeaders)
if (config.headers['Content-Type'] === 'application/x-www-form-urlencoded') {
config.data = queryString.stringify(config.data)
config.data = qs.stringify(config.data)
}
if (config.headers['Content-Type'] === 'multipart/form-data') {
const formData = new window.FormData()
......@@ -33,6 +51,20 @@ httpRequest.interceptors.response.use(
function (response) {
const { data } = response
if (data.code) {
// 未登录
if (data.code === 4001) {
window.location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(window.location.href)}`
}
// 没有权限
if (data.code === 4008 || data.code === 5018) {
router.push('/401')
}
// 题库分类修改
if (data.code === 403) {
Message({ message: '没有操作权限', type: 'error' })
return data
}
Message({ message: data.message, type: 'error' })
return Promise.reject(data)
}
return data
......@@ -46,11 +78,10 @@ httpRequest.interceptors.response.use(
} else {
Message.error(message || error.response.data)
}
return Promise.reject(error.response)
} else {
console.log(error)
}
return Promise.reject(error)
return Promise.reject(error.response || error)
}
)
......
import store from '@/store'
export default async function (to, from, next) {
if (to.meta.requiredLogin) {
const isLogin = store.state.user.id || (await store.dispatch('checkLogin'))
if (!isLogin) {
window.location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(window.location.href)}`
}
// if (to.meta.requiredLogin) {
// } else {
// next()
// }
const isLogin = store.state.user.id || (await store.dispatch('checkLogin'))
if (!isLogin) {
window.location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(window.location.href)}`
} else {
next()
}
......
const allFormList = [
{ type: 'input', name: '姓名', placeholder: '请输入姓名', required: true, key: 'name', value: '', enable_edit: true },
{
type: 'input',
name: '电话',
placeholder: '请输入电话',
required: true,
key: 'mobile',
value: '',
enable_edit: true
},
{
type: 'radio',
name: '性别',
key: 'gender',
required: true,
optionlist: [
{ id: '0', option: '未知' },
{ id: '1', option: '男' },
{ id: '2', option: '女' }
]
},
{
type: 'input',
name: '邮箱',
placeholder: '请输入邮箱',
required: true,
key: 'email',
value: '',
enable_edit: true
},
{
type: 'input',
name: '公司',
placeholder: '请输入公司',
required: true,
key: 'company',
value: '',
enable_edit: true
},
{
type: 'input',
name: '职位',
placeholder: '请输入职位',
required: true,
key: 'position',
value: '',
enable_edit: true
},
{
type: 'input',
name: '身份证号码',
placeholder: '请输入身份证号码',
required: true,
key: 'id_number',
value: '',
enable_edit: true
},
{
type: 'input',
name: '编号',
placeholder: '请输入编号',
required: true,
key: 'number',
value: '',
enable_edit: true
},
{
type: 'input',
name: '国籍',
placeholder: '请输入国籍',
required: true,
key: 'country',
value: '',
enable_edit: true
},
{
type: 'input',
name: '省份',
placeholder: '请输入省份',
required: true,
key: 'provinces',
value: '',
enable_edit: true
},
{ type: 'input', name: '城市', placeholder: '请输入城市', required: true, key: 'city', value: '', enable_edit: true },
{
type: 'input',
name: '地址',
placeholder: '请输入地址',
required: true,
key: 'address',
value: '',
enable_edit: true
},
{
type: 'input',
name: '固话',
placeholder: '请输入固话',
required: true,
key: 'fixed_telephone',
value: '',
enable_edit: true
},
{
type: 'input',
name: '行业',
placeholder: '请输入行业',
required: true,
key: 'industry',
value: '',
enable_edit: true
},
{ type: 'input', name: 'QQ', placeholder: '请输入QQ', required: true, key: 'qq', value: '', enable_edit: true },
{
type: 'input',
name: '微信',
placeholder: '请输入微信',
required: true,
key: 'wechat',
value: '',
enable_edit: true
},
{ type: 'input', name: '钉钉', placeholder: '请输入钉钉', required: true, key: 'ding', value: '', enable_edit: true },
{
type: 'input',
name: '微博',
placeholder: '请输入微博',
required: true,
key: 'weibo',
value: '',
enable_edit: true
},
{
type: 'select',
name: '早餐',
key: 'breakfast',
placeholder: '请选择早餐',
rue: '',
required: true,
optionList: ['有', '无'],
showPicker: false
},
{
type: 'select',
name: '房型',
key: 'room_type',
placeholder: '请选择房型',
required: true,
value: '',
enable_edit: true,
optionList: ['温馨大床房', '豪华标准间', '豪华套房'],
showPicker: false
},
{
type: 'datetime',
name: '入住时间',
key: 'check_in_time',
placeholder: '请选择入住时间',
required: true,
value: '',
enable_edit: true,
optionList: [],
showPicker: false
},
{
type: 'datetime',
name: '离店时间',
key: 'check_out_time',
placeholder: '请选择离店时间',
required: true,
value: '',
enable_edit: true,
optionList: [],
showPicker: false
}
]
export default allFormList
......@@ -14,7 +14,12 @@ export default defineConfig({
cert: fs.readFileSync(path.join(__dirname, './https/dev.ezijing.com.pem'))
},
proxy: {
'/api': 'https://project-api.ezijing.com'
'/api/highway': {
target: 'http://localhost-activity-frontend.ezijing.com',
changeOrigin: true,
rewrite: path => path.replace(/^\/api\/highway/, '')
},
'/api': 'https://app.ezijing.com'
}
},
resolve: {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论