Procházet zdrojové kódy

架次信息管理页面优化

wanggaokun před 1 rokem
rodič
revize
a63ea731de

+ 6 - 1
PHM-web/src/views/manage/preHandleResult/index.vue

@@ -209,7 +209,9 @@ export default {
     // 表单重置
     reset() {
       this.form = {
-        id: null,
+        name: null,
+        type: null,
+        remark: null
       };
       this.resetForm("form");
     },
@@ -232,6 +234,7 @@ export default {
     },
     /** 新增按钮操作 */
     handleAdd() {
+      this.handleList = this.handleList
       this.reset();
       this.open = true;
       this.title = "数据处理";
@@ -240,6 +243,8 @@ export default {
     handleUpdate() {
       console.log(this.currentSelection[0]);
       this.form.name = this.currentSelection[0].sourceName;
+      this.form.remark = null;
+      this.form.type = null;
       this.handleList = this.handleList2
       // this.form = this.currentSelection[0] || {}
       // getPreHandleResult(id).then(response => {

+ 142 - 21
PHM-web/src/views/manage/sortie/index.vue

@@ -20,27 +20,19 @@
       <el-form-item label="开始时间" prop="startTime">
         <el-date-picker clearable
           v-model="queryParams.startTime"
-          type="date"
-          value-format="yyyy-MM-dd"
+          type="datetime"
+          value-format="yyyy-MM-dd HH:mm:ss"
           placeholder="请选择开始时间">
         </el-date-picker>
       </el-form-item>
       <el-form-item label="结束时间" prop="endTime">
         <el-date-picker clearable
           v-model="queryParams.endTime"
-          type="date"
-          value-format="yyyy-MM-dd"
+          type="datetime"
+          value-format="yyyy-MM-dd HH:mm:ss"
           placeholder="请选择结束时间">
         </el-date-picker>
       </el-form-item>
-      <el-form-item label="飞行时长" prop="duration">
-        <el-input
-          v-model="queryParams.duration"
-          placeholder="请输入飞行时长"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -90,17 +82,45 @@
           v-hasPermi="['manage:sortie: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:sortie:export']"
+        >导入</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="sortieList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="唯一ID" align="center" prop="id" />
       <el-table-column label="机号" align="center" prop="aircraftNumber" />
       <el-table-column label="架次号" align="center" prop="sortieNumber" />
-      <el-table-column label="开始时间" align="center" prop="startTime" />
-      <el-table-column label="结束时间" align="center" prop="endTime" />
+      <el-table-column label="开始时间" align="center" prop="startTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="结束时间" align="center" prop="endTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
+        </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
@@ -139,10 +159,22 @@
           <el-input v-model="form.sortieNumber" placeholder="请输入架次号" />
         </el-form-item>
         <el-form-item label="开始时间" prop="startTime">
-          <el-input v-model="form.startTime" placeholder="请输入开始时间" />
+          <el-date-picker clearable
+            v-model="form.startTime"
+            type="datetime"
+            style="width: 100%"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="请选择开始时间">
+          </el-date-picker>
         </el-form-item>
         <el-form-item label="结束时间" prop="endTime">
-          <el-input v-model="form.endTime" placeholder="请输入结束时间" />
+          <el-date-picker clearable
+            v-model="form.endTime"
+            type="datetime"
+            style="width: 100%"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="请选择结束时间">
+          </el-date-picker>
         </el-form-item>
         <el-form-item label="飞行时长" prop="duration">
           <el-input v-model="form.duration" placeholder="请输入飞行时长" />
@@ -153,12 +185,41 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" 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 { listSortie, getSortie, delSortie, addSortie, updateSortie } from "@/api/manage/sortie";
-
+import { getToken } from "@/utils/auth";
 export default {
   name: "Sortie",
   data() {
@@ -191,13 +252,23 @@ export default {
         endTime: null,
         duration: null,
       },
+      upload: {
+        title: "",
+        // 是否显示弹出层
+        open: false,
+        // 是否禁用上传
+        isUploading: false,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 是否更新已存在数据
+        updateSupport: 0,
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API  + "/manage/sortie/import"
+      },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
-        isDelete: [
-          { required: true, message: "数据是否删除不能为空", trigger: "blur" }
-        ],
       }
     };
   },
@@ -228,9 +299,19 @@ export default {
         startTime: null,
         endTime: null,
         duration: null,
+        isDelete: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null
       };
       this.resetForm("form");
     },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download('/manage/sortie/importTemplate', {
+      }, `sortie_template_${new Date().getTime()}.xlsx`)
+    },
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.pageNum = 1;
@@ -253,6 +334,11 @@ export default {
       this.open = true;
       this.title = "添加架次信息";
     },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = '架次导入';
+      this.upload.open = true;
+    },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
@@ -263,6 +349,41 @@ export default {
         this.title = "修改架次信息";
       });
     },
+    submitFileForm() {
+      // this.$refs["uploadForm"].validate(valid => {
+      //   if (!valid) {
+      //     return;
+      //   }
+      //   this.$refs.upload.submit();
+      // })
+      this.$refs.upload.submit();
+    },
+    uploadClose() {
+      // 关闭弹窗
+      this.upload.open = false;
+      // 重置上传状态和文件
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      // 重置表单
+      this.upload.form = {};
+      // this.resetForm("uploadForm");
+    },
+    // 文件上传中处理
+    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();
+    },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate(valid => {