| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592 |
- <?php
- use common\helpers\ComponentHelper;
- ComponentHelper::loadComponentView('com-rich-text');
- ?>
- <div id="app" v-cloak>
- <el-card class="box-card" v-loading="loading" shadow="never" style="border:0;min-width: 1200px;" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
- <div class="form_box">
- <template>
- <el-card>
- <el-form :model="ruleForm" size="small" ref="ruleForm" label-width="150px">
- <el-tabs v-model="activeName" type="card">
- <el-tab-pane label="基本设置" name="basic">
- <?php ComponentHelper::loadComponentView('basic', __DIR__ . '/'); ?>
- </el-tab-pane>
- <el-tab-pane label="奖金池设置" name="bonus_pool">
- <?php ComponentHelper::loadComponentView('bonus_pool', __DIR__ . '/'); ?>
- </el-tab-pane>
- <!-- <el-tab-pane label="消息设置" name="message">
- <?php //ComponentHelper::loadComponentView('message', __DIR__ . '/');
- ?>
- </el-tab-pane> -->
- <el-tab-pane label="文本设置" name="customize_text">
- <?php ComponentHelper::loadComponentView('customize_text', __DIR__ . '/'); ?>
- </el-tab-pane>
- <el-tab-pane label="短信配置" name="sms">
- <?= ComponentHelper::loadComponentView('sms', __DIR__) ?>
- </el-tab-pane>
- </el-tabs>
- <el-button :loading="btnLoading" class="button-item" type="primary" style="margin-top: 24px;" @click="store('ruleForm')" size="small">保存
- </el-button>
- </el-form>
- </el-card>
- </template>
- </div>
- <!-- 这个是复制用的容器,已隐藏 -->
- <textarea id="inputs" style="opacity: 0;width: 0;height: 0;">复制内容</textarea>
- </el-card>
- </div>
- <script>
- const app = new Vue({
- el: '#app',
- data() {
- return {
- activeName: 'basic',
- // activeName: 'customize_text',
- loading: false,
- btnLoading: false,
- dialogTableVisible: false,
- list: [],
- pagination: null, //分页数据
- selectItem: {}, //被选中的券
- confirmItem: {}, //确认选择该券
- page: 1,
- mall_sms: 'aliyun',
- smsDialogShow: false,
- smsCurrentKey: 'lucky_success',
- rules: {
- },
- ruleForm: {
- // 基础设置
- basic: {
- default_level_attend_times: 0, // 默认会员参团次数
- ping_tuan_limit: 0, // 参团限制开关
- ping_tuan_limit_win: 0,
- ping_tuan_limit_lose: 0,
- ping_tuan_limit_win_radio: 1,
- is_show_lunbo: 0, // 是否显示文字播报
- equal_deep: 0, // 平级层级
- equal_calculate_basis: 1, // 平级奖计算依据
- equal_calculate_type: 1, // 平级奖结算方式
- invited_award_type: 'score', // 推荐参团奖励-奖励类型
- invited_award_mode: 0, // 推荐参团奖励-奖励方式
- direct_award: 0, // 直推奖励
- indirect_award: 0, // 间推奖励
- desc: '', // 参团规则
- is_auto_pintuan: 1, // 参团规则
- },
- bonus_pool: {
- // 奖金池设置
- is_enable: 0, // 奖金池开关
- curr_pool_money: 0, // 当前奖金池金额
- everyday_out_rate: 0, // 每日奖金池拿出比例
- settle_type: 2, // 结算周期
- every_day_bingo_prize: 1, // 奖金池奖励阶梯--拼中奖励方式
- every_day_bingo_nums: 0, // 每日拼中奖励--拼中次数
- every_day_bingo_limit_prize: 0, // 每日拼中奖励--拼中奖励
- win_basic_setting: [{
- times: 0, // 拼中次数
- money: 0, // 奖励金额
- }], // 累计拼中奖励--阶梯设置
- is_virtual_bonus_pool: 0, // 是否开启虚拟奖金池
- virtual_money: 0, // 虚拟金额
- virtual_pepole: 0, // 虚拟人数
- },
- sms: {
- lucky_success: {
- title: '拼团成功通知',
- type: 'lucky_success',
- tips: '',
- data: {
- template_id: '',
- content: '恭喜您,您参与的幸运拼团活动,现已拼团成功,请立即前往购买!',
- },
- },
- lucky_fail: {
- title: '拼团失败通知',
- type: 'lucky_fail',
- tips: '',
- data: {
- template_id: '',
- content: '很遗憾,您参与的幸运拼团活动,最终拼团失败,可前往参与其他拼团。',
- },
- },
- 'mall_sms': 'aliyun',
- },
- },
- events: [
- {
- title: '拼团成功通知',
- type: 'lucky_success',
- tips: ''
- },
- {
- title: '拼团失败通知',
- type: 'lucky_fail',
- tips: ''
- },
- ],
- isCanRequest: true,
- // customize_text 设置
- customize_text_list: [{
- original_text: '幸运拼团',
- new_text: '幸运拼团',
- field_name: 'group_buy_text'
- },
- {
- original_text: '立即拼团',
- new_text: '立即拼团',
- field_name: 'join_at_once_text'
- },
- {
- original_text: '拼团',
- new_text: '拼团',
- field_name: 'join_team_text'
- },
- {
- original_text: '拼到',
- new_text: '拼到',
- field_name: 'snagging_text'
- },
- {
- original_text: '拼中',
- new_text: '拼中',
- field_name: 'join_success_text'
- },
- // {original_text: '拼', new_text: '拼', field_name: 'join_in_text'},
- {
- original_text: '开团',
- new_text: '开团',
- field_name: 'activity_start_text'
- },
- {
- original_text: '幸运拼团订单',
- new_text: '幸运拼团订单',
- field_name: 'group_buy_order_text'
- },
- {
- original_text: '拼团奖金池',
- new_text: '拼团奖金池',
- field_name: 'group_buy_bonus_pool_text'
- },
- {
- original_text: '奖金池明细',
- new_text: '奖金池明细',
- field_name: 'bonus_pool_detail_text'
- },
- {
- original_text: '奖金总额',
- new_text: '奖金总额',
- field_name: 'bonus_pool_total_amount_text'
- },
- {
- original_text: '分红池排行榜',
- new_text: '分红池排行榜',
- field_name: 'bonus_pool_ranking_list_text'
- },
- {
- original_text: '参团金额',
- new_text: '参团金额',
- field_name: 'join_in_amount_text'
- },
- {
- original_text: '参团',
- new_text: '参团',
- field_name: 'join_into_team_text'
- },
- {
- original_text: '智能连拼',
- new_text: '智能连拼',
- field_name: 'smart_continuity_text'
- },
- {
- original_text: '成团',
- new_text: '成团',
- field_name: 'join_finish_text'
- },
- {
- original_text: '未拼中',
- new_text: '未拼中',
- field_name: 'join_fail_text'
- },
- {
- original_text: '成功',
- new_text: '成功',
- field_name: 'success_text'
- },
- {
- original_text: '失败',
- new_text: '失败',
- field_name: 'fail_text'
- },
- {
- original_text: '手动拼团',
- new_text: '手动拼团',
- field_name: 'manual_join_text'
- },
- ],
- customize_reward_name_list: [{
- original_text: '参团奖励',
- new_text: '参团奖励',
- field_name: 'attend_reward_text'
- },
- {
- original_text: '拼中奖励',
- new_text: '拼中奖励',
- field_name: 'win_reward_text'
- },
- {
- original_text: '奖金池奖励',
- new_text: '奖金池奖励',
- field_name: 'pool_reward_text'
- },
- {
- original_text: '渠道佣金',
- new_text: '渠道佣金',
- field_name: 'agent_reward_text'
- },
- {
- original_text: '平级奖励',
- new_text: '平级奖励',
- field_name: 'equal_reward_text'
- },
- {
- original_text: '越级奖励',
- new_text: '越级奖励',
- field_name: 'over_reward_text'
- },
- {
- original_text: '推荐奖励',
- new_text: '推荐奖励',
- field_name: 'invite_reward_text'
- },
- {
- original_text: '每日拼中奖励',
- new_text: '每日拼中奖励',
- field_name: 'every_day_bingo_prize_text'
- },
- {
- original_text: '奖金池推荐奖',
- new_text: '奖金池推荐奖',
- field_name: 'every_day_bingo_prize_s_text'
- },
- ],
- }
- },
- mounted: function() {
- this.loadData();
- },
- methods: {
- loadData() {
- if (this.loading === true) return;
- this.loading = true;
- request({
- params: {
- r: 'lucky-group/setting/storage',
- },
- method: 'get'
- }).then(e => {
- this.loading = false;
- if (e.data.code == 0) {
- if (e.data.data.basic) {
- this.ruleForm.basic = e.data.data.basic;
- }
- if (e.data.data.bonus_pool) {
- this.ruleForm.bonus_pool = e.data.data.bonus_pool;
- }
- // 文本设置
- if (e.data.data.customize_text.length) {
- this.customize_text_list = e.data.data.customize_text;
- }
- // 奖励名称设置
- if (e.data.data.customize_reward_name.length) {
- this.customize_reward_name_list = e.data.data.customize_reward_name;
- }
- //短信设置
- if (e.data.data.sms) {
- this.ruleForm.sms = e.data.data.sms;
- }
- if (e.data.data.mall_sms) {
- this.mall_sms = e.data.data.mall_sms;
- }
- this.mallSmsClick();
- }
- }).catch(e => {
- this.loading = false;
- })
- },
- store(formName) {
- this.isCanRequest = true;
- if (this.ruleForm.basic.ping_tuan_limit == 1 && !this.ruleForm.basic.ping_tuan_limit_win_radio) {
- this.$message.error('清选择拼团限制的方式');
- return false;
- }
- if (this.ruleForm.bonus_pool.everyday_out_rate > 100 || this.ruleForm.bonus_pool.everyday_out_rate < 0) {
- this.$message.error('每日奖金池拿出比例在 0 到 100 之间');
- return false;
- }
- if (this.ruleForm.basic.invited_award_mode == 1) {
- if (this.ruleForm.basic.direct_award > 100 || this.ruleForm.basic.direct_award < 0) {
- this.$message.error('直推奖励比例在 0 到 100 之间');
- return false;
- }
- if (this.ruleForm.basic.indirect_award > 100 || this.ruleForm.basic.indirect_award < 0) {
- this.$message.error('间推奖励比例在 0 到 100 之间');
- return false;
- }
- }
- if (this.ruleForm.bonus_pool.every_day_bingo_tj_prize) {
- var v1 = parseFloat(this.ruleForm.bonus_pool.everyday_out_rate)
- var v2 = parseFloat(this.ruleForm.bonus_pool.every_day_bingo_tj_rate)
- if ((v1 + v2) > 100) {
- this.$message.error('每日奖金池拿出比例+每日拿奖金池分给上级推荐人比例不能大于100%');
- return false;
- }
- }
- if (this.ruleForm.bonus_pool.every_day_bingo_limit_prize > 99999999) {
- this.$message.error('每日拼中奖励的上限不能大于99999999');
- return false;
- }
- // 奖金池奖励阶梯验证
- if (this.ruleForm.bonus_pool.every_day_bingo_prize == 2 && this.ruleForm.bonus_pool.win_basic_setting.length) {
- let forNumber = this.ruleForm.bonus_pool.win_basic_setting.length;
- if (forNumber > 100) {
- this.$message.error('奖励阶级不能超过 100 层');
- return false;
- }
- for (let i = 0; i < forNumber; i++) {
- let val = this.ruleForm.bonus_pool.win_basic_setting[i];
- if (val.times <= 0 || !val.times) {
- this.$message.error('奖励阶梯中的拼中次数必须大于 0 ');
- return false;
- }
- if (i > 0) {
- if (parseInt(val.times) <= parseInt(this.ruleForm.bonus_pool.win_basic_setting[i - 1].times)) {
- this.$message.error('奖励阶梯中的拼中次数必须大于前一个阶梯');
- return false;
- }
- }
- }
- }
- // 文本设置验证
- var for_len_text = this.customize_text_list.length;
- var for_len_reward_name = this.customize_reward_name_list.length;
- var name_text_len_map = {
- group_buy_text: 4,
- join_at_once_text: 5,
- join_team_text: 2,
- snagging_text: 2,
- join_success_text: 2,
- join_in_text: 1,
- activity_start_text: 2,
- group_buy_order_text: 6,
- group_buy_bonus_pool_text: 5,
- bonus_pool_detail_text: 5,
- bonus_pool_total_amount_text: 5,
- bonus_pool_ranking_list_text: 6,
- join_in_amount_text: 4,
- join_into_team_text: 2,
- smart_continuity_text: 4,
- join_finish_text: 2,
- join_fail_text: 3,
- success_text: 2,
- fail_text: 2,
- attend_reward_text: 6,
- win_reward_text: 6,
- pool_reward_text: 7,
- agent_reward_text: 6,
- equal_reward_text: 6,
- over_reward_text: 6,
- invite_reward_text: 6,
- every_day_bingo_prize_text: 8,
- every_day_bingo_prize_s_text: 8,
- };
- if (this.customize_text_list.length) {
- for (let i = 0; i < for_len_text; i++) {
- if (this.customize_text_list[i].new_text.length > name_text_len_map[this.customize_text_list[i].field_name]) {
- this.$message.error('文本 “' + this.customize_text_list[i].original_text + '” 的替换文本的长度最多是 ' + name_text_len_map[this.customize_text_list[i].field_name] + ' 个字符');
- return false;
- }
- }
- this.ruleForm.customize_text = this.customize_text_list;
- }
- if (this.customize_reward_name_list.length) {
- for (let i = 0; i < for_len_reward_name; i++) {
- if (this.customize_reward_name_list[i].new_text.length > name_text_len_map[this.customize_reward_name_list[i].field_name]) {
- this.$message.error('奖励名称 “' + this.customize_reward_name_list[i].original_text + '” 的替换名称的长度最多是 ' + name_text_len_map[this.customize_reward_name_list[i].field_name] + ' 个字符');
- return false;
- }
- }
- this.ruleForm.customize_reward_name = this.customize_reward_name_list;
- }
- // console.log(this.ruleForm);return null;
- this.$refs[formName].validate((valid) => {
- if (valid) {
- if (!this.isCanRequest && this.btnLoading) return
- this.btnLoading = true;
- request({
- params: {
- r: 'lucky-group/setting/storage',
- },
- method: 'post',
- data: this.ruleForm
- }).then(e => {
- this.btnLoading = false;
- if (e.data.code == 0) {
- this.$message.success(e.data.msg);
- } else {
- this.$message.error(e.data.msg);
- }
- }).catch(e => {
- this.$message.error(e);
- this.btnLoading = false;
- })
- } else {
- this.btnLoading = false;
- console.log('error submit!!');
- return false;
- }
- });
- },
- // 添加奖金池阶梯
- addRewardItem() {
- // console.log(this.ruleForm.bonus_pool.every_day_bingo_prize);
- // console.log(this.ruleForm.bonus_pool.win_basic_setting);return null;
- let obj = {};
- obj.times = 0;
- obj.money = 0;
- this.ruleForm.bonus_pool.win_basic_setting.push(obj);
- },
- // 删除奖金池阶梯
- deleteRewardItem(index) {
- if (this.ruleForm.bonus_pool.win_basic_setting.length > 0) {
- this.ruleForm.bonus_pool.win_basic_setting.splice(index, 1);
- }
- },
- onSetSmsConfig(item) {
- this.smsCurrentKey = item.type
- this.smsDialogShow = true
- console.log('smsCurrentKey', this.smsCurrentKey);
- console.log('smsCurrentKey', this.ruleForm.sms);
- },
- onSmsDialogHide() {
- this.smsDialogShow = false
- },
- handleClose(tag, type) {
- let itag = type.toLowerCase()
- let index = `${itag}_tags`
- this.ruleForm.basic[index].splice(this.ruleForm.basic[index].indexOf(tag), 1);
- },
- showInput(type) {
- this[`input${type}Visible`] = true
- this.$nextTick(_ => {
- this.$refs[`tag${type}`].$refs.input.focus();
- });
- },
- onInputContent(val) {
- let p = '';
- switch (this.ruleForm.sms.mall_sms) {
- case 'aliyun':
- p = /(\$\{[0-9A-Za-z_]+\})/g
- break;
- case 'qcloud':
- p = /(\{[0-9]+\})/g
- break;
- case 'submail':
- p = /(\@var\([0-9A-Za-z_]+\))/g
- break;
- }
- let ms = val.match(p)
- console.log('onInputContent', ms, this.smsCurrentKey)
- if (ms && ms.length > 0) {
- let vars = []
- for (let msKey in ms) {
- vars.push({
- name: ms[msKey],
- key: ''
- })
- }
- this.$set(this.ruleForm.sms[this.smsCurrentKey].data, 'vars', vars)
- }
- },
- handleInputConfirm(type) {
- let inputValue = this[`input${type}Value`];
- if (inputValue) {
- let tag = type.toLowerCase()
- let index = `${tag}_tags`
- this.ruleForm.basic[index].push(inputValue);
- }
- this[`input${type}Visible`] = false;
- this[`input${type}Value`] = '';
- },
- mallSmsClick() {
- switch (this.ruleForm.sms.mall_sms) {
- case 'aliyun':
- this.events = [
- {
- title: '拼团成功通知',
- type: 'lucky_success',
- tips: ''
- },
- {
- title: '拼团失败通知',
- type: 'lucky_fail',
- tips: ''
- },
- ];
- break;
- case 'qcloud':
- this.events = [
- {
- title: '拼团成功通知',
- type: 'lucky_success_qcloud',
- tips: ''
- },
- {
- title: '拼团失败通知',
- type: 'lucky_fail_qcloud',
- tips: ''
- },
- ]
- break;
- case 'submail':
- this.events = [
- {
- title: '拼团成功通知',
- type: 'lucky_success_submail',
- tips: ''
- },
- {
- title: '拼团失败通知',
- type: 'lucky_fail_submail',
- tips: ''
- },
- ]
- break;
- }
- console.log(this.events);
- }
- },
- });
- </script>
- <style>
- </style>
|