政策标签
This commit is contained in:
@ -8,7 +8,7 @@ export function login(username, password, code) {
|
||||
code,
|
||||
}
|
||||
return request({
|
||||
url: 'admin/login',
|
||||
url: '/admin/login',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
@ -25,15 +25,7 @@ export function getInfo() {
|
||||
// 退出方法
|
||||
export function logout() {
|
||||
return request({
|
||||
url: '/logout',
|
||||
url: '/admin/logout',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
// 获取验证码
|
||||
export function getCodeImg() {
|
||||
return request({
|
||||
url: '/captchaImage',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
19
src/api/policy/library.js
Normal file
19
src/api/policy/library.js
Normal file
@ -0,0 +1,19 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 获取标签列表
|
||||
export function getLabel(params) {
|
||||
return request({
|
||||
url: '/label/getLabel123',
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
||||
|
||||
// 新增更新信号量
|
||||
export function save(data) {
|
||||
return request({
|
||||
url: '/system/signal/save',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
59
src/api/policy/tag.js
Normal file
59
src/api/policy/tag.js
Normal file
@ -0,0 +1,59 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 获取分类列表
|
||||
export function getCategory(params) {
|
||||
return request({
|
||||
url: '/label/getCategory',
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
||||
// 添加分类
|
||||
export function addCategory(params) {
|
||||
return request({
|
||||
url: '/label/addCategory',
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
||||
// 添加标签
|
||||
export function addLabel(params) {
|
||||
return request({
|
||||
url: '/label/addLabel',
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
||||
// 获取标签列表
|
||||
export function getLabel(params) {
|
||||
return request({
|
||||
url: '/label/getLabel',
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
||||
// 修改分类/标签
|
||||
export function update(params) {
|
||||
return request({
|
||||
url: '/label/update',
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
||||
// 删除分类/标签
|
||||
export function del(params) {
|
||||
return request({
|
||||
url: '/label/del',
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
||||
|
||||
// // 新增更新信号量
|
||||
// export function save(data) {
|
||||
// return request({
|
||||
// url: '/system/signal/save',
|
||||
// method: 'post',
|
||||
// data
|
||||
// });
|
||||
// }
|
@ -189,3 +189,12 @@ aside {
|
||||
.multiselect--active {
|
||||
z-index: 1000 !important;
|
||||
}
|
||||
|
||||
// 卡片按钮样式
|
||||
.operate-container .btn-add {
|
||||
float: right;
|
||||
}
|
||||
//表格栏样式
|
||||
.table-container {
|
||||
margin-top: 20px;
|
||||
}
|
@ -8,13 +8,13 @@
|
||||
<template v-if="device!=='mobile'">
|
||||
<search id="header-search" class="right-menu-item" />
|
||||
|
||||
<el-tooltip content="源码地址" effect="dark" placement="bottom">
|
||||
<!-- <el-tooltip content="源码地址" effect="dark" placement="bottom">
|
||||
<ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
|
||||
</el-tooltip>
|
||||
|
||||
<el-tooltip content="文档地址" effect="dark" placement="bottom">
|
||||
<ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
|
||||
</el-tooltip>
|
||||
</el-tooltip> -->
|
||||
|
||||
<screenfull id="screenfull" class="right-menu-item hover-effect" />
|
||||
|
||||
@ -85,7 +85,7 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
toggleSideBar() {
|
||||
this.$store.dispatch('app/toggleSideBar')
|
||||
// this.$store.dispatch('app/toggleSideBar')
|
||||
},
|
||||
async logout() {
|
||||
this.$confirm('确定注销并退出系统吗?', '提示', {
|
||||
|
@ -3,11 +3,11 @@
|
||||
<transition name="sidebarLogoFade">
|
||||
<router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
|
||||
<img v-if="logo" :src="logo" class="sidebar-logo">
|
||||
<h1 v-else class="sidebar-title">{{ title }} </h1>
|
||||
<h1 v-else class="sidebar-title">{{ title }}<span>管理端</span></h1>
|
||||
</router-link>
|
||||
<router-link v-else key="expand" class="sidebar-logo-link" to="/">
|
||||
<img v-if="logo" :src="logo" class="sidebar-logo">
|
||||
<h1 class="sidebar-title">{{ title }} </h1>
|
||||
<h1 class="sidebar-title">{{ title }}<span>管理端</span></h1>
|
||||
</router-link>
|
||||
</transition>
|
||||
</div>
|
||||
@ -26,8 +26,9 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
title: '锐能管理系统',
|
||||
logo: logoImg
|
||||
title: '嘉策',
|
||||
// logo: logoImg,
|
||||
logo: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -69,9 +70,13 @@ export default {
|
||||
color: #fff;
|
||||
font-weight: 600;
|
||||
line-height: 50px;
|
||||
font-size: 14px;
|
||||
font-size: 24px;
|
||||
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
|
||||
vertical-align: middle;
|
||||
span {
|
||||
margin-left: 10px;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,17 +35,14 @@ Vue.prototype.download = download
|
||||
Vue.prototype.handleTree = handleTree
|
||||
|
||||
Vue.prototype.msgSuccess = function (msg) {
|
||||
console.log(msg);
|
||||
this.$message({ showClose: true, message: msg, type: "success" });
|
||||
}
|
||||
|
||||
Vue.prototype.msgError = function (msg) {
|
||||
console.log(msg);
|
||||
this.$message({ showClose: true, message: msg, type: "error" });
|
||||
}
|
||||
|
||||
Vue.prototype.msgInfo = function (msg) {
|
||||
console.log(msg);
|
||||
this.$message.info(msg);
|
||||
}
|
||||
|
||||
|
14
src/router/dynamicRoutes.js
Normal file
14
src/router/dynamicRoutes.js
Normal file
@ -0,0 +1,14 @@
|
||||
import Vue from 'vue'
|
||||
import Router from 'vue-router'
|
||||
|
||||
Vue.use(Router)
|
||||
|
||||
/* Router Modules */
|
||||
import policyPage from './modules/policyPage'
|
||||
|
||||
export const DynamicRoutes = [
|
||||
// 政策管理
|
||||
policyPage,
|
||||
]
|
||||
|
||||
export default DynamicRoutes
|
@ -61,7 +61,7 @@ export const constantRoutes = [
|
||||
path: 'index',
|
||||
component: (resolve) => require(['@/views/index'], resolve),
|
||||
name: '首页',
|
||||
meta: { title: '首页', icon: 'dashboard', noCache: true, affix: true }
|
||||
meta: { title: '首页', noCache: true, affix: true }
|
||||
}
|
||||
]
|
||||
},
|
||||
|
28
src/router/modules/policyPage.js
Normal file
28
src/router/modules/policyPage.js
Normal file
@ -0,0 +1,28 @@
|
||||
/** When your routing table is too long, you can split it into small modules **/
|
||||
|
||||
import Layout from '@/layout'
|
||||
// 政策管理
|
||||
const nestedRouter = {
|
||||
path: '/policy',
|
||||
component: Layout,
|
||||
redirect: 'noRedirect',
|
||||
meta: { title: '政策管理' },
|
||||
children: [
|
||||
{
|
||||
path: 'library',
|
||||
component: resolve =>
|
||||
require(['@/views/policy/library/index'], resolve),
|
||||
name: 'library',
|
||||
meta: { title: '政策库' }
|
||||
},
|
||||
{
|
||||
path: 'tag',
|
||||
component: resolve => require(['@/views/policy/tag/index'], resolve),
|
||||
name: 'tag',
|
||||
meta: { title: '政策标签' }
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
export default nestedRouter
|
@ -1,5 +1,5 @@
|
||||
module.exports = {
|
||||
title: '锐能管理系统',
|
||||
title: '嘉策科技创新服务平台',
|
||||
|
||||
/**
|
||||
* 是否系统布局配置
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { constantRoutes } from '@/router'
|
||||
// import { getRouters } from '@/api/menu'
|
||||
import Layout from '@/layout/index'
|
||||
import DynamicRoutes from '@/router/dynamicRoutes'
|
||||
|
||||
const permission = {
|
||||
state: {
|
||||
@ -17,7 +18,8 @@ const permission = {
|
||||
// 生成路由
|
||||
GenerateRoutes({ commit }) {
|
||||
return new Promise(resolve => {
|
||||
const accessedRoutes = filterAsyncRouter([])
|
||||
console.log(DynamicRoutes);
|
||||
const accessedRoutes = filterAsyncRouter(DynamicRoutes)
|
||||
accessedRoutes.push({ path: '*', redirect: '/404', hidden: true })
|
||||
commit('SET_ROUTES', accessedRoutes)
|
||||
resolve(accessedRoutes)
|
||||
@ -36,14 +38,14 @@ const permission = {
|
||||
// 遍历后台传来的路由字符串,转换为组件对象
|
||||
function filterAsyncRouter(asyncRouterMap) {
|
||||
return asyncRouterMap.filter(route => {
|
||||
if (route.component) {
|
||||
// Layout组件特殊处理
|
||||
if (route.component === 'Layout') {
|
||||
route.component = Layout
|
||||
} else {
|
||||
route.component = loadView(route.component)
|
||||
}
|
||||
}
|
||||
// if (route.component) {
|
||||
// // Layout组件特殊处理
|
||||
// if (route.component === 'Layout') {
|
||||
// route.component = Layout
|
||||
// } else {
|
||||
// route.component = loadView(route.component)
|
||||
// }
|
||||
// }
|
||||
if (route.children != null && route.children && route.children.length) {
|
||||
route.children = filterAsyncRouter(route.children)
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ service.interceptors.response.use(res => {
|
||||
// 未设置状态码则默认成功状态
|
||||
const code = res.data.code || 200;
|
||||
// 获取错误信息
|
||||
const msg = errorCode[code] || res.data.msg || errorCode['default']
|
||||
const msg = errorCode[code] || res.data.message || errorCode['default']
|
||||
if (code === 401) {
|
||||
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
|
||||
confirmButtonText: '重新登录',
|
||||
|
@ -1,15 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
@ -1,5 +1,14 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="app-container">
|
||||
home
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'Index',
|
||||
data() {
|
||||
return {};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
@ -77,13 +77,10 @@ export default {
|
||||
name: "Login",
|
||||
data() {
|
||||
return {
|
||||
codeUrl: "",
|
||||
cookiePassword: "",
|
||||
loginForm: {
|
||||
username: "ailanyin",
|
||||
password: "ailanyin",
|
||||
rememberMe: false,
|
||||
code: "",
|
||||
},
|
||||
loginRules: {
|
||||
username: [
|
||||
@ -92,9 +89,6 @@ export default {
|
||||
password: [
|
||||
{ required: true, trigger: "blur", message: "密码不能为空" },
|
||||
],
|
||||
// code: [
|
||||
// { required: true, trigger: "change", message: "验证码不能为空" },
|
||||
// ],
|
||||
},
|
||||
loading: false,
|
||||
redirect: undefined,
|
||||
@ -156,19 +150,22 @@ export default {
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss">
|
||||
$loginHeight: 570px;
|
||||
$loginForm: 383px;
|
||||
.login {
|
||||
// display: flex;
|
||||
// justify-content: center;
|
||||
// align-items: center;
|
||||
height: 100%;
|
||||
background-image: url("../assets/image/login-bg.jpg");
|
||||
min-height: $loginHeight;
|
||||
// background-image: url('../assets/image/login-bg.jpg');
|
||||
background-size: cover;
|
||||
position: relative;
|
||||
}
|
||||
.title {
|
||||
margin: 0px auto 30px auto;
|
||||
// margin: 0px auto 30px auto;
|
||||
text-align: center;
|
||||
color: #707070;
|
||||
color: #000000;
|
||||
}
|
||||
.login-title {
|
||||
position: absolute;
|
||||
@ -192,14 +189,16 @@ export default {
|
||||
color: #209cff;
|
||||
}
|
||||
.login-form {
|
||||
border-radius: 6px;
|
||||
border-radius: 10px;
|
||||
background: #ffffff;
|
||||
width: 400px;
|
||||
height: 60%;
|
||||
padding: 25px 25px 5px 25px;
|
||||
width: 520px;
|
||||
min-height: $loginForm;
|
||||
padding: 20px;
|
||||
padding-top: 10px;
|
||||
position: absolute;
|
||||
right: 15%;
|
||||
top: 20%;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
z-index: 9;
|
||||
// bottom: 0;
|
||||
// margin: auto;
|
||||
@ -214,6 +213,9 @@ export default {
|
||||
width: 14px;
|
||||
margin-left: 2px;
|
||||
}
|
||||
.login-info {
|
||||
padding: 0 100px;
|
||||
}
|
||||
}
|
||||
.login-form-bg {
|
||||
border-radius: 6px;
|
||||
@ -222,7 +224,7 @@ export default {
|
||||
top: calc(20% - 20px);
|
||||
background: #ffffff;
|
||||
width: 400px;
|
||||
height: 60%;
|
||||
min-height: $loginForm;
|
||||
opacity: 0.3;
|
||||
z-index: 1;
|
||||
}
|
||||
|
705
src/views/policy/library/index.vue
Normal file
705
src/views/policy/library/index.vue
Normal file
@ -0,0 +1,705 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form
|
||||
:size="size"
|
||||
:model="queryParams"
|
||||
ref="queryForm"
|
||||
v-show="showSearch"
|
||||
:inline="true"
|
||||
>
|
||||
<el-form-item label="角色名称" prop="roleName">
|
||||
<el-input
|
||||
v-model="queryParams.roleName"
|
||||
placeholder="请输入角色名称"
|
||||
clearable
|
||||
style="width: 240px"
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="权限字符" prop="roleKey">
|
||||
<el-input
|
||||
v-model="queryParams.roleKey"
|
||||
placeholder="请输入权限字符"
|
||||
clearable
|
||||
style="width: 240px"
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select
|
||||
v-model="queryParams.status"
|
||||
placeholder="角色状态"
|
||||
clearable
|
||||
style="width: 240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in statusOptions"
|
||||
:key="dict.dictValue"
|
||||
:label="dict.dictLabel"
|
||||
:value="dict.dictValue"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="创建时间">
|
||||
<el-date-picker
|
||||
v-model="dateRange"
|
||||
style="width: 240px"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button
|
||||
type="cyan"
|
||||
icon="el-icon-search"
|
||||
size="mini"
|
||||
@click="handleQuery"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
|
||||
>重置</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['system:role:add']"
|
||||
>新增</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['system:role:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['system:role:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['system:role:export']"
|
||||
>导出</el-button
|
||||
>
|
||||
</el-col>
|
||||
<right-toolbar
|
||||
:showSearch.sync="showSearch"
|
||||
@queryTable="getList"
|
||||
></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="roleList"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="角色编号" prop="roleId" width="120" />
|
||||
<el-table-column
|
||||
label="角色名称"
|
||||
prop="roleName"
|
||||
:show-overflow-tooltip="true"
|
||||
width="150"
|
||||
/>
|
||||
<el-table-column
|
||||
label="权限字符"
|
||||
prop="roleKey"
|
||||
:show-overflow-tooltip="true"
|
||||
width="150"
|
||||
/>
|
||||
<el-table-column label="显示顺序" prop="roleSort" width="100" />
|
||||
<el-table-column label="状态" align="center" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.status"
|
||||
active-value="0"
|
||||
inactive-value="1"
|
||||
@change="handleStatusChange(scope.row)"
|
||||
></el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
prop="createTime"
|
||||
width="180"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
class-name="small-padding fixed-width"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['system:role:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
<!-- <el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-circle-check"
|
||||
@click="handleDataScope(scope.row)"
|
||||
v-hasPermi="['system:role:edit']"
|
||||
>数据权限</el-button> -->
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['system:role:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改角色配置对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="角色名称" prop="roleName">
|
||||
<el-input v-model="form.roleName" placeholder="请输入角色名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="权限字符" prop="roleKey">
|
||||
<el-input v-model="form.roleKey" placeholder="请输入权限字符" />
|
||||
</el-form-item>
|
||||
<el-form-item label="角色顺序" prop="roleSort">
|
||||
<el-input-number
|
||||
v-model="form.roleSort"
|
||||
controls-position="right"
|
||||
:min="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态">
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio
|
||||
v-for="dict in statusOptions"
|
||||
:key="dict.dictValue"
|
||||
:label="dict.dictValue"
|
||||
>{{ dict.dictLabel }}</el-radio
|
||||
>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="菜单权限">
|
||||
<el-checkbox
|
||||
v-model="menuExpand"
|
||||
@change="handleCheckedTreeExpand($event, 'menu')"
|
||||
>展开/折叠</el-checkbox
|
||||
>
|
||||
<el-checkbox
|
||||
v-model="menuNodeAll"
|
||||
@change="handleCheckedTreeNodeAll($event, 'menu')"
|
||||
>全选/全不选</el-checkbox
|
||||
>
|
||||
<el-checkbox
|
||||
v-model="form.menuCheckStrictly"
|
||||
@change="handleCheckedTreeConnect($event, 'menu')"
|
||||
>父子联动</el-checkbox
|
||||
>
|
||||
<el-tree
|
||||
class="tree-border"
|
||||
:data="menuOptions"
|
||||
show-checkbox
|
||||
ref="menu"
|
||||
node-key="id"
|
||||
:check-strictly="!form.menuCheckStrictly"
|
||||
empty-text="加载中,请稍后"
|
||||
:props="defaultProps"
|
||||
></el-tree>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注">
|
||||
<el-input
|
||||
v-model="form.remark"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 分配角色数据权限对话框 -->
|
||||
<el-dialog
|
||||
:title="title"
|
||||
:visible.sync="openDataScope"
|
||||
width="500px"
|
||||
append-to-body
|
||||
>
|
||||
<el-form :model="form" label-width="80px">
|
||||
<el-form-item label="角色名称">
|
||||
<el-input v-model="form.roleName" :disabled="true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="权限字符">
|
||||
<el-input v-model="form.roleKey" :disabled="true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="权限范围">
|
||||
<el-select v-model="form.dataScope">
|
||||
<el-option
|
||||
v-for="item in dataScopeOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="数据权限" v-show="form.dataScope == 2">
|
||||
<el-checkbox
|
||||
v-model="deptExpand"
|
||||
@change="handleCheckedTreeExpand($event, 'dept')"
|
||||
>展开/折叠</el-checkbox
|
||||
>
|
||||
<el-checkbox
|
||||
v-model="deptNodeAll"
|
||||
@change="handleCheckedTreeNodeAll($event, 'dept')"
|
||||
>全选/全不选</el-checkbox
|
||||
>
|
||||
<el-checkbox
|
||||
v-model="form.deptCheckStrictly"
|
||||
@change="handleCheckedTreeConnect($event, 'dept')"
|
||||
>父子联动</el-checkbox
|
||||
>
|
||||
<el-tree
|
||||
class="tree-border"
|
||||
:data="deptOptions"
|
||||
show-checkbox
|
||||
default-expand-all
|
||||
ref="dept"
|
||||
node-key="id"
|
||||
:check-strictly="!form.deptCheckStrictly"
|
||||
empty-text="加载中,请稍后"
|
||||
:props="defaultProps"
|
||||
></el-tree>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitDataScope">确 定</el-button>
|
||||
<el-button @click="cancelDataScope">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
listRole,
|
||||
getRole,
|
||||
delRole,
|
||||
addRole,
|
||||
updateRole,
|
||||
exportRole,
|
||||
dataScope,
|
||||
changeRoleStatus
|
||||
} from '@/api/system/role';
|
||||
import {
|
||||
treeselect as menuTreeselect,
|
||||
roleMenuTreeselect
|
||||
} from '@/api/system/menu';
|
||||
import {
|
||||
treeselect as deptTreeselect,
|
||||
roleDeptTreeselect
|
||||
} from '@/api/system/dept';
|
||||
|
||||
export default {
|
||||
name: 'Role',
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 角色表格数据
|
||||
roleList: [],
|
||||
// 弹出层标题
|
||||
title: '',
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 是否显示弹出层(数据权限)
|
||||
openDataScope: false,
|
||||
menuExpand: false,
|
||||
menuNodeAll: false,
|
||||
deptExpand: true,
|
||||
deptNodeAll: false,
|
||||
// 日期范围
|
||||
dateRange: [],
|
||||
// 状态数据字典
|
||||
statusOptions: [],
|
||||
// 数据范围选项
|
||||
dataScopeOptions: [
|
||||
{
|
||||
value: '1',
|
||||
label: '全部数据权限'
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '自定数据权限'
|
||||
},
|
||||
{
|
||||
value: '3',
|
||||
label: '本部门数据权限'
|
||||
},
|
||||
{
|
||||
value: '4',
|
||||
label: '本部门及以下数据权限'
|
||||
},
|
||||
{
|
||||
value: '5',
|
||||
label: '仅本人数据权限'
|
||||
}
|
||||
],
|
||||
// 菜单列表
|
||||
menuOptions: [],
|
||||
// 部门列表
|
||||
deptOptions: [],
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
roleName: undefined,
|
||||
roleKey: undefined,
|
||||
status: undefined
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
defaultProps: {
|
||||
children: 'children',
|
||||
label: 'label'
|
||||
},
|
||||
// 表单校验
|
||||
rules: {
|
||||
roleName: [
|
||||
{ required: true, message: '角色名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
roleKey: [
|
||||
{ required: true, message: '权限字符不能为空', trigger: 'blur' }
|
||||
],
|
||||
roleSort: [
|
||||
{ required: true, message: '角色顺序不能为空', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
this.getDicts('sys_normal_disable').then(response => {
|
||||
this.statusOptions = response.data;
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
/** 查询角色列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listRole(this.addDateRange(this.queryParams, this.dateRange)).then(
|
||||
response => {
|
||||
this.roleList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
}
|
||||
);
|
||||
},
|
||||
/** 查询菜单树结构 */
|
||||
getMenuTreeselect() {
|
||||
menuTreeselect().then(response => {
|
||||
this.menuOptions = response.data;
|
||||
});
|
||||
},
|
||||
/** 查询部门树结构 */
|
||||
getDeptTreeselect() {
|
||||
deptTreeselect().then(response => {
|
||||
this.deptOptions = response.data;
|
||||
});
|
||||
},
|
||||
// 所有菜单节点数据
|
||||
getMenuAllCheckedKeys() {
|
||||
// 目前被选中的菜单节点
|
||||
let checkedKeys = this.$refs.menu.getCheckedKeys();
|
||||
// 半选中的菜单节点
|
||||
let halfCheckedKeys = this.$refs.menu.getHalfCheckedKeys();
|
||||
checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);
|
||||
return checkedKeys;
|
||||
},
|
||||
// 所有部门节点数据
|
||||
getDeptAllCheckedKeys() {
|
||||
// 目前被选中的部门节点
|
||||
let checkedKeys = this.$refs.dept.getCheckedKeys();
|
||||
// 半选中的部门节点
|
||||
let halfCheckedKeys = this.$refs.dept.getHalfCheckedKeys();
|
||||
checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);
|
||||
return checkedKeys;
|
||||
},
|
||||
/** 根据角色ID查询菜单树结构 */
|
||||
getRoleMenuTreeselect(roleId) {
|
||||
return roleMenuTreeselect(roleId).then(response => {
|
||||
this.menuOptions = response.menus;
|
||||
return response;
|
||||
});
|
||||
},
|
||||
/** 根据角色ID查询部门树结构 */
|
||||
getRoleDeptTreeselect(roleId) {
|
||||
return roleDeptTreeselect(roleId).then(response => {
|
||||
this.deptOptions = response.depts;
|
||||
return response;
|
||||
});
|
||||
},
|
||||
// 角色状态修改
|
||||
handleStatusChange(row) {
|
||||
let text = row.status === '0' ? '启用' : '停用';
|
||||
this.$confirm(
|
||||
'确认要"' + text + '""' + row.roleName + '"角色吗?',
|
||||
'警告',
|
||||
{
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}
|
||||
)
|
||||
.then(function() {
|
||||
return changeRoleStatus(row.roleId, row.status);
|
||||
})
|
||||
.then(() => {
|
||||
this.msgSuccess(text + '成功');
|
||||
})
|
||||
.catch(function() {
|
||||
row.status = row.status === '0' ? '1' : '0';
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 取消按钮(数据权限)
|
||||
cancelDataScope() {
|
||||
this.openDataScope = false;
|
||||
this.reset();
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
if (this.$refs.menu != undefined) {
|
||||
this.$refs.menu.setCheckedKeys([]);
|
||||
}
|
||||
(this.menuExpand = false),
|
||||
(this.menuNodeAll = false),
|
||||
(this.deptExpand = true),
|
||||
(this.deptNodeAll = false),
|
||||
(this.form = {
|
||||
roleId: undefined,
|
||||
roleName: undefined,
|
||||
roleKey: undefined,
|
||||
roleSort: 0,
|
||||
status: '0',
|
||||
menuIds: [],
|
||||
deptIds: [],
|
||||
menuCheckStrictly: true,
|
||||
deptCheckStrictly: true,
|
||||
remark: undefined
|
||||
});
|
||||
this.resetForm('form');
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.dateRange = [];
|
||||
this.resetForm('queryForm');
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.roleId);
|
||||
this.single = selection.length != 1;
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
// 树权限(展开/折叠)
|
||||
handleCheckedTreeExpand(value, type) {
|
||||
if (type == 'menu') {
|
||||
let treeList = this.menuOptions;
|
||||
for (let i = 0; i < treeList.length; i++) {
|
||||
this.$refs.menu.store.nodesMap[treeList[i].id].expanded = value;
|
||||
}
|
||||
} else if (type == 'dept') {
|
||||
let treeList = this.deptOptions;
|
||||
for (let i = 0; i < treeList.length; i++) {
|
||||
this.$refs.dept.store.nodesMap[treeList[i].id].expanded = value;
|
||||
}
|
||||
}
|
||||
},
|
||||
// 树权限(全选/全不选)
|
||||
handleCheckedTreeNodeAll(value, type) {
|
||||
if (type == 'menu') {
|
||||
this.$refs.menu.setCheckedNodes(value ? this.menuOptions : []);
|
||||
} else if (type == 'dept') {
|
||||
this.$refs.dept.setCheckedNodes(value ? this.deptOptions : []);
|
||||
}
|
||||
},
|
||||
// 树权限(父子联动)
|
||||
handleCheckedTreeConnect(value, type) {
|
||||
if (type == 'menu') {
|
||||
this.form.menuCheckStrictly = value ? true : false;
|
||||
} else if (type == 'dept') {
|
||||
this.form.deptCheckStrictly = value ? true : false;
|
||||
}
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.getMenuTreeselect();
|
||||
this.open = true;
|
||||
this.title = '添加角色';
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const roleId = row.roleId || this.ids;
|
||||
const roleMenu = this.getRoleMenuTreeselect(roleId);
|
||||
getRole(roleId).then(response => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.$nextTick(() => {
|
||||
roleMenu.then(res => {
|
||||
this.$refs.menu.setCheckedKeys(res.checkedKeys);
|
||||
});
|
||||
});
|
||||
this.title = '修改角色';
|
||||
});
|
||||
},
|
||||
/** 分配数据权限操作 */
|
||||
handleDataScope(row) {
|
||||
this.reset();
|
||||
const roleDeptTreeselect = this.getRoleDeptTreeselect(row.roleId);
|
||||
getRole(row.roleId).then(response => {
|
||||
this.form = response.data;
|
||||
this.openDataScope = true;
|
||||
this.$nextTick(() => {
|
||||
roleDeptTreeselect.then(res => {
|
||||
this.$refs.dept.setCheckedKeys(res.checkedKeys);
|
||||
});
|
||||
});
|
||||
this.title = '分配数据权限';
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm: function() {
|
||||
this.$refs['form'].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.roleId != undefined) {
|
||||
this.form.menuIds = this.getMenuAllCheckedKeys();
|
||||
updateRole(this.form).then(response => {
|
||||
this.msgSuccess('修改成功');
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
this.form.menuIds = this.getMenuAllCheckedKeys();
|
||||
addRole(this.form).then(response => {
|
||||
this.msgSuccess('新增成功');
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 提交按钮(数据权限) */
|
||||
submitDataScope: function() {
|
||||
if (this.form.roleId != undefined) {
|
||||
this.form.deptIds = this.getDeptAllCheckedKeys();
|
||||
dataScope(this.form).then(response => {
|
||||
this.msgSuccess('修改成功');
|
||||
this.openDataScope = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const roleIds = row.roleId || this.ids;
|
||||
this.$confirm(
|
||||
'是否确认删除角色编号为"' + roleIds + '"的数据项?',
|
||||
'警告',
|
||||
{
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}
|
||||
)
|
||||
.then(function() {
|
||||
return delRole(roleIds);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.msgSuccess('删除成功');
|
||||
});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
const queryParams = this.queryParams;
|
||||
this.$confirm('是否确认导出所有角色数据项?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(function() {
|
||||
return exportRole(queryParams);
|
||||
})
|
||||
.then(response => {
|
||||
this.download(response.msg);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
244
src/views/policy/tag/index.vue
Normal file
244
src/views/policy/tag/index.vue
Normal file
@ -0,0 +1,244 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-card class="operate-container" shadow="never">
|
||||
<i class="el-icon-tickets"></i>
|
||||
<span>数据列表</span>
|
||||
<el-button class="btn-add" @click="handleAdd" size="mini">
|
||||
添加分类
|
||||
</el-button>
|
||||
</el-card>
|
||||
<el-table style="width: 100%" class="table-container" :data="categoryList">
|
||||
<el-table-column label="序号" align="center" type="index"></el-table-column>
|
||||
<el-table-column
|
||||
label="标签分类"
|
||||
prop="name"
|
||||
align="center"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
label="标签"
|
||||
align="center"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button plain :disabled="scope.row.name=='类型'?true:false" size="mini" @click="handleAddTag(scope.row.id)">添加标签</el-button>
|
||||
<el-button plain size="mini" @click="handleLook(scope.row.id)">查看标签</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button @click="editDialog(scope.row)" type="text" size="small" :disabled="scope.row.name=='类型'?true:false"
|
||||
>编辑</el-button
|
||||
>
|
||||
<el-button
|
||||
@click="handleDelete(scope.row.id)" :disabled="scope.row.name=='类型'?true:false"
|
||||
type="text"
|
||||
size="small"
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 添加修改 -->
|
||||
<el-dialog :title="str" :visible.sync="addDialog" width="500px">
|
||||
<el-form :model="form" ref="form" :rules="rules" @submit.native.prevent>
|
||||
<el-form-item label="名称" prop="name" label-width="80px">
|
||||
<el-input v-model="form.name"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="addDialog = false">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 查看可删除 -->
|
||||
<el-dialog title="查看标签" :visible.sync="lookDialog" width="300px">
|
||||
<div v-for="(tag, index) in tagList" :key="tag.id">
|
||||
<el-input
|
||||
style="margin-top:10px;"
|
||||
v-if="editable[index]"
|
||||
v-model="tag.name"
|
||||
:ref="'editableInput' + index"
|
||||
size="small"
|
||||
placeholder="请输入标签信息"
|
||||
@keyup.enter.native="handleEditableInputConfirm(tag, index)"
|
||||
@change="handleEditableInputConfirm(tag, index)"
|
||||
@blur="handleEditableInputBlur(tag, index)"
|
||||
show-word-limit
|
||||
></el-input>
|
||||
<div v-else>
|
||||
<span style="margin-right:10px">{{index+1}}</span>
|
||||
<el-tag
|
||||
style="margin-top:10px;"
|
||||
@click="showEditTagInput(index)"
|
||||
closable
|
||||
@close="handleClose(tag.id, index)"
|
||||
>{{ tag.name }}</el-tag
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <el-tag
|
||||
v-for="(tag,index) in tagList"
|
||||
:key="tag.id"
|
||||
closable
|
||||
@click="showEditTagInput(index)"
|
||||
@close="closeTag(tag, index)"
|
||||
>
|
||||
{{tag.name}}
|
||||
</el-tag> -->
|
||||
<!-- <div slot="footer" class="dialog-footer">
|
||||
<el-button @click="lookDialog = false">取 消</el-button>
|
||||
<el-button type="primary" @click="handleTag">确 定</el-button>
|
||||
</div> -->
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getCategory,addCategory,addLabel,getLabel,update,del } from '@/api/policy/tag';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 100
|
||||
},
|
||||
// total:0,
|
||||
categoryList:[],
|
||||
form: {
|
||||
name: '',
|
||||
},
|
||||
addDialog: false,
|
||||
lookDialog:false,
|
||||
tagList:[],
|
||||
// 当前行
|
||||
rowId:null,
|
||||
// 弹出层标题
|
||||
str: "",
|
||||
// 表单校验
|
||||
rules: {
|
||||
name: [
|
||||
{ required: true, message: "名称不能为空", trigger: "blur" }
|
||||
]
|
||||
},
|
||||
editable: [],
|
||||
};
|
||||
},
|
||||
methods:{
|
||||
getList(){
|
||||
getCategory(this.queryParams).then(({data}) => {
|
||||
this.categoryList = data.list
|
||||
// this.total = data.total
|
||||
});
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.addDialog = true;
|
||||
this.str = "添加标签分类";
|
||||
},
|
||||
handleAddTag(id){
|
||||
this.handleAdd()
|
||||
this.str = "添加标签";
|
||||
this.rowId = id
|
||||
},
|
||||
/** 表单重置 */
|
||||
reset() {
|
||||
this.form = {
|
||||
name: '',
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 提交表单 */
|
||||
submitForm(){
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.str === '添加标签分类') {
|
||||
addCategory(this.form).then(({message}) => {
|
||||
this.msgSuccess(message);
|
||||
this.addDialog = false;
|
||||
this.getList();
|
||||
});
|
||||
} else if((this.str === '添加标签')) {
|
||||
addLabel(Object.assign({},{id:this.rowId},this.form)).then(({message}) => {
|
||||
this.msgSuccess(message);
|
||||
this.addDialog = false;
|
||||
this.getList();
|
||||
});
|
||||
}else{
|
||||
update(this.form).then(({message})=>{
|
||||
this.msgSuccess(message);
|
||||
this.addDialog = false;
|
||||
this.getList()
|
||||
})
|
||||
// addLabel(Object.assign({},{id:this.rowId},this.form)).then(({message}) => {
|
||||
// this.msgSuccess(message);
|
||||
// this.addDialog = false;
|
||||
// this.getList();
|
||||
// });
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 查看标签 */
|
||||
handleLook(id){
|
||||
this.lookDialog = true
|
||||
getLabel(Object.assign({},{id},this.queryParams)).then(({data})=>{
|
||||
this.tagList = data.list
|
||||
})
|
||||
},
|
||||
// 编辑 input发生改变
|
||||
handleEditableInputConfirm(item, index){
|
||||
if (item.name) {
|
||||
// 把当前修改的发送
|
||||
update(item).then(res=>{
|
||||
this.$set(this.editable, index, false);
|
||||
})
|
||||
} else {
|
||||
this.$message({ message: "请输入标签信息", type: "info" });
|
||||
}
|
||||
},
|
||||
//编辑 input失去焦点
|
||||
handleEditableInputBlur(item, index){
|
||||
this.handleEditableInputConfirm(item, index)
|
||||
},
|
||||
// 编辑 input显示
|
||||
showEditTagInput(index){
|
||||
this.$set(this.editable, index, true);
|
||||
this.$nextTick((_) => {
|
||||
let editableInput = "editableInput" + index;
|
||||
this.$refs[editableInput][0].$refs.input.focus();
|
||||
});
|
||||
},
|
||||
handleClose(id,i){
|
||||
del({id}).then(res=>{
|
||||
this.tagList.splice(i,1);
|
||||
})
|
||||
// this.tagList.splice(this.tagList.indexOf(id), 1);
|
||||
},
|
||||
editDialog(row){
|
||||
this.form = Object.assign({}, row);
|
||||
this.addDialog = true;
|
||||
this.str = "修改标签分类";
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(id) {
|
||||
this.$confirm('确认删除该分类?', "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(function() {
|
||||
return del({id});
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.msgSuccess("删除成功");
|
||||
})
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
// .el-tag + .el-tag {
|
||||
// margin-left: 10px;
|
||||
// }
|
||||
</style>
|
@ -6,7 +6,7 @@ function resolve(dir) {
|
||||
return path.join(__dirname, dir)
|
||||
}
|
||||
|
||||
const name = defaultSettings.title || '锐能管理系统' // 标题
|
||||
const name = defaultSettings.title || '嘉策科技创新服务平台' // 标题
|
||||
|
||||
const port = process.env.port || process.env.npm_config_port || 8080 // 端口
|
||||
|
||||
|
Reference in New Issue
Block a user