Commit 367818a0 authored by 罗超's avatar 罗超

订单支付

parent 2a27b914
......@@ -73,6 +73,9 @@ page {
line-height: 1.375rem;
letter-spacing: 0.00714em;
}
.text-success{
color: #20af6e !important;
}
/* ::-webkit-scrollbar {
display: none;
width: 0 !important;
......
<template>
<div class="items-center row">
<img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1713433759000_282.png"
style="height: 33px" @click="forwardProduct" class="cusor-pointer"/>
<div class="primary-link-button q-ml-lg cusor-pointer no-select">创建设计</div>
<el-dropdown trigger="click">
<el-avatar
:size="size"
......@@ -108,10 +111,10 @@ import { openNewBlank } from "@/utils/common";
const props = defineProps({
size: {
type: Number,
default: 40,
default: 33,
},
});
const forwardProduct = () => router.push('/p/show')
const router = useRouter()
const useUser = useUserStore();
const { userInfo } = storeToRefs(useUser);
......
......@@ -5,6 +5,12 @@ export interface CustomerTheme{
color:string,
desc:string
}
export interface MemberRights{
name:string,
value:string,
sub?:string,
range:('F'|'P'|'E')[]
}
export const FREE_USER_THEME:CustomerTheme = {name:'FREE',bg:'linear-gradient(270deg, #94A3C0 0%, #99A3B8 100%)',color:'#94a3c0', desc:'免费版·个人'}
export const VIP_USER_THEME:CustomerTheme = {name:'VIP',bg:'linear-gradient(270deg, #4165E2 0%, #5276F5 100%)',color:'#dd9b38', desc:'会员版·个人'}
......@@ -13,4 +19,32 @@ export const TME_USER_THEME:CustomerTheme = {name:'TME',bg:'linear-gradient(270d
export const CustomerThemeConfig:CustomerTheme[] = [FREE_USER_THEME,VIP_USER_THEME,ENT_USER_THEME,TME_USER_THEME]
export const USER_DEFAULT_HEADER = 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1713839840000_239.png'
\ No newline at end of file
export const USER_DEFAULT_HEADER = 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1713839840000_239.png'
const ALL_MEMBER_RIGHTS:MemberRights[]=[
{name:'创建行程数量',value:'1',sub:'(无法上传自有模板)',range:['F']},
{name:'云盘空间',value:'100MB',range:['F']},
{name:'POI图库',value:'10次',range:['F']},
{name:'PDF水印',value:'系统标识',range:['F']},
{name:'图片水印',value:'系统标识',range:['F']},
{name:'VIP模板',value:'no',range:['F']},
{name:'创建行程数量',value:'无限制',range:['E','P']},
{name:'云盘空间',value:'10GB',range:['P']},
{name:'企业共享空间',value:'500GB',range:['E']},
{name:'POI图库',value:'无限制',range:['E','P']},
{name:'PDF水印',value:'可去除',range:['E','P']},
{name:'图片水印',value:'可去除',range:['E','P']},
{name:'VIP模板',value:'yes',range:['E','P']},
{name:'历史版本记录',value:'yes',range:['E','P']},
{name:'POI资料卡',value:'yes',range:['E','P']},
{name:'行程快速构建工具',value:'yes',range:['E','P']},
{name:'地图插件',value:'yes',range:['E','P']},
{name:'自动报价工具',value:'yes',range:['E','P']},
{name:'私有模板管理',value:'yes',range:['E','P']},
{name:'文件找回',value:'yes',range:['E','P']},
{name:'内部共享行程',value:'yes',range:['E']}
]
export const FreeMemberRight = ALL_MEMBER_RIGHTS.filter(x=>x.range.includes('F'))
export const PersonMemberRight = ALL_MEMBER_RIGHTS.filter(x=>x.range.includes('P'))
export const EntMemberRight = ALL_MEMBER_RIGHTS.filter(x=>x.range.includes('E'))
\ No newline at end of file
......@@ -218,6 +218,13 @@ const routes: RouteRecordRaw[] = [
},
]
},
{
path: '/p/show',
component: () => import('@/views/Product/Show.vue'),
meta:{
title:'产品介绍'
}
},
{
path: '/:catchAll(.*)*',
component: () => import('@/views/ErrorNotFound.vue'),
......
......@@ -17,5 +17,15 @@ class OrderService{
let msg = {orderid}
return Api.Post("ppt_GetPPTOrderDetails",msg)
}
static async CreateTempOrderPaymentAsync(parameters:any):Promise<HttpResponse>{
let msg = parameters
return Api.Post("ppt_SetPPTTemplateOrder",msg)
}
static async GetOrderPayStatusAsync(no:any):Promise<HttpResponse>{
let msg = {no}
return Api.Post("ppt_order_pay_status",msg)
}
}
export default OrderService;
\ No newline at end of file
......@@ -38,7 +38,7 @@ export const useMenuStore = defineStore('menu', {
if (!state.userMenu || state.userMenu.length==0) {
const userStore= useUserStore()
const userInfo = userStore.getUser
let userPermissions:MenuOwner[] = ['M']
let userPermissions:MenuOwner[] = ['F','*']
if(userInfo.it){
userPermissions.push('E')
......@@ -49,7 +49,7 @@ export const useMenuStore = defineStore('menu', {
if(userInfo.iv){
userPermissions.push('V')
}
if(userInfo.im){
if(userInfo.isTemplate){
userPermissions.push('M')
}
const findFreeMenu = menus.filter(x=>userPermissions.includes(x.owner))
......
......@@ -140,7 +140,7 @@
<template v-if="!userInfo.it">
<div class="row items-center">
<div class="text-info text-small col">未加入任何企业</div>
<el-button type="primary" @click="redicetTo('/space/cp')" link icon="officeBuilding">立即创建企业</el-button>
<el-button type="primary" @click="()=>orderVisible=true" link icon="officeBuilding">立即创建企业</el-button>
</div>
<el-divider />
<el-menu mode="vertical">
......@@ -148,7 +148,7 @@
<el-icon><Plus /></el-icon>
<span>加入企业</span>
</el-menu-item>
<el-menu-item index="2">
<el-menu-item index="2" v-if="userInfo.it && userInfo.ia">
<el-icon><Setting /></el-icon>
<span>设置</span>
</el-menu-item>
......@@ -163,6 +163,7 @@
</div>
</div>
</div>
<OrderReview v-if="orderVisible" :default-type="2" @close="()=>orderVisible=false"></OrderReview>
</template>
<script lang="ts" setup>
......@@ -175,9 +176,11 @@ import { openNewBlank } from "@/utils/common";
import { useSellTemplateStore } from "@/store";
import { useRouter } from "vue-router";
import { ref } from "vue";
import OrderReview from '@/views/components/Order/Review.vue'
const { userInfo } = storeToRefs(useUserStore());
const sellStore = useSellTemplateStore()
const orderVisible = ref(false)
const router = useRouter()
const isWorkspace = ref(true)
isWorkspace.value = !router.currentRoute.value.path.includes('/space/cp')
......
<template>
<div class="product column">
<div class=" bg-info row items-center" style="padding:10px 24px;">
<img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1713237911000_1.png"
style="height: 24px" class="cusor-pointer" @click="forwardSpace" />
<div class="col"></div>
<!-- <div class="primary-link-button q-ml-lg cusor-pointer">创建设计</div> -->
<UserCard :size="33"></UserCard>
</div>
<div class="col full-width">
<el-scrollbar class="full-width full-height">
<div class="title text-center">全新Travel Design 一站式协同行程设计平台</div>
<div class="row flex-center">
<div class="item">
<div class="top-box">
<div class="text-weight-bold" style="font-size: 1.25vw">免费版</div>
<div class="tag default">免费试用1个月</div>
<div class="text-weight-bolder text-dark" style="font-size: 2.39583vw;">
<span>¥0</span>
<span class="text-info text-small text-light q-ml-md">/人/年</span>
</div>
<div class="button">注册生效</div>
</div>
<div class="bottom-box">
<div class="content-item" v-for="(x,i) in free" :key="i">
<span>{{ x.name }}</span>
<span v-if="x.value=='no'"><IconClose :size="16" class="text-negative"></IconClose> </span>
<span v-else-if="x.value=='yes'"><IconCheck :size="16" class="text-success" /></span>
<span v-else><span class="text-grey-8" v-if="x.sub">{{ x.sub }}</span>{{ x.value }}</span>
</div>
</div>
</div>
<div class="item dark">
<div class="top-box" style="background: #3556F9;">
<div class="text-weight-bold" style="font-size: 1.25vw">个人专业版</div>
<div class="tag">可季度·半年·1年·2年</div>
<div class="text-weight-bolder" style="font-size: 2.39583vw;">
<span>¥49.9</span>
<span class="text-small text-light q-ml-md">/月起</span>
</div>
<div class="button opcatiy" @click="openOrderView(1)">立即购买</div>
</div>
<div class="bottom-box">
<div class="bottom-box">
<div class="content-item" v-for="(x,i) in person" :key="i">
<span>{{ x.name }}</span>
<span v-if="x.value=='no'"><IconClose :size="16" class="text-negative"></IconClose> </span>
<span v-if="x.value=='yes'"><IconCheck :size="16" class="text-success" /></span>
<span v-else><span class="text-grey-8" v-if="x.sub">{{ x.sub }}</span>{{ x.value }}</span>
</div>
</div>
</div>
</div>
<div class="item dark">
<div class="top-box" style="background: #581BDA;">
<div class="text-weight-bold" style="font-size: 1.25vw">企业/团队专业版</div>
<div class="tag">1年起购</div>
<div class="text-weight-bolder" style="font-size: 2.39583vw;">
<span>¥2999</span>
<span class="text-small text-light q-ml-md">/ 年起</span>
</div>
<div class="button opcatiy" @click="openOrderView(2)">立即购买</div>
</div>
<div class="bottom-box">
<div class="bottom-box">
<div class="content-item" v-for="(x,i) in ent" :key="i">
<span>{{ x.name }}</span>
<span v-if="x.value=='no'"><IconClose :size="16" class="text-negative"></IconClose> </span>
<span v-if="x.value=='yes'"><IconCheck :size="16" class="text-success" /></span>
<span v-else><span class="text-grey-8" v-if="x.sub">{{ x.sub }}</span>{{ x.value }}</span>
</div>
</div>
</div>
</div>
</div>
</el-scrollbar>
</div>
</div>
<OrderReview v-if="orderVisible" :default-type="showType" @close="()=>orderVisible=false"></OrderReview>
</template>
<script lang="ts" setup>
import { EntMemberRight, FreeMemberRight, PersonMemberRight } from '@/configs/customer'
import OrderReview from '@/views/components/Order/Review.vue'
import { ref } from 'vue'
import { useRouter } from 'vue-router'
const free = FreeMemberRight
const person = PersonMemberRight
const ent = EntMemberRight
const showType = ref(1)
const orderVisible = ref(false)
const router = useRouter()
const openOrderView = (t:number)=>{
showType.value=t
orderVisible.value=true
}
const forwardSpace = ()=> router.push('/space')
</script>
<style scoped>
.product {
width: 100vw;
height: 100vh;
background: url('https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1713929308000_541.png');
background-size: 100% 100%;
background-repeat: no-repeat;
}
.product .title{
font-weight: 800;
font-size: 2.0833vw;
color: #000000;
margin-top: 5.20833vw;
line-height: 1;
margin-bottom:4.323vw;
}
.product .item{
width: 21.1979vw;
box-shadow: 0px 0px 1.09375vw 0px rgba(140,171,241,0.27);
border-radius: 8px;
margin-right: 3.64583vw;
background: linear-gradient(0deg, #FFFFFF, #F3F7FF);
margin-bottom: 50px;
}
.product .item.dark{
color:#FFF;
background: linear-gradient(0deg, #F8FAFF, #E6EEFF);
box-shadow: 0px 0px 1.09375vw 0px rgba(140,171,241,0.27);
}
.product .item .bottom-box{
padding: 1.71875vw;
/* padding-top: 0; */
}
.product .item .top-box{
background: #FFFFFF;
border-radius: 8px;
padding: 1.71875vw;
box-shadow: 0px 0px 1.09375vw 0px rgba(140,171,241,0.27);
}
.product .item *{
line-height: 1;
}
.product .item:last-child{
margin-right: 0;
}
.product .item .tag{
padding:0 0.78125vw;
height: 1.5625vw;
font-size: 0.7291vw;
line-height: 1.5625vw;
background: #8CABF145;
color:#FFF;
margin-top: 0.7291vw;
margin-bottom: 2.9166vw;
display: inline-block;
border-radius: 0px 8px 8px 8px;
}
.product .item .tag.default{
background: #f6f7f9;
color: #000000;
}
.product .item .button{
height: 2.0833vw;
line-height: 2.0833vw;
background: #f6f7f9;
border-radius: 8px;
border: 1px solid #f6f7f9;
font-weight: 400;
font-size: 0.729166vw;
color: grey;
margin-top: 2.34375vw;
/* margin-bottom: 3.64583vw; */
cursor:not-allowed;
text-align: center;
user-select: none;
}
.product .item .button.opcatiy{
background: rgba(0,0,0,.1);
border: 1px solid rgba(255,255,255,.5);
color:#FFF;
cursor: pointer;
}
.product .item .content-item{
display: flex;
flex-direction: row;
justify-content: space-between;
font-size: 0.7291666vw;
margin-bottom: 1.0vw;
color: #000000;
}
.product .item .content-item:last-child{
margin: 0;
}
</style>
\ No newline at end of file
......@@ -7,9 +7,9 @@
模版管理与设置
</div>
<div class="col"></div>
<img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1713433759000_282.png"
<!-- <img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1713433759000_282.png"
style="height: 33px" />
<div class="primary-link-button q-ml-lg">创建设计</div>
<div class="primary-link-button q-ml-lg">创建设计</div> -->
<UserCard :size="33"></UserCard>
</div>
<div class="col row">
......
......@@ -2,14 +2,12 @@
<div class="window-height column">
<div class="user-center-header row items-center">
<img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1713237911000_1.png"
style="height: 24px" />
style="height: 24px" @click="forwardSpace" class="cusor-pointer" />
<div class="q-ml-lg text-weight-bold" style="font-size: 20px">
管理与设置
</div>
<div class="col"></div>
<img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1713433759000_282.png"
style="height: 33px" />
<div class="primary-link-button q-ml-lg">创建设计</div>
<UserCard :size="33"></UserCard>
</div>
<div class="col row">
......@@ -42,6 +40,7 @@ const activeIndex = ref(0)
const forwardSpace = () => router.push('/space')
watch(() => router.currentRoute.value.path, (toPath) => {
menus.value = useMenu.getUserMenu
if(!menus.value) return
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment