更新演示站控制台页面

This commit is contained in:
hooray 2022-02-04 23:45:05 +08:00
parent af9eb0cb06
commit 47e6fdacef
2 changed files with 148 additions and 221 deletions

View File

@ -21,20 +21,6 @@
<span class="title">下载<br>基础版</span>
</div>
</div>
<el-dialog v-model="discoveryInfo.dialogVisible" title="One-step-admin 正式发布" width="600px" center :close-on-click-modal="false">
<div style="text-align: center; margin-bottom: 20px;">One-step-admin 是一款<b>干啥都快人一步</b> Vue 中后台管理系统框架</div>
<el-carousel trigger="click" indicator-position="none" arrow="always" :autoplay="false" height="330px">
<el-carousel-item v-for="item in discoveryInfo.data" :key="item">
<img :src="item.img" style="cursor: pointer; width: 100%; margin: auto;" @click="discoveryInfo.imageVisible = true; discoveryInfo.imagePreview = [item.img]">
<div style="text-align: center; margin-top: 20px;">{{ item.text }}</div>
</el-carousel-item>
</el-carousel>
<el-image-viewer v-if="discoveryInfo.imageVisible" :url-list="discoveryInfo.imagePreview" @close="discoveryInfo.imageVisible = false" />
<template #footer>
<el-button @click="discoveryInfo.dialogVisible = false">不用了</el-button>
<el-button type="primary" @click="open(`https://hooray.${locationOrigin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin/`)">去看看</el-button>
</template>
</el-dialog>
</template>
<script setup>
@ -47,19 +33,6 @@ setTimeout(() => {
isActived.value = false
}, 5000)
const discoveryInfo = ref({
dialogVisible: true,
imageVisible: false,
imagePreview: [],
data: [
{ img: `https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin/intro-1.gif`, text: '摆脱传统后台框架路由跳转的交互,将每个模块以窗口的形式展示在同一个界面中,让使用人员可以做到跨模块的多线操作。' },
{ img: `https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin/intro-2.gif`, text: '窗口默认宽度为 800px ,可以在项目中进行调整,也可以通过最大化按钮将窗口最大化展示,以便展示更多信息。' },
{ img: `https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin/intro-3.gif`, text: '提供的预览界面可以帮助使用人员快速定位到需要操作的窗口。' },
{ img: `https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin/intro-4.gif`, text: '可勾选 2 到 4 个窗口平均分布在页面中,专注于所勾选的窗口进行操作。' },
{ img: `https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin/intro-5.gif`, text: '快速调整窗口的展示顺序。' }
]
})
onMounted(() => {
proxy.$notify({
type: 'success',

View File

@ -14,156 +14,129 @@
</page-header>
<el-row :gutter="20" style="margin: 0 10px;">
<el-col :lg="8">
<page-main title="框架信息" style="margin: 0 0 20px;">
<div class="fa-info">
<img :src="`https://hooray.${locationOrigin.includes('gitee') ? 'gitee' : 'github'}.io/fantastic-admin/logo.png`" style="width: 150px;">
<h1>Fantastic-admin</h1>
<el-table :data="diff" row-key="prop" size="mini" border stripe>
<el-table-column label="基础版" align="center">
<template #default="scope">
<div v-for="(item, index) in scope.row.basic" :key="index">{{ item }}</div>
</template>
</el-table-column>
<el-table-column label="专业版" align="center">
<template #default="scope">
<div v-for="(item, index) in scope.row.pro" :key="index">{{ item }}</div>
</template>
</el-table-column>
</el-table>
<page-main style="margin: 0;">
<div class="ecology vue">
<div class="main">
<img src="https://v3.cn.vuejs.org/logo.png" style="width: 30%;">
<h1>Fantastic-template</h1>
<h2>一款开箱即用的 Vue 项目模版</h2>
<el-button plain icon="el-icon-link" @click="open(`https://hooray.${locationOrigin.includes('gitee') ? 'gitee' : 'github'}.io/fantastic-template`)">访问官网</el-button>
</div>
<el-divider border-style="dashed" />
<ul>
<li v-for="item in fantasticTemplateInfo.feature" :key="item">{{ item }}</li>
</ul>
</div>
</page-main>
</el-col>
<el-col :lg="16">
<el-row :gutter="20" style="margin: 0 -10px 20px;">
<el-col :md="4">
<div class="icon-box icon-box-1" @click="onIconClick('收藏')">
<el-icon><el-icon-star /></el-icon>
<div class="title">收藏</div>
<el-col :lg="8">
<page-main style="margin: 0;">
<div class="ecology fa">
<div class="main">
<img :src="`https://hooray.${locationOrigin.includes('gitee') ? 'gitee' : 'github'}.io/fantastic-admin/logo.png`" style="width: 30%;">
<h1>Fantastic-admin</h1>
<h2>一款开箱即用的 Vue 中后台管理系统框架</h2>
<el-button plain icon="el-icon-link" @click="open(`https://hooray.${locationOrigin.includes('gitee') ? 'gitee' : 'github'}.io/fantastic-admin`)">访问官网</el-button>
</div>
</el-col>
<el-col :md="4">
<div class="icon-box icon-box-2" @click="onIconClick('通知')">
<el-icon><el-icon-bell /></el-icon>
<div class="title">通知</div>
</div>
</el-col>
<el-col :md="4">
<div class="icon-box icon-box-3" @click="onIconClick('图集')">
<el-icon><el-icon-picture /></el-icon>
<div class="title">图集</div>
</div>
</el-col>
<el-col :md="4">
<div class="icon-box icon-box-4" @click="onIconClick('拍照')">
<el-icon><el-icon-camera /></el-icon>
<div class="title">拍照</div>
</div>
</el-col>
<el-col :md="4">
<div class="icon-box icon-box-5" @click="onIconClick('视频')">
<el-icon><el-icon-video-camera /></el-icon>
<div class="title">视频</div>
</div>
</el-col>
<el-col :md="4">
<div class="icon-box icon-box-6" @click="onIconClick('购物')">
<el-icon><el-icon-goods /></el-icon>
<div class="title">购物</div>
</div>
</el-col>
</el-row>
<page-main title="应用场景" style="margin: 0 0 20px;">
<div class="question">
<ol class="answer">
<li><span>没有前端开发人员的小型公司</span>据了解有些小型公司没有前端开发人员而这些公司在开发中后台系统的时候直接要求后端开发人员来进行开发工作所以借助 Vue 的易学习易上手特性再加上本框架的加持可以让后端开发人员能在短时间内转型成为全栈开发</li>
<li><span>前端开发人员不足的中小型公司</span>根据招聘网站统计几乎所有公司都缺前端其中有很大一部分中小型公司标配只有1-2名前端开发人员而这些公司在开发中后台系统的时候如果能有一套现成的中后台框架系统不仅能提高项目开发效率同时还大大减轻前端开发人员工作压力</li>
<li><span>项目型公司</span>特点为项目多周期短甲方对页面布局和主题风格有绝对话语权而通过专业版提供的 20 套页面布局和 6 款主题风格共计 120 可应对绝大部分甲方需求并且可自定义扩展主题风格的样式实现高度定制化</li>
<li><span>产品型公司</span>产品型公司最担心的就是产品开发中代码不可控的因素本框架除了提供完善的开发文档和代码注释外针对专业版用户还提供一对一的技术支持确保开发人员尽可能理解整套框架源码的方方面面为产品保驾护航</li>
<li><span>接私活的个人开发者</span>手里有一套可高度定制化的中后台框架什么项目都不用担心啦~</li>
</ol>
<el-divider border-style="dashed" />
<el-carousel trigger="click" indicator-position="none" :interval="5000" height="250px">
<el-carousel-item v-for="(item, index) in fantasticAdminInfo.data" :key="item">
<el-image :src="item" fit="cover" style="cursor: pointer; width: 100%; height: 250px; margin: auto;" @click="fantasticAdminInfo.imageVisible = true; fantasticAdminInfo.index = index" />
</el-carousel-item>
</el-carousel>
<el-image-viewer v-if="fantasticAdminInfo.imageVisible" :url-list="fantasticAdminInfo.data" :initial-index="fantasticAdminInfo.index" @close="fantasticAdminInfo.imageVisible = false" />
</div>
</page-main>
<page-main title="优势" style="margin: 0;">
<div class="question">
<ol class="answer">
<li><span>作者拥有10年+的前后端开发经验</span>部分框架的作者由于天然缺少后端开发经验可能会在设计框架的时候很少或者没有考虑后端的实现逻辑导致框架在实际使用中业务场景无法落地开发人员得通过修改源码自行实现业务</li>
<li><span>经历过数十个真实项目的打磨</span>没用在真实业务场景中使用过的框架都是纸飞机哪怕它提供的演示功能特别华丽而本框架在作者就职的公司已经稳定应用在电商直播OACRMERP等多个不同领域的中后台系统中</li>
<li><span>丰富的组件库</span>除了支持 ElementUI 自带的组件外框架还扩充了部分业务组件以及第三方插件借助以往的项目经验提供最佳实践方案方便开发人员直接使用</li>
<li><span>持续更新的业务应用静态页面</span>通过项目积累沉淀出数十个业务应用的静态页面做到开发人员拿来即可使用极大提升开发效率的同时还省去了产品和设计人员的工作</li>
<li><span>长期维护</span>无论是免费的基础版还是付费的专业版均提供长期维护区别在于基础版侧重于稳定性维护主要在修复 bug 不定期增加新特性专业版侧重于新特性开发在确保稳定的基础上会长期深挖中后台系统框架持续产出可落地的特性或开发规范</li>
</ol>
</el-col>
<el-col :lg="8">
<page-main style="margin: 0;">
<div class="ecology osa">
<div class="main">
<img :src="`https://hooray.${locationOrigin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin/logo.png`" style="width: 30%;">
<h1>One-step-admin</h1>
<h2>一款干啥都快人一步的 Vue 中后台系统框架</h2>
<el-button plain icon="el-icon-link" @click="open(`https://hooray.${locationOrigin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin`)">访问官网</el-button>
</div>
<el-divider border-style="dashed" />
<el-carousel trigger="click" indicator-position="none" :interval="5000" height="250px">
<el-carousel-item v-for="(item, index) in oneStepAdminInfo.data" :key="item">
<el-image :src="item" fit="cover" style="cursor: pointer; width: 100%; height: 250px; margin: auto;" @click="oneStepAdminInfo.imageVisible = true; oneStepAdminInfo.index = index" />
</el-carousel-item>
</el-carousel>
<el-image-viewer v-if="oneStepAdminInfo.imageVisible" :url-list="oneStepAdminInfo.data" :initial-index="oneStepAdminInfo.index" @close="oneStepAdminInfo.imageVisible = false" />
</div>
</page-main>
</el-col>
</el-row>
<page-main title="应用场景">
<div class="question">
<ol class="answer">
<li><span>没有前端开发人员的小型公司</span>据了解有些小型公司没有前端开发人员而这些公司在开发中后台系统的时候直接要求后端开发人员来进行开发工作所以借助 Vue 的易学习易上手特性再加上本框架的加持可以让后端开发人员能在短时间内转型成为全栈开发</li>
<li><span>前端开发人员不足的中小型公司</span>根据招聘网站统计几乎所有公司都缺前端其中有很大一部分中小型公司标配只有1-2名前端开发人员而这些公司在开发中后台系统的时候如果能有一套现成的中后台框架系统不仅能提高项目开发效率同时还大大减轻前端开发人员工作压力</li>
<li><span>项目型公司</span>特点为项目多周期短甲方对页面布局和主题风格有绝对话语权而通过专业版提供的布局和主题风格可应对绝大部分甲方需求并且可自定义扩展主题风格的样式实现高度定制化</li>
<li><span>产品型公司</span>产品型公司最担心的就是产品开发中代码不可控的因素本框架除了提供完善的开发文档和代码注释外作者还提供一对一的技术支持确保开发人员尽可能理解整套框架源码的方方面面为产品保驾护航</li>
<li><span>个人开发者</span>手里有一套可高度定制化的中后台框架什么项目都不用担心啦~</li>
</ol>
</div>
</page-main>
<page-main title="优势">
<div class="question">
<ol class="answer">
<li><span>作者拥有10年+的前后端开发经验</span>部分框架的作者由于缺少后端开发经验可能会在设计框架的时候很少或者没有考虑后端的实现逻辑导致框架在实际使用中业务场景无法落地开发人员得通过修改源码自行实现业务</li>
<li><span>经历过数十个真实项目的打磨</span>没用在真实业务场景中使用过的框架都是纸飞机哪怕它提供的演示功能特别华丽而本框架在作者就职的公司已经稳定应用在电商直播OACRMERP等多个不同领域的中后台系统中</li>
<li><span>丰富的组件库</span>除了支持 ElementUI / Element Plus 自带的组件外框架还扩充了部分业务组件以及第三方插件借助以往的项目经验提供最佳实践方案方便开发人员直接使用</li>
<li><span>持续更新的业务应用静态页面</span>通过项目积累沉淀出数十个业务应用的静态页面做到开发人员拿来即可使用极大提升开发效率的同时还省去了产品和设计人员的工作</li>
<li><span>长期维护</span>无论是免费的基础版还是付费的专业版均提供长期维护区别在于基础版侧重于稳定性维护主要在修复 bug 不定期增加新特性专业版侧重于新特性开发在确保稳定的基础上会长期深挖中后台系统框架持续产出可落地的特性或开发规范</li>
</ol>
</div>
</page-main>
</div>
</template>
<script>
export default {
data() {
return {
diff: [{
basic: [
'3 套页面布局',
'1 款主题风格',
'6 个侧边栏导航配置项',
'支持外链导航',
'支持全方位权限验证',
'10+ 个基础组件',
'提供少量扩展组件',
'支持 Mock 数据',
'团队代码规范',
'需保留作者版权信息'
],
pro: [
'20 套页面布局',
'6 款主题风格',
'10 个侧边栏导航配置项',
'支持外链导航',
'支持内嵌导航',
'支持 Tab 标签栏',
'支持全方位权限验证',
'10+ 个基础组件',
'提供完整扩展组件',
'支持国际化',
'支持 Mock 数据',
'支持错误日志上报',
'支持文件自动生成',
'提供业务应用静态页面(长期扩充)',
'团队代码规范',
'可自定义版权信息',
'提供一对一技术支持'
]
}],
type: 1
}
},
computed: {
locationOrigin: () => location.origin,
titlePrefix() {
let arr = []
switch (this.type) {
case 1: arr = ['今天', '昨天']; break
case 2: arr = ['本周', '上周']; break
case 3: arr = ['本月', '上月']; break
case 4: arr = ['今年', '去年']; break
}
return arr
}
},
methods: {
open(url) {
window.open(url, 'top')
},
onIconClick(val) {
this.$message({
message: `你点击了:${val}`,
type: 'info'
})
}
}
<script setup>
const locationOrigin = location.origin
function open(url) {
window.open(url, 'top')
}
const fantasticTemplateInfo = ref({
feature: [
'默认集成 vue-router 和 pinia',
'全局 SCSS 资源引入',
'全局组件自动注册',
'支持 SVG 图标CSS 精灵图自动合成',
'支持 mock 数据,可摆脱后端束缚独立开发',
'支持 gzip / brotli 优化项目体积,提高加载速度',
'结合 IDE 插件、ESlint 、stylelint 、Git 钩子,轻松实现团队代码规范'
]
})
const fantasticAdminInfo = ref({
imageVisible: false,
index: 0,
data: [
`https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/fantastic-admin/preview1.png`,
`https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/fantastic-admin/preview2.png`,
`https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/fantastic-admin/preview3.png`,
`https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/fantastic-admin/preview4.png`,
`https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/fantastic-admin/preview5.png`,
`https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/fantastic-admin/preview6.png`
]
})
const oneStepAdminInfo = ref({
imageVisible: false,
index: 0,
data: [
`https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin/preview1.png`,
`https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin/preview2.png`,
`https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin/preview3.png`,
`https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin/preview4.png`,
`https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin/preview5.png`,
`https://hooray.${location.origin.includes('gitee') ? 'gitee' : 'github'}.io/one-step-admin/preview6.png`
]
})
</script>
<style lang="scss" scoped>
@ -171,18 +144,52 @@ export default {
/* stylelint-disable-next-line property-no-vendor-prefix */
-webkit-text-emphasis-style: "❤";
}
.fa-info {
.ecology {
padding: 10px 0 0;
text-align: center;
h1 {
margin: 10px auto 20px;
&.vue {
h1 {
color: #41b883;
}
}
&.fa {
h1 {
color: #e60000;
}
}
&.osa {
h1 {
color: #67c23a;
}
}
.main {
text-align: center;
img {
display: block;
margin: 0 auto;
}
h1 {
margin: 10px auto 0;
text-align: center;
}
h2 {
font-size: 16px;
font-weight: normal;
color: #666;
text-align: center;
}
}
.el-carousel {
box-shadow: 0 0 5px 1px #ccc;
}
ul li {
line-height: 28px;
}
}
.question {
.answer {
margin: 20px 0 0;
padding-left: 20px;
font-size: 14px;
font-size: 16px;
color: #aaa;
li {
margin-bottom: 10px;
@ -197,57 +204,4 @@ export default {
}
}
}
.icon-box {
padding: 20px;
text-align: center;
background-color: #fff;
cursor: pointer;
transition: 0.2s;
&:hover {
color: #fff;
}
&-1 {
color: #ffc069;
&:hover {
background-color: #ffc069;
}
}
&-2 {
color: #b37feb;
&:hover {
background-color: #b37feb;
}
}
&-3 {
color: #95de64;
&:hover {
background-color: #95de64;
}
}
&-4 {
color: #ff85c0;
&:hover {
background-color: #ff85c0;
}
}
&-5 {
color: #ff9c6e;
&:hover {
background-color: #ff9c6e;
}
}
&-6 {
color: #282c34;
&:hover {
background-color: #282c34;
}
}
i {
font-size: 24px;
}
.title {
margin-top: 5px;
font-size: 14px;
}
}
</style>