Jelajahi Sumber

1.好友欢迎语新增授权红包 2.授权红包 3.授权红包领取记录

wjj 1 bulan lalu
induk
melakukan
778374e7a0

+ 53 - 0
src/api/qw/packet.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询授权手机号红包配置列表
+export function listPacket(query) {
+  return request({
+    url: '/qw/packet/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询授权手机号红包配置详细
+export function getPacket(id) {
+  return request({
+    url: '/qw/packet/' + id,
+    method: 'get'
+  })
+}
+
+// 新增授权手机号红包配置
+export function addPacket(data) {
+  return request({
+    url: '/qw/packet',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改授权手机号红包配置
+export function updatePacket(data) {
+  return request({
+    url: '/qw/packet',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除授权手机号红包配置
+export function delPacket(id) {
+  return request({
+    url: '/qw/packet/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出授权手机号红包配置
+export function exportPacket(query) {
+  return request({
+    url: '/qw/packet/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
src/api/qw/record.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询绑定手机号红包领取记录列表
+export function listRecord(query) {
+  return request({
+    url: '/qw/record/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询绑定手机号红包领取记录详细
+export function getRecord(id) {
+  return request({
+    url: '/qw/record/' + id,
+    method: 'get'
+  })
+}
+
+// 新增绑定手机号红包领取记录
+export function addRecord(data) {
+  return request({
+    url: '/qw/record',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改绑定手机号红包领取记录
+export function updateRecord(data) {
+  return request({
+    url: '/qw/record',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除绑定手机号红包领取记录
+export function delRecord(id) {
+  return request({
+    url: '/qw/record/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出绑定手机号红包领取记录
+export function exportRecord(query) {
+  return request({
+    url: '/qw/record/export',
+    method: 'get',
+    params: query
+  })
+}

+ 80 - 1
src/views/qw/friendWelcome/indexNew.vue

@@ -201,6 +201,7 @@
                     <span v-if="item.msgtype === 'video'">【视频】: {{ item.video.url }}</span>
                     <span v-if="item.msgtype === 'link'">【链接】: {{ item.link.title }}-{{item.link.desc}}</span>
                     <span v-if="item.msgtype === 'miniprogram'">【小程序】: {{ item.miniprogram.title }}</span>
+                    <span v-if="item.msgtype === 'redPacket'">【授权红包】: {{ item.redPacket.name }}</span>
                     </div>
                     <div style="  display: flex;gap: 10px;">
                       <el-button
@@ -237,6 +238,9 @@
                 <el-dropdown-item command="miniprogram">
                   <i class="el-icon-link" style="margin-right: 10px;"></i>小程序
                 </el-dropdown-item>
+                <el-dropdown-item command="redPacket">
+                  <i class="el-icon-link" style="margin-right: 10px;"></i>授权红包
+                </el-dropdown-item>
               </el-dropdown-menu>
 
               <span class="el-dropdown-link">
@@ -329,6 +333,7 @@
                                     <span v-if="attachment.msgtype === 'video'">【视频】: {{ attachment.video.url }}</span>
                                     <span v-if="attachment.msgtype === 'link'">【链接】: {{ attachment.link.title }}-{{attachment.link.desc}}</span>
                                     <span v-if="attachment.msgtype === 'miniprogram'">【小程序】: {{ attachment.miniprogram.title }}</span>
+                                    <span v-if="attachment.msgtype === 'redPacket'">【授权红包】: {{ attachment.redPacket.name }}</span>
                                   </div>
                                   <div style="  display: flex;gap: 10px;">
                                     <el-button
@@ -365,6 +370,9 @@
                               <el-dropdown-item command="miniprogram">
                                 <i class="el-icon-link" style="margin-right: 10px;"></i>小程序
                               </el-dropdown-item>
+                              <el-dropdown-item command="redPacket">
+                                <i class="el-icon-link" style="margin-right: 10px;"></i>授权红包
+                              </el-dropdown-item>
                             </el-dropdown-menu>
 
                             <span class="el-dropdown-link">
@@ -530,6 +538,27 @@
           <!--            <el-input v-model="fileFrom.linkUrl" :rows="2"  placeholder="选择了课程小节会自动设置地址" />-->
           <!--          </el-form-item>-->
         </div>
+        <div v-if="welcomeItem.type==='redPacket'">
+          <el-card class="box-card">
+            <el-form-item label="红包名称">
+              <el-select v-model="redPacket.id"
+                         placeholder="请选择红包" size="mini"
+                         @change="getRedPacketStatus(redPacket.id)">
+                <el-option
+                  v-for="dict in packetList"
+                  :key="dict.id"
+                  :label="dict.name"
+                  :value="dict.id"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="福袋状态">
+              <el-tag :type="redPacket.status == 1 ? 'success' : 'danger'">
+                {{ redPacket.status == 1 ? '启用' : '禁用' }}
+              </el-tag>
+            </el-form-item>
+          </el-card>
+        </div>
       </el-form>
       <div slot="footer" class="dialog-footer" style="text-align: center">
         <el-button type="primary" @click="confirmUpload">确定</el-button>
@@ -548,11 +577,19 @@ import ImageUpload from '@/views/qw/material/ImageUpload.vue'
 import { getQwAllUserList } from '@/api/company/companyUser'
 import { getMyQwUserList,getMyQwCompanyList } from "@/api/qw/user";
 import {courseList, videoList} from "@/api/qw/sop";
+import { listPacket } from "@/api/qw/packet";
+import { status } from "nprogress";
 export default {
   name: "FriendWelcome",
   components: { ImageUpload, qwUserList,ImageUploadWeclome},
   data() {
     return {
+      redPacket:{
+        id: null,
+        name: null,
+        status: null,
+      },
+      packetList:[],
       // 遮罩层
       loading: true,
       // 导出遮罩层
@@ -686,6 +723,7 @@ export default {
     };
   },
   created() {
+    this.getRedPacketList();
     //账号列表
 
 
@@ -714,6 +752,23 @@ export default {
     }
   },
   methods: {
+    /** 查询授权手机号红包配置列表 */
+    getRedPacketList() {
+      listPacket(this.queryParams).then(response => {
+        this.packetList = response.rows;
+      });
+    },
+    getRedPacketStatus(id){
+      const selectedRedPacket = this.packetList.find(item => item.id === id);
+      if (selectedRedPacket) {
+        this.redPacket.status = selectedRedPacket.status;
+        this.redPacket.name = selectedRedPacket.name; // 自动填充标题
+      } else {
+        // 若未找到对应直播间,清空标题和封面(可选)
+        this.redPacket.status = null;
+        this.redPacket.name = null;
+      }
+    },
     updateCorpId(){
         this.getList();
         getQwAllUserList(this.queryParams.corpId).then(response => {
@@ -832,6 +887,8 @@ export default {
           return '添加链接';
         case 'miniprogram':
           return '添加小程序';
+        case 'redPacket':
+          return '添加授权红包';  
       }
     },
 
@@ -958,6 +1015,12 @@ export default {
           this.videoList = response.list;
         });
 
+      } else if (item.msgtype === "redPacket") {
+        this.welcomeItem.type = "redPacket";
+        this.redPacket.id = item.id;
+        this.redPacket.name = item.name;
+        this.redPacket.status = item.status;
+        this.getRedPacketStatus(item.redPacket.id);
       }
 
 
@@ -973,6 +1036,8 @@ export default {
           return '编辑链接';
         case 'miniprogram':
           return '编辑小程序';
+        case 'redPacket':
+          return '编辑授权红包';    
       }
     },
 
@@ -1041,6 +1106,16 @@ export default {
             expiresDays:this.fileFrom.expiresDays,
           }
         };
+      } else if (type === "redPacket") {
+        attachment = {
+          msgtype: 'redPacket',
+          redPacket: {
+            id: this.redPacket.id,
+            name: this.redPacket.name,
+            status: this.redPacket.status,
+          }
+        };
+
       }
 
       if (itemIndex === -1) {
@@ -1094,7 +1169,11 @@ export default {
         miniprogramPicUrl:null,
         miniprogramAppid:null,
       };
-
+      this.redPacket = {
+        id: null,
+        name: null,
+        status: null,
+      }
       this.welcomeItem={
         open: false,
         title: '',

+ 309 - 0
src/views/qw/packet/index.vue

@@ -0,0 +1,309 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="红包名称" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入红包名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
+          <el-option
+            v-for="dict in statusOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </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-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="['qw:packet: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="['qw:packet: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="['qw:packet: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="['qw:packet:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table border v-loading="loading" :data="packetList" @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="name" />
+      <el-table-column label="状态" align="center" prop="status" >
+        <template slot-scope="scope">
+          <dict-tag :options="statusOptions" :value="scope.row.status"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="创建人" align="center" prop="createBy" />
+      <el-table-column label="红包金额" align="center" prop="amount" />
+      <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="['qw:packet:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['qw:packet: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="红包名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入授权红包名称" />
+        </el-form-item>
+        <el-form-item label="红包金额" prop="amount">
+          <el-input-number v-model="form.amount" :precision="1" :step="1" :min="0.1" :max="5" />
+        </el-form-item>
+        <el-form-item label="状态">
+          <el-radio-group v-model="form.status">
+            <el-radio v-for="dict in statusOptions" :key="dict.dictValue" :label="dict.dictValue">{{dict.dictLabel}}</el-radio>
+          </el-radio-group>
+        </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 { listPacket, getPacket, delPacket, addPacket, updatePacket, exportPacket } from "@/api/qw/packet";
+
+export default {
+  name: "Packet",
+  data() {
+    return {
+      // 添加固定的奖励类型选项
+      typeOptions: [
+        { dictValue: '1', dictLabel: '定值' },
+        { dictValue: '2', dictLabel: '随机' }
+      ],
+      statusOptions: [
+        { dictValue: '1', dictLabel: '正常' },
+        { dictValue: '0', dictLabel: '禁止' }
+      ],
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 授权手机号红包配置表格数据
+      packetList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        name: null,
+        status: null,
+        createById: null,
+        amount: null,
+        isDel: null,
+        companyId: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询授权手机号红包配置列表 */
+    getList() {
+      this.loading = true;
+      listPacket(this.queryParams).then(response => {
+        this.packetList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        name: null,
+        status: 0,
+        createBy: null,
+        createById: null,
+        amount: null,
+        createTime: null,
+        updateTime: null,
+        isDel: null,
+        companyId: 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.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
+      getPacket(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) {
+            updatePacket(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addPacket(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 delPacket(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有授权手机号红包配置数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          this.exportLoading = true;
+          return exportPacket(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+          this.exportLoading = false;
+        }).catch(() => {});
+    }
+  }
+};
+</script>

+ 464 - 0
src/views/qw/record/index.vue

@@ -0,0 +1,464 @@
+<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="userName">
+        <el-input
+          v-model="queryParams.userName"
+          placeholder="请输入领取用户名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="授权手机号红包id" prop="redPacketId">
+        <el-input
+          v-model="queryParams.redPacketId"
+          placeholder="请输入授权手机号红包id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="销售ID" prop="companyUserId">
+        <el-input
+          v-model="queryParams.companyUserId"
+          placeholder="请输入销售ID"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="公司ID" prop="companyId">
+        <el-input
+          v-model="queryParams.companyId"
+          placeholder="请输入公司ID"
+          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="amount">
+        <el-input
+          v-model="queryParams.amount"
+          placeholder="请输入红包金额"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="发放时间" prop="sendTime">
+        <el-date-picker clearable size="small"
+          v-model="queryParams.sendTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择发放时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="领取时间" prop="collectTime">
+        <el-date-picker clearable size="small"
+          v-model="queryParams.collectTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择领取时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="领取状态(0-已发放 1-已领取 2-已失效)" prop="collectType">
+        <el-select v-model="queryParams.collectType" placeholder="请选择领取状态(0-已发放 1-已领取 2-已失效)" clearable size="small">
+          <el-option label="请选择字典生成" value="" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="销售企微用户id" prop="qwUserId">
+        <el-input
+          v-model="queryParams.qwUserId"
+          placeholder="请输入销售企微用户id"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="销售企微用户名" prop="qwUserName">
+        <el-input
+          v-model="queryParams.qwUserName"
+          placeholder="请输入销售企微用户名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="领取手机号" prop="phone">
+        <el-input
+          v-model="queryParams.phone"
+          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="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['qw:record: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="['qw:record: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="['qw:record: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="['qw:record: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="领取手机号" align="center" prop="id" />
+      <el-table-column label="领取用户id" align="center" prop="userId" />
+      <el-table-column label="领取用户名称" align="center" prop="userName" />
+      <el-table-column label="授权手机号红包id" align="center" prop="redPacketId" />
+      <el-table-column label="销售ID" align="center" prop="companyUserId" />
+      <el-table-column label="公司ID" align="center" prop="companyId" />
+      <el-table-column label="公司名称" align="center" prop="companyName" />
+      <el-table-column label="红包金额" align="center" prop="amount" />
+      <el-table-column label="发放时间" align="center" prop="sendTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.sendTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="领取时间" align="center" prop="collectTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.collectTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="领取状态(0-已发放 1-已领取 2-已失效)" align="center" prop="collectType" />
+      <el-table-column label="发送链接" align="center" prop="sendLink" />
+      <el-table-column label="销售企微用户id" align="center" prop="qwUserId" />
+      <el-table-column label="销售企微用户名" align="center" prop="qwUserName" />
+      <el-table-column label="领取手机号" align="center" prop="phone" />
+      <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="['qw:record:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['qw:record: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="userId">
+          <el-input v-model="form.userId" placeholder="请输入领取用户id" />
+        </el-form-item>
+        <el-form-item label="领取用户名称" prop="userName">
+          <el-input v-model="form.userName" placeholder="请输入领取用户名称" />
+        </el-form-item>
+        <el-form-item label="授权手机号红包id" prop="redPacketId">
+          <el-input v-model="form.redPacketId" placeholder="请输入授权手机号红包id" />
+        </el-form-item>
+        <el-form-item label="销售ID" prop="companyUserId">
+          <el-input v-model="form.companyUserId" placeholder="请输入销售ID" />
+        </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="companyName">
+          <el-input v-model="form.companyName" placeholder="请输入公司名称" />
+        </el-form-item>
+        <el-form-item label="红包金额" prop="amount">
+          <el-input v-model="form.amount" placeholder="请输入红包金额" />
+        </el-form-item>
+        <el-form-item label="发放时间" prop="sendTime">
+          <el-date-picker clearable size="small"
+            v-model="form.sendTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择发放时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="领取时间" prop="collectTime">
+          <el-date-picker clearable size="small"
+            v-model="form.collectTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择领取时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="领取状态(0-已发放 1-已领取 2-已失效)" prop="collectType">
+          <el-select v-model="form.collectType" placeholder="请选择领取状态(0-已发放 1-已领取 2-已失效)">
+            <el-option label="请选择字典生成" value="" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="发送链接" prop="sendLink">
+          <el-input v-model="form.sendLink" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="销售企微用户id" prop="qwUserId">
+          <el-input v-model="form.qwUserId" placeholder="请输入销售企微用户id" />
+        </el-form-item>
+        <el-form-item label="销售企微用户名" prop="qwUserName">
+          <el-input v-model="form.qwUserName" placeholder="请输入销售企微用户名" />
+        </el-form-item>
+        <el-form-item label="领取手机号" prop="phone">
+          <el-input v-model="form.phone" 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 { listRecord, getRecord, delRecord, addRecord, updateRecord, exportRecord } from "@/api/qw/record";
+
+export default {
+  name: "Record",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 绑定手机号红包领取记录表格数据
+      recordList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        userId: null,
+        userName: null,
+        redPacketId: null,
+        companyUserId: null,
+        companyId: null,
+        companyName: null,
+        amount: null,
+        sendTime: null,
+        collectTime: null,
+        collectType: null,
+        sendLink: null,
+        qwUserId: null,
+        qwUserName: null,
+        phone: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  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,
+        userName: null,
+        redPacketId: null,
+        companyUserId: null,
+        companyId: null,
+        companyName: null,
+        amount: null,
+        sendTime: null,
+        collectTime: null,
+        collectType: null,
+        sendLink: null,
+        updateTime: null,
+        createTime: null,
+        qwUserId: null,
+        qwUserName: null,
+        phone: 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.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 = "修改绑定手机号红包领取记录";
+      });
+    },
+    /** 提交按钮 */
+    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();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    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>

+ 49 - 0
src/views/qw/sopTemp/updateSopTemp.vue

@@ -512,6 +512,29 @@
 
                                             </el-card>
                                           </div>
+
+                                          <div v-if="setList.contentType == 14">
+                                             <el-card class="box-card">
+                                               <el-form-item label="红包名称" >
+                                                 <el-select :disabled="formType == 3"    v-model="setList.redPacketId"
+                                                             placeholder="请选择红包" size="mini"
+                                                             @change="getRedPacketStatus(setList)" >
+                                                   <el-option
+                                                     v-for="dict in packetList"
+                                                     :key="dict.id"
+                                                     :label="dict.name"
+                                                     :value="dict.id"
+                                                   />
+                                                 </el-select>
+                                               </el-form-item>
+                                               <el-form-item  label="福袋状态" >
+                                                 <el-tag  :disabled="formType == 3" :type="setList.status == 1 ? 'success' : 'danger'">
+                                                   {{ setList.status == 1 ? '启用' : '禁用' }}
+                                                 </el-tag>
+                                               </el-form-item>
+                                             </el-card>
+                                           </div>
+
                                           <div v-if="setList.contentType == 21">
                                             <el-card class="box-card">
                                               <el-form-item label="短信模板" >
@@ -741,12 +764,22 @@ import {
   getRoles,
 } from "@/api/qw/sop";
 import { getSmsTempList } from "@/api/company/companySmsTemp";
+import { listPacket } from "@/api/qw/packet";
 
 export default {
   name: "updateSopTemp",
   components: {ImageUpload, userVideo, draggable},
   data() {
     return {
+
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 100,
+      },
+      packetList:[],
+
+
       addTag: [{
         addTag: [],
         inputVisible: false,
@@ -844,6 +877,7 @@ export default {
     };
   },
   created() {
+    this.getRedPacketList();
     getRoles().then(res => {
       this.roles = res.data;
     });
@@ -885,6 +919,21 @@ export default {
     this.handleUpdate(id);
   },
   methods: {
+    getRedPacketStatus(content){
+      const selectedRedPacket = this.packetList.find(item => item.id === content.redPacketId);
+      if (selectedRedPacket) {
+        content.status = selectedRedPacket.status; // 自动填充标题
+      } else {
+        // 若未找到对应直播间,清空标题和封面(可选)
+        content.status = null;
+      }
+    },
+    /** 查询授权手机号红包配置列表 */
+    getRedPacketList() {
+      listPacket(this.queryParams).then(response => {
+        this.packetList = response.rows;
+      });
+    },
 
     // 获取短信模板信息
     getSmsTemplateInfo(content) {