Prechádzať zdrojové kódy

红德堂-广告联盟及相关代码同步

Long 11 hodín pred
rodič
commit
9ef8c21325

+ 53 - 0
src/api/adv/profit.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询广告分佣列表
+export function listProfit(query) {
+  return request({
+    url: '/adv/profit/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询广告分佣详细
+export function getProfit(id) {
+  return request({
+    url: '/adv/profit/' + id,
+    method: 'get'
+  })
+}
+
+// 新增广告分佣
+export function addProfit(data) {
+  return request({
+    url: '/adv/profit',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改广告分佣
+export function updateProfit(data) {
+  return request({
+    url: '/adv/profit',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除广告分佣
+export function delProfit(id) {
+  return request({
+    url: '/adv/profit/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出广告分佣
+export function exportProfit(query) {
+  return request({
+    url: '/adv/profit/export',
+    method: 'get',
+    params: query
+  })
+}

+ 19 - 1
src/api/his/adv.js

@@ -50,4 +50,22 @@ export function exportAdv(query) {
     method: 'get',
     params: query
   })
-}
+}
+
+// 统计
+export function statistics(query) {
+  return request({
+    url: '/adv/profit/statistics',
+    method: 'get',
+    params: query
+  })
+}
+
+// 统计导出
+export function exportCommission(query) {
+  return request({
+    url: '/adv/profit/exportCommission',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/his/consecutiveWithdrawRecord.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询连续提现记录列表
+export function listRecord(query) {
+  return request({
+    url: '/his/consecutiveWithdrawRecord/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询连续提现记录详细
+export function getRecord(id) {
+  return request({
+    url: '/his/consecutiveWithdrawRecord/' + id,
+    method: 'get'
+  })
+}
+
+// 新增连续提现记录
+export function addRecord(data) {
+  return request({
+    url: '/his/record',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改连续提现记录
+export function updateRecord(data) {
+  return request({
+    url: '/his/record',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除连续提现记录
+export function delRecord(id) {
+  return request({
+    url: '/his/consecutiveWithdrawRecord/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出连续提现记录
+export function exportRecord(query) {
+  return request({
+    url: '/his/consecutiveWithdrawRecord/export',
+    method: 'get',
+    params: query
+  })
+}

+ 27 - 0
src/api/his/integralRedPacketLog.js

@@ -0,0 +1,27 @@
+import request from '@/utils/request'
+
+// 查询积分佣金红包记录列表
+export function listLog(query) {
+  return request({
+    url: '/his/integralRedPacketLog/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询积分佣金红包记录详细
+export function getLog(logId) {
+  return request({
+    url: '/his/integralRedPacketLog/' + logId,
+    method: 'get'
+  })
+}
+
+// 导出积分佣金红包记录
+export function exportLog(query) {
+  return request({
+    url: '/his/integralRedPacketLog/export',
+    method: 'get',
+    params: query
+  })
+}

+ 62 - 0
src/api/his/withdrawDetail.js

@@ -0,0 +1,62 @@
+import request from '@/utils/request'
+
+// 查询广告分佣列表
+export function listProfit(query) {
+  return request({
+    url: '/adv/profit/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询广告分佣详细
+export function getProfit(id) {
+  return request({
+    url: '/adv/profit/' + id,
+    method: 'get'
+  })
+}
+
+// 新增广告分佣
+export function addProfit(data) {
+  return request({
+    url: '/adv/profit',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改广告分佣
+export function updateProfit(data) {
+  return request({
+    url: '/adv/profit',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除广告分佣
+export function delProfit(id) {
+  return request({
+    url: '/adv/profit/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出广告分佣
+export function exportProfit(query) {
+  return request({
+    url: '/adv/profit/export',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询用户可提现 和 已提现总金额
+export function getWithFinishAndMayWithdraw(query) {
+  return request({
+    url: '/adv/profit/getWithFinishAndMayWithdraw',
+    method: 'get',
+    params: query
+  })
+}

+ 344 - 0
src/views/adv/profit/index.vue

@@ -0,0 +1,344 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="用户id" prop="userId">
+        <el-input
+          v-model="queryParams.userId"
+          placeholder="请输入用户id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="用户昵称" prop="nickName">
+        <el-input
+          v-model="queryParams.nickName"
+          placeholder="请输入用户昵称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="公司" prop="companyName">
+        <el-input
+          v-model="queryParams.companyName"
+          placeholder="请输入公司"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="分佣时间" prop="firstLoginTime">
+        <el-date-picker v-model="firstLoginTime" size="small" style="width: 220px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="changeLoginTime"></el-date-picker>
+      </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>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="primary"-->
+<!--          plain-->
+<!--          icon="el-icon-plus"-->
+<!--          size="mini"-->
+<!--          @click="handleAdd"-->
+<!--          v-hasPermi="['adv:profit: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="['adv:profit: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="['adv:profit:remove']"-->
+<!--        >删除</el-button>-->
+<!--      </el-col>-->
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          :loading="exportLoading"
+          @click="handleExport"
+          v-hasPermi="['adv:profit:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table border v-loading="loading" :data="profitList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="回调ID" align="center" prop="adTransId" />
+      <el-table-column label="结算总金额" align="center" prop="sumMoney" />
+      <el-table-column label="分佣时间" align="center" prop="createTime" />
+      <el-table-column label="用户昵称" align="center" prop="nickName" />
+      <el-table-column label="用户分润" align="center" prop="userMoney" />
+      <el-table-column label="公司" align="center" prop="companyName" />
+      <el-table-column label="公司分润" align="center" prop="companyMoney" />
+      <el-table-column label="互医分润" align="center" prop="huyiMoney" />
+      <el-table-column label="云联分润" align="center" prop="yunlianMoney" />
+<!--      <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="handleUpdate(scope.row)"-->
+<!--            v-hasPermi="['adv:profit:edit']"-->
+<!--          >修改</el-button>-->
+<!--          <el-button-->
+<!--            size="mini"-->
+<!--            type="text"-->
+<!--            icon="el-icon-delete"-->
+<!--            @click="handleDelete(scope.row)"-->
+<!--            v-hasPermi="['adv:profit:remove']"-->
+<!--          >删除</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"
+    />
+
+    <!-- 添加或修改广告分佣对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+<!--        <el-form-item label="广告回调唯一交易ID" prop="adTransId">-->
+<!--          <el-input v-model="form.adTransId" placeholder="请输入广告回调唯一交易ID" />-->
+<!--        </el-form-item>-->
+<!--        <el-form-item label="广告任务id" prop="adTaskId">-->
+<!--          <el-input v-model="form.adTaskId" placeholder="请输入广告任务id" />-->
+<!--        </el-form-item>-->
+        <el-form-item label="总金额" prop="sumMoney">
+          <el-input v-model="form.sumMoney" placeholder="请输入广告平台结算总金额" />
+        </el-form-item>
+        <el-form-item label="用户id" prop="userId">
+          <el-input v-model="form.userId" placeholder="请输入用户id" />
+        </el-form-item>
+        <el-form-item label="用户分润" prop="userMoney">
+          <el-input v-model="form.userMoney" placeholder="请输入用户分润" />
+        </el-form-item>
+        <el-form-item label="公司id" prop="companyId">
+          <el-input v-model="form.companyId" placeholder="请输入公司id" />
+        </el-form-item>
+        <el-form-item label="公司分润" prop="companyMoney">
+          <el-input v-model="form.companyMoney" placeholder="请输入公司分润" />
+        </el-form-item>
+        <el-form-item label="互医分润" prop="huyiMoney">
+          <el-input v-model="form.huyiMoney" placeholder="请输入互医分润" />
+        </el-form-item>
+        <el-form-item label="云联分润" prop="yunlianMoney">
+          <el-input v-model="form.yunlianMoney" placeholder="请输入云联分润" />
+        </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>
+  </div>
+</template>
+
+<script>
+import { listProfit, getProfit, delProfit, addProfit, updateProfit, exportProfit } from "@/api/adv/profit";
+
+export default {
+  name: "Profit",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 广告分佣表格数据
+      profitList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      firstLoginTime: null,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        userId: null,
+        nickName: null,
+        companyName: null,
+        sTime:null,
+        eTime:null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        adTransId: [
+          { required: true, message: "广告回调唯一交易ID不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    changeLoginTime(){
+      if(this.firstLoginTime!=null){
+        this.queryParams.sTime=this.firstLoginTime[0];
+        this.queryParams.eTime=this.firstLoginTime[1];
+      }else{
+        this.queryParams.sTime=null;
+        this.queryParams.eTime=null;
+      }
+    },
+    /** 查询广告分佣列表 */
+    getList() {
+      this.loading = true;
+      listProfit(this.queryParams).then(response => {
+        this.profitList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        adTransId: null,
+        adTaskId: null,
+        sumMoney: null,
+        userId: null,
+        userMoney: null,
+        companyId: null,
+        companyMoney: null,
+        huyiMoney: null,
+        yunlianMoney: null,
+        createTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.firstLoginTime = null;
+      this.queryParams.sTime = null;
+      this.queryParams.eTime = null;
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加广告分佣";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getProfit(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改广告分佣";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateProfit(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addProfit(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm('是否确认删除广告分佣编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delProfit(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有广告分佣数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          this.exportLoading = true;
+          return exportProfit(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+          this.exportLoading = false;
+        }).catch(() => {});
+    }
+  }
+};
+</script>

+ 227 - 0
src/views/his/statistics/commission.vue

@@ -0,0 +1,227 @@
+<template>
+  <div class="app-container">
+    <div class="app-content">
+      <div class="title">分佣统计</div>
+
+      <el-form class="search-form" :inline="true">
+        <!-- 快捷时间选择 -->
+        <el-form-item>
+          <el-select v-model="value" placeholder="请选择日期" @change="handleTypeChange">
+            <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+
+        <!-- 自定义时间范围 -->
+        <el-form-item v-if="value === '0'">
+          <el-date-picker
+            v-model="dateRange"
+            type="daterange"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            value-format="yyyy-MM-dd"
+            @change="handleDateRangeChange">
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item>
+          <el-button type="cyan" icon="el-icon-search" @click="getList">搜索</el-button>
+        </el-form-item>
+      </el-form>
+
+      <div class="data-box">
+        <div class="table-box">
+          <el-button
+            class="export"
+            size="small"
+            @click="handleExport"
+            v-hasPermi="['his:statistics:commissionExport']">
+            导出
+          </el-button>
+
+          <el-table
+            :data="list"
+            border
+            :summary-method="getSummaries"
+            show-summary
+            max-height="500"
+            style="width: 100%;">
+            <el-table-column prop="name" label="公司名称"></el-table-column>
+            <el-table-column prop="amountYuan" label="分佣金额(元)"></el-table-column>
+          </el-table>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { statistics,exportCommission } from "@/api/his/adv";
+import resize from '../../dashboard/mixins/resize'
+
+export default {
+  name: 'Index',
+  mixins: [resize],
+  data() {
+    return {
+      options: [
+        { value: '1', label: '今天' },
+        { value: '2', label: '昨天' },
+        { value: '3', label: '本周' },
+        { value: '4', label: '上周' },
+        { value: '5', label: '本月' },
+        { value: '6', label: '上月' },
+        { value: '7', label: '本季度' },
+        { value: '8', label: '上季度' },
+        { value: '9', label: '本年' },
+        { value: '10', label: '上年' },
+        { value: '0', label: '自定义' }  // 添加自定义选项
+      ],
+      value: '5',
+      dateRange: [],      // 自定义时间范围 [startTime, endTime]
+      startTime: '',      // 开始时间
+      endTime: '',        // 结束时间
+      list: []
+    }
+  },
+
+  created() {
+    this.getList();
+  },
+
+  methods: {
+    // 切换时间类型
+    handleTypeChange(val) {
+      if (val !== '0') {
+        this.dateRange = [];
+        this.startTime = '';
+        this.endTime = '';
+      }
+    },
+
+    // 自定义时间范围变化
+    handleDateRangeChange(val) {
+      if (val && val.length === 2) {
+        this.startTime = val[0];
+        this.endTime = val[1];
+      } else {
+        this.startTime = '';
+        this.endTime = '';
+      }
+    },
+
+    handleExport() {
+      // 校验自定义时间
+      if (this.value === '0' && (!this.startTime || !this.endTime)) {
+        this.$message.warning('请选择自定义时间范围');
+        return;
+      }
+
+      var data = {
+        type: this.value === '0' ? null : this.value,
+        startTime: this.startTime,
+        endTime: this.endTime
+      }
+      exportCommission(data).then((response) => {
+        this.download(response.msg);
+      });
+    },
+
+    getList() {
+      // 校验自定义时间
+      if (this.value === '0' && (!this.startTime || !this.endTime)) {
+        this.$message.warning('请选择自定义时间范围');
+        return;
+      }
+
+      var data = {
+        type: this.value === '0' ? null : this.value,
+        startTime: this.startTime,
+        endTime: this.endTime
+      }
+
+      statistics(data).then((response) => {
+        this.list = response.list;
+      });
+    },
+
+    getSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = '总计';
+          return;
+        }
+
+        const values = data.map(item => Number(item[column.property]));
+
+        if (!values.every(value => isNaN(value))) {
+          const sum = values.reduce((prev, curr) => {
+            const value = Number(curr);
+            if (!isNaN(value)) {
+              return prev + curr;
+            } else {
+              return prev;
+            }
+          }, 0);
+
+          // 保留两位小数
+          sums[index] = sum.toFixed(2) + ' 元';
+        } else {
+          sums[index] = '';
+        }
+      });
+
+      return sums;
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.app-container {
+  border: 1px solid #e6e6e6;
+  padding: 12px;
+
+  .app-content {
+    background-color: white;
+
+    .title {
+      padding: 20px 30px 0px 30px;
+      font-size: 18px;
+      font-weight: bold;
+      color: black;
+    }
+
+    .search-form {
+      margin: 20px 30px 0px 30px;
+    }
+
+    .data-box {
+      padding: 30px;
+      background-color: rgb(255, 255, 255);
+      height: 100%;
+
+      .el-select {
+        margin: 5px 10px;
+      }
+
+      .table-box {
+        margin-top: 15px;
+
+        .export {
+          float: right;
+          margin: 10px 0px;
+        }
+      }
+    }
+  }
+}
+</style>

+ 1 - 0
src/views/his/user/index.vue

@@ -132,6 +132,7 @@
       </el-table-column>
       <el-table-column label="手机号码" align="center" prop="phone" width="150px" />
       <el-table-column label="用户积分" align="center" prop="integral" />
+      <el-table-column label="可提现佣金" align="center" prop="mayWithdraw" />
       <el-table-column label="用户状态" align="center" prop="status" >
          <template slot-scope="scope">
               <dict-tag :options="userOptions" :value="scope.row.status"/>

+ 497 - 0
src/views/his/withdrawDetail/index.vue

@@ -0,0 +1,497 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="用户id" prop="userId">
+        <el-input
+          v-model="queryParams.userId"
+          placeholder="请输入用户id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="用户昵称" prop="nickName">
+        <el-input
+          v-model="queryParams.nickName"
+          placeholder="请输入用户昵称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="批次单号" prop="outBatchNo">
+        <el-input
+          v-model="queryParams.outBatchNo"
+          placeholder="请输入批次单号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="订单号" prop="batchId">
+        <el-input
+          v-model="queryParams.batchId"
+          placeholder="请输入微信批次单号(订单号)"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="提现金额(元)" label-width="100px">
+        <div class="amount-range">
+          <el-input
+            v-model="queryParams.minAmount"
+            placeholder=""
+            clearable
+            size="small"
+            style="width: 140px"
+            @keyup.enter.native="handleQuery"
+            @input="handleAmountInput('minAmount', $event)"
+          />
+          <span class="separator">-</span>
+          <el-input
+            v-model="queryParams.maxAmount"
+            placeholder=""
+            clearable
+            size="small"
+            style="width: 140px"
+            @keyup.enter.native="handleQuery"
+            @input="handleAmountInput('maxAmount', $event)"
+          />
+        </div>
+      </el-form-item>
+      <!-- 提现时间范围 -->
+      <el-form-item label="提现时间">
+        <el-date-picker
+          v-model="timeRange"
+          type="datetimerange"
+          range-separator="至"
+          start-placeholder="开始时间"
+          end-placeholder="结束时间"
+          :default-time="['00:00:00', '23:59:59']"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          size="small"
+          style="width: 510px"
+        />
+      </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
+          <el-option label="发送成功" :value="1" />
+          <el-option label="领取中" value="0" />
+          <el-option label="已取消" :value="-2" />
+          <el-option label="发送失败" :value="-1" />
+
+        </el-select>
+      </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>
+      </el-form-item>
+    </el-form>
+
+    <el-form :model="queryParams" ref="totalMoney" :inline="true" v-show="showSearch" label-width="100px">
+      <el-form-item label="可提现总金额" prop="totalMayWithdraw">
+        <el-input
+          v-model="totalMoney.totalMayWithdraw"
+          placeholder=""
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+          disabled
+        />
+      </el-form-item>
+
+      <el-form-item label="已提现总金额" prop="totalWithdrawFinish">
+        <el-input
+          v-model="totalMoney.totalWithdrawFinish"
+          placeholder=""
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+          disabled
+        />
+      </el-form-item>
+      <el-form-item label="领取中金额" prop="withdrawMoney">
+        <el-input
+          v-model="totalMoney.withdrawMoney"
+          placeholder=""
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+          disabled
+        />
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          :loading="exportLoading"
+          @click="handleExport"
+          v-hasPermi="['his:integralRedPacketLog:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table border v-loading="loading" :data="logList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="日志Id" align="center" prop="logId" />
+      <el-table-column label="用户id" align="center" prop="userId" />
+      <el-table-column label="用户昵称" align="center" prop="nickName" />
+      <el-table-column label="提现金额" align="center" prop="amount" />
+      <el-table-column label="提现时间" align="center" prop="createTime" />
+      <el-table-column label="批次单号" align="center" prop="outBatchNo" width="250px"/>
+      <el-table-column label="微信批次单号" align="center" prop="batchId" />
+      <el-table-column label="状态" align="center" prop="status" >
+        <template slot-scope="{ row }">
+          <el-tag :type="getStatusType(row.status)" size="small">
+            {{ getStatusText(row.status) }}
+          </el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="退佣状态" align="center" prop="returnedStatus" >
+        <template slot-scope="{ row }">
+          <span :class="row.returnedStatus === 1 ? 'status-yes' : 'status-no'">
+            {{ row.returnedStatus === 1 ? '是' : '否' }}
+          </span>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+  </div>
+</template>
+
+<script>
+import {
+  listProfit,
+  getProfit,
+  delProfit,
+  addProfit,
+  updateProfit,
+  exportProfit,
+  getWithFinishAndMayWithdraw
+} from "@/api/his/withdrawDetail";
+import { listLog, getLog, delLog, addLog, updateLog, exportLog } from "@/api/his/integralRedPacketLog";
+
+export default {
+  name: "Profit",
+  data() {
+    return {
+      minAmount: undefined,
+      maxAmount: undefined,
+      timeRange: [],
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 广告分佣表格数据
+      logList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      firstLoginTime: null,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        userId: null,
+        nickName: null,
+        beginTime:null,
+        endTime:null,
+        minAmount: null,
+        maxAmount: null,
+        outBatchNo: null,
+        batchId: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        adTransId: [
+          { required: true, message: "广告回调唯一交易ID不能为空", trigger: "blur" }
+        ],
+      },
+      // 可提现总金额 和 已提现总金额
+      totalMoney: {
+        totalWithdrawFinish: null,
+        totalMayWithdraw: null,
+        withdrawMoney: null
+      },
+    };
+  },
+  created() {
+    this.getList();
+    this.selectMoney();
+  },
+  methods: {
+    // 金额输入校验(只允许数字和小数点,最多两位小数)
+    handleAmountInput(field, value) {
+      // 移除非数字和非小数点字符
+      let newValue = value.replace(/[^\d.]/g, '')
+
+      // 只允许一个小数点
+      const parts = newValue.split('.')
+      if (parts.length > 2) {
+        newValue = parts[0] + '.' + parts.slice(1).join('')
+      }
+
+      // 限制最多两位小数
+      if (parts[1] && parts[1].length > 2) {
+        newValue = parts[0] + '.' + parts[1].substring(0, 2)
+      }
+
+      // 以0开头但不是0.的情况处理
+      if (newValue.startsWith('0') && newValue.length > 1 && !newValue.startsWith('0.')) {
+        newValue = newValue.substring(1)
+      }
+
+      this.queryParams[field] = newValue === '' ? null : newValue
+    },
+
+
+    getStatusText(status) {
+      const map = {
+        1: '发送成功',
+        '-3': '取消中',
+        '-2': '已取消',
+        '-1': '发送失败',
+        0: '领取中'
+      }
+      return map[status] || '领取中' // 其余状态默认显示领取中
+    },
+    getStatusType(status) {
+      const map = {
+        1: 'success',      // 绿色
+        '-3': 'warning',   // 黄色
+        '-2': 'info',      // 灰色
+        '-1': 'danger'     // 红色
+      }
+      return map[status] || '' // 领取中为默认蓝色/白色
+    },
+    changeLoginTime(){
+      if(this.firstLoginTime!=null){
+        this.queryParams.sTime=this.firstLoginTime[0];
+        this.queryParams.eTime=this.firstLoginTime[1];
+      }else{
+        this.queryParams.sTime=null;
+        this.queryParams.eTime=null;
+      }
+    },
+    /** 查询广告分佣列表 */
+    getList() {
+      this.loading = true;
+      const params = this.queryParams
+      const minAmount = this.queryParams.minAmount ? parseFloat(this.queryParams.minAmount) : null
+      const maxAmount = this.queryParams.maxAmount ? parseFloat(this.queryParams.maxAmount) : null
+
+      // 校验范围逻辑
+      if (minAmount !== null && maxAmount !== null && minAmount > maxAmount) {
+        this.$message.warning('最小金额不能大于最大金额')
+        return
+      }
+
+      if (minAmount !== null) {
+        params.minAmount = minAmount
+      }
+      if (maxAmount !== null) {
+        params.maxAmount = maxAmount
+      }
+      // 时间范围处理
+      if (this.timeRange && this.timeRange.length>0) {
+        params.beginTime = this.timeRange[0]
+        params.endTime = this.timeRange[1]
+      } else {
+        this.timeRange= []
+      }
+      listLog(params).then(response => {
+        this.logList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    /** 查询可提现总金额 和 已提现总金额 */
+    selectMoney() {
+      getWithFinishAndMayWithdraw().then(response => {
+        this.totalMoney.totalMayWithdraw = response.totalMayWithdraw;
+        this.totalMoney.totalWithdrawFinish = response.totalWithdrawFinish;
+        this.totalMoney.withdrawMoney = response.withdrawMoney;
+      })
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        adTransId: null,
+        adTaskId: null,
+        sumMoney: null,
+        userId: null,
+        userMoney: null,
+        companyId: null,
+        companyMoney: null,
+        huyiMoney: null,
+        yunlianMoney: null,
+        createTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.selectMoney();
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams = {
+        userId : null,
+        nickName : null,
+        beginTime : null,
+        endTime : null,
+        minAmount : null,
+        maxAmount : null,
+        outBatchNo : null,
+        batchId : null,
+        pageNum : 1,
+        pageSize : 10,
+      }
+      this.timeRange = [];
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加广告分佣";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getProfit(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改广告分佣";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateProfit(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addProfit(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm('是否确认删除广告分佣编号为"' + ids + '"的数据项?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function() {
+        return delProfit(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+
+      const params = this.queryParams
+      const minAmount = this.queryParams.minAmount ? parseFloat(this.queryParams.minAmount) : null
+      const maxAmount = this.queryParams.maxAmount ? parseFloat(this.queryParams.maxAmount) : null
+
+      // 校验范围逻辑
+      if (minAmount !== null && maxAmount !== null && minAmount > maxAmount) {
+        this.$message.warning('最小金额不能大于最大金额')
+        return
+      }
+
+      if (minAmount !== null) {
+        params.minAmount = minAmount
+      }
+      if (maxAmount !== null) {
+        params.maxAmount = maxAmount
+      }
+      // 时间范围处理
+      if (this.timeRange && this.timeRange.length>0) {
+        params.beginTime = this.timeRange[0]
+        params.endTime = this.timeRange[1]
+      } else {
+        this.timeRange= []
+      }
+      this.$confirm('是否确认导出所有提现数据项?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        this.exportLoading = true;
+        return exportLog(params);
+      }).then(response => {
+        this.download(response.msg);
+        this.exportLoading = false;
+      }).catch(() => {});
+    }
+  }
+};
+</script>
+<style scoped>
+.amount-range {
+  display: flex;
+  align-items: center;
+}
+.separator {
+  margin: 0 8px;
+  color: #909399;
+}
+</style>

+ 385 - 0
src/views/his/withdrawDetail/lockdownUser.vue

@@ -0,0 +1,385 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="用户ID" prop="userId">
+        <el-input
+          v-model="queryParams.userId"
+          placeholder="请输入用户ID"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="用户昵称" prop="nickName">
+        <el-input
+          v-model="queryParams.nickName"
+          placeholder="请输入用户昵称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="连续天数" prop="consecutiveDays">
+        <el-input
+          v-model="queryParams.consecutiveDays"
+          placeholder="请输入连续天数"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="开始日期" prop="startDate">
+        <el-date-picker clearable size="small"
+          v-model="queryParams.startDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择连续开始日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="结束日期" prop="endDate">
+        <el-date-picker clearable size="small"
+          v-model="queryParams.endDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择连续结束日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="提现次数" prop="withdrawCount">
+        <el-input
+          v-model="queryParams.withdrawCount"
+          placeholder="请输入连续期间提现次数"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="连续金额" prop="totalAmount">
+        <el-input
+          v-model="queryParams.totalAmount"
+          placeholder="请输入连续期间提现总金额"
+          clearable
+          size="small"
+          @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>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdateUser"
+          v-hasPermi="['his:user:disabledUsers']"
+        >禁用</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          :loading="exportLoading"
+          @click="handleExport"
+          v-hasPermi="['his:consecutiveWithdrawRecord:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table border v-loading="loading" :data="recordList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="用户ID" align="center" prop="userId" />
+      <el-table-column label="用户昵称" align="center" prop="nickName" />
+      <el-table-column label="连续天数" align="center" prop="consecutiveDays" />
+      <el-table-column label="连续开始日期" align="center" prop="startDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.startDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="连续结束日期" align="center" prop="endDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="连续期间提现次数" align="center" prop="withdrawCount" />
+      <el-table-column label="连续期间提现总金额" align="center" prop="totalAmount" />
+      <el-table-column label="备注" align="center" prop="remark" />
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改连续提现记录对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="用户ID" prop="userId">
+          <el-input v-model="form.userId" placeholder="请输入用户ID" />
+        </el-form-item>
+        <el-form-item label="连续天数" prop="consecutiveDays">
+          <el-input v-model="form.consecutiveDays" placeholder="请输入连续天数" />
+        </el-form-item>
+        <el-form-item label="连续开始日期" prop="startDate">
+          <el-date-picker clearable size="small"
+            v-model="form.startDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择连续开始日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="连续结束日期" prop="endDate">
+          <el-date-picker clearable size="small"
+            v-model="form.endDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择连续结束日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="连续期间提现次数" prop="withdrawCount">
+          <el-input v-model="form.withdrawCount" placeholder="请输入连续期间提现次数" />
+        </el-form-item>
+        <el-form-item label="连续期间提现总金额" prop="totalAmount">
+          <el-input v-model="form.totalAmount" placeholder="请输入连续期间提现总金额" />
+        </el-form-item>
+
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </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="updateUser.title" :visible.sync="updateUser.open" width="500px" append-to-body>
+      <el-form label-width="80px">
+        <el-form-item label="禁用备注" prop="remark">
+          <el-input v-model="userRemark" placeholder="请输入禁用备注" />
+        </el-form-item>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitUserForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listRecord, getRecord, delRecord, addRecord, updateRecord, exportRecord } from "@/api/his/consecutiveWithdrawRecord";
+import { disabledUsers } from "@/api/his/user";
+
+export default {
+  name: "Record",
+  data() {
+    return {
+      userRemark: "",
+      updateUser:{
+        title:"",
+        open:false
+      },
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 选中数组
+      ids: [],
+      userIds: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 连续提现记录表格数据
+      recordList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        userId: null,
+        consecutiveDays: null,
+        startDate: null,
+        endDate: null,
+        withdrawCount: null,
+        totalAmount: null,
+        status: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        userId: [
+          { required: true, message: "用户ID不能为空", trigger: "blur" }
+        ],
+        consecutiveDays: [
+          { required: true, message: "连续天数不能为空", trigger: "blur" }
+        ],
+        startDate: [
+          { required: true, message: "连续开始日期不能为空", trigger: "blur" }
+        ],
+        endDate: [
+          { required: true, message: "连续结束日期不能为空", trigger: "blur" }
+        ],
+        withdrawCount: [
+          { required: true, message: "连续期间提现次数不能为空", trigger: "blur" }
+        ],
+        totalAmount: [
+          { required: true, message: "连续期间提现总金额不能为空", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询连续提现记录列表 */
+    getList() {
+      this.loading = true;
+      listRecord(this.queryParams).then(response => {
+        this.recordList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        userId: null,
+        consecutiveDays: null,
+        startDate: null,
+        endDate: null,
+        withdrawCount: null,
+        totalAmount: null,
+        status: 0,
+        remark: null,
+        createTime: null,
+        updateTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.userIds = selection.map(item => item.userId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加连续提现记录";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getRecord(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改连续提现记录";
+      });
+    },
+    /** 修改按钮操作 */
+    handleUpdateUser() {
+      this.updateUser.open = true;
+      this.updateUser.title = "禁用用户";
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateRecord(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addRecord(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    submitUserForm(){
+      const params = {userIds: this.userIds,remark: this.userRemark};
+      disabledUsers(params).then(response => {
+        this.msgSuccess("禁用成功");
+        this.updateUser.open = false;
+        this.getList();
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm('是否确认删除连续提现记录编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delRecord(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有连续提现记录数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          this.exportLoading = true;
+          return exportRecord(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+          this.exportLoading = false;
+        }).catch(() => {});
+    }
+  }
+};
+</script>

+ 133 - 10
src/views/system/config/integralConfig.vue

@@ -138,17 +138,140 @@
             </el-tooltip>
           </el-form-item>
         </el-col>
+        <el-col :span="12">
+          <el-form-item label="单日可获总积分类型" prop="integralTypeByOneDay">
+            <el-select v-model="form11.integralTypeByOneDay" multiple placeholder="请选择类型" filterable clearable size="small">
+              <el-option
+                v-for="dict in integralLogTypeOptions"
+                :key="dict.dictValue"
+                :label="dict.dictLabel"
+                :value="dict.dictValue"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="用户分润比例">
+            <el-input-number v-model="form11.integralUserRatio" :precision="2" :step="0.1" :controls="true"></el-input-number>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item  label="公司分润比例" prop="integralCompanyRatio">
+            <el-input-number  v-model="form11.integralCompanyRatio" :precision="2" :step="0.1" :controls="true" ></el-input-number>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item  label="互医分润比例" prop="integralHuYiRatio">
+            <el-input-number  v-model="form11.integralHuYiRatio" :precision="2" :step="0.1" :controls="true" ></el-input-number>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item  label="云联分润比例" prop="integralYunLianRatio">
+            <el-tooltip class="item" effect="dark" content="广告联盟用户保底收益" >
+              <el-input-number  v-model="form11.integralYunLianRatio" :precision="2" :step="0.1" :controls="true" ></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+        </el-col>
+        <el-form-item  label="用户保底收益" prop="minimumIntegral">
+          <el-tooltip class="item" effect="dark" content="广告联盟用户保底收益" >
+            <el-input-number  v-model="form11.minimumIntegral"   ></el-input-number>
+          </el-tooltip>
+        </el-form-item>
       </el-row>
-      <el-form-item label="单日可获总积分类型" prop="integralTypeByOneDay">
-        <el-select v-model="form11.integralTypeByOneDay" multiple placeholder="请选择类型" filterable clearable size="small">
-          <el-option
-            v-for="dict in integralLogTypeOptions"
-            :key="dict.dictValue"
-            :label="dict.dictLabel"
-            :value="dict.dictValue"
-          />
-        </el-select>
-      </el-form-item>
+
+      <!-- 积分提现商户配置 - 独立框 -->
+      <el-card class="box-card" style="margin-bottom: 20px;">
+        <div slot="header" class="clearfix">
+          <span>积分提现商户配置</span>
+        </div>
+        <div class="text">
+          <el-form-item label="一次最大提现金额(元)" prop="maxApplicationAmount">
+            <el-input-number
+              v-model="form11.maxApplicationAmount"
+              :min="0.10"
+              :max="999999.99"
+              :precision="2"
+              :step="0.01"
+              placeholder="最大提现金额"
+              controls-position="right"
+
+            />
+          </el-form-item>
+          <el-form-item label="一天允提现次数(次)" prop="withdrawNum">
+            <el-input-number
+              v-model="form11.withdrawNum"
+              :min="0"
+              :max="99"
+              :precision="0"
+              :step="1"
+              placeholder="提现次数"
+              controls-position="right"
+
+            />
+          </el-form-item>
+          <el-form-item label="连续提现封控(天)" prop="limitDayNum">
+            <el-input-number
+              v-model="form11.limitDayNum"
+              :min="1"
+              :max="99"
+              :precision="0"
+              :step="1"
+              placeholder="连续提现几天封控"
+              controls-position="right"
+
+            />
+          </el-form-item>
+          <el-form-item label="连续提现累计金额封控(元)" prop="limitAmount">
+            <el-input-number
+              v-model="form11.limitAmount"
+              :min="0.10"
+              :max="999999.99"
+              :precision="2"
+              :step="0.01"
+              placeholder="连续提现累计金额封控"
+              controls-position="right"
+            />
+          </el-form-item>
+          <el-form-item label="佣金提现接口类型" prop="isNew">
+            <el-radio-group v-model="form11.isNew">
+              <el-radio label="0">商家转账到零钱(旧)</el-radio>
+              <el-radio label="1">商家转账(新)</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <el-form-item label="商户号" prop="mchId">
+            <el-input v-model="form11.mchId" placeholder="请输入商户号"></el-input>
+          </el-form-item>
+          <el-form-item label="商户密钥" prop="mchKey">
+            <el-input v-model="form11.mchKey" placeholder="请输入商户密钥" show-password></el-input>
+          </el-form-item>
+          <el-form-item label="p12证书路径" prop="keyPath">
+            <el-input v-model="form11.keyPath" placeholder="请输入p12证书路径"></el-input>
+          </el-form-item>
+          <el-form-item label="apiV3密钥" prop="apiV3Key">
+            <el-input v-model="form11.apiV3Key" placeholder="请输入apiV3密钥" show-password></el-input>
+          </el-form-item>
+          <el-form-item label="公钥ID" prop="publicKeyId">
+            <el-input v-model="form11.publicKeyId" placeholder="请输入公钥ID"></el-input>
+          </el-form-item>
+          <el-form-item label="公钥证书路径" prop="publicKeyPath">
+            <el-input v-model="form11.publicKeyPath" placeholder="请输入公钥证书路径"></el-input>
+          </el-form-item>
+          <el-form-item label="私钥路径" prop="privateKeyPath">
+            <el-input v-model="form11.privateKeyPath" placeholder="请输入私钥路径"></el-input>
+          </el-form-item>
+          <el-form-item label="证书路径" prop="privateCertPath">
+            <el-input v-model="form11.privateCertPath" placeholder="请输入证书路径"></el-input>
+          </el-form-item>
+          <el-form-item label="回调地址" prop="notifyUrl">
+            <el-input v-model="form11.notifyUrl" placeholder="请输入回调地址"></el-input>
+          </el-form-item>
+
+        </div>
+      </el-card>
+
       <div style="display: flex; justify-content: flex-end;">
         <el-button type="primary" :disabled="saveLoading" :loading="saveLoading" @click="submitForm11">提  交</el-button>
       </div>