UNPKG

xlb-main-login

Version:

``` yarn install ```

571 lines (530 loc) 20.4 kB
import { wei_url } from '@/api/config' import { axios } from '@/utils/request' import { weichat } from '@/api/config' const baseUrl = '/demo-wechat-work' //列表 export function LuckDrawFissionList(params) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery', method: 'get', params, }) } // 开启检测 export function enableSwitch(data) { return axios({ headers: { 'Content-Type': 'application/json;charset=UTF-8' }, url: wei_url + baseUrl + '/v1/fission/lottery', method: 'put', data, }) } // 删除 export function del(id) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery?id=' + id, method: 'delete', }) } //**************新增和编辑******************/ //新增 export function add(data) { return axios({ headers: { 'Content-Type': 'application/json;charset=UTF-8' }, url: wei_url + baseUrl + '/v1/fission/lottery', method: 'post', data, }) } //编辑 export function edit(data) { return axios({ headers: { 'Content-Type': 'application/json;charset=UTF-8' }, url: wei_url + baseUrl + '/v1/fission/lottery', method: 'put', data, }) } // 回显 export function getDetail(id) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery/' + id, method: 'get', }) } //******************推广******************/ //列表 export function extensionList(params) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery/spread', method: 'get', params, }) } // 删除 export function extensionDel(eventId, id) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery/spread?id=' + id + '&eventId=' + eventId, method: 'delete', }) } //新增 export function extensionAdd(data) { return axios({ headers: { 'Content-Type': 'application/json;charset=UTF-8' }, url: wei_url + baseUrl + '/v1/fission/lottery/spread', method: 'post', data, }) } //编辑抽奖渠道码列表 export function puTDraw(data) { return axios({ headers: { 'Content-Type': 'application/json;charset=UTF-8' }, url: wei_url + baseUrl + '/v1/fission/lottery/spread', method: 'put', data, }) } //下载-内部推广渠道的二维码 export function downqrcode(id, eventId) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery/spread/' + id + '/qr' + '?eventId=' + eventId, method: 'get', }) } //下载-复制链接 export function downqrcodecopyLink(id, eventId) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery/spread/' + id + '/url' + '?eventId=' + eventId, method: 'get', }) } //下载-一键群发 export function downqrcodesendMsg(id, eventId) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery/spread/' + id + '/sendMsg' + '?eventId=' + eventId, method: 'get', }) } //*************************** 数据分析 ****************************/ //查看基础数据 export function basicDataAnalysis(eventId, params) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery/analysis/base/info' + '?eventId=' + eventId, method: 'get', params, }) } //用户数据 export function userDataAnalysis(eventId, params) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery/analysis/user/list?eventId=' + eventId, method: 'get', params, }) } //用户下级数据 export function subordinateDataAnalysis(params) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery/analysis/user/item/list', method: 'get', params, }) } //查看中奖数据 export function winningDataAnalysis(params) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery/analysis/lottery/list', method: 'get', params, }) } //查看用户数据导出 export function dataExportAnalysis(eventId, params) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery/analysis/user/list/e' + '?eventId=' + eventId, method: 'get', params, }) } //查看下级用户数据导出 export function subordinateDataExportAnalysis(eventId, userId) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery/analysis/user/item/list/e' + '?eventId=' + eventId + '&userId=' + userId, method: 'get', }) } //查看中奖数据导出 export function winningDataExportAnalysis(eventId) { return axios({ url: wei_url + baseUrl + '/v1/fission/lottery/analysis/lottery/list/e?eventId=' + eventId, method: 'get', }) } // 黑名单列表 export function getworkblackpeolist(eventId, params) { return axios({ url: wei_url + '/demo-wechat-work/v1/fission/lottery/analysis/ban/list?eventId=' + eventId, method: 'get', params, }) } // 删除黑名单 export function delworkblackpeo(params) { return axios({ url: wei_url + '/demo-wechat-work/v1/fission/lottery/analysis/ban/cancel', method: 'delete', params, }) } // 抽奖新的 新增接口 export function addEvent(formData, eventId = '') { const formTemp = {} // id formTemp.id = eventId ? eventId : '' formTemp.state = eventId ? formData.advanced.state : 0 /***************** 第一步 ******************/ // 第一步 活动名称 formTemp.title = formData.information.title // 第一步 活动描述 formTemp.eventDescription = formData.information.eventDescription // 第一步 上传封面图 formTemp.path = formData.information.coverMap // 第一步 抽奖规则 const fissionLotteryObtain = { freeNum: formData.information.threshold, //无门槛抽奖次数 inviteNum: formData.information.people, //每邀请人数 eachExtraNum: formData.information.additionalNum, //额外抽奖次数 maxExtraNum: formData.information.totalNum, //最多额外抽奖次数 } formTemp.fissionLotteryObtain = JSON.stringify(fissionLotteryObtain) // 第一步 活动说明 formTemp.description = formData.information.description // 第一步 起止时间 formTemp.startTime = formData.information.startTime formTemp.endTime = formData.information.endTime // 第一步 获客成员 formTemp.staffList = JSON.stringify(formData.information.staffUserId) /***************** 第二步 ******************/ // 第二步 奖品管理 formTemp.lotteryItemList = JSON.stringify(formData.luckDrawSecond.prizeList) // 第二步 上传客服二维码 formTemp.serverImgPath = formData.luckDrawSecond.QRCode /***************** 第三步 ******************/ // 第三步 海报 const posterList = [] formData.poster.posterFormData.forEach((item) => { posterList.push({ background: item.posterForm.background, // 背景图 circle: item.headData.circle, // 圆形头像 1_开启 0_关闭 dr: item.posterForm.dr || 0, // 默认0 eventId: eventId, // 对应活动的id fontColor: item.nameData.fontColor ? item.nameData.fontColor.replace('#', '0x') : '', //字体颜色 fontName: '', // 新增为空 编辑时有接口返回默认值 fontSize: item.nameData.fontSize, // 字体大小 为0就是隐藏 fontStyle: 0, // 新增为空 编辑时有接口返回默认值 fontx: item.nameData.fontSize == 0 ? 0 : parseInt(item.nameData.x * 2.5), // 字体x轴坐标 fonty: item.nameData.fontSize == 0 ? 0 : parseInt(item.nameData.y * 2.5), // 字体y轴坐标 headUrl: '', // 头像 为空 headUrlHeight: item.headData.show ? parseInt(item.headData.h * 2.5) : 0, // 头像大小 为0就是隐藏 headUrlWidth: item.headData.show ? parseInt(item.headData.w * 2.5) : 0, // 头像大小 为0就是隐藏 headUrlx: item.headData.show ? parseInt(item.headData.x * 2.5) : 0, // 头像大小 为0就是隐藏 headUrly: item.headData.show ? parseInt(item.headData.y * 2.5) : 0, // 头像大小 为0就是隐藏 id: item.posterForm.id || '', // 新增为空 编辑时有接口返回默认值 mini: 1, // mini头像 qrCodeHeight: item.qrData.h == 0 ? 0 : parseInt(item.qrData.h * 2.5), // 二维码大小 为0就是隐藏 qrCodeWeight: item.qrData.w == 0 ? 0 : parseInt(item.qrData.w * 2.5), // 二维码大小 为0就是隐藏 qrCodex: item.qrData.x == 0 ? 0 : parseInt(item.qrData.x * 2.5), // 二维码大小 为0就是隐藏 qrCodey: item.qrData.y == 0 ? 0 : parseInt(item.qrData.y * 2.5), // 二维码大小 为0就是隐藏 }) }) formTemp.posterList = JSON.stringify(posterList) /***************** 第四步 ******************/ const msgList = [] // 裂变规则文案 msgList.push({ enable: 1, msg: formData.reminder.fissionText, msgType: 0, wxMsgType: 'text', }) // 成功助力好友推送文案 msgList.push({ enable: 1, msg: formData.reminder.successfully, msgType: 1, wxMsgType: 'text', }) // 用户重复助力提醒文案 msgList.push({ enable: 1, msg: formData.reminder.repeatedText, msgType: 4, wxMsgType: 'text', }) // 活动结束文案 msgList.push({ enable: formData.reminder.endTextEnable ? 1 : 0, msg: formData.reminder.endText, msgType: 6, wxMsgType: 'text', }) // 活动结束图片 msgList.push({ enable: formData.reminder.endImgEnable ? 1 : 0, msg: formData.reminder.endImg, msgType: 6, wxMsgType: 'image', }) /***************** 第五步 ******************/ // 新添加用户才能给好友助力 msgList.push({ enable: formData.advanced.newUserTextEnable ? 1 : 0, msg: formData.advanced.newUserText, msgType: 8, wxMsgType: 'text', }) // 参与限制提示语 msgList.push({ enable: formData.advanced.participationEnable ? 1 : 0, msg: formData.advanced.participationText, msgType: 9, wxMsgType: 'text', }) formTemp.msgList = JSON.stringify(msgList) // 保存所有的文案 // 第五步 助力失效 formTemp.enableRepeat = formData.advanced.helpEnable ? 1 : 0 // 第五步 参与限制 const fissionLimit = { enable: formData.advanced.participationEnable ? 1 : 0, // 是否开启拦截 1_开启 0_关闭 sexWhiteList: formData.advanced.genderId.join(), // 性别 黑名单("1,2")1:男,2:女,0:未知 } formTemp.fissionLimit = JSON.stringify(fissionLimit) // 第五步 防刷检测 const fissionBanConfig = { enable: formData.advanced.antiEnable ? 1 : 0, // 是否开启防刷检测 1_开启 0_关闭 limitNum: formData.advanced.antiNum, // 检测数量(人) limitTime: formData.advanced.antiTime, // 触发检测时间(秒) } formTemp.fissionBanConfig = JSON.stringify(fissionBanConfig) // 第五步 智能防刷 formTemp.antiRush = formData.advanced.intelligentEnable ? 1 : 0 // 智能防刷 1_开启 0_关闭 // 第五步 自动打标签 const tagList = [] if (formData.advanced.autoTagEnable) { formData.advanced.tagList.forEach((item) => { const idList = [] item.tagList.forEach((info) => { if (info.dr != 1) { idList.push(info.tagId) } }) console.log(idList) const obj = { type: item.type, num: item.num, tagIdList: idList, } if (item.type == 2) { obj.num = item.userNum } else if (item.type == 1) { obj.num = item.ladder } else if (item.type == 4) { obj.num = item.levelNum } else if (item.type == 5) { obj.num = item.userType } else { obj.num = 0 } tagList.push(obj) }) } console.log('formData.advanced.tagList', formData.advanced.tagList) const fissionTagList = { enable: formData.advanced.autoTagEnable ? 1 : 0, // 开启自动打标签 1_开启 0_关闭 tagList: tagList, } formTemp.fissionTagList = JSON.stringify(fissionTagList) console.log('抽奖新增/编辑的参数formTemp', formTemp) // 新增/编辑 抽奖获客活动 return axios({ headers: { 'Content-Type': 'application/json;charset=UTF-8' }, url: weichat + 'v1/fission/lottery', method: eventId !== '' ? 'put' : 'post', data: formTemp, }) } function getMagItem(type, magList, key = 'msg', msgType = 'text') { const indexId = magList.findIndex((items) => items.msgType == type && items.wxMsgType == msgType) if (indexId !== -1) { return magList[indexId][key] } else { return null } } //抽奖获客活动详情 export function getEvent(id) { const formData = { information: {}, // 第一步 luckDrawSecond: {}, // 第二步 poster: { //第三步 posterFormData: [], }, reminder: {}, // 第四步 advanced: {}, // 第五步 } return new Promise((resolve) => { axios({ url: weichat + 'v1/fission/lottery/' + id, method: 'get', }).then((res) => { console.time() const resData = JSON.parse(JSON.stringify(res.data)) /***************** 第一步 ******************/ // 获客成员数组内字段名要改一下 const staffList = [] JSON.parse(resData.staffList).forEach((item) => { const obj = {} obj.name = item.name // obj.dr = 0 obj.avatar = item.headImgUrl obj.userId = item.userId staffList.push(obj) }) formData.information = { title: resData.title, //活动名称 eventDescription: resData.eventDescription, //活动描述 coverMap: resData.path, //上传封面图 threshold: JSON.parse(resData.fissionLotteryObtain).freeNum, //抽奖规则 无门槛抽奖次数 people: JSON.parse(resData.fissionLotteryObtain).inviteNum, //抽奖规则 每邀请人数 additionalNum: JSON.parse(resData.fissionLotteryObtain).eachExtraNum, //抽奖规则 额外抽奖次数 totalNum: JSON.parse(resData.fissionLotteryObtain).maxExtraNum, //抽奖规则 最多额外抽奖次数 description: resData.description, //活动说明 startTime: resData.startTime ? resData.startTime : null, // 触发时间 endTime: resData.endTime ? resData.endTime : null, // 触发时间 staffList: staffList, //获客成员 staffUserId: JSON.parse(resData.staffList), //获客成员id } /***************** 第二步 ******************/ formData.luckDrawSecond = { QRCode: resData.serverImgPath, // 上传客服二维码 prizeList: JSON.parse(resData.lotteryItemList), // 表格 } /***************** 第三步 ******************/ // 海报 JSON.parse(resData.posterList).forEach((item, index) => { formData.poster.posterFormData.push({ headData: { show: item.headUrly + item.headUrlx + item.headUrlWidth + item.headUrlHeight == 0 ? false : true, circle: item.circle, y: item.headUrlWidth + item.headUrlHeight == 0 ? 20 : parseInt(item.headUrly / 2.5), x: item.headUrlWidth + item.headUrlHeight == 0 ? 20 : parseInt(item.headUrlx / 2.5), w: item.headUrlWidth + item.headUrlHeight == 0 ? 60 : parseInt(item.headUrlWidth / 2.5), h: item.headUrlWidth + item.headUrlHeight == 0 ? 60 : parseInt(item.headUrlHeight / 2.5), }, nameData: { y: item.fontSize == 0 ? 20 : parseInt(item.fonty / 2.5), x: item.fontSize == 0 ? 90 : parseInt(item.fontx / 2.5), fontSize: item.fontSize, fontColor: item.fontColor ? item.fontColor.replace('0x', '#') : '', }, qrData: { y: item.qrCodeWeight + item.qrCodeHeight == 0 ? 20 : parseInt(item.qrCodey / 2.5), x: item.qrCodeWeight + item.qrCodeHeight == 0 ? 20 : parseInt(item.qrCodex / 2.5), w: item.qrCodeWeight + item.qrCodeHeight == 0 ? 60 : parseInt(item.qrCodeWeight / 2.5), h: item.qrCodeWeight + item.qrCodeHeight == 0 ? 60 : parseInt(item.qrCodeHeight / 2.5), }, posterForm: { dr: item.dr || 0, id: item.id || '', background: item.background, }, }) }) /***************** 第四步 ******************/ const msgList = JSON.parse(resData.msgList) formData.reminder = { fissionText: getMagItem(0, msgList), // 裂变规则文案 successfully: getMagItem(1, msgList), // 成功助力好友推送文案 repeatedText: getMagItem(4, msgList), // 用户重复助力提醒文案 endText: getMagItem(6, msgList, 'msg', 'text'), // 活动结束文案 endTextEnable: getMagItem(6, msgList, 'enable', 'text') == 1 ? true : false, // 活动结束文案-开关 endImgEnable: getMagItem(6, msgList, 'enable', 'image') == 1 ? true : false, // 活动结束图片-开关 endImg: getMagItem(6, msgList, 'msg', 'image'), // 活动结束图片 } /***************** 第五步 ******************/ if (!resData.fissionBanConfig) { resData.fissionBanConfig = JSON.stringify({ enable: 0, // 是否开启防刷检测 1_开启 0_关闭 limitNum: 10, // 检测数量(人) limitTime: 60, // 触发检测时间(秒) }) } formData.advanced = { // 存储非页面所用的id state: resData.state, // 活动是否开启 // 存储非页面所用的id end newUserText: getMagItem(8, msgList), // 新添加用户才能给好友助力 newUserTextEnable: getMagItem(8, msgList, 'enable', 'text') == 1 ? true : false, // 新添加用户才能给好友助力-开关 helpEnable: resData.enableRepeat == 1 ? true : false, // 助力失效 participationEnable: JSON.parse(resData.fissionLimit).enable == 1 ? true : false, // 参与限制-开关 participationText: getMagItem(9, msgList), // 参与限制提示语 genderId: JSON.parse(resData.fissionLimit).sexWhiteList !== '' ? JSON.parse(resData.fissionLimit).sexWhiteList.split(',') : [], // 参与限制-性别 antiEnable: JSON.parse(resData.fissionBanConfig).enable == 1 ? true : false, //防刷检测 是否开启防刷检测 antiTime: JSON.parse(resData.fissionBanConfig).limitTime, //防刷检测 触发检测时间(秒) antiNum: JSON.parse(resData.fissionBanConfig).limitNum, //防刷检测 检测数量(人) intelligentEnable: resData.antiRush == 1 ? true : false, autoTagEnable: JSON.parse(resData.fissionTagList).enable == 1 ? true : false, tagList: [], } const fissionTagList = JSON.parse(resData.fissionTagList).tagList // 标签 if (fissionTagList && fissionTagList.length >= 1) { fissionTagList.forEach((item) => { const tagItem = { id: item.id || '', dr: item.dr || 0, type: item.type, userNum: 1, ladder: 1, levelNum: 1, userType: 1, tagList: getTagData(item.tagIdList, JSON.parse(resData.tagNameList)), } if (item.type == 2) { tagItem.userNum = item.num } else if (item.type == 1) { tagItem.ladder = item.num } else if (item.type == 4) { tagItem.levelNum = item.num } else if (item.type == 5) { tagItem.userType = item.num } formData.advanced.tagList.push(tagItem) }) } console.timeEnd() console.log('回显转换过的formData', formData) // 输出结构化后的数据 return resolve(formData) }) }) } // 回显时,标签的数组格式要改一下,tagNameList只用来回显,保存时不用提交 function getTagData(idList, list) { const listTemp = [] if (idList && idList.length > 0) { idList.forEach((item) => { const idIndex = list.findIndex((items) => items.tagId == item) if (idIndex !== -1) { listTemp.push(list[idIndex]) } }) } return listTemp }