update 区域增加树结构显示
This commit is contained in:
@@ -79,9 +79,9 @@ namespace Ewide.Core.Controller
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet("/sysArea/tree")]
|
[HttpGet("/sysArea/tree")]
|
||||||
public async Task<List<AreaTreeNode>> GetAreaCodeTree()
|
public async Task<List<AreaTreeNode>> GetAreaCodeTree([FromQuery]int? level)
|
||||||
{
|
{
|
||||||
return await _areaCodeService.GetAreaCodeTree();
|
return await _areaCodeService.GetAreaCodeTree(level);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -348,7 +348,7 @@
|
|||||||
<param name="input"></param>
|
<param name="input"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Ewide.Core.Controller.AreaCodeController.GetAreaCodeTree">
|
<member name="M:Ewide.Core.Controller.AreaCodeController.GetAreaCodeTree(System.Nullable{System.Int32})">
|
||||||
<summary>
|
<summary>
|
||||||
获取目录树
|
获取目录树
|
||||||
</summary>
|
</summary>
|
||||||
@@ -3016,7 +3016,7 @@
|
|||||||
<param name="code">区域代码</param>
|
<param name="code">区域代码</param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Ewide.Core.Service.Area.AreaCodeService.GetAreaCodeTree">
|
<member name="M:Ewide.Core.Service.Area.AreaCodeService.GetAreaCodeTree(System.Nullable{System.Int32})">
|
||||||
<summary>
|
<summary>
|
||||||
获取区域目录树
|
获取区域目录树
|
||||||
</summary>
|
</summary>
|
||||||
|
|||||||
@@ -71,12 +71,13 @@ namespace Ewide.Core.Service.Area
|
|||||||
/// 获取区域目录树
|
/// 获取区域目录树
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<List<AreaTreeNode>> GetAreaCodeTree()
|
public async Task<List<AreaTreeNode>> GetAreaCodeTree(int? level)
|
||||||
{
|
{
|
||||||
|
level = level.GetValueOrDefault(100);
|
||||||
var cachedAreaCodes = await _sysCacheService.GetAreaCode();
|
var cachedAreaCodes = await _sysCacheService.GetAreaCode();
|
||||||
if (cachedAreaCodes == null || cachedAreaCodes.Count < 0)
|
if (cachedAreaCodes == null || cachedAreaCodes.Count < 0)
|
||||||
{
|
{
|
||||||
cachedAreaCodes = await _areaCodeRep.DetachedEntities.ToListAsync();
|
cachedAreaCodes = await _areaCodeRep.DetachedEntities.Where(p => p.LevelType <= level).ToListAsync();
|
||||||
await _sysCacheService.SetAreaCode(cachedAreaCodes);
|
await _sysCacheService.SetAreaCode(cachedAreaCodes);
|
||||||
}
|
}
|
||||||
return new TreeBuildUtil<AreaTreeNode>().DoTreeBuild(cachedAreaCodes.Select(u => new AreaTreeNode
|
return new TreeBuildUtil<AreaTreeNode>().DoTreeBuild(cachedAreaCodes.Select(u => new AreaTreeNode
|
||||||
@@ -99,9 +100,10 @@ namespace Ewide.Core.Service.Area
|
|||||||
{
|
{
|
||||||
var AreaCodes = await _areaCodeRep.DetachedEntities
|
var AreaCodes = await _areaCodeRep.DetachedEntities
|
||||||
.Where(input.LevelType.HasValue, a => a.LevelType == input.LevelType)
|
.Where(input.LevelType.HasValue, a => a.LevelType == input.LevelType)
|
||||||
.Where(!string.IsNullOrEmpty(input.Code), a => a.Code.StartsWith(input.Code))
|
.Where(!string.IsNullOrEmpty(input.Code), a => a.Code.Contains(input.Code))
|
||||||
.Where(!string.IsNullOrEmpty(input.AdCode), a => a.AdCode.StartsWith(input.AdCode))
|
.Where(!string.IsNullOrEmpty(input.AdCode), a => a.AdCode.Contains(input.AdCode))
|
||||||
.Where(!string.IsNullOrEmpty(input.Name), a => a.Name.StartsWith(input.Name))
|
.Where(!string.IsNullOrEmpty(input.Name), a => a.Name.Contains(input.Name))
|
||||||
|
.Where(!string.IsNullOrEmpty(input.Pcode), a => a.Code.StartsWith(input.Pcode))
|
||||||
.ToPageData(input);
|
.ToPageData(input);
|
||||||
return XnPageResult<SysAreaCode>.PageResult(AreaCodes);
|
return XnPageResult<SysAreaCode>.PageResult(AreaCodes);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ namespace Ewide.Core.Service.Area.Dto
|
|||||||
public int? LevelType { get; set; }
|
public int? LevelType { get; set; }
|
||||||
public string Note { get; set; }
|
public string Note { get; set; }
|
||||||
public int Sort { get; set; }
|
public int Sort { get; set; }
|
||||||
|
public string Pcode { get; set; }
|
||||||
}
|
}
|
||||||
public class UpdateAreaCodeInput
|
public class UpdateAreaCodeInput
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ namespace Ewide.Core.Service.Area
|
|||||||
Task<SysAreaCode> GetAreaCode(string code);
|
Task<SysAreaCode> GetAreaCode(string code);
|
||||||
Task<List<SysAreaCode>> GetAreaCodeWithChildren(string code);
|
Task<List<SysAreaCode>> GetAreaCodeWithChildren(string code);
|
||||||
|
|
||||||
Task<List<AreaTreeNode>> GetAreaCodeTree();
|
Task<List<AreaTreeNode>> GetAreaCodeTree(int? level);
|
||||||
|
|
||||||
Task<dynamic> QueryAreaCodePageList([FromQuery] AreaCodeInput input);
|
Task<dynamic> QueryAreaCodePageList([FromQuery] AreaCodeInput input);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
<div class="yo-form-group">
|
<div class="yo-form-group">
|
||||||
<!-- 表单控件 -->
|
<!-- 表单控件 -->
|
||||||
<!-- ... -->
|
<!-- ... -->
|
||||||
<a-form-model-item label="参数类型" prop="levelType">
|
<a-form-model-item label="区域类型" prop="levelType">
|
||||||
<a-select :disabled="exist" placeholder="请选择参数类型" v-model="form.levelType">
|
<a-select :disabled="exist" placeholder="请选择区域类型" v-model="form.levelType">
|
||||||
<a-select-option
|
<a-select-option
|
||||||
:key="i"
|
:key="i"
|
||||||
:value="item.code"
|
:value="item.code"
|
||||||
@@ -21,25 +21,31 @@
|
|||||||
<a-icon slot="suffixIcon" type="lock" v-if="exist" />
|
<a-icon slot="suffixIcon" type="lock" v-if="exist" />
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item label="名称" prop="name">
|
<a-form-model-item label="区域名称" prop="name">
|
||||||
<a-input placeholder="请输入区域名称" v-model="form.name" />
|
<a-input placeholder="请输入区域名称" v-model="form.name" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item label="编码" prop="code">
|
<a-form-model-item prop="code">
|
||||||
<a-input :disabled="exist" placeholder="请输入参数编码" v-model="form.code">
|
<span slot="label">
|
||||||
|
区域编码
|
||||||
|
<a-tooltip title="用于系统内部使用,添加后不可更改">
|
||||||
|
<a-icon theme="twoTone" type="info-circle" />
|
||||||
|
</a-tooltip>
|
||||||
|
</span>
|
||||||
|
<a-input :disabled="exist" placeholder="请输入区域编码" v-model="form.code">
|
||||||
<a-icon slot="suffix" type="lock" v-if="exist" />
|
<a-icon slot="suffix" type="lock" v-if="exist" />
|
||||||
</a-input>
|
</a-input>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item label="区域编码" prop="adCode">
|
<a-form-model-item prop="adCode">
|
||||||
<a-input placeholder="请输入显示编码" v-model="form.adCode" />
|
<span slot="label">
|
||||||
|
行政编码
|
||||||
|
<a-tooltip title="国家规定的区划代码,可随实际情况更改而更改">
|
||||||
|
<a-icon theme="twoTone" type="info-circle" />
|
||||||
|
</a-tooltip>
|
||||||
|
</span>
|
||||||
|
<a-input placeholder="请输入行政编码" v-model="form.adCode" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item label="排序" prop="sort">
|
<a-form-model-item label="排序" prop="sort">
|
||||||
<a-input-number
|
<a-input-number :min="0" class="w-100-p" placeholder="请输入排序" v-model="form.sort" />
|
||||||
:max="1000"
|
|
||||||
:min="0"
|
|
||||||
class="w-100-p"
|
|
||||||
placeholder="请输入排序"
|
|
||||||
v-model="form.sort"
|
|
||||||
/>
|
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item label="备注" prop="note">
|
<a-form-model-item label="备注" prop="note">
|
||||||
<a-textarea :rows="4" placeholder="请输入备注" v-model="form.note"></a-textarea>
|
<a-textarea :rows="4" placeholder="请输入备注" v-model="form.note"></a-textarea>
|
||||||
|
|||||||
@@ -1,47 +1,60 @@
|
|||||||
<template>
|
<template>
|
||||||
<!--
|
<!--
|
||||||
普通查询表格
|
普通树查询表格
|
||||||
v 1.2
|
v 1.2
|
||||||
2021-04-30
|
2021-04-30
|
||||||
Lufthafen
|
Lufthafen
|
||||||
-->
|
-->
|
||||||
<container>
|
<yo-tree-layout
|
||||||
<br />
|
:load-data="loadTreeData"
|
||||||
<a-card :bordered="false">
|
:replace-fields="{ value: 'code',title: 'name',children: 'children' }"
|
||||||
<yo-table :columns="columns" :load-data="loadData" @query="onQuery" @resetQuery="onResetQuery" ref="table">
|
@select="onSelect"
|
||||||
<Auth auth="sysArea:page" slot="query">
|
default-expanded-keys
|
||||||
<!-- 此处添加查询表单控件 -->
|
ref="tree-layout"
|
||||||
<!-- ... -->
|
>
|
||||||
<a-form-model-item label="参数名称">
|
<container>
|
||||||
<a-input placeholder="请输入参数名称" v-model="query.name" />
|
<a-card :bordered="false">
|
||||||
</a-form-model-item>
|
<yo-table
|
||||||
<a-form-model-item label="参数编码">
|
:columns="columns"
|
||||||
<a-input placeholder="请输入参数编码" v-model="query.code" />
|
:load-data="loadData"
|
||||||
</a-form-model-item>
|
@query="onQuery"
|
||||||
</Auth>
|
@resetQuery="onResetQuery"
|
||||||
<Auth auth="sysArea:add" slot="operator">
|
ref="table"
|
||||||
<a-button @click="onOpen('add-form')" icon="plus">新增区域编码</a-button>
|
>
|
||||||
</Auth>
|
<Auth auth="sysArea:page" slot="query">
|
||||||
<!-- 格式化字段内容 -->
|
<!-- 此处添加查询表单控件 -->
|
||||||
<!-- ... -->
|
|
||||||
<span slot="levelType" slot-scope="text">{{ bindCodeValue(text, 'levelType') }}</span>
|
|
||||||
<!-- 添加操作控件 -->
|
|
||||||
<span slot="action" slot-scope="text, record">
|
|
||||||
<yo-table-actions>
|
|
||||||
<Auth auth="sysArea:edit">
|
|
||||||
<a @click="onOpen('edit-form', record)">编辑</a>
|
|
||||||
</Auth>
|
|
||||||
<Auth auth="sysArea:delete">
|
|
||||||
<a-popconfirm @confirm="onDelete(record)" placement="topRight" title="是否确认删除">
|
|
||||||
<a>删除</a>
|
|
||||||
</a-popconfirm>
|
|
||||||
</Auth>
|
|
||||||
<!-- 可在此处添加其他操作控件 -->
|
|
||||||
<!-- ... -->
|
<!-- ... -->
|
||||||
</yo-table-actions>
|
<a-form-model-item label="区域名称">
|
||||||
</span>
|
<a-input placeholder="请输入区域名称" v-model="query.name" />
|
||||||
</yo-table>
|
</a-form-model-item>
|
||||||
</a-card>
|
<a-form-model-item label="区域类型">
|
||||||
|
<a-input placeholder="请输入区域类型" v-model="query.code" />
|
||||||
|
</a-form-model-item>
|
||||||
|
</Auth>
|
||||||
|
<Auth auth="sysArea:add" slot="operator">
|
||||||
|
<a-button @click="onOpen('add-form')" icon="plus">新增区域编码</a-button>
|
||||||
|
</Auth>
|
||||||
|
<!-- 格式化字段内容 -->
|
||||||
|
<!-- ... -->
|
||||||
|
<span slot="levelType" slot-scope="text">{{ bindCodeValue(text, 'levelType') }}</span>
|
||||||
|
<!-- 添加操作控件 -->
|
||||||
|
<span slot="action" slot-scope="text, record">
|
||||||
|
<yo-table-actions>
|
||||||
|
<Auth auth="sysArea:edit">
|
||||||
|
<a @click="onOpen('edit-form', record)">编辑</a>
|
||||||
|
</Auth>
|
||||||
|
<Auth auth="sysArea:delete">
|
||||||
|
<a-popconfirm @confirm="onDelete(record)" placement="topRight" title="是否确认删除">
|
||||||
|
<a>删除</a>
|
||||||
|
</a-popconfirm>
|
||||||
|
</Auth>
|
||||||
|
<!-- 可在此处添加其他操作控件 -->
|
||||||
|
<!-- ... -->
|
||||||
|
</yo-table-actions>
|
||||||
|
</span>
|
||||||
|
</yo-table>
|
||||||
|
</a-card>
|
||||||
|
</container>
|
||||||
|
|
||||||
<!-- 新增表单 -->
|
<!-- 新增表单 -->
|
||||||
<yo-modal-form :action="$api[api.add]" :title="'新增' + name" @ok="onReloadData" ref="add-form">
|
<yo-modal-form :action="$api[api.add]" :title="'新增' + name" @ok="onReloadData" ref="add-form">
|
||||||
@@ -52,13 +65,16 @@
|
|||||||
<yo-modal-form :action="$api[api.edit]" :title="'编辑' + name" @ok="onReloadData" ref="edit-form">
|
<yo-modal-form :action="$api[api.edit]" :title="'编辑' + name" @ok="onReloadData" ref="edit-form">
|
||||||
<form-body />
|
<form-body />
|
||||||
</yo-modal-form>
|
</yo-modal-form>
|
||||||
</container>
|
</yo-tree-layout>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
/* 需要引用YoTreeLayout组件 */
|
||||||
|
import YoTreeLayout from '@/components/yoTreeLayout';
|
||||||
import FormBody from './form';
|
import FormBody from './form';
|
||||||
|
|
||||||
/* 在此管理整个页面需要的接口名称 */
|
/* 在此管理整个页面需要的接口名称 */
|
||||||
const api = {
|
const api = {
|
||||||
|
tree: 'getAreaTree',
|
||||||
page: 'sysAreaPage',
|
page: 'sysAreaPage',
|
||||||
add: 'sysAreaAdd',
|
add: 'sysAreaAdd',
|
||||||
edit: 'sysAreaEdit',
|
edit: 'sysAreaEdit',
|
||||||
@@ -68,8 +84,10 @@ const api = {
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
|
YoTreeLayout,
|
||||||
FormBody,
|
FormBody,
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
api,
|
api,
|
||||||
@@ -82,23 +100,23 @@ export default {
|
|||||||
/* 表格字段 */
|
/* 表格字段 */
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
title: '参数类型',
|
title: '区域类型',
|
||||||
dataIndex: 'levelType',
|
dataIndex: 'levelType',
|
||||||
scopedSlots: { customRender: 'levelType' },
|
scopedSlots: { customRender: 'levelType' },
|
||||||
sorter: true,
|
sorter: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '参数名称',
|
title: '区域名称',
|
||||||
dataIndex: 'name',
|
dataIndex: 'name',
|
||||||
sorter: true,
|
sorter: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '参数编号',
|
title: '区域编号',
|
||||||
dataIndex: 'code',
|
dataIndex: 'code',
|
||||||
sorter: true,
|
sorter: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '区域编号',
|
title: '行政编号',
|
||||||
dataIndex: 'adCode',
|
dataIndex: 'adCode',
|
||||||
sorter: true,
|
sorter: true,
|
||||||
},
|
},
|
||||||
@@ -108,7 +126,7 @@ export default {
|
|||||||
sorter: true,
|
sorter: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '序号',
|
title: '排序',
|
||||||
dataIndex: 'sort',
|
dataIndex: 'sort',
|
||||||
sorter: true,
|
sorter: true,
|
||||||
},
|
},
|
||||||
@@ -120,8 +138,8 @@ export default {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
/** 按需加载字典编码 */
|
|
||||||
this.onLoadCodes();
|
this.onLoadCodes();
|
||||||
|
|
||||||
/** 根据权限添加操作列 */
|
/** 根据权限添加操作列 */
|
||||||
@@ -135,7 +153,30 @@ export default {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
/**
|
||||||
|
* 树形选择界面必要的方法
|
||||||
|
* 传给yo-table-layout以示意数据接口
|
||||||
|
*/
|
||||||
|
loadTreeData() {
|
||||||
|
return this.$api[api.tree]({ level: 3 }).then((res) => {
|
||||||
|
return res.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 树形选择界面必要的方法
|
||||||
|
* 选择树节点事件
|
||||||
|
*/
|
||||||
|
onSelect([code]) {
|
||||||
|
/** 在选择事件中可以对右侧表格添加父节点code的查询条件 */
|
||||||
|
this.query = {
|
||||||
|
pcode: code,
|
||||||
|
};
|
||||||
|
this.onQuery();
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 必要的方法
|
* 必要的方法
|
||||||
* 传给yo-table以示意数据接口及其参数和返回的数据结构
|
* 传给yo-table以示意数据接口及其参数和返回的数据结构
|
||||||
@@ -162,12 +203,16 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有查询功能时的必要方法
|
* 必要方法
|
||||||
* 重置查询条件
|
* 重新列表数据
|
||||||
*/
|
*/
|
||||||
onResetQuery() {
|
onResetQuery() {
|
||||||
/** 在这里重置查询条件时,可对特殊的字段做保留处理 */
|
/* 与普通查询页不同的是,这里的父节点参数不应该在重置后被清空 */
|
||||||
this.query = {};
|
Object.keys(this.query).forEach((p) => {
|
||||||
|
if (p !== 'pcode') {
|
||||||
|
this.query[p] = undefined;
|
||||||
|
}
|
||||||
|
});
|
||||||
this.onQuery();
|
this.onQuery();
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -177,6 +222,7 @@ export default {
|
|||||||
*/
|
*/
|
||||||
onReloadData() {
|
onReloadData() {
|
||||||
this.$refs.table.onReloadData();
|
this.$refs.table.onReloadData();
|
||||||
|
this.$refs['tree-layout'].onReloadData();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -209,12 +255,13 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 必要方法
|
* 有编辑新增功能的必要方法
|
||||||
* 从列表页调用窗口的打开方法
|
* 从列表页调用窗口的打开方法
|
||||||
*/
|
*/
|
||||||
onOpen(formName, record) {
|
onOpen(formName, record) {
|
||||||
this.$refs[formName].onOpen({
|
this.$refs[formName].onOpen({
|
||||||
record,
|
record,
|
||||||
|
pcode: this.query.pcode,
|
||||||
/* 按需添加其他参数 */
|
/* 按需添加其他参数 */
|
||||||
/* ... */
|
/* ... */
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user