Browse Source

全宗/岗位api调试

master
xuhuajiao 2 years ago
parent
commit
3231355141
  1. 19
      src/api/system/category.js
  2. 12
      src/api/system/job.js
  3. 1
      src/components/Crud/CRUD.operation.vue
  4. 173
      src/views/system/groupManage/index.vue
  5. 77
      src/views/system/job/index.vue
  6. 28
      src/views/system/job/module/form.vue
  7. 12
      src/views/system/job/module/header.vue
  8. 45
      src/views/system/role/index.vue

19
src/api/system/category.js

@ -0,0 +1,19 @@
import request from '@/utils/request'
// 获取门类树状菜单
export function FetchCategoryMenu() {
return request({
url: 'api/category/menu',
method: 'get'
})
}
// 获取门类下的子门类
export function FetchCategoryMenuChildren(cid) {
return request({
url: 'api/category/getChildren?categoryId=' + cid,
method: 'get'
})
}
export default { }

12
src/api/system/job.js

@ -7,7 +7,7 @@ export function getAllJob() {
enabled: true
}
return request({
url: 'api/job',
url: 'api/posts/initPostList',
method: 'get',
params
})
@ -15,7 +15,7 @@ export function getAllJob() {
export function add(data) {
return request({
url: 'api/job',
url: 'api/posts/editPost',
method: 'post',
data
})
@ -23,16 +23,16 @@ export function add(data) {
export function del(ids) {
return request({
url: 'api/job',
method: 'delete',
url: 'api/posts/delPosts',
method: 'post',
data: ids
})
}
export function edit(data) {
return request({
url: 'api/job',
method: 'put',
url: 'api/posts/editPost',
method: 'post',
data
})
}

1
src/components/Crud/CRUD.operation.vue

@ -162,7 +162,6 @@ export default {
},
toDelete(datas) {
// his.crud.confirmDeleteMsg ? this.crud.confirmDeleteMsg : `${datas.length}?`,
console.log(this.crud)
this.$confirm('此操作将删除当前所选' + this.crud.title + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',

173
src/views/system/groupManage/index.vue

@ -23,7 +23,7 @@
</el-button>
</template>
<template v-slot:right>
<el-button :loading="crud.downloadLoading" :disabled="!crud.data.length" size="mini" @click="doExport">
<el-button :loading="crud.downloadLoading" size="mini" :disabled="crud.selections.length === 0" @click="doExport(crud.selections)">
<i class="iconfont icon-daochu" />
导出
</el-button>
@ -104,25 +104,24 @@
<span class="role-span role-tab-active">门类关联</span>
</el-tooltip>
<el-button
v-permission="['admin','roles:edit']"
v-permission="['admin','fonds:edit']"
:disabled="!showButton"
:loading="menuLoading"
:loading="categoryLoading"
size="mini"
@click="saveMenu"
@click="saveCategory"
>保存</el-button>
</div>
<!-- :data="menus" @check="menuChange" :default-checked-keys="categoryIds"-->
<el-tree
ref="menu"
ref="category"
lazy
:data="menus"
:default-checked-keys="menuIds"
:load="getMenuDatas"
:props="defaultProps"
check-strictly
accordion
:data="categoryDatas"
:load="getCategoryDataList"
:default-checked-keys="categoryIds"
show-checkbox
node-key="id"
@check="menuChange"
highlight-current
:props="defaultProps"
/>
</div>
</div>
@ -132,14 +131,17 @@
<script>
import crudfonds from '@/api/system/fonds'
import { getDepts, getDeptSuperior } from '@/api/system/dept'
import { getMenusTree, getChild } from '@/api/system/menu'
// getMenusTree
// import { getChild } from '@/api/system/menu' FetchCategoryMenu
import { FetchCategoryMenuChildren } from '@/api/system/category'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
import DateRangePicker from '@/components/DateRangePicker'
import { downloadFile } from '@/utils/index'
import { exportFile } from '@/utils/index'
import qs from 'qs'
import { mapGetters } from 'vuex'
const defaultForm = { id: null, fondsName: null, fondsNameAbbr: null, fondsNo: null, fondsOrders: 999, fondsStatus: null, fondsRemarks: null }
export default {
@ -158,9 +160,9 @@ export default {
mixins: [presenter(), header(), form(defaultForm), crud()],
data() {
return {
defaultProps: { children: 'children', label: 'label', isLeaf: 'leaf' },
currentId: 0, menuLoading: false, showButton: false,
menus: [], menuIds: [], depts: [], deptDatas: [], // 使
defaultProps: { children: 'children', label: 'cnName', isLeaf: 'leaf' },
currentId: 0, categoryLoading: false, showButton: false,
categoryDatas: [], categoryIds: [], depts: [], deptDatas: [], // 使
permission: {
add: ['admin', 'fonds:add'],
edit: ['admin', 'fonds:edit'],
@ -188,15 +190,22 @@ export default {
{ key: '0', display_name: '停用' }
],
blurryTime: null,
deleteData: [] // data
deleteData: [], // data
chooseNode: null
}
},
computed: {
...mapGetters([
'baseApi'
])
},
created() {
},
methods: {
getMenuDatas(node, resolve) {
getCategoryDataList(node, resolve) {
setTimeout(() => {
getMenusTree(node.data.id ? node.data.id : 0).then(res => {
if (node.level > 2) return resolve([])
FetchCategoryMenuChildren(node.data.id ? node.data.id : 0).then(res => {
resolve(res)
})
}, 100)
@ -208,16 +217,17 @@ export default {
}
},
[CRUD.HOOK.afterRefresh]() {
this.$refs.menu.setCheckedKeys([])
this.$refs.category.setCheckedKeys([])
},
//
//
[CRUD.HOOK.beforeToAdd](crud, form) {
form.menus = null
},
//
//
[CRUD.HOOK.beforeToEdit](crud, form) {
//
// form.menus = null
form.id = form.fondsId
},
//
[CRUD.HOOK.afterValidateCU](crud) {
@ -227,13 +237,13 @@ export default {
if (val) {
// const _this = this
//
this.$refs.menu.setCheckedKeys([])
this.$refs.category.setCheckedKeys([])
// id
this.currentId = val.id
// key
this.menuIds = []
this.categoryIds = []
// val.menus.forEach(function(data) {
// _this.menuIds.push(data.id)
// _this.categoryIds.push(data.id)
// })
this.showButton = true
}
@ -263,6 +273,7 @@ export default {
})
},
changeStatus(data, val) {
data.id = data.fondsId
this.$confirm('此操作将禁用 / 启用全宗 “' + data.fondsName + '”' + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',
@ -279,7 +290,7 @@ export default {
data.fondsStatus = !data.fondsStatus
})
},
doExport() {
doExport(data) {
crud.downloadLoading = true
this.$confirm('此操作将导出所选数据' + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
@ -287,53 +298,55 @@ export default {
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
console.log(this.crud.data)
crudfonds.FetchDownload().then(result => {
downloadFile(result, crud.title + '数据', 'xlsx')
crud.downloadLoading = false
}).catch(() => {
crud.downloadLoading = false
const ids = []
data.forEach(val => {
ids.push(val.fondsId)
})
}).catch(() => {
})
},
menuChange(menu) {
// id
getChild(menu.id).then(childIds => {
// menuIds
if (this.menuIds.indexOf(menu.id) !== -1) {
for (let i = 0; i < childIds.length; i++) {
const index = this.menuIds.indexOf(childIds[i])
if (index !== -1) {
this.menuIds.splice(index, 1)
}
}
} else {
for (let i = 0; i < childIds.length; i++) {
const index = this.menuIds.indexOf(childIds[i])
if (index === -1) {
this.menuIds.push(childIds[i])
}
}
const params = {
'fondsIds': ids
}
this.$refs.menu.setCheckedKeys(this.menuIds)
exportFile(this.baseApi + '/api/fonds/download?' + qs.stringify(params, { indices: false }))
}).catch(() => {
})
},
// menuChange(menu) {
// console.log(menu)
// // id
// getChild(menu.id).then(childIds => {
// // categoryIds
// if (this.categoryIds.indexOf(menu.id) !== -1) {
// for (let i = 0; i < childIds.length; i++) {
// const index = this.categoryIds.indexOf(childIds[i])
// if (index !== -1) {
// this.categoryIds.splice(index, 1)
// }
// }
// } else {
// for (let i = 0; i < childIds.length; i++) {
// const index = this.categoryIds.indexOf(childIds[i])
// if (index === -1) {
// this.categoryIds.push(childIds[i])
// }
// }
// }
// this.$refs.category.setCheckedKeys(this.categoryIds)
// })
// },
//
saveMenu() {
this.menuLoading = true
const role = { id: this.currentId, menus: [] }
saveCategory() {
this.categoryLoading = true
const fonds = { id: this.currentId, menus: [] }
// key
this.menuIds.forEach(function(id) {
this.categoryIds.forEach(function(id) {
const menu = { id: id }
role.menus.push(menu)
fonds.menus.push(menu)
})
crudfonds.editMenu(role).then(() => {
crudfonds.editMenu(fonds).then(() => {
this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.menuLoading = false
this.categoryLoading = false
this.update()
}).catch(err => {
this.menuLoading = false
this.categoryLoading = false
console.log(err.response.data.message)
})
},
@ -348,38 +361,6 @@ export default {
}
}
})
},
//
getDepts() {
getDepts({ enabled: true }).then(res => {
this.depts = res.content.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
getSupDepts(depts) {
const ids = []
depts.forEach(dept => {
ids.push(dept.id)
})
getDeptSuperior(ids).then(res => {
const date = res.content
this.buildDepts(date)
this.depts = date
})
},
buildDepts(depts) {
depts.forEach(data => {
if (data.children) {
this.buildDepts(data.children)
}
if (data.hasChildren && !data.children) {
data.children = null
}
})
}
}
}

77
src/views/system/job/index.vue

@ -2,8 +2,15 @@
<div class="app-container row-container">
<!--工具栏-->
<div class="head-container">
<eHeader :dict="dict" :permission="permission" />
<crudOperation :permission="permission" />
<eHeader :permission="permission" />
<crudOperation :permission="permission">
<template v-slot:right>
<el-button :loading="crud.downloadLoading" size="mini" :disabled="crud.selections.length === 0" @click="doExport(crud.selections)">
<i class="iconfont icon-daochu" />
导出
</el-button>
</template>
</crudOperation>
</div>
<!--表格渲染-->
<div class="container-wrap">
@ -11,20 +18,20 @@
<span class="left-bottom-line" />
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" align="center" width="55" />
<el-table-column prop="name" label="岗位名称" />
<el-table-column prop="remark" label="描述信息" />
<el-table-column prop="jobSort" label="排序">
<el-table-column prop="postName" label="岗位名称" />
<el-table-column prop="postRemarks" label="描述信息" />
<el-table-column prop="postOrder" label="排序" />
<el-table-column prop="create_time" label="创建日期">
<template slot-scope="scope">
{{ scope.row.jobSort }}
<div>{{ scope.row.create_time | parseTime }}</div>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建日期" />
</el-table>
<!--分页组件-->
<pagination />
</div>
<!--表单渲染-->
<eForm :job-status="dict.job_status" />
<eForm />
</div>
</template>
@ -32,24 +39,33 @@
import crudJob from '@/api/system/job'
import eHeader from './module/header'
import eForm from './module/form'
import CRUD, { presenter } from '@crud/crud'
import CRUD, { presenter, crud } from '@crud/crud'
import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
// import udOperation from '@crud/UD.operation'
import { exportFile } from '@/utils/index'
import qs from 'qs'
import { mapGetters } from 'vuex'
export default {
name: 'Job',
components: { eHeader, eForm, crudOperation, pagination },
cruds() {
return CRUD({
title: '岗位',
url: 'api/job',
sort: ['jobSort,asc', 'id,desc'],
crudMethod: { ...crudJob }
url: 'api/posts/initPostList',
sort: ['update_time,asc'],
crudMethod: { ...crudJob },
optShow: {
add: true,
edit: true,
del: true,
reset: true,
download: false,
group: false
}
})
},
mixins: [presenter()],
//
dicts: ['job_status'],
data() {
return {
permission: {
@ -59,24 +75,29 @@ export default {
}
}
},
computed: {
...mapGetters([
'baseApi'
])
},
methods: {
//
changeEnabled(data, val) {
this.$confirm('此操作将 "' + this.dict.label.job_status[val] + '" ' + data.name + '岗位, 是否继续?', '提示', {
confirmButtonText: '确定',
doExport(data) {
crud.downloadLoading = true
this.$confirm('此操作将导出所选数据' + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',
type: 'warning'
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
// eslint-disable-next-line no-undef
crudJob.edit(data).then(() => {
// eslint-disable-next-line no-undef
this.crud.notify(this.dict.label.job_status[val] + '成功', 'success')
}).catch(err => {
data.enabled = !data.enabled
console.log(err.data.message)
const ids = []
data.forEach(val => {
ids.push(val.id)
})
const params = {
'postsIds': ids
}
exportFile(this.baseApi + '/api/posts/download?' + qs.stringify(params, { indices: false }))
}).catch(() => {
data.enabled = !data.enabled
})
}
}

28
src/views/system/job/module/form.vue

@ -19,25 +19,25 @@
>
<el-form-item
label="岗位名称"
prop="name"
prop="postName"
>
<el-input
v-model="form.name"
v-model="form.postName"
/>
</el-form-item>
<el-form-item
label="排序"
prop="jobSort"
prop="postOrder"
>
<el-input-number
v-model.number="form.jobSort"
v-model.number="form.postOrder"
:min="0"
:max="999"
controls-position="right"
/>
</el-form-item>
<el-form-item label="描述信息" prop="description">
<el-input v-model="form.description" style="width: 586px;" rows="5" type="textarea" />
<el-form-item label="描述信息" prop="postRemarks">
<el-input v-model="form.postRemarks" style="width: 586px;" rows="5" type="textarea" />
</el-form-item>
</el-form>
<div
@ -67,25 +67,19 @@ import { form } from '@crud/crud'
const defaultForm = {
id: null,
name: '',
jobSort: 999,
description: null
postName: '',
postOrder: 999,
postRemarks: null
}
export default {
mixins: [form(defaultForm)],
props: {
jobStatus: {
type: Array,
required: true
}
},
data() {
return {
rules: {
name: [
postName: [
{ required: true, message: '请输入名称', trigger: 'blur' }
],
jobSort: [
postOrder: [
{ required: true, message: '请输入序号', trigger: 'blur', type: 'number' }
]
}

12
src/views/system/job/module/header.vue

@ -3,12 +3,7 @@
v-if="crud.props.searchToggle"
class="head-search"
>
<el-input v-model="query.name" clearable size="small" placeholder="输入岗位名称搜索" prefix-icon="el-icon-search" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
<!-- <date-range-picker v-model="query.createTime" class="date-item" />
<el-select v-model="query.enabled" clearable size="small" placeholder="状态" class="filter-item" style="width: 100px" @change="crud.toQuery">
<i slot="prefix" class="iconfont icon-zhuangtai-fanbai" />
<el-option v-for="item in dict.dict.job_status" :key="item.value" :label="item.label" :value="item.value" />
</el-select> -->
<el-input v-model="query.blurry" clearable size="small" placeholder="输入岗位名称搜索" prefix-icon="el-icon-search" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
<rrOperation />
</div>
</template>
@ -16,15 +11,10 @@
<script>
import { header } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
// import DateRangePicker from '@/components/DateRangePicker'
export default {
components: { rrOperation },
mixins: [header()],
props: {
dict: {
type: Object,
required: true
},
permission: {
type: Object,
required: true

45
src/views/system/role/index.vue

@ -11,7 +11,14 @@
<date-range-picker v-model="blurryTime" class="date-item" />
<rrOperation />
</div>
<crudOperation :permission="permission" />
<crudOperation :permission="permission">
<template v-slot:right>
<el-button :loading="crud.downloadLoading" size="mini" :disabled="crud.selections.length === 0" @click="doExport(crud.selections)">
<i class="iconfont icon-daochu" />
导出
</el-button>
</template>
</crudOperation>
</div>
<div class="container-right">
<span class="right-top-line" />
@ -113,6 +120,9 @@ import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
import DateRangePicker from '@/components/DateRangePicker'
import { exportFile } from '@/utils/index'
import qs from 'qs'
import { mapGetters } from 'vuex'
// depts: [], level: 3
const defaultForm = { id: null, name: null, description: null, dataScope: null }
@ -120,7 +130,14 @@ export default {
name: 'Role',
components: { pagination, crudOperation, rrOperation, DateRangePicker },
cruds() {
return CRUD({ title: '角色', url: 'api/role/initRoleList', sort: 'update_time,asc', crudMethod: { ...crudRoles }})
return CRUD({ title: '角色', url: 'api/role/initRoleList', sort: 'update_time,asc', crudMethod: { ...crudRoles }, optShow: {
add: true,
edit: true,
del: true,
reset: true,
download: false,
group: false
}})
},
mixins: [presenter(), header(), form(defaultForm), crud()],
data() {
@ -147,6 +164,11 @@ export default {
blurryTime: null
}
},
computed: {
...mapGetters([
'baseApi'
])
},
created() {
// crudRoles.getLevel().then(data => {
// this.level = data.level
@ -227,6 +249,25 @@ export default {
this.showButton = true
}
},
doExport(data) {
crud.downloadLoading = true
this.$confirm('此操作将导出所选数据' + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
const ids = []
data.forEach(val => {
ids.push(val.id)
})
const params = {
'roleIds': ids
}
exportFile(this.baseApi + '/api/role/exportRole?' + qs.stringify(params, { indices: false }))
}).catch(() => {
})
},
menuChange(menu) {
// id
getChild(menu.id).then(childIds => {

Loading…
Cancel
Save