|
|
@@ -0,0 +1,987 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <DarkLayout :query-form="queryForm">
|
|
|
+ <!-- 查询表单插槽 -->
|
|
|
+ <template #query-form>
|
|
|
+ <el-form-item label="任务名称">
|
|
|
+ <el-input
|
|
|
+ v-model="queryForm.name"
|
|
|
+ placeholder="请输入任务名称"
|
|
|
+ clearable
|
|
|
+ @input="handleQuery"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="任务代号">
|
|
|
+ <el-input
|
|
|
+ v-model="queryForm.taskCode"
|
|
|
+ placeholder="请输入任务代号"
|
|
|
+ clearable
|
|
|
+ @input="handleQuery"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <!-- Header右侧操作按钮 -->
|
|
|
+ <template #header-actions>
|
|
|
+ <el-button icon="el-icon-search" type="primary" @click="handleQuery">
|
|
|
+ 查询
|
|
|
+ </el-button>
|
|
|
+
|
|
|
+ <el-button
|
|
|
+ @click="resetQuery"
|
|
|
+ icon="el-icon-delete"
|
|
|
+ type="primary"
|
|
|
+ > 重置 </el-button>
|
|
|
+ <el-button
|
|
|
+ @click="handleConfirm"
|
|
|
+ icon="el-icon-thumb"
|
|
|
+ type="primary"
|
|
|
+ > 确定方案 </el-button>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <!-- 主要内容 -->
|
|
|
+ <template #main>
|
|
|
+ <el-tabs v-model="activeTab" @tab-click="handleTabChange">
|
|
|
+ <el-tab-pane label="干扰方案" name="interference">
|
|
|
+ <div class="cards-container">
|
|
|
+ <InterferenceCard
|
|
|
+ v-for="plan in currentInterferencePlans"
|
|
|
+ :key="plan.id"
|
|
|
+ :plan="plan"
|
|
|
+ @select="handleSelectInt"
|
|
|
+ @check="handleInterferenceCheck"
|
|
|
+ @view-detail="viewDetailsInt"
|
|
|
+ @view-edit="viewEditInt"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ <el-tab-pane label="靶标方案" name="target">
|
|
|
+ <div class="cards-container">
|
|
|
+ <TargetCard
|
|
|
+ v-for="plan in currentTargetPlans"
|
|
|
+ :key="plan.id"
|
|
|
+ :plan="plan"
|
|
|
+ @select="handleSelectB"
|
|
|
+ @check="handleTargetCheck"
|
|
|
+ @view-detail="viewDetailsB"
|
|
|
+ @view-edit="viewEditB"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ <el-tab-pane label="测量方案" name="measurement">
|
|
|
+ <div class="cards-container">
|
|
|
+ <MeasCard
|
|
|
+ v-for="plan in currentMeasPlans"
|
|
|
+ :key="plan.id"
|
|
|
+ :plan="plan"
|
|
|
+ @select="handleSelectC"
|
|
|
+ @check="handleMeasCheck"
|
|
|
+ @view-detail="viewDetailsC"
|
|
|
+ @view-edit="viewEditC"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <!-- 底部右侧分页 -->
|
|
|
+ <template #footer-actions>
|
|
|
+ <el-pagination
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
+ :current-page="pagination.currentPage"
|
|
|
+ :page-sizes="[10, 20, 50, 100]"
|
|
|
+ :page-size="pagination.pageSize"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ :total="pagination.total"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </DarkLayout>
|
|
|
+
|
|
|
+ <!-- 选择方案抽屉 -->
|
|
|
+ <DarkDrawer
|
|
|
+ title="选择方案"
|
|
|
+ :visible.sync="drawerVisible"
|
|
|
+ @confirm="handleConfirm"
|
|
|
+ @cancel="drawerVisible=false"
|
|
|
+ >
|
|
|
+ <div class="drawer-main">
|
|
|
+ <!-- 干扰方案 -->
|
|
|
+ <div class="section-group">
|
|
|
+ <div class="section-header">
|
|
|
+ <h3 class="section-title">干扰方案</h3>
|
|
|
+ <div class="section-divider"></div>
|
|
|
+ </div>
|
|
|
+ <div class="cards-container">
|
|
|
+ <InterferenceCard
|
|
|
+ v-for="plan in interferencePlanData"
|
|
|
+ :key="plan.id"
|
|
|
+ :plan="plan"
|
|
|
+ v-if="interferencePlanData.length > 0"
|
|
|
+ @select="handleSelectInt"
|
|
|
+ @check="handleInterferenceCheck"
|
|
|
+ @view-detail="viewDetailsInt"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 靶标方案 -->
|
|
|
+ <div class="section-group">
|
|
|
+ <div class="section-header">
|
|
|
+ <h3 class="section-title">靶标方案</h3>
|
|
|
+ <div class="section-divider"></div>
|
|
|
+ </div>
|
|
|
+ <div class="cards-container">
|
|
|
+ <TargetCard
|
|
|
+ v-if="planListB.length > 0"
|
|
|
+ v-for="plan in planListB"
|
|
|
+ :key="plan.id"
|
|
|
+ :plan="plan"
|
|
|
+ @select="handleSelectB"
|
|
|
+ @check="handleTargetCheck"
|
|
|
+ @view-detail="viewDetailsB"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 测量方案 -->
|
|
|
+ <div class="section-group">
|
|
|
+ <div class="section-header">
|
|
|
+ <h3 class="section-title">测量方案</h3>
|
|
|
+ <div class="section-divider"></div>
|
|
|
+ </div>
|
|
|
+ <div class="cards-container">
|
|
|
+ <MeasCard
|
|
|
+ v-for="plan in measPlanData"
|
|
|
+ :key="plan.id"
|
|
|
+ :plan="plan"
|
|
|
+ v-if="measPlanData.length > 0"
|
|
|
+ @select="handleSelectC"
|
|
|
+ @check="handleMeasCheck"
|
|
|
+ @view-detail="viewDetailsC"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 当前角色 -->
|
|
|
+ <div class="section-group">
|
|
|
+ <div class="section-header">
|
|
|
+ <h3 class="section-title">当前角色</h3>
|
|
|
+ <div class="section-divider"></div>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <el-radio-group v-model="role">
|
|
|
+ <el-radio label="ordinary">普通用户</el-radio>
|
|
|
+ <el-radio label="command">指挥用户</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div>
|
|
|
+ <el-button @click="drawerVisible = false">取消</el-button>
|
|
|
+ <el-button type="primary" @click="handleConfirm">确定</el-button>
|
|
|
+ </div>
|
|
|
+ </DarkDrawer>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import DarkLayout from './components/DarkLayout.vue'
|
|
|
+import TaskUserCard from '@/components/Components/TaskUserCard.vue'
|
|
|
+import DarkDialog from "@/components/Components/DarkDialog.vue";
|
|
|
+import TargetCard from "@/views/command/importTask/components/TargetCard.vue"
|
|
|
+import MeasCard from "@/views/command/importTask/components/MeasCard.vue"
|
|
|
+import InterferenceCard from "@/views/command/importTask/components/InterferenceCard.vue"
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ DarkDialog,
|
|
|
+ DarkLayout,
|
|
|
+ TaskUserCard,
|
|
|
+ TargetCard,
|
|
|
+ MeasCard,
|
|
|
+ InterferenceCard
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ role: 'ordinary',
|
|
|
+ activeTab: 'interference',
|
|
|
+ selectedInterference: null,
|
|
|
+ selectedTarget: null,
|
|
|
+ selectedMeas: null,
|
|
|
+ drawerQueryForm: {
|
|
|
+ planName: '',
|
|
|
+ taskName: '',
|
|
|
+ status: ''
|
|
|
+ },
|
|
|
+ filteredPlansData: [],
|
|
|
+ drawerVisible: false,
|
|
|
+ tableData: [
|
|
|
+ {
|
|
|
+ date: '2023-06-01',
|
|
|
+ name: '张三',
|
|
|
+ address: '北京市海淀区'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ date: '2023-06-02',
|
|
|
+ name: '李四',
|
|
|
+ address: '上海市浦东新区'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ plans: [
|
|
|
+ {
|
|
|
+ id: '1',
|
|
|
+ planName: '新型导弹打击试验-综合布设方案',
|
|
|
+ taskName: '新型导弹打击试验',
|
|
|
+ taskCode: 'TASK-2023-001',
|
|
|
+ startTime: '2023-01-01',
|
|
|
+ endTime: '2023-12-31',
|
|
|
+ secretLevel: '秘密',
|
|
|
+ secretYears: '10年',
|
|
|
+ status: '有效',
|
|
|
+ interferenceSchemeStatus: '已编制',
|
|
|
+ measurementSchemeStatus: '已编制',
|
|
|
+ targetSchemeStatus: '已编制',
|
|
|
+ version: 'V1.0.0'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: '2',
|
|
|
+ planName: '电子对抗演练-综合布设方案',
|
|
|
+ taskName: '电子对抗演练',
|
|
|
+ taskCode: 'TASK-2023-002',
|
|
|
+ startTime: '2023-02-01',
|
|
|
+ endTime: '2023-11-30',
|
|
|
+ secretLevel: '机密',
|
|
|
+ secretYears: '15年',
|
|
|
+ status: '待审核',
|
|
|
+ interferenceSchemeStatus: '已审核',
|
|
|
+ measurementSchemeStatus: '已编制',
|
|
|
+ targetSchemeStatus: '编制中',
|
|
|
+ version: 'V1.1.0'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: '3',
|
|
|
+ planName: '电子对抗演练-综合布设方案',
|
|
|
+ taskName: '电子对抗演练',
|
|
|
+ taskCode: 'TASK-2023-003',
|
|
|
+ startTime: '2023-03-01',
|
|
|
+ endTime: '2023-10-31',
|
|
|
+ secretLevel: '绝密',
|
|
|
+ secretYears: '20年',
|
|
|
+ status: '草稿',
|
|
|
+ interferenceSchemeStatus: '未编制',
|
|
|
+ measurementSchemeStatus: '已编制',
|
|
|
+ targetSchemeStatus: '未编制',
|
|
|
+ version: 'V0.9.0'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: '4',
|
|
|
+ planName: '新型导弹打击试验-综合布设方案',
|
|
|
+ taskName: '新型导弹打击试验',
|
|
|
+ taskCode: 'TASK-2023-003',
|
|
|
+ startTime: '2023-03-01',
|
|
|
+ endTime: '2023-10-31',
|
|
|
+ secretLevel: '绝密',
|
|
|
+ secretYears: '20年',
|
|
|
+ status: '草稿',
|
|
|
+ interferenceSchemeStatus: '未编制',
|
|
|
+ measurementSchemeStatus: '已编制',
|
|
|
+ targetSchemeStatus: '未编制',
|
|
|
+ version: 'V0.9.0'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: '5',
|
|
|
+ planName: '电子对抗演练-综合布设方案',
|
|
|
+ taskName: '电子对抗演练',
|
|
|
+ taskCode: 'TASK-2023-001',
|
|
|
+ startTime: '2023-01-01',
|
|
|
+ endTime: '2023-12-31',
|
|
|
+ secretLevel: '秘密',
|
|
|
+ secretYears: '10年',
|
|
|
+ status: '有效',
|
|
|
+ interferenceSchemeStatus: '已编制',
|
|
|
+ measurementSchemeStatus: '已编制',
|
|
|
+ targetSchemeStatus: '已编制',
|
|
|
+ version: 'V1.0.0'
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ planList: [
|
|
|
+ {
|
|
|
+ id: "import_001",
|
|
|
+ planName: "2024年度导弹防御系统测试方案",
|
|
|
+ simulationTaskName: "导弹防御系统联合仿真测试",
|
|
|
+ simulationStartTime: "2024-06-15 08:00:00",
|
|
|
+ simulationEndTime: "2024-06-20 18:00:00",
|
|
|
+ simulationCount: "5次",
|
|
|
+ simulationParticipantTasks: "雷达监测、导弹拦截、数据分析",
|
|
|
+ secretLevel: "机密",
|
|
|
+ status: "已确认",
|
|
|
+ username: "张三",
|
|
|
+ createTime: "2024-05-20 14:30:00",
|
|
|
+ taskType: "联合仿真"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "import_002",
|
|
|
+ planName: "新型雷达系统性能验证方案",
|
|
|
+ simulationTaskName: "相控阵雷达多目标跟踪测试",
|
|
|
+ simulationStartTime: "2024-07-10 09:00:00",
|
|
|
+ simulationEndTime: "2024-07-15 17:00:00",
|
|
|
+ simulationCount: "3次",
|
|
|
+ simulationParticipantTasks: "目标识别、轨迹预测、威胁评估",
|
|
|
+ secretLevel: "秘密",
|
|
|
+ status: "未确认",
|
|
|
+ username: "李四",
|
|
|
+ createTime: "2024-06-01 10:15:00",
|
|
|
+ taskType: "性能验证"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "import_003",
|
|
|
+ planName: "电子对抗系统实战演练方案",
|
|
|
+ simulationTaskName: "复杂电磁环境下电子对抗演练",
|
|
|
+ simulationStartTime: "2024-08-05 08:30:00",
|
|
|
+ simulationEndTime: "2024-08-10 19:00:00",
|
|
|
+ simulationCount: "8次",
|
|
|
+ simulationParticipantTasks: "电子干扰、通信保障、频谱监测",
|
|
|
+ secretLevel: "绝密",
|
|
|
+ status: "草稿",
|
|
|
+ username: "王五",
|
|
|
+ createTime: "2024-07-15 16:45:00",
|
|
|
+ taskType: "实战演练"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ dialogVisible: false,
|
|
|
+ currentPlan: {},
|
|
|
+ queryForm: {
|
|
|
+ name: '',
|
|
|
+ taskCode: ''
|
|
|
+ },
|
|
|
+ planListB: [
|
|
|
+ {
|
|
|
+ id: "target_001",
|
|
|
+ planName: "2024年度东海靶场实弹射击训练方案",
|
|
|
+ taskName: "东海舰队实弹射击训练任务",
|
|
|
+ taskCode: "DH-2024-TS-001",
|
|
|
+ startTime: "2024-06-15 08:00:00",
|
|
|
+ endTime: "2024-06-20 18:00:00",
|
|
|
+ compileStatus: "已编制",
|
|
|
+ secretLevel: "机密",
|
|
|
+ secretYears: "20年",
|
|
|
+ status: "有效"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "target_002",
|
|
|
+ planName: "南海区域反舰导弹靶标测试方案",
|
|
|
+ taskName: "南海舰队反舰导弹测试任务",
|
|
|
+ taskCode: "NH-2024-ASM-002",
|
|
|
+ startTime: "2024-07-10 09:00:00",
|
|
|
+ endTime: "2024-07-15 17:00:00",
|
|
|
+ compileStatus: "编制中",
|
|
|
+ secretLevel: "秘密",
|
|
|
+ secretYears: "10年",
|
|
|
+ status: "待审核"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "target_003",
|
|
|
+ planName: "黄海区域靶标部署方案",
|
|
|
+ taskName: "黄海联合演习任务",
|
|
|
+ taskCode: "HH-2024-TS-003",
|
|
|
+ startTime: "2024-08-01 08:00:00",
|
|
|
+ endTime: "2024-08-05 18:00:00",
|
|
|
+ compileStatus: "已编制",
|
|
|
+ secretLevel: "秘密",
|
|
|
+ secretYears: "10年",
|
|
|
+ status: "有效"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "target_004",
|
|
|
+ planName: "渤海湾靶场实弹训练方案",
|
|
|
+ taskName: "北海舰队实弹训练任务",
|
|
|
+ taskCode: "BH-2024-TS-004",
|
|
|
+ startTime: "2024-09-10 09:00:00",
|
|
|
+ endTime: "2024-09-15 17:00:00",
|
|
|
+ compileStatus: "已审核",
|
|
|
+ secretLevel: "机密",
|
|
|
+ secretYears: "15年",
|
|
|
+ status: "待执行"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "target_005",
|
|
|
+ planName: "远洋靶标测试方案",
|
|
|
+ taskName: "远洋舰队训练任务",
|
|
|
+ taskCode: "YY-2024-TS-005",
|
|
|
+ startTime: "2024-10-05 08:00:00",
|
|
|
+ endTime: "2024-10-20 18:00:00",
|
|
|
+ compileStatus: "编制中",
|
|
|
+ secretLevel: "绝密",
|
|
|
+ secretYears: "20年",
|
|
|
+ status: "草稿"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "target_006",
|
|
|
+ planName: "近海靶标布设方案",
|
|
|
+ taskName: "近海防御演习任务",
|
|
|
+ taskCode: "JH-2024-TS-006",
|
|
|
+ startTime: "2024-11-10 09:00:00",
|
|
|
+ endTime: "2024-11-15 17:00:00",
|
|
|
+ compileStatus: "已编制",
|
|
|
+ secretLevel: "秘密",
|
|
|
+ secretYears: "10年",
|
|
|
+ status: "有效"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "target_007",
|
|
|
+ planName: "岛礁区域靶标部署方案",
|
|
|
+ taskName: "岛礁防御训练任务",
|
|
|
+ taskCode: "DJ-2024-TS-007",
|
|
|
+ startTime: "2024-12-01 08:00:00",
|
|
|
+ endTime: "2024-12-05 18:00:00",
|
|
|
+ compileStatus: "已编制",
|
|
|
+ secretLevel: "机密",
|
|
|
+ secretYears: "15年",
|
|
|
+ status: "待审核"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ measPlanData: [
|
|
|
+ {
|
|
|
+ id: "meas_001",
|
|
|
+ planName: "2024年度导弹试验测量方案",
|
|
|
+ taskName: "东风系列导弹测试任务",
|
|
|
+ taskCode: "DF-2024-MS-001",
|
|
|
+ startTime: "2024-06-15 08:00:00",
|
|
|
+ endTime: "2024-06-20 18:00:00",
|
|
|
+ compileStatus: "已编制",
|
|
|
+ secretLevel: "机密",
|
|
|
+ secretYears: "20年",
|
|
|
+ status: "有效"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "meas_002",
|
|
|
+ planName: "新型雷达系统测量验证方案",
|
|
|
+ taskName: "相控阵雷达性能验证任务",
|
|
|
+ taskCode: "PA-2024-RD-002",
|
|
|
+ startTime: "2024-07-10 09:00:00",
|
|
|
+ endTime: "2024-07-15 17:00:00",
|
|
|
+ compileStatus: "编制中",
|
|
|
+ secretLevel: "秘密",
|
|
|
+ secretYears: "10年",
|
|
|
+ status: "待审核"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "meas_003",
|
|
|
+ planName: "卫星导航测量方案",
|
|
|
+ taskName: "导航系统精度验证任务",
|
|
|
+ taskCode: "WD-2024-MS-003",
|
|
|
+ startTime: "2024-08-05 08:00:00",
|
|
|
+ endTime: "2024-08-10 18:00:00",
|
|
|
+ compileStatus: "已编制",
|
|
|
+ secretLevel: "机密",
|
|
|
+ secretYears: "15年",
|
|
|
+ status: "有效"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "meas_004",
|
|
|
+ planName: "无人机测量方案",
|
|
|
+ taskName: "无人机侦察系统测试任务",
|
|
|
+ taskCode: "WRJ-2024-MS-004",
|
|
|
+ startTime: "2024-09-10 09:00:00",
|
|
|
+ endTime: "2024-09-15 17:00:00",
|
|
|
+ compileStatus: "已审核",
|
|
|
+ secretLevel: "秘密",
|
|
|
+ secretYears: "10年",
|
|
|
+ status: "待执行"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "meas_005",
|
|
|
+ planName: "舰艇雷达测量方案",
|
|
|
+ taskName: "舰艇雷达性能测试任务",
|
|
|
+ taskCode: "JD-2024-MS-005",
|
|
|
+ startTime: "2024-10-15 08:00:00",
|
|
|
+ endTime: "2024-10-20 18:00:00",
|
|
|
+ compileStatus: "编制中",
|
|
|
+ secretLevel: "机密",
|
|
|
+ secretYears: "15年",
|
|
|
+ status: "草稿"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "meas_006",
|
|
|
+ planName: "光电测量系统验证方案",
|
|
|
+ taskName: "光电探测系统测试任务",
|
|
|
+ taskCode: "GD-2024-MS-006",
|
|
|
+ startTime: "2024-11-05 09:00:00",
|
|
|
+ endTime: "2024-11-10 17:00:00",
|
|
|
+ compileStatus: "已编制",
|
|
|
+ secretLevel: "秘密",
|
|
|
+ secretYears: "10年",
|
|
|
+ status: "有效"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "meas_007",
|
|
|
+ planName: "声呐系统测量方案",
|
|
|
+ taskName: "水下探测系统测试任务",
|
|
|
+ taskCode: "SN-2024-MS-007",
|
|
|
+ startTime: "2024-12-10 08:00:00",
|
|
|
+ endTime: "2024-12-15 18:00:00",
|
|
|
+ compileStatus: "已编制",
|
|
|
+ secretLevel: "绝密",
|
|
|
+ secretYears: "20年",
|
|
|
+ status: "待审核"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ interferencePlanData: [
|
|
|
+ {
|
|
|
+ id: 'plan-001',
|
|
|
+ planName: '东海靶场2023年度靶标保障方案',
|
|
|
+ taskName: '新型导弹打击试验',
|
|
|
+ taskCode: 'DH-2023-001',
|
|
|
+ startTime: '2023-06-15',
|
|
|
+ endTime: '2023-06-20',
|
|
|
+ compileStatus: '已编制',
|
|
|
+ secretLevel: '秘密',
|
|
|
+ secretYears: '10年',
|
|
|
+ status: '有效'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 'plan-002',
|
|
|
+ planName: '南海靶场电子对抗方案',
|
|
|
+ taskName: '电子对抗演练',
|
|
|
+ taskCode: 'NH-2023-002',
|
|
|
+ startTime: '2023-07-10',
|
|
|
+ endTime: '2023-07-15',
|
|
|
+ compileStatus: '编制中',
|
|
|
+ secretLevel: '机密',
|
|
|
+ secretYears: '5年',
|
|
|
+ status: '待审核'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 'plan-003',
|
|
|
+ planName: '黄海区域电子干扰方案',
|
|
|
+ taskName: '黄海联合演习',
|
|
|
+ taskCode: 'HH-2023-003',
|
|
|
+ startTime: '2023-08-05',
|
|
|
+ endTime: '2023-08-10',
|
|
|
+ compileStatus: '已编制',
|
|
|
+ secretLevel: '秘密',
|
|
|
+ secretYears: '10年',
|
|
|
+ status: '有效'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 'plan-004',
|
|
|
+ planName: '渤海湾电子对抗演练方案',
|
|
|
+ taskName: '北海舰队训练',
|
|
|
+ taskCode: 'BH-2023-004',
|
|
|
+ startTime: '2023-09-15',
|
|
|
+ endTime: '2023-09-20',
|
|
|
+ compileStatus: '已审核',
|
|
|
+ secretLevel: '机密',
|
|
|
+ secretYears: '15年',
|
|
|
+ status: '待执行'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 'plan-005',
|
|
|
+ planName: '远洋电子干扰方案',
|
|
|
+ taskName: '远洋舰队演习',
|
|
|
+ taskCode: 'YY-2023-005',
|
|
|
+ startTime: '2023-10-10',
|
|
|
+ endTime: '2023-10-25',
|
|
|
+ compileStatus: '编制中',
|
|
|
+ secretLevel: '绝密',
|
|
|
+ secretYears: '20年',
|
|
|
+ status: '草稿'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 'plan-006',
|
|
|
+ planName: '近海电子防御方案',
|
|
|
+ taskName: '近海防御训练',
|
|
|
+ taskCode: 'JH-2023-006',
|
|
|
+ startTime: '2023-11-05',
|
|
|
+ endTime: '2023-11-10',
|
|
|
+ compileStatus: '已编制',
|
|
|
+ secretLevel: '秘密',
|
|
|
+ secretYears: '10年',
|
|
|
+ status: '有效'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 'plan-007',
|
|
|
+ planName: '岛礁区域电子对抗方案',
|
|
|
+ taskName: '岛礁防御演习',
|
|
|
+ taskCode: 'DJ-2023-007',
|
|
|
+ startTime: '2023-12-01',
|
|
|
+ endTime: '2023-12-05',
|
|
|
+ compileStatus: '已编制',
|
|
|
+ secretLevel: '机密',
|
|
|
+ secretYears: '15年',
|
|
|
+ status: '待审核'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ // 分页配置
|
|
|
+ pagination: {
|
|
|
+ currentPage: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ total: 0
|
|
|
+ },
|
|
|
+ // 各标签页分页配置
|
|
|
+ interferencePagination: {
|
|
|
+ currentPage: 1,
|
|
|
+ pageSize: 6,
|
|
|
+ total: 0
|
|
|
+ },
|
|
|
+ targetPagination: {
|
|
|
+ currentPage: 1,
|
|
|
+ pageSize: 6,
|
|
|
+ total: 0
|
|
|
+ },
|
|
|
+ measPagination: {
|
|
|
+ currentPage: 1,
|
|
|
+ pageSize: 6,
|
|
|
+ total: 0
|
|
|
+ },
|
|
|
+ showAdvancedSearch: false,
|
|
|
+ // 过滤后的数据
|
|
|
+ filteredInterference: [],
|
|
|
+ filteredTarget: [],
|
|
|
+ filteredMeas: []
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ // 计算当前标签页显示的干扰方案
|
|
|
+ currentInterferencePlans() {
|
|
|
+ const start = (this.interferencePagination.currentPage - 1) * this.interferencePagination.pageSize;
|
|
|
+ const end = start + this.interferencePagination.pageSize;
|
|
|
+ return this.filteredInterference.slice(start, end);
|
|
|
+ },
|
|
|
+ // 计算当前标签页显示的靶标方案
|
|
|
+ currentTargetPlans() {
|
|
|
+ const start = (this.targetPagination.currentPage - 1) * this.targetPagination.pageSize;
|
|
|
+ const end = start + this.targetPagination.pageSize;
|
|
|
+ return this.filteredTarget.slice(start, end);
|
|
|
+ },
|
|
|
+ // 计算当前标签页显示的测量方案
|
|
|
+ currentMeasPlans() {
|
|
|
+ const start = (this.measPagination.currentPage - 1) * this.measPagination.pageSize;
|
|
|
+ const end = start + this.measPagination.pageSize;
|
|
|
+ return this.filteredMeas.slice(start, end);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ // 初始化过滤数据
|
|
|
+ this.filteredInterference = [...this.interferencePlanData];
|
|
|
+ this.filteredTarget = [...this.planListB];
|
|
|
+ this.filteredMeas = [...this.measPlanData];
|
|
|
+
|
|
|
+ // 初始化分页总数
|
|
|
+ this.interferencePagination.total = this.filteredInterference.length;
|
|
|
+ this.targetPagination.total = this.filteredTarget.length;
|
|
|
+ this.measPagination.total = this.filteredMeas.length;
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ // 处理标签页切换
|
|
|
+ handleTabChange() {
|
|
|
+ // 切换标签页时重置当前页为1
|
|
|
+ if (this.activeTab === 'interference') {
|
|
|
+ this.interferencePagination.currentPage = 1;
|
|
|
+ } else if (this.activeTab === 'target') {
|
|
|
+ this.targetPagination.currentPage = 1;
|
|
|
+ } else if (this.activeTab === 'measurement') {
|
|
|
+ this.measPagination.currentPage = 1;
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 处理标签页分页大小变化
|
|
|
+ handleTabSizeChange(size, type) {
|
|
|
+ if (type === 'interference') {
|
|
|
+ this.interferencePagination.pageSize = size;
|
|
|
+ this.interferencePagination.currentPage = 1;
|
|
|
+ } else if (type === 'target') {
|
|
|
+ this.targetPagination.pageSize = size;
|
|
|
+ this.targetPagination.currentPage = 1;
|
|
|
+ } else if (type === 'measurement') {
|
|
|
+ this.measPagination.pageSize = size;
|
|
|
+ this.measPagination.currentPage = 1;
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 处理标签页当前页变化
|
|
|
+ handleTabCurrentChange(page, type) {
|
|
|
+ if (type === 'interference') {
|
|
|
+ this.interferencePagination.currentPage = page;
|
|
|
+ } else if (type === 'target') {
|
|
|
+ this.targetPagination.currentPage = page;
|
|
|
+ } else if (type === 'measurement') {
|
|
|
+ this.measPagination.currentPage = page;
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 干扰方案选择处理
|
|
|
+ handleInterferenceCheck(data) {
|
|
|
+ if (data.checked) {
|
|
|
+ this.interferencePlanData = this.interferencePlanData.map(plan => ({
|
|
|
+ ...plan,
|
|
|
+ isSelected: plan.id === data.plan.id
|
|
|
+ }));
|
|
|
+ this.selectedInterference = data.plan;
|
|
|
+ } else {
|
|
|
+ this.selectedInterference = null;
|
|
|
+ const index = this.interferencePlanData.findIndex(plan => plan.id === data.plan.id);
|
|
|
+ if (index !== -1) {
|
|
|
+ this.interferencePlanData[index].isSelected = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 靶标方案选择处理
|
|
|
+ handleTargetCheck(data) {
|
|
|
+ if (data.checked) {
|
|
|
+ this.planListB = this.planListB.map(plan => ({
|
|
|
+ ...plan,
|
|
|
+ isSelected: plan.id === data.plan.id
|
|
|
+ }));
|
|
|
+ this.selectedTarget = data.plan;
|
|
|
+ } else {
|
|
|
+ this.selectedTarget = null;
|
|
|
+ const index = this.planListB.findIndex(plan => plan.id === data.plan.id);
|
|
|
+ if (index !== -1) {
|
|
|
+ this.planListB[index].isSelected = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 测量方案选择处理
|
|
|
+ handleMeasCheck(data) {
|
|
|
+ if (data.checked) {
|
|
|
+ this.measPlanData = this.measPlanData.map(plan => ({
|
|
|
+ ...plan,
|
|
|
+ isSelected: plan.id === data.plan.id
|
|
|
+ }));
|
|
|
+ this.selectedMeas = data.plan;
|
|
|
+ } else {
|
|
|
+ this.selectedMeas = null;
|
|
|
+ const index = this.measPlanData.findIndex(plan => plan.id === data.plan.id);
|
|
|
+ if (index !== -1) {
|
|
|
+ this.measPlanData[index].isSelected = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 确定按钮处理
|
|
|
+ handleConfirm() {
|
|
|
+ if (!this.selectedInterference || !this.selectedTarget || !this.selectedMeas) {
|
|
|
+ this.$message.warning('请分别选择干扰方案、靶标方案和测量方案');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.$router.push({
|
|
|
+ path: '/taskEdit/OverallPlan',
|
|
|
+ query: {
|
|
|
+ interferenceName: this.selectedInterference.planName,
|
|
|
+ targetName: this.selectedTarget.planName,
|
|
|
+ measName: this.selectedMeas.planName,
|
|
|
+ role: this.role
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ this.drawerVisible = false;
|
|
|
+ },
|
|
|
+
|
|
|
+ // 查询处理
|
|
|
+ handleQuery() {
|
|
|
+ const {name, taskCode} = this.queryForm;
|
|
|
+
|
|
|
+ // 过滤干扰方案
|
|
|
+ this.filteredInterference = this.interferencePlanData.filter(plan => {
|
|
|
+ const matchName = name ? plan.taskName.includes(name) : true;
|
|
|
+ const matchCode = taskCode ? plan.taskCode.includes(taskCode) : true;
|
|
|
+ return matchName && matchCode;
|
|
|
+ });
|
|
|
+
|
|
|
+ // 过滤靶标方案
|
|
|
+ this.filteredTarget = this.planListB.filter(plan => {
|
|
|
+ const matchName = name ? plan.taskName.includes(name) : true;
|
|
|
+ const matchCode = taskCode ? plan.taskCode.includes(taskCode) : true;
|
|
|
+ return matchName && matchCode;
|
|
|
+ });
|
|
|
+
|
|
|
+ // 过滤测量方案
|
|
|
+ this.filteredMeas = this.measPlanData.filter(plan => {
|
|
|
+ const matchName = name ? plan.taskName.includes(name) : true;
|
|
|
+ const matchCode = taskCode ? plan.taskCode.includes(taskCode) : true;
|
|
|
+ return matchName && matchCode;
|
|
|
+ });
|
|
|
+
|
|
|
+ // 更新分页总数
|
|
|
+ this.interferencePagination.total = this.filteredInterference.length;
|
|
|
+ this.targetPagination.total = this.filteredTarget.length;
|
|
|
+ this.measPagination.total = this.filteredMeas.length;
|
|
|
+
|
|
|
+ // 重置当前页
|
|
|
+ this.interferencePagination.currentPage = 1;
|
|
|
+ this.targetPagination.currentPage = 1;
|
|
|
+ this.measPagination.currentPage = 1;
|
|
|
+ },
|
|
|
+
|
|
|
+ // 重置查询
|
|
|
+ resetQuery() {
|
|
|
+ this.queryForm = {
|
|
|
+ name: '',
|
|
|
+ taskCode: ''
|
|
|
+ };
|
|
|
+ this.handleQuery();
|
|
|
+ },
|
|
|
+
|
|
|
+ handleSelectInt() {
|
|
|
+ },
|
|
|
+ viewDetailsInt() {
|
|
|
+ },
|
|
|
+ viewEditInt(val){
|
|
|
+ val={
|
|
|
+ ...val,
|
|
|
+ planType: 'int'
|
|
|
+ }
|
|
|
+ this.$router.push({path: '/taskEdit/OverallPlan', query: val})
|
|
|
+ console.log("编辑干扰方案:",val)
|
|
|
+ },
|
|
|
+ handleSelectB() {
|
|
|
+ },
|
|
|
+ viewDetailsB() {
|
|
|
+ },
|
|
|
+ viewEditB(val) {
|
|
|
+ val={
|
|
|
+ ...val,
|
|
|
+ planType: 'targ'
|
|
|
+ }
|
|
|
+ this.$router.push({path: '/taskEdit/OverallPlan', query: val})
|
|
|
+ console.log("编辑靶标方案:",val)
|
|
|
+ },
|
|
|
+ handleSelectC() {
|
|
|
+ },
|
|
|
+ viewDetailsC(val) {
|
|
|
+ console.log("详情测量方案:",val)
|
|
|
+ },
|
|
|
+ viewEditC(val) {
|
|
|
+ val={
|
|
|
+ ...val,
|
|
|
+ planType: 'mea'
|
|
|
+ }
|
|
|
+ this.$router.push({path: '/taskEdit/OverallPlan', query: val})
|
|
|
+ console.log("编辑测量方案:",val)
|
|
|
+ },
|
|
|
+ handleEditInt() {
|
|
|
+ this.$router.push({path: '/planningSchem/Interference', query: {planType: '干扰方案'}})
|
|
|
+ },
|
|
|
+ handleEditB() {
|
|
|
+ this.$router.push({path: '/taskEdit/TargerEdit', query: {planType: '靶标方案'}})
|
|
|
+ },
|
|
|
+ handleEditC() {
|
|
|
+ this.$router.push({path: '/taskEdit/MeasEdit', query: {planType: '测量方案'}})
|
|
|
+ },
|
|
|
+ filteredPlans(type) {
|
|
|
+ const statusField = {
|
|
|
+ interference: 'interferenceSchemeStatus',
|
|
|
+ target: 'targetSchemeStatus',
|
|
|
+ measurement: 'measurementSchemeStatus'
|
|
|
+ }[type];
|
|
|
+
|
|
|
+ return this.plans.filter(plan =>
|
|
|
+ plan[statusField] && plan[statusField] !== '未编制'
|
|
|
+ );
|
|
|
+ },
|
|
|
+ handleViewDetail() {
|
|
|
+ this.$router.push({path: '/importTask/configForPlan'})
|
|
|
+ },
|
|
|
+ chooseTask(plan) {
|
|
|
+ console.log('任务已经选择,选择方案:', plan)
|
|
|
+ this.currentPlan = plan
|
|
|
+ this.drawerVisible = true
|
|
|
+ },
|
|
|
+ handleEdit(plan) {
|
|
|
+ console.log('编辑计划:', plan)
|
|
|
+ this.$router.push({path: ''})
|
|
|
+ },
|
|
|
+ handleSizeChange(val) {
|
|
|
+ this.pagination.pageSize = val
|
|
|
+ this.fetchData()
|
|
|
+ },
|
|
|
+ handleCurrentChange(val) {
|
|
|
+ this.pagination.currentPage = val
|
|
|
+ this.fetchData()
|
|
|
+ },
|
|
|
+ fetchData() {
|
|
|
+ // 获取数据逻辑
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.drawer-main {
|
|
|
+ padding: 20px;
|
|
|
+ max-height: 70vh;
|
|
|
+ overflow-y: auto;
|
|
|
+}
|
|
|
+
|
|
|
+.section-group {
|
|
|
+ margin-bottom: 30px;
|
|
|
+}
|
|
|
+
|
|
|
+.section-header {
|
|
|
+ margin-bottom: 15px;
|
|
|
+}
|
|
|
+
|
|
|
+.section-title {
|
|
|
+ color: #e0e6ed;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: 600;
|
|
|
+ margin-bottom: 8px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+
|
|
|
+.section-title::before {
|
|
|
+ content: '';
|
|
|
+ display: inline-block;
|
|
|
+ width: 4px;
|
|
|
+ height: 18px;
|
|
|
+ background-color: #409EFF;
|
|
|
+ border-radius: 2px;
|
|
|
+ margin-right: 8px;
|
|
|
+}
|
|
|
+
|
|
|
+.section-divider {
|
|
|
+ height: 1px;
|
|
|
+ background: linear-gradient(90deg, rgba(64, 158, 255, 0.5), rgba(64, 158, 255, 0));
|
|
|
+}
|
|
|
+
|
|
|
+/* 卡片容器样式 - 确保每行显示3个,总共6个卡片一页 */
|
|
|
+.cards-container {
|
|
|
+ padding: 15px 0;
|
|
|
+ display: grid;
|
|
|
+ grid-template-columns: repeat(6, 1fr);
|
|
|
+ gap: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+/* 标签页分页样式 */
|
|
|
+.tab-pagination {
|
|
|
+ margin-top: 20px;
|
|
|
+ text-align: center;
|
|
|
+ padding: 10px 0;
|
|
|
+}
|
|
|
+
|
|
|
+/* 抽屉滚动条样式优化 */
|
|
|
+.drawer-main::-webkit-scrollbar {
|
|
|
+ width: 6px;
|
|
|
+}
|
|
|
+
|
|
|
+.drawer-main::-webkit-scrollbar-track {
|
|
|
+ background: #2c3e50;
|
|
|
+}
|
|
|
+
|
|
|
+.drawer-main::-webkit-scrollbar-thumb {
|
|
|
+ background: #4a6572;
|
|
|
+ border-radius: 3px;
|
|
|
+}
|
|
|
+::v-deep .el-tabs__item {
|
|
|
+ color: white;
|
|
|
+}
|
|
|
+</style>
|