Browse Source

修复已知问题

master^2
科技小王子 6 months ago
parent
commit
c2b28eb8e1
  1. 2
      api/shop/shopCart/model/index.ts
  2. 2
      api/system/company/model/index.ts
  3. 34
      components/CompanyList.vue
  4. 2
      composables/configState.ts
  5. 4
      nuxt.config.ts
  6. 4
      pages/components/Flash.vue
  7. 53
      pages/item/components/PageBanner.vue
  8. 32
      pages/item/index.vue
  9. 34
      pages/product/components/CardList.vue
  10. 32
      pages/product/create/index.vue
  11. 7
      pages/templates/components/CardList.vue
  12. 9
      pages/user/components/Order.vue

2
api/shop/shopCart/model/index.ts

@ -57,6 +57,8 @@ export interface ShopCartParam extends PageParam {
}
export interface MyCart {
appName?: string,
domain?: string,
num?: number,
type?: number;
payType?: number,

2
api/system/company/model/index.ts

@ -10,6 +10,7 @@ export interface Company {
companyId?: number;
type?: number;
menuId?: number;
appName?: string;
shortName?: string;
companyName?: string;
companyType?: number;
@ -55,6 +56,7 @@ export interface Company {
userId?: number;
official?: boolean;
price?: number;
deliveryMethod?: number;
chargingMethod?: number;
planId?: number;
sortNumber?: number;

34
components/CompanyList.vue

@ -32,22 +32,24 @@
<el-avatar size="small" :src="item.companyLogo" />
<span class="text-gray-400 line-clamp-1 pr-2">{{ item.companyName }}</span>
</el-space>
<template v-if="item.isBuy">
<el-button v-if="item.installed" @click.stop="openSpmUrl(`https://${item.domain}`,item,item.companyId,true)">控制台</el-button>
<el-button v-else type="success">立即开通</el-button>
</template>
<template v-else>
<el-button type="warning" v-if="item.price" @click.stop="openSpmUrl(`/product/create`,item,item.companyId,true)">
<div class="flex items-center">
<span>{{ item.price * 0.1 }}</span>
<span v-if="item.chargingMethod == 2">/</span>
<span v-if="item.chargingMethod == 3">/</span>
<span v-if="item.chargingMethod == 4">/</span>
</div>
</el-button>
<el-button v-else type="success" @click.stop="openSpmUrl(`/product/create`,item,item.companyId,true)">立即开通
</el-button>
</template>
<el-button type="warning" @click.stop="openSpmUrl(`/product/create`,item,item.companyId,true)">立即开通
</el-button>
<!-- <template v-if="item.isBuy">-->
<!-- <el-button v-if="item.installed" @click.stop="openSpmUrl(`https://${item.domain}`,item,item.companyId,true)">控制台</el-button>-->
<!-- <el-button v-else type="success">立即开通</el-button>-->
<!-- </template>-->
<!-- <template v-else>-->
<!-- <el-button type="warning" v-if="item.price" @click.stop="openSpmUrl(`/product/create`,item,item.companyId,true)">-->
<!-- <div class="flex items-center">-->
<!-- <span>{{ item.price * 0.1 }}</span>-->
<!-- <span v-if="item.chargingMethod == 2">/</span>-->
<!-- <span v-if="item.chargingMethod == 3">/</span>-->
<!-- <span v-if="item.chargingMethod == 4">/</span>-->
<!-- </div>-->
<!-- </el-button>-->
<!-- <el-button v-else type="success" @click.stop="openSpmUrl(`/product/create`,item,item.companyId,true)">立即开通-->
<!-- </el-button>-->
<!-- </template>-->
</div>
</div>
</el-card>

2
composables/configState.ts

@ -75,6 +75,8 @@ export const useShowLogin = () => useState('showLogin',() => false)
// 购物车状态
export const useCart = () => useState<MyCart>('cart', () => {
return {
appName: '',
domain: '',
num: 1,
type: 1,
payType: 102,

4
nuxt.config.ts

@ -33,10 +33,10 @@ export default defineNuxtConfig({
public: {
// 开发环境配置
// tenantId: '5',
// apiServer: 'http://127.0.0.1:30000/api',
apiServer: 'http://127.0.0.1:30000/api',
// 生产环境
apiServer: 'https://common-api.websoft.top/api',
// apiServer: 'https://common-api.websoft.top/api',
globalTitle: '网宿软件',
domain: 'websoft.top'
},

4
pages/components/Flash.vue

@ -98,8 +98,8 @@
<div class="mt-10 flex flex-wrap gap-x-6 gap-y-3 justify-center">
<div class="flex flex-col gap-4">
<div class="flex items-center">
<el-button size="large" type="primary" v-if="!token" :icon="ElIconArrowRight" @click="openSpmUrl(`/passport/login`)">立即开始</el-button>
<el-button size="large" type="primary" v-else :icon="ElIconArrowRight" @click="loginAdminByToken">进入控制台</el-button>
<el-button size="large" type="primary" :icon="ElIconArrowRight" @click="openSpmUrl(`/product/create`, {},10297,true)">立即开始</el-button>
<!-- <el-button size="large" type="primary" v-else :icon="ElIconArrowRight" @click="loginAdminByToken">进入控制台</el-button>-->
<el-button size="large" type="success" :icon="ElIconDownload" @click="openSpmUrl(`http://git.gxwebsoft.com/free`, {},0,true)">源码下载</el-button>
<el-button size="large" type="danger" @click="openSpmUrl(`https://admin.websoft.top`, {},123)">商业版演示</el-button>
</div>

53
pages/item/components/PageBanner.vue

@ -63,32 +63,33 @@
<!-- <el-button v-else type="success" @click.stop="openSpmUrl(`/product/create`,form,form.companyId,true)">立即开通-->
<!-- </el-button>-->
<!-- </template>-->
<el-button type="primary" @click.stop="openSpmUrl(`https://${form.domain}`,form,form.companyId,true)">进入控制台</el-button>
<el-button @click="openSpmUrl(`/ask`,form,form.companyId,true)">产品文档</el-button>
<template v-for="(item,index) in form.links" :key="index">
<div v-if="item.qrcode">
<el-popover
placement="top-start"
:width="200"
trigger="hover"
>
<template #default>
<div class=" p-2 flex justify-center">
<el-image :src="item.qrcode" :size="160"/>
</div>
</template>
<template #reference>
<el-button :icon="ElIconFullScreen">{{ item.type }}</el-button>
</template>
</el-popover>
</div>
<el-button
v-else
@click="openSpmUrl(`${item.domain}`,item,item.tenantId,true)"
>
{{ item.type }}
</el-button>
</template>
<el-button type="warning" @click.stop="openSpmUrl(`/product/create`,form,form.companyId,true)">立即开通</el-button>
<el-button @click.stop="openSpmUrl(`https://${form.domain}`,form,form.companyId,true)">产品控制台</el-button>
<el-button @click="openSpmUrl(`/ask`,form,form.companyId,true)">帮助文档</el-button>
<!-- <template v-for="(item,index) in form.links" :key="index">-->
<!-- <div v-if="item.qrcode">-->
<!-- <el-popover-->
<!-- placement="top-start"-->
<!-- :width="200"-->
<!-- trigger="hover"-->
<!-- >-->
<!-- <template #default>-->
<!-- <div class=" p-2 flex justify-center">-->
<!-- <el-image :src="item.qrcode" :size="160"/>-->
<!-- </div>-->
<!-- </template>-->
<!-- <template #reference>-->
<!-- <el-button :icon="ElIconFullScreen">{{ item.type }}</el-button>-->
<!-- </template>-->
<!-- </el-popover>-->
<!-- </div>-->
<!-- <el-button-->
<!-- v-else-->
<!-- @click="openSpmUrl(`${item.domain}`,item,item.tenantId,true)"-->
<!-- >-->
<!-- {{ item.type }}-->
<!-- </el-button>-->
<!-- </template>-->
</el-space>
</div>
</div>

32
pages/item/index.vue

@ -12,34 +12,30 @@
</div>
</template>
<el-descriptions title="应用参数" :column="2" border>
<el-descriptions-item label="租户ID">{{form.tenantId}}</el-descriptions-item>
<el-descriptions-item label="插件ID">{{form.menuId || '-'}}</el-descriptions-item>
<el-descriptions-item label="名称">{{form.tenantName}}</el-descriptions-item>
<el-descriptions-item label="控制台"><a class="cursor-pointer" @click="openUrl(`https://${form.domain}`)">{{form.domain}}</a></el-descriptions-item>
<!-- <el-descriptions-item label="租户ID">{{form.tenantId}}</el-descriptions-item>-->
<!-- <el-descriptions-item label="插件ID">{{form.menuId || '-'}}</el-descriptions-item>-->
<el-descriptions-item :span="2" label="应用名称">{{form.tenantName}}</el-descriptions-item>
<!-- <el-descriptions-item label="管理地址"><a class="cursor-pointer" @click="openUrl(`https://${form.domain}`)">{{form.domain}}</a></el-descriptions-item>-->
<el-descriptions-item v-for="(item,index) in form.parameters" :key="index" :label="item.name">{{ item.value }}</el-descriptions-item>
</el-descriptions>
<template v-if="form.gits && form.gits.length > 0">
<div class="h-[24px]"></div>
<el-descriptions title="代码仓库" :column="1" border>
<el-descriptions-item v-for="(item,index) in form.gits" :key="index" :label="item.title">
<el-input v-model="item.domain" readonly />
</el-descriptions-item>
</el-descriptions>
</template>
<template v-if="form.accounts && form.accounts.length > 0">
<div class="h-[24px]"></div>
<el-descriptions title="演示账号" :column="1" border>
<el-descriptions title="登录账号" :column="1" border>
<template v-for="(item,index) in form.accounts" :key="index">
<el-descriptions-item :label="item.type" v-if="item.account">
<el-space>
<span>{{ item.domain }}</span>
<span>{{ item.account }}</span>
<span>{{ item.password }}</span>
</el-space>
还没有账号? <el-button type="text" @click="openSpmUrl(`/passport/register`)">立即注册</el-button>
</el-descriptions-item>
</template>
</el-descriptions>
</template>
<template v-if="form.gits && form.gits.length > 0">
<div class="h-[24px]"></div>
<el-descriptions title="代码仓库" :column="1" border>
<el-descriptions-item v-for="(item,index) in form.gits" :key="index" :label="item.title">
<el-input v-model="item.domain" readonly />
</el-descriptions-item>
</el-descriptions>
</template>
<template v-if="form.content">
<div class="h-[24px]"></div>
<el-descriptions title="详细说明" />

34
pages/product/components/CardList.vue

@ -25,6 +25,8 @@
<el-avatar size="small" :src="item.companyLogo"/>
<span class="text-gray-400 line-clamp-1 pr-2">{{ item.companyName }}</span>
</el-space>
<el-button type="warning" @click.stop="openSpmUrl(`/product/create`,item,item.companyId,true)">立即开通
</el-button>
<!-- <el-button @click.stop="loginByToken(item)">控制台</el-button>-->
<!-- <el-button type="warning" v-if="item.price" @click.stop="openSpmUrl(`/product/create`,item,item.companyId,true)">-->
<!-- <div class="flex items-center">-->
@ -37,22 +39,22 @@
<!-- <el-button v-else type="success" @click.stop="openSpmUrl(`/product/create`,item,item.companyId,true)">立即开通-->
<!-- </el-button>-->
<template v-if="item.isBuy">
<el-button v-if="item.installed" @click.stop="openSpmUrl(`https://${item.domain}`,item,item.companyId,true)">进入控制台</el-button>
<el-button v-else type="success">立即开通</el-button>
</template>
<template v-else>
<el-button type="warning" v-if="item.price" @click.stop="openSpmUrl(`/product/create`,item,item.companyId,true)">
<div class="flex items-center">
<span>{{ item.price * 0.1 }}</span>
<span v-if="item.chargingMethod == 2">/</span>
<span v-if="item.chargingMethod == 3">/</span>
<span v-if="item.chargingMethod == 4">/</span>
</div>
</el-button>
<el-button v-else type="success" @click.stop="openSpmUrl(`/product/create`,item,item.companyId,true)">立即开通
</el-button>
</template>
<!-- <template v-if="item.isBuy">-->
<!-- <el-button v-if="item.installed" @click.stop="openSpmUrl(`https://${item.domain}`,item,item.companyId,true)">控制台</el-button>-->
<!-- <el-button v-else type="success">立即开通</el-button>-->
<!-- </template>-->
<!-- <template v-else>-->
<!-- <el-button type="warning" v-if="item.price" @click.stop="openSpmUrl(`/product/create`,item,item.companyId,true)">-->
<!-- <div class="flex items-center">-->
<!-- <span>{{ item.price * 0.1 }}</span>-->
<!-- <span v-if="item.chargingMethod == 2">/</span>-->
<!-- <span v-if="item.chargingMethod == 3">/</span>-->
<!-- <span v-if="item.chargingMethod == 4">/</span>-->
<!-- </div>-->
<!-- </el-button>-->
<!-- <el-button v-else type="success" @click.stop="openSpmUrl(`/product/create`,item,item.companyId,true)">立即开通-->
<!-- </el-button>-->
<!-- </template>-->
</div>
</div>
</el-card>

32
pages/product/create/index.vue

@ -13,20 +13,23 @@
</div>
</template>
<div class="flex flex-col">
<el-form-item label="类型">
<el-radio-button v-if="form.type == 0" border>完整应用</el-radio-button>
<el-radio-button v-if="form.type == 1" border>插件</el-radio-button>
<el-form-item label="应用名称">
<el-input v-model="cart.appName" style="width: 360px" placeholder="XXX公司官网"></el-input>
</el-form-item>
<!-- <el-form-item label="类型">-->
<!-- <el-radio-button v-if="form.type == 0" border>完整应用</el-radio-button>-->
<!-- <el-radio-button v-if="form.type == 1" border>插件</el-radio-button>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="交付方式" v-if="form.deliveryMethod">-->
<!-- <el-radio-button v-if="form.deliveryMethod == 1" border>SaaS交付</el-radio-button>-->
<!-- <el-radio-button v-if="form.deliveryMethod == 2" border>源码交付</el-radio-button>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="套餐版本">-->
<!-- <el-radio-group v-model="form.image">-->
<!-- <el-radio-button value="1" border>基础版</el-radio-button>-->
<!-- <el-radio-button value="2" border>标准版</el-radio-button>-->
<!-- <el-radio-button value="3" border>专业版</el-radio-button>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="交付方式" v-if="form.deliveryMethod">-->
<!-- <el-tag v-if="form.deliveryMethod == 1">SaaS交付</el-tag>-->
<!-- <el-tag v-if="form.deliveryMethod == 2">源码交付</el-tag>-->
<!-- </el-form-item>-->
<el-form-item label="购买时长" v-if="form.chargingMethod && form.chargingMethod > 1">
<el-radio-group v-model="cart.month" @change="handleChargingMethod">
@ -67,13 +70,14 @@
<el-card shadow="hover" class="mb-4">
<template #header>
<div class="card-header font-bold">
<span>配置清单</span>
<span>订单详情</span>
</div>
</template>
<el-descriptions :title="`订购产品`" :column="1" class="mb-4">
<el-descriptions-item label="插件ID:">{{ form.menuId }}</el-descriptions-item>
<el-descriptions-item label="产品类型:">{{ form.type == 1 ? '插件' : '完整应用' }}</el-descriptions-item>
<el-descriptions-item label="产品名称:">{{ form.shortName }}</el-descriptions-item>
<el-descriptions-item label="产品类型:">{{ form.type == 1 ? '插件' : '完整应用' }}</el-descriptions-item>
<el-descriptions-item label="交付方式:">{{ form.deliveryMethod == 1 ? 'SaaS交付' : '源码交付' }}</el-descriptions-item>
<el-descriptions-item label="应用名称:">{{ cart.appName }}</el-descriptions-item>
<!-- <el-descriptions-item label="套餐版本:">标准版</el-descriptions-item>-->
<el-descriptions-item label="购买数量:">{{ cart.num }} </el-descriptions-item>
<el-descriptions-item label="购买时长:">{{ cart.month }} 个月</el-descriptions-item>
@ -167,6 +171,7 @@ const {form, assignFields} = useFormData<Company>({
companyId: undefined,
menuId: undefined,
type: undefined,
appName: undefined,
shortName: undefined,
companyName: undefined,
companyType: undefined,
@ -209,6 +214,7 @@ const {form, assignFields} = useFormData<Company>({
status: undefined,
userId: undefined,
official: undefined,
deliveryMethod: undefined,
chargingMethod: undefined,
price: undefined,
planId: undefined,
@ -376,10 +382,12 @@ const onDone = () => {
body: cart.value
}).then(res => {
if(res.code == 0){
ElMessage.success(res.message);
ElMessage.success('购买成功');
visible.value = !visible.value;
setTimeout(() => {
navigateTo(`/user/order`)
},500)
}
if(res.code == 1){
ElMessage.error(res.message);
}

7
pages/templates/components/CardList.vue

@ -3,7 +3,7 @@
<el-row :gutter="24" class="flex">
<template v-for="(item,index) in list" :key="index">
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb-5 min-w-xs">
<el-card shadow="hover" :body-style="{ padding: '0px' }" class="hover:bg-gray-50 cursor-pointer" @click="openSpmUrl(`/item`, item,item.companyId,true)">
<el-card shadow="hover" :body-style="{ padding: '0px' }" class="hover:bg-gray-50 cursor-pointer">
<el-image
:src="item.image"
:fit="fit" :lazy="true" class="w-full md:h-[150px] h-[199px] cursor-pointer bg-gray-50"/>
@ -17,10 +17,7 @@
<div class="text-gray-500 line-clamp-2">{{ item.comments }}</div>
</div>
<div class="button-group flex justify-between items-center mt-3">
<el-space class="flex items-end">
<el-avatar size="small" :src="item.companyLogo" />
<span class="text-gray-400 line-clamp-1 pr-2">{{ item.companyName }}</span>
</el-space>
<el-button class="w-full" @click="openSpmUrl(`https://${item.tenantId}.wsdns.cn`,item,item.companyId,true)">预览</el-button>
</div>
</div>
</el-card>

9
pages/user/components/Order.vue

@ -2,10 +2,14 @@
<el-table :data="tableData">
<el-table-column prop="orderId" label="订单号" />
<el-table-column prop="comments" label="产品名称" />
<el-table-column prop="payPrice" label="订单金额" />
<el-table-column prop="payPrice" label="订单金额(元)" />
<el-table-column prop="month" label="购买时长(月)" />
<el-table-column prop="appName" label="应用名称" />
<el-table-column prop="createTime" label="下单时间" />
<el-table-column prop="action" label="操作" />
<el-table-column prop="action" label="操作">
<template #default="scope">
<el-button @click="openSpmUrl(`https://${scope.row.tenantId}.websoft.top`,form,scope.row.tenantId,true)">控制台</el-button></template>
</el-table-column>
</el-table>
</template>
<script setup lang="ts">
@ -32,6 +36,7 @@ const {data: response} = await useServerRequest<ApiResult<PageResult<OrderGoods>
})
if(response.value?.data){
tableData.value = response.value.data.list;
console.log(tableData.value,'tableData')
}
</script>

Loading…
Cancel
Save