Procházet zdrojové kódy

feat: 账户明细导出功能增强-支持动态字段选择

- 新增导出字段选择对话框,支持用户自定义导出字段
- 对接后端filter参数,支持20个可选字段
- 新增字段:公司、业务员、公司团队、订单号、问诊单号、运单号、收款单号、支付方式、套餐名称、套餐别名、收货人、店铺名称等
- 支持全选/取消全选功能
- 默认勾选常用字段(ID、金额、余额、备注、类型、创建时间)
xw před 2 měsíci
rodič
revize
8bf0b7c533
1 změnil soubory, kde provedl 78 přidání a 2 odebrání
  1. 78 2
      src/views/company/companyMoneyLogs/index.vue

+ 78 - 2
src/views/company/companyMoneyLogs/index.vue

@@ -147,6 +147,30 @@
       >
       <storeOrderDetails  ref="order" />
     </el-drawer>
+
+    <!-- 导出字段选择对话框 -->
+    <el-dialog title="选择导出字段" :visible.sync="exportDialogVisible" width="600px" append-to-body>
+      <div style="margin-bottom: 15px;">
+        <el-checkbox 
+          :indeterminate="exportFieldOptions.some(item => item.checked) && !exportFieldOptions.every(item => item.checked)"
+          :value="exportFieldOptions.every(item => item.checked)"
+          @change="handleCheckAllChange"
+        >全选</el-checkbox>
+      </div>
+      <el-row :gutter="20">
+        <el-col :span="8" v-for="field in exportFieldOptions" :key="field.field">
+          <el-checkbox 
+            v-model="field.checked" 
+            :label="field.label"
+            style="margin-bottom: 10px;"
+          ></el-checkbox>
+        </el-col>
+      </el-row>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="exportDialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="confirmExport">确定导出</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -187,6 +211,30 @@ export default {
       dateRange:[],
       // 是否显示弹出层
       open: false,
+      // 导出字段选择对话框
+      exportDialogVisible: false,
+      // 当前导出类型 0-全部 1-商城订单明细
+      currentExportType: 0,
+      // 可选导出字段(与后端字段对应)
+      exportFieldOptions: [
+        { field: 'logsId', label: 'ID', checked: true },
+        { field: 'companyName', label: '公司团队', checked: false },
+        { field: 'money', label: '金额', checked: true },
+        { field: 'balance', label: '余额', checked: true },
+        { field: 'redPacketConsume', label: '红包消耗', checked: false },
+        { field: 'rechargeDetail', label: '充值明细', checked: false },
+        { field: 'remark', label: '备注', checked: true },
+        { field: 'createTime', label: '创建时间', checked: true },
+        { field: 'logsType', label: '类型', checked: true },
+        { field: 'businessId', label: '业务ID', checked: false },
+        { field: 'orderCode', label: '订单号', checked: false },
+        { field: 'payCode', label: '收款单号', checked: false },
+        { field: 'payTypeCode', label: '支付方式', checked: false },
+        { field: 'packageName', label: '套餐名称', checked: false },
+        { field: 'packageSecondName', label: '套餐别名', checked: false },
+        { field: 'userName', label: '收货人', checked: false },
+        { field: 'storeName', label: '店铺名称', checked: false }
+      ],
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -328,15 +376,37 @@ export default {
     },
     /** 导出按钮操作 */
     handleExport(type) {
-		var that=this;
+      // 保存导出类型,打开字段选择对话框
+      this.currentExportType = type;
+      this.exportDialogVisible = true;
+    },
+    /** 确认导出 */
+    confirmExport() {
+      var that = this;
+      
+      // 获取选中的字段
+      const selectedFields = this.exportFieldOptions
+        .filter(item => item.checked)
+        .map(item => item.field);
+      
+      if (selectedFields.length === 0) {
+        this.msgWarning('请至少选择一个导出字段');
+        return;
+      }
+      
       if(this.createTimeRange!=null&&this.createTimeRange.length==2){
         this.queryParams.createTimeRange=this.createTimeRange[0]+"--"+this.createTimeRange[1]
       }
       else{
         this.queryParams.createTimeRange=null;
       }
+      
       const queryParams = this.queryParams;
-      queryParams.type=type;
+      queryParams.type = this.currentExportType;
+      queryParams.filter = selectedFields.join(','); // 使用filter参数传递字段列表
+      
+      this.exportDialogVisible = false;
+      
       this.$confirm('是否确认导出所有企业账户记录数据项?', "警告", {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
@@ -361,6 +431,12 @@ export default {
         }
         }).catch(function() {});
     },
+    /** 全选/取消全选导出字段 */
+    handleCheckAllChange(val) {
+      this.exportFieldOptions.forEach(item => {
+        item.checked = val;
+      });
+    },
     changeLogsType(){
       this.getList();
     }