417 lines
13 KiB
Vue
417 lines
13 KiB
Vue
|
|
<template>
|
|||
|
|
<page-header-wrapper>
|
|||
|
|
<Grid :columns="['400px', 1]" :rows="gridRows">
|
|||
|
|
<a-card title="组织架构-保障力量" class="my-card my-card-has-title" :bordered="false" style="grid-row: 1 / 3">
|
|||
|
|
<template #extra>
|
|||
|
|
<a-button type="primary" icon="plus" shape="circle" title="新增" @click="handleOpenAddZzjgModal()"></a-button>
|
|||
|
|
</template>
|
|||
|
|
<a-tree
|
|||
|
|
:treeData="zzjg.treeData"
|
|||
|
|
:selectedKeys.sync="zzjg.selectedKeys"
|
|||
|
|
:expandedKeys.sync="zzjg.expandedKeys"
|
|||
|
|
@select="handleChangeZzjgSelected"
|
|||
|
|
>
|
|||
|
|
<template #title="{ key: id, title }">
|
|||
|
|
<a-dropdown :trigger="['contextmenu']">
|
|||
|
|
<span>{{ title }}</span>
|
|||
|
|
<template #overlay>
|
|||
|
|
<Flex class="contextmenu-zz">
|
|||
|
|
<a-button
|
|||
|
|
type="text-primary"
|
|||
|
|
icon="edit"
|
|||
|
|
title="编辑"
|
|||
|
|
@click="handleOpenEditZzjgModal(id)"
|
|||
|
|
></a-button>
|
|||
|
|
<a-button
|
|||
|
|
type="text-primary"
|
|||
|
|
icon="plus"
|
|||
|
|
title="新增子项"
|
|||
|
|
@click="handleOpenAddZzjgModal(id)"
|
|||
|
|
></a-button>
|
|||
|
|
<a-button
|
|||
|
|
type="text-danger"
|
|||
|
|
icon="delete"
|
|||
|
|
title="删除"
|
|||
|
|
@click="handleDeleteZzjg(id, title)"
|
|||
|
|
></a-button>
|
|||
|
|
</Flex>
|
|||
|
|
</template>
|
|||
|
|
</a-dropdown>
|
|||
|
|
</template>
|
|||
|
|
</a-tree>
|
|||
|
|
</a-card>
|
|||
|
|
<a-card title="组织人员" class="my-card my-card-has-title" :bordered="false">
|
|||
|
|
<template #extra>
|
|||
|
|
<a-button type="primary" style="margin-right: 20px" @click="handleOpenAddZzryModal">新增</a-button>
|
|||
|
|
<a-icon
|
|||
|
|
v-if="layoutRight === 'zzry'"
|
|||
|
|
type="fullscreen-exit"
|
|||
|
|
style="font-size: 32px"
|
|||
|
|
@click="layoutRight = 'auto'"
|
|||
|
|
/>
|
|||
|
|
<a-icon v-else type="fullscreen" style="font-size: 32px" @click="layoutRight = 'zzry'" />
|
|||
|
|
</template>
|
|||
|
|
<AntQueryTable
|
|||
|
|
ref="zzry-table"
|
|||
|
|
height="100%"
|
|||
|
|
:queryConfig="zzry.queryConfig"
|
|||
|
|
:tableConfig="zzry.tableConfig"
|
|||
|
|
:pageConfig="zzry.pageConfig"
|
|||
|
|
:showTool="zzry.showTool"
|
|||
|
|
>
|
|||
|
|
<template #tablecell-action="{ record }">
|
|||
|
|
<a-button type="text-primary" icon="edit" @click="handleOpenEditZzryModal(record)"></a-button>
|
|||
|
|
</template>
|
|||
|
|
</AntQueryTable>
|
|||
|
|
</a-card>
|
|||
|
|
<a-card title="组织装备" class="my-card my-card-has-title" :bordered="false">
|
|||
|
|
<template #extra>
|
|||
|
|
<a-button type="primary" style="margin-right: 20px" @click="handleOpenAddZzzbModal">新增</a-button>
|
|||
|
|
<a-icon
|
|||
|
|
v-if="layoutRight === 'zzzb'"
|
|||
|
|
type="fullscreen-exit"
|
|||
|
|
style="font-size: 32px"
|
|||
|
|
@click="layoutRight = 'auto'"
|
|||
|
|
/>
|
|||
|
|
<a-icon v-else type="fullscreen" style="font-size: 32px" @click="layoutRight = 'zzzb'" />
|
|||
|
|
</template>
|
|||
|
|
<AntQueryTable
|
|||
|
|
ref="zzzb-table"
|
|||
|
|
height="100%"
|
|||
|
|
:queryConfig="zzzb.queryConfig"
|
|||
|
|
:tableConfig="zzzb.tableConfig"
|
|||
|
|
:pageConfig="zzzb.pageConfig"
|
|||
|
|
:showTool="zzzb.showTool"
|
|||
|
|
>
|
|||
|
|
<template #tablecell-action="{ record }">
|
|||
|
|
<a-button type="text-primary" icon="edit" @click="handleOpenEditZzzbModal(record)"></a-button>
|
|||
|
|
</template>
|
|||
|
|
</AntQueryTable>
|
|||
|
|
</a-card>
|
|||
|
|
</Grid>
|
|||
|
|
<AntFormModal
|
|||
|
|
:visible.sync="zzjgModal.visible"
|
|||
|
|
:title="zzjgModal.title"
|
|||
|
|
:formItems="zzjgModal.formItems"
|
|||
|
|
:formRules="zzjgModal.formRules"
|
|||
|
|
:formData="zzjgModal.formData"
|
|||
|
|
:onSubmit="handleSubmitZzjg"
|
|||
|
|
@success="handleSubmitZzjgSuccess"
|
|||
|
|
></AntFormModal>
|
|||
|
|
<AntFormModal
|
|||
|
|
:visible.sync="zzryModal.visible"
|
|||
|
|
:title="zzryModal.title"
|
|||
|
|
:formItems="zzryModal.formItems"
|
|||
|
|
:formRules="zzryModal.formRules"
|
|||
|
|
:formData="zzryModal.formData"
|
|||
|
|
:onSubmit="handleSubmitZzry"
|
|||
|
|
@success="handleSubmitZzrySuccess"
|
|||
|
|
></AntFormModal>
|
|||
|
|
<AntFormModal
|
|||
|
|
:visible.sync="zzzbModal.visible"
|
|||
|
|
:title="zzzbModal.title"
|
|||
|
|
:formItems="zzzbFormItems"
|
|||
|
|
:formRules="zzzbModal.formRules"
|
|||
|
|
:formData="zzzbModal.formData"
|
|||
|
|
:onSubmit="handleSubmitZzzb"
|
|||
|
|
@success="handleSubmitZzzbSuccess"
|
|||
|
|
></AntFormModal>
|
|||
|
|
</page-header-wrapper>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
export default {
|
|||
|
|
name: 'Bzllsjk',
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
layoutRight: 'auto',
|
|||
|
|
zzjg: {
|
|||
|
|
treeData: [],
|
|||
|
|
selectedKeys: [],
|
|||
|
|
expandedKeys: [],
|
|||
|
|
},
|
|||
|
|
zzjgModal: {
|
|||
|
|
visible: false,
|
|||
|
|
title: '',
|
|||
|
|
mode: '',
|
|||
|
|
formItems: [
|
|||
|
|
{
|
|||
|
|
label: '上级组织',
|
|||
|
|
prop: 'parentId',
|
|||
|
|
component: 'AntOriginTreeSelect',
|
|||
|
|
options: {
|
|||
|
|
dataSource: () =>
|
|||
|
|
this.$http({
|
|||
|
|
url: '/tree/organization',
|
|||
|
|
method: 'get',
|
|||
|
|
params: { unittype: 2 },
|
|||
|
|
}).then((res) => ({ data: [{ key: 0, title: '根组织' }].concat(res.data) })),
|
|||
|
|
valueKey: 'key',
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
label: '标识编码',
|
|||
|
|
prop: 'codeName',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
label: '组织名称',
|
|||
|
|
prop: 'name',
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
formRules: {
|
|||
|
|
codeName: [{ required: true, message: '请输入标识编码!', trigger: 'blur' }],
|
|||
|
|
name: [{ required: true, message: '请输入组织名称!', trigger: 'blur' }],
|
|||
|
|
},
|
|||
|
|
formData: {},
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
zzry: {
|
|||
|
|
queryConfig: false,
|
|||
|
|
tableConfig: {
|
|||
|
|
table: {},
|
|||
|
|
immediate: false,
|
|||
|
|
query: () =>
|
|||
|
|
this.$http({
|
|||
|
|
url: `/baseData/fightPowerHierarchy/staff/${this.zzjg.selectedKeys[0]}`,
|
|||
|
|
method: 'get',
|
|||
|
|
}),
|
|||
|
|
columns: [
|
|||
|
|
{ dataIndex: 'serial' },
|
|||
|
|
{ title: '岗位', dataIndex: 'name', width: 'auto', minWidth: 150 },
|
|||
|
|
{ title: '岗位数量', dataIndex: 'number', type: 'number', width: 'auto', minWidth: 150 },
|
|||
|
|
{ dataIndex: 'action' },
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
pageConfig: false,
|
|||
|
|
showTool: false,
|
|||
|
|
},
|
|||
|
|
zzryModal: {
|
|||
|
|
visible: false,
|
|||
|
|
title: '',
|
|||
|
|
mode: '',
|
|||
|
|
formItems: [
|
|||
|
|
{
|
|||
|
|
label: '岗位名称',
|
|||
|
|
prop: 'typeId',
|
|||
|
|
component: 'AntOriginSelect',
|
|||
|
|
options: {
|
|||
|
|
dataSource: () =>
|
|||
|
|
this.$http({
|
|||
|
|
url: '/unit/getAll',
|
|||
|
|
method: 'get',
|
|||
|
|
}),
|
|||
|
|
labelKey: 'name',
|
|||
|
|
readonly: false,
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
{ label: '岗位数量', prop: 'number' },
|
|||
|
|
],
|
|||
|
|
formRules: {
|
|||
|
|
typeId: [{ required: true, message: '请选择岗位!', trigger: 'change' }],
|
|||
|
|
number: [{ required: true, message: '请输入岗位数量!', trigger: 'blur' }],
|
|||
|
|
},
|
|||
|
|
formData: {},
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
zzzb: {
|
|||
|
|
queryConfig: false,
|
|||
|
|
tableConfig: {
|
|||
|
|
table: {},
|
|||
|
|
immediate: false,
|
|||
|
|
query: () =>
|
|||
|
|
this.$http({
|
|||
|
|
url: `/baseData/fightPowerHierarchy/weapon/${this.zzjg.selectedKeys[0]}`,
|
|||
|
|
method: 'get',
|
|||
|
|
}),
|
|||
|
|
columns: [
|
|||
|
|
{ dataIndex: 'serial' },
|
|||
|
|
{ title: '装备名称', dataIndex: 'name', width: 'auto', minWidth: 150 },
|
|||
|
|
{ title: '装备数量', dataIndex: 'number', type: 'number', width: 'auto', minWidth: 150 },
|
|||
|
|
{ dataIndex: 'action' },
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
pageConfig: false,
|
|||
|
|
showTool: false,
|
|||
|
|
},
|
|||
|
|
zzzbModal: {
|
|||
|
|
visible: false,
|
|||
|
|
title: '',
|
|||
|
|
mode: '',
|
|||
|
|
formItems: [
|
|||
|
|
{
|
|||
|
|
label: '装备名称',
|
|||
|
|
prop: 'weaponId',
|
|||
|
|
component: 'AntOriginTreeSelect',
|
|||
|
|
options: {
|
|||
|
|
dataSource: () =>
|
|||
|
|
this.$http({
|
|||
|
|
url: '/tree/armament',
|
|||
|
|
method: 'get',
|
|||
|
|
}),
|
|||
|
|
readonly: false,
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
{ label: '装备数量', prop: 'number' },
|
|||
|
|
],
|
|||
|
|
formRules: {
|
|||
|
|
weaponId: [{ required: true, message: '请选择装备!', trigger: 'change' }],
|
|||
|
|
number: [{ required: true, message: '请输入装备数量!', trigger: 'blur' }],
|
|||
|
|
},
|
|||
|
|
formData: {},
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
computed: {
|
|||
|
|
gridRows() {
|
|||
|
|
return {
|
|||
|
|
auto: [1, 1],
|
|||
|
|
zzry: [1, '56px'],
|
|||
|
|
zzzb: ['56px', 1],
|
|||
|
|
}[this.layoutRight]
|
|||
|
|
},
|
|||
|
|
zzzbFormItems() {
|
|||
|
|
return [
|
|||
|
|
this.zzzbModal.mode === 'add'
|
|||
|
|
? {
|
|||
|
|
label: '装备名称',
|
|||
|
|
prop: 'weaponId',
|
|||
|
|
component: 'AntOriginTreeSelect',
|
|||
|
|
options: {
|
|||
|
|
dataSource: () =>
|
|||
|
|
this.$http({
|
|||
|
|
url: '/tree/armament',
|
|||
|
|
method: 'get',
|
|||
|
|
}),
|
|||
|
|
readonly: false,
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
: { label: '装备名称', prop: 'name', customRender: (v) => v },
|
|||
|
|
{ label: '装备数量', prop: 'number' },
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
created() {
|
|||
|
|
this.getZzTree()
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
async getZzTree() {
|
|||
|
|
try {
|
|||
|
|
const res = await this.$http({
|
|||
|
|
url: `/tree/organization`,
|
|||
|
|
method: 'get',
|
|||
|
|
params: { unittype: 2 },
|
|||
|
|
})
|
|||
|
|
this.zzjg.treeData = res.data
|
|||
|
|
this.zzjg.selectedKeys = [this.zzjg.treeData[0].key]
|
|||
|
|
this.handleChangeZzjgSelected()
|
|||
|
|
} catch (error) {
|
|||
|
|
console.log(error)
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
handleChangeZzjgSelected() {
|
|||
|
|
this.$refs['zzry-table'].commitAction('reload')
|
|||
|
|
this.$refs['zzzb-table'].commitAction('reload')
|
|||
|
|
},
|
|||
|
|
handleOpenAddZzjgModal(parentId) {
|
|||
|
|
this.zzjgModal.title = '新建保障力量'
|
|||
|
|
this.zzjgModal.mode = 'add'
|
|||
|
|
this.zzjgModal.formData = { unittype: 2, parentId }
|
|||
|
|
this.zzjgModal.visible = true
|
|||
|
|
},
|
|||
|
|
async handleOpenEditZzjgModal(id) {
|
|||
|
|
try {
|
|||
|
|
const res = await this.$http({
|
|||
|
|
url: `/baseData/fightPowerHierarchy/${id}`,
|
|||
|
|
method: 'get',
|
|||
|
|
})
|
|||
|
|
this.zzjgModal.title = '编辑保障力量'
|
|||
|
|
this.zzjgModal.mode = 'edit'
|
|||
|
|
this.zzjgModal.formData = res.data
|
|||
|
|
this.zzjgModal.visible = true
|
|||
|
|
} catch (error) {
|
|||
|
|
console.log(error)
|
|||
|
|
this.$message.error('未知错误,请重试')
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
handleSubmitZzjg(formData) {
|
|||
|
|
return this.$http({
|
|||
|
|
url: `/baseData/fightPowerHierarchy/save`,
|
|||
|
|
method: 'post',
|
|||
|
|
data: formData,
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
handleSubmitZzjgSuccess() {
|
|||
|
|
this.getZzTree()
|
|||
|
|
},
|
|||
|
|
async handleDeleteZzjg(id, title) {
|
|||
|
|
try {
|
|||
|
|
await this.$confirm({ content: `确定删除保障力量-${title}?` })
|
|||
|
|
await this.$http({
|
|||
|
|
url: `/baseData/fightPowerHierarchy/remove/${id}`,
|
|||
|
|
method: 'get',
|
|||
|
|
})
|
|||
|
|
this.$message.success('删除成功')
|
|||
|
|
this.getZzTree()
|
|||
|
|
} catch (error) {}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
handleOpenAddZzryModal() {
|
|||
|
|
this.zzryModal.title = '新建组织人员'
|
|||
|
|
this.zzryModal.mode = 'add'
|
|||
|
|
this.zzryModal.formData = { parentId: this.zzjg.selectedKeys[0] }
|
|||
|
|
this.zzryModal.formItems[0].options.readonly = false
|
|||
|
|
this.zzryModal.visible = true
|
|||
|
|
},
|
|||
|
|
handleOpenEditZzryModal(record) {
|
|||
|
|
this.zzryModal.title = `编辑组织人员`
|
|||
|
|
this.zzryModal.mode = 'edit'
|
|||
|
|
this.zzryModal.formData = { ...record }
|
|||
|
|
this.zzryModal.formItems[0].options.readonly = true
|
|||
|
|
this.zzryModal.visible = true
|
|||
|
|
},
|
|||
|
|
handleSubmitZzry(formData) {
|
|||
|
|
return this.$http({
|
|||
|
|
url: `/baseData/fightPowerHierarchy/staff/save`,
|
|||
|
|
method: 'post',
|
|||
|
|
data: formData,
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
handleSubmitZzrySuccess() {
|
|||
|
|
this.$refs['zzry-table'].commitAction('query')
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
handleOpenAddZzzbModal() {
|
|||
|
|
this.zzzbModal.title = '新建组织装备'
|
|||
|
|
this.zzzbModal.mode = 'add'
|
|||
|
|
this.zzzbModal.formData = { parentId: this.zzjg.selectedKeys[0] }
|
|||
|
|
this.zzzbModal.visible = true
|
|||
|
|
},
|
|||
|
|
handleOpenEditZzzbModal(record) {
|
|||
|
|
this.zzzbModal.title = `编辑组织装备`
|
|||
|
|
this.zzzbModal.mode = 'edit'
|
|||
|
|
this.zzzbModal.formData = { ...record }
|
|||
|
|
this.zzzbModal.visible = true
|
|||
|
|
},
|
|||
|
|
handleSubmitZzzb(formData) {
|
|||
|
|
return this.$http({
|
|||
|
|
url: `/baseData/fightPowerHierarchy/weapon/save`,
|
|||
|
|
method: 'post',
|
|||
|
|
data: formData,
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
handleSubmitZzzbSuccess() {
|
|||
|
|
this.$refs['zzzb-table'].commitAction('query')
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style lang="less" scoped>
|
|||
|
|
.contextmenu-zz {
|
|||
|
|
padding: 5px;
|
|||
|
|
background-color: #ffffff;
|
|||
|
|
border-radius: 10px;
|
|||
|
|
box-shadow: 0 0 5px #aaaaaa;
|
|||
|
|
}
|
|||
|
|
</style>
|