ouyj 4 месяцев назад
Родитель
Сommit
1612e9d251

+ 18 - 10
ygtx-gxt/src/main/java/com/ygtx/gxt/controller/GxtEquipmentController.java

@@ -4,14 +4,7 @@ import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import com.ygtx.common.annotation.Log;
 import com.ygtx.common.core.controller.BaseController;
@@ -129,13 +122,28 @@ public class GxtEquipmentController extends BaseController
     @Log(title = "设备管理", businessType = BusinessType.EXPORT)
     @ApiOperation("导出设备管理列表")
     @PostMapping("/export")
-    public void export(HttpServletResponse response, GxtEquipment gxtEquipment)
-    {
+    public void export(HttpServletResponse response, GxtEquipment gxtEquipment,
+                       @RequestParam(value = "exportFields", required = false) String exportFieldsStr) {
         List<GxtEquipment> list = gxtEquipmentService.selectGxtEquipmentList(gxtEquipment);
         ExcelUtil<GxtEquipment> util = new ExcelUtil<GxtEquipment>(GxtEquipment.class);
+        if (exportFieldsStr != null && !exportFieldsStr.isEmpty()) {
+            // 将字符串分割成数组
+            String[] exportFields = exportFieldsStr.split(",");
+            util.showColumn(exportFields);
+        }
         util.exportExcel(response, list, "设备管理数据");
     }
 
+    /**
+     * 获取设备管理导出字段列表
+     */ 
+    @GetMapping("/exportFields")
+    @ApiOperation("获取设备管理导出字段列表")
+    public AjaxResult getExportFields() {
+        ExcelUtil<GxtEquipment> util = new ExcelUtil<GxtEquipment>(GxtEquipment.class);
+        return success(util.getExportFields());
+    }
+
     /**
      * 获取设备管理详细信息
      */

+ 0 - 1
ygtx-gxt/src/main/java/com/ygtx/gxt/controller/GxtRepairOrderController.java

@@ -97,7 +97,6 @@ public class GxtRepairOrderController extends BaseController
     /**
      * 获取维修工单导出字段列表
      */
-    @PreAuthorize("@ss.hasPermi('gxt:repairOrder:export')")
     @GetMapping("/exportFields")
     @ApiOperation("获取维修工单导出字段列表")
     public AjaxResult getExportFields() {

+ 0 - 1
ygtx-gxt/src/main/java/com/ygtx/gxt/controller/GxtWorkOrderController.java

@@ -492,7 +492,6 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 获取维保工单导出字段列表
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:export')")
     @GetMapping("/exportFields")
     @ApiOperation("获取维保工单导出字段列表")
     public AjaxResult getExportFields() {

+ 8 - 0
ygtx-ui/src/api/gxt/equipment.js

@@ -99,3 +99,11 @@ export function listAllEquipment() {
     method: 'get'
   })
 }
+
+// 获取导出字段
+export function getExportFields() {
+  return request({
+    url: '/gxt/equipment/exportFields',
+    method: 'get'
+  })
+}

+ 57 - 4
ygtx-ui/src/views/gxt/equipment/index.vue

@@ -278,6 +278,24 @@
       </template>
     </el-dialog>
     
+    <!-- 字段选择对话框 -->
+    <el-dialog title="选择导出字段" v-model="showExportFieldsDialog" width="600px" append-to-body>
+      <el-transfer 
+        v-model="exportFieldsSelected" 
+        :data="exportFieldsData" 
+        :titles="['可选字段', '导出字段']"
+        show-checkbox
+        filterable
+        filter-placeholder="请输入字段名称">
+      </el-transfer>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="showExportFieldsDialog = false">取 消</el-button>
+          <el-button type="primary" @click="confirmExport">确 定</el-button>
+        </div>
+      </template>
+    </el-dialog>
+    
     <!-- 单选设备选择组件 -->
     <equipment-select-single v-model="singleEquipmentSelectVisible" @onSelected="onSingleEquipmentSelected"></equipment-select-single>
     
@@ -291,7 +309,7 @@
 
 <script setup name="Equipment">
 import { getToken } from "@/utils/auth"
-import { listEquipment, getEquipment, delEquipment, addEquipment, updateEquipment, listBrands, listModelsByBrand, listMaintenanceCenters, listStationsByMaintenanceCenter } from "@/api/gxt/equipment"
+import { listEquipment, getEquipment, delEquipment, addEquipment, updateEquipment, listBrands, listModelsByBrand, listMaintenanceCenters, listStationsByMaintenanceCenter, getExportFields } from "@/api/gxt/equipment"
 import { listDeptData } from "@/api/system/dept"
 import EquipmentSelectSingle from "@/components/equipmentSelect/single.vue"
 import EquipmentSelectMulti from "@/components/equipmentSelect/multi.vue"
@@ -331,6 +349,11 @@ const singleEquipmentSelectVisible = ref(false) // 单选设备选择组件可
 const multiEquipmentSelectVisible = ref(false) // 多选设备选择组件可见性
 const userSelectVisible = ref(false) // 人员选择组件可见性
 
+// 导出字段相关变量
+const showExportFieldsDialog = ref(false)
+const exportFieldsData = ref([])
+const exportFieldsSelected = ref([])
+
 /*** 设备导入参数 */
 const upload = reactive({
   // 是否显示弹出层(设备导入)
@@ -660,9 +683,39 @@ function handleDelete(row) {
 
 /** 导出按钮操作 */
 function handleExport() {
-  proxy.download('gxt/equipment/export', {
-    ...queryParams.value
-  }, `equipment_${new Date().getTime()}.xlsx`)
+  // 显示字段选择对话框
+  showExportFieldsDialog.value = true;
+  // 初始时不选中任何字段(符合用户期望)
+  exportFieldsSelected.value = [];
+  // 获取导出字段数据
+  getExportFieldsData();
+}
+
+/** 确认导出 */
+function confirmExport() {
+  if (exportFieldsSelected.value.length === 0) {
+    proxy.$modal.msgWarning("请至少选择一个导出字段");
+    return;
+  }
+  
+  // 将导出字段拼接成字符串
+  const exportFieldsStr = exportFieldsSelected.value.join(',');
+  
+  const exportParams = {
+    ...queryParams.value,
+    exportFields: exportFieldsStr
+  };
+
+  proxy.download('gxt/equipment/export', exportParams, `equipment_${new Date().getTime()}.xlsx`);
+  
+  showExportFieldsDialog.value = false;
+}
+
+/** 获取导出字段数据 */
+function getExportFieldsData() {
+  getExportFields().then(response => {
+    exportFieldsData.value = response.data
+  })
 }
 
 /** 导入按钮操作 */