修改专题模块

This commit is contained in:
lcc
2024-08-09 16:21:30 +08:00
parent 20193665a0
commit 783be76230
6 changed files with 125 additions and 123 deletions
@@ -19,25 +19,32 @@ class Market_sytopic_enroll_model extends HD_Model
}
//专题报名
public function enroll($id, $topicUserId, $name, $mobile)
public function enroll($topicId, $moduleOptionId, $topicUserId, $name, $mobile)
{
$this->load->model('market/Market_sytopic_user_model', 'topic_user_model');
$this->load->model('market/market_sytopic_module_option_model');
$this->load->model('market/market_sylive_organization_model');
$this->load->model('market/market_sytopic_model', 'topic_model');
$optionRow = $this->market_sytopic_module_option_model->get(['id' => $id]);
$topicUser = $this->topic_user_model->get(['id' => $topicUserId]);
$row = $this->get(['status' => 0, 'moduleOptionId' => $id, 'userId' => $topicUser['userId']]);
$where = ['status' => 0, 'topicId' => $topicId, 'userId' => $topicUser['userId'], 'moduleOptionId' => 0];
if ($moduleOptionId) {
$where['moduleOptionId'] = $moduleOptionId;
}
$row = $this->get($where);
if ($row) {
// $this->update(['name' => $name, 'mobile' => $mobile], ['id' => $row['id']]);
return ['code' => 0, 'msg' => '您的信息已收到,无需重复操作'];
}
$topic = $this->topic_model->get(['id' => $optionRow['topicId']]);
if ($moduleOptionId) {
$optionRow = $this->market_sytopic_module_option_model->get(['id' => $moduleOptionId]);
}
$topic = $this->topic_model->get(['id' => $topicId]);
$org = $this->market_sylive_organization_model->get(['organizationId' => $topic['organizationId']]);
$data = [
'topicUserId' => $topicUserId,
'userId' => $topicUser['userId'],
'channelId' => $topicUser['channelId'],
'topicId' => $topicId,
'name' => $name,
'mobile' => $mobile,
'enTime' => date('Y-m-d H:i:s'),
@@ -45,7 +52,6 @@ class Market_sytopic_enroll_model extends HD_Model
'enrollDeal' => $org ? $org['enrollDeal'] : self::ENROLL_DEAL_NO,
];
$optionRow['id'] && $data['moduleOptionId'] = $optionRow['id'];
$optionRow['topicId'] && $data['topicId'] = $optionRow['topicId'];
$optionRow['moduleId'] && $data['moduleId'] = $optionRow['moduleId'];
$res = $this->add($data);
if (!$res) {
@@ -12,6 +12,7 @@ class Market_sytopic_module_model extends HD_Model
const TYPE_HORIZONTAL = 5; // 横排
const TYPE_ARTICLE = 6; // 文章
const TYPE_ENROLL_BANNER = 7; // 报名轮播图
const TYPE_ENROLL_GIFT = 8; // 礼品模块
const TYPE_ARRAY = [
// self::TYPE_BANNER => '主图',
@@ -21,6 +22,7 @@ class Market_sytopic_module_model extends HD_Model
self::TYPE_SWIPER_BANNER => '轮播图',
self::TYPE_ARTICLE => '富文本',
self::TYPE_ENROLL_BANNER => '横排轮播图',
self::TYPE_ENROLL_GIFT => '礼品',
];
public function __construct()
@@ -37,10 +37,10 @@ class Market_sytopic_module_option_model extends HD_Model
{
$this->load->model('market/market_sytopic_module_model');
$moduleModel = new Market_sytopic_module_model();
$modelList = $moduleModel->select(['type'=>$moduleModel::TYPE_ENROLL_BANNER],'','','','id');
$modelList = $moduleModel->select(['type' => $moduleModel::TYPE_ENROLL_BANNER], '', '', '', 'id');
$lists = [];
if ($modelList) {
$modelIdsStr = implode(',', array_column($modelList,'id'));
$modelIdsStr = implode(',', array_column($modelList, 'id'));
$where = ['topicId' => $topicId, 'status' => 0, "moduleId in ({$modelIdsStr})" => null];
$modelOptionsList = $this->select($where, "FIELD (moduleId,{$modelIdsStr})", 1, 100);
foreach ($modelOptionsList as $item) {
@@ -110,6 +110,20 @@ class Market_sytopic_module_option_model extends HD_Model
$data['introduction'] = $item['introduction'];
$data['createTime'] = $item['createTime'];
break;
case Market_sytopic_module_model::TYPE_ENROLL_GIFT://礼品模块
$enroll = true; //是否可报名
if ($item['enrollEndTime'] != '0000-00-00 00:00:00') {
$enrollEndTime = $item['enrollEndTime'];
if (strtotime($item['enrollEndTime']) - time() <= 0) {
$data['btnText'] = '已结束';
$enroll = false;
}
} else {
$enrollEndTime = '';
}
$data['enrollEndTime'] = $enrollEndTime;
$data['enroll'] = $enroll;
break;
default:
$data['introduction'] = strip_tags($item['introduction']);
}
+14 -8
View File
@@ -13,7 +13,7 @@ class Welcome extends Wx
parent::__construct();
$this->load->model('market/Market_sytopic_module_option_model', 'module_option_model');
$this->load->model('market/Market_sytopic_enroll_model', 'sytopic_enroll_model');
$this->load->model('market/market_sylive_organization_model','organization_model');
$this->load->model('market/market_sylive_organization_model', 'organization_model');
$this->load->library('qiniu');
$this->load->library("ssApi");
$this->skey = $this->input->get_post('skey');
@@ -36,6 +36,7 @@ class Welcome extends Wx
$actUser['channelId'] && $channelRow = $this->user_model->get(['userId' => $actUser['channelId']]);
$jsonData = json_decode($row['jsondata'], true);
$info = [
'id' =>$row['id'],
'title' => $row['title'],
'isAdmin' => $this->user_model->checkTopicIsAdmin($this->uid, $this->a_id),
'channelName' => $channelRow ? $channelRow['uname'] : '',
@@ -43,18 +44,19 @@ class Welcome extends Wx
'channelTel' => $channelRow ? $channelRow['mobile'] : '',
'banner' => $jsonData['banner'] ? build_qiniu_image_url($jsonData['banner']) : '',
'bgColor' => $jsonData['bg_color'] ?: '',
'buttonType' => $jsonData['button_type'] ? (int)$jsonData['button_type'] : '',
];
$moduleLists = $this->module_option_model->getTopicModelOptionsList($this->a_id);
$this->data['modules'] = array_values($moduleLists);
$this->data['logoList'] = $this->module_option_model->getTypeEnrollBannerList($this->a_id);
//获取门店信息
$orgRow = $this->organization_model->get(['organizationId'=>$row['organizationId']]);
$orgRow = $this->organization_model->get(['organizationId' => $row['organizationId']]);
$ssBizId = (int)$orgRow['comments'];
$biz = [];
if($ssBizId){
if ($ssBizId) {
$ssApi = new SsApi();
$req = $ssApi->getBiz($ssBizId);
if($req['code']){
if ($req['code']) {
$biz = $req['data'];
}
}
@@ -72,6 +74,10 @@ class Welcome extends Wx
{
$redis = &load_cache();
$optionId = intval($this->input->post('optionId'));
$topicId = intval($this->input->post('topicId'));
if(!$topicId){
$this->show_json('', 400, '参数错误');
}
$info = $this->input->post('info');
$name = $info['name'];
$mobile = $info['phone'];
@@ -80,10 +86,10 @@ class Welcome extends Wx
$this->show_json('', 400, '请输入姓名');
}
$key = self::ENROLL_SIGN_KEY . $mobile;
if (!$code || $code != $redis->get($key)) {
$this->show_json('', 400, '请输入正确的验证码');
}
$result = $this->sytopic_enroll_model->enroll($optionId, $this->act_uid, $name, $mobile);
// if (!$code || $code != $redis->get($key)) {
// $this->show_json('', 400, '请输入正确的验证码');
// }
$result = $this->sytopic_enroll_model->enroll($topicId,$optionId, $this->act_uid, $name, $mobile);
if (!$result['code']) {
$this->show_json('', 400, $result['msg']);
}
+79 -108
View File
@@ -1,4 +1,4 @@
<link rel="stylesheet" href="/css/h5/market/sytopic/h5.css?2024008">
<link rel="stylesheet" href="/css/h5/market/sytopic/h5.css?2024009">
<body>
<div id="app" style="min-height: 100vh;background-color:<?= $info['bgColor'] ?: '#f6f6f6' ?>" class="relative">
@@ -124,32 +124,6 @@
</div>
<!-- 到店有礼模块 20240809-->
<div class="card-module" v-if="0">
<div class="ignore-rounded-isosceles-trapezoid absolute box-center top-0 pl5 pr5 text-center">
<div class="ignore-trapezoid-middle font-34 color-fff">到店有礼</div>
</div>
<div class="fn-flex ignore-rounded-padding">
<div>
<van-image width="30vw" height="30vw" radius="2.7vw" fit="cover" :src="'https://img01.yzcdn.cn/vant/cat.jpeg'"></van-image>
</div>
<div class="fn-flex fn-flex-between ml20" style="width:52vw; flex-direction: column;">
<div class="pt5">
<h3 class="font-32 text-nowrap">清凉夏日防晒套装清凉夏日防晒套装</h3>
<p class="font-24 color-555 mt20 text-nowrap">品牌遮阳伞+移动风扇移动风扇+防晒喷雾</p>
<div class="ulib-r750 fn-flex overflowhidden mt10" style="border-top-left-radius: 0;">
<span class="font-22 color-333 bg-f8e26a pt5 pb5 pl10 pr10">截止时间</span>
<span class="font-22 color-fff bg-1a1a1a fn-flex-item pt5 pb5 pl10">2024年11月11日11:00:00</span>
</div>
</div>
<div class="fn-flex fn-flex-between fn-flex-middle mt10">
<div class="text-middle"><span class="font-22 color-999">市场价</span><span class="color-ff5a5a font-26"><b class="font-40">1.8</b></span></div>
<div><div class="btn ulib-r750 font-28 bg-f8e26a pt10 pb10 pl20 pr20">立即领取</div></div>
</div>
</div>
</div>
</div>
<template v-for="(item,k) in modules" v-if="modules&&modules.length>0">
<!-- 报名模块 - 大图轮播 -->
<div class="card-module" v-if="item.type && item.type==2 && item.lists && item.lists.length>0">
@@ -307,34 +281,67 @@
</div>
</div>
</div>
<aside class="fixed right-0 bottom-0 mr30 mb100 z-index-10">
<ul>
<li class="mt20" v-if="val.showBtn">
<div class="imgsize-120X120 relative" @click="showEnroll(item.type,val,1,1)">
<van-image
style="border: 0.6vw solid #ff3c3a;"
width="16vw"
height="16vw"
fit="cover"
round
:src="info.channelHeadImg"
></van-image>
<i class="absolute left-0 right-0 bottom-0 mb5 d-icon-9"></i>
</div>
</li>
<li class="mt20" v-else>
<span @click="showEnroll(item.type,val,false,1)"><i
class="inline-block d-icon-8"></i></span>
</li>
</ul>
</aside>
</template>
</div>
<!-- 到店有礼模块 20240809-->
<template v-if="item.type && item.type==8 && item.lists && item.lists.length>0">
<div class="card-module" v-for="(val,key) in item.lists" :key="key">
<div class="ignore-rounded-isosceles-trapezoid absolute box-center top-0 pl5 pr5 text-center">
<div class="ignore-trapezoid-middle font-34 color-fff">到店有礼</div>
</div>
<div class="fn-flex ignore-rounded-padding">
<div>
<van-image width="30vw" height="30vw" radius="2.7vw" fit="cover" :src="val.banner"></van-image>
</div>
<div class="fn-flex fn-flex-between ml20" style="width:52vw; flex-direction: column;">
<div class="pt5">
<h3 class="font-32 text-nowrap">{{val.title}}</h3>
<p class="font-24 color-555 mt20 text-nowrap">{{val.introduction}}</p>
<div class="ulib-r750 fn-flex overflowhidden mt10" style="border-top-left-radius: 0;"
v-if="val.enrollEndTime">
<span class="font-22 color-333 bg-f8e26a pt5 pb5 pl10 pr10">截止时间</span>
<span class="font-22 color-fff bg-1a1a1a fn-flex-item pt5 pb5 pl10">{{val.enrollEndTime}}</span>
</div>
</div>
<div class="fn-flex fn-flex-between fn-flex-middle mt10">
<div class="text-middle">
<span class="font-22 color-999">市场价</span>
{{val.subTitle}}
</div>
<div>
<div class="btn ulib-r750 font-28 bg-f8e26a pt10 pb10 pl20 pr20"
@click="showEnroll(item.type,val)" v-if="val.enroll">
{{val.btnText}}
</div>
<div class="btn ulib-r750 font-28 bg-f8e26a pt10 pb10 pl20 pr20" v-else>
{{val.btnText}}
</div>
</div>
</div>
</div>
</div>
</div>
</template>
</template>
<aside class="fixed right-0 bottom-0 mr30 mb100 z-index-10" v-if="info.buttonType">
<ul>
<li class="mt20" v-if="info.buttonType==1">
<div class="imgsize-120X120 relative" @click="showGwEnroll()">
<van-image style="border: 0.6vw solid #ff3c3a;" width="16vw" height="16vw" fit="cover" round
:src="info.channelHeadImg"></van-image>
<i class="absolute left-0 right-0 bottom-0 mb5 d-icon-9"></i>
</div>
</li>
<li class="mt20" v-if="info.buttonType==2">
<span @click="showGwEnroll()">
<i class="inline-block d-icon-8"></i>
</span>
</li>
</ul>
</aside>
<!-- 富文本模块 -->
<div v-if="0" class="card-module overflowhidden" style="padding:0;background-color: transparent;">
<div class="font-28 line-height-15 color-555" v-html="info.content"></div>
@@ -345,27 +352,16 @@
<div class="card-module" style="width: 84vw;">
<div class="inner10">
<h3 class="text-center font-36 pt10 pb10">{{info.title}}</h3>
<div class="fn-flex fn-flex-center fn-flex-middle" v-if="showPopCarInfo">
<div class="fn-flex fn-flex-center fn-flex-middle">
<div class="wp33">
<van-image :src="popCarInfo.banner"></van-image>
</div>
<div class=" ml20 fn-flex fn-flex-center" style="flex-direction: column;" v-if="showType==2">
<h3 class="font-32 text-nowrap">立即咨询</h3>
</div>
<div class=" ml20 fn-flex fn-flex-center" style="flex-direction: column;" v-else>
<div class=" ml20 fn-flex fn-flex-center" style="flex-direction: column;">
<h3 class="font-32 text-nowrap">{{popCarInfo.title}}</h3>
<p class="ulib-r750 color-888 font-22 mt10"><span>指导价</span><span class="ml5">{{popCarInfo.subTitle}}</span>
</p>
</div>
</div>
<!--顾问信息-->
<div class="fn-flex fn-flex-center fn-flex-middle" v-if="showPopChannel && info.channelName">
<div class=" ml20 fn-flex fn-flex-center" style="flex-direction: column;">
<p class="ulib-r750 color-888 font-30 mt10 mb10">
<span>专属顾问:</span><span class="ml5">{{info.channelName}}</span>
</p>
</div>
</div>
<div class="bg-f1 ulib-r20 mb30">
<van-field v-model="form.name" label="" placeholder="请输入您的姓名"></van-field>
</div>
@@ -383,7 +379,7 @@
</div>
<div>
<button class="btn ulib-r20 bg-f8e26a block font-30 wp100 pt20 pb20 mt50" @click="enroll">
{{ showType==2 ? '立即领取': '提交'}}
提交
</button>
</div>
</div>
@@ -395,9 +391,8 @@
:style="{ 'min-height': '30%', 'background-color': 'transparent' }">
<div class="inner30 ulib-rt30 bg-fff" style="width: 100vw;margin:0;">
<div class="inner10">
<h3 class="text-center font-36 pt10 pb10" v-if="showType==2">立即咨询</h3>
<h3 class="text-center font-36 pt10 pb10" v-else>{{info.title}}</h3>
<div class="fn-flex fn-flex-center fn-flex-middle" v-if="showPopCarInfo">
<h3 class="text-center font-36 pt10 pb10">{{info.title}}</h3>
<div class="fn-flex fn-flex-center fn-flex-middle">
<div class="wp33">
<van-image :src="popCarInfo.banner"></van-image>
</div>
@@ -407,14 +402,6 @@
</p>
</div>
</div>
<!--顾问信息-->
<div class="fn-flex fn-flex-center fn-flex-middle" v-if="showPopChannel && info.channelName">
<div class=" ml20 fn-flex fn-flex-center" style="flex-direction: column;">
<p class="ulib-r750 color-888 font-30 mt10 mb10">
<span>专属顾问:</span><span class="ml5">{{info.channelName}}</span>
</p>
</div>
</div>
<div class="bg-f1 ulib-r20 mb30">
<van-field v-model="form.name" label="" placeholder="请输入您的姓名"></van-field>
</div>
@@ -432,7 +419,7 @@
</div>
<div>
<button class="btn ulib-r20 bg-f8e26a block font-30 wp100 pt20 pb20 mt50" @click="enroll">
{{ showType==2 ? '立即领取': '提交'}}
提交
</button>
</div>
</div>
@@ -453,11 +440,12 @@
</div>
<div class="text-center pl5 pr5 mt50" style="width: 100%;">
<span class="bg-fff ulib-r750 inline-block pt5 pb5 pl15 pr15 font-24">成交经纪人</span>
<p class="font-22 mt10 color-888 text-nowrap">厦门汽车空间站</p>
<p class="font-22 mt10 color-888 text-nowrap" v-if="info.biz">{{info.biz.biz_name}}</p>
</div>
</div>
<div class="inner30 fn-flex-item">
<h3 class="text-center font-36 pt10 pb10 mb15">百城车展焕新季</h3>
<h3 class="text-center font-36 pt10 pb10 mb15">{{info.title}}</h3>
<!--
<div class="box-shadow-darkGray inner10 ulib-r20 mb30 relative" style="background-color: #fffff8;">
<div class="fn-flex fn-flex-center fn-flex-middle">
<div class="wp33">
@@ -471,7 +459,7 @@
</div>
<div class="msg-arrow absolute box-middle"></div>
</div>
-->
<div class="bg-f1 ulib-r20 mb30">
<van-field v-model="form.name" label="" placeholder="请输入您的姓名"></van-field>
</div>
@@ -481,12 +469,14 @@
<div class="bg-f1 ulib-r20 mb30">
<van-field v-model="form.code" label="" placeholder="请输入手机验证码">
<template #button>
<p class="color-666 font-26">发送验证码</p>
<p v-if="!show_retry" class="color-666 font-26" @click="getCode">发送验证码</p>
<van-count-down style="color:#999;" v-else :time="counttime" :auto-start="true"
format="ss 秒后重发" @finish="retrySend"/>
</template>
</van-field>
</div>
<div>
<button class="btn ulib-r20 bg-f8e26a block font-30 wp100 pt20 pb20 mt50">提交</button>
<button class="btn ulib-r20 bg-f8e26a block font-30 wp100 pt20 pb20 mt50" @click="enroll">提交</button>
</div>
</div>
</div>
@@ -500,7 +490,7 @@
el: '#app',
data() {
return {
info: <?=json_encode($info)?>,
info: <?=json_encode($info);?>,
bg: '/img/h5/sytopic/bg.jpg',
modules: <?=$modules ? json_encode($modules, JSON_UNESCAPED_UNICODE) : '[]'?>,
car_swiper_index: 0,
@@ -512,8 +502,6 @@
phone: '',
code: ''
},
showPopCarInfo: false,
showPopChannel: false,
popCarInfo: {
banner: '',
title: '',
@@ -523,7 +511,6 @@
optionId: 0,
counttime: 60000,
show_retry: false,
showType: 1, // 1 活动标题 2立即咨询
logo_list: <?=json_encode($logoList);?>,
location_info: { // 地理位置信息 20240807
lat: 23.099994,
@@ -537,37 +524,20 @@
this.initSwpier(); // 20240807
},
methods: {
showGwEnroll(){
this.showPopChannel = true
this.showPopCarInfo = false
this.show_signup_bottom = true
this.showType = 1
showGwEnroll() {
this.show_signup_agent_bottom = true
},
showEnroll(type, row, showPopChannel, showType) {
this.showPopChannel = false
this.showPopCarInfo = false
showEnroll(type, row) {
let popUpType = row.popUpType ? parseInt(row.popUpType) : 0
if (parseInt(type) === 6) {
if (showPopChannel) {
this.showPopChannel = true
}
} else {
this.showPopCarInfo = true
this.popCarInfo.title = row.title
this.popCarInfo.subTitle = row.subTitle
this.popCarInfo.banner = row.banner
}
this.popCarInfo.title = row.title
this.popCarInfo.subTitle = row.subTitle
this.popCarInfo.banner = row.banner
this.optionId = row.id
if (popUpType === 1) {
this.show_signup_bottom = true
} else {
this.show_signup_center = true
}
if (showType) {
this.showType = 2
} else {
this.showType = 1
}
},
getCode() { //获取验证码
if (this.isSubmiting) {
@@ -610,6 +580,7 @@
var that = this;
$.post('/h5/market/sytopic/welcome/enroll', {
'optionId': this.optionId,
'topicId': this.info.id,
'skey': '<?=$skey?>',
'info': this.form
}, function (res) {
+3
View File
@@ -47,6 +47,7 @@ class Topic extends BaseController
$shareImg = $sharePhoto = $banner = [];
$jsonData = json_decode($v['jsondata'], true);
$jsonData['bg_color'] = $jsonData['bg_color'] ?: '';
$jsonData['button_type'] = $jsonData['button_type'] ?: '';
if ($v['banner']) {
$banner = [['uid' => 1, 'fileUrl' => $v['banner'], 'url' => build_qiniu_image_url($v['banner']), 'status' => 'done']];
}
@@ -131,6 +132,7 @@ class Topic extends BaseController
$setJsonData['banner'] = '';
}
$setJsonData['bg_color'] = $jsonData['bg_color'] ?: '';
$setJsonData['button_type'] = $jsonData['button_type'] ?: '';
$createTime = date('Y-m-d H:i:s');
$addData = ['title' => $title, 'banner' => $banner, 'status' => 1, 'createTime' => $createTime, 'organizationId' => $organizationId,
'sharePhoto' => $sharePhoto, 'shareTitle' => $shareTitle, 'timeStart' => $dateRange[0], 'timeEnd' => $dateRange[1], 'jsondata' => json_encode($setJsonData, JSON_UNESCAPED_UNICODE)];
@@ -184,6 +186,7 @@ class Topic extends BaseController
$setJsonData['banner'] = '';
}
$setJsonData['bg_color'] = $jsonData['bg_color'] ?: '';
$setJsonData['button_type'] = $jsonData['button_type'] ?: '';
$addData = ['title' => $title, 'banner' => $banner, 'organizationId' => $organizationId, 'sharePhoto' => $sharePhoto,
'shareTitle' => $shareTitle, 'timeStart' => $dateRange[0], 'timeEnd' => $dateRange[1], 'jsondata' => json_encode($setJsonData, JSON_UNESCAPED_UNICODE)];
$setShareImg && $addData['shareImg'] = $setShareImg;