parent
7f2fb5e83b
commit
f002a6d8d1
2 changed files with 297 additions and 0 deletions
@ -0,0 +1,53 @@ |
|||||||
|
import request from '@/router/axios'; |
||||||
|
|
||||||
|
export const getList = (current, size, params) => { |
||||||
|
return request({ |
||||||
|
url: '/api/blade-system/region/list', |
||||||
|
method: 'get', |
||||||
|
params: { |
||||||
|
...params, |
||||||
|
current, |
||||||
|
size, |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export const getLazyTree = (parentCode, params) => { |
||||||
|
return request({ |
||||||
|
url: '/api/blade-system/region/lazy-tree', |
||||||
|
method: 'get', |
||||||
|
params: { |
||||||
|
...params, |
||||||
|
parentCode |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export const getDetail = (code) => { |
||||||
|
return request({ |
||||||
|
url: '/api/blade-system/region/detail', |
||||||
|
method: 'get', |
||||||
|
params: { |
||||||
|
code |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export const remove = (id) => { |
||||||
|
return request({ |
||||||
|
url: '/api/blade-system/region/remove', |
||||||
|
method: 'post', |
||||||
|
params: { |
||||||
|
id, |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export const submit = (row) => { |
||||||
|
return request({ |
||||||
|
url: '/api/blade-system/region/submit', |
||||||
|
method: 'post', |
||||||
|
data: row |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
@ -0,0 +1,244 @@ |
|||||||
|
<template> |
||||||
|
<el-row> |
||||||
|
<el-col :span="9"> |
||||||
|
<basic-container> |
||||||
|
<avue-tree :option="treeOption" :data="treeData" @node-click="nodeClick"/> |
||||||
|
</basic-container> |
||||||
|
</el-col> |
||||||
|
<el-col :span="15"> |
||||||
|
<basic-container> |
||||||
|
<el-button-group> |
||||||
|
<el-button type="primary" size="medium" icon="el-icon-circle-plus-outline" @click="addChildren">新增下级 |
||||||
|
</el-button> |
||||||
|
<el-button type="primary" size="medium" icon="el-icon-delete" @click="handleDelete">删除</el-button> |
||||||
|
<el-button type="primary" size="medium" icon="el-icon-upload2">导入</el-button> |
||||||
|
<el-button type="primary" size="medium" icon="el-icon-download">导出</el-button> |
||||||
|
</el-button-group> |
||||||
|
</basic-container> |
||||||
|
<basic-container> |
||||||
|
<avue-form ref="form" :option="regionOption" v-model="regionForm" @submit="handleSubmit"> |
||||||
|
<template slot="code" slot-scope="{}"> |
||||||
|
<el-input placeholder="请输入区划子编号" v-model="regionForm.subCode"> |
||||||
|
<template slot="prepend">{{regionForm.parentCode}}</template> |
||||||
|
</el-input> |
||||||
|
</template> |
||||||
|
</avue-form> |
||||||
|
</basic-container> |
||||||
|
</el-col> |
||||||
|
</el-row> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import {getLazyTree, getDetail, submit, remove} from "@/api/base/region"; |
||||||
|
import {mapGetters} from "vuex"; |
||||||
|
import {validatenull} from "@/util/validate"; |
||||||
|
|
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
treeData: [], |
||||||
|
treeOption: { |
||||||
|
nodeKey: 'id', |
||||||
|
lazy: true, |
||||||
|
treeLoad: function (node, resolve) { |
||||||
|
const parentCode = (node.level === 0) ? "00" : node.data.id; |
||||||
|
getLazyTree(parentCode).then(res => { |
||||||
|
resolve(res.data.data.map(item => { |
||||||
|
return { |
||||||
|
...item, |
||||||
|
leaf: !item.hasChildren |
||||||
|
} |
||||||
|
})) |
||||||
|
}); |
||||||
|
}, |
||||||
|
addBtn: false, |
||||||
|
menu: false, |
||||||
|
size: 'small', |
||||||
|
props: { |
||||||
|
labelText: '标题', |
||||||
|
label: 'title', |
||||||
|
value: 'value', |
||||||
|
children: 'children' |
||||||
|
} |
||||||
|
}, |
||||||
|
regionForm: {}, |
||||||
|
regionOption: { |
||||||
|
labelWidth: 100, |
||||||
|
column: [ |
||||||
|
{ |
||||||
|
label: "父区划编号", |
||||||
|
prop: "parentCode", |
||||||
|
span: 24, |
||||||
|
disabled: false, |
||||||
|
rules: [{ |
||||||
|
required: true, |
||||||
|
message: "请输入父区划编号", |
||||||
|
trigger: "blur" |
||||||
|
}] |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: "区划编号", |
||||||
|
prop: "code", |
||||||
|
formslot: true, |
||||||
|
span: 24, |
||||||
|
rules: [{ |
||||||
|
required: true, |
||||||
|
message: "请输入区划编号", |
||||||
|
trigger: "blur" |
||||||
|
}] |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: "区划子编号", |
||||||
|
prop: "subCode", |
||||||
|
display: false, |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: "区划名称", |
||||||
|
prop: "name", |
||||||
|
span: 24, |
||||||
|
rules: [{ |
||||||
|
required: true, |
||||||
|
message: "请输入区划名称", |
||||||
|
trigger: "blur" |
||||||
|
}] |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: "区划等级", |
||||||
|
prop: "level", |
||||||
|
type: "radio", |
||||||
|
dicUrl: "/api/blade-system/dict/dictionary?code=region", |
||||||
|
props: { |
||||||
|
label: "dictValue", |
||||||
|
value: "dictKey" |
||||||
|
}, |
||||||
|
dataType: "number", |
||||||
|
span: 24, |
||||||
|
rules: [{ |
||||||
|
required: true, |
||||||
|
message: "请选择区划等级", |
||||||
|
trigger: "blur" |
||||||
|
}] |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: "区划排序", |
||||||
|
prop: "sort", |
||||||
|
type: "number", |
||||||
|
span: 24, |
||||||
|
rules: [{ |
||||||
|
required: true, |
||||||
|
message: "请输入区划排序", |
||||||
|
trigger: "blur" |
||||||
|
}] |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: "区划备注", |
||||||
|
prop: "remark", |
||||||
|
type: "textarea", |
||||||
|
minRows: 6, |
||||||
|
span: 24, |
||||||
|
}, |
||||||
|
] |
||||||
|
}, |
||||||
|
data: [] |
||||||
|
}; |
||||||
|
}, |
||||||
|
watch: { |
||||||
|
'regionForm.subCode'() { |
||||||
|
this.regionForm.code = this.regionForm.parentCode + this.regionForm.subCode; |
||||||
|
} |
||||||
|
}, |
||||||
|
computed: { |
||||||
|
...mapGetters(["permission"]), |
||||||
|
permissionList() { |
||||||
|
return { |
||||||
|
addBtn: this.vaildData(this.permission.region_add, false), |
||||||
|
viewBtn: this.vaildData(this.permission.region_view, false), |
||||||
|
delBtn: this.vaildData(this.permission.region_delete, false), |
||||||
|
editBtn: this.vaildData(this.permission.region_edit, false) |
||||||
|
}; |
||||||
|
}, |
||||||
|
ids() { |
||||||
|
let ids = []; |
||||||
|
this.selectionList.forEach(ele => { |
||||||
|
ids.push(ele.id); |
||||||
|
}); |
||||||
|
return ids.join(","); |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
initTree() { |
||||||
|
this.treeData = []; |
||||||
|
getLazyTree("00").then(res => { |
||||||
|
this.treeData = res.data.data.map(item => { |
||||||
|
return { |
||||||
|
...item, |
||||||
|
leaf: !item.hasChildren |
||||||
|
} |
||||||
|
}) |
||||||
|
}); |
||||||
|
}, |
||||||
|
nodeClick(data) { |
||||||
|
const column = this.findObject(this.regionOption.column, "parentCode"); |
||||||
|
column.disabled = true; |
||||||
|
getDetail(data.id).then(res => { |
||||||
|
this.regionForm = res.data.data; |
||||||
|
debugger |
||||||
|
this.regionForm.subCode = this.regionForm.code.replace(this.regionForm.parentCode, ''); |
||||||
|
}) |
||||||
|
}, |
||||||
|
addChildren() { |
||||||
|
if (validatenull(this.regionForm.code)) { |
||||||
|
this.$message.warning("请先选择一项区划"); |
||||||
|
return; |
||||||
|
} |
||||||
|
this.regionForm.parentCode = this.regionForm.code; |
||||||
|
this.regionForm.code = ''; |
||||||
|
this.regionForm.subCode = ''; |
||||||
|
this.regionForm.name = ''; |
||||||
|
this.regionForm.level = (this.regionForm.level === 5) ? 5 : this.regionForm.level + 1; |
||||||
|
}, |
||||||
|
handleSubmit(form, done, loading) { |
||||||
|
form.code = form.parentCode + form.subCode; |
||||||
|
submit(form).then(() => { |
||||||
|
this.$message({ |
||||||
|
type: "success", |
||||||
|
message: "操作成功!" |
||||||
|
}); |
||||||
|
this.initTree(); |
||||||
|
this.regionForm.subCode = ''; |
||||||
|
this.$refs.form.resetForm(); |
||||||
|
done(); |
||||||
|
}, error => { |
||||||
|
loading(); |
||||||
|
window.console.log(error); |
||||||
|
}); |
||||||
|
}, |
||||||
|
handleDelete() { |
||||||
|
if (validatenull(this.regionForm.code)) { |
||||||
|
this.$message.warning("请先选择一项区划"); |
||||||
|
return; |
||||||
|
} |
||||||
|
this.$confirm(`确定将 [${this.regionForm.name}] 数据删除?`, { |
||||||
|
confirmButtonText: "确定", |
||||||
|
cancelButtonText: "取消", |
||||||
|
type: "warning" |
||||||
|
}) |
||||||
|
.then(() => { |
||||||
|
return remove(this.regionForm.code); |
||||||
|
}) |
||||||
|
.then(() => { |
||||||
|
this.$message({ |
||||||
|
type: "success", |
||||||
|
message: "操作成功!" |
||||||
|
}); |
||||||
|
this.initTree(); |
||||||
|
this.regionForm.subCode = ''; |
||||||
|
this.$refs.form.resetForm(); |
||||||
|
}); |
||||||
|
}, |
||||||
|
} |
||||||
|
}; |
||||||
|
</script> |
||||||
|
|
||||||
|
<style> |
||||||
|
</style> |
||||||
Loading…
Reference in new issue