Commit 25913730 authored by 杨硕's avatar 杨硕

修改按钮

parent f329a8f0
......@@ -25,15 +25,21 @@
class="filter-item"
type="primary"
size="small"
style="padding: 8px 7px;"
icon="el-icon-search"
@click="getList"
>查询</el-button>
<!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>-->
</el-form-item>
<el-form-item style="float: right">
<el-button
style="padding: 8px 7px;"
class="filter-item"
type="primary"
size="small"
icon="el-icon-plus"
@click="handleAdd"
>新增</el-button>
<!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>-->
</el-form-item>
</el-form>
......@@ -98,13 +104,14 @@
<!-- >删除</el-button>-->
<!-- </template>-->
<template slot-scope="scope">
<el-button
v-hasPermi="['sys:dept:update']"
size="mini"
type="text"
style="color: #49cec9"
@click="handleUpdate(scope.row)"
>修改</el-button>
<!-- <el-button-->
<!-- v-hasPermi="['sys:dept:update']"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- style="color: #49cec9"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- >修改</el-button>-->
<coolbutton style="color: #49cec9" :type="typeParent" :name="updataName" :size="size" :haspermi="updateHaspermi" @btn-click="handleUpdate(scope.row)" />
<!-- <el-switch-->
<!-- v-model="scope.row.flag"-->
<!-- v-hasPermi="['system:dept:toggle']"-->
......@@ -112,19 +119,21 @@
<!-- inactive-value="1"-->
<!-- @change="handleStatusChange(scope.row)"-->
<!-- />-->
<el-button
v-hasPermi="['sys:dept:add']"
size="mini"
type="text"
@click="handleAdd(scope.row)"
>新增</el-button>
<el-button
v-if="scope.row.parentId !== 0"
v-hasPermi="['sys:dept:delete']"
size="mini"
type="text"
@click="handleDelete(scope.row)"
>删除</el-button>
<!-- <el-button-->
<!-- v-hasPermi="['sys:dept:add']"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- @click="handleAdd(scope.row)"-->
<!-- >新增</el-button>-->
<coolbutton :type="typeParent" :name="addName" :size="size" :haspermi="addHaspermi" @btn-click="handleAdd(scope.row)" />
<!-- <el-button-->
<!-- v-if="scope.row.parentId !== 0"-->
<!-- v-hasPermi="['sys:dept:delete']"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- >删除</el-button>-->
<coolbutton :type="typeParent" :name="nameParent" :size="size" :icon="delicon" :haspermi="delHaspermi" @btn-click="handleDelete(scope.row)" />
</template>
</el-table-column>
</el-table>
......@@ -196,12 +205,34 @@
import { addDept, delDept, getDept, listDept, listDeptExcludeChild, updateDept } from '@/api/system/dept'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import Coolbutton from '@/components/coolbutton'
export default {
name: 'Dept',
components: { Treeselect },
components: { Treeselect, Coolbutton },
data() {
return {
typeParent: 'text',
typePrimary: 'primary',
typeSuccess: 'success',
nameParent: '删除',
resetName: '重置',
addName: '新增',
queryName: '查询',
exportName: '导出',
updataName: '修改',
size: 'mini',
smallSize: 'small',
delicon: 'el-icon-delete',
addIcon: 'el-icon-plus',
exportIcon: 'el-icon-download',
queryIcon: 'el-icon-search',
resetIcon: '',
delHaspermi: ['sys:dept:delete'],
resetHaspermi: ['sys:user:resetPwd'],
updateHaspermi: ['sys:dept:update'],
addHaspermi: ['sys:dept:add'],
exportHaspermi: ['sys:role:export'],
queryHaspermi: ['sys:menu:query'],
// 搜索条件
showSearch: true,
// 遮罩
......
<template>
<div class="user-manage">
<div class="search" style="border-bottom: 14px solid #f4f4f4">
<el-form v-show="showSearch" ref="queryForm" style="padding: 0 0 0 10px" class="formClass" :model="queryParams" :inline="true" label-width="auto">
<!-- <el-form-item label="用户类型" prop="name" class="noMargin">-->
<!-- <el-input-->
<!-- v-model="queryParams.name"-->
<!-- placeholder="请输入用户类型"-->
<!-- clearable-->
<!-- :maxlength="30"-->
<!-- size="small"-->
<!-- style="width: 150px"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="登录名" prop="username">
<div class="app-container">
<el-form v-show="showSearch" ref="queryForm" style="width: 100%" :model="queryParams" :inline="true">
<el-form-item label="字典名称" prop="dictType">
<el-select v-model="queryParams.dictType" placeholder="请选择字典名称" clearable size="small">
<el-option
v-for="item in typeOptions"
:key="item.businessId"
:label="item.dictName"
:value="item.dictType"
/>
</el-select>
</el-form-item>
<el-form-item label="字典标签" prop="dictLabel">
<el-input
v-model="queryParams.username"
placeholder="请输入登录名"
v-model="queryParams.dictLabel"
placeholder="请输入字典标签"
clearable
:maxlength="30"
size="small"
style="width: 150px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="flag">
<el-select
v-model="queryParams.flag"
placeholder="请选择用户状态"
clearable
size="small"
style="width: 150px"
>
<el-select v-model="queryParams.flag" placeholder="数据状态" clearable size="small">
<el-option
v-for="dict in statusOptions"
:key="dict.dictValue"
......@@ -39,153 +32,135 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" style="padding: 8px 7px;" icon="el-icon-search" size="small" @click="handleQuery">查询</el-button>
<el-button type="primary" style="padding: 8px 7px;" icon="el-icon-refresh" size="small" @click="resetQuery">重置</el-button>
<el-button type="primary" size="small" @click="handleQuery">搜索</el-button>
<el-button size="small" @click="resetQuery">重置</el-button>
</el-form-item>
<el-form-item style="float: right">
<!-- <el-button-->
<!-- v-hasPermi="['sys:user:add']"-->
<!-- style="padding: 8px 7px;"-->
<!-- type="primary"-->
<!-- size="small"-->
<!-- icon="el-icon-plus"-->
<!-- @click="handleFormAdd"-->
<!-- >表单页新增模板</el-button>-->
<el-button
v-hasPermi="['sys:user:add']"
style="padding: 8px 7px;"
type="primary"
size="small"
icon="el-icon-plus"
@click="handleAdd"
>新增</el-button>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<!-- <el-button-->
<!-- v-hasPermi="['sys:dict:add']"-->
<!-- type="primary"-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- >新增-->
<!-- </el-button>-->
<coolbutton :type="typePrimary" :name="addName" :icon="addIcon" :size="size" :haspermi="addHaspermi" @btn-click="handleAdd" />
</el-col>
<el-col :span="1.5">
<!-- <el-button-->
<!-- v-hasPermi="['sys:dict:update']"-->
<!-- type="success"-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- >修改-->
<!-- </el-button>-->
<coolbutton :type="typeSuccess" :name="updataName" :icon="updateIcon" :size="size" :haspermi="updateHaspermi" @btn-click="handleUpdate" />
</el-col>
<el-col :span="1.5">
<!-- <el-button-->
<!-- v-hasPermi="['sys:dict:delete']"-->
<!-- type="danger"-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- >删除-->
<!-- </el-button>-->
<coolbutton :type="typeDanger" :name="nameParent" :icon="delicon" :size="size" :haspermi="delHaspermi" @btn-click="handleDelete" />
</el-col>
<el-col :span="1.5">
<el-button
style="padding: 8px 7px;"
v-has-permi="['sys:dict:export']"
type="warning"
icon="el-icon-upload"
size="small"
@click="handleImport"
>导入</el-button>
<el-button
v-hasPermi="['sys:user:export']"
style="padding: 8px 7px;"
type="success"
size="small"
icon="el-icon-download"
@click="handleExport"
>导出</el-button>
</el-form-item>
</el-form>
</div>
<el-row :gutter="20">
<!--部门数据-->
<el-col :span="4" :xs="24" style="background: #f4f4f4;height: 100%">
<div class="head-container" style="padding: 10px 6px;background: #FFFFFF">
<el-input
v-model="deptName"
placeholder="请输入部门名称"
clearable
:maxlength="30"
size="mini"
/>
</div>
<div class="head-container" style="overflow-y:auto;min-height: 70.6vh;height: calc(100% - 48px);background: #ffffff;padding-right: 5px">
<el-tree
ref="tree"
:key="currentNodeKey"
:data="deptOptionsTree"
:props="defaultProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
default-expand-all
highlight-current
:current-node-key="currentNode"
@node-click="handleNodeClick"
>
<div slot-scope="{ node }" style="white-space: nowrap;text-overflow: ellipsis;overflow: hidden" class="custom-tree-node">
<span style="font-size: 14px" :title="node.label">{{ node.label }}</span>
</div>
</el-tree>
</div>
@click="handleExport"
>导出
</el-button>
</el-col>
<!--用户数据-->
<el-col :span="20" :xs="24">
<div class="mb12 font-small-bold" style="margin-top: 20px">用户管理列表</div>
<el-table
v-loading="loading"
style="padding-right: 10px"
:data="userList"
>
<el-table-column type="index" label="序号" width="50" />
<el-table-column
label="用户编号"
>
<template v-slot:default="scope">
{{ scope.row.businessId || '-' }}
</template>
</el-table-column>
<el-table-column label="登录名" prop="username" :show-overflow-tooltip="true">
<right-toolbar :show-search.sync="showSearch" @queryTable="getList" />
</el-row>
<div class="placeholder" />
<div style="padding:10px">
<div class="mb12 font-small-bold">字典参数列表</div>
<el-table v-loading="loading" :data="dataList" border @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column :show-overflow-tooltip="true" label="参数编码" prop="dictCode">-->
<!-- <template slot-scope="scope">-->
<!-- {{ scope.row.dictCode || '-' }}-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="字典编码" align="center" prop="businessId" />
<el-table-column :show-overflow-tooltip="true" label="字典标签" prop="dictLabel">
<template slot-scope="scope">
{{ scope.row.username || '-' }}
{{ scope.row.dictLabel || '-' }}
</template>
</el-table-column>
<el-table-column label="用户名称" prop="userType" :show-overflow-tooltip="true">
<el-table-column :show-overflow-tooltip="true" label="字典键值" prop="dictValue">
<template slot-scope="scope">
{{ scope.row.name || '-' }}
{{ scope.row.dictValue || '-' }}
</template>
</el-table-column>
<el-table-column label="手机号" prop="phone" :show-overflow-tooltip="true">
<el-table-column :show-overflow-tooltip="true" label="字典排序" prop="dictSort">
<template slot-scope="scope">
{{ scope.row.phone || '-' }}
{{ isNaN(scope.row.dictSort) ? '-' : scope.row.dictSort }}
</template>
</el-table-column>
<el-table-column width="120" label="状态" prop="flag">
<el-table-column label="状态" align="center" prop="flag">
<template slot-scope="scope">
<el-switch
v-model="scope.row.flag"
class="switchDisabledStyle"
inactive-value="0"
active-value="1"
@click.native="handleStatusChange(scope.row)"
@click.native="changeStatus(scope.row)"
/>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" label="创建时间" prop="createDate" width="160">
<el-table-column :show-overflow-tooltip="true" label="备注" prop="remarks">
<template slot-scope="scope">
{{ scope.row.remarks || '-' }}
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" label="创建时间" prop="createDate">
<template slot-scope="scope">
<span>{{ scope.row.createDate | transformDateByFormat('YYYY-MM-DD HH:mm') }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
width="180"
class-name="small-padding fixed-width"
>
<el-table-column label="操作" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
v-hasPermi="['sys:user:update']"
size="mini"
type="text"
style="color: #49cec9"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
v-hasPermi="['sys:user:resetPwd']"
size="mini"
type="text"
:loading="addLoading"
@click="handleResetPwd(scope.row)"
>重置</el-button>
<el-button
v-if="scope.row.businessId !== 1"
v-hasPermi="['sys:user:delete']"
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
<!-- <el-button-->
<!-- v-hasPermi="['sys:dictConfig:edit']"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- style="color: #49cec9"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- >修改</el-button>-->
<coolbutton style="color: #49cec9" :type="typeParent" :name="updataName" :size="size" :haspermi="editHaspermi" @btn-click="handleUpdate(scope.row)" />
<!-- <el-button-->
<!-- v-hasPermi="['sys:dictConfig:remove']"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- >删除</el-button>-->
<coolbutton :type="typeParent" :icon="delicon" :name="nameParent" :size="size" :haspermi="removeHaspermi" @btn-click="handleDelete(scope.row)" />
<!-- <el-switch-->
<!-- v-model="scope.row.status"-->
<!-- v-hasPermi="['sys:dictConfig:toggle']"-->
<!-- disabled-->
<!-- class="switchDisabledStyle"-->
<!-- active-value="0"-->
<!-- inactive-value="1"-->
<!-- @click.native="changeStatus(scope.row)"-->
<!-- />-->
</template>
</el-table-column>
</el-table>
</div>
<pagination
v-show="total>0"
:total="total"
......@@ -193,523 +168,175 @@
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
</el-row>
<!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="用户昵称" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入用户昵称" />
<el-form-item label="字典类型">
<el-input v-model.trim="form.dictType" :disabled="true" show-word-limit maxlength="30" placeholder="请输入字典类型" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户性别">
<el-select v-model="form.sex" placeholder="请选择">
<el-option
v-for="dict in sexOptions"
:key="dict.dictValue"
:label="dict.label"
:value="dict.value"
/>
</el-select>
<el-form-item label="参数标签" prop="dictLabel">
<el-input v-model.trim="form.dictLabel" show-word-limit maxlength="30" placeholder="请输入参数标签" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="手机号码" prop="phone">
<el-input
v-model.trim="form.phone"
value="phone"
placeholder="请输入手机号码"
maxlength="11"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="邮箱" prop="email">
<el-input v-model.trim="form.email" placeholder="请输入邮箱" maxlength="25" />
<el-form-item label="参数键值" prop="dictValue">
<el-input v-model.trim="form.dictValue" show-word-limit maxlength="300" placeholder="请输入参数键值" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item v-if="form.businessId == undefined" label="登录名" prop="username">
<el-input v-model="form.username" placeholder="请输入登录名" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-if="form.businessId == undefined" label="用户密码" prop="password">
<el-input v-model="form.password" placeholder="请输入用户密码" type="password" />
<el-form-item label="参数排序" prop="dictSort">
<el-input-number v-model="form.dictSort" style="width: 100%" controls-position="right" :min="0" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="用户名称" prop="name">
<el-input v-model.trim="form.name" placeholder="请输入用户名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证号" prop="idNumber">
<el-input v-model.trim="form.idNumber" placeholder="请输入身份证号" maxlength="18" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item v-if="form.businessId == undefined" label="状态">
<el-radio-group v-model="form.flag">
<el-form-item label="参数状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
v-for="dict in statusOptions.filter(item => { return item.dictValue })"
:key="dict.dictValue"
:label="dict.dictValue"
>{{ dict.dictLabel }}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="部门" prop="postId">
<treeSelect
v-model="form.deptId"
:disable-branch-nodes="true"
:options="deptChildren"
:show-count="true"
placeholder="请选择归属部门"
@input="changeValue"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="角色" prop="postId">
<el-select v-model="form.roleList" multiple placeholder="请选择" style="width: 100%" @change="roleChange">
<el-option
v-for="item in options"
:key="item.businessId"
:label="item.roleName"
:value="item.businessId"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注">
<el-input v-model="form.remarks" type="textarea" placeholder="请输入内容" />
<el-form-item label="备注" prop="remarks">
<el-input v-model.trim="form.remarks" type="textarea" show-word-limit maxlength="200" placeholder="请输入内容" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel">取 消</el-button>
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<!-- 用户导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
:on-change="employeeUpload"
:on-remove="handleRemove"
:before-remove="beforeRemove"
:on-preview="handlePreview"
:file-list="fileList"
drag
>
<i class="el-icon-upload" />
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div slot="tip" class="el-upload__tip">
<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
<el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
</div>
<div slot="tip" class="el-upload__tip" style="color:red">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button @click="upload.open = false">取 消</el-button>
<el-button :loading="importLoading" type="primary" @click="submitFileForm">确 定</el-button>
</div>
</el-dialog>
<el-dialog
:close-on-click-modal="false"
title="修改密码"
width="30%"
custom-class="paddingFixed"
:visible.sync="resetPwdDiaLog"
@close="$refs.ruleForm.resetFields(),pwdType = 'password'"
>
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="auto" class="demo-ruleForm">
<el-form-item label="新密码" prop="newPassword">
<el-input
id="restPwd"
v-model.trim="ruleForm.newPassword"
:show-password="false"
autocomplete="off"
auto-complete="off"
:type="pwdType"
placeholder="请输入8~16位,由字母和数字混合所组成的新密码"
:maxlength="16"
>
<svg-icon
slot="suffix"
:style="{ width: '18px', height: '18px', verticalAlign: pwdTypeMap[pwdType] ? 'middle' : '-6px', marginRight: '5px', cursor: 'pointer' }"
:icon-class="pwdType === 'password' ? 'eye' : 'eye-open'"
@click.stop="pwdTypeMap[pwdType] ? pwdType = 'password' : pwdType = 'text'"
/>
</el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="resetPwdDiaLog = false">取 消</el-button>
<el-button :disabled="userRestLoading" :loading="userRestLoading" type="primary" @click="handleResetPwdSure">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
listUser,
getUser,
delUser,
addUser,
updateUser,
exportUser,
resetUserPwd,
changeUserStatus,
importExcel,
uploadFalseFile,
importTemplate
// userLoginManage
} from '@/api/system/user'
import { getToken } from '@/utils/auth'
import { getChildrenDept, treeselect } from '@/api/system/dept'
import TreeSelect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import { getlistRole, listRole } from '@/api/system/role'
import { listData, getData, delData, addData, updateData, exportData, checkDictLabelUnique } from '@/api/system/dict/data'
import { listType, getType, updateType } from '@/api/system/dict/type'
import dictCons from '@/utils/dictCons'
import Coolbutton from '@/components/coolbutton'
export default {
name: 'User',
components: { TreeSelect },
name: 'Data',
components: {Coolbutton },
data() {
var trueGroupName = (rule, value, callback) => {
if (value && !value.trim()) {
return callback(new Error('请输入正确的用户昵称'))
}
const verifyIDProp = (rule, value, callback) => {
if (value === '' || value === undefined || value === null) {
callback()
}
var passwordCheck = (rule, value, callback) => {
const pattern = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/
if (!pattern.test(value)) {
callback(new Error('新密码必须为数字与字母的组合'))
}
} else if (!this.form.dictLabelOne || this.form.dictLabelOne !== this.form.dictLabel) {
// 验证编码是否重复
checkDictLabelUnique(this.form.dictLabel).then(
(res) => {
if (res.code === 200) {
if (res.msg === '0') {
callback()
}
var phone = (rule, value, callback) => {
if (!value) {
return callback(new Error('请输入手机号'))
} else if (res.msg === '1') {
callback(new Error('字典标签已存在'))
} else {
callback()
}
}
var idNumber = (rule, value, callback) => {
if (!value) {
return callback(new Error('请输入身份证号'))
} else {
callback()
}
}
var name = (rule, value, callback) => {
if (!value) {
return callback(new Error('请输入用户类型'))
).catch(err => {
callback()
})
} else {
callback()
}
}
return {
pwdTypeMap: {
text: true,
password: false
},
pwdType: 'password',
typeParent: 'text',
typePrimary: 'primary',
typeSuccess: 'success',
typeDanger: 'danger',
nameParent: '删除',
resetName: '重置',
addName: '新增',
queryName: '查询',
exportName: '导出',
updataName: '修改',
size: 'mini',
smallSize: 'small',
delicon: 'el-icon-delete',
addIcon: 'el-icon-plus',
exportIcon: 'el-icon-download',
queryIcon: 'el-icon-search',
updateIcon: 'el-icon-edit',
resetIcon: '',
delHaspermi: ['sys:dict:delete'],
removeHaspermi: ['sys:dictConfig:remove'],
resetHaspermi: ['sys:user:resetPwd'],
updateHaspermi: ['sys:dict:update'],
editHaspermi: ['sys:dictConfig:edit'],
addHaspermi: ['sys:dict:add'],
exportHaspermi: ['sys:dict:export'],
queryHaspermi: ['sys:menu:query'],
// 遮罩层
loading: true,
// 导入列表
fileList: [],
loading: false,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 用户表格数据
userList: null,
// 显示查询条件
showSearch: true,
// 字典表格数据
dataList: [],
// 默认字典类型
defaultDictType: '',
// 弹出层标题
title: '',
resetPwdDiaLog: false,
// 部门树选项
deptOptions: undefined,
deptOptionsTree: undefined,
currentNode: undefined,
currentNodeKey: false,
options: [],
// 是否显示弹出层
open: false,
// 部门名称
deptName: undefined,
// 默认密码
initPassword: undefined,
importLoading: false,
// // 时间范围
// dateRange: ['', ''],
// 状态数据字典
statusOptions: [
{
dictLabel: '启用',
dictValue: '1'
},
{
dictLabel: '停用',
dictValue: '0'
}
],
// 性别状态字典
sexOptions: [
{ label: '男', value: '0' },
{ label: '女', value: '1' }
],
// 岗位选项
postOptions: [],
// 角色选项
roleOptions: [],
// 子部门信息
deptChildren: [],
// 表单参数
form: {
username: '',
phone: '',
email: '',
idNumber: '',
name: ''
},
defaultProps: {
children: 'children',
label: 'label'
},
ruleForm: {
newPassword: '',
row: undefined
},
// 用户导入参数
upload: {
// 是否显示弹出层(用户导入)
open: false,
// 弹出层标题(用户导入)
title: '',
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: 'Bearer ' + getToken() },
// 上传的地址
url: process.env.VUE_APP_BASE_API + '/system/user/importExcel'
},
statusOptions: [],
// 类型数据字典
typeOptions: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
username: undefined,
email: undefined,
phone: undefined,
nickName: undefined,
idNumber: undefined,
userType: undefined,
allowLogin: undefined,
flag: undefined,
deptId: undefined,
name: undefined
dictName: undefined,
dictType: undefined,
status: '',
flag: undefined
},
// 表单参数
form: {},
// 表单校验
rules: {
username: [
{ required: true, message: '请输入登录名', trigger: 'blur' }
],
nickName: [
{ required: false, message: '请输入用户昵称', trigger: 'blur' },
{ validator: trueGroupName, message: '请输入正确的用户昵称' }
dictLabel: [
{ required: true, message: '请输入参数标签', trigger: 'blur' }
// { validator: verifyIDProp, trigger: 'blur' }
],
deptId: [
{ required: false, message: '请输入归属部门', trigger: 'blur' }
dictValue: [
{ required: true, message: '请输入参数键值', trigger: 'blur' }
],
password: [
{ required: true, message: '请输入用户密码', trigger: 'blur' },
{ min: 8, max: 16, message: '长度在 8 到 16 个字符', trigger: 'blur' },
{
validator: passwordCheck,
trigger: 'blur'
}
],
name: [
{ require: true, message: '用户姓名不能为空', trigger: 'blur' },
{ validator: name, trigger: 'blur' }
],
email: [
{ required: false, message: '请输入邮箱地址', trigger: 'blur' },
{
type: 'email',
message: '请输入正确的邮箱地址',
trigger: ['blur', 'change']
}
],
newPassword: [
{ required: true, message: '请输入密码', trigger: 'blur' },
{ min: 8, max: 16, message: '长度在 8 到 16 个字符', trigger: 'blur' },
{ validator: passwordCheck, trigger: 'blur' }
],
phone: [
{ required: false, message: '请输入手机号码', trigger: 'blur' },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: '请输入正确的手机号码',
trigger: 'blur'
},
{ validator: phone, trigger: 'blur' }
],
idNumber: [
{ require: true, message: '请输入身份证号', trigger: 'blur' },
{ min: 18, max: 18, message: '长度18字符', trigger: 'blur' },
{ validator: idNumber, trigger: 'blur' }
dictSort: [
{ required: true, message: '请输入参数顺序', trigger: 'blur' }
]
},
userInfoLoading: false,
userImportLoading: false,
userRestLoading: false,
addLoading: false
}
},
/** 路由离开前存储筛选条件*/
beforeRouteLeave(to, from, next) {
this.$store.dispatch('searchSave/searchParamsSet', {
path: this.$route.path,
param: {
...this.queryParams
}
})
next()
},
watch: {
// 根据名称筛选部门树
deptName(val) {
this.$refs.tree.filter(val)
manageLoading: false
}
},
created() {
if (this.$store.getters.searchParams[this.$route.path]) {
const { searchParams } = this.$store.getters; const { path } = this.$route
const param = JSON.parse(searchParams[path]) // 保留着的查询条件
this.queryParams = { ...param }
}
this.getList()
this.getTreeSelect()
this.getRole()
// this.getConfigKey('sys.user.initPassword').then(response => {
// this.initPassword = response.msg
const dictId = this.$route.params && this.$route.params.dictId
this.getType(dictId)
this.getTypeList()
// this.getDicts(dictCons['NORMAL_DISABLE']).then(response => {
// this.statusOptions = response.data
// })
},
methods: {
changeValue() {
this.$refs.form.validateField('id')
},
/** 查询用户列表 */
getList() {
this.loading = true
listUser(this.queryParams).then(response => {
this.userList = response.rows
this.total = response.total
this.loading = false
}
)
},
roleChange(e) {
// TODO: clear this log
console.log(`e`, e)
this.$forceUpdate()
},
/** 查询部门下拉树结构 */
getTreeSelect() {
treeselect().then(response => {
this.deptOptionsTree = response.data.concat({
id: -1,
label: '无部门人员',
children: undefined
})
if (response.data && response.data.length > 0) {
this.deptOptions = response.data[0].children
}
})
},
/** 查询子部门 */
getChildrenDept(userId) {
treeselect().then(response => {
this.deptChildren = response.data
// this.form.postId = response.data.checkedKeys
})
},
getRole() {
getlistRole().then(
response => {
this.options = response.data
}
)
},
// 筛选节点
filterNode(value, data) {
if (!value) return true
return data.label.indexOf(value) !== -1
},
// 节点单击事件
handleNodeClick(data) {
if (this.currentNode === data.id) {
this.currentNode = undefined
this.queryParams.deptId = ''
this.currentNodeKey = !this.currentNodeKey
} else {
this.currentNode = data.id
this.queryParams.deptId = data.id
}
this.getList()
},
handleClick(data) {
// this.form.deptId = data.id
},
// 用户状态修改
handleStatusChange(row) {
// 状态
changeStatus(row) {
const text = row.flag === '1' ? '启用' : '停用'
this.$confirm('确认要"' + text + '""' + row.username + '"用户吗?', '警告', {
this.$confirm('确认要"' + text + '""' + row.dictLabel + '"吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function() {
return changeUserStatus(row.businessId, row.flag)
return updateData(row)
}).then(() => {
this.$message({
message: text + '成功',
......@@ -719,6 +346,35 @@ export default {
row.flag = row.flag === '0' ? '1' : '0'
})
},
/** 查询字典类型详细 */
getType(dictId) {
getType(dictId).then(response => {
this.queryParams.dictType = response.data.dictType
this.defaultDictType = response.data.dictType
this.getList()
})
},
/** 查询字典类型列表 */
getTypeList() {
listType().then(response => {
this.typeOptions = response.rows
})
},
/** 查询字典数据列表 */
getList() {
this.loading = true
listData(this.queryParams).then(response => {
if (response.rows) {
this.dataList = response.rows
this.total = response.total
}
this.loading = false
})
},
// 数据状态字典翻译
// statusFormat(row, column) {
// return this.selectDictLabel(this.statusOptions, row.flag)
// },
// 取消按钮
cancel() {
this.open = false
......@@ -727,127 +383,65 @@ export default {
// 表单重置
reset() {
this.form = {
userId: undefined,
deptId: undefined,
phone: undefined,
username: undefined,
userType: undefined,
nickName: undefined,
password: undefined,
idNumber: undefined,
email: undefined,
sex: undefined,
flag: undefined,
remark: undefined,
postIds: [],
roleIds: []
bussinessId: undefined,
dictCode: undefined,
dictLabel: undefined,
dictValue: undefined,
dictSort: 0,
flag: '1',
status: '0',
remarks: undefined
}
this.resetForm('form')
},
/** 查询按钮操作 */
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.page = 1
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
this.queryParams.dictType = this.defaultDictType
this.handleQuery()
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.userId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 没有实际作用,用来展示切换tab后表单字段保留功能*/
handleFormAdd() {
this.$router.push(
{
path: '/system/user/addFormList'
}
)
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.getChildrenDept(0)
this.open = true
this.title = '添加用户'
this.title = '添加字典数据'
this.form.dictType = this.queryParams.dictType
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.businessId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const userId = row.businessId || this.ids
getUser(userId).then(response => {
this.open = true
const dictCode = row.businessId || this.ids
getData(dictCode).then(response => {
this.form = response.data
const data = response.data.roleIds.split(',')
// TODO: clear this log
console.log(`data`, data)
this.form.roleList = []
data.forEach(item => {
const id = Number(item)
this.form.roleList.push(id)
})
// this.form.postId = response.data.deptId
this.title = '修改'
})
this.getChildrenDept(userId)
},
/** 重置密码按钮操作 */
handleResetPwd(row) {
this.ruleForm.newPassword = ''
this.ruleForm.row = row.businessId
this.resetPwdDiaLog = !this.resetPwdDiaLog
},
handleResetPwdSure() {
this.$refs.ruleForm.validate(pass => {
if (pass) {
this.userRestLoading = true
resetUserPwd(this.ruleForm.row, this.ruleForm.newPassword).then(response => {
if (response.code === 200) {
this.$message({
message: '修改成功',
type: 'success'
})
this.resetPwdDiaLog = false
}
this.userRestLoading = false
}).catch(e => { this.userRestLoading = false })
} else {
return false
}
})
},
// 数组值是否相同
isAllEqual(array) {
if (array.length > 0) {
return !array.some(function(value, index) {
return value !== array[0]
this.form.dictLabelOne = response.data.dictLabel
this.open = true
this.title = '修改字典数据'
})
} else {
return true
}
},
/** 提交按钮 */
submitForm() {
submitForm: function() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.businessId !== undefined) {
updateUser(this.form).then(response => {
this.$message({
message: '修改成功',
type: 'success'
})
updateData(this.form).then(response => {
this.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addUser(this.form).then(response => {
this.$message({
message: '新增成功', type: 'success'
})
addData(this.form).then(response => {
this.msgSuccess('新增成功')
this.open = false
this.getList()
})
......@@ -857,17 +451,17 @@ export default {
},
/** 删除按钮操作 */
handleDelete(row) {
const userId = row.businessId || this.ids
const dictCodes = row.businessId || this.ids
this.$confirm('所选择数据被删除后不可再恢复,是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function() {
return delUser(userId)
return delData(dictCodes)
}).then(() => {
this.getList()
this.$message({
message: '除成功',
message: '除成功',
type: 'success'
})
}).catch(function() {})
......@@ -875,147 +469,43 @@ export default {
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams
this.$confirm('是否确认导出所有用户信息?', '警告', {
this.$confirm('是否确认导出所有数据项?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function() {
return exportUser(queryParams).then(response => {
const blob = new Blob([response])
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob)// 创建下载的链接
downloadElement.href = href
downloadElement.download = '用户信息' + '.xls' // 下载后文件名
document.body.appendChild(downloadElement)
downloadElement.click()// 点击下载
document.body.removeChild(downloadElement)// 下载完成移除元素
window.URL.revokeObjectURL(href)// 释放掉blob对象
// this.download(response.msg);
})
})
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = '用户导入'
this.upload.open = true
},
/** 下载模板操作 */
importTemplate() {
importTemplate().then(response => {
return exportData(queryParams).then(response => {
const blob = new Blob([response])
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob)// 创建下载的链接
downloadElement.href = href
downloadElement.download = '用户导入模板' + '.xls' // 下载后文件名
downloadElement.download = '字典数据信息' + '.xls' // 下载后文件名
document.body.appendChild(downloadElement)
downloadElement.click()// 点击下载
document.body.removeChild(downloadElement)// 下载完成移除元素
window.URL.revokeObjectURL(href)// 释放掉blob对象
// this.download(response.msg);
})
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false
this.upload.isUploading = false
this.$refs.upload.clearFiles()
this.$alert(response.msg, '导入结果', { dangerouslyUseHTMLString: true })
this.getList()
},
// 提交上传文件
submitFileForm() {
// this.$refs.upload.submit()
this.importLoading = true
if (this.fileList.length === 0) {
this.$message.warning('请上传文件')
// 导入成功后关闭弹出框
this.importLoading = false
this.upload.open = true
} else { // 根据后台需求数据格式
var formData = new FormData() // 当前为空
formData.append('file', this.fileList)
importExcel(formData).then(res => {
if (res.code === 200) {
if (res.data.filename === null) {
this.$message.success('导入成功')
this.fileList = []
// 导入成功后关闭弹出框
this.importLoading = false
this.upload.open = false
// 导入成功后刷新页面
this.getList()
} else {
uploadFalseFile({ fileName: res.data.filename }).then(res => {
const blob = new Blob([res])
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob) // 创建下载的链接
downloadElement.href = href
downloadElement.download = '模板错误提示' + '.txt' // 下载后文件名
document.body.appendChild(downloadElement)
downloadElement.click() // 点击下载
document.body.removeChild(downloadElement) // 下载完成移除元素
window.URL.revokeObjectURL(href) // 释放掉blob对象
})
}
this.importLoading = false
} else if (res.code === 41020) {
this.$message.info('上传超时,请重新上传')
this.importLoading = false
}
}).catch(err => {
this.$message.success(err.message)
this.importLoading = false
})
}
},
employeeUpload(file, fileList) {
if (fileList.length > 1) {
fileList.splice(0, 1)
}
this.fileList = fileList[0].raw
},
handleRemove(file, fileList) {
this.fileList = []
},
beforeRemove(file, fileList) {
this.fileList = []
},
/* 上传文件所需求 */
handlePreview(file) {
}
}
}
</script>
<style lang="scss" scoped>
.user-manage {
.app-container {
font-size: 18px;
padding: 0;
.placeholder{
height:14px;
background-color: #F4F4F4
}
}
.table-drop{
margin-left: 15px;
font-size: 16px;
font-weight: bold;
color: #46BCF3;
}
</style>
<style lang="scss">
.user-manage {
.formClass {
}
.paddingFixed {
.el-dialog__body {
padding-bottom: 17px;
}
}
.el-form-item__label-wrap {
margin-left: 0!important;
height:1.3vh;
background-color: #F4F4F4;
margin-bottom:10px
}
.optionsContent{
box-sizing: border-box;
width: 100%;
padding: 0 0 0 10px;
display: flex;
flex-direction: row;
}
}
</style>
......@@ -57,44 +57,48 @@
</el-form-item>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
v-hasPermi="['sys:dict:add']"
type="primary"
icon="el-icon-plus"
size="small"
@click="handleAdd"
>新增</el-button>
<!-- <el-button-->
<!-- v-hasPermi="['sys:dict:add']"-->
<!-- type="primary"-->
<!-- icon="el-icon-plus"-->
<!-- size="small"-->
<!-- @click="handleAdd"-->
<!-- >新增</el-button>-->
<coolbutton :type="typePrimary" :name="addName" :size="smallSize" :icon="addIcon" :haspermi="addHaspermi" @btn-click="handleAdd" />
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['sys:dict:update']"
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
>修改
</el-button>
<!-- <el-button-->
<!-- v-hasPermi="['sys:dict:update']"-->
<!-- type="success"-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- >修改-->
<!-- </el-button>-->
<coolbutton :type="typeSuccess" :name="updataName" :icon="updateIcon" :size="size" :haspermi="updateHaspermi" @btn-click="handleUpdate" />
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['sys:dict:delete']"
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除
</el-button>
<!-- <el-button-->
<!-- v-hasPermi="['sys:dict:delete']"-->
<!-- type="danger"-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- >删除-->
<!-- </el-button>-->
<coolbutton :type="typeDanger" :name="nameParent" :icon="delicon" :size="size" :haspermi="delHaspermi" @btn-click="handleDelete" />
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['sys:dict:export']"
type="success"
icon="el-icon-download"
size="small"
@click="handleExport"
>导出</el-button>
<!-- <el-button-->
<!-- v-hasPermi="['sys:dict:export']"-->
<!-- type="success"-->
<!-- icon="el-icon-download"-->
<!-- size="small"-->
<!-- @click="handleExport"-->
<!-- >导出</el-button>-->
<coolbutton :type="typeSuccess" :name="exportName" :icon="exportIcon" :size="size" :haspermi="exportHaspermi" @btn-click="handleExport" />
</el-col>
<right-toolbar :show-search.sync="showSearch" @queryTable="getList" />
</el-row>
......@@ -115,11 +119,10 @@
<!-- v-hasPermi="['system:dictConfig:list']"-->
<router-link
v-if="scope.row.businessId"
:style="{ pointerEvents: $haveAuth('sys:dictConfig:list') ? '' : 'none' }"
:to="'/dict/type/data/' + scope.row.businessId"
class="link-type"
>
<span :style="{color: $haveAuth('sys:dictConfig:list') ? '#20a0ff' : '#333333' }">{{ scope.row.dictType }}</span>
<span style="color: #20a0ff">{{ scope.row.dictType }}</span>
</router-link>
<div v-else>-</div>
</template>
......@@ -147,19 +150,21 @@
</el-table-column>
<el-table-column label="操作" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
v-hasPermi="['sys:dict:edit']"
size="mini"
type="text"
style="color: #49cec9"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
v-hasPermi="['sys:dict:remove']"
size="mini"
type="text"
@click="handleDelete(scope.row)"
>删除</el-button>
<!-- <el-button-->
<!-- v-hasPermi="['sys:dict:edit']"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- style="color: #49cec9"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- >修改</el-button>-->
<coolbutton :type="typeParent" style="color: #49cec9" :name="updataName" :size="size" :haspermi="editHaspermi" @btn-click="handleUpdate(scope.row)" />
<!-- <el-button-->
<!-- v-hasPermi="['sys:dict:remove']"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- >删除</el-button>-->
<coolbutton :type="typeParent" :icon="delicon" :name="nameParent" :size="size" :haspermi="removeHaspermi" @btn-click="handleDelete(scope.row)" />
</template>
</el-table-column>
</el-table>
......@@ -242,10 +247,10 @@ import { listType,
} from '@/api/system/dict/type'
import dictCons from '@/utils/dictCons'
import Template from '@/views/instance/Template'
import Coolbutton from '@/components/coolbutton'
export default {
name: 'Dict',
components: { Template },
components: { Template,Coolbutton },
data() {
const verifyTypeProp = (rule, value, callback) => {
if (value === '' || value === undefined || value === null) {
......@@ -302,6 +307,32 @@ export default {
return {
test: '',
options: [],
typeParent: 'text',
typePrimary: 'primary',
typeSuccess: 'success',
typeDanger: 'danger',
nameParent: '删除',
resetName: '重置',
addName: '新增',
queryName: '查询',
exportName: '导出',
updataName: '修改',
size: 'mini',
smallSize: 'small',
delicon: 'el-icon-delete',
addIcon: 'el-icon-plus',
exportIcon: 'el-icon-download',
queryIcon: 'el-icon-search',
updateIcon: 'el-icon-edit',
resetIcon: '',
delHaspermi: ['sys:dict:delete'],
removeHaspermi: ['sys:dict:remove'],
resetHaspermi: ['sys:user:resetPwd'],
updateHaspermi: ['sys:dict:update'],
editHaspermi: ['sys:dict:edit'],
addHaspermi: ['sys:dict:add'],
exportHaspermi: ['sys:dict:export'],
queryHaspermi: ['sys:menu:query'],
optionsDict: [],
// 遮罩层
loading: true,
......@@ -373,9 +404,9 @@ export default {
this.getDicts(dictCons['NORMAL_DISABLE']).then(response => {
this.statusOptions = response.data
})
optionselect().then(response => {
this.options = response.data
})
// optionselect().then(response => {
// this.options = response.data
// })
},
methods: {
/** 查询字典类型列表 */
......@@ -389,12 +420,12 @@ export default {
)
},
// 获取当前父字典数据
/* getOptions(val) {
getOptions(val) {
selectDictType(this.options.find(item => { return item.businessId === val }).dictType).then(response => {
this.optionsDict = response.data
})
this.form.dataId = ''
},*/
},
clearSelected(flag) {
// flag = true 为下拉框选项展开时的标识
if (flag) {
......
......@@ -12,11 +12,13 @@
/>
</el-form-item>
<el-form-item>
<el-button v-hasPermi="['sys:menu:query']" type="primary" size="small" @click="handleQuery">查询</el-button>
<!-- <el-button v-hasPermi="['sys:menu:query']" type="primary" size="small" @click="handleQuery">查询</el-button>-->
<coolbutton style="padding: 8px 7px;" :icon="queryIcon" :type="typePrimary" :name="queryName" :size="smallSize" :haspermi="queryHaspermi" @btn-click="handleQuery" />
</el-form-item>
<div style="float: right">
<el-form-item>
<el-button v-hasPermi="['sys:menu:add']" type="primary" size="small" @click="handleAdd">新增</el-button>
<!-- <el-button v-hasPermi="['sys:menu:add']" type="primary" size="small" @click="handleAdd">新增</el-button>-->
<coolbutton style="padding: 8px 7px;" :type="typePrimary" :name="addName" :size="smallSize" :icon="addIcon" :haspermi="addHaspermi" @btn-click="handleAdd" />
<!-- <el-button size="small" @click="resetQuery">重置</el-button>-->
</el-form-item>
</div>
......@@ -83,16 +85,16 @@
>删除</el-button>
</template>-->
<template slot-scope="scope">
<el-button
v-hasPermi="['sys:menu:update']"
size="mini"
type="text"
style="color: #49cec9"
@click="handleUpdate(scope.row)"
>修改</el-button>
<!-- <el-button-->
<!-- v-hasPermi="['sys:menu:update']"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- style="color: #49cec9"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- >修改</el-button>-->
<coolbutton style="color: #49cec9" :type="typeParent" :name="updataName" :size="size" :haspermi="updateHaspermi" @btn-click="handleUpdate(scope.row)" />
<el-switch
v-model="scope.row.flag"
v-hasPermi="['sys:menu:toggle']"
active-value="1"
inactive-value="0"
@change="handleStatusChange(scope.row)"
......@@ -103,20 +105,22 @@
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>
<el-button
v-hasPermi="['sys:menu:delete']"
size="mini"
type="text"
@click="handleDelete(scope.row)"
>删除</el-button>
<!-- <el-button-->
<!-- v-hasPermi="['sys:menu:delete']"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- >删除</el-button>-->
<coolbutton :type="typeParent" :name="nameParent" :size="size" :haspermi="delHaspermi" @btn-click="handleDelete(scope.row)" />
</el-dropdown-item>
<el-dropdown-item>
<el-button
v-hasPermi="['sys:menu:add']"
size="mini"
type="text"
@click="handleAdd(scope.row)"
>新增</el-button>
<!-- <el-button-->
<!-- v-hasPermi="['sys:menu:add']"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- @click="handleAdd(scope.row)"-->
<!-- >新增</el-button>-->
<coolbutton :type="typeParent" :name="addName" :size="size" :haspermi="addHaspermi" @btn-click="handleAdd(scope.row)" />
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
......@@ -259,10 +263,10 @@ import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import IconSelect from '@/components/IconSelect'
import dictCons from '@/utils/dictCons'
import Coolbutton from '@/components/coolbutton'
export default {
name: 'Menu',
components: { Treeselect, IconSelect },
components: { Treeselect, IconSelect,Coolbutton },
data() {
var trueGroupName = (rule, value, callback) => {
if (!value.trim()) {
......@@ -271,6 +275,28 @@ export default {
callback()
}
return {
typeParent: 'text',
typePrimary: 'primary',
typeSuccess: 'success',
nameParent: '删除',
resetName: '重置',
addName: '新增',
queryName: '查询',
exportName: '导出',
updataName: '修改',
size: 'mini',
smallSize: 'small',
delicon: 'el-icon-delete',
addIcon: 'el-icon-plus',
exportIcon: 'el-icon-download',
queryIcon: 'el-icon-search',
resetIcon: '',
delHaspermi: ['sys:menu:delete'],
resetHaspermi: ['sys:user:resetPwd'],
updateHaspermi: ['sys:menu:update'],
addHaspermi: ['sys:menu:add'],
exportHaspermi: ['sys:role:export'],
queryHaspermi: ['sys:menu:query'],
isWorkFlow: '0',
workFlow: '',
workFlows: [],
......
......@@ -43,20 +43,22 @@
</el-form-item>
<div style="float: right">
<el-form-item>
<el-button
v-hasPermi="['sys:role:add']"
type="primary"
size="small"
@click="handleAdd"
>新增</el-button>
<el-button
v-hasPermi="['sys:role:export']"
style="padding: 8px 7px;"
type="success"
size="small"
icon="el-icon-download"
@click="handleExport"
>导出</el-button>
<!-- <el-button-->
<!-- v-hasPermi="['sys:role:add']"-->
<!-- type="primary"-->
<!-- size="small"-->
<!-- @click="handleAdd"-->
<!-- >新增</el-button>-->
<coolbutton style="padding: 8px 7px;" :type="typePrimary" :name="addName" :size="smallSize" :icon="addIcon" :haspermi="addHaspermi" @btn-click="handleAdd" />
<!-- <el-button-->
<!-- v-hasPermi="['sys:role:export']"-->
<!-- style="padding: 8px 7px;"-->
<!-- type="success"-->
<!-- size="small"-->
<!-- icon="el-icon-download"-->
<!-- @click="handleExport"-->
<!-- >导出</el-button>-->
<coolbutton style="padding: 8px 7px;" :type="typeSuccess" :name="exportName" :size="smallSize" :icon="exportIcon" :haspermi="exportHaspermi" @btn-click="handleExport" />
</el-form-item>
</div>
</el-form>
......@@ -102,13 +104,14 @@
</el-table-column>
<el-table-column label="操作" class-name="small-padding fixed-width" width="240px">
<template slot-scope="scope">
<el-button
v-hasPermi="['sys:role:update']"
size="mini"
type="text"
style="color: #49cec9"
@click="handleUpdate(scope.row)"
>修改</el-button>
<!-- <el-button-->
<!-- v-hasPermi="['sys:role:update']"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- style="color: #49cec9"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- >修改</el-button>-->
<coolbutton style="color: #49cec9" :type="typeParent" :name="updataName" :size="size" :haspermi="updateHaspermi" @btn-click="handleUpdate(scope.row)" />
<!-- <el-button-->
<!-- v-hasPermi="['sys:role:update']"-->
<!-- size="mini"-->
......@@ -264,10 +267,31 @@ import { listRole, getRole, delRole, addRole, updateRole, exportRole, dataScope,
import { roleMenuTreeselectMC, treeselect as menuTreeselect, roleMenuTreeselect } from '@/api/system/menu'
import { treeselect as deptTreeselect, roleDeptTreeselect } from '@/api/system/dept'
// import { getRolesByInsId } from '../../../api/businessManage/template'
import Coolbutton from '@/components/coolbutton'
export default {
name: 'Role',
components: { Coolbutton },
data() {
return {
typeParent: 'text',
typePrimary: 'primary',
typeSuccess: 'success',
nameParent: '删除',
resetName: '重置',
addName: '新增',
exportName: '导出',
updataName: '修改',
size: 'mini',
smallSize: 'small',
delicon: 'el-icon-delete',
addIcon: 'el-icon-plus',
exportIcon: 'el-icon-download',
resetIcon: '',
haspermi: ['sys:user:delete'],
resetHaspermi: ['sys:user:resetPwd'],
updateHaspermi: ['sys:role:update'],
addHaspermi: ['sys:role:add'],
exportHaspermi: ['sys:role:export'],
// 遮罩层
loading: true,
// 选中数组
......
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