Compare commits

...

2 Commits

  1. 2
      .env.development
  2. 2
      .env.production
  3. 27
      src/api/Expert.js
  4. BIN
      src/assets/images/avatar.png
  5. BIN
      src/assets/images/bg1.png
  6. BIN
      src/assets/images/form-bg.png
  7. BIN
      src/assets/images/logo.png
  8. 3
      src/layout/components/Navbar.vue
  9. 2
      src/layout/components/Sidebar/Logo.vue
  10. 2
      src/settings.js
  11. 4
      src/views/home.vue
  12. 8
      src/views/information/index.vue
  13. 154
      src/views/login.vue
  14. 125
      src/views/shop/expert/index.vue
  15. 3
      src/views/system/user/center.vue
  16. 2
      vue.config.js
  17. 2
      wsl.txt

2
.env.development

@ -1,7 +1,7 @@
ENV = 'development'
# 接口地址
VUE_APP_BASE_API = 'http://192.168.68.126:8094'
VUE_APP_BASE_API = 'http://192.168.68.125:8199'
VUE_APP_WS_API = 'ws://localhost:8088'
# 是否启用 babel-plugin-dynamic-import-node插件

2
.env.production

@ -1,6 +1,6 @@
ENV = 'production'
# 接口地址
VUE_APP_BASE_API = 'http://www.cyjyyjy.com:8094'
VUE_APP_BASE_API = 'http://art.admin.cyjyyjy.com'
VUE_APP_WS_API = 'ws:///127.0.0.1:8001'

27
src/api/Expert.js

@ -0,0 +1,27 @@
import request from '@/utils/request'
export function add(data) {
return request({
url: 'api/Expert',
method: 'post',
data
})
}
export function del(ids) {
return request({
url: 'api/Expert/',
method: 'delete',
data: ids
})
}
export function edit(data) {
return request({
url: 'api/Expert',
method: 'put',
data
})
}
export default { add, edit, del }

BIN
src/assets/images/avatar.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

BIN
src/assets/images/bg1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

BIN
src/assets/images/form-bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
src/assets/images/logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 73 KiB

3
src/layout/components/Navbar.vue

@ -58,7 +58,6 @@ import Github from '@/components/Github'
import Screenfull from '@/components/Screenfull'
import SizeSelect from '@/components/SizeSelect'
import Search from '@/components/HeaderSearch'
import Avatar from '@/assets/images/avatar.png'
export default {
components: {
@ -71,7 +70,7 @@ export default {
},
data() {
return {
Avatar: Avatar,
Avatar: '',
dialogVisible: false
}
},

2
src/layout/components/Sidebar/Logo.vue

@ -25,7 +25,7 @@ export default {
},
data() {
return {
title: '禅易云生态管理系统',
title: '湖北省艺术设计协会管理系统',
logo: Logo
}
}

2
src/settings.js

@ -2,7 +2,7 @@ module.exports = {
/**
* @description 网站标题
*/
title: '禅易云生态',
title: '湖北省艺术设计协会',
/**
* @description 是否显示 tagsView
*/

4
src/views/home.vue

@ -6,9 +6,9 @@
<panel-group-t />
<el-row :gutter="32">
<el-col :xs="16" :sm="16" :lg="8">
<!-- <el-col :xs="16" :sm="16" :lg="8">
<order-count></order-count>
</el-col>
</el-col> -->
<el-col :xs="16" :sm="16" :lg="8">
<div class="chart-wrapper">

8
src/views/information/index.vue

@ -148,15 +148,15 @@ export default {
data() {
return {
delLoading: false,
articleCatetoryId: null,
articleCatetoryId: '',
articleCatetoryList: [],
setLoading: false
}
},
created() {
this.$nextTick(() => {
this.init()
})
// this.$nextTick(() => {
// this.init()
// })
},
mounted(){
this.getArticleCatetory()

154
src/views/login.vue

@ -1,54 +1,46 @@
<template>
<div class="login">
<div style="display:flex;justify-content:space-between;align-items: center;">
<!-- <div style="padding: 0 60px 0 0">
<h3 style="color: #ffffff;font-size: 24px;padding: 0;margin-bottom: 10px">
单商户B2C电商系统
</h3>
<ul style="margin: 0;color: #ffffff;font-size: 15px;line-height: 25px;padding-left: 20px">
<li>Springboot2</li>
<li>MybatisPlus</li>
<li>SpringSecurity</li>
<li>Jwt</li>
<li>Redis</li>
<li>Vue</li>
</ul>
<h3 style="color: #ffffff;">
官网:https://www.yixiang.co
</h3>
</div> -->
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" label-position="left" label-width="0px" class="login-form">
<h3 class="title">
禅易云生态后台管理系统
</h3>
<el-form-item prop="username">
<el-input v-model="loginForm.username" size="medium" type="text" auto-complete="off" placeholder="账号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input v-model="loginForm.password" size="medium" type="password" auto-complete="off" placeholder="密码" @keyup.enter.native="handleLogin">
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
<el-form-item prop="code">
<el-input v-model="loginForm.code" size="medium" auto-complete="off" placeholder="验证码" style="width: 63%" @keyup.enter.native="handleLogin">
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
</el-input>
<div class="login-code">
<img :src="codeUrl" @click="getCode">
</div>
</el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0 0 25px 0;">
记住我
</el-checkbox>
<el-form-item style="width:100%;">
<el-button :loading="loading" size="medium" type="primary" style="width:100%;height:46px;border-radius:30px;font-size:22px;color:#fff;" @click.native.prevent="handleLogin">
<span v-if="!loading"> </span>
<span v-else> 中...</span>
</el-button>
</el-form-item>
</el-form>
<div class="logo">
<img src="@/assets/images/logo.png" alt="">
</div>
<div class="form-box">
<div class="left">
<img src="@/assets/images/form-bg.png"></img>
</div>
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" label-position="left" label-width="0px" class="login-form">
<h3 class="title">后台管理系统</h3>
<el-form-item prop="username">
<el-input v-model="loginForm.username" size="medium" type="text" auto-complete="off" placeholder="账号" style="width: 62%">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input v-model="loginForm.password" size="medium" type="password" auto-complete="off" placeholder="密码" style="width: 62%" @keyup.enter.native="handleLogin">
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
<el-form-item prop="code">
<el-input v-model="loginForm.code" size="medium" auto-complete="off" placeholder="验证码" style="width: 62%" @keyup.enter.native="handleLogin">
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
</el-input>
<div class="login-code">
<img :src="codeUrl" @click="getCode">
</div>
</el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0 0 25px 0;">
记住我
</el-checkbox>
<el-form-item style="width:100%;">
<el-button
:loading="loading"
size="medium"
style="width:62%;height:46px;background:#C25251;font-size:22px;color:#fff;border-color:#C25251;"
@click.native.prevent="handleLogin">
<span v-if="!loading"> </span>
<span v-else> 中...</span>
</el-button>
</el-form-item>
</el-form>
</div>
<!-- 底部 -->
<div v-if="$store.state.settings.showFooter" id="el-login-footer">
@ -163,34 +155,66 @@ export default {
.login {
width: 100%;
height: 100%;
background-image:url("../assets/images/bg.png");
background-size: cover;
background: #fff;
position: relative;
.logo{
width: 256px;
height: 256px;
position: fixed;
top: 0px;
right: 60px;
z-index: 3;
img{
width: 100%;
height: 100%;
}
}
}
.title {
margin: 0 auto 30px auto;
text-align: center;
text-align: left;
color: #707070;
}
.login-form {
border-radius: 6px;
.form-box{
width: 1200px;
height: 700px;
box-shadow: 0px 8px 13px rgba(0, 0, 0, 0.16);;
border-radius: 20px;
background: #ffffff;
padding: 40px 70px;
box-sizing: border-box;
position: absolute;
right: 10%;
left: 50%;
top: 50%;
transform: translateY(-50%);
.title{
font-size: 28px;
font-weight: 600;
line-height: 48px;
color: #068AD6;
transform: translate(-50%,-50%);
display: flex;
overflow: hidden;
.left{
width: 600px;
height: 100%;
background: #C25251;
display: flex;
align-items: center;
justify-content: center;
img{
width: 474px;
height: 290px;
}
}
.input-icon{
height: 39px;width: 14px;margin-left: 2px;
.login-form {
width: 600px;
padding: 124px 50px 0 130px;
.title{
font-size: 28px;
font-weight: 600;
line-height: 48px;
color: #C25251;
}
.input-icon{
height: 39px;width: 14px;margin-left: 2px;
}
}
}
.login-tip {
font-size: 13px;
text-align: center;

125
src/views/shop/expert/index.vue

@ -0,0 +1,125 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" />
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="姓名:">
<el-input v-model="form.name" style="width: 370px;" />
</el-form-item>
<el-form-item label="照片:">
<single-pic v-model="form.avatar" type="image" :num="1" :width="150" :height="150" />
</el-form-item>
<el-form-item label="简介:">
<el-input v-model="form.job" style="width: 370px;" />
</el-form-item>
<el-form-item label="介绍:">
<el-input type="textarea" rows="4" show-word-limit v-model="form.introduction" style="width: 370px;" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55" />
<el-table-column v-if="columns.visible('id')" prop="id" label="id" />
<el-table-column v-if="columns.visible('name')" prop="name" label="姓名" />
<el-table-column v-if="columns.visible('avatar')" prop="avatar" label="照片">
<template slot-scope="scope">
<el-image :src="scope.row.avatar" :fit="contain" style="width: 50px; height: 50px;border-radius: 50%;"></el-image>
</template>
</el-table-column>
<el-table-column v-if="columns.visible('job')" prop="job" label="简介" />
<el-table-column v-if="columns.visible('introduction')" width="300px" prop="introduction" label="介绍" show-overflow-tooltip="true">
</el-table-column>
<el-table-column v-if="columns.visible('createTime')" label="创建时间">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column v-permission="['admin','Expert:edit','Expert:del']" label="操作" width="150px" align="center">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
</div>
</template>
<script>
import crudExpert from "@/api/Expert";
import CRUD, { presenter, header, form, crud } from "@crud/crud";
import rrOperation from "@crud/RR.operation";
import crudOperation from "@crud/CRUD.operation";
import udOperation from "@crud/UD.operation";
import pagination from "@crud/Pagination";
import singlePic from '@/components/singlematerial'
// crudpresenter
const defaultCrud = CRUD({
title: "专家",
url: "api/Expert",
sort: "id,desc",
crudMethod: { ...crudExpert },
});
const defaultForm = {
id: null,
name: null,
avatar: '',
job: null,
introduction: null,
};
export default {
name: "Expert",
components: {
pagination,
crudOperation,
rrOperation,
udOperation,
singlePic,
},
mixins: [presenter(defaultCrud), header(), form(defaultForm), crud()],
data() {
return {
permission: {
add: ["admin", "Expert:add"],
edit: ["admin", "Expert:edit"],
del: ["admin", "Expert:del"],
},
rules: {
id: [{ required: true, message: "不能为空", trigger: "blur" }],
},
};
},
watch: {
'form.image': function(val) {
console.log('aaaa:'+val)
},
},
methods: {
//
[CRUD.HOOK.beforeRefresh]() {
return true;
}, //
[CRUD.HOOK.afterToCU](crud, form) {},
},
};
</script>
<style>
.el-tooltip__popper {
max-width: 400px;
}
</style>

3
src/views/system/user/center.vue

@ -115,7 +115,6 @@ import { isvalidPhone } from '@/utils/validate'
import { parseTime } from '@/utils/index'
import crud from '@/mixins/crud'
import { editUser } from '@/api/system/user'
import Avatar from '@/assets/images/avatar.png'
export default {
name: 'Center',
components: { updatePass, updateEmail },
@ -132,7 +131,7 @@ export default {
}
}
return {
Avatar: Avatar,
Avatar: '',
activeName: 'first',
saveLoading: false,
headers: {

2
vue.config.js

@ -7,7 +7,7 @@ function resolve(dir) {
}
const name = defaultSettings.title // 网址标题
const port = 8014 // 端口配置
const port = 8015 // 端口配置
module.exports = {
publicPath: '/',

2
wsl.txt

@ -1,2 +1,2 @@
url: rsync -r ./ root@39.105.46.0:/root/html/distclode
url: rsync -r ./ root@39.105.46.0:/root/html/sysxh_admin
password: CXkj2021!@#
Loading…
Cancel
Save