Commit 559adfd7 by dqjdda

调整 api 目录,代码优化

parent d99fb71f
......@@ -31,11 +31,4 @@ export function edit(data) {
})
}
export function downloadDept(params) {
return request({
url: 'api/dept/download',
method: 'get',
params,
responseType: 'blob'
})
}
export default { add, edit, del, getDepts }
import request from '@/utils/request'
// 获取所有的菜单树
export function getMenusTree() {
return request({
url: 'api/menus/tree',
......@@ -38,11 +37,4 @@ export function edit(data) {
})
}
export function downloadMenu(params) {
return request({
url: 'api/menus/download',
method: 'get',
params,
responseType: 'blob'
})
}
export default { add, edit, del, getMenusTree }
......@@ -45,14 +45,6 @@ export function edit(data) {
})
}
export function editPermission(data) {
return request({
url: 'api/roles/permission',
method: 'put',
data
})
}
export function editMenu(data) {
return request({
url: 'api/roles/menu',
......@@ -61,11 +53,4 @@ export function editMenu(data) {
})
}
export function downloadRole(params) {
return request({
url: 'api/roles/download',
method: 'get',
params,
responseType: 'blob'
})
}
export default { add, edit, del, get, editMenu }
import Vue from 'vue'
import { get as getDictDetail } from '@/api/dictDetail'
import { get as getDictDetail } from '@/api/system/dictDetail'
export default class Dict {
constructor(dict) {
......
......@@ -35,6 +35,8 @@ export default {
dialog: false,
// Form 表单
form: {},
// 重置表单
resetForm: {},
// 弹窗的标题
title: '',
// 方法
......@@ -179,6 +181,7 @@ export default {
*/
showAddFormDialog() {
this.isAdd = true
this.resetForm = JSON.parse(JSON.stringify(this.form))
this.beforeShowAddForm()
this.dialog = true
},
......@@ -193,6 +196,7 @@ export default {
showEditFormDialog(data = '') {
this.isAdd = false
if (data) {
this.resetForm = JSON.parse(JSON.stringify(this.form))
this.form = JSON.parse(JSON.stringify(data))
}
this.beforeShowEditForm(data)
......@@ -203,10 +207,10 @@ export default {
*/
addMethod() {
this.crudMethod.add(this.form).then(() => {
this.hideFormDialog()
this.addSuccessNotify()
this.loading = false
this.afterAddMethod()
this.cancel()
this.init()
}).catch(() => {
this.loading = false
......@@ -215,17 +219,16 @@ export default {
/**
* 新增后可以调用该方法
*/
afterAddMethod() {
},
afterAddMethod() { },
/**
* 通用的编辑方法
*/
editMethod() {
this.crudMethod.edit(this.form).then(() => {
this.hideFormDialog()
this.editSuccessNotify()
this.loading = false
this.afterEditMethod()
this.cancel()
this.init()
}).catch(() => {
this.loading = false
......@@ -234,8 +237,7 @@ export default {
/**
* 编辑后可以调用该方法
*/
afterEditMethod() {
},
afterEditMethod() {},
/**
* 提交前可以调用该方法
*/
......@@ -249,6 +251,7 @@ export default {
if (!this.beforeSubmitMethod()) {
return
}
if (this.$refs['form']) {
this.$refs['form'].validate((valid) => {
if (valid) {
this.loading = true
......@@ -257,13 +260,17 @@ export default {
} else this.editMethod()
}
})
}
},
/**
* 隐藏弹窗
*/
hideFormDialog() {
cancel() {
this.dialog = false
this.$refs['form'].resetFields()
if (this.$refs['form']) {
this.$refs['form'].clearValidate()
this.form = this.resetForm
}
},
/**
* 获取弹窗的标题
......@@ -278,7 +285,7 @@ export default {
this.beforeInit()
this.downloadLoading = true
download(this.url + '/download', this.params).then(result => {
this.downloadFile(result, this.title, 'xlsx')
this.downloadFile(result, this.title + '数据', 'xlsx')
this.downloadLoading = false
}).catch(() => {
this.downloadLoading = false
......
......@@ -4,7 +4,7 @@ import Config from '@/settings'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css'// progress bar style
import { getToken } from '@/utils/auth' // getToken from cookie
import { buildMenus } from '@/api/menu'
import { buildMenus } from '@/api/system/menu'
import { filterAsyncRouter } from '@/store/modules/permission'
NProgress.configure({ showSpinner: false })// NProgress Configuration
......
......@@ -12,7 +12,7 @@
import axios from 'axios'
import { mapGetters } from 'vuex'
import { getToken } from '@/utils/auth'
import { del } from '@/api/picture'
import { del } from '@/api/tools/picture'
export default {
name: 'Markdown',
data() {
......
......@@ -6,7 +6,7 @@
import echarts from 'echarts'
require('echarts/theme/macarons') // echarts theme
import { debounce } from '@/utils'
import { getChartData } from '@/api/visits'
import { getChartData } from '@/api/monitor/visits'
export default {
props: {
......
......@@ -49,7 +49,7 @@
<script>
import CountTo from 'vue-count-to'
import { get } from '@/api/visits'
import { get } from '@/api/monitor/visits'
export default {
components: {
CountTo
......
......@@ -174,9 +174,9 @@
<script>
import initData from '@/mixins/initData'
import { update, get } from '@/api/genConfig'
import { save } from '@/api/generator'
import { getDicts } from '@/api/dict'
import { update, get } from '@/api/generator/genConfig'
import { save } from '@/api/generator/generator'
import { getDicts } from '@/api/system/dict'
export default {
name: 'GeneratorConfig',
components: {},
......
......@@ -48,7 +48,7 @@
<script>
import initData from '@/mixins/initData'
import { parseTime } from '@/utils/index'
import { generator } from '@/api/generator'
import { generator } from '@/api/generator/generator'
export default {
name: 'GeneratorIndex',
mixins: [initData],
......
......@@ -32,7 +32,7 @@ import LineChart from './dashboard/LineChart'
import RadarChart from '@/components/Echarts/RadarChart'
import PieChart from '@/components/Echarts/PieChart'
import BarChart from '@/components/Echarts/BarChart'
import { count } from '@/api/visits'
import { count } from '@/api/monitor/visits'
/**
* 记录访问,只有页面刷新或者第一次加载才会记录
......
......@@ -51,7 +51,7 @@
<script>
import initData from '@/mixins/initData'
import { parseTime } from '@/utils/index'
import { getErrDetail } from '@/api/log'
import { getErrDetail } from '@/api/monitor/log'
import Search from './search'
export default {
name: 'ErrorLog',
......
......@@ -29,7 +29,7 @@
<script>
import { downloadFile } from '@/utils/index'
import { downloadLog } from '@/api/log'
import { downloadLog } from '@/api/monitor/log'
export default {
props: {
query: {
......
......@@ -60,7 +60,7 @@
<script>
import initData from '@/mixins/initData'
import { parseTime, downloadFile } from '@/utils/index'
import { del, downloadOnline } from '@/api/online'
import { del, downloadOnline } from '@/api/monitor/online'
export default {
name: 'OnlineUser',
mixins: [initData],
......
......@@ -64,7 +64,7 @@
<script>
import checkPermission from '@/utils/permission' // 权限判断函数
import initData from '@/mixins/initData'
import { del, delAll, downloadRedis } from '@/api/redis'
import { del, delAll, downloadRedis } from '@/api/monitor/redis'
import { downloadFile } from '@/utils/index'
export default {
name: 'Redis',
......
......@@ -22,7 +22,7 @@
</template>
<script>
import { add, edit } from '@/api/server'
import { add, edit } from '@/api/monitor/server'
export default {
props: {
isAdd: {
......
......@@ -122,7 +122,7 @@
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del } from '@/api/server'
import { del } from '@/api/monitor/server'
import eForm from './form'
export default {
name: 'ServerMonitor',
......
<template>
<el-dialog :append-to-body="true" :close-on-click-modal="false" :before-close="cancel" :visible.sync="dialog" :title="isAdd ? '新增部门' : '编辑部门'" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="名称" prop="name">
<el-input v-model="form.name" style="width: 370px;" />
</el-form-item>
<el-form-item v-if="form.pid !== 0" label="状态" prop="enabled">
<el-radio v-for="item in dicts" :key="item.id" v-model="form.enabled" :label="item.value">{{ item.label }}</el-radio>
</el-form-item>
<el-form-item v-if="form.pid !== 0" style="margin-bottom: 0px;" label="上级部门">
<treeselect v-model="form.pid" :options="depts" style="width: 370px;" placeholder="选择上级类目" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancel">取消</el-button>
<el-button :loading="loading" type="primary" @click="doSubmit">确认</el-button>
</div>
</el-dialog>
</template>
<script>
import { add, edit, getDepts } from '@/api/dept'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
components: { Treeselect },
props: {
isAdd: {
type: Boolean,
required: true
},
dicts: {
type: Array,
required: true
}
},
data() {
return {
loading: false, dialog: false, depts: [],
form: {
id: '',
name: '',
pid: 1,
enabled: 'true'
},
rules: {
name: [
{ required: true, message: '请输入名称', trigger: 'blur' }
]
}
}
},
methods: {
cancel() {
this.resetForm()
},
doSubmit() {
this.$refs['form'].validate((valid) => {
if (valid) {
if (this.form.pid !== undefined) {
this.loading = true
if (this.isAdd) {
this.doAdd()
} else this.doEdit()
} else {
this.$message({
message: '上级部门不能为空',
type: 'warning'
})
}
}
})
},
doAdd() {
add(this.form).then(res => {
this.resetForm()
this.$notify({
title: '添加成功',
type: 'success',
duration: 2500
})
this.loading = false
this.$parent.init()
}).catch(err => {
this.loading = false
console.log(err.response.data.message)
})
},
doEdit() {
edit(this.form).then(res => {
this.resetForm()
this.$notify({
title: '修改成功',
type: 'success',
duration: 2500
})
this.loading = false
this.$parent.init()
}).catch(err => {
this.loading = false
console.log(err.response.data.message)
})
},
resetForm() {
this.dialog = false
this.$refs['form'].resetFields()
this.form = {
id: '',
name: '',
pid: 1,
enabled: 'true'
}
},
getDepts() {
getDepts({ enabled: true }).then(res => {
this.depts = res.content
})
}
}
}
</script>
<style scoped>
</style>
......@@ -3,9 +3,9 @@
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<el-input v-model="query.value" clearable size="small" placeholder="输入部门名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery" />
<el-input v-model="query.name" clearable size="small" placeholder="输入部门名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery" />
<el-date-picker
v-model="query.date"
v-model="query.createTime"
:default-time="['00:00:00','23:59:59']"
type="daterange"
range-separator=":"
......@@ -20,37 +20,49 @@
</el-select>
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 -->
<div v-permission="['admin','dept:add']" style="display: inline-block;margin: 0px 2px;">
<el-button
class="filter-item"
size="mini"
type="primary"
icon="el-icon-plus"
@click="add"
@click="showAddFormDialog"
>新增</el-button>
</div>
<!-- 导出 -->
<div style="display: inline-block;">
<el-button
:loading="downloadLoading"
size="mini"
class="filter-item"
type="warning"
icon="el-icon-download"
@click="download"
@click="downloadMethod"
>导出</el-button>
</div>
</div>
<!--表单组件-->
<eForm ref="form" :is-add="isAdd" :dicts="dict.dept_status" />
<el-dialog :append-to-body="true" :close-on-click-modal="false" :before-close="cancel" :visible.sync="dialog" :title="getFormTitle()" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="名称" prop="name">
<el-input v-model="form.name" style="width: 370px;" />
</el-form-item>
<el-form-item v-if="form.pid !== 0" label="状态" prop="enabled">
<el-radio v-for="item in dict.dept_status" :key="item.id" v-model="form.enabled" :label="item.value">{{ item.label }}</el-radio>
</el-form-item>
<el-form-item v-if="form.pid !== 0" style="margin-bottom: 0px;" label="上级部门" prop="pid">
<treeselect v-model="form.pid" :options="depts" style="width: 370px;" placeholder="选择上级类目" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancel">取消</el-button>
<el-button :loading="loading" type="primary" @click="submitMethod">确认</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table v-loading="loading" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" :default-expand-all="expand" :data="data" row-key="id" size="small">
<el-table v-loading="loading" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" default-expand-all :data="data" row-key="id" size="small">
<el-table-column label="名称" prop="name" />
<el-table-column label="状态" align="center">
<template slot-scope="scope">
<el-switch
v-model="scope.row.enabled"
:disabled="scope.row.id == 1"
:disabled="scope.row.id === 1"
active-color="#409EFF"
inactive-color="#F56C6C"
@change="changeEnabled(scope.row, scope.row.enabled,)"
......@@ -64,7 +76,7 @@
</el-table-column>
<el-table-column v-if="checkPermission(['admin','dept:edit','dept:del'])" label="操作" width="130px" align="center" fixed="right">
<template slot-scope="scope">
<el-button v-permission="['admin','dept:edit']" size="mini" type="primary" icon="el-icon-edit" @click="edit(scope.row)" />
<el-button v-permission="['admin','dept:edit']" size="mini" type="primary" icon="el-icon-edit" @click="showEditFormDialog(scope.row)" />
<el-popover
:ref="scope.row.id"
v-permission="['admin','dept:del']"
......@@ -74,7 +86,7 @@
<p>确定删除本条数据吗?</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="delMethod(scope.row.id)">确定</el-button>
</div>
<el-button slot="reference" :disabled="scope.row.id === 1" type="danger" icon="el-icon-delete" size="mini" />
</el-popover>
......@@ -85,24 +97,31 @@
</template>
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del, edit, downloadDept } from '@/api/dept'
import { parseTime, downloadFile } from '@/utils/index'
import eForm from './form'
import crud from '@/mixins/crud'
import crudDept from '@/api/system/dept'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
name: 'Dept',
components: { eForm },
mixins: [initData],
components: { Treeselect },
mixins: [crud],
// 设置数据字典
dicts: ['dept_status'],
data() {
return {
title: '部门',
crudMethod: { ...crudDept },
depts: [],
form: { id: null, name: null, pid: 1, enabled: 'true' },
rules: {
name: [
{ required: true, message: '请输入名称', trigger: 'blur' }
]
},
enabledTypeOptions: [
{ key: 'true', display_name: '正常' },
{ key: 'false', display_name: '禁用' }
],
delLoading: false, expand: true
]
}
},
created() {
......@@ -111,61 +130,28 @@ export default {
})
},
methods: {
parseTime,
checkPermission,
beforeInit() {
this.url = 'api/dept'
const sort = 'id,desc'
this.params = { page: this.page, size: this.size, sort: sort }
const query = this.query
const value = query.value
const enabled = query.enabled
if (value) { this.params['name'] = value }
if (query.date) {
this.params['startTime'] = query.date[0]
this.params['endTime'] = query.date[1]
}
if (enabled !== '' && enabled !== null) { this.params['enabled'] = enabled }
return true
},
subDelete(id) {
this.delLoading = true
del(id).then(res => {
this.delLoading = false
this.$refs[id].doClose()
this.init()
this.$notify({
title: '删除成功',
type: 'success',
duration: 2500
})
}).catch(err => {
this.delLoading = false
this.$refs[id].doClose()
console.log(err.response.data.message)
})
},
add() {
this.isAdd = true
const _this = this.$refs.form
_this.getDepts()
_this.dialog = true
// 打开新增弹窗前做的操作
beforeShowAddForm() {
this.getDepts()
},
changeExpand() {
this.expand = !this.expand
// 打开新增弹窗前做的操作
beforeShowEditForm(data) {
this.getDepts()
this.form.enabled = data.enabled.toString()
},
edit(data) {
this.isAdd = false
const _this = this.$refs.form
_this.getDepts()
_this.form = {
id: data.id,
name: data.name,
pid: data.pid,
createTime: data.createTime,
enabled: data.enabled.toString()
beforeSubmitMethod() {
if (!this.form.pid) {
this.$message({
message: '上级部门不能为空',
type: 'warning'
})
return false
}
_this.dialog = true
return true
},
// 改变状态
changeEnabled(data, val) {
......@@ -174,12 +160,8 @@ export default {
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
edit(data).then(res => {
this.$notify({
title: this.dict.label.dept_status[val] + '成功',
type: 'success',
duration: 2500
})
this.crudMethod.edit(data).then(res => {
this.notify(this.dict.label.dept_status[val] + '成功', 'success')
}).catch(err => {
data.enabled = !data.enabled
console.log(err.response.data.message)
......@@ -188,14 +170,9 @@ export default {
data.enabled = !data.enabled
})
},
download() {
this.beforeInit()
this.downloadLoading = true
downloadDept(this.params).then(result => {
downloadFile(result, '部门列表', 'xlsx')
this.downloadLoading = false
}).catch(() => {
this.downloadLoading = false
getDepts() {
this.crudMethod.getDepts({ enabled: true }).then(res => {
this.depts = res.content
})
}
}
......
......@@ -16,7 +16,7 @@
</template>
<script>
import { add, edit } from '@/api/dict'
import { add, edit } from '@/api/system/dict'
export default {
props: {
isAdd: {
......
......@@ -92,7 +92,7 @@
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del, downloadDict } from '@/api/dict'
import { del, downloadDict } from '@/api/system/dict'
import dictDetail from '../dictDetail/index'
import { downloadFile } from '@/utils/index'
import eForm from './form'
......
......@@ -19,7 +19,7 @@
</template>
<script>
import { add, edit } from '@/api/dictDetail'
import { add, edit } from '@/api/system/dictDetail'
export default {
props: {
isAdd: {
......
......@@ -55,7 +55,7 @@
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del } from '@/api/dictDetail'
import { del } from '@/api/system/dictDetail'
import eForm from './form'
export default {
components: { eForm },
......
......@@ -39,11 +39,8 @@
>导出</el-button>
</div>
<!--表单渲染-->
<el-dialog :append-to-body="true" :close-on-click-modal="false" :before-close="hideFormDialog" :visible.sync="dialog" :title="getFormTitle()" width="500px">
<el-dialog :append-to-body="true" :close-on-click-modal="false" :before-close="cancel" :visible.sync="dialog" :title="getFormTitle()" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item v-show="false" label="ID" prop="id">
<el-input v-model="form.id" style="width: 370px;" />
</el-form-item>
<el-form-item label="名称" prop="name">
<el-input v-model="form.name" style="width: 370px;" />
</el-form-item>
......@@ -58,7 +55,7 @@
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="hideFormDialog">取消</el-button>
<el-button type="text" @click="cancel">取消</el-button>
<el-button :loading="loading" type="primary" @click="submitMethod">确认</el-button>
</div>
</el-dialog>
......@@ -124,8 +121,8 @@
<script>
import crud from '@/mixins/crud'
import crudJob from '@/api/job'
import { getDepts } from '@/api/dept'
import crudJob from '@/api/system/job'
import { getDepts } from '@/api/system/dept'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
......@@ -145,14 +142,7 @@ export default {
{ key: 'true', display_name: '正常' },
{ key: 'false', display_name: '禁用' }
],
form: {
id: '',
name: '',
sort: 999,
enabled: 'true',
createTime: '',
dept: { id: null }
},
form: { id: null, name: null, sort: 999, enabled: 'true', dept: { id: null }},
depts: [],
rules: {
name: [
......
<template>
<el-dialog :visible.sync="dialog" :close-on-click-modal="false" :before-close="cancel" :title="isAdd ? '新增菜单' : '编辑菜单'" append-to-body width="580px">
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="菜单类型">
<el-radio-group v-model="form.type" size="mini" style="width: 178px">
<el-radio-button label="0">目录</el-radio-button>
<el-radio-button label="1">菜单</el-radio-button>
<el-radio-button label="2">按钮</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item v-show="form.type.toString() !== '2'" label="菜单图标">
<el-popover
placement="bottom-start"
width="450"
trigger="click"
@show="$refs['iconSelect'].reset()"
>
<IconSelect ref="iconSelect" @selected="selected" />
<el-input slot="reference" v-model="form.icon" style="width: 450px;" placeholder="点击选择图标" readonly>
<svg-icon v-if="form.icon" slot="prefix" :icon-class="form.icon" class="el-input__icon" style="height: 32px;width: 16px;" />
<i v-else slot="prefix" class="el-icon-search el-input__icon" />
</el-input>
</el-popover>
</el-form-item>
<el-form-item v-show="form.type.toString() !== '2'" label="外链菜单">
<el-radio-group v-model="form.iframe" size="mini">
<el-radio-button label="true"></el-radio-button>
<el-radio-button label="false"></el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item v-show="form.type.toString() === '1'" label="菜单缓存">
<el-radio-group v-model="form.cache" size="mini">
<el-radio-button label="true"></el-radio-button>
<el-radio-button label="false"></el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item v-show="form.type.toString() !== '2'" label="菜单可见">
<el-radio-group v-model="form.hidden" size="mini">
<el-radio-button label="false"></el-radio-button>
<el-radio-button label="true"></el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item v-show="form.type.toString() !== '2'" label="菜单标题" prop="name">
<el-input v-model="form.name" :style=" form.type.toString() === '0' ? 'width: 450px' : 'width: 178px'" placeholder="菜单标题" />
</el-form-item>
<el-form-item v-show="form.type.toString() === '2'" label="按钮名称">
<el-input v-model="form.name" placeholder="按钮名称" style="width: 178px;" />
</el-form-item>
<el-form-item v-show="form.type.toString() !== '0'" label="权限标识">
<el-input v-model="form.permission" :disabled="form.iframe === 'true'" placeholder="权限标识" style="width: 178px;" />
</el-form-item>
<el-form-item v-if="form.type.toString() !== '2'" label="路由地址" prop="path">
<el-input v-model="form.path" placeholder="路由地址" style="width: 178px;" />
</el-form-item>
<el-form-item label="菜单排序">
<el-input-number v-model.number="form.sort" :min="0" :max="999" controls-position="right" style="width: 178px;" />
</el-form-item>
<el-form-item v-show="form.iframe === 'false' && form.type.toString() === '1'" label="组件名称">
<el-input v-model="form.componentName" style="width: 178px;" placeholder="匹配组件内Name字段" />
</el-form-item>
<el-form-item v-show="form.iframe === 'false' && form.type.toString() === '1'" label="组件路径">
<el-input v-model="form.component" style="width: 178px;" placeholder="组件路径" />
</el-form-item>
<el-form-item label="上级类目">
<treeselect v-model="form.pid" :options="menus" style="width: 450px;" placeholder="选择上级类目" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancel">取消</el-button>
<el-button :loading="loading" type="primary" @click="doSubmit">确认</el-button>
</div>
</el-dialog>
</template>
<script>
import { add, edit, getMenusTree } from '@/api/menu'
import Treeselect from '@riophae/vue-treeselect'
import IconSelect from '@/components/IconSelect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
components: { Treeselect, IconSelect },
props: {
isAdd: {
type: Boolean,
required: true
}
},
data() {
return {
loading: false, dialog: false, menus: [],
form: { name: '', sort: 999, path: '', component: '', componentName: '', iframe: 'false', roles: [], pid: 0, icon: '', cache: false, hidden: false, type: 0, permission: '' },
rules: {
name: [
{ required: true, message: '请输入名称', trigger: 'blur' }
],
path: [
{ required: true, message: '请输入地址', trigger: 'blur' }
]
}
}
},
methods: {
cancel() {
this.resetForm()
},
doSubmit() {
this.$refs['form'].validate((valid) => {
if (valid) {
this.loading = true
if (this.isAdd) {
this.doAdd()
} else this.doEdit()
} else {
return false
}
})
},
doAdd() {
add(this.form).then(res => {
this.resetForm()
this.$notify({
title: '添加成功',
type: 'success',
duration: 2500
})
this.loading = false
this.$parent.init()
}).catch(() => {
this.loading = false
})
},
doEdit() {
edit(this.form).then(res => {
this.resetForm()
this.$notify({
title: '修改成功',
type: 'success',
duration: 2500
})
this.loading = false
this.$parent.init()
}).catch(() => {
this.loading = false
})
},
resetForm() {
this.dialog = false
this.$refs['form'].resetFields()
this.form = { name: '', sort: 999, path: '', component: '', componentName: '', iframe: 'false', roles: [], pid: 0, icon: '', cache: false, hidden: false, type: 0, permission: '' }
},
selected(name) {
this.form.icon = name
},
getMenus() {
getMenusTree().then(res => {
this.menus = []
const menu = { id: 0, label: '顶级类目', children: [] }
menu.children = res
this.menus.push(menu)
})
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ .el-input-number .el-input__inner {
text-align: left;
}
</style>
<template>
<el-dialog :visible.sync="dialog" :close-on-click-modal="false" :before-close="cancel" :title="isAdd ? '新增角色' : '编辑角色'" append-to-body width="520px">
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="角色名称" prop="name">
<el-input v-model="form.name" style="width: 145px;" />
</el-form-item>
<el-form-item label="角色权限" prop="permission">
<el-input v-model="form.permission" style="width: 145px;" />
</el-form-item>
<el-form-item label="数据范围">
<el-select v-model="form.dataScope" style="width: 145px" placeholder="请选择数据范围" @change="changeScope">
<el-option
v-for="item in dateScopes"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="角色级别" prop="sort">
<el-input-number v-model.number="form.level" :min="1" controls-position="right" style="width: 145px;" />
</el-form-item>
<el-form-item v-if="form.dataScope === '自定义'" label="数据权限">
<treeselect v-model="deptIds" :options="depts" multiple style="width: 380px" placeholder="请选择" />
</el-form-item>
<el-form-item label="描述信息">
<el-input v-model="form.remark" style="width: 380px;" rows="5" type="textarea" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancel">取消</el-button>
<el-button :loading="loading" type="primary" @click="doSubmit">确认</el-button>
</div>
</el-dialog>
</template>
<script>
import { getDepts } from '@/api/dept'
import { add, edit } from '@/api/role'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
components: { Treeselect },
props: {
isAdd: {
type: Boolean,
required: true
}
},
data() {
return {
dateScopes: ['全部', '本级', '自定义'],
loading: false, dialog: false, depts: [], deptIds: [],
form: { name: '', depts: [], remark: '', dataScope: '本级', level: 3, permission: '' },
rules: {
name: [
{ required: true, message: '请输入名称', trigger: 'blur' }
],
permission: [
{ required: true, message: '请输入权限', trigger: 'blur' }
]
}
}
},
methods: {
cancel() {
this.resetForm()
},
doSubmit() {
if (this.form.dataScope === '自定义' && this.deptIds.length === 0) {
this.$message({
message: '自定义数据权限不能为空',
type: 'warning'
})
} else {
this.form.depts = []
if (this.form.dataScope === '自定义') {
for (let i = 0; i < this.deptIds.length; i++) {
this.form.depts.push({
id: this.deptIds[i]
})
}
}
this.$refs['form'].validate((valid) => {
if (valid) {
this.loading = true
if (this.isAdd) {
this.doAdd()
} else this.doEdit()
} else {
return false
}
})
}
},
doAdd() {
add(this.form).then(res => {
this.resetForm()
this.$notify({
title: '添加成功',
type: 'success',
duration: 2500
})
this.loading = false
this.$parent.init()
}).catch(err => {
this.loading = false
console.log(err.response.data.message)
})
},
doEdit() {
edit(this.form).then(res => {
this.resetForm()
this.$notify({
title: '修改成功',
type: 'success',
duration: 2500
})
this.loading = false
this.$parent.init()
}).catch(err => {
this.loading = false
console.log(err.response.data.message)
})
},
resetForm() {
this.dialog = false
this.$refs['form'].resetFields()
this.form = { name: '', depts: [], remark: '', dataScope: '本级', level: 3, permission: '' }
},
getDepts() {
getDepts({ enabled: true }).then(res => {
this.depts = res.content
})
},
changeScope() {
if (this.form.dataScope === '自定义') {
this.getDepts()
}
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ .el-input-number .el-input__inner {
text-align: left;
}
</style>
......@@ -136,7 +136,7 @@
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del, updateIsPause, execution, add, edit, downloadJobs } from '@/api/timing'
import { del, updateIsPause, execution, add, edit, downloadJobs } from '@/api/system/timing'
import { parseTime, downloadFile } from '@/utils/index'
import Log from './log'
export default {
......
......@@ -75,7 +75,7 @@
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { downloadLogs } from '@/api/timing'
import { downloadLogs } from '@/api/system/timing'
import { parseTime, downloadFile } from '@/utils/index'
export default {
mixins: [initData],
......
......@@ -24,8 +24,8 @@
<script>
import store from '@/store'
import { validEmail } from '@/utils/validate'
import { updateEmail } from '@/api/user'
import { resetEmail } from '@/api/code'
import { updateEmail } from '@/api/system/user'
import { resetEmail } from '@/api/system/code'
export default {
props: {
email: {
......
......@@ -22,7 +22,7 @@
<script>
import store from '@/store'
import { updatePass } from '@/api/user'
import { updatePass } from '@/api/system/user'
export default {
data() {
const confirmPass = (rule, value, callback) => {
......
......@@ -48,7 +48,7 @@
>导出</el-button>
</div>
<!--表单渲染-->
<el-dialog :visible.sync="dialog" :close-on-click-modal="false" :before-close="hideFormDialog" :title="getFormTitle()" append-to-body width="570px">
<el-dialog :visible.sync="dialog" :close-on-click-modal="false" :before-close="cancel" :title="getFormTitle()" append-to-body width="570px">
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="66px">
<el-form-item label="用户名" prop="username">
<el-input v-model="form.username" />
......@@ -88,7 +88,7 @@
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="hideFormDialog">取消</el-button>
<el-button type="text" @click="cancel">取消</el-button>
<el-button :loading="loading" type="primary" @click="submitMethod">确认</el-button>
</div>
</el-dialog>
......@@ -152,11 +152,11 @@
<script>
import crud from '@/mixins/crud'
import crudUser from '@/api/user'
import crudUser from '@/api/system/user'
import { isvalidPhone } from '@/utils/validate'
import { getDepts } from '@/api/dept'
import { getAll, getLevel } from '@/api/role'
import { getAllJob } from '@/api/job'
import { getDepts } from '@/api/system/dept'
import { getAll, getLevel } from '@/api/system/role'
import { getAllJob } from '@/api/system/job'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
......
......@@ -31,7 +31,7 @@
</template>
<script>
import { get, update } from '@/api/alipay'
import { get, update } from '@/api/tools/alipay'
export default {
name: 'Config',
data() {
......
......@@ -19,7 +19,7 @@
</template>
<script>
import { toAliPay } from '@/api/alipay'
import { toAliPay } from '@/api/tools/alipay'
export default {
data() {
return {
......
......@@ -27,7 +27,7 @@
</template>
<script>
import { get, update } from '@/api/email'
import { get, update } from '@/api/tools/email'
export default {
name: 'Config',
data() {
......
......@@ -22,7 +22,7 @@
<script>
import { mapGetters } from 'vuex'
import { getToken } from '@/utils/auth'
import { send } from '@/api/email'
import { send } from '@/api/tools/email'
import { validEmail } from '@/utils/validate'
import E from 'wangeditor'
export default {
......
......@@ -123,7 +123,7 @@ import checkPermission from '@/utils/permission' // 权限判断函数
import initData from '@/mixins/initData'
import { parseTime, downloadFile } from '@/utils/index'
import { mapGetters } from 'vuex'
import { del, delAll, downloadPicture } from '@/api/picture'
import { del, delAll, downloadPicture } from '@/api/tools/picture'
import { getToken } from '@/utils/auth'
export default {
name: 'Pictures',
......
......@@ -31,7 +31,7 @@
<script>
import { mapGetters } from 'vuex'
import { getToken } from '@/utils/auth'
import { edit } from '@/api/localStorage'
import { edit } from '@/api/tools/localStorage'
export default {
props: {
isAdd: {
......
......@@ -140,7 +140,7 @@
import { mapGetters } from 'vuex'
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del, delAll, downloadStorage } from '@/api/localStorage'
import { del, delAll, downloadStorage } from '@/api/tools/localStorage'
import { parseTime, downloadFile } from '@/utils/index'
import eForm from './form'
export default {
......
......@@ -37,7 +37,7 @@
</template>
<script>
import { get, update } from '@/api/qiniu'
import { get, update } from '@/api/tools/qiniu'
export default {
data() {
return {
......
......@@ -125,7 +125,7 @@
<script>
import initData from '@/mixins/initData'
import { del, download, sync, delAll, downloadQiNiu } from '@/api/qiniu'
import { del, download, sync, delAll, downloadQiNiu } from '@/api/tools/qiniu'
import { parseTime, downloadFile } from '@/utils/index'
import { mapGetters } from 'vuex'
import { getToken } from '@/utils/auth'
......
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