mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-04-06 03:58:04 +08:00
修改邮费模板管理
This commit is contained in:
parent
07a2c65fbe
commit
ba2205de89
@ -3,7 +3,6 @@
|
||||
namespace app\data\controller;
|
||||
|
||||
use app\data\service\TruckService;
|
||||
use app\store\service\OpenCuciService;
|
||||
use think\admin\Controller;
|
||||
use think\admin\service\SystemService;
|
||||
use think\exception\HttpResponseException;
|
||||
@ -75,7 +74,10 @@ class ShopTruckCompany extends Controller
|
||||
*/
|
||||
public function state()
|
||||
{
|
||||
$this->_save($this->table);
|
||||
$this->_save($this->table, $this->_vali([
|
||||
'status.in:0,1' => '状态值范围异常!',
|
||||
'status.require' => '状态值不能为空!',
|
||||
]));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -5,10 +5,9 @@ namespace app\data\controller;
|
||||
use app\data\service\TruckService;
|
||||
use think\admin\Controller;
|
||||
use think\admin\extend\CodeExtend;
|
||||
use think\admin\extend\DataExtend;
|
||||
|
||||
/**
|
||||
* 配送运费模板管理
|
||||
* 邮费模板管理
|
||||
* Class ShopTruckTemplate
|
||||
* @package app\data\controller
|
||||
*/
|
||||
@ -31,12 +30,14 @@ class ShopTruckTemplate extends Controller
|
||||
public function index()
|
||||
{
|
||||
$this->title = '快递邮费配置';
|
||||
$query = $this->_query($this->table)->like('name');
|
||||
$query = $this->_query($this->table);
|
||||
$query->like('code,name')->dateBetween('create_at');
|
||||
$query->where(['deleted' => 0])->order('sort desc,id desc')->page();
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加配送邮费模板
|
||||
* @auth true
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
@ -44,7 +45,20 @@ class ShopTruckTemplate extends Controller
|
||||
public function add()
|
||||
{
|
||||
$this->title = '添加配送邮费模板';
|
||||
$this->_form($this->table, 'form');
|
||||
$this->_form($this->table, 'form', 'code');
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑配送邮费模板
|
||||
* @auth true
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
$this->title = '编辑配送邮费模板';
|
||||
$this->_form($this->table, 'form', 'code');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -61,41 +75,38 @@ class ShopTruckTemplate extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
public function region()
|
||||
/**
|
||||
* 表单结果处理
|
||||
* @param boolean $result
|
||||
*/
|
||||
protected function _form_result($result)
|
||||
{
|
||||
$this->citys = TruckService::instance()->region(2);
|
||||
$this->fetch('form_region');
|
||||
if ($result && $this->request->isPost()) {
|
||||
$this->success('邮费模板保存成功!', 'javascript:history.back()');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改快递模板
|
||||
* 启用或禁用邮费模板
|
||||
* @auth true
|
||||
* @throws \think\db\exception\DbException
|
||||
*/
|
||||
public function edit()
|
||||
public function state()
|
||||
{
|
||||
[$list, $idxs, $post] = [[], [], $this->request->post()];
|
||||
foreach (array_keys($post) as $key) if (stripos($key, 'order_reduction_state_') !== false) {
|
||||
$idxs[] = str_replace('order_reduction_state_', '', $key);
|
||||
}
|
||||
foreach (array_unique($idxs) as $index) if (!empty($post["rule_{$index}"])) $list[] = [
|
||||
'rule' => ',' . join(',', $post["rule_{$index}"]) . ',',
|
||||
// 订单满减配置
|
||||
'order_reduction_state' => $post["order_reduction_state_{$index}"],
|
||||
'order_reduction_price' => $post["order_reduction_price_{$index}"],
|
||||
// 首件邮费配置
|
||||
'first_number' => $post["first_number_{$index}"],
|
||||
'first_price' => $post["first_price_{$index}"],
|
||||
// 首件邮费配置
|
||||
'next_number' => $post["next_number_{$index}"],
|
||||
'next_price' => $post["next_price_{$index}"],
|
||||
// 默认邮费规则
|
||||
'is_default' => $post["is_default_{$index}"],
|
||||
];
|
||||
if (empty($list)) $this->error('请配置有效的邮费规则');
|
||||
$this->app->db->name($this->table)->where('1=1')->delete();
|
||||
$this->app->db->name($this->table)->insertAll($list);
|
||||
$this->success('邮费规则配置成功!');
|
||||
$this->_save($this->table, $this->_vali([
|
||||
'status.in:0,1' => '状态值范围异常!',
|
||||
'status.require' => '状态值不能为空!',
|
||||
]), 'code');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除邮费模板
|
||||
* @auth true
|
||||
* @throws \think\db\exception\DbException
|
||||
*/
|
||||
public function remove()
|
||||
{
|
||||
$this->_delete($this->table, 'code');
|
||||
}
|
||||
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
|
||||
{block name="content"}
|
||||
<div id="TruckForm">
|
||||
<form onsubmit="return false;" action="{:request()->url()}" method="post" class='layui-form layui-card' autocomplete="off">
|
||||
<form onsubmit="return false;" data-auto="true" action="{:request()->url()}" method="post" class='layui-form layui-card' autocomplete="off">
|
||||
<div class="layui-card-body padding-40">
|
||||
<label class="layui-form-item block relative">
|
||||
<span class="color-green font-w7 margin-right-5">邮费模板名称</span><span class="color-desc">Name</span>
|
||||
@ -20,31 +20,34 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="item in rules">
|
||||
<tr ng-repeat="item in rules" ng-if="item.city.length > 0">
|
||||
<td>
|
||||
<span class="margin-right-5" ng-repeat="province in item.city" ng-if="ShowProvinceStatus(province)">
|
||||
<b class="font-w7" ng-bind="province.name"></b>
|
||||
<span class="color-desc">{{ShowProvinceCityName(province)}}</span>
|
||||
</span>
|
||||
<span class="margin-right-5" ng-repeat="province in item.city" ng-if="ShowProvinceStatus(province)">
|
||||
<b class="font-w7" ng-bind="province.name"></b>
|
||||
<b class="color-desc">{{ShowProvinceCityName(province)}}</b>
|
||||
</span>
|
||||
<a class="margin-left-5" ng-click="EditRuleItem(item)">编辑</a>
|
||||
<a class="margin-left-5" ng-click="RemoveRuleItem(item)">删除</a>
|
||||
</td>
|
||||
<td><input class="layui-input" ng-model="item.rule.firstNumber"></td>
|
||||
<td><input class="layui-input" ng-model="item.rule.firstAmount"></td>
|
||||
<td><input class="layui-input" ng-model="item.rule.repeatNumber"></td>
|
||||
<td><input class="layui-input" ng-model="item.rule.repeatAmount"></td>
|
||||
<td class="padding-0"><input class="layui-input border-0" ng-model="item.rule.firstNumber"></td>
|
||||
<td class="padding-0"><input class="layui-input border-0" ng-model="item.rule.firstAmount"></td>
|
||||
<td class="padding-0"><input class="layui-input border-0" ng-model="item.rule.repeatNumber"></td>
|
||||
<td class="padding-0"><input class="layui-input border-0" ng-model="item.rule.repeatAmount"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="5"><a ng-click="AddRuleItem()">添加可配送区域和运费</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<label class="layui-form-item text-center layui-hide">
|
||||
<textarea name="content" class="layui-textarea layui-bg-gray">{{getRuleData()}}</textarea>
|
||||
<textarea name="default" class="layui-textarea layui-bg-gray">{$vo.content|default=''|raw}</textarea>
|
||||
</label>
|
||||
<div class="hr-line-dashed"></div>
|
||||
{if auth('edit')}
|
||||
{notempty name='vo.code'}<input type="hidden" name="code" value="{$vo.code}">{/notempty}
|
||||
<div class="layui-form-item text-center">
|
||||
<button class="layui-btn" type='submit'>保存数据</button>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@ -83,6 +86,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item text-center">
|
||||
<button class="layui-btn" ng-click="SetRuleItem()">确定选择</button>
|
||||
</div>
|
||||
@ -104,6 +108,22 @@
|
||||
$rootScope.rules = [];
|
||||
$rootScope.city = {subs: []};
|
||||
$rootScope.citys = angular.fromJson(_data) || [];
|
||||
/*! 生成待提交的数据 */
|
||||
$rootScope.getRuleData = function () {
|
||||
var data = [];
|
||||
$rootScope.rules.forEach(function (rule) {
|
||||
var item = {city: [], rule: rule.rule};
|
||||
rule.city.forEach(function (province) {
|
||||
var citys = [];
|
||||
province.subs.forEach(function (city) {
|
||||
citys.push(city.name)
|
||||
});
|
||||
item.city.push({name: province.name, subs: citys})
|
||||
});
|
||||
if (item.city.length > 0) data.push(item);
|
||||
});
|
||||
return data;
|
||||
};
|
||||
/*! 默认显示城市 */
|
||||
$rootScope.citys.forEach(function (item) {
|
||||
delete item.id, delete item.pid;
|
||||
@ -196,16 +216,18 @@
|
||||
if (item.show) item.status = !!province.status;
|
||||
});
|
||||
};
|
||||
/*! 显示区域选择器 */
|
||||
$rootScope.showDialog = function () {
|
||||
layui.layer.open({
|
||||
type: 1, shade: false, area: '800px', title: '选择配送区域',
|
||||
type: 1, shade: false, area: '800px', title: '区域选择器',
|
||||
content: $('#RegionDialog').removeClass('layui-hide'), end: function () {
|
||||
$('#RegionDialog').addClass('layui-hide');
|
||||
$rootScope.SetRuleItem();
|
||||
}
|
||||
});
|
||||
};
|
||||
$rootScope.$watch('citys', function () {
|
||||
/*! 实时生成规则数据 */
|
||||
$rootScope.setRuleData = function () {
|
||||
/*! 合并当前操作数据到缓存 */
|
||||
var _province_cache = {}, _city_cache = {};
|
||||
$rootScope.rule.city.forEach(function (province) {
|
||||
@ -238,7 +260,27 @@
|
||||
if (province.subs.length > 0) provinces.push(province);
|
||||
}
|
||||
$rootScope.rule.city = provinces;
|
||||
}, true);
|
||||
}
|
||||
/*! 数据变化监听处理 */
|
||||
$rootScope.$watch('citys', $rootScope.setRuleData, true);
|
||||
/*! 默认数据显示处理 */
|
||||
var defaultItems = angular.fromJson($('[name="default"]').val() || '[]') || [];
|
||||
defaultItems.forEach(function (item) {
|
||||
$rootScope.rule = angular.fromJson(angular.toJson(_rule));
|
||||
$rootScope.rule.rule = item.rule;
|
||||
$rootScope.rules.push($rootScope.rule);
|
||||
item.city.forEach(function (province) {
|
||||
province.subs.forEach(function (city) {
|
||||
$rootScope.citys.forEach(function (_item) {
|
||||
_item.subs.forEach(function (_city) {
|
||||
if (_city.name === city) _city.status = true;
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
$rootScope.setRuleData();
|
||||
$rootScope.SetRuleItem();
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
@ -1,55 +0,0 @@
|
||||
<fieldset class="margin-bottom-20 relative" data-item-boxs>
|
||||
|
||||
<legend class="color-green font-s14">
|
||||
<span class="layui-badge">{$group|default='邮费规则分组'}</span>
|
||||
<input type="hidden" name="group[]" value="{$group|default='邮费规则分组'}">
|
||||
</legend>
|
||||
|
||||
{if $group neq '默认邮费模板'}
|
||||
<a onclick="delRuleItem(this)" class="layui-btn layui-btn-sm layui-btn-danger absolute" style="top:15px;right:5px;padding:0 5px">
|
||||
<i class="layui-icon layui-icon-close margin-left-5 margin-right-5"></i>
|
||||
</a>
|
||||
<input type="hidden" name="default[]" value="1">
|
||||
{else}
|
||||
<input type="hidden" name="default[]" value="0">
|
||||
{/if}
|
||||
|
||||
<div class="layui-form-item block relative">
|
||||
|
||||
<div class="color-desc font-s14">订单总金额满足条件时将减免该订单的所有邮费(请谨慎配置)</div>
|
||||
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label font-s14 padding-left-0 padding-right-10" style="width:auto">订单总金额满</label>
|
||||
<div class="layui-input-inline" style="width:100px;">
|
||||
<input type="text" name="reduct_amount[]" placeholder="¥" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<label class="layui-form-label padding-left-5 padding-right-5" style="width:auto">元包邮</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div data-city-box class="layui-form-item">
|
||||
<div class="color-desc">
|
||||
根据配送目的地的省份进行运费计算邮费(不在规则内的将使用默认邮费规则)
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space10 layui-bg-gray">
|
||||
<div class="layui-col-xs3 text-center">首件(个)</div>
|
||||
<div class="layui-col-xs3 text-center">运费(元)</div>
|
||||
<div class="layui-col-xs3 text-center">续件(个)</div>
|
||||
<div class="layui-col-xs3 text-center">续费(元)</div>
|
||||
<label class="layui-col-xs3">
|
||||
<input name="first_number[]" value="{$item.first_number|default='1'}" data-blur-number="0" class="layui-input text-center padding-left-0">
|
||||
</label>
|
||||
<label class="layui-col-xs3">
|
||||
<input name="first_amount[]" value="{$item.first_amount|default='0.00'}" data-blur-number="2" class="layui-input text-center padding-left-0">
|
||||
</label>
|
||||
<label class="layui-col-xs3">
|
||||
<input name="next_number[]" value="{$item.next_number|default='1'}" data-blur-number="0" class="layui-input text-center padding-left-0">
|
||||
</label>
|
||||
<label class="layui-col-xs3">
|
||||
<input name="next_amount[]" value="{$item.next_amount|default='0.00'}" data-blur-number="2" class="layui-input text-center padding-left-0">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
@ -1,98 +0,0 @@
|
||||
<div class='layui-form layui-card layui-hide' id="RegionContainer">
|
||||
<div class="layui-card-body padding-20 padding-bottom-0">
|
||||
<div class="layui-row layui-col-space10">
|
||||
<div class="layui-col-xs8">
|
||||
<div class="layui-textarea" style="height:360px;overflow:auto">
|
||||
<div>
|
||||
<span class="pointer notselect margin-right-10" ng-click="setCheckAll(true)">全选</span>
|
||||
<span class="pointer notselect margin-right-10" ng-click="setCheckAll(false)">取消</span>
|
||||
</div>
|
||||
<hr class="hr-line-dashed margin-top-5 margin-bottom-5">
|
||||
<div class="layui-row layui-col-space5">
|
||||
<div class="layui-col-xs3 nowrap" data-city-left ng-repeat="x in citys">
|
||||
<label class="think-checkbox margin-right-0">
|
||||
<input type="checkbox" ng-model="x.status" ng-change="setActiveCity(x)" ng-value="x.name" lay-ignore>
|
||||
</label>
|
||||
<span class="pointer notselect" ng-click="setActiveCity(x)">{{x.name}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-xs4">
|
||||
<div class="layui-textarea" style="height:360px;overflow:auto">
|
||||
<div>
|
||||
<span class="pointer notselect margin-right-10" ng-click="setCheckItem(true)">全选</span>
|
||||
<span class="pointer notselect margin-right-10" ng-click="setCheckItem(false)">取消</span>
|
||||
<b ng-bind="city.name"></b>
|
||||
</div>
|
||||
<hr class="hr-line-dashed margin-top-5 margin-bottom-5">
|
||||
<label ng-repeat="x in city.sub" class="think-checkbox nowrap layui-elip">
|
||||
<input type="checkbox" ng-model="x.status" ng-value="x.name" value="" lay-ignore> {{x.name}}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-hide">{{items}}</div>
|
||||
<div class="hr-line-dashed"></div>
|
||||
<div class="layui-form-item text-center">
|
||||
<button class="layui-btn" ng-click="submit()">确定选择</button>
|
||||
<button class="layui-btn layui-btn-danger" data-close>取消编辑</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label class="layui-hide">
|
||||
<textarea id="CitysData">{$citys|json_encode|raw}</textarea>
|
||||
</label>
|
||||
|
||||
<script>
|
||||
require(['angular'], function () {
|
||||
var app = angular.module("RegionContainer", []).run(callback);
|
||||
angular.bootstrap(document.getElementById(app.name), [app.name]);
|
||||
|
||||
function callback($rootScope) {
|
||||
$rootScope.items = [];
|
||||
$rootScope.city = {sub: []};
|
||||
$rootScope.citys = angular.fromJson($('#CitysData').val()) || [];
|
||||
$rootScope.setCheckAll = function (status) {
|
||||
$rootScope.citys.forEach(function (item) {
|
||||
item.status = !!status;
|
||||
item.sub.forEach(function (item) {
|
||||
item.status = !!status;
|
||||
});
|
||||
})
|
||||
};
|
||||
$rootScope.submit = function () {
|
||||
top.setCitys($rootScope.items);
|
||||
};
|
||||
$rootScope.setCheckItem = function (status) {
|
||||
$rootScope.city.sub.forEach(function (item) {
|
||||
item.status = !!status;
|
||||
});
|
||||
};
|
||||
$rootScope.setActiveCity = function (city) {
|
||||
$rootScope.city = city;
|
||||
city.sub.forEach(function (item) {
|
||||
item.status = city.status;
|
||||
});
|
||||
};
|
||||
$rootScope.$watch('citys', function () {
|
||||
let citys = [], full = 1;
|
||||
$rootScope.citys.forEach(function (item) {
|
||||
let subs = [];
|
||||
item.sub.forEach(function (item) {
|
||||
if (item.status) subs.push(item.name)
|
||||
});
|
||||
subs.length === item.sub.length ? subs = [] : full = 0;
|
||||
item.status ? citys.push({name: item.name, subs: subs.join(',')}) : full = 0;
|
||||
$rootScope.items = full ? [{name: '全国'}] : citys;
|
||||
});
|
||||
}, true);
|
||||
$rootScope.$watch('city', function () {
|
||||
$rootScope.city.status = $rootScope.city.sub.some(function (city) {
|
||||
if (city.status) return true;
|
||||
});
|
||||
}, true);
|
||||
}
|
||||
});
|
||||
</script>
|
@ -24,8 +24,10 @@
|
||||
<th class='list-table-sort-td'>
|
||||
<button type="button" data-reload class="layui-btn layui-btn-xs">刷 新</button>
|
||||
</th>
|
||||
<th class='text-left nowrap'>模板编号</th>
|
||||
<th class='text-left nowrap'>模板名称</th>
|
||||
<th class="text-center">创建时间</th>
|
||||
<th class='text-left nowrap'>使用状态</th>
|
||||
<th class="text-left">创建时间</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@ -41,19 +43,21 @@
|
||||
<input data-action-blur="{:request()->url()}" data-value="id#{$vo.id};action#sort;sort#{value}" data-loading="false" value="{$vo.sort}" class="list-sort-input">
|
||||
</label>
|
||||
</td>
|
||||
<td class='text-left nowrap'>{$vo.code|default=''}</td>
|
||||
<td class='text-left nowrap'>{$vo.name|default=''}</td>
|
||||
<td class='text-center nowrap'>{$vo.create_at|format_datetime}</td>
|
||||
<td class="text-left nowrap">{if $vo.status eq 0}<span class="color-red">已禁用</span>{elseif $vo.status eq 1}<span class="color-green">使用中</span>{/if}</td>
|
||||
<td class='text-left nowrap'>{$vo.create_at|format_datetime}</td>
|
||||
<td class='text-left nowrap'>
|
||||
<!--{if auth("edit")}-->
|
||||
<a data-dbclick class="layui-btn layui-btn-xs" data-title="编辑快递公司" data-open='{:url("edit")}?id={$vo.id}'>编 辑</a>
|
||||
<a data-dbclick class="layui-btn layui-btn-xs" data-title="编辑快递公司" data-open='{:url("edit")}?code={$vo.code}'>编 辑</a>
|
||||
<!--{/if}-->
|
||||
<!--{if $vo.status eq 1 and auth("state")}-->
|
||||
<a class="layui-btn layui-btn-warm layui-btn-xs" data-action="{:url('state')}" data-value="id#{$vo.id};status#0">禁 用</a>
|
||||
<a class="layui-btn layui-btn-warm layui-btn-xs" data-action="{:url('state')}" data-value="code#{$vo.code};status#0">禁 用</a>
|
||||
<!--{elseif auth("state")}-->
|
||||
<a class="layui-btn layui-btn-warm layui-btn-xs" data-action="{:url('state')}" data-value="id#{$vo.id};status#1">启 用</a>
|
||||
<a class="layui-btn layui-btn-warm layui-btn-xs" data-action="{:url('state')}" data-value="code#{$vo.code};status#1">启 用</a>
|
||||
<!--{/if}-->
|
||||
<!--{if auth("remove")}-->
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" data-confirm="确定要删除数据吗?" data-action="{:url('remove')}" data-value="id#{$vo.id}">删 除</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" data-confirm="确定要删除数据吗?" data-action="{:url('remove')}" data-value="code#{$vo.code}">删 除</a>
|
||||
<!--{/if}-->
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -2,15 +2,15 @@
|
||||
<legend>条件搜索</legend>
|
||||
<form class="layui-form layui-form-pane form-search" action="{:url('')}" onsubmit="return false" method="get" autocomplete="off">
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">快递名称</label>
|
||||
<label class="layui-form-label">模板编号</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="name" value="{:input('name','')}" placeholder="请输入快递名称" class="layui-input">
|
||||
<input name="code" value="{:input('code','')}" placeholder="请输入模板编号" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">快递编码</label>
|
||||
<label class="layui-form-label">模板名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="code" value="{:input('code','')}" placeholder="请输入快递编码" class="layui-input">
|
||||
<input name="name" value="{:input('name','')}" placeholder="请输入模板名称" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-inline">
|
||||
|
Loading…
x
Reference in New Issue
Block a user