Commit c4ff573e by LiuJunYi

地区分类

parent e879c80f
...@@ -8,13 +8,11 @@ ...@@ -8,13 +8,11 @@
namespace app\admin\controller; namespace app\admin\controller;
use app\admin\controller\AuthBase;
use app\common\model\Admin as AdminModel;
use app\admin\controller\Upload;
use app\common\model\Catalogs; use app\common\model\Catalogs;
use app\common\model\Citys; use app\common\model\Citys;
use app\common\model\Project as ProjectModel; use app\common\model\Project as ProjectModel;
use app\common\model\Tags; use app\common\model\Tags;
use app\common\model\Region as RegionModel;
class Project extends AuthBase class Project extends AuthBase
{ {
...@@ -552,13 +550,22 @@ class Project extends AuthBase ...@@ -552,13 +550,22 @@ class Project extends AuthBase
halt($project->getLastSql()); halt($project->getLastSql());
} }
//商家保存 //商家保存
public function save() public function save()
{ {
$level_1 = RegionModel::where('level', 1)->select();
$level_1 = collection($level_1)->visible(['id', 'title']);
if (input('id')) { if (input('id')) {
$info = ProjectModel::get(input('id')); $info = ProjectModel::get(input('id'));
$info['tags_arr'] = explode('|', trim($info->getData('tags'), '|')); $info['tags_arr'] = explode('|', trim($info->getData('tags'), '|'));
$this->assign('info', $info); $this->assign('info', $info);
//地域选择
$level_1_arr = $level_1;
$level_2_arr = RegionModel::where('level', 2)->where('pid',$info['level_1'])->select();
$level_3_arr = RegionModel::where('level', 3)->where('pid',$info['level_2'])->select();
$this->assign(compact('level_1_arr','level_2_arr','level_3_arr'));
} }
//分类 //分类
$catalogs = Catalogs::all(); $catalogs = Catalogs::all();
...@@ -584,7 +591,7 @@ class Project extends AuthBase ...@@ -584,7 +591,7 @@ class Project extends AuthBase
$this->error('操作失败'); $this->error('操作失败');
} }
} }
return $this->fetch('', compact('catalogs', 'city', 'tags')); return $this->fetch('', compact('catalogs', 'city', 'tags','level_1'));
} }
//上传图片 //上传图片
......
...@@ -61,6 +61,10 @@ class Region extends AuthBase ...@@ -61,6 +61,10 @@ class Region extends AuthBase
return json(['code' => 1, 'msg' => '删除失败']); return json(['code' => 1, 'msg' => '删除失败']);
} }
/**
* 修改
* @return \think\response\Json
*/
public function edit() public function edit()
{ {
if (request()->isAjax()) { if (request()->isAjax()) {
...@@ -74,6 +78,13 @@ class Region extends AuthBase ...@@ -74,6 +78,13 @@ class Region extends AuthBase
return json(['code' => 1, 'msg' => '访问失败']); return json(['code' => 1, 'msg' => '访问失败']);
} }
/**
* 查询
* @return array|\think\response\Json
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function select() public function select()
{ {
if(input('id')==0){ if(input('id')==0){
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
<link rel="stylesheet" href="/static/datetimepicker/css/bootstrap-datetimepicker.min.css"> <link rel="stylesheet" href="/static/datetimepicker/css/bootstrap-datetimepicker.min.css">
<link rel="stylesheet" href="/static/layui/css/layui.css"> <link rel="stylesheet" href="/static/layui/css/layui.css">
<script src="/static/layui/layui.js"></script> <script src="/static/layui/layui.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.min.js"></script>
<style type="text/css"> <style type="text/css">
...@@ -21,14 +22,19 @@ ...@@ -21,14 +22,19 @@
height: 92px; height: 92px;
margin: 0 10px 10px 0; margin: 0 10px 10px 0;
} }
.click-a{ .click-a {
color: #428bca; color: #428bca;
} }
.click-a:hover{
.click-a:hover {
color: #777; color: #777;
} }
[v-cloak] {
display: none;
}
</style> </style>
<section class="wrapper" style="padding-top: 20px;"> <section class="wrapper" style="padding-top: 20px;">
...@@ -45,8 +51,10 @@ ...@@ -45,8 +51,10 @@
<label class="col-sm-2 control-label text-right">类型</label> <label class="col-sm-2 control-label text-right">类型</label>
<div class="col-sm-10 col-md-8 col-lg-6"> <div class="col-sm-10 col-md-8 col-lg-6">
<select name="type" class="form-control" onchange="changeType(this.value)"> <select name="type" class="form-control" onchange="changeType(this.value)">
<option value="1" {if isset($info['type'])}{if $info['type']==1}selected{/if}{/if}>活动</option> <option value="1" {if isset($info[
<option value="2" {if isset($info['type'])}{if $info['type']==2}selected{/if}{/if}>商家</option> 'type'])}{if $info['type']==1}selected{/if}{/if}>活动</option>
<option value="2" {if isset($info[
'type'])}{if $info['type']==2}selected{/if}{/if}>商家</option>
</select> </select>
</div> </div>
</div> </div>
...@@ -64,22 +72,41 @@ ...@@ -64,22 +72,41 @@
<div class="col-sm-10 col-md-8 col-lg-6"> <div class="col-sm-10 col-md-8 col-lg-6">
<select class="form-control selectpicker" name='catalog_id' data-live-search="true"> <select class="form-control selectpicker" name='catalog_id' data-live-search="true">
{foreach $catalogs as $v} {foreach $catalogs as $v}
<option value="{$v['id']}" {if !empty($info['catalog_id'])} {if $info['catalog_id']==$v['id']}selected{/if} {/if}>{$v['name']}</option> <option value="{$v['id']}" {if !empty($info[
'catalog_id'])} {if $info['catalog_id']==$v['id']}selected{/if} {/if}>{$v['name']}</option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group" id="select" v-cloak>
<label class="col-sm-2 control-label text-right">国内/国外</label> <label class="col-sm-2 control-label text-right">地区</label>
<div class="col-sm-10 col-md-8 col-lg-6"> <div class="col-sm-10 col-md-8 col-lg-6 form-inline">
<select name="region_type" class="form-control"> <select class="form-control validate[required]" name="level_1"
<option value="1" {if isset($info['region_type'])}{if $info['region_type']==1}selected{/if}{/if}>国内</option> @change="change(1,$event.srcElement.value)" v-model="level_1_select">
<option value="2" {if isset($info['region_type'])}{if $info['region_type']==2}selected{/if}{/if}>国外</option> <option v-for="item in level_1" :value="item.id">{{item.title}}</option>
</select>
<select class="form-control validate[required]" name="level_2"
@change="change(2,$event.srcElement.value)" v-model="level_2_select">
<option v-for="item in level_2" :value="item.id">{{item.title}}</option>
</select>
<select class="form-control validate[required]" name="level_3"
@change="change(3,$event.srcElement.value)" v-model="level_3_select">
<option v-for="item in level_3" :value="item.id">{{item.title}}</option>
</select> </select>
</div> </div>
</div> </div>
<!--<div class="form-group">-->
<!--<label class="col-sm-2 control-label text-right">国内/国外</label>-->
<!--<div class="col-sm-10 col-md-8 col-lg-6">-->
<!--<select name="region_type" class="form-control">-->
<!--<option value="1" {if isset($info['region_type'])}{if $info['region_type']==1}selected{/if}{/if}>国内</option>-->
<!--<option value="2" {if isset($info['region_type'])}{if $info['region_type']==2}selected{/if}{/if}>国外</option>-->
<!--</select>-->
<!--</div>-->
<!--</div>-->
<div class="form-group type_toggle type-activity" id="time_period"> <div class="form-group type_toggle type-activity" id="time_period">
<label class="col-sm-2 control-label text-right">活动时间</label> <label class="col-sm-2 control-label text-right">活动时间</label>
<div class="col-sm-10 col-md-8 col-lg-6"> <div class="col-sm-10 col-md-8 col-lg-6">
...@@ -104,23 +131,24 @@ ...@@ -104,23 +131,24 @@
</div> </div>
</div> </div>
<div class="form-group"> <!--<div class="form-group">-->
<label class="col-sm-2 control-label text-right">城市</label> <!--<label class="col-sm-2 control-label text-right">城市</label>-->
<div class="col-sm-10 col-md-8 col-lg-6"> <!--<div class="col-sm-10 col-md-8 col-lg-6">-->
<select class="form-control selectpicker" name='city' data-live-search="true"> <!--<select class="form-control selectpicker" name='city' data-live-search="true">-->
{foreach city as $v} <!--{foreach city as $v}-->
<option value="{$v.id}" {if !empty($info['city'])} {if $v['id']==$info['city']}selected{/if} {/if}>{$v['name']}</option> <!--<option value="{$v.id}" {if !empty($info['city'])} {if $v['id']==$info['city']}selected{/if} {/if}>{$v['name']}</option>-->
{/foreach} <!--{/foreach}-->
</select> <!--</select>-->
</div> <!--</div>-->
</div> <!--</div>-->
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label text-right">标签</label> <label class="col-sm-2 control-label text-right">标签</label>
<div class="col-sm-10 col-md-8 col-lg-6"> <div class="col-sm-10 col-md-8 col-lg-6">
<select class="selectpicker form-control" name="tags[]" multiple data-live-search="true"> <select class="selectpicker form-control" name="tags[]" multiple data-live-search="true">
{foreach $tags as $v} {foreach $tags as $v}
<option value="{$v['id']}" {if !empty($info['tags'])} {if in_array($v['id'],$info['tags_arr'])}selected{/if} {/if}>{$v['name']}</option> <option value="{$v['id']}" {if !empty($info[
'tags'])} {if in_array($v['id'],$info['tags_arr'])}selected{/if} {/if}>{$v['name']}</option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
...@@ -139,13 +167,16 @@ ...@@ -139,13 +167,16 @@
<div class="col-sm-10 col-md-8 col-lg-6 "> <div class="col-sm-10 col-md-8 col-lg-6 ">
<div class="input-group"> <div class="input-group">
<span class="input-group-addon">经度</span> <span class="input-group-addon">经度</span>
<input step="0.000000000001" type="number" class="form-control validate[required]" name="longitude" placeholder="经度" <input step="0.000000000001" type="number" class="form-control validate[required]" name="longitude"
placeholder="经度"
value="{$info['longitude']??'';}"> value="{$info['longitude']??'';}">
<span class="input-group-addon">纬度</span> <span class="input-group-addon">纬度</span>
<input step="0.000000000001" type="number" class="form-control validate[required]" name="latitude" placeholder="纬度" <input step="0.000000000001" type="number" class="form-control validate[required]" name="latitude"
placeholder="纬度"
value="{$info['latitude']??'';}"> value="{$info['latitude']??'';}">
</div> </div>
<span class="form-group-tip"> 经纬度在地图上搜索并复制粘贴过来即可, <a class="click-a" href="http://www.gpsspg.com/maps.htm" <span class="form-group-tip"> 经纬度在地图上搜索并复制粘贴过来即可, <a class="click-a"
href="http://www.gpsspg.com/maps.htm"
target="_blank">立即查看地图</a></span> target="_blank">立即查看地图</a></span>
</div> </div>
</div> </div>
...@@ -153,7 +184,8 @@ ...@@ -153,7 +184,8 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label text-right">价格</label> <label class="col-sm-2 control-label text-right">价格</label>
<div class="col-sm-10 col-md-8 col-lg-6"> <div class="col-sm-10 col-md-8 col-lg-6">
<input step="0.01" type="number" class="form-control validate[required,custom[number]]" name="price" placeholder="价格" <input step="0.01" type="number" class="form-control validate[required,custom[number]]" name="price"
placeholder="价格"
value="{$info['price']??'';}"> value="{$info['price']??'';}">
</div> </div>
</div> </div>
...@@ -222,7 +254,8 @@ ...@@ -222,7 +254,8 @@
<div class="layui-upload-list"> <div class="layui-upload-list">
<img class="layui-upload-img" id="dome2" {:isset($info['kf_qrcode'])?"src='".$info->getData('kf_qrcode')."'":''}> <img class="layui-upload-img" id="dome2" {:isset($info['kf_qrcode'])?"src='".$info->getData('kf_qrcode')."'":''}>
<!-- <input type="hidden" name="kf_qrcode" value="{:isset($info['kf_qrcode'])?"src='".$info->getData('kf_qrcode')."'":''}" id="qrcode-input"> --> <!-- <input type="hidden" name="kf_qrcode" value="{:isset($info['kf_qrcode'])?"src='".$info->getData('kf_qrcode')."'":''}" id="qrcode-input"> -->
<input type="hidden" name="kf_qrcode" value="{:isset($info['kf_qrcode'])?$info->getData('kf_qrcode'):''}" id="qrcode-input"> <input type="hidden" name="kf_qrcode"
value="{:isset($info['kf_qrcode'])?$info->getData('kf_qrcode'):''}" id="qrcode-input">
</div> </div>
</div> </div>
</div> </div>
...@@ -234,7 +267,7 @@ ...@@ -234,7 +267,7 @@
<!-- 加载编辑器的容器 --> <!-- 加载编辑器的容器 -->
<script id="post_container" name="description" style="width: 100%" type="text/plain"><?php if(isset($info)){echo htmlspecialchars_decode($info->description);} ?></script> <script id="post_container" name="description" style="width: 100%" type="text/plain"><?php if(isset($info)){echo htmlspecialchars_decode($info->description);} ?></script>
</div> </div>
</div> </div>
{if isset($info)} {if isset($info)}
<input type="hidden" name="id" value="{$info['id']}"> <input type="hidden" name="id" value="{$info['id']}">
...@@ -257,9 +290,8 @@ ...@@ -257,9 +290,8 @@
<script type="text/javascript" src="/static/validation/js/jquery.validationEngine-zh_CN.js"></script> <script type="text/javascript" src="/static/validation/js/jquery.validationEngine-zh_CN.js"></script>
<script type="text/javascript" src="/static/validation/js/jquery.validationEngine.js"></script> <script type="text/javascript" src="/static/validation/js/jquery.validationEngine.js"></script>
<script type="text/javascript" src="/static/datetimepicker/js/bootstrap-datetimepicker.min.js"></script> <script type="text/javascript" src="/static/datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript" src="/static/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script> <script type="text/javascript" src="/static/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script
<!-- 编辑器配置文件 -->
<!-- 编辑器配置文件 -->
<script src="/static/qiniu_ueditor143/ueditor.config.js"></script> <script src="/static/qiniu_ueditor143/ueditor.config.js"></script>
<script src="/static/qiniu_ueditor143/ueditor.all.min.js"></script> <script src="/static/qiniu_ueditor143/ueditor.all.min.js"></script>
<script src="/static/qiniu_ueditor143/lang/zh-cn/zh-cn.js"></script> <script src="/static/qiniu_ueditor143/lang/zh-cn/zh-cn.js"></script>
...@@ -296,6 +328,7 @@ ...@@ -296,6 +328,7 @@
$('.type-business').fadeIn(); $('.type-business').fadeIn();
} }
} }
layui.use(['jquery', 'upload', 'form', 'layer'], function () { layui.use(['jquery', 'upload', 'form', 'layer'], function () {
var $ = layui.jquery var $ = layui.jquery
, upload = layui.upload , upload = layui.upload
...@@ -373,16 +406,16 @@ ...@@ -373,16 +406,16 @@
}); });
var ueditor = UE.getEditor('post_container', { var ueditor = UE.getEditor('post_container', {
//编辑区域大小 //编辑区域大小
'initialFrameHeight' : '350', 'initialFrameHeight': '350',
'elementPathEnabled':false, 'elementPathEnabled': false,
'autoHeight': false, 'autoHeight': false,
'autoHeightEnabled':false, 'autoHeightEnabled': false,
'autoFloatEnabled': false, 'autoFloatEnabled': false,
'iframeCssUrl': '/static/qiniu_ueditor143/themes/iframe.css',// 引入css 'iframeCssUrl': '/static/qiniu_ueditor143/themes/iframe.css',// 引入css
//定制菜单 //定制菜单
'toolbars' : [ 'toolbars': [
[ [
'fullscreen', 'source', 'undo', 'redo', '|', 'fullscreen', 'source', 'undo', 'redo', '|',
'fontsize', 'fontsize',
...@@ -400,5 +433,54 @@ ...@@ -400,5 +433,54 @@
}); });
//地域选择器
var level_1 = JSON.parse('{:json_encode($level_1)}');
level_1.unshift({id: 0, title: '全部'});
var app = new Vue({
el: '#select',
data: {
level_1: level_1,
level_2: [{id: 0, title: '全部'}],
level_3: [{id: 0, title: '全部'}],
level_1_select: 0,
level_2_select: 0,
level_3_select: 0,
},
methods: {
change: function (level, id) {
layer.load(2);
var level = level;
$.post("{:url('Region/select')}", {id: id}, function (data) {
layer.closeAll();
if (level == 1) {
app.$data.level_2 = data;
app.$data.level_2.unshift({id: 0, title: '全部'});
app.$data.level_3 = [{id: 0, title: '全部'}];
app.$data.level_2_select = 0;
app.$data.level_3_select = 0;
} else if (level == 2) {
app.$data.level_3 = data;
app.$data.level_3.unshift({id: 0, title: '全部'});
app.$data.level_3_select = 0;
}
});
}
},
{if isset($info)}
mounted:function () {
this.$data.level_1_select = {$info['level_1']?:0;};
this.$data.level_2_select = {$info['level_2']?:0;};
this.$data.level_3_select = {$info['level_3']?:0;};
this.$data.level_1 = JSON.parse('{:json_encode($level_1_arr)}');
this.$data.level_2 = JSON.parse('{:json_encode($level_2_arr)}');
this.$data.level_3 = JSON.parse('{:json_encode($level_3_arr)}');
this.$data.level_1.unshift({id: 0, title: '全部'});
this.$data.level_2.unshift({id: 0, title: '全部'});
this.$data.level_3.unshift({id: 0, title: '全部'});
}
{/if}
}
);
</script> </script>
</section> </section>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment