【更新】bug修改

This commit is contained in:
小诺 2021-06-08 19:12:53 +08:00 committed by 小诺
parent 6fe7fc311a
commit 9419800806
9 changed files with 161 additions and 128 deletions

View File

@ -113,6 +113,9 @@ export default {
Object.assign(this.localPagination, { Object.assign(this.localPagination, {
showSizeChanger: val showSizeChanger: val
}) })
},
columns(v) {
this.columnsSetting = v
} }
}, },
created () { created () {
@ -151,19 +154,19 @@ export default {
loadData (pagination, filters, sorter) { loadData (pagination, filters, sorter) {
this.localLoading = true this.localLoading = true
const parameter = Object.assign({ const parameter = Object.assign({
pageNo: (pagination && pagination.current) || pageNo: (pagination && pagination.current) ||
this.showPagination && this.localPagination.current || this.pageNum, this.showPagination && this.localPagination.current || this.pageNum,
pageSize: (pagination && pagination.pageSize) || pageSize: (pagination && pagination.pageSize) ||
this.showPagination && this.localPagination.pageSize || this.pageSize this.showPagination && this.localPagination.pageSize || this.pageSize
}, },
(sorter && sorter.field && { (sorter && sorter.field && {
sortField: sorter.field sortField: sorter.field
}) || {}, }) || {},
(sorter && sorter.order && { (sorter && sorter.order && {
sortOrder: sorter.order sortOrder: sorter.order
}) || {}, { }) || {}, {
...filters ...filters
} }
) )
const result = this.data(parameter) const result = this.data(parameter)
// 对接自己的通用数据接口需要修改下方代码中的 r.pageNo, r.totalCount, r.data // 对接自己的通用数据接口需要修改下方代码中的 r.pageNo, r.totalCount, r.data
@ -252,6 +255,13 @@ export default {
this.updateSelect([], []) this.updateSelect([], [])
} }
}, },
/**
* 刷新并清空已选
*/
clearRefreshSelected (bool = false) {
this.refresh(bool)
this.clearSelected()
},
/** /**
* 处理交给 table 使用者去处理 clear 事件时内部选中统计同时调用 * 处理交给 table 使用者去处理 clear 事件时内部选中统计同时调用
* @param callback * @param callback
@ -261,10 +271,10 @@ export default {
if (this.selectedRowKeys.length <= 0) return null if (this.selectedRowKeys.length <= 0) return null
return ( return (
<a style="margin-left: 24px" onClick={() => { <a style="margin-left: 24px" onClick={() => {
callback() callback()
this.clearSelected() this.clearSelected()
}}>清空</a> }}>清空</a>
) )
}, },
renderAlert () { renderAlert () {
// 绘制统计列数据 // 绘制统计列数据
@ -285,16 +295,15 @@ export default {
// 绘制 alert 组件 // 绘制 alert 组件
// 统一先去除alert组件 // 统一先去除alert组件
return '' return (
/* return (
<a-alert showIcon={true} style="margin-bottom: 16px"> <a-alert showIcon={true} style="margin-bottom: 16px">
<template slot="message"> <template slot="message">
<span style="margin-right: 12px">已选择: <a style="font-weight: 600">{this.selectedRows.length}</a></span> <span style="margin-right: 12px">已选择: <a style="font-weight: 600">{this.selectedRows.length}</a></span>
{needTotalItems} {needTotalItems}
{clearItem} {clearItem}
</template> </template>
</a-alert> </a-alert>
) */ )
}, },
columnChange(val) { columnChange(val) {
this.columnsSetting = val this.columnsSetting = val
@ -318,11 +327,11 @@ export default {
} }
return ( return (
<a-menu slot="overlay" onClick={onClick} selectable defaultSelectedKeys={[this.customSize]}> <a-menu slot="overlay" onClick={onClick} selectable defaultSelectedKeys={[this.customSize]}>
<a-menu-item key="default">默认</a-menu-item> <a-menu-item key="default">默认</a-menu-item>
<a-menu-item key="middle">中等</a-menu-item> <a-menu-item key="middle">中等</a-menu-item>
<a-menu-item key="small">紧凑</a-menu-item> <a-menu-item key="small">紧凑</a-menu-item>
</a-menu> </a-menu>
) )
}, },
onClick: () => { onClick: () => {
} }
@ -344,33 +353,34 @@ export default {
return ( return (
<div class="s-table-tool"> <div class="s-table-tool">
<div class="s-table-tool-left"> <div class="s-table-tool-left">
{this.$scopedSlots.operator && this.$scopedSlots.operator()} {this.$scopedSlots.operator && this.$scopedSlots.operator()}
</div>
<div class="s-table-tool-right">
{
tools.map(tool => {
if (tool.isDropdown) {
return (
<a-dropdown trigger={['click']}>
<a-tooltip title={tool.title} class="s-tool-item" onClick={tool.onClick}>
<a-icon type={tool.icon}/>
</a-tooltip>
{ tool.menu() }
</a-dropdown>
)
}
return (
<a-tooltip title={tool.title} class="s-tool-item" onClick={tool.onClick}>
<a-icon type={tool.icon} />
</a-tooltip>
)
})
}
</div>
</div> </div>
) <div class="s-table-tool-right">
/* return ( {
tools.map(tool => {
if (tool.isDropdown) {
return (
<a-dropdown trigger={['click']}>
<a-tooltip title={tool.title} class="s-tool-item" onClick={tool.onClick}>
<a-icon type={tool.icon}/>
</a-tooltip>
{ tool.menu() }
</a-dropdown>
)
}
return (
<a-tooltip title={tool.title} class="s-tool-item" onClick={tool.onClick}>
<a-icon type={tool.icon} />
</a-tooltip>
)
})
}
</div>
</div>
)
/*
return (
<a-alert showIcon={true} style="margin-bottom: 16px"> <a-alert showIcon={true} style="margin-bottom: 16px">
<template slot="message"> <template slot="message">
<span style="margin-right: 12px">已选择: <a style="font-weight: 600">{this.selectedRows.length}</a></span> <span style="margin-right: 12px">已选择: <a style="font-weight: 600">{this.selectedRows.length}</a></span>
@ -378,7 +388,8 @@ export default {
{clearItem} {clearItem}
</template> </template>
</a-alert> </a-alert>
) */ )
*/
} }
}, },
@ -423,16 +434,16 @@ export default {
}) })
const table = ( const table = (
<a-table {...{ props, scopedSlots: { ...this.$scopedSlots } }} onChange={this.loadData} onExpand={ (expanded, record) => { this.$emit('expand', expanded, record) } }> <a-table {...{ props, scopedSlots: { ...this.$scopedSlots } }} onChange={this.loadData} onExpand={ (expanded, record) => { this.$emit('expand', expanded, record) } }>
{ Object.keys(this.$slots).map(name => (<template slot={name}>{this.$slots[name]}</template>)) } { Object.keys(this.$slots).map(name => (<template slot={name}>{this.$slots[name]}</template>)) }
</a-table> </a-table>
) )
return ( return (
<div class="table-wrapper"> <div class="table-wrapper">
{ this.renderHeader() } { this.renderHeader() }
{ showAlert ? this.renderAlert() : null } { showAlert ? this.renderAlert() : null }
{ table } { table }
</div> </div>
) )
}
} }
}

View File

@ -74,7 +74,7 @@
<script> <script>
import { STable, XCard } from '@/components' import { STable, XCard } from '@/components'
import { getMenuList } from '@/api/modular/system/menuManage' import { getMenuList, sysMenuDelete } from '@/api/modular/system/menuManage'
import addForm from './addForm' import addForm from './addForm'
import editForm from './editForm' import editForm from './editForm'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
@ -160,6 +160,16 @@ export default {
} }
} }
}, },
handleDel (record) {
sysMenuDelete(record).then((res) => {
if (res.success) {
this.$message.success('删除成功')
this.$refs.table.refresh()
} else {
this.$message.error('删除失败:' + res.message)
}
})
},
handleOk () { handleOk () {
this.$refs.table.refresh() this.$refs.table.refresh()
} }

View File

@ -40,9 +40,9 @@
ref="table" ref="table"
:columns="columns" :columns="columns"
:data="loadData" :data="loadData"
:alert="true" :alert="options.alert"
:rowKey="(record) => record.id" :rowKey="(record) => record.id"
:rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :rowSelection="options.rowSelection"
> >
<template slot="operator"> <template slot="operator">
<a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysOrg:add')">新增机构</a-button> <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysOrg:add')">新增机构</a-button>
@ -122,6 +122,13 @@
simpleImage: Empty.PRESENTED_IMAGE_SIMPLE, simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
replaceFields: { replaceFields: {
key: 'id' key: 'id'
},
options: {
alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
rowSelection: {
selectedRowKeys: this.selectedRowKeys,
onChange: this.onSelectChange
}
} }
} }
}, },

View File

@ -41,6 +41,7 @@ import org.springframework.web.bind.annotation.RestController;
import vip.xiaonuo.sys.modular.user.param.SysUserParam; import vip.xiaonuo.sys.modular.user.param.SysUserParam;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
/** /**
* 系统组织机构控制器 * 系统组织机构控制器
@ -107,8 +108,8 @@ public class SysOrgController {
@DataScope @DataScope
@PostMapping("/sysOrg/delete") @PostMapping("/sysOrg/delete")
@BusinessLog(title = "系统组织机构_删除", opType = LogAnnotionOpTypeEnum.DELETE) @BusinessLog(title = "系统组织机构_删除", opType = LogAnnotionOpTypeEnum.DELETE)
public ResponseData delete(@RequestBody @Validated(BaseParam.delete.class) SysOrgParam sysOrgParam) { public ResponseData delete(@RequestBody @Validated(BaseParam.delete.class) List<SysOrgParam> sysOrgParamList) {
sysOrgService.delete(sysOrgParam); sysOrgService.delete(sysOrgParamList);
return new SuccessResponseData(); return new SuccessResponseData();
} }

View File

@ -72,11 +72,11 @@ public interface SysOrgService extends IService<SysOrg> {
/** /**
* 删除系统组织机构 * 删除系统组织机构
* *
* @param sysOrgParam 删除参数 * @param sysOrgParamList 删除参数集合
* @author xuyuxiang * @author xuyuxiang
* @date 2020/3/25 14:57 * @date 2020/3/25 14:57
*/ */
void delete(SysOrgParam sysOrgParam); void delete(List<SysOrgParam> sysOrgParamList);
/** /**
* 编辑系统组织机构 * 编辑系统组织机构

View File

@ -195,46 +195,47 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void delete(SysOrgParam sysOrgParam) { public void delete(List<SysOrgParam> sysOrgParamList) {
SysOrg sysOrg = this.querySysOrg(sysOrgParam); sysOrgParamList.forEach(sysOrgParam -> {
Long id = sysOrg.getId(); SysOrg sysOrg = this.querySysOrg(sysOrgParam);
boolean superAdmin = LoginContextHolder.me().isSuperAdmin(); Long id = sysOrg.getId();
if (!superAdmin) { boolean superAdmin = LoginContextHolder.me().isSuperAdmin();
List<Long> dataScope = sysOrgParam.getDataScope(); if (!superAdmin) {
//数据范围为空 List<Long> dataScope = sysOrgParam.getDataScope();
if (ObjectUtil.isEmpty(dataScope)) { //数据范围为空
throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE); if (ObjectUtil.isEmpty(dataScope)) {
} else if (!dataScope.contains(id)) { throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
//所操作的数据不在自己的数据范围内 } else if (!dataScope.contains(id)) {
throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE); //所操作的数据不在自己的数据范围内
throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
}
}
// 该机构下有员工则不能删
boolean hasOrgEmp = sysEmpService.hasOrgEmp(id);
if (hasOrgEmp) {
throw new ServiceException(SysOrgExceptionEnum.ORG_CANNOT_DELETE);
} }
}
// 该机构下有员工则不能删
boolean hasOrgEmp = sysEmpService.hasOrgEmp(id);
if (hasOrgEmp) {
throw new ServiceException(SysOrgExceptionEnum.ORG_CANNOT_DELETE);
}
// 该附属机构下若有员工则不能删除 // 该附属机构下若有员工则不能删除
boolean hasExtOrgEmp = sysEmpExtOrgPosService.hasExtOrgEmp(id); boolean hasExtOrgEmp = sysEmpExtOrgPosService.hasExtOrgEmp(id);
if (hasExtOrgEmp) { if (hasExtOrgEmp) {
throw new ServiceException(SysOrgExceptionEnum.ORG_CANNOT_DELETE); throw new ServiceException(SysOrgExceptionEnum.ORG_CANNOT_DELETE);
} }
// 级联删除子节点 // 级联删除子节点
List<Long> childIdList = this.getChildIdListById(id); List<Long> childIdList = this.getChildIdListById(id);
childIdList.add(id); childIdList.add(id);
LambdaUpdateWrapper<SysOrg> updateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<SysOrg> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(SysOrg::getId, childIdList) updateWrapper.in(SysOrg::getId, childIdList)
.set(SysOrg::getStatus, CommonStatusEnum.DELETED.getCode()); .set(SysOrg::getStatus, CommonStatusEnum.DELETED.getCode());
this.update(updateWrapper); this.update(updateWrapper);
// 级联删除该机构及子机构对应的角色-数据范围关联信息 // 级联删除该机构及子机构对应的角色-数据范围关联信息
sysRoleDataScopeService.deleteRoleDataScopeListByOrgIdList(childIdList); sysRoleDataScopeService.deleteRoleDataScopeListByOrgIdList(childIdList);
// 级联删除该机构子机构对应的用户-数据范围关联信息
sysUserDataScopeService.deleteUserDataScopeListByOrgIdList(childIdList);
// 级联删除该机构子机构对应的用户-数据范围关联信息
sysUserDataScopeService.deleteUserDataScopeListByOrgIdList(childIdList);
});
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)

View File

@ -38,6 +38,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
/** /**
* 系统职位控制器 * 系统职位控制器
@ -100,8 +101,8 @@ public class SysPosController {
@Permission @Permission
@PostMapping("/sysPos/delete") @PostMapping("/sysPos/delete")
@BusinessLog(title = "系统职位_删除", opType = LogAnnotionOpTypeEnum.DELETE) @BusinessLog(title = "系统职位_删除", opType = LogAnnotionOpTypeEnum.DELETE)
public ResponseData delete(@RequestBody @Validated(SysPosParam.delete.class) SysPosParam sysPosParam) { public ResponseData delete(@RequestBody @Validated(SysPosParam.delete.class) List<SysPosParam> sysPosParamList) {
sysPosService.delete(sysPosParam); sysPosService.delete(sysPosParamList);
return new SuccessResponseData(); return new SuccessResponseData();
} }

View File

@ -71,11 +71,11 @@ public interface SysPosService extends IService<SysPos> {
/** /**
* 删除系统职位 * 删除系统职位
* *
* @param sysPosParam 删除参数 * @param sysPosParamList 删除参数集合
* @author xuyuxiang * @author xuyuxiang
* @date 2020/3/25 14:57 * @date 2020/3/25 14:57
*/ */
void delete(SysPosParam sysPosParam); void delete(List<SysPosParam> sysPosParamList);
/** /**
* 编辑系统职位 * 编辑系统职位

View File

@ -107,23 +107,25 @@ public class SysPosServiceImpl extends ServiceImpl<SysPosMapper, SysPos> impleme
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void delete(SysPosParam sysPosParam) { public void delete(List<SysPosParam> sysPosParamList) {
SysPos sysPos = this.querySysPos(sysPosParam); sysPosParamList.forEach(sysPosParam -> {
Long id = sysPos.getId(); SysPos sysPos = this.querySysPos(sysPosParam);
//该职位下是否有员工 Long id = sysPos.getId();
boolean hasPosEmp = sysEmpPosService.hasPosEmp(id); //该职位下是否有员工
//只要还有则不能删 boolean hasPosEmp = sysEmpPosService.hasPosEmp(id);
if (hasPosEmp) { //只要还有则不能删
throw new ServiceException(SysPosExceptionEnum.POS_CANNOT_DELETE); if (hasPosEmp) {
} throw new ServiceException(SysPosExceptionEnum.POS_CANNOT_DELETE);
//该附属职位下是否有员工 }
boolean hasExtPosEmp = sysEmpExtOrgPosService.hasExtPosEmp(id); //该附属职位下是否有员工
//只要还有则不能删 boolean hasExtPosEmp = sysEmpExtOrgPosService.hasExtPosEmp(id);
if (hasExtPosEmp) { //只要还有则不能删
throw new ServiceException(SysPosExceptionEnum.POS_CANNOT_DELETE); if (hasExtPosEmp) {
} throw new ServiceException(SysPosExceptionEnum.POS_CANNOT_DELETE);
sysPos.setStatus(CommonStatusEnum.DELETED.getCode()); }
this.updateById(sysPos); sysPos.setStatus(CommonStatusEnum.DELETED.getCode());
this.updateById(sysPos);
});
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)