2025-09-14 15:30:47 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<Flex fd="co" class="zzxd-wrapper">
|
|
|
|
|
|
<Flex class="zzxd-header" ai="c" jc="sb">
|
|
|
|
|
|
<div class="zzxd-title">作战行动</div>
|
|
|
|
|
|
<div>
|
|
|
|
|
|
<a-button type="text-primary" icon="menu"></a-button>
|
|
|
|
|
|
<a-button type="text-primary" icon="plus" @click="handleOpenAddActionModal"></a-button>
|
|
|
|
|
|
<a-button type="text-primary" icon="edit" @click="handleOpenEditActionModal"></a-button>
|
|
|
|
|
|
<a-button type="text-primary" icon="delete" @click="handleDeleteAction"></a-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<a-modal
|
|
|
|
|
|
v-model="actionModal.visible"
|
|
|
|
|
|
:title="actionModal.title"
|
|
|
|
|
|
:maskClosable="false"
|
|
|
|
|
|
:destroyOnClose="true"
|
|
|
|
|
|
@ok="handleSubmilAction"
|
|
|
|
|
|
>
|
|
|
|
|
|
<a-form-model
|
|
|
|
|
|
:model="actionModal.formData"
|
|
|
|
|
|
layout="horizontal"
|
|
|
|
|
|
:labelCol="{ span: 6 }"
|
|
|
|
|
|
:wrapperCol="{ span: 15 }"
|
|
|
|
|
|
>
|
|
|
|
|
|
<a-form-model-item v-for="item in actionModal.formItems" :key="item.prop" v-bind="item">
|
|
|
|
|
|
<component
|
|
|
|
|
|
:is="item.component || 'a-input'"
|
|
|
|
|
|
v-model="actionModal.formData[item.prop]"
|
|
|
|
|
|
v-bind="item.options"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a-form-model-item>
|
|
|
|
|
|
</a-form-model>
|
|
|
|
|
|
</a-modal>
|
|
|
|
|
|
</Flex>
|
|
|
|
|
|
<div class="flex-1 scroller-y">
|
|
|
|
|
|
<div v-for="item in actionList" :key="item.id" class="action-item flex" @click="checkedAction = item">
|
|
|
|
|
|
<div class="action-icon">
|
|
|
|
|
|
<div class="action-line"></div>
|
|
|
|
|
|
<a-radio :checked="checkedAction && checkedAction.id === item.id" style="margin-right: 0"></a-radio>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="flex-1">
|
|
|
|
|
|
<div class="action-title">{{ item.typeName || '- -' }}</div>
|
|
|
|
|
|
<div class="action-time">开始时间:{{ item.beginDateTime }}</div>
|
|
|
|
|
|
<div class="action-time">结束时间:{{ item.endDateTime }}</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</Flex>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
export default {
|
|
|
|
|
|
props: {
|
|
|
|
|
|
actionList: { type: Array, default: () => [] },
|
|
|
|
|
|
},
|
|
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
checkedAction: null,
|
|
|
|
|
|
actionModal: {
|
|
|
|
|
|
visible: false,
|
|
|
|
|
|
formItems: [
|
|
|
|
|
|
{ label: '事件名称', prop: 'typeName' },
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '事件类型',
|
|
|
|
|
|
prop: 'typeType',
|
|
|
|
|
|
component: 'AntOriginSelect',
|
|
|
|
|
|
options: {
|
|
|
|
|
|
dataSource: () => ({
|
|
|
|
|
|
data: [
|
2025-09-15 08:50:55 +08:00
|
|
|
|
{ id: '1', title: '机动任务' },
|
|
|
|
|
|
{ id: '2', title: '战斗任务' },
|
|
|
|
|
|
{ id: '3', title: '整备任务' },
|
|
|
|
|
|
{ id: '4', title: '弹药保障' },
|
|
|
|
|
|
{ id: '5', title: '水保障' },
|
|
|
|
|
|
{ id: '6', title: '油保障' },
|
|
|
|
|
|
{ id: '7', title: '食品保障' }
|
2025-09-14 15:30:47 +08:00
|
|
|
|
],
|
|
|
|
|
|
}),
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
{ label: '开始时间', prop: 'beginDateTime', component: 'a-date-picker', options: { showTime: true } },
|
|
|
|
|
|
{ label: '结束时间', prop: 'endDateTime', component: 'a-date-picker', options: { showTime: true } },
|
|
|
|
|
|
{ label: '目标经度', prop: 'lon', component: 'a-input-number' },
|
|
|
|
|
|
{ label: '目标纬度', prop: 'lat', component: 'a-input-number' },
|
|
|
|
|
|
],
|
|
|
|
|
|
formData: {},
|
|
|
|
|
|
},
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
|
|
|
handleOpenAddActionModal() {
|
|
|
|
|
|
this.actionModal.title = '添加事件信息'
|
|
|
|
|
|
this.actionModal.formData = {}
|
|
|
|
|
|
this.actionModal.visible = true
|
|
|
|
|
|
},
|
|
|
|
|
|
handleOpenEditActionModal() {
|
|
|
|
|
|
this.actionModal.title = '修改事件信息'
|
|
|
|
|
|
this.actionModal.formData = { ...this.checkedAction }
|
|
|
|
|
|
this.actionModal.visible = true
|
|
|
|
|
|
},
|
|
|
|
|
|
async handleSubmilAction() {
|
|
|
|
|
|
try {
|
|
|
|
|
|
await this.$http({
|
|
|
|
|
|
url: '/save',
|
|
|
|
|
|
method: 'post',
|
|
|
|
|
|
data: this.actionModal.formData,
|
|
|
|
|
|
})
|
|
|
|
|
|
this.$message.success(`${this.actionModal.title}成功`)
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
|
console.log(error)
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
async handleDeleteAction() {
|
|
|
|
|
|
try {
|
|
|
|
|
|
await this.$confirm('确认删除所选事件吗?')
|
|
|
|
|
|
await this.$http({
|
|
|
|
|
|
url: '/delete',
|
|
|
|
|
|
method: 'delete',
|
|
|
|
|
|
params: { id: this.checkedAction.id },
|
|
|
|
|
|
})
|
|
|
|
|
|
this.$message.success(`删除事件成功`)
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
|
this.$message.success(`删除事件失败`)
|
|
|
|
|
|
console.log(error)
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
|
|
|
.zzxd-wrapper {
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
.zzxd-header {
|
|
|
|
|
|
padding: 5px 0;
|
|
|
|
|
|
border-bottom: 1px solid #00baff22;
|
|
|
|
|
|
.zzxd-title {
|
|
|
|
|
|
color: #00baff;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.action-item {
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
padding: 5px 0;
|
|
|
|
|
|
.action-icon {
|
|
|
|
|
|
padding: 5px 16px;
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
flex-shrink: 0;
|
|
|
|
|
|
.action-line {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
right: 50%;
|
|
|
|
|
|
top: 21px;
|
|
|
|
|
|
width: 1px;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
background-color: #00baff;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.action-item:last-of-type {
|
|
|
|
|
|
.action-line {
|
|
|
|
|
|
display: none;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.action-item:hover {
|
|
|
|
|
|
background-color: #bae7ff44;
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|