Przeglądaj źródła

事件换行 推演任务展示 文件git添加

lyc 4 miesięcy temu
rodzic
commit
f8c683bb01

+ 86 - 0
src/api/taskMage/taskMage.js

@@ -0,0 +1,86 @@
+
+
+import request from "@/utils/request";
+
+export function taskInsert(data) {
+  return request({
+    url: "/api/v1/test-task/insert",
+    method: "post",
+    data,
+  });
+}
+
+export function subTaskInsert(data) {
+  return request({
+    url: "/api/v1/test-task/insert-sub-task",
+    method: "post",
+    data,
+  });
+}
+
+export function missileTaskInsert(data) {
+  return request({
+    url: "/api/v1/test-task/insert-missile-task",
+    method: "post",
+    data,
+  });
+}
+
+//update-missile-task
+export function missileTaskUpdate(data) {
+  return request({
+    url: "/api/v1/test-task/update-missile-task",
+    method: "post",
+    data,
+  });
+}
+
+
+export function taskUpdate(data) {
+  return request({
+    url: "/api/v1/test-task/update",
+    method: "post",
+    data,
+  });
+}
+
+
+export function findPageTask(params){
+
+  return request({
+    url: "/api/v1/test-task/findPage",
+    method: "get",
+    params,
+  });
+}
+
+export function getTask(params){
+  return request({
+    url: "/api/v1/test-task/get",
+    method: "get",
+    params,
+  });
+}
+
+export function deleteTask(params){
+  return request({
+    url: "/api/v1/test-task/delete",
+    method: "post",
+    params,
+  });
+}
+
+export function deleteMissileTask(params){
+  return request({
+    url: "/api/v1/test-task/delete-missile-task",
+    method: "post",
+    params,
+  });
+}
+export function deleteSubTask(params){
+  return request({
+    url: "/api/v1/test-task/delete-sub-task",
+    method: "post",
+    params,
+  });
+}

+ 8 - 0
src/components/Components/DarkDialog.vue

@@ -55,6 +55,14 @@
         type: Boolean,
         default: true,
       },
+      title:{
+        type: String,
+        default: null,
+      },
+      customClass:{
+        type: String,
+        default: null,
+      }
     },
     methods: {
       handleCancel() {

+ 6 - 9
src/components/Components/TaskUserCard.vue

@@ -46,7 +46,7 @@
             :disabled="!isTaskTypeOverflow"
           >
             <span ref="taskNameRef" class="info-value dark-value text-ellipsis">
-              {{ plan.taskType || "-" }}
+              {{ this.$getDictNameByValue('task_type',plan.taskType+'') || "-" }}
             </span>
           </el-tooltip>
         </div>
@@ -65,12 +65,12 @@
         <div class="info-row">
           <span class="info-label dark-label">任务时间:</span>
           <el-tooltip
-            :content="plan.taskTime"
+            :content="plan.testTime"
             placement="top"
             :disabled="!isEndTimeOverflow"
           >
             <span ref="endTimeRef" class="info-value dark-value text-ellipsis">
-              {{ plan.taskTime || "-" }}
+              {{ plan.testTime || "-" }}
             </span>
           </el-tooltip>
         </div>
@@ -123,7 +123,7 @@
         required: true,
         default: () => ({
           id: "",
-          taskTime: "",
+            testTime: "",
           planName: "",
           taskType: "",
           taskName: "",
@@ -187,6 +187,7 @@
     },
     mounted() {
       this.checkOverflows();
+        console.log(this.plan,"333")
     },
     updated() {
       this.checkOverflows();
@@ -240,11 +241,7 @@
         })
           .then(() => {
             // 用户点击“确定”
-            // 执行删除逻辑,例如调用 API
-            this.$message({
-              type: "success",
-              message: "删除成功!",
-            });
+            this.$emit("delete",this.plan)
           })
           .catch(() => {
             // 用户点击“取消”或关闭弹窗

+ 65 - 0
src/components/VabDictSelect/VabDictSelect.vue

@@ -0,0 +1,65 @@
+<template>
+  <el-select
+          :value="value"
+          @input="$emit('input', $event)"
+    v-bind="$attrs"
+    @change="changeData"
+  >
+    <el-option
+      v-for="item in dict"
+      :key="item.id || item.dictValue"
+      :label="item.dictName"
+      :value="item.dictValue"
+    />
+  </el-select>
+</template>
+
+<script>
+export default {
+  name: 'VabDictSelect',
+  props: {
+    dictCode:{
+      required:true,
+      type:String
+    },
+      value:[String,Number],
+  },
+  emits: ['change', 'update:value'],
+    watch:{
+      value(newVal){
+          if(typeof newVal == 'number'){
+              // eslint-disable-next-line vue/no-mutating-props
+              this.value = newVal+'';
+
+              this.$forceUpdate();
+          }
+          console.log(this.dict[0].dictValue ,this.value)
+      }
+    },
+  data(){
+    return {
+      dict:[],
+    }
+  },
+  computed: {
+    localModelValue: {
+      get() {
+        return this.modelValue;
+      },
+      set(newValue) {
+        this.$emit('update:value', newValue);
+      }
+    }
+  },
+    methods:{
+      changeData(){
+          this.$emit('change',this.value)
+      }
+    },
+  created() {
+    this.dict = this.$getDictList(this.dictCode);
+
+
+  }
+}
+</script>

+ 1 - 1
src/config/net.config.js

@@ -5,7 +5,7 @@ const network = {
   // 默认的接口地址 如果是开发环境和生产环境走vab-mock-server,当然你也可以选择自己配置成需要的接口地址
   baseURL:
     process.env.NODE_ENV === "development"
-      ? "http://10.168.1.152/sl-boot"
+      ? "http://10.168.1.152:7000/evods"
       : "/sl-boot",
   //配后端数据的接收方式application/json;charset=UTF-8或者application/x-www-form-urlencoded;charset=UTF-8
   contentType: "application/json;charset=UTF-8",

+ 7 - 0
src/router/index.js

@@ -72,6 +72,13 @@ export const constantRoutes = [
     component: () => import("@/views/planAndDeduction/taskMage/taskMage"),
     hidden: true,
   },
+  /*仿真推演想定编辑*/
+  {
+    path: "/home/gen",
+    name: "gen",
+    component: () => import("@/views/modules/generator/table/index.vue"),
+    hidden: true,
+  },
   /*{
     path: "/index",
     name: "index",

+ 0 - 7
src/views/modules/generator/table/index.vue

@@ -4,21 +4,18 @@
       <vab-query-form-left-panel :span="10">
 
         <el-button
-          v-if="$perms('dev_generator_insert')"
           icon="el-icon-plus"
           type="primary"
           @click="handleInsert"
         > 添加 </el-button>
 
         <el-button
-          v-if="$perms('dev_generator_import')"
           icon="el-icon-plus"
           type="primary"
           @click="handleImport"
         > 从数据库导入 </el-button>
 
         <el-button
-          v-if="$perms('dev_generator_delete')"
           :disabled="!selectRows.length > 0"
           icon="el-icon-delete"
           type="danger"
@@ -26,7 +23,6 @@
         > 批量删除 </el-button>
 
         <el-button
-          v-if="$perms('dev_generator_create')"
           :disabled="selectRows.length !== 1"
           icon="el-icon-plus"
           type="warning"
@@ -34,7 +30,6 @@
         > 生成代码 </el-button>
 
         <el-button
-          v-if="$perms('dev_generator_createMenu')"
           :disabled="selectRows.length !== 1"
           icon="el-icon-menu"
           type="warning"
@@ -163,12 +158,10 @@
             >
               <!-- 添加下级 只有上级为 菜单是才可以 -->
               <el-dropdown-item
-                v-if="$perms('dev_generator_sync')"
                 @click.native="handleSync(scope.row)"
               >同步</el-dropdown-item>
 
               <el-dropdown-item
-                v-if="$perms('dev_generator_delete')"
                 @click.native="handleDelete(scope.row)"
               >删除</el-dropdown-item>
 

+ 0 - 5
src/views/modules/generator/template/index.vue

@@ -19,14 +19,12 @@
     <vab-query-form>
       <vab-query-form-left-panel :span="10">
         <el-button
-            v-if="$perms('generator_template_insert')"
             icon="el-icon-plus"
             type="primary"
             @click="handleInsert"
         > 添加 </el-button>
 
         <el-button
-          v-if="$perms('generator_template_copy')"
           :disabled="selectRows.length !== 1"
           icon="el-icon-download"
           type="warning"
@@ -112,11 +110,9 @@
         show-overflow-tooltip
         label="操作"
         width="130"
-        v-if="$perms('generator_template_update') || $perms('generator_template_delete')"
       >
         <template v-slot="scope">
           <el-button
-            v-if="$perms('generator_template_update')"
             type="text"
             @click="handleUpdate(scope.row)"
           > 编辑 </el-button>
@@ -124,7 +120,6 @@
           <el-divider direction="vertical"></el-divider>
 
           <el-button
-            v-if="$perms('generator_template_delete')"
             type="text"
             @click="handleDelete(scope.row)"
           > 删除 </el-button>

+ 43 - 16
src/views/planAndDeduction/taskMage/index.vue

@@ -3,19 +3,15 @@
     <DarkLayout :query-form="queryForm">
       <!-- 查询表单插槽 -->
       <template #query-form>
-        <el-form-item label="方案名称">
+        <el-form-item label="总体方案名称">
           <el-input
               v-model="queryForm.name"
-              placeholder="请输入方案名称"
+              placeholder="请输入总体方案名称"
               clearable
           />
         </el-form-item>
         <el-form-item label="任务类型">
-          <el-input
-            v-model="queryForm.taskType"
-            placeholder="请输入任务类型"
-            clearable
-          />
+          <vab-dict-select placeholder="请选择任务类型" v-model="queryForm.taskType" clearable dict-code="task_type" />
         </el-form-item>
         <el-form-item label="创建时间">
           <el-date-picker
@@ -49,6 +45,7 @@
             v-if="planList.length > 0"
             @select="handleSelect"
             @edit="handleEdit"
+            @delete="handleDelete"
             @view-detail="viewDetails"
             @view-childs-detail="viewChildsDetails"
         />
@@ -123,9 +120,12 @@
 import DarkLayout from '@/components/GlobalComponents/DarkLayout.vue'
 import TaskUserCard from '@/components/Components/TaskUserCard.vue'
 import DarkDialog from "@/components/Components/DarkDialog.vue";
+import VabDictSelect from "@/components/VabDictSelect/VabDictSelect.vue";
+import {deleteTask, findPageTask} from "@/api/taskMage/taskMage";
 
 export default {
   components: {
+    VabDictSelect,
     DarkDialog,
     DarkLayout,
     TaskUserCard
@@ -248,6 +248,9 @@ export default {
         },
 
       ],
+      dict:{
+
+      },
       pagination: {
         currentPage: 1,
         pageSize: 10,
@@ -256,6 +259,10 @@ export default {
       showAdvancedSearch: false
     }
   },
+  created() {
+    this.dict.task_type= this.$getDictList('task_type')
+    this.handleQuery();
+  },
   methods: {
     handleClose(done) {
       done()
@@ -264,9 +271,18 @@ export default {
     },
     handleEdit(plan) {
       //跳转页面
-      this.$router.push({ path: '/home/taskMage' })
+      this.$router.push({ path: '/home/taskMage',query:{
+          id:plan.id
+          } })
       // this.$router.push({ path: '/home/taskCreate' })
     },
+
+      async handleDelete(plan){
+        await deleteTask({id:plan.id});
+        this.$message.success("删除成功");
+        await this.handleQuery();
+      },
+
     // 显示解析方式选择弹窗
     showParseMethodModal() {
       this.parseMethodVisible = true;
@@ -275,8 +291,13 @@ export default {
     confirmParseMethod() {
       this.parseMethodVisible = false;
       // 根据选择的解析方式跳转到不同路由
-      // 如果需要区分不同方式,可以在这里添加判断
-      this.$router.push({ path: '/home/taskCreate' });
+      if (this.parseForm.method == 'manual'){
+        this.$router.push({ path: '/home/taskMage' })
+      } else if (this.parseForm.method == 'upload'){
+        // 如果需要区分不同方式,可以在这里添加判断
+        this.$router.push({ path: '/home/taskCreate' });
+      }
+
     },
     viewDetails(plan) {
       this.currentPlan = plan;
@@ -286,8 +307,17 @@ export default {
     viewChildsDetails(){
       console.log("查看子任务")
     },
-    handleQuery() {
+    async handleQuery() {
       // 查询逻辑
+     const res = await findPageTask({
+         taskName_LIKE:this.queryForm.name,
+         taskType_EQ:this.queryForm.taskType,
+         taskTime: null,
+         pageNo:this.pagination.currentPage,
+         pageSize:this.pagination.pageSize
+     })
+        this.planList = res.data.rows
+        this.pagination.total = res.data.total
     },
     resetQuery() {
       this.queryForm = {
@@ -298,15 +328,12 @@ export default {
     },
     handleSizeChange(val) {
       this.pagination.pageSize = val
-      this.fetchData()
+      this.handleQuery()
     },
     handleCurrentChange(val) {
       this.pagination.currentPage = val
-      this.fetchData()
+      this.handleQuery()
     },
-    fetchData() {
-      // 获取数据逻辑
-    }
   }
 }
 </script>

+ 6 - 6
src/views/planAndDeduction/taskMage/taskCardRead.vue

@@ -11,7 +11,7 @@
           :disabled="!isPlanNameOverflow"
         >
           <h3 ref="planNameRef" class="plan-name" style="color: #e0e6ed">
-            {{ "序号"+index + plan.planName }}
+            {{ "序号"+index+`${plan.missileSerialNumber}-${plan.bulletType}` }}
           </h3>
         </el-tooltip>
       </div>
@@ -28,7 +28,7 @@
             :disabled="!isTaskNameOverflow"
           >
             <span ref="taskNameRef" class="info-value dark-value text-ellipsis">
-              {{ plan.taskName || "-" }}
+              {{ `${plan.missileSerialNumber}-${plan.bulletType}` || "-" }}
             </span>
           </el-tooltip>
         </div>
@@ -59,24 +59,24 @@
         <div class="info-row">
           <span class="info-label dark-label">攻击靶标:</span>
           <el-tooltip
-            :content="plan.fightObj"
+            :content="plan.attackTheTarget"
             placement="top"
             :disabled="!isFightObjOverflow"
           >
             <span ref="fightObj" class="info-value dark-value text-ellipsis">
-              {{ plan.fightObj || "-" }}
+              {{ plan.attackTheTarget || "-" }}
             </span>
           </el-tooltip>
         </div>
         <div class="info-row">
           <span class="info-label dark-label">发射时刻:</span>
           <el-tooltip
-            :content="plan.fireTime"
+            :content="plan.launchTime"
             placement="top"
             :disabled="!isFireTimeOverflow"
           >
             <span ref="fireTime" class="info-value dark-value text-ellipsis">
-              {{ plan.fireTime || "-" }}
+              {{ plan.launchTime || "-" }}
             </span>
           </el-tooltip>
         </div>

+ 228 - 90
src/views/planAndDeduction/taskMage/taskMage.vue

@@ -5,7 +5,7 @@
       <h1>试验任务管理</h1>
       <div class="header-controls">
         <el-button icon="el-icon-close" @click="cloes">关闭</el-button>
-        <el-button type="success" icon="el-icon-download" @click="resetForm">暂存</el-button>
+        <el-button type="success" icon="el-icon-download" @click="saveTask">暂存</el-button>
         <el-button type="primary" icon="el-icon-plus" @click="saveTask">保存信息</el-button>
       </div>
     </div>
@@ -24,48 +24,40 @@
           <el-row :gutter="20">
             <el-col :span="12">
               <el-form-item label="任务名称">
-                <el-input style="width: 100%" v-model="taskForm.name" placeholder="请输入任务名称"/>
+                <el-input style="width: 100%" v-model="taskForm.taskName" placeholder="请输入任务名称"/>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="任务代号">
-                <el-input style="width: 100%" v-model="taskForm.code" placeholder="请输入任务代号"/>
+                <el-input style="width: 100%" v-model="taskForm.taskCode" placeholder="请输入任务代号"/>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row :gutter="20">
             <el-col :span="12">
               <el-form-item label="任务类型">
-                <el-input style="width: 100%" v-model="taskForm.type" placeholder="请输入任务类型"/>
+                <vab-dict-select ref="dict" style="width: 100%" placeholder="请选择任务类型" v-model="taskForm.taskType" clearable dict-code="task_type" />
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="导弹总数">
-                <el-input type="number" style="width: 100%" v-model="missileSums" placeholder="请输入导弹总数" readonly/>
+                <el-input type="number" style="width: 100%" v-model="taskForm.totalNumberOfMissiles" placeholder="请输入导弹总数" readonly/>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row :gutter="20">
-            <el-col :span="6">
-              <el-form-item label="导弹类型一">
-                <el-input style="width: 100%" v-model="taskForm.missileTypeOne" placeholder="请输入导弹类型"/>
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="导弹数量">
-                <el-input style="width: 100%" v-model="taskForm.missileTypeOneNum" placeholder="请输入数量" type="number"/>
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="导弹类型二">
-                <el-input style="width: 100%" v-model="taskForm.missileTypeTwo" placeholder="请输入导弹类型"/>
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="导弹数量">
-                <el-input style="width: 100%" v-model="taskForm.missileTypeTwoNum" placeholder="请输入数量" type="number"/>
-              </el-form-item>
-            </el-col>
+            <template v-for="(item,index) in taskForm.missileDataJson">
+              <el-col :span="6" >
+                <el-form-item :label="`导弹类型${index+1}`">
+                  <el-input style="width: 100%" v-model="item['missile_type']" placeholder="请输入导弹类型"/>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-form-item label="导弹数量">
+                  <el-input-number :controls="false" style="width: 100%" v-model="item['missile_count']" placeholder="请输入数量"/>
+                </el-form-item>
+              </el-col>
+            </template>
           </el-row>
           <el-row :gutter="20">
             <el-col :span="12">
@@ -84,14 +76,14 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="发射平台">
-                <el-input v-model="taskForm.firePlatform"></el-input>
+                <el-input v-model="taskForm.launchPlatform"></el-input>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row :gutter="20">
             <el-col :span="12">
               <el-form-item label="试验航区">
-                <el-input v-model="taskForm.testRegion" placeholder="请输入试验航区"></el-input>
+                <el-input v-model="taskForm.testArea" placeholder="请输入试验航区"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="12">
@@ -115,26 +107,26 @@
           <el-row :gutter="20">
             <el-col :span="12">
               <el-form-item label="风速">
-                <el-input v-model="taskForm.windSpeed" placeholder="请输入风速"></el-input>
+                <el-input v-model="taskForm.windVelocity" placeholder="请输入风速"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="降雨强度">
-                <el-input v-model="taskForm.precipitation" placeholder="请输入降雨强度"></el-input>
+                <el-input v-model="taskForm.rainfallIntensity" placeholder="请输入降雨强度"></el-input>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row :gutter="20">
             <el-col :span="24">
               <el-form-item label="海况">
-                <el-input v-model="taskForm.seaStatus" placeholder="请输入海况"></el-input>
+                <el-input v-model="taskForm.sea" placeholder="请输入海况"></el-input>
               </el-form-item>
             </el-col>
           </el-row>
 
           <el-form-item label="任务依据">
             <el-input
-              v-model="taskForm.basis"
+              v-model="taskForm.missionBasis"
               type="textarea"
               :rows="5"
               placeholder="请输入任务依据"
@@ -143,7 +135,7 @@
 
           <el-form-item label="试验目的">
             <el-input
-              v-model="taskForm.testPurpose"
+              v-model="taskForm.purposeOfTheTrial"
               type="textarea"
               :rows="5"
               placeholder="请输入试验目的"
@@ -152,7 +144,7 @@
 
           <el-form-item label="靶标要求">
             <el-input
-              v-model="taskForm.targetReq"
+              v-model="taskForm.bbRequirements"
               type="textarea"
               :rows="6"
               placeholder="请输入靶标要求"
@@ -161,7 +153,7 @@
 
           <el-form-item label="测量要求">
             <el-input
-              v-model="taskForm.measReq"
+              v-model="taskForm.measurementRequirements"
               type="textarea"
               :rows="6"
               placeholder="请输入测量要求"
@@ -170,7 +162,7 @@
 
           <el-form-item label="干扰要求">
             <el-input
-              v-model="taskForm.inteReq"
+              v-model="taskForm.interferenceRequirements"
               type="textarea"
               :rows="6"
               placeholder="请输入干扰要求"
@@ -180,22 +172,25 @@
       </div>
 
       <!-- 子任务卡片 -->
-      <div v-for="(n, index) in 2" :key="index" class="section-card">
+      <div v-for="(n, index) in taskForm.bcTestSubtaskWrapperList" :key="index" class="section-card">
         <div class="section-header">
           <h3 class="section-title">
             <i class="el-icon-setting"></i>
-            {{ "反跑道子母战斗部状态导弹发射飞行试验" + (index + 1) }}
+            {{ n.subTaskName }}
           </h3>
           <div class="header-controls">
-            <el-button icon="el-icon-plus" @click="">
+            <el-button icon="el-icon-plus" @click="addMissile(n)">
               配置兵力
             </el-button>
+            <el-button icon="el-icon-delete" @click="deleteTask(n)">
+              删除子任务
+            </el-button>
           </div>
         </div>
         <div class="solution-content">
           <div class="solution-equipments">
             <TaskCardRead
-              v-for="(plan, idx) in planList"
+              v-for="(plan, idx) in n.bcTaskMissileConfigurationList"
               :key="plan.id"
               :plan="plan"
               :index="idx + 1"
@@ -206,8 +201,30 @@
           </div>
         </div>
       </div>
-    </div>
 
+      <div>
+        <el-button type="primary" icon="el-icon-plus" @click="addTask">新增子任务</el-button>
+      </div>
+    </div>
+    <DarkDialog title="新增子任务"
+                :visible.sync="addTaskVisible"
+                width="400px"
+                :before-close="closeAddTaskForm">
+      <el-form :model="addTaskForm" label-width="100px" class="mt-4">
+        <el-form-item label="子任务名称" required>
+          <el-input
+              v-model="addTaskForm.name"
+              placeholder="请输入任务名称"
+              style="width: 100%"
+          >
+          </el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeAddTaskForm">取消</el-button>
+        <el-button type="primary" @click="confirmParseMethod">确定</el-button>
+      </span>
+    </DarkDialog>
     <!-- 编辑/查看子任务抽屉 -->
     <el-drawer
       size="45%"
@@ -226,12 +243,12 @@
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="导弹序号">
-              <el-input v-model="childsForm.missileNo" placeholder="请输入导弹序号"></el-input>
+              <el-input v-model="childsForm.missileSerialNumber" placeholder="请输入导弹序号"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="弹种">
-              <el-input v-model="childsForm.missileType" placeholder="请输入弹种"></el-input>
+              <el-input v-model="childsForm.bulletType" placeholder="请输入弹种"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -239,6 +256,11 @@
               <el-input v-model="childsForm.range" placeholder="请输入射程/航程"></el-input>
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+            <el-form-item label="发射平台">
+              <el-input v-model="childsForm.launchPlatform"></el-input>
+            </el-form-item>
+          </el-col>
           <el-col :span="12">
             <el-form-item label="发射方式">
               <el-input v-model="childsForm.launchMethod" placeholder="请输入发射方式"></el-input>
@@ -246,12 +268,12 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="发射舷角(°)">
-              <el-input v-model="childsForm.launchAngle" placeholder="请输入发射舷角"></el-input>
+              <el-input v-model="childsForm.firingAngle" placeholder="请输入发射舷角"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="舰船航向">
-              <el-input v-model="childsForm.shipCourse" placeholder="请输入舰船航向"></el-input>
+              <el-input v-model="childsForm.shipHeading" placeholder="请输入舰船航向"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -259,69 +281,74 @@
               <el-input v-model="childsForm.launchSpeed" placeholder="请输入发射航速"></el-input>
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+            <el-form-item label="发射时刻">
+              <el-input v-model="childsForm.launchTime" placeholder="请输入发射时刻"></el-input>
+            </el-form-item>
+          </el-col>
           <el-col :span="12">
             <el-form-item label="海上飞行高度(m)">
-              <el-input v-model="childsForm.seaFlightHeight" placeholder="请输入海上飞行高度"></el-input>
+              <el-input v-model="childsForm.flightAltitudeAtSea" placeholder="请输入海上飞行高度"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="陆上飞行高度(m)">
-              <el-input v-model="childsForm.landFlightHeight" placeholder="请输入陆上飞行高度"></el-input>
+              <el-input v-model="childsForm.landFlightAltitude" placeholder="请输入陆上飞行高度"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="攻击目标方式">
-              <el-input v-model="childsForm.attackMode" placeholder="请输入攻击目标方式"></el-input>
+              <el-input v-model="childsForm.attackTargetMethod" placeholder="请输入攻击目标方式"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="数据装定方式">
-              <el-input v-model="childsForm.dataSettingMode" placeholder="请输入数据装定方式"></el-input>
+              <el-input v-model="childsForm.dataInstallationMethod" placeholder="请输入数据装定方式"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="中制导方式">
-              <el-input v-model="childsForm.midGuidance" placeholder="请输入中制导方式"></el-input>
+              <el-input v-model="childsForm.mediumGuidanceMode" placeholder="请输入中制导方式"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="远程管控方式">
-              <el-input v-model="childsForm.remoteControl" placeholder="请输入远程管控方式"></el-input>
+              <el-input v-model="childsForm.remoteControlMode" placeholder="请输入远程管控方式"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="攻击时段">
-              <el-input v-model="childsForm.attackTime" placeholder="请输入攻击时段"></el-input>
+              <el-input v-model="childsForm.attackPeriod" placeholder="请输入攻击时段"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="攻击角度(°)">
-              <el-input v-model="childsForm.attackAngle" placeholder="请输入攻击角度"></el-input>
+              <el-input v-model="childsForm.angleOfAttack" placeholder="请输入攻击角度"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="电子对抗能力">
-              <el-input v-model="childsForm.electronicWarfare" placeholder="请输入电子对抗能力"></el-input>
+              <el-input v-model="childsForm.electronicCounter" placeholder="请输入电子对抗能力"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="弹载卫导抗干扰">
-              <el-input v-model="childsForm.gpsAntiJamming" placeholder="请输入弹载卫导抗干扰"></el-input>
+              <el-input v-model="childsForm.carrierGuard" placeholder="请输入弹载卫导抗干扰"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="弹载卫通抗干扰">
-              <el-input v-model="childsForm.communicationAntiJamming" placeholder="请输入弹载卫通抗干扰"></el-input>
+              <el-input v-model="childsForm.antiJamming" placeholder="请输入弹载卫通抗干扰"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="引信工作方式">
-              <el-input v-model="childsForm.fuzeMode" placeholder="请输入引信工作方式"></el-input>
+              <el-input v-model="childsForm.fuzeWorkingMethod" placeholder="请输入引信工作方式"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="攻击靶标">
-              <el-input v-model="childsForm.target" placeholder="请输入攻击靶标"></el-input>
+              <el-input v-model="childsForm.attackTheTarget" placeholder="请输入攻击靶标"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -331,12 +358,12 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="发射海况(级)">
-              <el-input v-model="childsForm.seaCondition" placeholder="请输入发射海况"></el-input>
+              <el-input v-model="childsForm.launchSeaConditions" placeholder="请输入发射海况"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="24">
             <el-form-item label="主要考核目的">
-              <el-input v-model="childsForm.assessmentPurpose" type="textarea" :rows="5" placeholder="请输入主要考核目的"></el-input>
+              <el-input v-model="childsForm.theAssessment" type="textarea" :rows="5" placeholder="请输入主要考核目的"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
@@ -359,12 +386,26 @@
 import TaskCardRead from './taskCardRead.vue'
 import TaskCardBlue from './taskCardBlue.vue'
 import TaskCardBlueOne from './taskCardBlueOne.vue'
+import DarkDialog from "@/components/Components/DarkDialog.vue";
 import targetConfig from './targetConfig.vue'
 import MeasurementEquipmentCard from "../../planningSchem/Measurement/components/MeasurementCard.vue";
+import {
+  deleteMissileTask,
+  deleteSubTask,
+  getTask,
+  missileTaskInsert,
+  missileTaskUpdate,
+  subTaskInsert,
+  taskInsert,
+  taskUpdate
+} from "@/api/taskMage/taskMage";
+import VabDictSelect from "@/components/VabDictSelect/VabDictSelect.vue";
 
 export default {
   name: "AssistanceView",
   components: {
+    VabDictSelect,
+    DarkDialog,
     MeasurementEquipmentCard,
     TaskCardRead,
     TaskCardBlue,
@@ -373,6 +414,7 @@ export default {
   },
   data() {
     return {
+      id:null,
       // 抽屉相关状态
       planEditTitle: "",
       childsForm: {},
@@ -633,17 +675,21 @@ export default {
         location: '',
         operator: ''
       },
-
+      addTaskVisible:false,
+      addTaskForm:{
+        name: '',
+      },
       taskForm: {
-        measReq:"遥测参数测量及处理要求\n" +
+        missileDataJson:[],
+        measurementRequirements:"遥测参数测量及处理要求\n" +
           "遥测参数测量及处理要求按照《鹰击-18C导弹武器系统性能鉴定试验遥测外测系统飞行试验大纲》和《鹰击-18C导弹武器系统性能鉴定试验遥测数据处理要求》执行。弹上遥测设备、舰载遥测巡检设备、地面测控设备和测控飞机相配合,完成从导弹发射准备、发射至飞行全程的遥测参数测量。导弹飞行过程中需要对关键遥测参数数据在试验指挥控制中心进行实时显示,导弹发射飞行试验后需要对遥测参数进行事后处理。导弹连射试验时,地面测控设备与测控飞机相配合同时承担S波段2个数据流的接收任务。",
-        inteReq:"弹载北斗卫星导航系统干扰装备\n" +
+        interferenceRequirements:"弹载北斗卫星导航系统干扰装备\n" +
           "弹载北斗卫星导航系统干扰装备要求如下:\n" +
           "a)工作频段覆盖北斗卫星导航系统B3频点;\n" +
           "b)有效辐射功率不小于63dBW;\n" +
           "c)干扰信号样式包括噪声、脉冲、连续波、宽带BPSK调制等;\n" +
           "d)能够通过外引导数据控制波束指向,实现对导弹的跟踪干扰。",
-        targetReq:" 模拟指挥所靶标\n" +
+        bbRequirements:" 模拟指挥所靶标\n" +
           "a)尺寸:40m×30m×25m(长×宽×高);\n" +
           "b)楼层结构:不少于4层的多层框架结构,楼板不小于0.15m厚的现浇混凝土板,建筑外墙体厚度不小于0.4m,内墙厚度不小于0.2m;\n" +
           "c)位置要求:朝向与跑道方向一致,靶楼中心点距离跑道边线不小于50m;\n" +
@@ -662,12 +708,12 @@ export default {
           "e)外观要求:跑道边缘为直线,边界清晰、连续;跑道表面画出中心线、边界线等标识;跑道两侧150m范围内不得有障碍物(靶楼、铁塔除外);\n" +
           "f)数量:1条;\n" +
           "g)其他要求:配备跑道灯光系统1套。\n" +"",//靶标要求
-        seaStatus:"发射区域不大于5级,海上飞行区不大于6级",
-        windSpeed:"发射区风速不大于20m/s",
-        precipitation:"不大于7.5mm/h",
+        sea:"发射区域不大于5级,海上飞行区不大于6级",
+        windVelocity:"发射区风速不大于20m/s",
+        rainfallIntensity:"不大于7.5mm/h",
         humidity:"不大于98%(25℃)",
         temperature:"-40℃~+60℃",
-        testPurpose:"主要试验目的如下:\n" +
+        purposeOfTheTrial:"主要试验目的如下:\n" +
           "a)考核导弹武器系统命中精度、最大射程、发射方式、发射能力、发射条件、攻击目标能力、系统反应能力等主要战术技术指标;\n" +
           "b)考核导弹飞行速度、飞行高度、飞行机动性、攻击角度、制导体制、导引头性能、自动目标识别能力等主要战术技术指标;\n" +
           "c)考核导弹、武器控制系统、任务规划系统、远程管控系统之间工作的匹配性、协调性;",
@@ -676,8 +722,8 @@ export default {
         missileTypeOneNum: 8,
         missileTypeTwoNum:6,
         missileTypeTwo:"反跑道子母战斗部状态导弹",
-        name: '鹰击-18C导弹武器系统性能鉴定飞行试验',
-        basis: "本方案依据下述文件编制:\n" +
+        taskName: '鹰击-18C导弹武器系统性能鉴定飞行试验',
+        missionBasis: "本方案依据下述文件编制:\n" +
           "a)《XXX舰陆导弹武器系统性能鉴定试验大纲》(海装械〔2022〕XXX号);\n" +
           "b)《XXX导弹武器系统性能鉴定试验技术状态》;\n" +
           "c)《XXX状态鉴定弹飞行试验技术准备程序》;\n" +
@@ -685,8 +731,8 @@ export default {
           "e)《XXX导弹武器系统性能鉴定试验禁区危险区设计》。",//任务依据
         type: '性能鉴定试验',
         testTime: "2024-06至2024-09",
-        firePlatform: "851舰",//发射平台
-        testRegion: "海陆结合综合试验航区",//试验航区
+        launchPlatform: "851舰",//发射平台
+        testArea: "海陆结合综合试验航区",//试验航区
         targetArea: "A靶区",//靶区
         parameters: {
           area: '',
@@ -781,15 +827,50 @@ export default {
       return (this.taskForm.missileTypeOneNum || 0) + (this.taskForm.missileTypeTwoNum || 0)
     },
   },
+  async created() {
+    this.id =this.$route.query.id
+    if (this.id){
+      await this.getTaskForm();
+      this.$refs.dict.$forceUpdate();
+    }
+  },
   methods: {
     createTask() {
       this.$message.info('创建新任务...')
     },
-
+    async getTaskForm(){
+      const res = await getTask({id:this.id})
+      this.taskForm = res.data;
+      if (this.taskForm.missileDataJson){
+        const list = JSON.parse(this.taskForm.missileDataJson);
+        this.taskForm.missileDataJson = []
+        for (const item of list){
+          this.taskForm.missileDataJson.push({
+            ...item
+          })
+        }
+        console.log("this...=",this.taskForm.missileDataJson)
+      }
+    },
+    async confirmParseMethod(){
+      // 新增子任务
+      await subTaskInsert({
+        subTaskName:this.addTaskForm.name,
+        taskId:this.id
+      })
+      await this.getTaskForm()
+      this.$message.success("新增成功");
+      this.closeAddTaskForm()
+    },
+    closeAddTaskForm(){
+      this.addTaskForm.name = ''
+      this.addTaskVisible = false;
+    },
     // 编辑子任务
     handleEditEquipment(equipment) {
       this.isViewMode = false;
-      this.planEditTitle = `${equipment.planName}编辑`;
+      console.log('missileSerialNumber',equipment.missileSerialNumber)
+      this.planEditTitle = `${equipment.missileSerialNumber}-${equipment.bulletType}编辑`;
       this.currentPlanId = equipment.id;
       this.childsForm = {...equipment}
       this.editChildsTaskVisible = true;
@@ -797,9 +878,8 @@ export default {
 
     // 查看子任务详情
     viewDetails(equipment) {
-      console.log("equipment", equipment);
       this.isViewMode = true;
-      this.planEditTitle = `${equipment.planName}详情`;
+      this.planEditTitle = `${equipment.missileSerialNumber}-${equipment.bulletType}详情`;
       this.currentPlanId = equipment.id;
       this.childsForm = {...equipment}
       this.editChildsTaskVisible = true;
@@ -807,27 +887,35 @@ export default {
 
     // 删除子任务
     handleDeleteEquipment(equipment) {
-      this.$confirm(`确定删除${equipment.planName}吗?删除后无法恢复!`, '提示')
+      this.$confirm(`确定删除${equipment.missileSerialNumber}-${equipment.bulletType}吗?删除后无法恢复!`, '提示')
         .then(() => {
-          this.planList = this.planList.filter(item => item.id !== equipment.id);
-          this.$message.success("删除成功!");
+          deleteMissileTask({id:equipment.id}).then(()=>{
+            this.$message.success("删除成功")
+            this.getTaskForm();
+          })
         })
         .catch(() => {
           // 取消删除
         });
     },
     // 保存子任务编辑
-    saveChildTask() {
-      // 模拟保存接口,实际项目中替换为真实接口
-      const index = this.planList.findIndex(item => item.id === this.currentPlanId);
-      if (index !== -1) {
-        // 这里可以根据需要更新列表项显示的信息
-        this.planList[index] = {
-          ...this.planList[index],
-          // 例如更新发射方式(如果列表需要显示)
-          launchMethod: this.childsForm.launchMethod
-        };
+    async saveChildTask() {
+      if (this.childsForm.id){
+        await missileTaskUpdate(this.childsForm);
+      }else{
+        await missileTaskInsert(this.childsForm);
       }
+      // // 模拟保存接口,实际项目中替换为真实接口
+      // const index = this.planList.findIndex(item => item.id === this.currentPlanId);
+      // if (index !== -1) {
+      //   // 这里可以根据需要更新列表项显示的信息
+      //   this.planList[index] = {
+      //     ...this.planList[index],
+      //     // 例如更新发射方式(如果列表需要显示)
+      //     launchMethod: this.childsForm.launchMethod
+      //   };
+      // }
+      await this.getTaskForm();;
       this.$message.success("保存成功");
       this.editChildsTaskVisible = false;
     },
@@ -854,10 +942,60 @@ export default {
         this.$message.success('表单已暂存')
       })
     },
+    addTask(){
+      this.addTaskVisible = true;
+    },
+    async deleteTask(n){
+      await deleteSubTask({id:n.id})
+      this.$message.success("删除成功")
+      await this.getTaskForm();
+    },
+    addMissile(row){
+      // 子任务ID
+      this.childsForm.subTaskId= row.id;
+      // 总体任务ID
+      this.childsForm.taskId = this.id;
+      this.editChildsTaskVisible = true;
+      this.planEditTitle = "新增兵力配置"
+    },
 
     // 保存任务
-    saveTask() {
-      this.$message.success('任务保存成功')
+    async saveTask() {
+      // 构造符合后端实体类的请求数据
+      const requestData = {
+        taskName: this.taskForm.taskName,
+        taskCode: this.taskForm.taskCode,
+        totalNumberOfMissiles: this.missileSums,
+        testTime: this.taskForm.testTime,
+        launchPlatform: this.taskForm.launchPlatform,
+        testArea: this.taskForm.testArea,
+        targetArea: this.taskForm.targetArea,
+        temperature: this.taskForm.temperature,
+        humidity: this.taskForm.humidity,
+        windVelocity: this.taskForm.windVelocity,
+        rainfallIntensity: this.taskForm.rainfallIntensity,
+        sea: this.taskForm.sea,
+        missionBasis: this.taskForm.missionBasis,
+        missileDataJson: JSON.stringify(this.taskForm.missileDataJson),
+        purposeOfTheTrial: this.taskForm.purposeOfTheTrial,
+        measurementRequirements: this.taskForm.measurementRequirements,
+        bbRequirements: this.taskForm.bbRequirements,
+        interferenceRequirements: this.taskForm.interferenceRequirements
+      };
+      try {
+        if (this.id){
+          await taskUpdate(requestData)
+        }else{
+          await taskInsert(requestData);
+        }
+
+        this.$message.success('任务保存成功');
+      }catch (e){
+        console.error(e)
+      }
+
+
+
     },
 
     // 提交任务