2023-11-27 09:45:13 +08:00

771 lines
33 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* @author Any
* @description KISS
* @date 2021年9月15日
* @version 1.0.0
*
* _____LOG_____
*
*/
use app\widgets\PickFile;
use app\assets\UeditorAsset;
UeditorAsset::register($this);
$this->title = $model->isNewRecord ? '创建门店' : '编辑门店';
$this->params['breadcrumbs'][] = ['label' => '门店列表', 'url' => [\Yii::$app->urlManager->createUrl(["admin/store/index"])]];
$this->params['breadcrumbs'][] = $this->title;
?>
<style>
.layui-input-block {
margin-left: 160px;
}
.layui-form-label {
width: 120px;
}
.laydate-time-list {
padding-bottom: 0;
overflow: hidden
}
.laydate-time-list > li {
width: 50% !important;
}
.laydate-time-list > li:last-child {
display: none;
}
</style>
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-header"><?= $this->title ?></div>
<div class="layui-card-body">
<div class="layui-row">
<div class="layui-col-md5">
<div class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label">门店名称</label>
<div class="layui-input-inline">
<input type="text" name="name" placeholder="请输入姓名" autocomplete="off"
class="layui-input" value="<?= $model->name ?>" lay-verify="required">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">门店电话</label>
<div class="layui-input-inline">
<input type="text" name="store_mobile" placeholder="请输入门店电话" autocomplete="off"
class="layui-input" value="<?= $model->store_mobile ?>" lay-verify="required">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item input-static">
<label class="layui-form-label">门店状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="0"
title="停业" <?= $model->status == null || $model->status == 0 ? 'checked' : '' ?>
lay-filter="static">
<input type="radio" name="status" value="1"
title="营业" <?= $model->status == 1 ? 'checked' : '' ?> lay-filter="static">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item layui-form" id="district">
<label class="layui-form-label">用户所在地区</label>
<div class="layui-input-inline" style="width:120px;" v-if="province.length != 0">
<select class="form-control province layui-select" lay-filter="province"
name="province_id" v-model="province_id" id="province_id" lay-ignore>
<option value="">请选择</option>
<option v-for="(item,index) in province"
:value="item.id" :data-index="index">{{item.name}}
</option>
</select>
</div>
<div class="layui-input-inline" style="width:120px;" v-if="city.length != 0">
<select class="form-control city layui-select" name="city_id" lay-filter="city"
v-model="city_id" id="city_id" lay-ignore>
<option value="">请选择</option>
<option v-for="(item,index) in city"
:value="item.id" :data-index="index">{{item.name}}
</option>
</select>
</div>
<div class="layui-input-inline" style="width:120px;" v-if="region.length != 0">
<select class="form-control city layui-select" name="region_id" lay-filter="region"
v-model="region_id" id="region_id" lay-ignore>
<option value="">请选择</option>
<option v-for="(item,index) in region"
:value="item.id" :data-index="index">{{item.name}}
</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">门店具体位置</label>
<div class="layui-input-block">
<input type="text" name="location_detail" placeholder="请输入门店具体位置" autocomplete="off"
class="layui-input" value="<?= $model->location_detail ?>">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">经度</label>
<div class="layui-input-inline">
<input type="text" name="lng" id="lng" placeholder="请输入经度" autocomplete="off"
class="layui-input" <?= !$model->isNewRecord ? 'disabled' : '' ?>
value="<?= $model->lng ?>" lay-verify="required">
</div>
<div class="layui-form-mid layui-word-aux">门店位置,请点击右侧地图获取点位经纬度</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">纬度</label>
<div class="layui-input-inline">
<input type="text" name="lat" id="lat" placeholder="请输入纬度" autocomplete="off"
class="layui-input" <?= !$model->isNewRecord ? 'disabled' : '' ?>
value="<?= $model->lat ?>" lay-verify="required">
</div>
<div class="layui-form-mid layui-word-aux">门店位置,请点击右侧地图获取点位经纬度</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">营业开始时间</label>
<div class="layui-input-inline">
<input type="text" name="begin_time" class="layui-input"
value="<?= $model->begin_time ?>" id="begin_time" autocomplete="off"
placeholder="HH:mm" readonly="readonly">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">营业结束时间</label>
<div class="layui-input-inline">
<input type="text" name="end_time" class="layui-input" value="<?= $model->end_time ?>"
id="end_time" autocomplete="off" placeholder="HH:mm" readonly="readonly">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">收益比例</label>
<div class="layui-input-inline">
<input type="number" name="ratio" placeholder="请输入收益比例" autocomplete="off"
class="layui-input" value="<?= $model->ratio ?>" lay-verify="required">
</div>
<div class="layui-form-mid layui-word-aux">区间:0-100,例:收益比例为1,则门店的收益为1%</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">店长收益比例</label>
<div class="layui-input-inline">
<input type="number" name="user_ratio" placeholder="请输入店长收益比例" autocomplete="off"
class="layui-input" value="<?= $model->user_ratio ?>" lay-verify="required">
</div>
<div class="layui-form-mid layui-word-aux">区间:0-100,例:收益比例为1,则门店的收益为1%</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">小兔开门设备码</label>
<div class="layui-input-inline">
<input type="text" name="sn" placeholder="小兔开门设备码" autocomplete="off"
class="layui-input" value="<?= $model->sn ?>">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">小兔开门金额</label>
<div class="layui-input-inline">
<input type="number" name="open_money" placeholder="请输入小兔开门金额" autocomplete="off"
class="layui-input" value="<?= $model->open_money ?>" lay-verify="required">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<?= PickFile::widget([
'accept' => 'images',
'id' => 'cover_pic',
'name' => 'cover_pic',
'label' => '封面',
'value' => $model->cover_pic ? $model->cover_pic : '',
'tip' => '建议图片大小650×320',
'required' => true,
'imageCompressEnable' => 1,
'imageCompressBorder' => 750,
]) ?>
<?= PickFile::widget([
'accept' => 'images',
'multiple' => true,
'id' => 'pic_urls',
'name' => 'pic_urls',
'label' => '轮播图',
'value' => $model->pic_urls ? $model->pic_urls : '',
'tip' => '图片大小750×360',
'required' => true,
'imageCompressEnable' => 1,
'imageCompressBorder' => 750,
]) ?>
<div class="layui-form-item">
<label class="layui-form-label required">内容</label>
<div class="layui-input-block">
<textarea id="editor" style="width: 100%"
name="content"
rows="30"><?= $model->content ? $model->content : "" ?></textarea>
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">店长公告</label>
<div class="layui-input-block">
<textarea id="editor1" style="width: 100%"
name="content_page"
rows="30"><?= $model->content_page ? $model->content_page : "" ?></textarea>
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label">角色</label>
<div class="layui-input-block">
<?php foreach ($role_list as $index => $item): ?>
<input type="checkbox" value="<?= $item['id'] ?>" name="role_ids[]"
title="<?= $item['name'] ?>"
lay-skin="primary" <?= $item['checked'] ? 'checked' : '' ?>>
<?php endforeach; ?>
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<div class="">
<button class="layui-btn" lay-submit="" lay-filter="layui-form-submit">保存</button>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-md2">
<div class="layui-input-block"></div>
</div>
<div class="layui-col-md5">
<div class="layui-form-item">
<label class="layui-form-label">输入城市和关键词搜索</label>
<div class="layui-input-block">
<input type="text" style="width: 120px;float: left" id="mRegion" name="mRegion"
lay-verify="" placeholder="城市" autocomplete="off"
class="layui-input">
<input type="text" style="width: 120px;float: left" id="mKeywords" name="mKeywords"
lay-verify="" placeholder="关键词" autocomplete="off"
class="layui-input">
<button type="button" class="layui-btn" id="mSearch">搜索</button>
</div>
<div class="layui-form-mid layui-word-aux" style="margin-left: 110px;"></div>
</div>
<div class="layui-form-item">
<body onload="initMap()">
<div id="container"></div>
<div id="info">
当前点击坐标为:<span id="position"></span>
</div>
</body>
</div>
</div>
</div>
</div>
</div>
</div>
<script charset="utf-8"
src="https://map.qq.com/api/gljs?v=1.exp&key=<?= \Yii::$app->params['mapKey']['qqmap'] ?>"></script>
<script charset="utf-8"
src="https://map.qq.com/api/js?v=2.exp&key=<?= \Yii::$app->params['mapKey']['qqmap'] ?>"></script>
<script type="text/javascript">
<?php $this->beginBlock('js_script_wrap') ?>
var _form = null;
var app = new Vue({
el: '#district',
data: {
province: <?=$district?>,
city: [],
region: [],
province_id: "<?=$model->province_id != null ? $model->province_id : ''?>",
city_id: "<?=$model->city_id != null ? $model->city_id : ''?>",
region_id: "<?=$model->region_id != null ? $model->region_id : ''?>",
}
});
app.city = app.province.length != 0 ? app.province[0].list : [];
app.region = app.city.length != 0 ? app.city[0].list : [];
$(app.province).each(function (i) {
if (app.province[i].id == app.province_id) {
app.city = app.province[i].list;
return true;
}
});
$(app.city).each(function (i) {
if (app.city[i].id == app.city_id) {
app.region = app.city[i].list;
return true;
}
});
var center = null
var searchService, map, markers = [];
var marker = null
var markerLayer = null
var isNewRecord = '<?= $model->isNewRecord?>'
var lat = '<?= $model->lat ?>'
var lng = '<?= $model->lng ?>'
var initMap = function () {
if (isNewRecord) {
center = new TMap.LatLng(24.476404, 118.129105);
} else {
center = new TMap.LatLng(lat, lng);
setTimeout(function () {
createMarker(lat, lng);
}, 1000)
}
//初始化地图
map = new TMap.Map("container", {
rotation: 20,//设置地图旋转角度
pitch: 30, //设置俯仰角度0~45
zoom: 12,//设置地图缩放级别
center: center//设置地图中心点坐标
});
//监听点击事件添加marker
map.on("click", (evt) => {
var lat = evt.latLng.getLat().toFixed(6);
var lng = evt.latLng.getLng().toFixed(6);
position.innerHTML = lat + "," + lng;
$('#lat').val(lat)
$('#lng').val(lng)
locationToAddress(lat, lng);
if (!marker) {
createMarker(lat, lng)
} else {
marker.setMap(null);
marker = null;
createMarker(lat, lng)
}
});
//创建marker事件
function createMarker(lat, lng) {
if (!marker) {
marker = new TMap.MultiMarker({
id: 'marker-layer',
map: map,
styles: {
"marker": new TMap.MarkerStyle({
"width": 25,
"height": 35,
"anchor": {x: 16, y: 32},
"src": 'https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/markerDefault.png'
})
},
geometries: [{
"id": 'demo',
"styleId": 'marker',
"position": new TMap.LatLng(lat, lng),
"properties": {
"title": "marker"
}
}]
});
}
}
var latlngBounds = new qq.maps.LatLngBounds();
//调用Poi检索类
searchService = new qq.maps.SearchService({
complete: function (results) {
var pois = results.detail.pois;
if (!pois) {
layer.alert('关键字搜索不到,请重新输入');
return;
}
for (var i = 0, l = pois.length; i < l; i++) {
(function (n) {
var poi = pois[n];
if (i == 0) {
map.setCenter(new TMap.LatLng(poi.latLng.lat, poi.latLng.lng));
}
latlngBounds.extend(poi.latLng);
let _marker = new TMap.MultiMarker({
id: 'mkr_' + (new Date()).getTime() + '_' + i,
map: map,
styles: {
"marker": new TMap.MarkerStyle({
"width": 25,
"height": 35,
"anchor": {x: 16, y: 32},
"src": 'https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/markerDefault.png'
})
},
geometries: [{
"id": 'demo',
"styleId": 'marker',
"position": new TMap.LatLng(poi.latLng.lat, poi.latLng.lng),
"properties": {
"title": "marker"
}
}]
});
_marker.on("click", function (e) {
mapClearOverlays(markers);
createMarker(e.latLng.lat, e.latLng.lng);
locationToAddress(e.latLng.lat, e.latLng.lng);
$('#lat').val(e.latLng.lat);
$('#lng').val(e.latLng.lng);
});
markers.push(_marker);
})(i);
}
//map.fitBounds(latlngBounds);
}
});
//清除地图上的marker
function mapClearOverlays(overlays) {
var overlay;
while (overlay = overlays.pop()) {
overlay.setMap(null);
}
}
function mapSearchKeyword() {
var keyword = $("#mKeywords").val();
var region = $("#mRegion").val();
mapClearOverlays(markers);
searchService.setLocation(region);
searchService.search(keyword);
}
$(document).on('click', '#mSearch', function () {
mapSearchKeyword();
});
};
function locationToAddress(lat, lng) {
var url = '<?= \Yii::$app->urlManager->createUrl(["/api/geocoder/district-info"]) ?>';
$.ajax(url, {
type: "GET",
dataType: "json",
data: {
lat: lat,
lng: lng
},
timeout: 10000,
success: function (res) {
if (res.code == 0) {
app.province_id = res.data.province.id;
app.city_id = res.data.city.id;
app.region_id = res.data.district.id;
$(app.province).each(function (i) {
if (app.province[i].id == app.province_id) {
app.city = app.province_id != 0 ? app.province[i].list : [];
$(app.city).each(function (j) {
if (app.city[j].id == app.city_id) {
app.region = app.city[j].list;
app.$forceUpdate();
setTimeout(function () {
_form.render('select');
}, 500);
return true;
}
});
return true;
}
});
} else {
layer.msg(res.msg, {
offset: '15px'
, icon: 2
, time: 1000
}, function () {
});
}
},
error: function (xhr, type, err) {
layer.msg(xhr.responseText, {
offset: '15px'
, icon: 2
, time: 1000
}, function () {
});
},
complete: function () {
}
})
}
layui.config({
base: '/statics/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'user', 'tree', 'laydate'], function () {
var $ = layui.$
, setter = layui.setter
, tree = layui.tree
, admin = layui.admin
, laydate = layui.laydate
, router = layui.router()
, search = router.search;
laydate.render({
elem: '#begin_time'
, type: 'time'
, format: 'HH:mm' //可任意组合
, theme: 'HH:mm'
});
laydate.render({
elem: '#end_time'
, type: 'time'
, format: 'HH:mm' //可任意组合
, theme: 'HH:mm'
});
_form = layui.form
_form.render();
//提交
var submitLock = false;
_form.on('submit(layui-form-submit)', function (obj) {
if (submitLock) {
return false;
}
submitLock = true;
//请求登入接口
//console.log(obj)
var url = '<?= \Yii::$app->urlManager->createUrl(["/admin/store/edit", 'id' => $model->id ? $model->id : 0]) ?>';
var returnUrl = "<?= $return_url ?>";
var data = obj.field;
data.pic_urls = JSON.stringify(_gallery_pic_urls);
data.content = UE.getEditor('editor').getContent();
data.content_page = UE.getEditor('editor1').getContent();
data._csrf = _csrf;
console.log(data)
$.ajax(url, {
type: "POST",
dataType: "json",
data: data,
timeout: 10000,
success: function (res) {
if (res.code == 0) {
layer.msg(res.msg, {
offset: '15px'
, icon: 1
, time: 1000
}, function () {
if (returnUrl) {
location.href = returnUrl;
} else {
location.reload();
}
});
} else {
layer.msg(res.msg, {
offset: '15px'
, icon: 2
, time: 1000
}, function () {
});
}
},
error: function (xhr, type, err) {
layer.msg(xhr.responseText, {
offset: '15px'
, icon: 2
, time: 1000
}, function () {
});
},
complete: function () {
submitLock = false;
}
})
});
$(document).on('change', '#province_id', function () {
app.province_id = this.value;
$(app.province).each(function (i) {
if (app.province[i].id == app.province_id) {
app.city = app.province_id != 0 ? app.province[i].list : [];
app.city_id = app.province_id != 0 ? app.province[i].list[0]['id'] : 0;
app.region = app.province_id != 0 ? app.city[0].list : [];
app.region_id = app.province_id != 0 ? app.city[0].list[0]['id'] : 0;
app.province_id = app.province_id == 0 ? '' : app.province_id;
app.$forceUpdate();
setTimeout(function () {
_form.render('select');
$("#mRegion").val(app.province_id != 0 ? app.province[i].list[0]['name'] : '');
}, 500);
return true;
}
});
});
$(document).on('change', '#city_id', function () {
app.city_id = this.value;
$(app.city).each(function (i) {
if (app.city[i].id == app.city_id) {
app.region = app.city[i].list;
app.region_id = app.city[i].list[0]['id'];
app.$forceUpdate();
setTimeout(function () {
_form.render('select');
$("#mRegion").val(app.city[i].name);
}, 500);
return true;
}
});
});
$(document).on('change', '#region_id', function () {
app.region_id = this.value;
setTimeout(function () {
_form.render('select');
}, 500);
});
var ue = UE.getEditor('editor', {
serverUrl: "<?= \Yii::$app->urlManager->createUrl(['file/upload']) ?>",
toolbars: [
[
'anchor', //锚点
'undo', //撤销
'redo', //重做
'bold', //加粗
'indent', //首行缩进
'italic', //斜体
'underline', //下划线
'strikethrough', //删除线
'subscript', //下标
'fontborder', //字符边框
'superscript', //上标
'formatmatch', //格式刷
'source', //源代码
'blockquote', //引用
'pasteplain', //纯文本粘贴模式
'selectall', //全选
'preview', //预览
'horizontal', //分隔线
'removeformat', //清除格式
'time', //时间
'date', //日期
'unlink', //取消链接
'cleardoc', //清空文档
'insertcode', //代码语言
'fontfamily', //字体
'fontsize', //字号
'paragraph', //段落格式
'simpleupload', //单图上传
'insertimage', //多图上传
'link', //超链接
'emotion', //表情
'spechars', //特殊字符
'help', //文章
'justifyleft', //居左对齐
'justifyright', //居右对齐
'justifycenter', //居中对齐
'justifyjustify', //两端对齐
'forecolor', //字体颜色
'insertorderedlist', //有序列表
'insertunorderedlist', //无序列表
'fullscreen', //全屏
'rowspacingtop', //段前距
'rowspacingbottom', //段后距
'wordimage', //图片转存
'lineheight', //行间距
'customstyle', //自定义标题
'autotypeset', //自动排版
'drafts', // 从草稿箱加载
]
]
});
var ue = UE.getEditor('editor1', {
serverUrl: "<?= \Yii::$app->urlManager->createUrl(['file/upload']) ?>",
toolbars: [
[
'anchor', //锚点
'undo', //撤销
'redo', //重做
'bold', //加粗
'indent', //首行缩进
'italic', //斜体
'underline', //下划线
'strikethrough', //删除线
'subscript', //下标
'fontborder', //字符边框
'superscript', //上标
'formatmatch', //格式刷
'source', //源代码
'blockquote', //引用
'pasteplain', //纯文本粘贴模式
'selectall', //全选
'preview', //预览
'horizontal', //分隔线
'removeformat', //清除格式
'time', //时间
'date', //日期
'unlink', //取消链接
'cleardoc', //清空文档
'insertcode', //代码语言
'fontfamily', //字体
'fontsize', //字号
'paragraph', //段落格式
'simpleupload', //单图上传
'insertimage', //多图上传
'link', //超链接
'emotion', //表情
'spechars', //特殊字符
'help', //文章
'justifyleft', //居左对齐
'justifyright', //居右对齐
'justifycenter', //居中对齐
'justifyjustify', //两端对齐
'forecolor', //字体颜色
'insertorderedlist', //有序列表
'insertunorderedlist', //无序列表
'fullscreen', //全屏
'rowspacingtop', //段前距
'rowspacingbottom', //段后距
'wordimage', //图片转存
'lineheight', //行间距
'customstyle', //自定义标题
'autotypeset', //自动排版
'drafts', // 从草稿箱加载
]
]
});
});
<?php $this->endBlock(); ?>
</script>
<?php $this->registerJs($this->blocks['js_script_wrap'], \yii\web\View::POS_END); ?>