Commit 48d09670 authored by 杨硕's avatar 杨硕

修改分页

parent 79539864
This diff is collapsed.
This diff is collapsed.
<template>
<section class="process-list">
<div class="body">
<!-- 条件查询 -->
<section class="search-group">
<el-form style="padding: 0 0 0 10px" :inline="true" size="small" class="demo-form-inline">
<el-form-item label="标题">
<el-input
placeholder="请输入消息标题"
v-model.trim="queryParams.TITLE"
:maxlength="30"
clearable
/>
</el-form-item>
<el-form-item label="接收人">
<el-input
placeholder="请输入接收人"
v-model.trim="queryParams.recipientName"
:maxlength="30"
clearable
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getList">查询</el-button>
</el-form-item>
</el-form>
<div class="placeholder" />
<div style="padding:10px">
<div class="mb12 font-small-bold">系统消息列表</div>
<el-table
ref="multipleTable"
:data="examData"
border
>
<el-table-column type="index" width="50" label="序号" />
<el-table-column :show-overflow-tooltip="true" prop="fromSystem" label="系统" >
<template slot-scope="scope">
{{scope.row.fromSystem || '-'}}
</template>
</el-table-column>
<el-table-column prop="title" label="标题" width="180" :show-overflow-tooltip="true" >
<template slot-scope="scope">
{{scope.row.title || '-'}}
</template>
</el-table-column>
<el-table-column prop="content" label="内容" width="300" :show-overflow-tooltip="true" >
<template slot-scope="scope">
{{scope.row.content || '-'}}
</template>
</el-table-column>
<el-table-column prop="type" label="类型">
<template slot-scope="scope">
<span v-if="scope.row.messageType == '0'">消息</span>
<span v-else-if="scope.row.messageType == '1'">邮件</span>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="recipientName" label="接收人" >
<template slot-scope="scope">
{{scope.row.recipientName || '-'}}
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" label="创建时间" align="center" prop="createTime">
<template slot-scope="scope">
<span>{{ scope.row.createTime | transformDateByFormat('YYYY-MM-DD HH:mm') }}</span>
</template>
</el-table-column>
</el-table>
</div>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</section>
<!--emementUI表单-->
<el-dialog
title="系统消息信息"
:visible.sync="editFormVisible"
:close-on-click-modal="false"
class="edit-form"
>
<el-form
ref="editForm"
:model="editForm"
label-width="80px"
:rules="editFormRules"
>
<el-form-item label="标题" prop="apiCode">
<el-input v-model.trim="editForm.apiCode" :maxlength="30" auto-complete="off" />
</el-form-item>
<el-form-item label="接收人" prop="title">
<el-input v-model.trim="editForm.title" :maxlength="30" auto-complete="off" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button
@click.native="formHandleCancel('editForm')"
>取消</el-button>
<el-button
type="primary"
@click.native="formSave('editForm')"
>确 定</el-button>
</div>
</el-dialog>
<el-dialog
title="导入信息"
:visible.sync="importFormVisible"
:close-on-click-modal="false"
class="edit-form"
>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
multiple
:limit="3"
>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button @click.native="importFormVisible = false">取消</el-button>
<el-button
type="primary"
@click.native="importFormVisible = false"
>确 定</el-button>
</div>
</el-dialog>
</div>
</section>
</template>
<script>
import { listMes } from '@/api/mesCenter/bussinessMes'
export default {
name: 'BussinessMes',
components: {},
props: {},
data() {
return {
importFormVisible: false,
isAdd: false, // 添加表单标识符
form: {
apiCode: '',
apiName: ''
},
total: 0,
examData: [],
editForm: {},
editFormVisible: false,
condition: true,
editFormRules: {
groupName: [
{ required: true, message: '请输入业务名称', trigger: 'blur' }
],
groupCode: [
{ required: true, message: '请输入业务编号', trigger: 'blur' }
]
}, // 表单规范
tableData: [], // 存放模板分页数据
queryParams: {
currentPage: 1, // 默认显示页面为1
pageSize: 10, // 每页的数据条数
messageType: 0, // 消息类型(0:系统,1:邮件)
recipientName: undefined,
TITLE: undefined,
creatBy: undefined
}
}
},
computed: {},
watch: {},
created() {
this.getList()
},
mounted() {},
methods: {
/** 查询系统消息列表 */
getList() {
listMes(this.queryParams).then(response => {
this.examData = response.rows
this.total = response.total
})
},
handleEdit: function(index, row) {
this.editForm = JSON.parse(JSON.stringify(row))
this.isAdd = false
this.editFormVisible = true
},
// 添加api
addApi() {
const that = this
that.editForm = {}
that.isAdd = true
that.editFormVisible = true
},
// 直接点击保存的操作
formSave() {
this.$refs['editForm'].validate(valid => {
if (valid) {
const that = this
const loading = this.$loading({
lock: true,
text: 'Loading'
})
that.editFormVisible = false
loading.close()
this.$message({
type: 'success',
message: '添加成功!'
})
} else {
return false
}
})
},
// 点击取消
formHandleCancel() {
this.editForm = {}
this.editFormVisible = false
}
}
}
</script>
<style lang="stylus" scoped>
.process-list {
height: 100%;
font-size: 18px;
.placeholder{
height:14px;
background-color: #F4F4F4;
margin-bottom:10px
}
.form-group {
font-size: 18px;
}
.search-group {
width: 100%;
}
.laypage-group {
text-align: right;
}
.body {
height: 98%;
font-size: 18px;
background-color: #FFFFFF;
}
.item {
display: inline-block;
margin: 10px;
label {
font-weight: 400;
font-size: 15px;
margin-right: 8px;
}
.layui-input-inline {
width: 150px;
}
}
}
</style>
This diff is collapsed.
<template>
<section class="process-list">
<div class="body">
<!-- 条件查询 -->
<section class="search-group">
<el-form style="padding: 0 0 0 10px" :inline="true" size="small" class="demo-form-inline">
<el-form-item label="标题">
<el-input v-model.trim="queryParams.TITLE" clearable :maxlength="30" placeholder="请输入消息标题" />
</el-form-item>
<el-form-item label="接收人邮箱">
<el-input v-model.trim="queryParams.receiveMail" clearable :maxlength="30" placeholder="请输入邮箱" />
</el-form-item>
<el-form-item>
<el-button type="primary" size="small" @click="getList">查询</el-button>
</el-form-item>
</el-form>
<div class="placeholder" />
<div style="padding:10px">
<div class="mb12 font-small-bold">邮件消息列表</div>
<el-table
ref="multipleTable"
:data="examData"
border
style="width: 100%;"
>
<el-table-column type="index" width="50" label="序号" />
<el-table-column prop="fromSystem" label="系统" >
<template slot-scope="scope">
{{scope.row.fromSystem || '-'}}
</template>
</el-table-column>
<el-table-column prop="title" label="标题" width="180" :show-overflow-tooltip="true" >
<template slot-scope="scope">
{{scope.row.title || '-'}}
</template>
</el-table-column>
<el-table-column prop="content" label="内容" width="300" :show-overflow-tooltip="true" >
<template slot-scope="scope">
{{scope.row.content || '-'}}
</template>
</el-table-column>
<el-table-column prop="receiveMail" label="接收人邮箱" show-overflow-tooltip>
<template slot-scope="scope">
{{scope.row.receiveMail || '-'}}
</template>
</el-table-column>
<el-table-column prop="createTime" width="180" label="创建时间" show-overflow-tooltip>
<template slot-scope="scope">
{{scope.row.createTime | transformDateByFormat('YYYY-MM-DD HH:mm')}}
</template>
</el-table-column>
<!-- <el-table-column label="操作" width="250">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button type="primary" size="mini" @click="handleEdit(scope.$index, scope.row)">查看</el-button>-->
<!-- &lt;!&ndash; <el-button type="danger" size="mini" @click="handleDelete(scope.$index, scope.row)">删除</el-button>&ndash;&gt;-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
</div>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</section>
<!--emementUI表单-->
<el-dialog
title="消息信息"
:visible.sync="editFormVisible"
:close-on-click-modal="false"
class="edit-form"
:before-close="formHandleClose"
>
<el-form ref="editForm" :model="editForm" label-width="80px" :rules="editFormRules">
<el-form-item label="标题" prop="apiCode">
<el-input v-model.trim="editForm.apiCode" :maxlength="30" auto-complete="off" />
</el-form-item>
<el-form-item label="接收人邮箱" prop="title">
<el-input v-model.trim="editForm.title" :maxlength="30" auto-complete="off" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click.native="formHandleCancel('editForm')">取消</el-button>
<el-button type="primary" @click.native="formSave('editForm')">确 定</el-button>
</div>
</el-dialog>
<el-dialog
title="导入信息"
:visible.sync="importFormVisible"
:close-on-click-modal="false"
class="edit-form"
>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
multiple
:limit="3"
>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button @click.native="importFormVisible = false">取消</el-button>
<el-button type="primary" @click.native="importFormVisible = false">确 定</el-button>
</div>
</el-dialog>
</div>
</section>
</template>
<script>
import { listMes } from '@/api/mesCenter/bussinessMes'
export default {
name: 'MailMes',
components: {},
props: {},
data() {
return {
importFormVisible: false,
isAdd: false, // 添加表单标识符
total: 0, // 添加表单标识符
examData: [],
editForm: {},
editFormVisible: false,
condition: true,
editFormRules: {
groupName: [
{ required: true, message: '请输入业务名称', trigger: 'blur' }
],
groupCode: [{ required: true, message: '请输入业务编号', trigger: 'blur' }]
}, // 表单规范
tableData: [], // 存放模板分页数据
queryParams: {
pageNum: 1, // 默认显示页面为1
pageSize: 10, // 每页的数据条数
messageType: 1, // 消息类型(0:系统,1:邮件)
receiveMail: undefined,
TITLE: undefined
}
}
},
computed: {},
watch: {},
created() {
this.getList()
},
mounted() {
},
methods: {
/** 查询系统消息列表 */
getList() {
listMes(this.queryParams).then(response => {
this.examData = response.rows
this.total = response.total
}
)
},
handleEdit: function(index, row) {
this.editForm = JSON.parse(JSON.stringify(row))
this.isAdd = false
this.editFormVisible = true
},
// 添加api
addApi() {
const that = this
that.editForm = {}
that.isAdd = true
that.editFormVisible = true
},
// 直接点击保存的操作
formSave() {
this.$refs['editForm'].validate(valid => {
if (valid) {
const that = this
const loading = this.$loading({
lock: true,
text: 'Loading'
})
that.editFormVisible = false
loading.close()
this.$message({
type: 'success',
message: '添加成功!'
})
} else {
return false
}
})
},
// 点击取消
formHandleCancel() {
this.editForm = {}
this.editFormVisible = false
}
}
}
</script>
<style lang="stylus" scoped>
.process-list {
height: 100%;
font-size: 18px;
.placeholder{
height:14px;
background-color: #F4F4F4;
margin-bottom:10px
}
.form-group {
font-size: 18px;
}
.search-group {
width: 100%;
}
.laypage-group {
text-align: right;
}
.body {
height: 98%;
font-size: 18px;
background-color: #FFFFFF;
}
.item {
display: inline-block;
margin: 10px;
label {
font-weight: 400;
font-size: 15px;
margin-right: 8px;
}
.layui-input-inline {
width: 150px;
}
}
}
</style>
This diff is collapsed.
<template>
<section>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span>银企互联系统</span>
</div>
<div class="messBody">
<div v-for="(item) in columns" :key="item.businessId" class="oneSource">
<div style="display: inline-block;width: 200px">
<span>{{ item.mod }}</span>
<span>{{ item.sonMod }}</span>
</div>
模板:<el-button style="margin-left: 10px" type="primary" @click="showDio(item.template)">查看</el-button>
<div class="messHour">
<div v-show="item.infoType === 'time'" style="display: inline">
<span style="color:#333;margin-right: 5px">{{ item.infoText }}</span>
<el-input v-model.trim="item.timeValue" :maxlength="30" />
<span>{{ item.selectValue }}</span>
<!-- <el-select v-model="item.selectValue" style="margin-left: 10px">
<el-option value="1" label="分钟" />
<el-option value="2" label="小时" />
<el-option value="3" label="天"></el-option>
</el-select>-->
</div>
<div v-show="item.infoType === 'num'" style="display: inline">
<span style="color:#333;margin-right: 5px">{{ item.infoText }}</span>
<el-input v-model.trim="item.timeValue" :maxlength="30" />
</div>
<span style="color:#333;margin-left: 5px">发送通知</span>
</div>
</div>
</div>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span>内勤管理系统</span>
</div>
<div class="messBody">
<div v-for="(item) in columnsInn" :key="item.businessId" class="oneSource">
<div style="display: inline-block;width: 200px">
<span>{{ item.mod }}</span>
<span>{{ item.sonMod }}</span>
</div>
模板:<el-button style="margin-left: 10px" type="primary" @click="showDio(item.template)">查看</el-button>
<div class="messHour">
<div v-show="item.infoType === 'time'" style="display: inline">
<span style="color:#333;margin-right: 5px">{{ item.infoText }}</span>
<el-input v-model.trim="item.timeValue" :maxlength="30" />
<span>{{ item.selectValue }}</span>
<!-- <el-select v-model="item.selectValue" style="margin-left: 10px">
<el-option value="1" label="分钟" />
<el-option value="2" label="小时" />
<el-option value="3" label="天"></el-option>
</el-select>-->
</div>
<div v-show="item.infoType === 'num'" style="display: inline">
<span style="color:#333;margin-right: 5px">{{ item.infoText }}</span>
<el-input v-model.trim="item.timeValue" :maxlength="30" />
</div>
<span style="color:#333;margin-left: 5px">发送通知</span>
</div>
</div>
</div>
</el-card>
<el-dialog
title="通知模板"
:visible.sync="dialogVisible"
:before-close="handleClose"
width="30%"
>
<el-input
v-model="showText"
type="textarea"
:maxlength="30"
:rows="2"
placeholder="请输入内容"
/>
<span style="font-size: 12px;">${name}代表员工姓名,${item}代表物品名称,${tel}代表电话号码</span>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dialogVisible = false">确 定</el-button>
<el-button @click="dialogVisible = false">取 消</el-button>
</span>
</el-dialog>
</section>
</template>
<script>
export default {
name: 'MsgConfig',
components: {},
props: {},
data() {
return {
dialogVisible: false,
showText: '',
columns: [
{
businessId: '123',
mod: '线上点餐模块',
sonMod: '线上点餐',
template: '${name},请预订明天的菜品',
timeValue: '5',
selectValue: '小时',
infoType: 'time',
infoText: '提前'
},
{
businessId: '123',
mod: '现金管理',
sonMod: '账户管理',
template: '${name},用户您好账户余额不足,可能无法进行点餐',
timeValue: '5',
selectValue: '1',
infoType: 'num',
infoText: '当用户账户余额<'
},
{
businessId: '123',
mod: '资产管理',
sonMod: '库存管理',
template: '${item}库存物品数量过低,是否进行采购',
timeValue: '5',
selectValue: '1',
infoType: 'num',
infoText: '当库存中物品数量<'
}
],
columnsInn: [
{
businessId: '123',
mod: '请假管理',
sonMod: '请假提醒',
template: '${name}你已经超出了请假时间,请尽快报到或申请相关假期。',
timeValue: '5',
selectValue: '小时',
infoType: 'time',
infoText: '提前'
},
{
businessId: '123',
mod: '合同管理',
sonMod: '到期提醒',
template: '告知:${name}员工,将在45天后合同到期,请尽快确认此人是否续签,否则要做30日之内告知员工,准备办理相关离职手续。',
timeValue: '5',
selectValue: '小时',
infoType: 'time',
infoText: '提前'
},
{
businessId: '123',
mod: '合同管理',
sonMod: '资料不全提醒',
template: '告知:${name}员工,尽快上传续签合同的附件。',
timeValue: '5',
selectValue: '小时',
infoType: 'time',
infoText: '提前'
},
{
businessId: '123',
mod: '销假管理',
sonMod: '审批后提醒',
template: '${name}员工,已经将***年**月**日至****年**月**日进行了销假。',
timeValue: '5',
selectValue: '小时',
infoType: 'time',
infoText: '提前'
},
{
businessId: '123',
mod: '通行证管理',
sonMod: '交证提醒',
template: '${name}员工,请在****年**月**日之前将通行证交给政治部进行统一管理。',
timeValue: '5',
selectValue: '小时',
infoType: 'time',
infoText: '提前'
}
]
}
},
computed: {},
watch: {},
created() {
},
mounted() {
},
methods: {
showDio(text) {
this.dialogVisible = true
this.showText = text
},
handleClose() {
this.showText = ''
}
}
}
</script>
<style lang="stylus" scoped>
.messBody{
padding: 45px 0 181px 38px;
/*display: inline;*/
float: left;
.oneSource{
height: 44px;
}
.messHour{
display: inline;
margin-left 100px
}
.messOff{
color:rgba(153,153,153,1);
}
.messOn{
color:rgba(153,153,153,1);
}
.messRemarks{
width:295px;
height:302px;
font-size:14px;
font-family:Microsoft YaHei;
font-weight:400;
line-height:24px;
margin-left: 10px;
}
}
</style>
<style lang="stylus">
/*.el-input{
width: 200px;
margin: 0 8px 8px 0;
}*/
.messHour .el-input{
width: 76px;
}
</style>
This diff is collapsed.
<template>
<div class="operation-center-container">
<el-card v-for="(item,key) in operationCenterCards" :key="key" class="box-card" :body-style="{ padding: '0px 4px 0px 4px' }" shadow="naver">
<div slot="header" class="clearfix">
<div class="header-border" />
<span>{{ item.cardName }}</span>
</div>
<img :src="item.img" class="image">
</el-card>
</div>
</template>
<script>
export default {
name: 'Index',
components: {},
props: {},
data() {
return {
operationCenterCards: [
{
cardName: '流程设计器',
color: '#675e94',
img: require('@/assets/operationCenterPic/pic_item.jpg')
},
{
cardName: '集成管理',
color: '#e0a166',
img: require('@/assets/operationCenterPic/pic_item.jpg')
}
] // 运维中心卡片
}
},
computed: {},
watch: {},
created() {
},
mounted() {
},
methods: {}
}
</script>
<style lang="scss" scoped>
.header-border{
display: inline-block;
width: 4px;
height: 19px;
background-color: #675e94;
border-radius: 20%;
}
.image {
width: 100%;
display: block;
border-radius: 4px;
}
.clearfix:before,
.clearfix:after {
display: table;
content: "";
}
.clearfix:after {
clear: both
}
.box-card {
width: 335px;
}
</style>
<style lang="scss">
.operation-center-container{
.el-card{
border: none;
}
.el-card__header {
padding: 18px 4px
}
}
</style>
This diff is collapsed.
This diff is collapsed.
<template>
<div class="app-container">
<el-row :gutter="20">
<el-col :span="6" :xs="24">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>个人信息</span>
</div>
<div>
<div class="text-center">
<userAvatar :user="user" />
</div>
<ul class="list-group list-group-striped">
<li class="list-group-item">
<svg-icon icon-class="user" />用户名称
<div class="pull-right">{{ user.userName }}</div>
</li>
<li class="list-group-item">
<svg-icon icon-class="phone" />手机号码
<div class="pull-right">{{ user.phonenumber }}</div>
</li>
<li class="list-group-item">
<svg-icon icon-class="email" />用户邮箱
<div class="pull-right">{{ user.email }}</div>
</li>
<li class="list-group-item">
<svg-icon icon-class="tree" />所属部门
<div v-if="user.dept" class="pull-right">{{ user.dept.deptName }} / {{ postGroup }}</div>
</li>
<li class="list-group-item">
<svg-icon icon-class="peoples" />所属角色
<div class="pull-right">{{ roleGroup }}</div>
</li>
<li class="list-group-item">
<svg-icon icon-class="date" />创建时间
<div class="pull-right">{{ user.createTime }}</div>
</li>
</ul>
</div>
</el-card>
</el-col>
<el-col :span="18" :xs="24">
<el-card>
<div slot="header" class="clearfix">
<span>基本资料</span>
</div>
<el-tabs v-model="activeTab">
<el-tab-pane label="基本资料" name="userinfo">
<userInfo :user="user" />
</el-tab-pane>
<el-tab-pane label="修改密码" name="resetPwd">
<resetPwd :user="user" />
</el-tab-pane>
</el-tabs>
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import userAvatar from './userAvatar'
import userInfo from './userInfo'
import resetPwd from './resetPwd'
import { getUserProfile } from '@/api/system/user'
export default {
name: 'Profile',
components: { userAvatar, userInfo, resetPwd },
data() {
return {
user: {},
roleGroup: {},
postGroup: {},
activeTab: 'userinfo'
}
},
created() {
this.getUser()
},
methods: {
getUser() {
getUserProfile().then(response => {
this.user = response.data
this.roleGroup = response.roleGroup
this.postGroup = response.postGroup
})
}
}
}
</script>
<template>
<el-form ref="form" :model="user" :rules="rules" label-width="4.2vw">
<el-form-item label="旧密码" prop="oldPassword">
<el-input v-model.trim="user.oldPassword" placeholder="请输入旧密码" type="password" />
</el-form-item>
<el-form-item label="新密码" prop="newPassword">
<el-input v-model.trim="user.newPassword" placeholder="请输入新密码" type="password" />
</el-form-item>
<el-form-item label="确认密码" prop="confirmPassword">
<el-input v-model.trim="user.confirmPassword" placeholder="请确认密码" type="password" />
</el-form-item>
<el-form-item>
<el-button type="primary" size="mini" @click="submit">确 定</el-button>
<el-button type="danger" size="mini" @click="close">关闭</el-button>
</el-form-item>
</el-form>
</template>
<script>
import { updateUserPwd } from '@/api/system/user'
export default {
data() {
const equalToPassword = (rule, value, callback) => {
if (this.user.newPassword !== value) {
callback(new Error('两次输入的密码不一致'))
} else {
callback()
}
}
return {
test: '1test',
user: {
oldPassword: undefined,
newPassword: undefined,
confirmPassword: undefined
},
// 表单校验
rules: {
oldPassword: [
{ required: true, message: '旧密码不能为空', trigger: 'blur' }
],
newPassword: [
{ required: true, message: '新密码不能为空', trigger: 'blur' },
{ min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' }
],
confirmPassword: [
{ required: true, message: '确认密码不能为空', trigger: 'blur' },
{ required: true, validator: equalToPassword, trigger: 'blur' }
]
}
}
},
methods: {
submit() {
this.$refs['form'].validate(valid => {
if (valid) {
updateUserPwd(this.user.oldPassword, this.user.newPassword).then(
response => {
if (response.code === 200) {
this.$message({
message: '修改成功',
type: 'success'
})
}
}
)
}
})
},
close() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.push({ path: '/index' })
}
}
}
</script>
<template>
<div>
<img :src="options.img" title="点击上传头像" class="img-circle img-lg" @click="editCropper()">
<el-dialog title="头像信息" :visible.sync="open" width="41.3vw" append-to-body>
<el-row>
<el-col :xs="24" :md="12" :style="{height: '32.4vh'}">
<vue-cropper
ref="cropper"
:img="options.img"
:info="true"
:auto-crop="options.autoCrop"
:auto-crop-width="options.autoCropWidth"
:auto-crop-height="options.autoCropHeight"
:fixed-box="options.fixedBox"
@realTime="realTime"
/>
</el-col>
<el-col :xs="24" :md="12" :style="{height: '32.4vh'}">
<div class="avatar-upload-preview">
<img :src="previews.url" :style="previews.img">
</div>
</el-col>
</el-row>
<br>
<el-row>
<el-col :lg="2" :md="2">
<el-upload action="#" :http-request="requestUpload" :show-file-list="false" :before-upload="beforeUpload">
<el-button size="small">
上传
<i class="el-icon-upload el-icon--right" />
</el-button>
</el-upload>
</el-col>
<el-col :lg="{span: 1, offset: 2}" :md="2">
<el-button icon="el-icon-plus" size="small" @click="changeScale(1)" />
</el-col>
<el-col :lg="{span: 1, offset: 1}" :md="2">
<el-button icon="el-icon-minus" size="small" @click="changeScale(-1)" />
</el-col>
<el-col :lg="{span: 1, offset: 1}" :md="2">
<el-button icon="el-icon-refresh-left" size="small" @click="rotateLeft()" />
</el-col>
<el-col :lg="{span: 1, offset: 1}" :md="2">
<el-button icon="el-icon-refresh-right" size="small" @click="rotateRight()" />
</el-col>
<el-col :lg="{span: 2, offset: 6}" :md="2">
<el-button type="primary" size="small" @click="uploadImg()">提 交</el-button>
</el-col>
</el-row>
</el-dialog>
</div>
</template>
<script>
import store from '@/store'
import { VueCropper } from 'vue-cropper'
import { uploadAvatar } from '@/api/system/user'
export default {
components: { VueCropper },
props: {
user: {
type: Object
}
},
data() {
return {
// 是否显示弹出层
open: false,
// 弹出层标题
title: '修改头像',
options: {
img: store.getters.avatar, // 裁剪图片的地址
autoCrop: true, // 是否默认生成截图框
autoCropWidth: 200, // 默认生成截图框宽度
autoCropHeight: 200, // 默认生成截图框高度
fixedBox: true // 固定截图框大小 不允许改变
},
previews: {}
}
},
methods: {
// 修改头像
editCropper() {
this.open = true
},
// 覆盖默认的上传行为
requestUpload() {
},
// 向左旋转
rotateLeft() {
this.$refs.cropper.rotateLeft()
},
// 向右旋转
rotateRight() {
this.$refs.cropper.rotateRight()
},
// 图片缩放
changeScale(num) {
num = num || 1
this.$refs.cropper.changeScale(num)
},
// 上传预处理
beforeUpload(file) {
if (file.type.indexOf('image/') == -1) {
this.msgError('文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。')
} else {
const reader = new FileReader()
reader.readAsDataURL(file)
reader.onload = () => {
this.options.img = reader.result
}
}
},
// 上传图片
uploadImg() {
this.$refs.cropper.getCropBlob(data => {
const formData = new FormData()
formData.append('avatarfile', data)
uploadAvatar(formData).then(response => {
if (response.code === 200) {
this.open = false
this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl
this.$message({
message: '修改成功',
type: 'success'
})
}
this.$refs.cropper.clearCrop()
})
})
},
// 实时预览
realTime(data) {
this.previews = data
}
}
}
</script>
<template>
<el-form ref="form" :model="user" :rules="rules" label-width="80px">
<el-form-item label="用户昵称" prop="nickName">
<el-input v-model="user.nickName" />
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="user.phonenumber" maxlength="11" />
</el-form-item>
<el-form-item label="邮箱" prop="email">
<el-input v-model="user.email" maxlength="50" />
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="user.sex">
<el-radio label="0"></el-radio>
<el-radio label="1"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-button type="danger" size="mini" @click="close">关闭</el-button>
<el-button type="primary" size="mini" @click="submit">保存</el-button>
</el-form-item>
</el-form>
</template>
<script>
import { updateUserProfile } from '@/api/system/user'
export default {
props: {
user: {
type: Object
}
},
data() {
return {
// 表单校验
rules: {
nickName: [
{ required: true, message: '用户昵称不能为空', trigger: 'blur' }
],
email: [
{ required: true, message: '邮箱地址不能为空', trigger: 'blur' },
{
type: 'email',
message: "'请输入正确的邮箱地址",
trigger: ['blur', 'change']
}
],
phonenumber: [
{ required: true, message: '手机号码不能为空', trigger: 'blur' },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: '请输入正确的手机号码',
trigger: 'blur'
}
]
}
}
},
methods: {
submit() {
this.$refs['form'].validate(valid => {
if (valid) {
updateUserProfile(this.user).then(response => {
if (response.code === 200) {
this.$message({
message: '修改成功',
type: 'success'
})
}
})
}
})
},
close() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.push({ path: '/index' })
}
}
}
</script>
This diff is collapsed.
<template>
<div class="app-container">
<el-row :gutter="20">
<el-col :span="6" :xs="24">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>个人信息</span>
</div>
<div>
<div class="text-center">
<userAvatar :user="user" />
</div>
<ul class="list-group list-group-striped">
<li class="list-group-item">
<svg-icon icon-class="user" />用户名称
<div class="pull-right">{{ user.userName }}</div>
</li>
<li class="list-group-item">
<svg-icon icon-class="phone" />手机号码
<div class="pull-right">{{ user.phonenumber }}</div>
</li>
<li class="list-group-item">
<svg-icon icon-class="email" />用户邮箱
<div class="pull-right">{{ user.email }}</div>
</li>
<li class="list-group-item">
<svg-icon icon-class="tree" />所属部门
<div v-if="user.dept" class="pull-right">{{ user.dept.deptName }} / {{ postGroup }}</div>
</li>
<li class="list-group-item">
<svg-icon icon-class="peoples" />所属角色
<div class="pull-right">{{ roleGroup }}</div>
</li>
<li class="list-group-item">
<svg-icon icon-class="date" />创建时间
<div class="pull-right">{{ user.createTime }}</div>
</li>
</ul>
</div>
</el-card>
</el-col>
<el-col :span="18" :xs="24">
<el-card>
<div slot="header" class="clearfix">
<span>基本资料</span>
</div>
<el-tabs v-model="activeTab">
<el-tab-pane label="基本资料" name="userinfo">
<userInfo :user="user" />
</el-tab-pane>
<el-tab-pane label="修改密码" name="resetPwd">
<resetPwd :user="user" />
</el-tab-pane>
</el-tabs>
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import userAvatar from './userAvatar'
import userInfo from './userInfo'
import resetPwd from './resetPwd'
import { getUserProfile } from '@/api/system/user'
export default {
name: 'Profile',
components: { userAvatar, userInfo, resetPwd },
data() {
return {
user: {},
roleGroup: {},
postGroup: {},
activeTab: 'userinfo'
}
},
created() {
this.getUser()
},
methods: {
getUser() {
getUserProfile().then(response => {
this.user = response.data
this.roleGroup = response.roleGroup
this.postGroup = response.postGroup
})
}
}
}
</script>
<template>
<el-form ref="form" :model="user" :rules="rules" label-width="4.2vw">
<el-form-item label="旧密码" prop="oldPassword">
<el-input v-model.trim="user.oldPassword" placeholder="请输入旧密码" type="password" />
</el-form-item>
<el-form-item label="新密码" prop="newPassword">
<el-input v-model.trim="user.newPassword" placeholder="请输入新密码" type="password" />
</el-form-item>
<el-form-item label="确认密码" prop="confirmPassword">
<el-input v-model.trim="user.confirmPassword" placeholder="请确认密码" type="password" />
</el-form-item>
<el-form-item>
<el-button type="primary" size="mini" @click="submit">确 定</el-button>
<el-button type="danger" size="mini" @click="close">关闭</el-button>
</el-form-item>
</el-form>
</template>
<script>
import { updateUserPwd } from '@/api/system/user'
export default {
data() {
const equalToPassword = (rule, value, callback) => {
if (this.user.newPassword !== value) {
callback(new Error('两次输入的密码不一致'))
} else {
callback()
}
}
return {
test: '1test',
user: {
oldPassword: undefined,
newPassword: undefined,
confirmPassword: undefined
},
// 表单校验
rules: {
oldPassword: [
{ required: true, message: '旧密码不能为空', trigger: 'blur' }
],
newPassword: [
{ required: true, message: '新密码不能为空', trigger: 'blur' },
{ min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' }
],
confirmPassword: [
{ required: true, message: '确认密码不能为空', trigger: 'blur' },
{ required: true, validator: equalToPassword, trigger: 'blur' }
]
}
}
},
methods: {
submit() {
this.$refs['form'].validate(valid => {
if (valid) {
updateUserPwd(this.user.oldPassword, this.user.newPassword).then(
response => {
if (response.code === 200) {
this.$message({
message: '修改成功',
type: 'success'
})
}
}
)
}
})
},
close() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.push({ path: '/index' })
}
}
}
</script>
This diff is collapsed.
<template>
<el-form ref="form" :model="user" :rules="rules" label-width="80px">
<el-form-item label="用户昵称" prop="nickName">
<el-input v-model="user.nickName" />
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="user.phonenumber" maxlength="11" />
</el-form-item>
<el-form-item label="邮箱" prop="email">
<el-input v-model="user.email" maxlength="50" />
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="user.sex">
<el-radio label="0"></el-radio>
<el-radio label="1"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-button type="danger" size="mini" @click="close">关闭</el-button>
<el-button type="primary" size="mini" @click="submit">保存</el-button>
</el-form-item>
</el-form>
</template>
<script>
import { updateUserProfile } from '@/api/system/user'
export default {
props: {
user: {
type: Object
}
},
data() {
return {
// 表单校验
rules: {
nickName: [
{ required: true, message: '用户昵称不能为空', trigger: 'blur' }
],
email: [
{ required: true, message: '邮箱地址不能为空', trigger: 'blur' },
{
type: 'email',
message: "'请输入正确的邮箱地址",
trigger: ['blur', 'change']
}
],
phonenumber: [
{ required: true, message: '手机号码不能为空', trigger: 'blur' },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: '请输入正确的手机号码',
trigger: 'blur'
}
]
}
}
},
methods: {
submit() {
this.$refs['form'].validate(valid => {
if (valid) {
updateUserProfile(this.user).then(response => {
if (response.code === 200) {
this.$message({
message: '修改成功',
type: 'success'
})
}
})
}
})
},
close() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.push({ path: '/index' })
}
}
}
</script>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -172,8 +172,8 @@
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
:page.sync="queryParams.page"
:limit.sync="queryParams.rows"
@pagination="getList"
/>
<!-- 添加或修改参数配置对话框 -->
......@@ -364,8 +364,8 @@ export default {
dateRange: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
page: 1,
rows: 10,
dictName: undefined,
dictType: undefined,
flag: undefined
......@@ -487,7 +487,7 @@ export default {
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.queryParams.page = 1
this.getList()
},
/** 重置按钮操作 */
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment