Pārlūkot izejas kodu

架次管理一些、自定义表单

Rmengdi 1 gadu atpakaļ
vecāks
revīzija
d1a06600a4

+ 1 - 1
PHM-web/public/index.html

@@ -138,7 +138,7 @@
     }
     /* 全局搜索框处的文字自适应 */
    .el-form-item__label{
-      width: 100px !important;
+      /* width: 100px !important; */
       overflow: hidden;
       text-overflow: ellipsis;
       white-space: nowrap;

+ 29 - 1
PHM-web/src/router/index.js

@@ -128,13 +128,41 @@ export const dynamicRoutes = [
     permissions: ['manage:sortie:edit'],
     children: [
       {
-        path: 'dataPlayback/:sortieId',
+        path: 'dataPlayback',
         component: () => import('@/views/manage/sortie/dataPlayBack'),
         name: 'dataPlayBack',
         meta: { title: '数据回放', activeMenu: '/integratedDataManage/sortie' }
       }
     ]
   },
+  {
+    path: '/manage/integratedDataManage/sortie',
+    component: Layout,
+    hidden: true,
+    permissions: ['manage:sortie:edit'],
+    children: [
+      {
+        path: 'sortieDetail',
+        component: () => import('@/views/manage/sortie/sortieDetail'),
+        name: 'SortieDetail',
+        meta: { title: '架次详情', activeMenu: '/integratedDataManage/sortie' }
+      }
+    ]
+  },
+  {
+    path: '/manage/integratedDataManage/sortie',
+    component: Layout,
+    hidden: true,
+    permissions: ['manage:sortie:edit'],
+    children: [
+      {
+        path: 'selectParameters',
+        component: () => import('@/views/manage/sortie/selectParameters'),
+        name: 'selectParameters',
+        meta: { title: '选择参数', activeMenu: '/integratedDataManage/sortie' }
+      }
+    ]
+  },
   {
     path: '/manage',
     component: Layout,

+ 45 - 37
PHM-web/src/views/manage/dataDown/dataDownDialog.vue

@@ -2,7 +2,7 @@
   <div>
     <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
-        <el-form-item label="指令" prop="order">
+        <!-- <el-form-item label="指令" prop="order">
           <el-select v-model="form.order" placeholder="请选择指令" style="width:100%">
             <el-option v-for="item in instructionInfoList" :key="item.attribute" :label="item.attribute"
               :value="item.attribute">
@@ -11,7 +11,14 @@
         </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" placeholder="请输入备注" />
+        </el-form-item> -->
+        <el-form-item label="指令" prop="order">
+          <template>
+            <el-radio v-model="radio" label="1">备选项</el-radio>
+            <el-radio v-model="radio" label="2">备选项</el-radio>
+          </template>
         </el-form-item>
+
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm" :loading="butLoading">{{
@@ -24,19 +31,19 @@
 </template>
 
 <script>
-import { listInstructionInfo } from "@/api/manage/instructionInfo";
+import { listInstructionInfo } from '@/api/manage/instructionInfo'
 export default {
   name: 'dataDownDialog',
   props: {
-    open:{
-      type:Boolean
-    }, 
-    cancel:{
-      type:Function
+    open: {
+      type: Boolean,
+    },
+    cancel: {
+      type: Function,
+    },
+    getList: {
+      type: Function,
     },
-    getList:{
-      type:Function,
-    }
   },
   data() {
     return {
@@ -45,23 +52,24 @@ export default {
       // 按钮加载
       butLoading: false,
       // 按钮显示文本
-      butText: "点击下载",
+      butText: '点击下载',
       // 弹出层标题
-      title: "",
+      title: '',
       // 表单参数
       form: {
-        type: ".xlsx",
-        path: "/phm/uploadPath",
+        type: '.xlsx',
+        path: '/phm/uploadPath',
       },
       // 表单校验
       rules: {},
-      instructionInfoList:[],
+      instructionInfoList: [],
+      radio:'1'
     }
   },
   created() {
-    this.getListInstructionInfo();
+    this.getListInstructionInfo()
   },
-  methods:{
+  methods: {
     // 获取指令
     getListInstructionInfo() {
       let queryParams = {
@@ -71,40 +79,40 @@ export default {
         content: null,
       }
       listInstructionInfo(queryParams).then(response => {
-        this.instructionInfoList = response.rows;
-      });
+        this.instructionInfoList = response.rows
+      })
     },
     /** 提交按钮 */
     submitForm() {
-      this.butLoading = true;
-      this.butText = "下载中";
+      this.butLoading = true
+      this.butText = '下载中'
       setTimeout(() => {
         // 方法区
-        if (this.form.order === "error") {
-          this.$modal.msgError("下载异常");
-          this.butLoading = false;
-          this.butText = "点击下载";
-          return;
+        if (this.form.order === 'error') {
+          this.$modal.msgError('下载异常')
+          this.butLoading = false
+          this.butText = '点击下载'
+          return
         }
         // 服务获取文件
         let dataObj = {
           order: this.form.order,
           name: `固定格式_${new Date().getTime()}.xlsx`,
-          path: "/phm/uploadPath",
+          path: '/phm/uploadPath',
           remark: this.form.remark,
-        };
-        let data = JSON.parse(localStorage.getItem("data-down")) || [];
-        data.push(dataObj);
-        localStorage.setItem("data-down", JSON.stringify(data));
-        this.getList();
+        }
+        let data = JSON.parse(localStorage.getItem('data-down')) || []
+        data.push(dataObj)
+        localStorage.setItem('data-down', JSON.stringify(data))
+        this.getList()
         // 保存指定路径
-        this.butLoading = false;
-        this.butText = "点击下载";
-        this.$modal.msgSuccess("下载成功");
+        this.butLoading = false
+        this.butText = '点击下载'
+        this.$modal.msgSuccess('下载成功')
         this.cancel()
-      }, 1000);
+      }, 1000)
     },
-  }
+  },
 }
 </script>
 

+ 87 - 28
PHM-web/src/views/manage/dataDown/index.vue

@@ -15,24 +15,57 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="dataDownList" @selection-change="handleSelectionChange">
+    <el-table v-loading="loading" :data="dataDownList" border @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="指令" align="center" prop="order" />
-      <el-table-column label="下载的数据名称" align="center" prop="name" />
-      <el-table-column label="保存路径" align="center" prop="path" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="批次" align="center" prop="batch" />
+      <el-table-column label="机型" align="center" prop="airType" />
+      <el-table-column label="机号" align="center" prop="airNumber" />
+      <el-table-column label="架次号" align="center" prop="sortie" />
+      <el-table-column label="下载状态" align="center" prop="downloadStatus" />
+      <el-table-column label="下载方式" align="center" prop="downloadMethod" />
+      <el-table-column label="解析状态" align="center" prop="analysisStatus" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetail(scope.row)"
+            v-hasPermi="['manage:deepIsolationModel:edit']">详情</el-button>
+        </template>
+      </el-table-column>
     </el-table>
 
     <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
       @pagination="getList" />
 
     <!-- 数据下载对话框 -->
-    <dataDownDialog :open="open" :cancel='cancel' :getList='getList' />
+    <!-- <dataDownDialog :open="open" :cancel='cancel' :getList='getList' /> -->
+    <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="500px" append-to-body>
+      <el-form ref="form" :model="onlineForm" :rules="rules" label-width="100px">
+        <el-form-item prop="dataSource">
+          <template>
+            <el-radio v-model="onlineForm.dataSource" label="1">机载phm</el-radio>
+            <el-radio v-model="onlineForm.dataSource" label="2">数链仿真</el-radio>
+          </template>
+        </el-form-item>
+        <el-form-item label="架次信息" prop="sortie">
+          <el-select v-model="onlineForm.order" placeholder="请选择架次" style="width:100%">
+            <el-option v-for="item in sortieList" :key="item.id" :label="item.sortieNumber"
+              :value="item.id">
+                <span style="float: left">{{ item.sortieNumber }}</span>
+                <span style="float: right; color: #8492a6; font-size: 13px">{{ item.aircraftNumber }}</span>
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm" :loading="butLoading">{{ butText }}</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
     <!-- 离线下载对话框 -->
     <el-dialog :title="title" :visible.sync="openOffline" :close-on-click-modal="false" width="600px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
         <el-form-item label="文件" prop="caseFileName">
-          <file-upload ref="fileUpload" :fileType="['xls','xlsx']" :fileSize = "0" v-model="form.caseFileName" :limit="1"></file-upload>
+          <file-upload ref="fileUpload" :fileType="['xls','xlsx']" :fileSize="0" v-model="form.caseFileName"
+            :limit="1"></file-upload>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -53,6 +86,7 @@ import {
 } from '@/api/manage/dataDown'
 import { listInstructionInfo } from '@/api/manage/instructionInfo'
 import dataDownDialog from '@/views/manage/dataDown/dataDownDialog'
+import { listSortie } from '@/api/manage/sortie'
 
 export default {
   name: 'DataDown',
@@ -88,29 +122,34 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        order: null,
-        name: null,
-        path: null,
-        remark: null,
-        type: null,
-        createBy: null,
-        createTime: null,
-        updateBy: null,
-        updateTime: null,
+        batch: null,
+        airType: null,
+        airNumber: null,
+        sortie: null,
+        downloadStatus: null,
+        downloadMethod: null,
+        analysisStatus: null,
       },
-      // 表单参数
+      // 离线下载表单参数
       form: {
         type: '.xlsx',
         path: '/phm/uploadPath',
       },
+      // 在线下载表单参数
+      onlineForm: {
+        dataSource:'1',
+      },
       // 表单校验
       rules: {},
       //打开离线下载对话框
       openOffline: false,
+      // 架次信息
+      sortieList:[]
     }
   },
   created() {
     this.getList()
+    this.getSortieList()
     this.getListInstructionInfo()
   },
   methods: {
@@ -124,25 +163,40 @@ export default {
       }
       listInstructionInfo(queryParams).then(response => {
         this.instructionInfoList = response.rows
+        console.log("this.instructionInfoList",this.instructionInfoList);
+      })
+    },
+    // 架次信息列表
+    getSortieList() {
+      this.loading = true
+      const query={
+        pageNum: 1
+      }
+      listSortie(query).then(response => {
+        this.sortieList = response.rows
+        console.log("sortieList",this.sortieList);
+        this.total = response.total
+        this.loading = false
       })
     },
     /** 查询数据下载列表 */
     getList() {
       this.loading = true
-      // listDataDown(this.queryParams).then(response => {
-      //   this.dataDownList = response.rows;
-      //   this.total = response.total;
-      //   this.loading = false;
-      // });
-      this.dataDownList = JSON.parse(localStorage.getItem('data-down')) || []
-      this.total = this.dataDownList?.length || 0
-      this.loading = false
+      listDataDown(this.queryParams).then(response => {
+        this.dataDownList = response.rows;
+        console.log("dataDownList",this.dataDownList);
+        this.total = response.total;
+        this.loading = false;
+      });
+      // this.dataDownList = JSON.parse(localStorage.getItem('data-down')) || []
+      // this.total = this.dataDownList?.length || 0
+      // this.loading = false
     },
     // 取消按钮
     cancel() {
-      this.open = false;
-      this.openOffline = false;
-      this.reset();
+      this.open = false
+      this.openOffline = false
+      this.reset()
     },
     // 表单重置
     reset() {
@@ -179,6 +233,10 @@ export default {
       this.openOffline = true
       this.title = '数据离线下载'
     },
+    // 详情
+    handleDetail(row) {
+      console.log(row)
+    },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset()
@@ -211,6 +269,7 @@ export default {
         let data = JSON.parse(localStorage.getItem('data-down')) || []
         data.push(dataObj)
         localStorage.setItem('data-down', JSON.stringify(data))
+        // this.open?
         this.getList()
         // 保存指定路径
         this.butLoading = false

+ 106 - 20
PHM-web/src/views/manage/deepIsolationModel/index.vue

@@ -1,6 +1,22 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="模型名称" prop="modelName">
+        <el-input
+          v-model="queryParams.modelName"
+          placeholder="请输入模型名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="模型Url" prop="modelUrl">
+        <el-input
+          v-model="queryParams.modelUrl"
+          placeholder="请输入模型Url"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
       <el-form-item label="维护代码" prop="code">
         <el-input
           v-model="queryParams.code"
@@ -42,17 +58,6 @@
           v-hasPermi="['manage:deepIsolationModel:add']"
         >新增</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['manage:deepIsolationModel:edit']"
-        >修改</el-button>
-      </el-col>
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -74,12 +79,17 @@
           v-hasPermi="['manage:deepIsolationModel:export']"
         >导出</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" icon="el-icon-upload2" size="mini" @click="handleImport"
+          v-hasPermi="['manage:deepIsolationModel:export']">导入</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="deepIsolationModelList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      
+      <el-table-column label="模型名称" align="center" prop="modelName" />
+      <el-table-column label="模型Url" align="center" prop="modelUrl" />
       <el-table-column label="维护代码" align="center" prop="code" />
       <el-table-column label="故障方程" align="center" prop="faultEquation" />
       <el-table-column label="故障LRU" align="center" prop="faultLru" />
@@ -92,13 +102,6 @@
             @click="handleUpdate(scope.row)"
             v-hasPermi="['manage:deepIsolationModel:edit']"
           >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['manage:deepIsolationModel:remove']"
-          >删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -114,6 +117,12 @@
     <!-- 添加或修改深度隔离模型对话框 -->
     <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="模型名称" prop="modelName">
+          <el-input v-model="form.modelName" placeholder="请输入模型名称" />
+        </el-form-item>
+        <el-form-item label="模型Url" prop="modelUrl">
+          <el-input v-model="form.modelUrl" placeholder="请输入模型Url" />
+        </el-form-item>
         <el-form-item label="维护代码" prop="code">
           <el-input v-model="form.code" placeholder="请输入维护代码" />
         </el-form-item>
@@ -129,12 +138,34 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" :close-on-click-modal="false" width="400px" append-to-body>
+      <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip text-center" slot="tip">
+          <div class="el-upload__tip" slot="tip">
+            <el-checkbox v-model="upload.updateSupport" />
+            是否更新已经存在的深度隔离模型
+          </div>
+          <span>仅允许导入xls、xlsx格式文件。</span>
+          <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
+            @click="importTemplate">下载模板</el-link>
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { listDeepIsolationModel, getDeepIsolationModel, delDeepIsolationModel, addDeepIsolationModel, updateDeepIsolationModel } from "@/api/manage/deepIsolationModel";
-
+import { getToken } from '@/utils/auth'
 export default {
   name: "DeepIsolationModel",
   data() {
@@ -161,10 +192,25 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
+        modelName:null,
+        modelUrl:null,
         code: null,
         faultEquation: null,
         faultLru: null,
       },
+      upload: {
+        title: '',
+        // 是否显示弹出层
+        open: false,
+        // 是否禁用上传
+        isUploading: false,
+        // 设置上传的请求头部
+        headers: { Authorization: 'Bearer ' + getToken() },
+        // 是否更新已存在数据
+        updateSupport: 0,
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + '/manage/falseAlarmRestrainModel/import',
+      },
       // 表单参数
       form: {},
       // 表单校验
@@ -194,6 +240,8 @@ export default {
     reset() {
       this.form = {
         id: null,
+        modelName:null,
+        modelUrl:null,
         code: null,
         faultEquation: null,
         faultLru: null,
@@ -262,6 +310,44 @@ export default {
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
     },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = '深度隔离模型导入'
+      this.upload.open = true
+    },
+    submitFileForm() {
+      this.$refs.upload.submit()
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      if (response.code !== 200) {
+        this.$modal.msgError(response.msg)
+        return
+      }
+      this.upload.open = false
+      this.upload.isUploading = false
+      this.$refs.upload.clearFiles()
+      this.$alert(
+        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+          response.msg +
+          '</div>',
+        '导入结果',
+        { dangerouslyUseHTMLString: true }
+      )
+      this.getList()
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download(
+        '/manage/deepIsolationModel/importTemplate',
+        {},
+        `deepIsolationModel_template_${new Date().getTime()}.xlsx`
+      )
+    },
     /** 导出按钮操作 */
     handleExport() {
       this.download('manage/deepIsolationModel/export', {

+ 81 - 22
PHM-web/src/views/manage/deriveParameter/index.vue

@@ -34,17 +34,6 @@
           v-hasPermi="['manage:deriveParameter:add']"
         >新增</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['manage:deriveParameter:edit']"
-        >修改</el-button>
-      </el-col>
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -66,6 +55,10 @@
           v-hasPermi="['manage:deriveParameter:export']"
         >导出</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" icon="el-icon-upload2" size="mini" @click="handleImport"
+          v-hasPermi="['manage:deriveParameter:export']">导入</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -84,13 +77,6 @@
             @click="handleUpdate(scope.row)"
             v-hasPermi="['manage:deriveParameter:edit']"
           >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['manage:deriveParameter:remove']"
-          >删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -110,21 +96,43 @@
           <el-input v-model="form.name" placeholder="请输入参数名称" />
         </el-form-item>
         <el-form-item label="表达式文件" prop="expression">
-          <el-input v-model="form.expression" placeholder="请输入表达式文件" />
+          <!-- <el-input v-model="form.expression" placeholder="请输入表达式文件" /> -->
+          <file-upload ref="fileUpload" v-model="form.expression" :limit="1"></file-upload>
         </el-form-item>
-        
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" :close-on-click-modal="false" width="400px" append-to-body>
+      <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip text-center" slot="tip">
+          <div class="el-upload__tip" slot="tip">
+            <el-checkbox v-model="upload.updateSupport" />
+            是否更新已经存在的衍生参数
+          </div>
+          <span>仅允许导入xls、xlsx格式文件。</span>
+          <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
+            @click="importTemplate">下载模板</el-link>
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { listDeriveParameter, getDeriveParameter, delDeriveParameter, addDeriveParameter, updateDeriveParameter } from "@/api/manage/deriveParameter";
-
+import { getToken } from '@/utils/auth'
 export default {
   name: "DeriveParameter",
   data() {
@@ -158,7 +166,20 @@ export default {
       form: {},
       // 表单校验
       rules: {
-      }
+      },
+      upload: {
+        title: '',
+        // 是否显示弹出层
+        open: false,
+        // 是否禁用上传
+        isUploading: false,
+        // 设置上传的请求头部
+        headers: { Authorization: 'Bearer ' + getToken() },
+        // 是否更新已存在数据
+        updateSupport: 0,
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + '/manage/deriveParameter/import',
+      },
     };
   },
   created() {
@@ -250,6 +271,44 @@ export default {
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
     },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = '架次导入'
+      this.upload.open = true
+    },
+    submitFileForm() {
+      this.$refs.upload.submit()
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      if (response.code !== 200) {
+        this.$modal.msgError(response.msg)
+        return
+      }
+      this.upload.open = false
+      this.upload.isUploading = false
+      this.$refs.upload.clearFiles()
+      this.$alert(
+        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+          response.msg +
+          '</div>',
+        '导入结果',
+        { dangerouslyUseHTMLString: true }
+      )
+      this.getList()
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download(
+        '/manage/deriveParameter/importTemplate',
+        {},
+        `deriveParameter_template_${new Date().getTime()}.xlsx`
+      )
+    },
     /** 导出按钮操作 */
     handleExport() {
       this.download('manage/deriveParameter/export', {

+ 51 - 0
PHM-web/src/views/manage/falseAlarmRestrainModel/dynamicForms.vue

@@ -0,0 +1,51 @@
+<template>
+  <div>
+    <el-form ref="myForm" :model="formData" label-width="100px">
+      <div v-for="(item, index) in formItems" :key="index">
+        <el-form-item :prop="item.prop">
+          <!-- 双击 label 编辑内容 -->
+          <template v-if="!item.editing" >
+            <span @dblclick="startEditing(item)">{{ item.label }}</span>
+          </template>
+          <template v-else>
+            <input type="text" v-model="item.label" @blur="endEditing(item)" />
+          </template>
+          
+          <!-- 自定义 el-input 的内容 -->
+          <el-input v-if="item.type === 'input'" v-model="formData[item.prop]"></el-input>
+          <!-- 其他类型的表单项 -->
+          <!-- ... -->
+        </el-form-item>
+      </div>
+    </el-form>
+  </div>
+</template>
+
+<script>
+  export default {
+    name:'dynamicForms',
+    data() {
+      return {
+        formData: {}, // 表单数据对象
+        formItems: [ // 存储 el-form-item 的信息
+          { label: '用户名', prop: 'username', type: 'input', editing: false },
+          { label: '年龄', prop: 'age', type: 'input', editing: false },
+          // 其他表单项
+          // ...
+        ]
+      };
+    },
+    methods: {
+      startEditing(item) {
+        item.editing = true;
+      },
+      endEditing(item) {
+        item.editing = false;
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 253 - 33
PHM-web/src/views/manage/falseAlarmRestrainModel/index.vue

@@ -1,6 +1,22 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="模型名称" prop="modelName">
+        <el-input
+          v-model="queryParams.modelName"
+          placeholder="请输入模型名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="模型Url" prop="modelUrl">
+        <el-input
+          v-model="queryParams.modelUrl"
+          placeholder="请输入模型Url"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
       <el-form-item label="故障代码" prop="code">
         <el-input
           v-model="queryParams.code"
@@ -42,17 +58,6 @@
           v-hasPermi="['manage:falseAlarmRestrainModel:add']"
         >新增</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['manage:falseAlarmRestrainModel:edit']"
-        >修改</el-button>
-      </el-col>
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -74,12 +79,17 @@
           v-hasPermi="['manage:falseAlarmRestrainModel:export']"
         >导出</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" icon="el-icon-upload2" size="mini" @click="handleImport"
+          v-hasPermi="['manage:falseAlarmRestrainModel:export']">导入</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="falseAlarmRestrainModelList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      
+      <el-table-column label="模型名称" align="center" prop="modelName" />
+      <el-table-column label="模型Url" align="center" prop="modelUrl" />
       <el-table-column label="故障代码" align="center" prop="code" />
       <el-table-column label="抑制判据" align="center" prop="restrainCriteria" />
       <el-table-column label="最少持续时间" align="center" prop="minDuration" />
@@ -92,14 +102,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['manage:falseAlarmRestrainModel:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['manage:falseAlarmRestrainModel:remove']"
-          >删除</el-button>
+          >编辑</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -113,30 +116,124 @@
     />
 
     <!-- 添加或修改虚警抑制模型对话框 -->
-    <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
-        <el-form-item label="故障代码" prop="code">
-          <el-input v-model="form.code" placeholder="请输入故障代码" />
+    <el-dialog :title="title" class="myDialog" :visible.sync="open" width="80vw" :close-on-click-modal="false" append-to-body>
+      <el-divider content-position="left">模型信息</el-divider>
+      <el-form ref="form" :model="form" :rules="rules" label-width="68px">
+        <el-row :gutter="80">
+          <el-col :span="10">
+            <el-form-item label="模型名称" prop="modelName">
+              <el-input v-model="form.modelName" placeholder="请输入模型名称" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="10">
+            <el-form-item label="模型Url" prop="modelUrl">
+              <el-input v-model="form.modelUrl" placeholder="请输入模型Url" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row  :gutter="80">
+          <el-col :span="10">
+            <el-form-item label="故障代码" prop="code">
+              <el-input v-model="form.code" placeholder="请输入故障代码" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="10">
+            <el-form-item label="抑制判据" prop="restrainCriteria">
+              <el-input v-model="form.restrainCriteria" placeholder="请输入抑制判据" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row  :gutter="80">
+          <el-col :span="12">
+            <el-form-item label="最少持续时间" prop="minDuration" label-width="100px">
+              <el-input v-model="form.minDuration" placeholder="请输入最少持续时间" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item>
+              <el-button @click="addModelForms" icon="el-icon-plus"></el-button>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item
+          v-for="(item, index) in form.modelParams"
+          :key="item.uniqueMark"
+          :prop="'modelParams.' + index + '.value'"
+          label-width="30px"
+        >
+          <div class="dynamicAdd">
+            <el-input v-model="item.key" style="width: 200px" placeholder="请输入模型属性"></el-input>
+            <span>  -----  </span>
+            <el-select v-model="item.value" placeholder="请选择模型参数">
+              <el-option
+                v-for="option in options"
+                :key="option.value"
+                :label="option.label"
+                :value="option.value">
+              </el-option>
+            </el-select>
+            <el-button @click.prevent="removeModelForm(item)" icon="el-icon-minus" style="marginLeft:20px; border:none"></el-button>
+          </div>
         </el-form-item>
-        <el-form-item label="抑制判据" prop="restrainCriteria">
-          <el-input v-model="form.restrainCriteria" placeholder="请输入抑制判据" />
+        <el-divider content-position="left" style="marginTop:20px;">数据信息</el-divider>
+        <el-form-item>
+          <el-button @click="addDataForms" icon="el-icon-plus"></el-button>
         </el-form-item>
-        <el-form-item label="最少持续时间" prop="minDuration">
-          <el-input v-model="form.minDuration" placeholder="请输入最少持续时间" />
+        <el-form-item
+          v-for="(item, index) in form.dataParams"
+          :key="item.uniqueMark"
+          :prop="'dataParams.' + index + '.value'"
+          label-width="30px"
+        >
+          <div class="dynamicAdd">
+            <el-input v-model="item.key" style="width: 200px" placeholder="请输入模型属性"></el-input>
+            <span>  -----  </span>
+            <el-select v-model="item.value" placeholder="请选择模型参数">
+              <el-option
+                v-for="option in options"
+                :key="option.value"
+                :label="option.label"
+                :value="option.value">
+              </el-option>
+            </el-select>
+            <el-button @click.prevent="removeDataForm(item)" icon="el-icon-minus" style="marginLeft:20px; border:none"></el-button>
+          </div>
         </el-form-item>
-          
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+
+    <!-- 导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" :close-on-click-modal="false" width="400px" append-to-body>
+      <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip text-center" slot="tip">
+          <div class="el-upload__tip" slot="tip">
+            <el-checkbox v-model="upload.updateSupport" />
+            是否更新已经存在的虚警抑制模型
+          </div>
+          <span>仅允许导入xls、xlsx格式文件。</span>
+          <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
+            @click="importTemplate">下载模板</el-link>
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { listFalseAlarmRestrainModel, getFalseAlarmRestrainModel, delFalseAlarmRestrainModel, addFalseAlarmRestrainModel, updateFalseAlarmRestrainModel } from "@/api/manage/falseAlarmRestrainModel";
-
+import { getToken } from '@/utils/auth'
 export default {
   name: "FalseAlarmRestrainModel",
   data() {
@@ -159,17 +256,50 @@ export default {
       title: "",
       // 是否显示弹出层
       open: false,
+      // 架次信息参数
+      options: [{
+          value: '选项1',
+          label: '参数1'
+        }, {
+          value: '选项2',
+          label: '参数2'
+        }, {
+          value: '选项3',
+          label: '参数3'
+        }, {
+          value: '选项4',
+          label: '参数4'
+        }],
+      // 新增参数的选择框绑定值
+      // addParameter:null, 
       // 查询参数
       queryParams: {
         pageNum: 1,
         pageSize: 10,
+        modelName:null,
+        modelUrl:null,
         code: null,
         restrainCriteria: null,
         minDuration: null,
-         
+      },
+      upload: {
+        title: '',
+        // 是否显示弹出层
+        open: false,
+        // 是否禁用上传
+        isUploading: false,
+        // 设置上传的请求头部
+        headers: { Authorization: 'Bearer ' + getToken() },
+        // 是否更新已存在数据
+        updateSupport: 0,
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + '/manage/falseAlarmRestrainModel/import',
       },
       // 表单参数
-      form: {},
+      form: {
+        modelParams:[],
+        dataParams:[]
+      },
       // 表单校验
       rules: {
       }
@@ -197,13 +327,52 @@ export default {
     reset() {
       this.form = {
         id: null,
+        modelName:null,
+        modelUrl:null,
         code: null,
         restrainCriteria: null,
         minDuration: null,
-         
+        modelParams:[],
+        dataParams:[]
       };
       this.resetForm("form");
     },
+    // 新增模型表单
+    addModelForms() {
+      this.form.modelParams.push({
+        key: '',
+        uniqueMark: Date.now(), //唯一标识
+        value:''
+      });
+    },
+    // 增加数据表单
+    addDataForms(){
+      this.form.dataParams.push({
+        key: '',
+        uniqueMark: Date.now(), //唯一标识
+        value:''
+      });
+    },
+    removeModelForm(item) {
+      var index = this.form.modelParams.indexOf(item)
+      if (index !== -1) {
+        this.form.modelParams.splice(index, 1)
+      }
+    },
+    removeDataForm(item) {
+      var index = this.form.dataParams.indexOf(item)
+      if (index !== -1) {
+        this.form.dataParams.splice(index, 1)
+      }
+    },
+    // 更换label的值
+    startEditing(item) {
+      console.log(item);
+      item.editing = true;
+    },
+    endEditing(item) {
+      item.editing = false;
+    },
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.pageNum = 1;
@@ -247,6 +416,7 @@ export default {
               this.getList();
             });
           } else {
+            // console.log(this.form);
             addFalseAlarmRestrainModel(this.form).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
@@ -266,6 +436,44 @@ export default {
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
     },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = '虚警抑制模型导入'
+      this.upload.open = true
+    },
+    submitFileForm() {
+      this.$refs.upload.submit()
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      if (response.code !== 200) {
+        this.$modal.msgError(response.msg)
+        return
+      }
+      this.upload.open = false
+      this.upload.isUploading = false
+      this.$refs.upload.clearFiles()
+      this.$alert(
+        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+          response.msg +
+          '</div>',
+        '导入结果',
+        { dangerouslyUseHTMLString: true }
+      )
+      this.getList()
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download(
+        '/manage/falseAlarmRestrainModel/importTemplate',
+        {},
+        `falseAlarmRestrainModel_template_${new Date().getTime()}.xlsx`
+      )
+    },
     /** 导出按钮操作 */
     handleExport() {
       this.download('manage/falseAlarmRestrainModel/export', {
@@ -275,3 +483,15 @@ export default {
   }
 };
 </script>
+<style scoped lang="scss">
+.dynamicAdd{
+  display: flex;
+}
+.myDialog{
+  ::v-deep {
+    .el-dialog__body{
+      padding: 3px 20px;
+    }
+  }
+} 
+</style>

+ 78 - 20
PHM-web/src/views/manage/forecastModel/index.vue

@@ -50,17 +50,6 @@
           v-hasPermi="['manage:forecastModel:add']"
         >新增</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['manage:forecastModel:edit']"
-        >修改</el-button>
-      </el-col>
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -82,12 +71,15 @@
           v-hasPermi="['manage:forecastModel:export']"
         >导出</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" icon="el-icon-upload2" size="mini" @click="handleImport"
+          v-hasPermi="['manage:forecastModel:export']">导入</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="forecastModelList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      
       <el-table-column label="预测对象" align="center" prop="object" />
       <el-table-column label="预测方法" align="center" prop="method" />
       <el-table-column label="训练集范围" align="center" prop="trainsRange" />
@@ -101,13 +93,6 @@
             @click="handleUpdate(scope.row)"
             v-hasPermi="['manage:forecastModel:edit']"
           >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['manage:forecastModel:remove']"
-          >删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -141,12 +126,34 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" :close-on-click-modal="false" width="400px" append-to-body>
+      <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip text-center" slot="tip">
+          <div class="el-upload__tip" slot="tip">
+            <el-checkbox v-model="upload.updateSupport" />
+            是否更新已经存在的预测模型
+          </div>
+          <span>仅允许导入xls、xlsx格式文件。</span>
+          <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
+            @click="importTemplate">下载模板</el-link>
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { listForecastModel, getForecastModel, delForecastModel, addForecastModel, updateForecastModel } from "@/api/manage/forecastModel";
-
+import { getToken } from '@/utils/auth'
 export default {
   name: "ForecastModel",
   data() {
@@ -178,6 +185,19 @@ export default {
         trainsRange: null,
         accuracy: null,
       },
+      upload: {
+        title: '',
+        // 是否显示弹出层
+        open: false,
+        // 是否禁用上传
+        isUploading: false,
+        // 设置上传的请求头部
+        headers: { Authorization: 'Bearer ' + getToken() },
+        // 是否更新已存在数据
+        updateSupport: 0,
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + '/manage/falseAlarmRestrainModel/import',
+      },
       // 表单参数
       form: {},
       // 表单校验
@@ -276,6 +296,44 @@ export default {
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
     },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = '预测模型导入'
+      this.upload.open = true
+    },
+    submitFileForm() {
+      this.$refs.upload.submit()
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      if (response.code !== 200) {
+        this.$modal.msgError(response.msg)
+        return
+      }
+      this.upload.open = false
+      this.upload.isUploading = false
+      this.$refs.upload.clearFiles()
+      this.$alert(
+        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+          response.msg +
+          '</div>',
+        '导入结果',
+        { dangerouslyUseHTMLString: true }
+      )
+      this.getList()
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download(
+        '/manage/forecastModel/importTemplate',
+        {},
+        `forecastModel_template_${new Date().getTime()}.xlsx`
+      )
+    },
     /** 导出按钮操作 */
     handleExport() {
       this.download('manage/forecastModel/export', {

+ 107 - 21
PHM-web/src/views/manage/groundDiagnosisModel/index.vue

@@ -1,6 +1,22 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="模型名称" prop="modelName">
+        <el-input
+          v-model="queryParams.modelName"
+          placeholder="请输入模型名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="模型Url" prop="modelUrl">
+        <el-input
+          v-model="queryParams.modelUrl"
+          placeholder="请输入模型Url"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
       <el-form-item label="事件代码" prop="code">
         <el-input
           v-model="queryParams.code"
@@ -33,7 +49,7 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="所属LRU" prop="lruSource">
+      <el-form-item label="所属LRU" prop="lruSource" label-width="80px">
         <el-input
           v-model="queryParams.lruSource"
           placeholder="请输入所属LRU"
@@ -59,17 +75,6 @@
           v-hasPermi="['manage:groundDiagnosisModel:add']"
         >新增</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['manage:groundDiagnosisModel:edit']"
-        >修改</el-button>
-      </el-col>
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -91,12 +96,17 @@
           v-hasPermi="['manage:groundDiagnosisModel:export']"
         >导出</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" icon="el-icon-upload2" size="mini" @click="handleImport"
+          v-hasPermi="['manage:groundDiagnosisModel:export']">导入</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="groundDiagnosisModelList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      
+      <el-table-column label="模型名称" align="center" prop="modelName" />
+      <el-table-column label="模型Url" align="center" prop="modelUrl" />
       <el-table-column label="事件代码" align="center" prop="code" />
       <el-table-column label="判据" align="center" prop="criteria" />
       <el-table-column label="最少持续时间" align="center" prop="minDuration" />
@@ -112,13 +122,6 @@
             @click="handleUpdate(scope.row)"
             v-hasPermi="['manage:groundDiagnosisModel:edit']"
           >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['manage:groundDiagnosisModel:remove']"
-          >删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -134,6 +137,12 @@
     <!-- 添加或修改地面诊断模型信息对话框 -->
     <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="模型名称" prop="modelName">
+          <el-input v-model="form.modelName" placeholder="请输入模型名称" />
+        </el-form-item>
+        <el-form-item label="模型Url" prop="modelUrl">
+          <el-input v-model="form.modelUrl" placeholder="请输入模型Url" />
+        </el-form-item>
         <el-form-item label="事件代码" prop="code">
           <el-input v-model="form.code" placeholder="请输入事件代码" />
         </el-form-item>
@@ -156,12 +165,34 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" :close-on-click-modal="false" width="400px" append-to-body>
+      <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip text-center" slot="tip">
+          <div class="el-upload__tip" slot="tip">
+            <el-checkbox v-model="upload.updateSupport" />
+            是否更新已经存在的地面诊断模型
+          </div>
+          <span>仅允许导入xls、xlsx格式文件。</span>
+          <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
+            @click="importTemplate">下载模板</el-link>
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { listGroundDiagnosisModel, getGroundDiagnosisModel, delGroundDiagnosisModel, addGroundDiagnosisModel, updateGroundDiagnosisModel } from "@/api/manage/groundDiagnosisModel";
-
+import { getToken } from '@/utils/auth'
 export default {
   name: "GroundDiagnosisModel",
   data() {
@@ -188,6 +219,8 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
+        modelName:null,
+        modelUrl:null,
         code: null,
         criteria: null,
         minDuration: null,
@@ -195,6 +228,19 @@ export default {
         lruSource: null,
          
       },
+      upload: {
+        title: '',
+        // 是否显示弹出层
+        open: false,
+        // 是否禁用上传
+        isUploading: false,
+        // 设置上传的请求头部
+        headers: { Authorization: 'Bearer ' + getToken() },
+        // 是否更新已存在数据
+        updateSupport: 0,
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + '/manage/falseAlarmRestrainModel/import',
+      },
       // 表单参数
       form: {},
       // 表单校验
@@ -224,6 +270,8 @@ export default {
     reset() {
       this.form = {
         id: null,
+        modelName:null,
+        modelUrl:null,
         code: null,
         criteria: null,
         minDuration: null,
@@ -295,6 +343,44 @@ export default {
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
     },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = '地面诊断模型导入'
+      this.upload.open = true
+    },
+    submitFileForm() {
+      this.$refs.upload.submit()
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      if (response.code !== 200) {
+        this.$modal.msgError(response.msg)
+        return
+      }
+      this.upload.open = false
+      this.upload.isUploading = false
+      this.$refs.upload.clearFiles()
+      this.$alert(
+        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+          response.msg +
+          '</div>',
+        '导入结果',
+        { dangerouslyUseHTMLString: true }
+      )
+      this.getList()
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download(
+        '/manage/groundDiagnosisModel/importTemplate',
+        {},
+        `groundDiagnosisModel_template_${new Date().getTime()}.xlsx`
+      )
+    },
     /** 导出按钮操作 */
     handleExport() {
       this.download('manage/groundDiagnosisModel/export', {

+ 97 - 38
PHM-web/src/views/manage/maintenanceTestControl/index.vue

@@ -1,26 +1,26 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="维修控制信息" prop="maintenanceControl" label-width="100px">
+      <!-- <el-form-item label="维修控制信息" prop="maintenanceControl" label-width="100px">
         <el-input
           v-model="queryParams.maintenanceControl"
           placeholder="请输入维修控制信息"
           clearable
           @keyup.enter.native="handleQuery"
         />
-      </el-form-item>
-      <el-form-item label="对象" prop="object">
+      </el-form-item> -->
+      <el-form-item label="名称" prop="name">
         <el-input
-          v-model="queryParams.object"
-          placeholder="请输入对象"
+          v-model="queryParams.name"
+          placeholder="请输入名称"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="名称" prop="name">
+      <el-form-item label="对象" prop="object">
         <el-input
-          v-model="queryParams.name"
-          placeholder="请输入名称"
+          v-model="queryParams.object"
+          placeholder="请输入对象"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -33,14 +33,14 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="故障数据" prop="faultData">
+      <!-- <el-form-item label="故障数据" prop="faultData">
         <el-input
           v-model="queryParams.faultData"
           placeholder="请输入故障数据"
           clearable
           @keyup.enter.native="handleQuery"
         />
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item label="版本" prop="version">
         <el-input
           v-model="queryParams.version"
@@ -66,17 +66,6 @@
           v-hasPermi="['manage:maintenanceTestControl:add']"
         >新增</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['manage:maintenanceTestControl:edit']"
-        >修改</el-button>
-      </el-col>
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -98,17 +87,21 @@
           v-hasPermi="['manage:maintenanceTestControl:export']"
         >导出</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" icon="el-icon-upload2" size="mini" @click="handleImport"
+          v-hasPermi="['manage:maintenanceTestControl:export']">导入</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="maintenanceTestControlList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       
-      <el-table-column label="维修控制信息" align="center" prop="maintenanceControl" />
-      <el-table-column label="对象" align="center" prop="object" />
+      <!-- <el-table-column label="维修控制信息" align="center" prop="maintenanceControl" /> -->
       <el-table-column label="名称" align="center" prop="name" />
+      <el-table-column label="对象" align="center" prop="object" />
       <el-table-column label="程序文件" align="center" prop="applicationDoc" />
-      <el-table-column label="故障数据" align="center" prop="faultData" />
+      <!-- <el-table-column label="故障数据" align="center" prop="faultData" /> -->
       <el-table-column label="版本" align="center" prop="version" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
@@ -119,13 +112,6 @@
             @click="handleUpdate(scope.row)"
             v-hasPermi="['manage:maintenanceTestControl:edit']"
           >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['manage:maintenanceTestControl:remove']"
-          >删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -141,21 +127,21 @@
     <!-- 添加或修改维修测试控制对话框 -->
     <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
-        <el-form-item label="维修控制信息" prop="maintenanceControl">
+        <!-- <el-form-item label="维修控制信息" prop="maintenanceControl">
           <el-input v-model="form.maintenanceControl" placeholder="请输入维修控制信息" />
+        </el-form-item> -->
+        <el-form-item label="名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入名称" />
         </el-form-item>
         <el-form-item label="对象" prop="object">
           <el-input v-model="form.object" placeholder="请输入对象" />
         </el-form-item>
-        <el-form-item label="名称" prop="name">
-          <el-input v-model="form.name" placeholder="请输入名称" />
-        </el-form-item>
         <el-form-item label="程序文件" prop="applicationDoc">
           <el-input v-model="form.applicationDoc" placeholder="请输入程序文件" />
         </el-form-item>
-        <el-form-item label="故障数据" prop="faultData">
+        <!-- <el-form-item label="故障数据" prop="faultData">
           <el-input v-model="form.faultData" placeholder="请输入故障数据" />
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="版本" prop="version">
           <el-input v-model="form.version" placeholder="请输入版本" />
         </el-form-item>
@@ -165,12 +151,34 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" :close-on-click-modal="false" width="400px" append-to-body>
+      <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip text-center" slot="tip">
+          <div class="el-upload__tip" slot="tip">
+            <el-checkbox v-model="upload.updateSupport" />
+            是否更新已经存在的维修测试控制程序
+          </div>
+          <span>仅允许导入xls、xlsx格式文件。</span>
+          <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
+            @click="importTemplate">下载模板</el-link>
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { listMaintenanceTestControl, getMaintenanceTestControl, delMaintenanceTestControl, addMaintenanceTestControl, updateMaintenanceTestControl } from "@/api/manage/maintenanceTestControl";
-
+import { getToken } from '@/utils/auth'
 export default {
   name: "MaintenanceTestControl",
   data() {
@@ -204,6 +212,19 @@ export default {
         faultData: null,
         version: null,
       },
+      upload: {
+        title: '',
+        // 是否显示弹出层
+        open: false,
+        // 是否禁用上传
+        isUploading: false,
+        // 设置上传的请求头部
+        headers: { Authorization: 'Bearer ' + getToken() },
+        // 是否更新已存在数据
+        updateSupport: 0,
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + '/manage/falseAlarmRestrainModel/import',
+      },
       // 表单参数
       form: {},
       // 表单校验
@@ -304,6 +325,44 @@ export default {
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
     },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = '维修测试控制程序导入'
+      this.upload.open = true
+    },
+    submitFileForm() {
+      this.$refs.upload.submit()
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      if (response.code !== 200) {
+        this.$modal.msgError(response.msg)
+        return
+      }
+      this.upload.open = false
+      this.upload.isUploading = false
+      this.$refs.upload.clearFiles()
+      this.$alert(
+        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+          response.msg +
+          '</div>',
+        '导入结果',
+        { dangerouslyUseHTMLString: true }
+      )
+      this.getList()
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download(
+        '/manage/maintenanceTestControl/importTemplate',
+        {},
+        `maintenanceTestControl_template_${new Date().getTime()}.xlsx`
+      )
+    },
     /** 导出按钮操作 */
     handleExport() {
       this.download('manage/maintenanceTestControl/export', {

+ 78 - 22
PHM-web/src/views/manage/performanceMonitorModel/index.vue

@@ -67,17 +67,6 @@
           v-hasPermi="['manage:performanceMonitorModel:add']"
         >新增</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['manage:performanceMonitorModel:edit']"
-        >修改</el-button>
-      </el-col>
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -99,19 +88,21 @@
           v-hasPermi="['manage:performanceMonitorModel:export']"
         >导出</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" icon="el-icon-upload2" size="mini" @click="handleImport"
+          v-hasPermi="['manage:performanceMonitorModel:export']">导入</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="performanceMonitorModelList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      
       <el-table-column label="监测对象" align="center" prop="object" />
       <el-table-column label="监测参数" align="center" prop="parameter" />
       <el-table-column label="状态条件" align="center" prop="stateCondition" />
       <el-table-column label="取值方法" align="center" prop="valueMethod" />
       <el-table-column label="警戒值" align="center" prop="alarmValue" />
       <el-table-column label="门限值" align="center" prop="thresholdValue" />
-       
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -121,13 +112,6 @@
             @click="handleUpdate(scope.row)"
             v-hasPermi="['manage:performanceMonitorModel:edit']"
           >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['manage:performanceMonitorModel:remove']"
-          >删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -168,12 +152,34 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" :close-on-click-modal="false" width="400px" append-to-body>
+      <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip text-center" slot="tip">
+          <div class="el-upload__tip" slot="tip">
+            <el-checkbox v-model="upload.updateSupport" />
+            是否更新已经存在的性能监测模型
+          </div>
+          <span>仅允许导入xls、xlsx格式文件。</span>
+          <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
+            @click="importTemplate">下载模板</el-link>
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { listPerformanceMonitorModel, getPerformanceMonitorModel, delPerformanceMonitorModel, addPerformanceMonitorModel, updatePerformanceMonitorModel } from "@/api/manage/performanceMonitorModel";
-
+import { getToken } from '@/utils/auth'
 export default {
   name: "PerformanceMonitorModel",
   data() {
@@ -206,7 +212,19 @@ export default {
         valueMethod: null,
         alarmValue: null,
         thresholdValue: null,
-         
+      },
+      upload: {
+        title: '',
+        // 是否显示弹出层
+        open: false,
+        // 是否禁用上传
+        isUploading: false,
+        // 设置上传的请求头部
+        headers: { Authorization: 'Bearer ' + getToken() },
+        // 是否更新已存在数据
+        updateSupport: 0,
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + '/manage/falseAlarmRestrainModel/import',
       },
       // 表单参数
       form: {},
@@ -309,6 +327,44 @@ export default {
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
     },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = '性能监测模型导入'
+      this.upload.open = true
+    },
+    submitFileForm() {
+      this.$refs.upload.submit()
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      if (response.code !== 200) {
+        this.$modal.msgError(response.msg)
+        return
+      }
+      this.upload.open = false
+      this.upload.isUploading = false
+      this.$refs.upload.clearFiles()
+      this.$alert(
+        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+          response.msg +
+          '</div>',
+        '导入结果',
+        { dangerouslyUseHTMLString: true }
+      )
+      this.getList()
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download(
+        '/manage/performanceMonitorModel/importTemplate',
+        {},
+        `performanceMonitorModel_template_${new Date().getTime()}.xlsx`
+      )
+    },
     /** 导出按钮操作 */
     handleExport() {
       this.download('manage/performanceMonitorModel/export', {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 32 - 23
PHM-web/src/views/manage/sortie/dataPlayBack.vue


+ 38 - 34
PHM-web/src/views/manage/sortie/index.vue

@@ -29,10 +29,6 @@
         <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
           v-hasPermi="['manage:sortie:add']">新增</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
-          v-hasPermi="['manage:sortie:edit']">修改</el-button>
-      </el-col>
       <el-col :span="1.5">
         <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
           v-hasPermi="['manage:sortie:remove']">删除</el-button>
@@ -51,7 +47,18 @@
     <el-table v-loading="loading" :data="sortieList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="机号" align="center" prop="aircraftNumber" />
-      <el-table-column label="架次号" align="center" prop="sortieNumber" />
+      <el-table-column label="架次号" align="center" prop="sortieNumber">
+        <template slot-scope="scope">
+          <el-button
+            @click.native.prevent="detail(scope.row)"
+            type="success"
+            plain
+            :span="1.5"
+            size="mini">
+            {{ scope.row.sortieNumber }}
+          </el-button>
+        </template>
+      </el-table-column>
       <el-table-column label="开始时间" align="center" prop="startTime" width="180">
         <template slot-scope="scope">
           <span>{{
@@ -67,24 +74,10 @@
         </template>
       </el-table-column>
       <el-table-column label="飞行时长" align="center" prop="duration" />
-      <el-table-column label="创建人" align="center" prop="createBy" />
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
-        <template slot-scope="scope">
-          <span>{{
-            parseTime(scope.row.createTime, "{y}-{m}-{d} {h}:{i}:{s}")
-          }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="更新人" align="center" prop="updateBy" />
-      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{
-            parseTime(scope.row.updateTime, "{y}-{m}-{d} {h}:{i}:{s}")
-          }}</span>
-        </template>
-      </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
+          <el-button type="text" icon="el-icon-edit" size="mini" @click="handleUpdate(scope.row)"
+          v-hasPermi="['manage:sortie:edit']">修改</el-button>
           <el-button size="mini" type="text" @click="playBack(scope.row)"
             v-hasPermi="['manage:sortie:edit']">数据回放</el-button>
         </template>
@@ -192,10 +185,6 @@ export default {
         startTime: '',
         endTime: '',
         duration: null,
-        createBy: null,
-        createTime: null,
-        updateBy: null,
-        updateTime: null,
       },
       upload: {
         title: '',
@@ -287,20 +276,35 @@ export default {
         startTime: null,
         endTime: null,
         duration: null,
-        isDelete: null,
-        createBy: null,
-        createTime: null,
-        updateBy: null,
-        updateTime: null,
+        isDelete: null
       }
       this.resetForm('form')
     },
-    // 跳转到数据回放
+    // 跳转到选择参数
     playBack(row) {
       const sortieNumber = row.sortieNumber
-      this.$router.push(
-        '/manage/integratedDataManage/sortie/dataPlayback/' + sortieNumber
-      )
+      // this.$router.push(
+      //   '/manage/integratedDataManage/sortie/dataPlayback/' + sortieNumber
+      // )
+      // this.$router.push(
+      //   '/manage/integratedDataManage/sortie/selectParameters/' + sortieNumber
+      // )
+      this.$router.push({
+        name: 'selectParameters',
+        params: { 
+          sortieNumber: sortieNumber
+        },
+      })
+    },
+    // 架次详情
+    detail(row){
+      const sortieNumber = row.sortieNumber
+      this.$router.push({
+        name: 'SortieDetail',
+        params: { 
+          sortieNumber: sortieNumber
+        },
+      })
     },
     /** 下载模板操作 */
     importTemplate() {

+ 124 - 0
PHM-web/src/views/manage/sortie/selectParameters.vue

@@ -0,0 +1,124 @@
+<template>
+  <div class="app-container selectParameters">
+    <el-button type="primary" @click="back" class="backBtn">返回</el-button>
+    <p style="text-align: center; margin: 0 0 20px">请选择该架次信息回放的参数</p>
+    <div class="transfer">
+      <el-transfer v-model="value"
+        :props="{ key: 'value', label: 'desc' }" 
+        :data="data"
+        filterable
+        filter-placeholder="请输入参数名称"
+        :titles="['所有参数', '展示参数']"
+        @change="handleChange"
+      >
+      </el-transfer>
+    </div>
+    <div class="footer">
+      <el-button :disabled="isDisable" type="primary" @click="submitFileForm">确 定</el-button>
+    </div>
+    <!-- 数据回放弹出框 -->
+    <el-dialog
+      :visible.sync="dialogVisible"
+      :fullscreen="true"
+      class="thisDialog"
+      >
+      <dataPlayBack @closeDialog="closeDialog"/>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import dataPlayBack from '@/views/manage/sortie/dataPlayBack'
+export default {
+  name: 'SelectParameters',
+  components: {
+    dataPlayBack
+  },
+  data() {
+    const generateData = _ => {
+      const data = [];
+      for (let i = 1; i <= 15; i++) {
+        data.push({
+          value: i,
+          desc: `备选项 ${ i }`
+        });
+      }
+      return data;
+    };
+    return {
+      // 遮罩层
+      loading: true,
+      // 判断选择参数为空时
+      isDisable:false,
+      data: generateData(),
+      value: [1],
+      // 最后选择的参数
+      selectData:[],
+      dialogVisible: false
+    };
+  },
+  methods: {
+    handleChange(value, direction, movedKeys) {
+      this.selectData=value
+      console.log('value', value);
+      console.log('direction', direction);
+      console.log('movedKeys', movedKeys);
+      if(value.length===0){
+        this.isDisable=true
+      }else{
+        this.isDisable=false
+      }
+    },
+    submitFileForm(){
+      this.dialogVisible=true
+    },
+    back(){
+      this.$router.push({
+        name: 'Sortie'
+      })
+    },
+    // 关闭弹框
+    closeDialog(){
+      this.dialogVisible=false
+    },
+  }
+}
+</script>
+
+<style scoped>
+.selectParameters{
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+.transfer >>> .el-transfer-panel{
+  width: 300px;
+  height: 450px;
+}
+.transfer >>> .el-transfer-panel__list.is-filterable{
+  height: 350px;
+}
+.footer{
+  width: 42vw;
+  margin-top: 20px;
+  position: relative;
+}
+.footer >>> .el-button{
+  position: absolute;
+  right: 0;
+}
+::v-deep .thisDialog .el-dialog__body {
+    padding: 0;
+}
+::v-deep .thisDialog .el-dialog__header {
+    padding: 0;
+}
+.backBtn{
+  position: absolute;
+  top: 20px;
+  left: 40px;
+}
+/* ::v-deep .el-dialog__body{
+  padding: 0 !important;
+} */
+</style>

+ 39 - 0
PHM-web/src/views/manage/sortie/sortieDetail.vue

@@ -0,0 +1,39 @@
+<template>
+  <div class="app-container">
+    <el-button type="text" @click="back" class="backBtn">⇦返回</el-button>
+    <el-descriptions title="用户信息" class="sortieDetail"  :contentStyle="{'font-weight': '700'}">
+        <el-descriptions-item label="飞机编号">1234</el-descriptions-item>
+        <el-descriptions-item label="日期">2023/05/19</el-descriptions-item>
+        <el-descriptions-item label="任务类型">xx</el-descriptions-item>
+        <el-descriptions-item label="起落次数">5</el-descriptions-item>
+        <el-descriptions-item label="开始时间">xxxxx</el-descriptions-item>
+        <el-descriptions-item label="结束时间">xxxxx</el-descriptions-item>
+        <el-descriptions-item label="持续时间">xxxxx</el-descriptions-item>
+        <el-descriptions-item label="开车前油量">xxxxx</el-descriptions-item>
+    </el-descriptions>
+  </div>
+</template>
+
+<script>
+  export default {
+    name:'SortieDetail',
+    methods: {
+    back(){
+      this.$router.push({
+        name: 'Sortie'
+      })
+    }
+  }
+  }
+</script>
+
+<style scoped>
+.sortieDetail{
+  padding: 20px 70px 0px 70px;
+}
+.backBtn{
+  position: absolute;
+  top: 20px;
+  left: 30px;
+}
+</style>

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels