feat: 联系我们成为分销商

This commit is contained in:
2025-04-21 11:59:11 +08:00
committed by jsasg
parent 5f39cbc30a
commit df1583e689
11 changed files with 380 additions and 49 deletions

View File

@@ -3,9 +3,13 @@ declare (strict_types = 1);
namespace app\index\controller; namespace app\index\controller;
use app\index\model\AgentBusinessTypeModel;
use app\index\model\AgentEnterpriseSizeTypeModel;
use app\index\model\AgentModel;
use app\index\model\LeaveMessageModel; use app\index\model\LeaveMessageModel;
use app\index\model\SysBannerModel; use app\index\model\SysBannerModel;
use app\index\validate\ContactUsValidate; use app\index\validate\ContactUsDistributorValidate;
use app\index\validate\ContactUsMessageValidate;
use think\facade\View; use think\facade\View;
/** /**
@@ -35,7 +39,7 @@ class ContactUs extends Common
]); ]);
// 数据校验 // 数据校验
$validate = new ContactUsValidate; $validate = new ContactUsMessageValidate;
if (!$validate->check($form_data)) { if (!$validate->check($form_data)) {
return error($validate->getError()); return error($validate->getError());
} }
@@ -92,7 +96,49 @@ class ContactUs extends Common
{ {
if (request()->isPost()) { if (request()->isPost()) {
// 提交留言处理 // 提交留言处理
$form_data = request()->post([
'corp_name',
'email',
'phone',
'business_type',
'enterprise_size',
'address',
'message'
]);
// 验证字段
$validate = new ContactUsDistributorValidate;
if (!$validate->check($form_data)) {
return error($validate->getError());
}
// 保存留言
$ret = AgentModel::create([
'language_id' => $this->lang_id,
'corp_name' => $form_data['corp_name'],
'email' => $form_data['email'],
'phone' => $form_data['phone'],
'referer_url' => request()->header('referer'),
'website_url' => request()->header('host'),
'business_type' => $form_data['business_type'],
'enterprise_size' => $form_data['enterprise_size'],
'address' => $form_data['address'],
'message' => $form_data['message'],
'ip' => request()->ip(),
]);
if ($ret->isEmpty()) {
return error(lang('contact_distributor.send_fail'));
}
return success(lang('contact_distributor.send_success'));
} }
// 获取企业规模
$sizes = AgentEnterpriseSizeTypeModel::language($this->lang_id)->select();
View::assign('sizes', $sizes);
// 获取企业业务类型
$types = AgentBusinessTypeModel::language($this->lang_id)->select();
View::assign('types', $types);
return View::fetch('distributor'); return View::fetch('distributor');
} }

View File

@@ -47,27 +47,66 @@ return [
'development' => 'Tech Development', 'development' => 'Tech Development',
], ],
'contact_message' => [ 'contact_message' => [
'title' => 'contact us', 'title' => 'contact us',
'our_information' => 'Our Information', 'our_information' => 'Our Information',
'send_question' => 'Send Us Your Question', 'send_question' => 'Send Us Your Question',
'form_name' => 'Yuor Name', 'form_name' => 'Yuor Name',
'form_name_placeholder' => 'This is your placeholder text', 'form_name_placeholder' => 'This is your placeholder text',
'form_email' => 'Your Email', 'form_email' => 'Your Email',
'form_email_placeholder' => 'This is your placeholder text', 'form_email_placeholder' => 'This is your placeholder text',
'form_question' => 'Your Message', 'form_question' => 'Your Message',
'form_question_placeholder' => 'This is your placeholder text', 'form_question_placeholder' => 'This is your placeholder text',
'form_submit' => 'SEND', 'form_submit' => 'SEND',
'become_a_distributor' => 'Become a Distributor', 'become_a_distributor' => 'Become a Distributor',
// 验证器中文本 // 验证器中文本
'validate_name_required' => 'Name is required', 'validate_name_required' => 'Name is required',
'validate_name_max' => 'Name cannot exceed 64 characters', 'validate_name_max' => 'Name cannot exceed 64 characters',
'validate_email_required' => 'Email is required', 'validate_email_required' => 'Email is required',
'validate_email_email' => 'Email format is incorrect', 'validate_email_email' => 'Email format is incorrect',
'validate_email_max' => 'Email cannot exceed 128 characters', 'validate_email_max' => 'Email cannot exceed 128 characters',
'validate_content_required' => 'Message is required', 'validate_content_required' => 'Message is required',
'validate_content_max' => 'Message cannot exceed 1024 characters', 'validate_content_max' => 'Message cannot exceed 1024 characters',
// 返回文本 // 返回文本
'send_success' => 'success', 'send_success' => 'success',
'send_fail' => 'fail', 'send_fail' => 'fail',
], ],
'contact_distributor' => [
'title' => 'Become a Distributor',
'section_title' => 'To Be Our Distributor',
'section_desc_1' => 'Ready to join us?',
'section_desc_2' => 'Enter your details below and our Sales team will get back to you within 2 business days.',
'form_corp_name' => 'Company Name',
'form_corp_name_placeholder' => 'Enter your Company Name',
'form_email' => 'Contact Email',
'form_email_placeholder' => 'Enter your Email',
'form_phone' => 'Phone Number',
'form_phone_placeholder' => 'This is your placeholder text',
'form_business_type' => 'Type of Business',
'form_online_shop_url' => 'Online Shop URL',
'form_online_shop_url_placeholder' => 'This is your placeholder URL',
'form_enterprise_size' => 'Enterprise size',
'form_corp_address' => 'Company Address',
'form_corp_address_placeholder' => 'Enter Address',
'form_message' => 'Message',
'form_message_placeholder' => 'Enter your message',
'form_submit' => 'SUBMIT',
// 验证器中文本
'validate_name_required' => 'Company Name is required',
'validate_name_max' => 'Company Name cannot exceed 64 characters',
'validate_email_required' => 'Email is required',
'validate_email_email' => 'Email format is incorrect',
'validate_email_max' => 'Email cannot exceed 128 characters',
'validate_phone_required' => 'Phone Number is required',
'validate_phone_max' => 'Phone Number cannot exceed 64 characters',
'validate_business_type_required' => 'Type of Business is required',
'validate_business_type_max' => 'Type of Business cannot exceed 128 characters',
'validate_enterprise_size_required' => 'Enterprise size is required',
'validate_enterprise_size_max' => 'Enterprise size cannot exceed 128 characters',
'validate_address_required' => 'Company Address is required',
'validate_address_max' => 'Company Address cannot exceed 255 characters',
'validate_message_required' => 'Message is required',
// 返回文本
'send_success' => 'Add Success',
'send_fail' => 'Add Fail',
]
]; ];

View File

@@ -47,27 +47,66 @@ return [
'development' => '品牌活动', 'development' => '品牌活动',
], ],
'contact_message' => [ 'contact_message' => [
'title' => '联系我们', 'title' => '联系我们',
'our_information' => '我们的信息', 'our_information' => '我们的信息',
'send_question' => '提交您的问题', 'send_question' => '提交您的问题',
'form_name' => '姓名', 'form_name' => '姓名',
'form_name_placeholder' => '请输入你的姓名', 'form_name_placeholder' => '请输入你的姓名',
'form_email' => '电子邮箱', 'form_email' => '电子邮箱',
'form_email_placeholder' => '请输入你的邮箱', 'form_email_placeholder' => '请输入你的邮箱',
'form_question' => '您的问题', 'form_question' => '您的问题',
'form_question_placeholder' => '请输入你的问题', 'form_question_placeholder' => '请输入你的问题',
'form_submit' => '发送', 'form_submit' => '发送',
'become_a_distributor' => '成为经销商', 'become_a_distributor' => '成为经销商',
// 验证器中文本 // 验证器中文本
'validate_name_required' => '姓名不能为空', 'validate_name_required' => '姓名不能为空',
'validate_name_max' => '姓名不能超过64个字符', 'validate_name_max' => '姓名不能超过64个字符',
'validate_email_required' => '邮箱不能为空', 'validate_email_required' => '邮箱不能为空',
'validate_email_email' => '邮箱格式不正确', 'validate_email_email' => '邮箱格式不正确',
'validate_email_max' => '邮箱不能超过128个字符', 'validate_email_max' => '邮箱不能超过128个字符',
'validate_content_required' => '问题不能为空', 'validate_content_required' => '问题不能为空',
'validate_content_max' => '问题不能超过1024个字符', 'validate_content_max' => '问题不能超过1024个字符',
// 返回文本 // 返回文本
'send_success' => '提交成功', 'send_success' => '提交成功',
'send_fail' => '提交失败', 'send_fail' => '提交失败',
], ],
'contact_distributor' => [
'title' => '成为经销商',
'section_title' => '成为经销商',
'section_desc_1' => '准备好加入我们了吗?',
'section_desc_2' => '在下面输入您的详细信息我们的销售团队将在2个工作日内回复您。',
'form_corp_name' => '公司名称',
'form_corp_name_placeholder' => '请输入公司名称',
'form_email' => '电子邮箱',
'form_email_placeholder' => '请输入邮箱',
'form_phone' => '电话号码',
'form_phone_placeholder' => '请输入电话号码',
'form_business_type' => '业务类型',
'form_online_shop_url' => '在线商店网址',
'form_online_shop_url_placeholder' => '请输入网址',
'form_enterprise_size' => '企业规模',
'form_corp_address' => '公司地址',
'form_corp_address_placeholder' => '请输入地址',
'form_message' => '留言',
'form_message_placeholder' => '请输入留言',
'form_submit' => '提交',
// 验证器中文本
'validate_name_required' => '公司名称不能为空',
'validate_name_max' => '公司名称不能超过64个字符',
'validate_email_required' => '邮箱不能为空',
'validate_email_email' => '邮箱格式不正确',
'validate_email_max' => '邮箱不能超过128个字符',
'validate_phone_required' => '电话号码不能为空',
'validate_phone_max' => '电话号码不能超过64个字符',
'validate_business_type_required' => '业务类型不能为空',
'validate_business_type_max' => '业务类型不能超过128个字符',
'validate_enterprise_size_required' => '企业规模不能为空',
'validate_enterprise_size_max' => '企业规模不能超过128个字符',
'validate_address_required' => '公司地址不能为空',
'validate_address_max' => '公司地址不能超过255个字符',
'validate_message_required' => '留言内容不能为空',
// 返回文本
'send_success' => '信息已成功提交',
'send_fail' => '信息提交失败',
]
]; ];

View File

@@ -0,0 +1,19 @@
<?php
declare (strict_types = 1);
namespace app\index\model;
use app\common\model\AgentBusinessTypeBaseModel;
/**
* 代理商业务类型模型
* @mixin \think\Model
*/
class AgentBusinessTypeModel extends AgentBusinessTypeBaseModel
{
// 所属语言范围查询
public function scopeLanguage($query, $language)
{
$query->where('language_id', '=', $language);
}
}

View File

@@ -0,0 +1,19 @@
<?php
declare (strict_types = 1);
namespace app\index\model;
use app\common\model\AgentEnterpriseSizeTypeBaseModel;
/**
* 代理商企业规模类型模型
* @mixin \think\Model
*/
class AgentEnterpriseSizeTypeModel extends AgentEnterpriseSizeTypeBaseModel
{
// 所属语言范围查询
public function scopeLanguage($query, $language)
{
$query->where('language_id', '=', $language);
}
}

View File

@@ -0,0 +1,15 @@
<?php
declare (strict_types = 1);
namespace app\index\model;
use app\common\model\AgentBaseModel;
/**
* 代理商模型
* @mixin \think\Model
*/
class AgentModel extends AgentBaseModel
{
//
}

View File

@@ -0,0 +1,48 @@
<?php
declare (strict_types = 1);
namespace app\index\validate;
use think\Validate;
class ContactUsDistributorValidate extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
'corp_name' => 'require|max:64',
'email' => 'require|email|max:128',
'phone' => 'require|max:64',
'business_type' => 'require|max:128',
'enterprise_size' => 'require|max:128',
'address' => 'require|max:255',
'message' => 'require',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'corp_name.require' => 'contact_distributor.validate_name_required',
'corp_name.max' => 'contact_distributor.validate_name_max',
'email.require' => 'contact_distributor.validate_email_required',
'email.email' => 'contact_distributor.validate_email_email',
'email.max' => 'contact_distributor.validate_email_max',
'phone.require' => 'contact_distributor.validate_phone_required',
'phone.max' => 'contact_distributor.validate_phone_max',
'business_type.require' => 'contact_distributor.validate_business_type_required',
'business_type.max' => 'contact_distributor.validate_business_type_max',
'enterprise_size.require' => 'contact_distributor.validate_enterprise_size_required',
'enterprise_size.max' => 'contact_distributor.validate_enterprise_size_max',
'address.require' => 'contact_distributor.validate_address_required',
'address.max' => 'contact_distributor.validate_address_max',
'message.require' => 'contact_distributor.validate_message_required',
];
}

View File

@@ -5,7 +5,7 @@ namespace app\index\validate;
use think\Validate; use think\Validate;
class ContactUsValidate extends Validate class ContactUsMessageValidate extends Validate
{ {
/** /**
* 定义验证规则 * 定义验证规则

View File

@@ -0,0 +1,105 @@
{extend name="public/base" /}
{block name="title"}
<title>{:lang('contact_distributor.title')}</title>
{/block}
{block name="style"}
<link rel="stylesheet" href="__CSS__/distributor.css" />
{/block}
{block name="main"}
<div class="orico_Page_distributor">
<!--内容 -->
<div class="distributorMain">
<h1 class="t1">{:lang('contact_distributor.section_title')}</h1>
<p class="s1" style="padding-bottom:5px">{:lang('contact_distributor.section_desc_1')}</p>
<p class="s1 s2">{:lang('contact_distributor.section_desc_2')}</p>
<!--内容-->
<form action="" method="post">
<div class="bd_ct">
<div class="thimg">
<img src="__IMAGES__/brand02.png" class="bdimg">
</div>
<div class="bd_from">
<div class="theit">
<div class="bditem">
<label class="itlable">{:lang('contact_distributor.form_corp_name')}<span class="redtag">*</span></label>
<input type="text" class="form-control itinp" name="corp_name" placeholder="{:lang('contact_distributor.form_corp_name_placeholder')}" />
</div>
<div class="bditem">
<label class="itlable">{:lang('contact_distributor.form_email')}<span class="redtag">*</span></label>
<input type="email" class="form-control itinp" name="email" placeholder="{:lang('contact_distributor.form_email_placeholder')}" />
</div>
</div>
<div class="theit">
<div class="bditem bditem1">
<label class="itlable">{:lang('contact_distributor.form_phone')}<span class="redtag">*</span></label>
<input type="text" class="form-control itinp" name="phone" placeholder="{:lang('contact_distributor.form_phone_placeholder')}" />
</div>
</div>
<div class="theit">
<div class="bditem">
<label class="itlable">{:lang('contact_distributor.form_business_type')}<span class="redtag">*</span></label>
<select name="business_type" class="form-control itinp">
{volist name="types" id="ty"}
<option value="{$ty.value}">{$ty.name}</option>
{/volist}
</select>
</div>
<div class="bditem">
<label class="itlable">{:lang('contact_distributor.form_online_shop_url')}</label>
<input type="text" class="form-control itinp" name="url" placeholder="{:lang('contact_distributor.form_online_shop_url_placeholder')}" />
</div>
</div>
<div class="theit">
<div class="bditem bditem1">
<label class="itlable">{:lang('contact_distributor.form_enterprise_size')}<span class="redtag">*</span></label>
<select name="enterprise_size" class="form-control itinp">
{volist name="sizes" id="si"}
<option value="{$si.value}">{$si.name}</option>
{/volist}
</select>
</div>
</div>
<div class="theit">
<div class="bditem bditem1">
<label class="itlable">{:lang('contact_distributor.form_corp_address')}<span class="redtag">*</span></label>
<input class="form-control itinp" name="address" placeholder="{:lang('contact_distributor.form_corp_address_placeholder')}" />
</div>
</div>
<div class="theit">
<div class="bditem bditem1">
<label class="itlable">{:lang('contact_distributor.form_message')}<span class="redtag">*</span></label>
<textarea class="ittextarea" name="message" placeholder="{:lang('contact_distributor.form_message_placeholder')}"></textarea>
</div>
</div>
</div>
</div>
<!-- 提交-->
<div class="bttj" id="send">{:lang('contact_distributor.form_submit')}</div>
</form>
</div>
</div>
{/block}
{block name="script"}
<script type="text/javascript">
$(function () {
$("#send").click(function () {
var form = $(this).parents("form");
$.ajax({
url: "{:url('contactus/distributor')}",
type: "post",
data: form.serialize(),
dataType: "json",
success: function (r) {
if (r.code == 0) {
form.get(0).reset();
}
alert(r.msg);
},
error: function (e) {
console.error(e);
}
})
})
})
</script>
{/block}

View File

@@ -1,7 +1,7 @@
.orico_Page_distributor { .orico_Page_distributor {
width: 100%; width: 100%;
position: relative; position: relative;
height: 100vh; min-height: 100vh;
overflow-y: auto; overflow-y: auto;
overflow-x: hidden; overflow-x: hidden;
background: #f2f2f2; background: #f2f2f2;
@@ -12,7 +12,7 @@
background: #fff; background: #fff;
border-radius: 1rem; border-radius: 1rem;
padding: 4.375rem 2.4375rem; padding: 4.375rem 2.4375rem;
margin: 2.5rem auto; margin: 6rem auto 2.5rem auto;
} }
.orico_Page_distributor .distributorMain .redtag { .orico_Page_distributor .distributorMain .redtag {
position: absolute; position: absolute;
@@ -107,6 +107,7 @@
background: #f2f2f2; background: #f2f2f2;
border: none; border: none;
border-radius: 0.5rem; border-radius: 0.5rem;
resize: none;
font-family: Montserrat-Regular, Montserrat; font-family: Montserrat-Regular, Montserrat;
} }
.orico_Page_distributor .distributorMain .bttj { .orico_Page_distributor .distributorMain .bttj {

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 KiB