修改:会员接口权限完善;缓存改进(不清空用户和会员token);apidoc接口文档升级(V5)完善;代码、页面优化。
Signed-off-by: skyselang <215817969@qq.com>
This commit is contained in:
parent
cab6e456d6
commit
10300de07b
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
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
|
@ -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
|
||||
})
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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(() => {
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue