修改:会员接口权限完善;缓存改进(不清空用户和会员token);apidoc接口文档升级(V5)完善;代码、页面优化。

Signed-off-by: skyselang <215817969@qq.com>
This commit is contained in:
skyselang 2023-05-15 18:15:16 +08:00
parent cab6e456d6
commit 10300de07b
18 changed files with 212 additions and 102 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -57,12 +57,23 @@ export function dele(data) {
})
}
/**
* 反馈是否未读
* 反馈状态
* @param {array} data 请求数据
*/
export function unread(data) {
export function status(data) {
return request({
url: url + 'unread',
url: url + 'status',
method: 'post',
data
})
}
/**
* 反馈是否禁用
* @param {array} data 请求数据
*/
export function disable(data) {
return request({
url: url + 'disable',
method: 'post',
data
})

View File

@ -170,7 +170,7 @@
<el-col class="ya-padding-left">
<el-link :type="query.file_type===''?'primary':''" :underline="false" class="ya-height-26" @click="typeSelect('')">全部</el-link>
</el-col>
<el-col v-for="(item, index) in filetype" :key="index" class="ya-padding-left">
<el-col v-for="(item, index) in file_types" :key="index" class="ya-padding-left">
<el-link :type="query.file_type===index?'primary':''" :underline="false" class="ya-height-26" @click="typeSelect(index)">{{ item }}</el-link>
</el-col>
</el-row>
@ -212,7 +212,7 @@
<el-col class="ya-padding-left">
<el-link :type="query.storage===''?'primary':''" :underline="false" class="ya-height-26" @click="storageSelect('')">全部</el-link>
</el-col>
<el-col v-for="(item, index) in storage" :key="index" class="ya-padding-left">
<el-col v-for="(item, index) in storages" :key="index" class="ya-padding-left">
<el-link :type="query.storage===index?'primary':''" :underline="false" class="ya-height-26" @click="storageSelect(index)">{{ item }}</el-link>
</el-col>
</el-row>
@ -369,7 +369,7 @@
</el-form-item>
<el-form-item label="文件类型" prop="file_type">
<el-select v-model="model.file_type">
<el-option v-for="(item, index) in filetype" :key="index" :value="index" :label="item" />
<el-option v-for="(item, index) in file_types" :key="index" :value="index" :label="item" />
</el-select>
</el-form-item>
<el-form-item label="文件排序" prop="sort">
@ -392,7 +392,7 @@
</el-form-item>
<el-form-item label="存储方式" prop="storage">
<el-select v-model="model.storage" placeholder="" :disabled="model.file_id?true:false">
<el-option v-for="(item, index) in storage" :key="index" :value="index" :label="item" />
<el-option v-for="(item, index) in storages" :key="index" :value="index" :label="item" />
</el-select>
</el-form-item>
<el-form-item v-if="model.file_id" label="是否禁用" prop="is_disable">
@ -507,9 +507,9 @@ export default {
file_type: [{ required: true, message: '请选择文件类型', trigger: 'blur' }],
file_url: [{ required: true, message: '请输入文件链接', trigger: 'blur' }]
},
storage: [],
fileIds: [],
filetype: [],
storages: [],
file_types: [],
fileImgPre: [],
selectAll: false,
selectAllInd: false,
@ -624,8 +624,8 @@ export default {
this.fileIds = data.ids
this.uploadLimit = data.setting.limit_max
this.uploadAccept = data.setting.accept_ext
this.storage = data.storage
this.filetype = data.filetype
this.storages = data.setting.storages
this.file_types = data.setting.file_types
this.groupData = data.group
this.tagData = data.tag
this.exps = data.exps

View File

@ -16,18 +16,23 @@
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper">
<el-avatar v-if="avatar" shape="circle" fit="contain" :size="48" :src="avatar" />
<el-avatar v-else icon="el-icon-user-solid" :size="48" />
<el-avatar v-if="avatar" :src="avatar" :size="48" shape="circle" fit="contain" />
<el-avatar v-else :size="48" shape="circle" icon="el-icon-user-solid" />
<i class="el-icon-caret-bottom" />
</div>
<el-dropdown-menu slot="dropdown" style="text-align:center">
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>
<router-link to="/">
<el-dropdown-item>控制台</el-dropdown-item>
</router-link>
</el-dropdown-item>
<el-dropdown-item>
<router-link v-if="checkPermission(['admin/system.UserCenter/info'])" to="/system/user-center">
<el-dropdown-item>个人中心</el-dropdown-item>
</router-link>
</el-dropdown-item>
<el-dropdown-item divided @click.native="logout">
<span style="display:block;">退出</span>
<span style="display:block;">退出登录</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
@ -144,7 +149,7 @@ export default {
}
.avatar-container {
margin-right: 30px;
margin-right: 15px;
.avatar-wrapper {
margin-top: 0px;
@ -160,7 +165,7 @@ export default {
.el-icon-caret-bottom {
cursor: pointer;
position: absolute;
right: -20px;
right: -10px;
top: 25px;
font-size: 12px;
}
@ -168,4 +173,13 @@ export default {
}
}
}
.el-dropdown-menu {
top: 42px !important;
text-align:center;
}
.el-dropdown-menu__item {
padding: 0 12px;
}
</style>

View File

@ -153,7 +153,7 @@
</el-table-column>
<el-table-column prop="name" label="名称" min-width="230" show-overflow-tooltip />
<el-table-column prop="unique" label="标识" min-width="80" show-overflow-tooltip />
<el-table-column prop="category_name" label="分类" min-width="120" show-overflow-tooltip />
<el-table-column prop="category_names" label="分类" min-width="120" show-overflow-tooltip />
<el-table-column prop="tag_names" label="标签" min-width="120" show-overflow-tooltip />
<el-table-column prop="is_top" label="置顶" min-width="75" sortable="custom">
<template slot-scope="scope">

View File

@ -4,13 +4,13 @@
<el-form ref="ref" :model="model" :rules="rules" label-width="150px">
<el-tabs>
<el-tab-pane label="文件设置" class="dialog-body" :style="{height:height+'px'}" lazy>
<el-form-item label="后台上传" prop="is_upload_admin">
<el-switch v-model="model.is_upload_admin" :active-value="1" :inactive-value="0" />
<span> 后台文件上传是否开启</span>
</el-form-item>
<el-form-item label="前台上传" prop="is_upload_api">
<el-switch v-model="model.is_upload_api" :active-value="1" :inactive-value="0" />
<span> 前台文件上传是否开启</span>
<span> 关闭后前台无法上传文件</span>
</el-form-item>
<el-form-item label="后台上传" prop="is_upload_admin">
<el-switch v-model="model.is_upload_admin" :active-value="1" :inactive-value="0" />
<span> 关闭后后台无法上传文件</span>
</el-form-item>
<el-form-item label="存储方式" prop="storage">
<el-select v-model="model.storage" placeholder="请选择">
@ -592,16 +592,16 @@ export default {
//
info() {
info().then((res) => {
this.model = res.data.setting
this.storages = res.data.storage
this.model = res.data
this.storages = res.data.storages
})
},
//
refresh() {
this.loading = true
info().then((res) => {
this.model = res.data.setting
this.storages = res.data.storage
this.model = res.data
this.storages = res.data.storages
this.loading = false
this.$message.success(res.msg)
}).catch(() => {

View File

@ -130,12 +130,12 @@
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select" @cell-dblclick="cellDbclick">
<el-table-column type="selection" width="42" title="全选/反选" />
<el-table-column :prop="idkey" label="ID" width="80" sortable="custom" />
<el-table-column prop="avatar_id" label="头像" min-width="60">
<el-table-column prop="avatar_id" label="头像" min-width="50">
<template slot-scope="scope">
<div style="height:30px">
<el-image v-if="scope.row.avatar_url" style="height:30px" fit="contain" :src="scope.row.avatar_url" :preview-src-list="[scope.row.avatar_url]" title="点击看大图" lazy scroll-container=".el-table__body-wrapper">
<div style="height:25px">
<el-image style="width:25px;height:25px;border-radius:50%;" :src="scope.row.avatar_url" :preview-src-list="[scope.row.avatar_url]" fit="contain" title="点击看大图" lazy scroll-container=".el-table__body-wrapper">
<div slot="error" class="image-slot">
<i class="el-icon-picture-outline" />
<el-avatar :size="25" icon="el-icon-user-solid" />
</div>
</el-image>
</div>
@ -173,9 +173,9 @@
<el-form ref="ref" :model="model" :rules="rules" label-width="100px" class="dialog-body" :style="{height:height+'px'}">
<el-form-item label="头像" prop="avatar_url">
<el-col :span="12" style="height:100px">
<el-image v-if="model.avatar_url" style="height:100px" fit="contain" :src="model.avatar_url" :preview-src-list="[model.avatar_url]" title="点击看大图">
<el-image style="width:100px;height:100px;border-radius:50%;" :src="model.avatar_url" :preview-src-list="[model.avatar_url]" fit="contain" title="点击看大图">
<div slot="error" class="image-slot">
<i class="el-icon-picture-outline" />
<el-avatar :size="100" icon="el-icon-user-solid" />
</div>
</el-image>
</el-col>

View File

@ -8,26 +8,30 @@
<el-select v-model="query.search_field" class="filter-item ya-search-field" placeholder="查询字段">
<el-option :value="idkey" label="ID" />
<el-option value="type" label="类型" />
<el-option value="status" label="状态" />
<el-option value="title" label="标题" />
<el-option value="phone" label="手机" />
<el-option value="email" label="邮箱" />
<el-option value="is_unread" label="未读" />
<el-option value="receipt_no" label="回执" />
<el-option value="is_disable" label="禁用" />
</el-select>
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
<el-option v-for="exp in exps" :key="exp.exp" :value="exp.exp" :label="exp.name" />
</el-select>
<el-select v-if="query.search_field==='is_unread'" v-model="query.search_value" class="filter-item ya-search-value">
<el-option :value="1" label="未读" />
<el-option :value="0" label="已读" />
<el-select v-if="query.search_field === 'status'" v-model="query.search_value" class="filter-item ya-search-value">
<el-option v-for="(item, index) in statuss" :key="index" :label="item" :value="index" />
</el-select>
<el-select v-else-if="query.search_field==='type'" v-model="query.search_value" class="filter-item ya-search-value">
<el-option v-for="(item,index) in types" :key="index" :label="item" :value="index" />
<el-select v-else-if="query.search_field === 'is_disable'" v-model="query.search_value" class="filter-item ya-search-value">
<el-option :value="1" label="是" />
<el-option :value="0" label="否" />
</el-select>
<el-select v-else-if="query.search_field === 'type'" v-model="query.search_value" class="filter-item ya-search-value">
<el-option v-for="(item, index) in types" :key="index" :label="item" :value="index" />
</el-select>
<el-input v-else v-model="query.search_value" class="filter-item ya-search-value" placeholder="查询内容" clearable />
<el-select v-model="query.date_field" class="filter-item ya-date-field" placeholder="时间类型">
<el-option value="create_time" label="添加时间" />
<el-option value="update_time" label="修改时间" />
<el-option value="read_time" label="阅读时间" />
</el-select>
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
@ -37,23 +41,26 @@
<!-- 选中操作 -->
<el-row>
<el-col>
<el-button title="未读" @click="selectOpen('unread')">未读</el-button>
<el-button title="状态" @click="selectOpen('status')">状态</el-button>
<el-button title="禁用" @click="selectOpen('disable')">禁用</el-button>
<el-button title="删除" @click="selectOpen('dele')">删除</el-button>
<el-button type="primary" @click="add()">添加</el-button>
</el-col>
</el-row>
<el-dialog :title="selectTitle" :visible.sync="selectDialog" top="20vh" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form label-width="120px">
<el-form-item :label="name+'ID'" prop="">
<el-input v-model="selectIds" type="textarea" :autosize="{minRows: 5, maxRows: 12}" disabled />
<el-form-item :label="name + 'ID'" prop="">
<el-input v-model="selectIds" type="textarea" :autosize="{ minRows: 5, maxRows: 12 }" disabled />
</el-form-item>
<el-form-item v-if="selectType==='unread'" label="是否未读" prop="">
<el-select v-model="is_unread" class="filter-item ya-search-value">
<el-option :value="1" label="未读" />
<el-option :value="0" label="已读" />
<el-form-item v-if="selectType === 'status'" label="状态" prop="">
<el-select v-model="status" class="filter-item ya-search-value">
<el-option v-for="(item, index) in statuss" :key="index" :label="item" :value="index" />
</el-select>
</el-form-item>
<el-form-item v-else-if="selectType==='dele'" label="" prop="">
<el-form-item v-else-if="selectType === 'disable'" label="是否禁用" prop="">
<el-switch v-model="is_disable" :active-value="1" :inactive-value="0" />
</el-form-item>
<el-form-item v-else-if="selectType === 'dele'" label="" prop="">
<span style="color:red">确定要删除选中的{{ name }}</span>
</el-form-item>
</el-form>
@ -67,49 +74,56 @@
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select">
<el-table-column type="selection" width="42" title="全选/反选" />
<el-table-column :prop="idkey" label="ID" width="80" sortable="custom" />
<el-table-column prop="member_username" label="会员" min-width="80" show-overflow-tooltip />
<el-table-column prop="type_name" label="类型" min-width="80" />
<el-table-column prop="title" label="标题" min-width="200" show-overflow-tooltip />
<el-table-column prop="phone" label="手机" min-width="120" />
<el-table-column prop="email" label="邮箱" min-width="130" show-overflow-tooltip />
<el-table-column prop="remark" label="备注" min-width="100" show-overflow-tooltip />
<el-table-column prop="is_unread" label="未读" min-width="75" sortable="custom">
<el-table-column prop="status" label="状态" min-width="75" sortable="custom">
<template slot-scope="scope">
<el-switch v-model="scope.row.is_unread" :active-value="1" :inactive-value="0" @change="unread([scope.row])" />
{{ statuss[scope.row.status] }}
</template>
</el-table-column>
<el-table-column prop="is_disable" label="禁用" min-width="75" sortable="custom">
<template slot-scope="scope">
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
</template>
</el-table-column>
<el-table-column prop="receipt_no" label="回执编号" min-width="100" show-overflow-tooltip />
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
<el-table-column label="操作" width="90">
<template slot-scope="scope">
<el-button size="mini" type="text" title="修改" @click="edit(scope.row)">查看</el-button>
<el-button size="mini" type="text" @click="selectOpen('dele',scope.row)">删除</el-button>
<el-button size="mini" type="text" title="修改" @click="edit(scope.row)">修改</el-button>
<el-button size="mini" type="text" @click="selectOpen('dele', scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<pagination v-show="count>0" :total="count" :page.sync="query.page" :limit.sync="query.limit" @pagination="list" />
<pagination v-show="count > 0" :total="count" :page.sync="query.page" :limit.sync="query.limit" @pagination="list" />
<!-- 添加修改 -->
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form ref="ref" :rules="rules" :model="model" class="dialog-body" label-width="100px" :style="{height:height+'px'}">
<el-form ref="ref" :rules="rules" :model="model" class="dialog-body" label-width="100px" :style="{ height: height + 'px' }">
<el-form-item label="会员ID" prop="member_id">
<el-col :span="10">
<el-input v-model="model.member_id" placeholder="请输入会员ID" clearable />
</el-col>
<el-col class="ya-center" :span="4">会员用户名</el-col>
<el-col :span="10">
<el-input v-model="model.member_username" placeholder="" disabled />
</el-col>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="model.type">
<el-option v-for="(item,index) in types" :key="index" :label="item" :value="index" />
<el-option v-for="(item, index) in types" :key="index" :label="item" :value="index" />
</el-select>
</el-form-item>
<el-form-item label="手机" prop="phone">
<el-input v-model="model.phone" placeholder="" clearable />
</el-form-item>
<el-form-item label="邮箱" prop="email">
<el-input v-model="model.email" placeholder="" clearable />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="model.remark" placeholder="" clearable />
</el-form-item>
<el-form-item label="标题" prop="title">
<el-input v-model="model.title" placeholder="请输入标题" clearable />
</el-form-item>
<el-form-item label="内容" prop="content">
<el-input v-model="model.content" type="textarea" placeholder="请输入内容" clearable :autosize="{minRows:5,maxRows:20}" />
<el-input v-model="model.content" type="textarea" placeholder="请输入内容" clearable :autosize="{ minRows: 5, maxRows: 20 }" />
</el-form-item>
<el-form-item label="图片" prop="images">
<el-row>
@ -124,7 +138,7 @@
<el-col v-for="(item, index) in model.images" :key="index" :span="6" class="ya-file">
<el-image style="height:100px" fit="contain" :src="item.file_url" :preview-src-list="[item.file_url]" title="点击看大图" />
<div>
<span class="ya-file-name" :title="item.file_name+'.'+item.file_ext">{{ item.file_name }}.{{ item.file_ext }}</span>
<span class="ya-file-name" :title="item.file_name + '.' + item.file_ext">{{ item.file_name }}.{{ item.file_ext }}</span>
<el-button type="text" size="medium" icon="el-icon-d-arrow-left" title="向左移动" @click="fileRemoval(index, 'images', 'left')" />
<el-button type="text" size="medium" icon="el-icon-d-arrow-right" title="向左移动" @click="fileRemoval(index, 'images', 'right')" />
<el-button type="text" size="medium" icon="el-icon-download" title="下载" @click="fileDownload(item, $event)" />
@ -133,15 +147,32 @@
</el-col>
</el-row>
</el-form-item>
<el-form-item label="手机" prop="phone">
<el-input v-model="model.phone" placeholder="" clearable />
</el-form-item>
<el-form-item label="邮箱" prop="email">
<el-input v-model="model.email" placeholder="" clearable />
</el-form-item>
<el-form-item label="回复" prop="reply">
<el-input v-model="model.reply" type="textarea" placeholder="请输入回复" clearable :autosize="{ minRows: 5, maxRows: 20 }" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="model.status">
<el-option v-for="(item, index) in statuss" :key="index" :label="item" :value="index" />
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="model.remark" placeholder="" clearable />
</el-form-item>
<el-form-item label="回执" prop="receipt_no">
<el-input v-model="model.receipt_no" placeholder="回执编号(唯一)" clearable />
</el-form-item>
<el-form-item v-if="model[idkey]" label="添加时间" prop="create_time">
<el-input v-model="model.create_time" disabled />
</el-form-item>
<el-form-item v-if="model[idkey]" label="修改时间" prop="update_time">
<el-input v-model="model.update_time" disabled />
</el-form-item>
<el-form-item v-if="model[idkey]" label="阅读时间" prop="read_time">
<el-input v-model="model.read_time" disabled />
</el-form-item>
<el-form-item v-if="model.delete_time" label="删除时间" prop="delete_time">
<el-input v-model="model.delete_time" disabled />
</el-form-item>
@ -164,7 +195,7 @@ import Pagination from '@/components/Pagination'
import FileManage from '@/components/FileManage'
import clip from '@/utils/clipboard'
import { arrayColumn } from '@/utils/index'
import { list, info, add, edit, dele, unread } from '@/api/setting/feedback'
import { list, info, add, edit, dele, status as editsta, disable } from '@/api/setting/feedback'
export default {
name: 'SettingFeedback',
@ -184,25 +215,32 @@ export default {
dialogTitle: '',
model: {
feedback_id: '',
member_id: 0,
member_username: '',
receipt_no: '',
type: 0,
title: '',
content: '',
images: [],
phone: '',
email: '',
remark: ''
reply: '',
remark: '',
status: 0
},
rules: {
title: [{ required: true, message: '请输入标题', trigger: 'blur' }],
content: [{ required: true, message: '请输入内容', trigger: 'blur' }]
},
types: [],
statuss: [],
selection: [],
selectIds: '',
selectTitle: '选中操作',
selectDialog: false,
selectType: '',
is_unread: 0,
status: 0,
is_disable: 0,
fileDialog: false,
fileTitle: '文件管理',
fileType: 'image',
@ -221,6 +259,7 @@ export default {
this.data = res.data.list
this.count = res.data.count
this.types = res.data.types
this.statuss = res.data.statuss
this.exps = res.data.exps
this.loading = false
}).catch(() => {
@ -328,8 +367,10 @@ export default {
this.selectAlert()
} else {
this.selectTitle = '选中操作'
if (selectType === 'unread') {
this.selectTitle = this.name + '未读'
if (selectType === 'status') {
this.selectTitle = this.name + '状态'
} else if (selectType === 'disable') {
this.selectTitle = this.name + '是否禁用'
} else if (selectType === 'dele') {
this.selectTitle = this.name + '删除'
}
@ -345,27 +386,50 @@ export default {
this.selectAlert()
} else {
const selectType = this.selectType
if (selectType === 'unread') {
this.unread(this.selection, true)
if (selectType === 'status') {
this.editsta(this.selection, true)
} else if (selectType === 'disable') {
this.disable(this.selection, true)
} else if (selectType === 'dele') {
this.dele(this.selection)
}
this.selectDialog = false
}
},
//
unread(row, select) {
//
editsta(row, select) {
if (!row.length) {
this.selectAlert()
} else {
this.loading = true
var is_unread = row[0].is_unread
var status = row[0].status
if (select) {
is_unread = this.is_unread
status = this.status
}
unread({
editsta({
ids: this.selectGetIds(row),
is_unread: is_unread
status: status
}).then(res => {
this.list()
this.$message.success(res.msg)
}).catch(() => {
this.list()
})
}
},
//
disable(row, select = false) {
if (!row.length) {
this.selectAlert()
} else {
this.loading = true
var is_disable = row[0].is_disable
if (select) {
is_disable = this.is_disable
}
disable({
ids: this.selectGetIds(row),
is_disable: is_disable
}).then(res => {
this.list()
this.$message.success(res.msg)
@ -456,6 +520,7 @@ export default {
text-align: center;
border: 1px solid #dcdfe6;
}
.ya-file-name {
display: block;
height: 24px;

View File

@ -1,5 +1,5 @@
<template>
<el-card class="dialog-body" :style="{height:height+'px'}">
<el-card class="dialog-body" :style="{ height: height + 'px' }">
<el-row :gutter="8">
<el-col :span="12">
<el-form :model="model" label-width="150px">
@ -77,6 +77,11 @@
<el-form-item label="DB0" prop="" class="ya-margin-bottom">
<el-input v-model="model.db0" />
</el-form-item>
<template v-for="n in 15">
<el-form-item v-if="model['db' + n]" :key="n" :label="'DB' + n" prop="" class="ya-margin-bottom">
<el-input v-model="model['db' + n]" />
</el-form-item>
</template>
</div>
<div v-else-if="model.type === 'memcache'">
<el-form-item label="memcache" prop="">
@ -118,8 +123,12 @@
<pre>{{ model.wincache_info }}</pre>
</el-form-item>
</div>
<el-form-item label="">
<el-button :loading="loading" icon="el-icon-refresh" title="刷新" @click="refresh()" />
</el-form>
</el-col>
<el-col :span="24">
<el-form :model="model" label-width="150px">
<el-form-item>
<el-button :loading="loading" title="刷新" @click="refresh()">刷新</el-button>
</el-form-item>
</el-form>
</el-col>
@ -133,7 +142,7 @@ import { serverInfo } from '@/api/system/setting'
export default {
name: 'SystemSettingServer',
components: { },
components: {},
data() {
return {
name: '服务器信息',
@ -156,7 +165,7 @@ export default {
//
refresh() {
this.loading = true
serverInfo().then((res) => {
serverInfo({ force: 1 }).then((res) => {
this.model = res.data
this.loading = false
this.$message.success(res.msg)

View File

@ -93,11 +93,22 @@
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select">
<el-table-column type="selection" width="42" title="全选/反选" />
<el-table-column :prop="idkey" label="ID" width="60" sortable="custom" />
<el-table-column prop="nickname" label="昵称" min-width="120" sortable="custom" show-overflow-tooltip />
<el-table-column prop="username" label="账号" min-width="120" sortable="custom" show-overflow-tooltip />
<el-table-column prop="dept_names" label="部门" min-width="166" show-overflow-tooltip />
<el-table-column prop="post_names" label="职位" min-width="166" show-overflow-tooltip />
<el-table-column prop="role_names" label="角色" min-width="166" show-overflow-tooltip />
<el-table-column prop="avatar_id" label="头像" min-width="50">
<template slot-scope="scope">
<div style="height:25px">
<el-image style="height:25px;border-radius:50%;" fit="contain" :src="scope.row.avatar_url" :preview-src-list="[scope.row.avatar_url]" title="点击看大图" lazy scroll-container=".el-table__body-wrapper">
<div slot="error" class="image-slot">
<el-avatar :size="25" icon="el-icon-user-solid" />
</div>
</el-image>
</div>
</template>
</el-table-column>
<el-table-column prop="nickname" label="昵称" min-width="105" sortable="custom" show-overflow-tooltip />
<el-table-column prop="username" label="账号" min-width="105" sortable="custom" show-overflow-tooltip />
<el-table-column prop="dept_names" label="部门" min-width="155" show-overflow-tooltip />
<el-table-column prop="post_names" label="职位" min-width="155" show-overflow-tooltip />
<el-table-column prop="role_names" label="角色" min-width="155" show-overflow-tooltip />
<el-table-column prop="is_super" label="超管" min-width="73" sortable="custom">
<template slot-scope="scope">
<el-switch v-model="scope.row.is_super" :active-value="1" :inactive-value="0" @change="issuper([scope.row])" />
@ -126,8 +137,8 @@
<el-form ref="ref" :model="model" :rules="rules" label-width="100px" class="dialog-body" :style="{height:height+'px'}">
<el-form-item label="头像" prop="avatar_url">
<el-col :span="12">
<el-avatar v-if="model.avatar_url" shape="circle" fit="contain" :size="100" :src="model.avatar_url" />
<el-avatar v-else icon="el-icon-user-solid" :size="100" />
<el-avatar v-if="model.avatar_url" :src="model.avatar_url" :size="100" shape="circle" fit="contain" />
<el-avatar v-else :size="100" icon="el-icon-user-solid" />
</el-col>
<el-col :span="12">
<el-button size="mini" @click="fileUpload()">上传头像</el-button>