no message
This commit is contained in:
parent
d292889c68
commit
70aef09c3c
@ -2,7 +2,7 @@
|
|||||||
NODE_ENV = production
|
NODE_ENV = production
|
||||||
|
|
||||||
# 标题
|
# 标题
|
||||||
VUE_APP_TITLE = SCUI
|
VUE_APP_TITLE = Ansnid
|
||||||
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
VUE_APP_API_BASEURL = https://www.fastmock.site/mock/5039c4361c39a7e3252c5b55971f1bd3/api
|
VUE_APP_API_BASEURL = https://www.fastmock.site/mock/5039c4361c39a7e3252c5b55971f1bd3/api
|
@ -15,15 +15,15 @@
|
|||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h1>SCUI Admin</h1>
|
<h1>X-PHP Admin</h1>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## 介绍
|
## 介绍
|
||||||
SCUI 是一个中后台前端解决方案,基于VUE3和elementPlus实现。
|
X-PHP 是一个中后台前端解决方案,基于VUE3和elementPlus实现。
|
||||||
使用最新的前端技术栈,提供各类实用的组件方便在业务开发时的调用,并且持续性的提供丰富的业务模板帮助你快速搭建企业级中后台前端任务。
|
使用最新的前端技术栈,提供各类实用的组件方便在业务开发时的调用,并且持续性的提供丰富的业务模板帮助你快速搭建企业级中后台前端任务。
|
||||||
|
|
||||||
SCUI的宗旨是 让一切复杂的东西傻瓜化。
|
X-PHP的宗旨是 让一切复杂的东西傻瓜化。
|
||||||
|
|
||||||
![logo](https://lolicode.gitee.io/scui-doc/g_1.jpg)
|
![logo](https://lolicode.gitee.io/scui-doc/g_1.jpg)
|
||||||
|
|
||||||
|
@ -1,12 +1,3 @@
|
|||||||
<!--
|
|
||||||
* @Descripttion: scContextmenuItem组件
|
|
||||||
* @version: 1.3
|
|
||||||
* @Author: sakuya
|
|
||||||
* @Date: 2021年7月23日16:29:36
|
|
||||||
* @LastEditors: sakuya
|
|
||||||
* @LastEditTime: 2022年11月23日10:09:54
|
|
||||||
-->
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<hr v-if="divided">
|
<hr v-if="divided">
|
||||||
<li :class="disabled?'disabled':''" @click.stop="liClick" @mouseenter="openSubmenu($event)" @mouseleave="closeSubmenu($event)">
|
<li :class="disabled?'disabled':''" @click.stop="liClick" @mouseenter="openSubmenu($event)" @mouseleave="closeSubmenu($event)">
|
||||||
|
@ -1,12 +1,6 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Descripttion: 动态表单渲染器
|
* @Descripttion: 动态表单渲染器
|
||||||
* @version: 1.0
|
|
||||||
* @Author: sakuya
|
|
||||||
* @Date: 2021年9月22日09:26:25
|
|
||||||
* @LastEditors:
|
|
||||||
* @LastEditTime:
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<el-skeleton v-if="renderLoading || Object.keys(form).length==0" animated />
|
<el-skeleton v-if="renderLoading || Object.keys(form).length==0" animated />
|
||||||
<el-form v-else ref="form" :model="form" :label-width="config.labelWidth" :label-position="config.labelPosition" v-loading="loading" element-loading-text="Loading...">
|
<el-form v-else ref="form" :model="form" :label-width="config.labelWidth" :label-position="config.labelPosition" v-loading="loading" element-loading-text="Loading...">
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
//业务配置
|
//业务配置
|
||||||
//会合并至this.$config
|
//会合并至this.$config
|
||||||
//生产模式 public/config.js 同名key会覆盖这里的配置从而实现打包后的热更新
|
//生产模式 public/config.js 同名key会覆盖这里的配置从而实现打包后的热更新
|
||||||
//为避免和SCUI框架配置混淆建议添加前缀 MY_
|
|
||||||
//全局可使用 this.$config.MY_KEY 访问
|
//全局可使用 this.$config.MY_KEY 访问
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -110,7 +110,7 @@
|
|||||||
id: 3,
|
id: 3,
|
||||||
type: 'system',
|
type: 'system',
|
||||||
avatar: "img/logo.png",
|
avatar: "img/logo.png",
|
||||||
title: "感谢登录SCUI Admin",
|
title: "感谢登录Admin",
|
||||||
describe: "Vue 3.0 + Vue-Router 4.0 + ElementPlus + Axios 后台管理系统。",
|
describe: "Vue 3.0 + Vue-Router 4.0 + ElementPlus + Axios 后台管理系统。",
|
||||||
link: "https://gitee.com/lolicode/scui",
|
link: "https://gitee.com/lolicode/scui",
|
||||||
time: "2020年7月24日"
|
time: "2020年7月24日"
|
||||||
|
@ -20,7 +20,7 @@ export default (error, vm)=>{
|
|||||||
}
|
}
|
||||||
var errorName = errorMap[error.name] || "未知错误"
|
var errorName = errorMap[error.name] || "未知错误"
|
||||||
|
|
||||||
console.warn(`[SCUI error]: ${error}`);
|
console.warn(`[X-PHP ERROR]: ${error}`);
|
||||||
console.error(error);
|
console.error(error);
|
||||||
//throw error;
|
//throw error;
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ tool.crypto = {
|
|||||||
AES: {
|
AES: {
|
||||||
encrypt(data, secretKey, config={}){
|
encrypt(data, secretKey, config={}){
|
||||||
if(secretKey.length % 8 != 0){
|
if(secretKey.length % 8 != 0){
|
||||||
console.warn("[SCUI error]: 秘钥长度需为8的倍数,否则解密将会失败。")
|
console.warn("[X-PHP ERROR]: 秘钥长度需为8的倍数,否则解密将会失败。")
|
||||||
}
|
}
|
||||||
const result = CryptoJS.AES.encrypt(data, CryptoJS.enc.Utf8.parse(secretKey), {
|
const result = CryptoJS.AES.encrypt(data, CryptoJS.enc.Utf8.parse(secretKey), {
|
||||||
iv: CryptoJS.enc.Utf8.parse(config.iv || ""),
|
iv: CryptoJS.enc.Utf8.parse(config.iv || ""),
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<el-card shadow="hover" header="版本信息">
|
<el-card shadow="hover" header="版本信息">
|
||||||
<div style="height: 210px;text-align: center;">
|
<div style="height: 210px;text-align: center;">
|
||||||
<img src="@/assets/img/ver.svg" style="height:140px"/>
|
<img src="@/assets/img/ver.svg" style="height:140px"/>
|
||||||
<h2 style="margin-top: 15px;">SCUI {{$config.CORE_VER}}</h2>
|
<h2 style="margin-top: 15px;">X-PHP {{$config.CORE_VER}}</h2>
|
||||||
<p style="margin-top: 5px;">最新版本 {{ver}}</p>
|
<p style="margin-top: 5px;">最新版本 {{ver}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 20px;">
|
<div style="margin-top: 20px;">
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<div class="welcome">
|
<div class="welcome">
|
||||||
<div class="logo">
|
<div class="logo">
|
||||||
<img src="@/assets/img/logo.png">
|
<img src="@/assets/img/logo.png">
|
||||||
<h2>欢迎体验 SCUI</h2>
|
<h2>欢迎体验 X-PHP</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="tips">
|
<div class="tips">
|
||||||
<div class="tips-item">
|
<div class="tips-item">
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
<scEcharts height="100%" :option="logsChartOption"></scEcharts>
|
<scEcharts height="100%" :option="logsChartOption"></scEcharts>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main class="nopadding">
|
<el-main class="nopadding">
|
||||||
<scTable ref="table" :apiObj="apiObj" stripe highlightCurrentRow @row-click="rowClick">
|
<scTable ref="table" :data="data" stripe highlightCurrentRow @row-click="rowClick">
|
||||||
<el-table-column label="级别" prop="level" width="60">
|
<el-table-column label="级别" prop="level" width="60">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-icon v-if="scope.row.level=='error'" style="color: #F56C6C;"><el-icon-circle-close-filled /></el-icon>
|
<el-icon v-if="scope.row.level=='error'" style="color: #F56C6C;"><el-icon-circle-close-filled /></el-icon>
|
||||||
@ -118,6 +118,9 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
date: [],
|
date: [],
|
||||||
|
data: [
|
||||||
|
[{id:1}]
|
||||||
|
],
|
||||||
apiObj: this.$api.system.log.list,
|
apiObj: this.$api.system.log.list,
|
||||||
search: {
|
search: {
|
||||||
keyword: ""
|
keyword: ""
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<el-header style="height: auto;display: block;">
|
<el-header style="height: auto;display: block;">
|
||||||
<div class="user-info-top">
|
<div class="user-info-top">
|
||||||
<el-avatar :size="70" :src="user.avatar"></el-avatar>
|
<el-avatar :size="70" :src="user.avatar"></el-avatar>
|
||||||
<h2>{{ user.username }}</h2>
|
<h2>{{ user.nickname || user.username }}</h2>
|
||||||
<p><el-tag effect="dark" round size="large" disable-transitions>{{ user.role }}</el-tag></p>
|
<p><el-tag effect="dark" round size="large" disable-transitions>{{ user.role }}</el-tag></p>
|
||||||
</div>
|
</div>
|
||||||
</el-header>
|
</el-header>
|
||||||
@ -26,7 +26,7 @@
|
|||||||
<el-main>
|
<el-main>
|
||||||
<Suspense>
|
<Suspense>
|
||||||
<template #default>
|
<template #default>
|
||||||
<component :is="page"/>
|
<component :data="user" :is="page"/>
|
||||||
</template>
|
</template>
|
||||||
<template #fallback>
|
<template #fallback>
|
||||||
<el-skeleton :rows="3" />
|
<el-skeleton :rows="3" />
|
||||||
@ -48,7 +48,6 @@
|
|||||||
password: defineAsyncComponent(() => import('./user/password')),
|
password: defineAsyncComponent(() => import('./user/password')),
|
||||||
space: defineAsyncComponent(() => import('./user/space')),
|
space: defineAsyncComponent(() => import('./user/space')),
|
||||||
logs: defineAsyncComponent(() => import('./user/logs')),
|
logs: defineAsyncComponent(() => import('./user/logs')),
|
||||||
upToEnterprise: defineAsyncComponent(() => import('./user/upToEnterprise'))
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -93,20 +92,9 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
groupName: "账号升级",
|
|
||||||
list: [
|
|
||||||
{
|
|
||||||
icon: "el-icon-office-building",
|
|
||||||
title: "升级为企业账号",
|
|
||||||
component: "upToEnterprise"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
user: {
|
user: {
|
||||||
userName: "Sakuya",
|
avatar:''
|
||||||
role: "超级管理员",
|
|
||||||
},
|
},
|
||||||
page: "account"
|
page: "account"
|
||||||
}
|
}
|
||||||
@ -125,6 +113,10 @@
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
created() {
|
||||||
|
var userInfo = this.$tool.data.get('userinfo');
|
||||||
|
this.user = userInfo
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
openPage(item){
|
openPage(item){
|
||||||
this.page = item.index
|
this.page = item.index
|
||||||
|
@ -1,42 +1,73 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-alert title="异步组件动态加载使用了正处于试验阶段的<Suspense>组件, 其API和使用方式可能会改变. <Suspense> is an experimental feature and its API will likely change." type="warning" show-icon style="margin-bottom: 15px;"/>
|
|
||||||
|
|
||||||
<el-card shadow="never" header="个人信息">
|
<el-card shadow="never" header="个人信息">
|
||||||
<el-form ref="form" :model="form" label-width="120px" style="margin-top:20px;">
|
<el-form ref="form" :model="user" label-width="120px" style="margin-top:20px;">
|
||||||
<el-form-item label="账号">
|
<el-form-item label="账号">
|
||||||
<el-input v-model="form.user" disabled></el-input>
|
<el-input v-model="user.username" disabled></el-input>
|
||||||
<div class="el-form-item-msg">账号信息用于登录,系统不允许修改</div>
|
<div class="el-form-item-msg">账号信息用于登录,系统不允许修改</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="姓名">
|
<el-form-item label="姓名">
|
||||||
<el-input v-model="form.name"></el-input>
|
<el-input v-model="user.nickname"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="邮箱">
|
||||||
|
<el-input v-model="user.email"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="手机号">
|
||||||
|
<el-input v-model="user.mobile"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="性别">
|
<el-form-item label="性别">
|
||||||
<el-select v-model="form.sex" placeholder="请选择">
|
<el-select v-model="user.gender" placeholder="请选择">
|
||||||
<el-option label="保密" value="0"></el-option>
|
<el-option label="保密" value="0"></el-option>
|
||||||
<el-option label="男" value="1"></el-option>
|
<el-option label="男" value="1"></el-option>
|
||||||
<el-option label="女" value="2"></el-option>
|
<el-option label="女" value="2"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="个性签名">
|
<el-form-item label="个性签名">
|
||||||
<el-input v-model="form.about" type="textarea"></el-input>
|
<el-input v-model="user.about" type="textarea"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<!-- <formItem :item="item" :form="user"></formItem> -->
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary">保存</el-button>
|
<el-button type="primary" @click="submit">保存</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
|
// import formItem from '@/components/scForm/formItem'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
props: {
|
||||||
|
data: { type: Object, default: () => ({}) }
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
// formItem,
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
form: {
|
item: {
|
||||||
user: "administrator@scuiadmin.com",
|
label:'fdasfa',
|
||||||
name: "Sakuya",
|
name:'username',
|
||||||
sex: "0",
|
component:'input',
|
||||||
about: "正所谓富贵险中求"
|
options:{},
|
||||||
}
|
},
|
||||||
|
user: {},
|
||||||
|
form: [],
|
||||||
|
token:null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$http.post('system/user/get', { uid:this.data.uid }).then((res) => {
|
||||||
|
if (res.code == 200) {
|
||||||
|
this.user = res.data.user;
|
||||||
|
this.token = res.data.token;
|
||||||
|
this.form = res.data.form;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
submit(){
|
||||||
|
alert(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-empty image="@/assets/img/404.png" :image-size="280" description="当前账号未满足开通企业账号权限">
|
|
||||||
<el-button type="primary" size="large" round disabled>立即升级为企业账号</el-button>
|
|
||||||
</el-empty>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
</style>
|
|
Loading…
Reference in New Issue
Block a user