细节优化

This commit is contained in:
gongfuxiang
2023-01-12 12:11:15 +08:00
parent d9313eeef2
commit 529d97689f
42 changed files with 1569 additions and 1376 deletions

View File

@ -66,7 +66,7 @@ class UserAddress extends Base
'data' => $data,
// 加载地图api
'is_load_map_api' => 1,
'is_load_map_api' => MyC('home_user_address_map_status'),
];
// 编辑器文件存放地址

View File

@ -10,26 +10,26 @@
<a href="{{:MyUrl('admin/admin/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> 返回</a>
</legend>
<div class="am-form-group">
<label>用户名{{if empty($data)}}<span class="am-form-group-label-tips-must">必填</span><span class="am-form-group-label-tips">创建后不可更改</span>{{else /}}<span class="am-form-group-label-tips">不可更改</span>{{/if}}</label>
<label>用户名{{if empty($data)}}<span class="am-form-group-label-tips-must">*</span><span class="am-form-group-label-tips">创建后不可更改</span>{{else /}}<span class="am-form-group-label-tips">不可更改</span>{{/if}}</label>
<input type="text" name="username" placeholder="用户名" pattern="{{:MyConst('common_regex_username')}}" data-validation-message="用户名格式 5~18 个字符(可以是字母数字下划线)" class="am-radius" {{if !empty($data['username'])}}value="{{$data.username}}" disabled{{/if}} required />
</div>
<div class="am-form-group">
<label>登录密码{{if empty($data)}}<span class="am-form-group-label-tips-must">必填</span>{{else /}}<span class="am-form-group-label-tips">选填</span>{{/if}}</label>
<label>登录密码{{if empty($data)}}<span class="am-form-group-label-tips-must">*</span>{{else /}}<span class="am-form-group-label-tips">输入则修改密码</span>{{/if}}</label>
<input type="password" name="login_pwd" placeholder="登录密码" pattern="{{:MyConst('common_regex_pwd')}}" data-validation-message="密码格式 6~18 个字符" class="am-radius" autocomplete="off" {{if empty($data)}}required{{/if}} />
</div>
<div class="am-form-group">
<label>手机号码<span class="am-form-group-label-tips">选填</span></label>
<label>手机号码</label>
<input type="text" name="mobile" placeholder="手机号码" pattern="{{:MyConst('common_regex_mobile')}}" data-validation-message="手机号码格式错误" class="am-radius" {{if !empty($data['mobile'])}}value="{{$data.mobile}}"{{/if}} />
</div>
<div class="am-form-group">
<label>电子邮箱<span class="am-form-group-label-tips">选填</span></label>
<label>电子邮箱</label>
<input type="email" name="email" placeholder="电子邮箱" maxlength="60" data-validation-message="电子邮箱格式错误、最多60个字符" class="am-radius" value="{{if !empty($data['email'])}}{{$data.email}}{{/if}}" />
</div>
{{include file="lib/gender" /}}
{{if !isset($data['id']) or $admin['id'] neq $data['id']}}
<div class="am-form-group">
<label>权限组<span class="am-form-group-label-tips-must">必选</span></label>
<label>权限组<span class="am-form-group-label-tips-must">*</span></label>
<select class="am-radius chosen-select" name="role_id" data-validation-message="请选择所属角色组" required>
<option value="">可选择...</option>
{{foreach $role_list as $v}}
@ -40,7 +40,7 @@
{{/if}}
<div class="am-form-group">
<label>状态<span class="am-form-group-label-tips-must">必选</span></label>
<label>状态<span class="am-form-group-label-tips-must">*</span></label>
<select name="status" class="am-radius chosen-select" data-validation-message="请选择用户状态" required>
{{foreach :MyConst('common_admin_status_list') as $v}}
<option value="{{$v.value}}" {{if isset($data['status']) and $data['status'] eq $v['value']}}selected{{else /}}{{if !isset($data['status']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option>

View File

@ -10,12 +10,12 @@
<a href="{{:MyUrl('admin/appcenternav/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> 返回</a>
</legend>
<div class="am-form-group">
<label>名称</label>
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="60" data-validation-message="名称格式 2~60 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>所属平台</label>
<label>所属平台<span class="am-form-group-label-tips-must">*</span></label>
<select name="platform" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="所属平台有误" data-validation-message="请选择所属平台" required>
<option value="">可选择...</option>
{{foreach $common_platform_type as $v}}
@ -26,7 +26,7 @@
<div class="am-form-group">
<label>事件类型</label>
<select name="event_type" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="事件值类型有误" data-validation-message="请选择事件类型" required>
<select name="event_type" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="事件值类型有误" data-validation-message="请选择事件类型">
<option value="">可选择...</option>
{{foreach $common_app_event_type as $v}}
<option value="{{$v.value}}" {{if isset($data['event_type']) and $data['event_type'] eq $v['value']}}selected{{else /}}{{if !isset($data['event_type']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option>
@ -45,7 +45,7 @@
</div>
<div class="am-form-group am-form-file">
<label class="block">导航图标</label>
<label class="block">导航图标<span class="am-form-group-label-tips-must">*</span></label>
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="请上传图片" required />

View File

@ -10,12 +10,12 @@
<a href="{{:MyUrl('admin/apphomenav/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> 返回</a>
</legend>
<div class="am-form-group">
<label>名称</label>
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="60" data-validation-message="名称格式 2~60 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>所属平台</label>
<label>所属平台<span class="am-form-group-label-tips-must">*</span></label>
<select name="platform" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="所属平台有误" data-validation-message="请选择所属平台" required>
<option value="">可选择...</option>
{{foreach $common_platform_type as $v}}
@ -26,7 +26,7 @@
<div class="am-form-group">
<label>事件类型</label>
<select name="event_type" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="事件值类型有误" data-validation-message="请选择事件类型" required>
<select name="event_type" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="事件值类型有误" data-validation-message="请选择事件类型">
<option value="">可选择...</option>
{{foreach $common_app_event_type as $v}}
<option value="{{$v.value}}" {{if isset($data['event_type']) and $data['event_type'] eq $v['value']}}selected{{else /}}{{if !isset($data['event_type']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option>
@ -40,7 +40,7 @@
</div>
<div class="am-form-group am-form-file">
<label class="block">导航图标</label>
<label class="block">导航图标<span class="am-form-group-label-tips-must">*</span></label>
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="请上传图片" required />

View File

@ -4,46 +4,66 @@
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/article/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/article/index', $params)}}">
<form class="am-form form-validation am-form-pure am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/article/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/article/index', $params)}}">
<legend>
<span class="am-text-default">文章{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<a href="{{:MyUrl('admin/article/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> 返回</a>
</legend>
<div class="am-form-group">
<label>标题</label>
<div class="am-input-group am-input-group-sm">
<input type="hidden" name="title_color" value="{{if !empty($data['title_color'])}}{{$data.title_color}}{{/if}}" />
<input type="text" name="title" placeholder="标题" minlength="2" maxlength="60" data-validation-message="标题长度 2~60 个字符" class="am-form-field am-radius" {{if !empty($data)}} value="{{$data.title}}" {{/if}} {{if !empty($data['title_color'])}} style="color:{{$data.title_color}};" {{/if}} required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-btn-xs colorpicker-submit" type="button" data-input-tag="input[name='title']" data-color-tag="input[name='title_color']">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>
</span>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>标题<span class="am-form-group-label-tips-must">*</span></label>
<div class="am-input-group am-input-group-sm">
<input type="hidden" name="title_color" value="{{if !empty($data['title_color'])}}{{$data.title_color}}{{/if}}" />
<input type="text" name="title" placeholder="标题" minlength="2" maxlength="60" data-validation-message="标题长度 2~60 个字符" class="am-form-field am-radius" {{if !empty($data)}} value="{{$data.title}}" {{/if}} {{if !empty($data['title_color'])}} style="color:{{$data.title_color}};" {{/if}} required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-btn-xs colorpicker-submit" type="button" data-input-tag="input[name='title']" data-color-tag="input[name='title_color']">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>
</span>
</div>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>文章分类<span class="am-form-group-label-tips-must">*</span></label>
<select name="article_category_id" class="am-radius chosen-select" data-placeholder="可选择..." data-validation-message="请选择文章分类" required>
<option value="">可选择...</option>
{{foreach $article_category_list as $v}}
<option value="{{$v.id}}" {{if isset($data['article_category_id']) and $data['article_category_id'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-md-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>跳转url地址<a href="javascript:;" class="am-icon-question-circle am-text-warning am-form-group-label-tips-icon am-margin-left-sm" data-am-popover="{content: '带http://或https://仅web端有效', trigger: 'hover focus', theme: 'sm'}"></a></label>
<input type="url" name="jump_url" placeholder="跳转url地址" data-validation-message="跳转url地址格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.jump_url}}"{{/if}} />
</div>
</div>
<div class="am-u-md-6 am-padding-horizontal-0">
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="block">是否启用</label>
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_enable'] eq 1}}checked="true"{{/if}} />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="block">首页推荐</label>
<input name="is_home_recommended" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_home_recommended'] eq 1}}checked="true"{{/if}} />
</div>
</div>
</div>
</div>
</div>
<div class="am-form-group">
<label>文章分类</label>
<select name="article_category_id" class="am-radius chosen-select" data-placeholder="可选择..." data-validation-message="请选择文章分类" required>
<option value="">可选择...</option>
{{foreach $article_category_list as $v}}
<option value="{{$v.id}}" {{if isset($data['article_category_id']) and $data['article_category_id'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>跳转url地址<span class="am-form-group-label-tips">带http://或https://仅web端有效</span></label>
<input type="url" name="jump_url" placeholder="跳转url地址" data-validation-message="跳转url地址格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.jump_url}}"{{/if}} />
</div>
<div class="am-form-group">
<label class="block">是否启用</label>
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_enable'] eq 1}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<label class="block">首页推荐</label>
<input name="is_home_recommended" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_home_recommended'] eq 1}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<label>内容</label>
<label>内容<span class="am-form-group-label-tips-must">*</span></label>
<textarea class="am-radius am-validate" name="content" rows="5" minlength="10" maxlength="105000" {{if !IsMobile()}}id="editor-tag" data-url="{{:MyUrl('admin/ueditor/index', ['path_type'=>'article'])}}" placeholder="内容格式 10~105000 个字符之间" {{else /}} placeholder="内容格式 10~105000 个字符之间更多编辑功能请使用电脑访问" {{/if}} data-validation-message="内容格式 10~105000 个字符之间" required>{{if !empty($data)}}{{$data.content}}{{/if}}</textarea>
</div>
@ -71,7 +91,7 @@
{{include file="lib/seo" /}}
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>

View File

@ -20,7 +20,7 @@
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/articlecategory/save')}}" method="POST" request-type="ajax-fun" request-value="TreeFormSaveBack">
<div class="am-form-group">
<label>名称</label>
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
</div>
<div class="am-form-group">

View File

@ -4,54 +4,77 @@
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/brand/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/brand/index', $params)}}" enctype="multipart/form-data">
<form class="am-form form-validation am-form-pure am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/brand/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/brand/index', $params)}}" enctype="multipart/form-data">
<legend>
<span class="am-text-default">品牌{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<a href="{{:MyUrl('admin/brand/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> 返回</a>
</legend>
<div class="am-form-group">
<label>名称</label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="30" data-validation-message="名称格式 2~30 个字符" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>品牌分类</label>
<select name="brand_category_id" class="am-radius chosen-select" multiple="multiple" minchecked="1" data-placeholder="可选择..." data-validation-message="请选择品牌分类" required>
{{foreach $brand_category as $v}}
<option value="{{$v.id}}" {{if isset($data['brand_category_ids']) and is_array($data['brand_category_ids']) and in_array($v['id'], $data['brand_category_ids'])}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="30" data-validation-message="名称格式 2~30 个字符" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>品牌分类<span class="am-form-group-label-tips-must">*</span></label>
<select name="brand_category_id" class="am-radius chosen-select" multiple="multiple" minchecked="1" data-placeholder="可选择..." data-validation-message="请选择品牌分类" required>
{{foreach $brand_category as $v}}
<option value="{{$v.id}}" {{if isset($data['brand_category_ids']) and is_array($data['brand_category_ids']) and in_array($v['id'], $data['brand_category_ids'])}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
</div>
</div>
<div class="am-form-group">
<label>官网地址<span class="am-form-group-label-tips">选填</span></label>
<input type="url" placeholder="官网地址、以http://或https://开头" name="website_url" data-validation-message="官网地址格式有误" class="am-radius" {{if !empty($data['website_url'])}} value="{{$data.website_url}}"{{/if}} />
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>官网地址</label>
<input type="url" placeholder="官网地址、以http://或https://开头" name="website_url" data-validation-message="官网地址格式有误" class="am-radius" {{if !empty($data['website_url'])}} value="{{$data.website_url}}"{{/if}} />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>描述</label>
<textarea rows="1" name="describe" maxlength="230" class="am-radius" placeholder="描述" data-validation-message="描述最多230个字符">{{if !empty($data['describe'])}} {{$data.describe}}{{/if}}</textarea>
</div>
</div>
</div>
<div class="am-form-group">
<label>描述</label>
<textarea rows="5" name="describe" maxlength="230" class="am-radius" placeholder="描述" data-validation-message="描述最多230个字符">{{if !empty($data['describe'])}} {{$data.describe}}{{/if}}</textarea>
</div>
<div class="am-form-group am-form-file">
<label class="block">LOGO<span class="am-form-group-label-tips">建议150x50像素</span></label>
<ul class="plug-file-upload-view brand-logo-images-view" data-form-name="logo" data-max-number="1" data-dialog-type="images">
{{if !empty($data['logo'])}}
<li>
<input type="text" name="logo" value="{{$data.logo}}" />
<img src="{{$data.logo}}" />
<i>×</i>
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.brand-logo-images-view">+上传图片</div>
</div>
<div class="am-form-group">
<label>顺序</label>
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="{{if isset($data['sort'])}}{{$data.sort}}{{else /}}0{{/if}}" required />
</div>
<div class="am-form-group">
<label class="block">是否启用</label>
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_enable']) and $data['is_enable'] eq 1) or !isset($data['is_enable'])}}checked="true"{{/if}} />
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group am-form-file">
<label class="block">LOGO<span class="am-form-group-label-tips">建议150*50px</span></label>
<ul class="plug-file-upload-view brand-logo-images-view" data-form-name="logo" data-max-number="1" data-dialog-type="images">
{{if !empty($data['logo'])}}
<li>
<input type="text" name="logo" value="{{$data.logo}}" />
<img src="{{$data.logo}}" />
<i>×</i>
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.brand-logo-images-view">+上传图片</div>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-cf">
<div class="am-u-md-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>顺序</label>
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="{{if isset($data['sort'])}}{{$data.sort}}{{else /}}0{{/if}}" required />
</div>
</div>
<div class="am-u-md-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="block">是否启用</label>
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_enable']) and $data['is_enable'] eq 1) or !isset($data['is_enable'])}}checked="true"{{/if}} />
</div>
</div>
</div>
</div>
</div>
<!-- 插件扩展数据 start -->
@ -78,7 +101,7 @@
{{include file="lib/seo" /}}
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>

View File

@ -20,7 +20,7 @@
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/brandcategory/save')}}" method="POST" request-type="ajax-fun" request-value="TreeFormSaveBack">
<div class="am-form-group">
<label>名称</label>
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
</div>
<div class="am-form-group">

View File

@ -10,7 +10,7 @@
<a href="{{:MyUrl('admin/customview/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> 返回</a>
</legend>
<div class="am-form-group">
<label>标题</label>
<label>标题<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="title" placeholder="标题" minlength="2" maxlength="60" data-validation-message="标题长度 2~60 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.title}}" {{/if}} required />
</div>
<div class="am-form-group">
@ -34,7 +34,7 @@
</div>
<div class="am-form-group">
<label>内容{{if IsMobile()}}<span class="am-form-group-label-tips">更多编辑功能请使用电脑访问</span>{{/if}}</label>
<label>内容<span class="am-form-group-label-tips-must">*</span>{{if IsMobile()}}<span class="am-form-group-label-tips">更多编辑功能请使用电脑访问</span>{{/if}}</label>
<textarea class="am-radius am-validate" name="content" rows="5" minlength="10" maxlength="105000" {{if !IsMobile()}}id="editor-tag" data-url="{{:MyUrl('admin/ueditor/index', ['path_type'=>'customview'])}}" placeholder="内容长度最少 10~105000 个字符" {{else /}} placeholder="内容长度最少 10~105000 个字符更多编辑功能请使用电脑访问" {{/if}} data-validation-message="内容长度最少 10~105000 个字符" required>{{if !empty($data)}}{{$data.content}}{{/if}}</textarea>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">

View File

@ -31,9 +31,13 @@
<div class="plug-file-upload-submit" data-view-tag="ul.express-icon-images-view">+上传图片</div>
</div>
<div class="am-form-group">
<label>名称</label>
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
</div>
<div class="am-form-group">
<label>官网地址</label>
<input type="url" placeholder="官网地址、以http://或https://开头" name="website_url" data-validation-message="官网地址格式有误" class="am-radius" {{if !empty($data['website_url'])}} value="{{$data.website_url}}"{{/if}} />
</div>
<div class="am-form-group">
<label>顺序</label>
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" required />

View File

@ -4,13 +4,13 @@
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/goods/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/goods/index', $params)}}" enctype="multipart/form-data">
<form class="am-form form-validation am-form-pure am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/goods/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/goods/index', $params)}}" enctype="multipart/form-data">
<legend>
<span class="am-text-default">商品{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<a href="{{:MyUrl('admin/goods/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> 返回</a>
</legend>
<nav class="goods-nav">
<nav class="goods-nav goods-nav-retract" style="right:-110px;">
<ul>
<li>
<a href="javascript:;" data-value="#goods-nav-base">基础信息</a>
@ -42,8 +42,8 @@
<li>
<a href="javascript:;" data-value="#goods-nav-seo">SEO</a>
</li>
<li class="am-text-center am-padding-xs nav-shrink-submit">
<i class="am-icon-angle-double-right am-icon-sm"></i>
<li class="am-text-center am-padding-xs nav-shrink-submit" style="width:50px;left:-80px;">
<i class="am-icon-sm am-icon-angle-double-left"></i>
</li>
</ul>
</nav>
@ -54,139 +54,180 @@
<h3 class="am-panel-title">基础信息</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
<label>标题名称<span class="am-form-group-label-tips-must">必填</span></label>
<input type="hidden" name="title_color" value="{{if !empty($data['title_color'])}}{{$data.title_color}}{{/if}}" />
<div class="am-input-group am-input-group-sm">
<input type="text" name="title" placeholder="标题名称" minlength="2" maxlength="160" data-validation-message="标题名称格式 2~160 个字符" class="am-form-field am-radius" {{if !empty($data)}} value="{{$data.title}}" {{/if}} {{if !empty($data['title_color'])}} style="color:{{$data.title_color}};" {{/if}} required />
<span class="am-input-group-btn">
<button type="button" class="am-btn am-btn-default am-btn-xs colorpicker-submit" data-input-tag="input[name='title']" data-color-tag="input[name='title_color']">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>
</span>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>标题名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="hidden" name="title_color" value="{{if !empty($data['title_color'])}}{{$data.title_color}}{{/if}}" />
<div class="am-input-group am-input-group-sm">
<input type="text" name="title" placeholder="标题名称" minlength="2" maxlength="160" data-validation-message="标题名称格式 2~160 个字符" class="am-form-field am-radius" {{if !empty($data)}} value="{{$data.title}}" {{/if}} {{if !empty($data['title_color'])}} style="color:{{$data.title_color}};" {{/if}} required />
<span class="am-input-group-btn">
<button type="button" class="am-btn am-btn-default am-btn-xs colorpicker-submit" data-input-tag="input[name='title']" data-color-tag="input[name='title_color']">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>
</span>
</div>
</div>
</div>
</div>
<div class="am-form-group">
<label>商品简述<span class="am-form-group-label-tips">选填</span></label>
<input type="text" name="simple_desc" placeholder="商品简述" maxlength="230" data-validation-message="商品简述格式 最多230个字符" class="am-radius" {{if !empty($data)}} value="{{$data.simple_desc}}"{{/if}} />
</div>
<div class="am-form-group">
<label>商品型号<span class="am-form-group-label-tips">选填</span></label>
<input type="text" name="model" placeholder="商品型号" maxlength="30" data-validation-message="商品型号格式 最多30个字符" class="am-radius" {{if !empty($data)}} value="{{$data.model}}"{{/if}} />
</div>
<div class="am-form-group">
<label>商品分类<span class="am-form-group-label-tips-must">至少选择一个</span></label>
<br />
<select name="category_id" class="am-radius chosen-select" multiple="multiple" minchecked="1" data-placeholder="请选择..." data-validation-message="请至少选择一个商品分类" data-base-template-url="{{:MyUrl('admin/goods/basetemplate')}}" required>
{{if !empty($goods_category_list)}}
{{foreach $goods_category_list as $v}}
<option value="{{$v.id}}" {{if !empty($data['category_ids']) and in_array($v['id'], $data['category_ids'])}}selected{{/if}}>{{$v.name}}</option>
{{if !empty($v['items'])}}
{{foreach $v.items as $vs}}
<option style="padding-left: 20px;" value="{{$vs.id}}" {{if !empty($data['category_ids']) and in_array($vs['id'], $data['category_ids'])}}selected{{/if}}>{{if empty($vs['items'])}}├{{else /}}└{{/if}}² {{$vs.name}}</option>
{{if !empty($vs['items'])}}
{{foreach $vs.items as $kss=>$vss}}
<option style="padding-left: 40px;" value="{{$vss.id}}" {{if !empty($data['category_ids']) and in_array($vss['id'], $data['category_ids'])}}selected{{/if}}>{{if $kss eq count($vs['items'])-1}}└{{else /}}├{{/if}}³ {{$vss.name}}</option>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>商品分类<span class="am-form-group-label-tips-must">*</span></label>
<br />
<select name="category_id" class="am-radius chosen-select" multiple="multiple" minchecked="1" data-placeholder="请选择..." data-validation-message="请至少选择一个商品分类" data-base-template-url="{{:MyUrl('admin/goods/basetemplate')}}" required>
{{if !empty($goods_category_list)}}
{{foreach $goods_category_list as $v}}
<option value="{{$v.id}}" {{if !empty($data['category_ids']) and in_array($v['id'], $data['category_ids'])}}selected{{/if}}>{{$v.name}}</option>
{{if !empty($v['items'])}}
{{foreach $v.items as $vs}}
<option style="padding-left: 20px;" value="{{$vs.id}}" {{if !empty($data['category_ids']) and in_array($vs['id'], $data['category_ids'])}}selected{{/if}}>{{if empty($vs['items'])}}├{{else /}}└{{/if}}² {{$vs.name}}</option>
{{if !empty($vs['items'])}}
{{foreach $vs.items as $kss=>$vss}}
<option style="padding-left: 40px;" value="{{$vss.id}}" {{if !empty($data['category_ids']) and in_array($vss['id'], $data['category_ids'])}}selected{{/if}}>{{if $kss eq count($vs['items'])-1}}└{{else /}}├{{/if}}³ {{$vss.name}}</option>
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
</select>
</div>
<div class="am-form-group">
<label>品牌<span class="am-form-group-label-tips">可选</span></label>
<br />
<select name="brand_id" class="am-radius chosen-select" data-placeholder="请选择..." data-validation-message="请选择品牌">
{{if !empty($brand_list)}}
<option value="0">请选择...</option>
{{foreach $brand_list as $v}}
<option value="{{$v.id}}" {{if isset($data['brand_id']) and $data['brand_id'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
{{/if}}
</select>
</div>
<div class="am-form-group">
<label>生产地<span class="am-form-group-label-tips">可选</span></label>
<br />
<select name="place_origin" class="am-radius chosen-select" data-placeholder="请选择..." data-validation-message="请选择生产地">
<option value="0">请选择...</option>
{{if !empty($region_province_list)}}
{{foreach $region_province_list as $v}}
<option value="{{$v.id}}" {{if !empty($data['place_origin']) and $v['id'] eq $data['place_origin']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
{{/if}}
</select>
</div>
<div class="am-form-group">
<label>库存单位<span class="am-form-group-label-tips-must">必填</span></label>
<input type="text" name="inventory_unit" placeholder="库存单位" minlength="1" maxlength="6" data-validation-message="库存单位格式 1~6 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.inventory_unit}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>购买赠送积分比例<span class="am-form-group-label-tips">选填</span><span class="am-form-group-label-tips">按照商品金额比例乘以数量的比例进行发放</span></label>
<div class="am-alert am-alert-warning am-radius am-margin-top-0" data-am-alert>
<p>订单完成自动将发放到用户锁定积分、再由脚本自动发放到有效积分</p>
</select>
</div>
</div>
<div class="am-input-group am-input-group-sm am-margin-top-xs">
<input type="number" name="give_integral" placeholder="购买赠送积分" min="0" max="100" data-validation-message="购买赠送积分比例 0~100 的数字" class="am-form-field am-radius" {{if !empty($data['give_integral'])}} value="{{$data.give_integral}}"{{/if}} />
<span class="am-input-group-btn">
<button type="button" class="am-btn am-btn-default am-radius">%</button>
</span>
</div>
</div>
<div class="am-form-group">
<label>最低起购数量<span class="am-form-group-label-tips-must">必填</span><span class="am-form-group-label-tips">默认数值 1</span></label>
<input type="number" name="buy_min_number" placeholder="最低起购数量" min="1" max="100000000" data-validation-message="最低起购数量 1~100000000" class="am-radius" value="{{if empty($data) or empty($data['buy_min_number'])}}1{{else /}}{{$data.buy_min_number}}{{/if}}" required />
</div>
<div class="am-form-group">
<label>单次最大购买数量<span class="am-form-group-label-tips">选填</span><span class="am-form-group-label-tips">单次最大数值 100000000, 小于等于0或空则不限</span></label>
<input type="number" name="buy_max_number" placeholder="单次最大购买数量" min="0" max="100000000" data-validation-message="单次最大购买数量 1~100000000" class="am-radius" {{if !empty($data['buy_max_number'])}} value="{{$data.buy_max_number}}"{{/if}} />
</div>
<div class="am-form-group">
<label>商品类型<span class="am-form-group-label-tips">可选</span></label>
<div class="am-alert am-alert-warning am-radius am-margin-top-0" data-am-alert>
<p>1. 当前系统配置的站点类型为[ <strong class="am-text-danger">{{$common_site_type_list[$common_site_type]['name']}}</strong> ]</p>
<p>2. 如果商品类型未配置则跟随系统配置的站点类型</p>
<p>3. 当设置的商品类型不在系统设置的站点类型包含的时候,商品加入购物车功能将失效</p>
</div>
<select name="site_type" class="am-radius chosen-select am-margin-top-xs" data-placeholder="可选择..." data-validation-message="请选择商品类型">
<option value="">可选择...</option>
{{if !empty($common_site_type_list)}}
{{foreach $common_site_type_list as $v}}
<option value="{{$v.value}}" {{if isset($data['site_type']) and $v['value'] eq $data['site_type']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
{{/if}}
</select>
</div>
<div class="am-form-group am-form-file">
<label class="block">封面图片<span class="am-form-group-label-tips">选传</span><span class="am-form-group-label-tips">留空则取相册第一张图、建议800*800px</span></label>
<ul class="plug-file-upload-view goods-recommended-images-view" data-form-name="images" data-max-number="1" data-dialog-type="images">
{{if !empty($data['images'])}}
<li>
<input type="text" name="images" value="{{$data.images}}" />
<img src="{{$data.images}}" />
<i>×</i>
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-recommended-images-view">+上传图片</div>
</div>
<div class="am-form-group">
<label class="block">扣减库存<span class="am-form-group-label-tips">可选</span><span class="am-form-group-label-tips">扣除规则根据后台配置->扣除库存规则而定</span></label>
<input name="is_deduction_inventory" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_deduction_inventory']) and $data['is_deduction_inventory'] eq 1) or empty($data)}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<label class="block">上下架<span class="am-form-group-label-tips">可选</span><span class="am-form-group-label-tips">下架后用户不可见</span></label>
<input name="is_shelves" value="1" type="checkbox" data-off-text="下架" data-on-text="上架" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_shelves']) and $data['is_shelves'] eq 1) or empty($data)}}checked="true"{{/if}} />
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>商品简述</label>
<input type="text" name="simple_desc" placeholder="商品简述" maxlength="230" data-validation-message="商品简述格式 最多230个字符" class="am-radius" {{if !empty($data)}} value="{{$data.simple_desc}}"{{/if}} />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>商品型号</label>
<input type="text" name="model" placeholder="商品型号" maxlength="30" data-validation-message="商品型号格式 最多30个字符" class="am-radius" {{if !empty($data)}} value="{{$data.model}}"{{/if}} />
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">品牌</label>
<select name="brand_id" class="am-radius chosen-select" data-placeholder="请选择..." data-validation-message="请选择品牌">
{{if !empty($brand_list)}}
<option value="0">请选择...</option>
{{foreach $brand_list as $v}}
<option value="{{$v.id}}" {{if isset($data['brand_id']) and $data['brand_id'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
{{/if}}
</select>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">生产地</label>
<select name="place_origin" class="am-radius chosen-select" data-placeholder="请选择..." data-validation-message="请选择生产地">
<option value="0">请选择...</option>
{{if !empty($region_province_list)}}
{{foreach $region_province_list as $v}}
<option value="{{$v.id}}" {{if !empty($data['place_origin']) and $v['id'] eq $data['place_origin']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
{{/if}}
</select>
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>库存单位<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="inventory_unit" placeholder="库存单位" minlength="1" maxlength="6" data-validation-message="库存单位格式 1~6 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.inventory_unit}}"{{/if}} required />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>购买赠送积分比例<a href="javascript:;" class="am-icon-question-circle am-text-warning am-form-group-label-tips-icon am-margin-left-sm" data-am-popover="{content: '1. 按照商品金额比例乘以数量的比例进行发放<br />2. 订单完成自动将发放到用户锁定积分<br />3. 站点设置->扩展中脚本处理发放积分', trigger: 'hover focus', theme: 'sm'}"></a></label>
<div class="am-input-group am-input-group-sm">
<input type="number" name="give_integral" placeholder="购买赠送积分" min="0" max="100" data-validation-message="购买赠送积分比例 0~100 的数字" class="am-form-field am-radius" {{if !empty($data['give_integral'])}} value="{{$data.give_integral}}"{{/if}} />
<span class="am-input-group-btn">
<button type="button" class="am-btn am-btn-default am-radius">%</button>
</span>
</div>
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>最低起购数量<span class="am-form-group-label-tips-must">*</span></label>
<input type="number" name="buy_min_number" placeholder="最低起购数量" min="1" max="100000000" data-validation-message="最低起购数量 1~100000000" class="am-radius" value="{{if empty($data) or empty($data['buy_min_number'])}}1{{else /}}{{$data.buy_min_number}}{{/if}}" required />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>单次最大购买数量<a href="javascript:;" class="am-icon-question-circle am-text-warning am-form-group-label-tips-icon am-margin-left-sm" data-am-popover="{content: '1. 单次最大数值 100000000<br />2. 小于等于0或空则不限', trigger: 'hover focus', theme: 'sm'}"></a></label>
<input type="number" name="buy_max_number" placeholder="单次最大购买数量" min="0" max="100000000" data-validation-message="单次最大购买数量 1~100000000" class="am-radius" {{if !empty($data['buy_max_number'])}} value="{{$data.buy_max_number}}"{{/if}} />
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-md-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>商品类型</label>
<div class="am-alert am-alert-warning am-radius am-margin-top-0" data-am-alert>
<p>1. 当前系统配置的站点类型为[ <strong class="am-text-danger">{{$common_site_type_list[$common_site_type]['name']}}</strong> ]</p>
<p>2. 如果商品类型未配置则跟随系统配置的站点类型</p>
<p>3. 当设置的商品类型不在系统设置的站点类型包含的时候,商品加入购物车功能将失效</p>
</div>
<select name="site_type" class="am-radius chosen-select am-margin-top-xs" data-placeholder="可选择..." data-validation-message="请选择商品类型">
<option value="">可选择...</option>
{{if !empty($common_site_type_list)}}
{{foreach $common_site_type_list as $v}}
<option value="{{$v.value}}" {{if isset($data['site_type']) and $v['value'] eq $data['site_type']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
{{/if}}
</select>
</div>
</div>
<div class="am-u-md-6 am-padding-horizontal-0">
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group am-form-file">
<label class="block">封面图片<a href="javascript:;" class="am-icon-question-circle am-text-warning am-form-group-label-tips-icon am-margin-left-sm" data-am-popover="{content: '留空则取相册第一张图、建议800*800px', trigger: 'hover focus', theme: 'sm'}"></a></label>
<ul class="plug-file-upload-view goods-recommended-images-view" data-form-name="images" data-max-number="1" data-dialog-type="images">
{{if !empty($data['images'])}}
<li>
<input type="text" name="images" value="{{$data.images}}" />
<img src="{{$data.images}}" />
<i>×</i>
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-recommended-images-view">+上传图片</div>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="block">扣减库存<a href="javascript:;" class="am-icon-question-circle am-text-warning am-form-group-label-tips-icon am-margin-left-sm" data-am-popover="{content: '扣除规则根据后台配置->扣除库存规则而定', trigger: 'hover focus', theme: 'sm'}"></a></label>
<input name="is_deduction_inventory" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_deduction_inventory']) and $data['is_deduction_inventory'] eq 1) or empty($data)}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<label class="block">上下架<a href="javascript:;" class="am-icon-question-circle am-text-warning am-form-group-label-tips-icon am-margin-left-sm" data-am-popover="{content: '下架后用户不可见', trigger: 'hover focus', theme: 'sm'}"></a></label>
<input name="is_shelves" value="1" type="checkbox" data-off-text="下架" data-on-text="上架" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_shelves']) and $data['is_shelves'] eq 1) or empty($data)}}checked="true"{{/if}} />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 商品规格 -->
<div class="am-panel am-panel-default" id="goods-nav-operations">
<div class="am-panel-hd">
<h3 class="am-panel-title">商品规格<span class="am-form-group-label-tips-must">必填</span></h3>
<h3 class="am-panel-title">商品规格<span class="am-form-group-label-tips-must">*</span></h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
@ -198,7 +239,7 @@
<!-- 商品参数 -->
<div class="am-panel am-panel-default" id="goods-nav-parameters">
<div class="am-panel-hd">
<h3 class="am-panel-title">商品参数<span class="am-form-group-label-tips">选填</span></h3>
<h3 class="am-panel-title">商品参数</h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
@ -245,7 +286,7 @@
<!-- 相册 -->
<div class="am-panel am-panel-default" id="goods-nav-photo">
<div class="am-panel-hd">
<h3 class="am-panel-title">商品相册<span class="am-form-group-label-tips-must">必传</span></h3>
<h3 class="am-panel-title">商品相册<span class="am-form-group-label-tips-must">*</span></h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
@ -272,7 +313,7 @@
<!-- 视频 -->
<div class="am-panel am-panel-default" id="goods-nav-video">
<div class="am-panel-hd">
<h3 class="am-panel-title">商品视频<span class="am-form-group-label-tips">选传</span></h3>
<h3 class="am-panel-title">商品视频</h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
@ -297,7 +338,7 @@
<!-- 手机详情 -->
<div class="am-panel am-panel-default" id="goods-nav-app">
<div class="am-panel-hd">
<h3 class="am-panel-title">手机详情<span class="am-form-group-label-tips">选填</span></h3>
<h3 class="am-panel-title">手机详情</h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
@ -310,11 +351,10 @@
data-required="1"
data-images-name="content_app_images"
data-content-name="content_app_text"
data-images-title="图片"
data-images-name="上传图片"
data-images-title="上传图片"
data-content-title="文本内容"
data-delete-name="删除"
data-drag-name="拖拽排序"
data-delete-title="删除"
data-drag-title="拖拽排序"
>
{{if !empty($data['content_app'])}}
{{foreach $data.content_app as $v}}
@ -338,8 +378,8 @@
<textarea rows="5" name="content_app_text_{{$v.id}}" maxlength="105000" class="am-radius" placeholder="文本内容" data-validation-message="文本内容最多 105000 个字符">{{if !empty($v)}}{{$v.content_old|raw}}{{/if}}</textarea>
</div>
</div>
<a href="javascript:;" class="am-text-xs am-text-danger content-app-items-rem-sub">删除</a>
<a href="javascript:;" class="am-text-xs am-margin-left-lg drag-sort-submit">拖拽排序</a>
<a href="javascript:;" class="am-text-xs am-text-danger am-icon-remove content-app-items-rem-sub"> 删除</a>
<a href="javascript:;" class="am-text-xs am-margin-left-lg am-icon-arrows drag-sort-submit"> 拖拽排序</a>
</li>
{{/foreach}}
{{/if}}
@ -352,7 +392,7 @@
<!-- 电脑详情 -->
<div class="am-panel am-panel-default" id="goods-nav-web">
<div class="am-panel-hd">
<h3 class="am-panel-title">电脑详情<span class="am-form-group-label-tips-must">必填</span></h3>
<h3 class="am-panel-title">电脑详情<span class="am-form-group-label-tips-must">*</span></h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
@ -364,7 +404,7 @@
<!-- 虚拟信息 -->
<div class="am-panel am-panel-default" id="goods-nav-fictitious">
<div class="am-panel-hd">
<h3 class="am-panel-title">虚拟信息<span class="am-form-group-label-tips">选填</span></h3>
<h3 class="am-panel-title">虚拟信息</h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
@ -403,14 +443,14 @@
<!-- SEO信息 -->
<div class="am-panel am-panel-default" id="goods-nav-seo">
<div class="am-panel-hd">
<h3 class="am-panel-title">SEO信息<span class="am-form-group-label-tips">选填</span></h3>
<h3 class="am-panel-title">SEO信息</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
{{include file="lib/seo" /}}
</div>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if isset($data) and !empty($data['id']) and (!isset($is_copy) or $is_copy neq 1)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>

View File

@ -20,7 +20,7 @@
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/goodscategory/save')}}" method="POST" request-type="ajax-fun" request-value="TreeFormSaveBack">
<div class="am-form-group am-form-file">
<label class="block">icon图标</label>
<label class="block">icon图标<span class="am-form-group-label-tips">建议100x100px</span></label>
<ul class="plug-file-upload-view goods-category-icon-images-view" data-form-name="icon" data-max-number="1" data-dialog-type="images">
<li>
<input type="hidden" name="icon" value="" />
@ -31,7 +31,7 @@
<div class="plug-file-upload-submit" data-view-tag="ul.goods-category-icon-images-view">+上传图片</div>
</div>
<div class="am-form-group am-form-file">
<label class="block">大图片<span class="am-form-group-label-tips">建议大小360x360像素</span></label>
<label class="block">大图片<span class="am-form-group-label-tips">建议360x360px</span></label>
<ul class="plug-file-upload-view goods-category-big_images-images-view" data-form-name="big_images" data-max-number="1" data-dialog-type="images">
<li>
<input type="hidden" name="big_images" value="" />
@ -49,7 +49,7 @@
</button>
</div>
<div class="am-form-group">
<label>名称</label>
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
</div>
<div class="am-form-group">

View File

@ -1,5 +1,5 @@
<div class="am-form-group region-linkage" data-url="{{:MyUrl('admin/region/node')}}">
<label class="block">省市区{{if isset($is_force_region_choice) and $is_force_region_choice eq 1}}<span class="am-form-group-label-tips-must">必选</span>{{else /}}<span class="am-form-group-label-tips">可选</span>{{/if}}</label>
<label class="block">省市区{{if isset($is_force_region_choice) and $is_force_region_choice eq 1}}<span class="am-form-group-label-tips-must">*</span>{{/if}}</label>
<select name="province" data-next="city" class="am-radius chosen-select" data-placeholder="省份" data-validation-message="请选择省份" data-value="{{if isset($data['province'])}}{{$data.province}}{{else /}}0{{/if}}" {{if isset($is_force_region_choice) and $is_force_region_choice eq 1}}required{{/if}}>
<option value="">省份</option>
</select>

View File

@ -21,12 +21,12 @@
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/link/Save')}}" method="POST" request-type="ajax-reload" request-value="">
<div class="am-form-group">
<label>名称</label>
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
</div>
<div class="am-form-group">
<label>链接地址<span class="am-form-group-label-tips">带http://或https://</span></label>
<input type="url" placeholder="链接地址" name="url" data-validation-message="链接地址格式有误" class="am-radius" required />
<label>链接地址<span class="am-form-group-label-tips-must">*</span></label>
<input type="url" placeholder="链接地址、以http://或https://开头" name="url" data-validation-message="链接地址格式有误" class="am-radius" required />
</div>
<div class="am-form-group">
<label>顺序</label>

View File

@ -66,12 +66,12 @@
</select>
</div>
<div class="am-form-group">
<label>导航名称</label>
<label>导航名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="导航名称" name="name" minlength="2" maxlength="16" data-validation-message="导航名称格式 2~16 个字符" class="am-radius" required />
</div>
<div class="am-form-group">
<label>url地址<span class="am-form-group-label-tips">带http://或https://</span></label>
<input type="url" placeholder="url地址" name="url" data-validation-message="url格式有误" class="am-radius" required />
<label>url地址<span class="am-form-group-label-tips-must">*</span></label>
<input type="url" placeholder="url地址、以http://或https://开头" name="url" data-validation-message="url格式有误" class="am-radius" required />
</div>
<div class="am-form-group">
<label>顺序</label>
@ -112,7 +112,7 @@
</select>
</div>
<div class="am-form-group">
<label>文章</label>
<label>文章<span class="am-form-group-label-tips-must">*</span></label>
<select class="am-radius chosen-select" name="value" data-placeholder="请选择..." data-validation-message="文章选择有误" required>
<option value="">请选择...</option>
{{foreach $article_list as $v}}
@ -170,7 +170,7 @@
</select>
</div>
<div class="am-form-group">
<label>自定义页面</label>
<label>自定义页面<span class="am-form-group-label-tips-must">*</span></label>
<select class="am-radius chosen-select" name="value" data-placeholder="请选择..." data-validation-message="自定义页面选择有误" required>
<option value="">请选择...</option>
{{foreach $customview_list as $v}}
@ -221,7 +221,7 @@
</select>
</div>
<div class="am-form-group">
<label>商品分类</label>
<label>商品分类<span class="am-form-group-label-tips-must">*</span></label>
<select class="am-radius chosen-select" name="value" data-placeholder="请选择..." data-validation-message="商品分类选择有误" required>
<option value="">请选择...</option>
{{foreach $goods_category_list as $v}}
@ -282,7 +282,7 @@
</select>
</div>
<div class="am-form-group">
<label>页面设计</label>
<label>页面设计<span class="am-form-group-label-tips-must">*</span></label>
<select class="am-radius chosen-select" name="value" data-placeholder="请选择..." data-validation-message="页面设计选择有误" required>
<option value="">请选择...</option>
{{foreach $design_list as $v}}

View File

@ -13,11 +13,11 @@
{{include file="public/not_data" /}}
{{else /}}
<div class="am-form-group">
<label>名称</label>
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="60" data-validation-message="名称格式 2~30 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>适用终端</label>
<label>适用终端<span class="am-form-group-label-tips-must">*</span></label>
<select name="apply_terminal" class="am-radius chosen-select" multiple="multiple" minchecked="1" data-placeholder="可选择..." data-validation-message="至少选择一个适用终端" required>
{{foreach $common_platform_type as $v}}
{{if isset($data) and isset($data['apply_terminal_old']) and is_array($data['apply_terminal_old']) and in_array($v['value'], $data['apply_terminal_old'])}}

View File

@ -44,7 +44,7 @@
</select>
</div>
<div class="am-form-group">
<label>权限名称</label>
<label>权限名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="权限名称" name="name" minlength="2" maxlength="16" data-validation-message="权限名称格式 2~8 个字符之间" class="am-radius" required />
</div>
<div class="am-form-group">
@ -71,7 +71,7 @@
</div>
<div class="am-form-group">
<label>顺序</label>
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" required />
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" />
</div>
{{include file="lib/is_show" /}}
<div class="am-form-popup-submit">

View File

@ -10,12 +10,12 @@
<a href="{{:MyUrl('admin/quicknav/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> 返回</a>
</legend>
<div class="am-form-group">
<label>名称</label>
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="60" data-validation-message="名称格式 2~60 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>所属平台</label>
<label>所属平台<span class="am-form-group-label-tips-must">*</span></label>
<select name="platform" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="所属平台有误" data-validation-message="请选择所属平台" required>
<option value="">可选择...</option>
{{foreach $common_platform_type as $v}}
@ -25,7 +25,7 @@
</div>
<div class="am-form-group">
<label>事件类型</label>
<label>事件类型<span class="am-form-group-label-tips-must">*</span></label>
<select name="event_type" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="事件值类型有误" data-validation-message="请选择事件类型" required>
<option value="">可选择...</option>
{{foreach $common_app_event_type as $v}}
@ -40,7 +40,7 @@
</div>
<div class="am-form-group am-form-file">
<label class="block">导航图标</label>
<label class="block">导航图标<span class="am-form-group-label-tips-must">*</span></label>
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="请上传图片" required />

View File

@ -20,7 +20,7 @@
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/region/save')}}" method="POST" request-type="ajax-fun" request-value="TreeFormSaveBack">
<div class="am-form-group">
<label>名称</label>
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
</div>
<div class="am-form-group">

View File

@ -10,7 +10,7 @@
<a href="{{:MyUrl('admin/role/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> 返回</a>
</legend>
<div class="am-form-group">
<label>角色名称</label>
<label>角色名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="角色名称" name="name" minlength="2" maxlength="16" data-validation-message="角色名称格式 2~8 个字符之间" class="am-radius" {{if !empty($data)}}value="{{$data.name}}"{{/if}} required />
</div>

View File

@ -21,15 +21,15 @@
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/screeningprice/save')}}" method="POST" request-type="ajax-fun" request-value="TreeFormSaveBack">
<div class="am-form-group">
<label>名称</label>
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
</div>
<div class="am-form-group">
<label>最小价格</label>
<label>最小价格<span class="am-form-group-label-tips-must">*</span></label>
<input type="number" placeholder="最小价格" name="min_price" maxlength="10" data-validation-message="最小价格有误" class="am-radius" value="0" required />
</div>
<div class="am-form-group">
<label>最大价格</label>
<label>最大价格<span class="am-form-group-label-tips-must">*</span></label>
<input type="number" placeholder="最大价格" name="max_price" maxlength="10" data-validation-message="最大价格有误" class="am-radius" value="0" required />
</div>
<div class="am-form-group">

View File

@ -10,12 +10,12 @@
<a href="{{:MyUrl('admin/slide/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> 返回</a>
</legend>
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">必填</span></label>
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="60" data-validation-message="名称格式 2~60 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>所属平台<span class="am-form-group-label-tips-must">必选</span></label>
<label>所属平台<span class="am-form-group-label-tips-must">*</span></label>
<select name="platform" class="am-radius chosen-select" data-placeholder="可选择..." data-validation-message="请选择所属平台" required>
<option value="">可选择...</option>
{{foreach $common_platform_type as $v}}
@ -40,7 +40,7 @@
</div>
<div class="am-form-group am-form-file">
<label class="block">轮播图片<span class="am-form-group-label-tips-must">必传</span></label>
<label class="block">轮播图片<span class="am-form-group-label-tips-must">*</span></label>
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="请上传图片" required />
@ -50,7 +50,7 @@
<div class="plug-file-upload-submit" data-view-tag="ul.slide-images_url-images-view">+上传图片</div>
<div class="am-alert am-alert-warning" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>1. PC端建议尺寸1920x500px</p>
<p>1. PC端建议尺寸1920x480px</p>
<p>2. 手机端建议尺寸1200x360px</p>
</div>
</div>

View File

@ -4,7 +4,7 @@
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation am-form-full-screen" action="{{:MyUrl('admin/user/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/user/index', $params)}}">
<form class="am-form form-validation am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/user/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/user/index', $params)}}">
<legend>
<span class="am-text-default">用户{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<a href="{{:MyUrl('admin/user/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> 返回</a>
@ -209,7 +209,7 @@
{{/if}}
<!-- 插件扩展数据 end -->
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-horizontal-0">
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>

View File

@ -4,7 +4,7 @@
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/useraddress/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/useraddress/index', $params)}}">
<form class="am-form form-validation am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/useraddress/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/useraddress/index', $params)}}">
<legend>
<span class="am-text-default">用户地址{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<a href="{{:MyUrl('admin/useraddress/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> 返回</a>
@ -22,26 +22,38 @@
{{/if}}
<div class="am-form-group">
<label>用户id<span class="am-form-group-label-tips-must">必填</span></label>
<label>用户id<span class="am-form-group-label-tips-must">*</span></label>
<input type="number" name="user_id" placeholder="用户id" min="0" data-validation-message="请填写用户id" class="am-radius" {{if !empty($data['user_id'])}} value="{{$data.user_id}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>别名<span class="am-form-group-label-tips">选填</span></label>
<input type="text" name="alias" placeholder="别名" minlength="0" maxlength="16" data-validation-message="别名格式最多 16 个字符" class="am-radius" {{if !empty($data['alias'])}} value="{{$data.alias}}"{{/if}} />
</div>
<div class="am-form-group">
<label>姓名<span class="am-form-group-label-tips-must">必填</span></label>
<input type="text" name="name" placeholder="姓名" minlength="2" maxlength="16" data-validation-message="姓名格式 2~16 个字符之间" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>电话<span class="am-form-group-label-tips-must">必填</span></label>
<input type="text" name="tel" placeholder="电话" minlength="6" maxlength="30" data-validation-message="电话格式有误" class="am-radius" {{if !empty($data['tel'])}} value="{{$data.tel}}"{{/if}} required />
<div class="am-cf">
<div class="am-u-sm-8 am-padding-horizontal-0">
<div class="am-cf">
<div class="am-u-sm-8 am-padding-horizontal-0">
<div class="am-form-group">
<label>姓名<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="姓名" minlength="2" maxlength="16" data-validation-message="姓名格式 2~16 个字符之间" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
</div>
<div class="am-u-sm-4 am-padding-horizontal-0">
<div class="am-form-group">
<label>别名</label>
<input type="text" name="alias" placeholder="别名" minlength="0" maxlength="16" data-validation-message="别名格式最多 16 个字符" class="am-radius" {{if !empty($data['alias'])}} value="{{$data.alias}}"{{/if}} />
</div>
</div>
</div>
</div>
<div class="am-u-sm-4 am-padding-horizontal-0">
<div class="am-form-group">
<label>电话<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="tel" placeholder="电话" minlength="6" maxlength="30" data-validation-message="电话格式有误" class="am-radius" {{if !empty($data['tel'])}} value="{{$data.tel}}"{{/if}} required />
</div>
</div>
</div>
{{include file="lib/region_linkage" /}}
<div class="am-form-group">
<label>详细地址<span class="am-form-group-label-tips-must">必填</span></label>
<label>详细地址<span class="am-form-group-label-tips-must">*</span></label>
<div class="am-input-group am-input-group-sm">
<input type="hidden" name="lng" id="form-lng" {{if !empty($data['lng'])}} value="{{$data.lng}}"{{/if}} />
<input type="hidden" name="lat" id="form-lat" {{if !empty($data['lat'])}} value="{{$data.lat}}"{{/if}} />
@ -59,18 +71,18 @@
</div>
<div class="am-alert am-alert-secondary">
<div class="am-form-group">
<label>身份证姓名<span class="am-form-group-label-tips">选填,请务必与上传的身份证件姓名保持一致</span></label>
<label>身份证姓名<span class="am-form-group-label-tips">请务必与上传的身份证件姓名保持一致</span></label>
<input type="text" name="idcard_name" placeholder="身份证姓名" minlength="0" maxlength="16" data-validation-message="身份证姓名格式最多 16 个字符" class="am-radius" {{if !empty($data['idcard_name'])}} value="{{$data.idcard_name}}"{{/if}} />
</div>
<div class="am-form-group">
<label>身份证号码<span class="am-form-group-label-tips">选填,请务必与上传的身份证件号码保持一致</span></label>
<label>身份证号码<span class="am-form-group-label-tips">请务必与上传的身份证件号码保持一致</span></label>
<input type="text" name="idcard_number" placeholder="身份证号码" minlength="0" maxlength="18" data-validation-message="身份证号码格式最多 18 个字符" class="am-radius" {{if !empty($data['idcard_number'])}} value="{{$data.idcard_number}}"{{/if}} />
</div>
{{if empty($data) or empty($data['user_id'])}}
<p class="am-text-center am-text-warning am-margin-top-sm">先关联用户后再上传身份证图片</p>
{{else /}}
<div class="am-form-group plug-file-upload-view">
<label>身份证照片<span class="am-form-group-label-tips">选填,请使用身份证原件拍摄,图片要清晰</span></label>
<label>身份证照片<span class="am-form-group-label-tips">请使用身份证原件拍摄,图片要清晰</span></label>
<div class="am-nbfc user-address-idcard-images">
<div class="am-fl">
<ul class="plug-file-upload-view images-idcard_front" data-form-name="idcard_front" data-max-number="1" data-dialog-type="images">
@ -101,7 +113,7 @@
{{/if}}
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data['id'])}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>

View File

@ -11,30 +11,30 @@
</legend>
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">必填</span></label>
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="30" data-validation-message="名称格式 2~30 个字符之间" class="am-radius" {{if !empty($data)}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>别名<span class="am-form-group-label-tips">选填</span></label>
<label>别名</label>
<input type="text" name="alias" placeholder="别名" minlength="0" maxlength="16" data-validation-message="别名格式最多 16 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.alias}}"{{/if}} />
</div>
<div class="am-form-group">
<label>权重<span class="am-form-group-label-tips">选填、权重数值越大代表权重越高</span></label>
<label>权重<span class="am-form-group-label-tips">权重数值越大代表权重越高</span></label>
<input type="number" name="level" placeholder="权重" minlength="0" maxlength="16" data-validation-message="请输入有效权重数值" class="am-radius" {{if !empty($data)}} value="{{$data.level}}"{{/if}} />
</div>
<div class="am-form-group">
<label>联系人<span class="am-form-group-label-tips-must">必填</span></label>
<label>联系人<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="contacts_name" placeholder="联系人" minlength="2" maxlength="16" data-validation-message="联系人格式 2~16 个字符之间" class="am-radius" {{if !empty($data)}} value="{{$data.contacts_name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>联系电话<span class="am-form-group-label-tips-must">必填</span></label>
<label>联系电话<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="contacts_tel" placeholder="电话" minlength="6" maxlength="30" data-validation-message="电话格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.contacts_tel}}"{{/if}} required />
</div>
{{include file="lib/region_linkage" /}}
<div class="am-form-group">
<label>详细地址<span class="am-form-group-label-tips-must">必填</span></label>
<label>详细地址<span class="am-form-group-label-tips-must">*</span></label>
<div class="am-input-group am-input-group-sm">
<input type="hidden" name="lng" id="form-lng" {{if !empty($data)}} value="{{$data.lng}}"{{/if}} />
<input type="hidden" name="lat" id="form-lat" {{if !empty($data)}} value="{{$data.lat}}"{{/if}} />

View File

@ -79,7 +79,7 @@ class UserAddress extends Common
'is_footer' => 0,
// 加载地图
'is_load_map_api' => 1,
'is_load_map_api' => MyC('home_user_address_map_status'),
// 编辑器文件存放地址
'editor_path_type' => ResourcesService::EditorPathTypeValue(UserAddressService::EditorAttachmentPathType($this->user['id'])),

View File

@ -233,7 +233,7 @@
{{if !empty($buy_goods)}}
<div class="goods-group-list">
{{foreach $buy_goods as $v}}
<div class="am-panel am-panel-default am-margin-top-sm am-margin-bottom-0">
<div class="am-panel am-panel-default am-margin-top-sm am-margin-bottom-0 am-radius">
<div class="am-panel-hd">
<!-- 分组导航内部开始钩子-开始 -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
@ -327,7 +327,7 @@
{{/php}}
<!-- 分组导航内部结束钩子-结束 -->
</div>
<div class="am-panel-bd am-radius">
<div class="am-panel-bd">
<!-- 分组商品顶部钩子-开始 -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<div class="plugins-tag">

View File

@ -1,5 +1,5 @@
<div class="am-form-group region-linkage" data-url="{{:MyUrl('index/region/index')}}">
<label class="block">省市区{{if isset($is_force_region_choice) and $is_force_region_choice eq 1}}<span class="am-form-group-label-tips-must">必选</span>{{else /}}<span class="am-form-group-label-tips">可选</span>{{/if}}</label>
<label class="block">省市区{{if isset($is_force_region_choice) and $is_force_region_choice eq 1}}<span class="am-form-group-label-tips-must">*</span>{{/if}}</label>
<select name="province" data-next="city" class="am-radius chosen-select" data-placeholder="省份" data-validation-message="请选择省份" data-value="{{if isset($data['province'])}}{{$data.province}}{{else /}}0{{/if}}" {{if isset($is_force_region_choice) and $is_force_region_choice eq 1}}required{{/if}}>
<option value="">省份</option>
</select>

View File

@ -343,6 +343,14 @@
{{if !empty($data.express_name)}}{{$data.express_name}}{{/if}}
</div>
</div>
{{if !empty($data['express_website_url'])}}
<div class="items am-cf">
<div class="items-title am-fl">快递官网:</div>
<div class="items-detail am-fl">
<a href="{{$data.express_website_url}}" target="_blank" class="am-text-primary">{{$data.express_website_url}}</a>
</div>
</div>
{{/if}}
{{if !empty($data.express_number)}}
<div class="items am-cf">
<div class="items-title am-fl">快递单号:</div>
@ -518,12 +526,19 @@
</a>
<div class="am-nbfc">
<a href="{{$goods.goods_url}}" target="_blank" class="am-nowrap-initial">{{$goods.title}}</a>
{{if !empty($goods.spec)}}
<ul class="goods-spec am-margin-top-xs">
{{foreach $goods.spec as $spec}}
<li>{{$spec.type}}{{$spec.value}}</li>
{{/foreach}}
</ul>
{{if !empty($goods.spec_text)}}
<div class="am-margin-top-xs am-nowrap-initial">{{$goods.spec_text}}</div>
{{/if}}
{{if ($data['is_can_launch_aftersale'] eq 1 or !empty($goods['orderaftersale'])) and !empty($goods['orderaftersale_btn_text'])}}
<div class="am-fr">
<a href="{{:MyUrl('index/orderaftersale/detail', ['oid'=>$data['id'], 'did'=>$goods['id']])}}" target="_blank" class="am-text-primary">
{{if empty($goods['orderaftersale'])}}
{{$goods.orderaftersale_btn_text}}
{{else /}}
<span class="{{if $goods['orderaftersale']['status'] eq 3}}am-text-success{{else /}}am-text-secondary{{/if}}">{{$goods.orderaftersale_btn_text}}</span>
{{/if}}
</a>
</div>
{{/if}}
</div>
</div>

View File

@ -118,17 +118,17 @@
<span class="am-text-danger am-margin-left-lg">已退 {{$item.returned_quantity}} / {{$module_data.currency_data.currency_symbol}}{{$item.refund_price}}</span>
{{/if}}
<div class="am-fr">
{{if ($module_data['is_can_launch_aftersale'] eq 1 or !empty($item['orderaftersale'])) and !empty($item['orderaftersale_btn_text'])}}
<a href="{{:MyUrl('index/orderaftersale/detail', ['oid'=>$module_data['id'], 'did'=>$item['id']])}}" target="_blank">
{{if empty($item['orderaftersale'])}}
{{$item.orderaftersale_btn_text}}
{{else /}}
<span class="{{if $item['orderaftersale']['status'] eq 3}}am-text-success{{else /}}am-text-secondary{{/if}}">{{$item.orderaftersale_btn_text}}</span>
{{/if}}
</a>
{{if ($module_data['is_can_launch_aftersale'] eq 1 or !empty($item['orderaftersale'])) and !empty($item['orderaftersale_btn_text'])}}
<div class="am-fr">
<a href="{{:MyUrl('index/orderaftersale/detail', ['oid'=>$module_data['id'], 'did'=>$item['id']])}}" target="_blank" class="am-text-primary">
{{if empty($item['orderaftersale'])}}
{{$item.orderaftersale_btn_text}}
{{else /}}
<span class="{{if $item['orderaftersale']['status'] eq 3}}am-text-success{{else /}}am-text-secondary{{/if}}">{{$item.orderaftersale_btn_text}}</span>
{{/if}}
</a>
</div>
{{/if}}
</div>
</div>
<hr data-am-widget="divider" class="am-divider am-divider-dashed" />
{{/foreach}}

View File

@ -14,7 +14,6 @@
<!-- content -->
<div class="am-container user-main">
<!-- user menu start -->
{{include file="public/user_menu" /}}
<!-- user menu end -->
@ -46,7 +45,7 @@
<!-- 商品列表 -->
{{if !empty($goods)}}
<div class="am-panel am-panel-default order-base-panel">
<div class="am-panel am-panel-default order-base-panel am-radius">
<div class="am-panel-bd">
<!-- 用户订单售后详情顶部-开始 -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
@ -87,12 +86,8 @@
</a>
<div class="am-nbfc">
<a href="{{$goods.goods_url}}" target="_blank" class="goods-title">{{$goods.title}}</a>
{{if !empty($goods.spec)}}
<ul class="goods-spec am-margin-top-xs">
{{foreach $goods.spec as $spec}}
<li>{{$spec.type}}{{$spec.value}}</li>
{{/foreach}}
</ul>
{{if !empty($goods.spec_text)}}
<div class="am-margin-top-xs am-nowrap-initial">{{$goods.spec_text}}</div>
{{/if}}
</div>
</div>
@ -130,7 +125,7 @@
<!-- 用户订单售后详情商品底部顶部-结束 -->
<!-- 基础信息 -->
<div class="am-alert am-alert-secondary">
<div class="am-alert am-alert-secondary am-radius">
{{if !empty($order.price)}}
<div class="items am-cf">
<div class="items-title am-fl">商品总价:</div>
@ -231,7 +226,7 @@
<!-- 选择售后操作类型 -->
<div class="am-cf aftersale-type">
{{foreach $common_order_aftersale_type_list as $v}}
<div class="items-align {{$v.class}}" data-type="{{$v.value}}">
<div class="am-radius items-align {{$v.class}}" data-type="{{$v.value}}">
<div class="items-middle">
<div class="am-fl icon">
<i class="{{$v.icon}}"></i>

View File

@ -1,5 +1,5 @@
<!-- 退款 -->
<ul class="aftersale-step am-cf am-text-center return-only-money-step {{if empty($new_aftersale_data) or $new_aftersale_data['status'] gt 3 or $new_aftersale_data['type'] eq 1}}none{{/if}}">
<ul class="aftersale-step am-cf am-text-center am-radius return-only-money-step {{if empty($new_aftersale_data) or $new_aftersale_data['status'] gt 3 or $new_aftersale_data['type'] eq 1}}none{{/if}}">
{{if !empty($step_data['step0'])}}
{{foreach $step_data.step0 as $step}}
<li class="am-text-truncate {{if $step.is_active eq 1}} selected{{/if}} {{if $step.is_end eq 1}} selected-end{{/if}}">
@ -17,7 +17,7 @@
</ul>
<!-- 退货/退款 -->
<ul class="aftersale-step am-cf am-text-center return-money-goods-step {{if empty($new_aftersale_data) or $new_aftersale_data['status'] gt 3 or $new_aftersale_data['type'] eq 0}}none{{/if}}">
<ul class="aftersale-step am-cf am-text-center am-radius return-money-goods-step {{if empty($new_aftersale_data) or $new_aftersale_data['status'] gt 3 or $new_aftersale_data['type'] eq 0}}none{{/if}}">
{{if !empty($step_data['step1'])}}
{{foreach $step_data.step1 as $step}}
<li class="am-text-truncate {{if $step.is_active eq 1}} selected{{/if}} {{if $step.is_end eq 1}} selected-end{{/if}}">

View File

@ -115,7 +115,7 @@
<div class="am-topbar-right am-hide-sm-only">
<!-- 快捷百宝箱 -->
{{if MyC('home_navigation_main_quick_status') eq 1}}
<div class="navigation-main-quick">
<div class="navigation-main-quick am-radius">
<a href="javascript:;" class="am-block" data-am-modal="{target: '#left-main-quick-popup'}">
<span class="am-icon-sliders icon"></span>
<b class="am-block"></b>

View File

@ -3,23 +3,35 @@
<!-- conntent start -->
<div class="am-padding-sm">
<!-- form start -->
<form class="am-form form-validation" method="post" action="{{:MyUrl('index/useraddress/save')}}" request-type="ajax-reload" request-value="parent">
<div class="am-form-group">
<label>别名<span class="am-form-group-label-tips">选填</span></label>
<input type="text" name="alias" placeholder="别名" minlength="0" maxlength="16" data-validation-message="别名格式最多 16 个字符" class="am-radius" {{if !empty($data['alias'])}} value="{{$data.alias}}"{{/if}} />
</div>
<div class="am-form-group">
<label>姓名<span class="am-form-group-label-tips-must">必填</span></label>
<input type="text" name="name" placeholder="姓名" minlength="2" maxlength="16" data-validation-message="姓名格式 2~16 个字符之间" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>电话<span class="am-form-group-label-tips-must">必填</span></label>
<input type="text" name="tel" placeholder="电话" minlength="6" maxlength="30" data-validation-message="电话格式有误" class="am-radius" {{if !empty($data['tel'])}} value="{{$data.tel}}"{{/if}} required />
<form class="am-form form-validation am-form-full-screen am-form-popup-fixed" method="post" action="{{:MyUrl('index/useraddress/save')}}" request-type="ajax-reload" request-value="parent">
<div class="am-cf">
<div class="am-u-sm-8 am-padding-horizontal-0">
<div class="am-cf">
<div class="am-u-sm-8 am-padding-horizontal-0">
<div class="am-form-group">
<label>姓名<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="姓名" minlength="2" maxlength="16" data-validation-message="姓名格式 2~16 个字符之间" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
</div>
<div class="am-u-sm-4 am-padding-horizontal-0">
<div class="am-form-group">
<label>别名</label>
<input type="text" name="alias" placeholder="别名" minlength="0" maxlength="16" data-validation-message="别名格式最多 16 个字符" class="am-radius" {{if !empty($data['alias'])}} value="{{$data.alias}}"{{/if}} />
</div>
</div>
</div>
</div>
<div class="am-u-sm-4 am-padding-horizontal-0">
<div class="am-form-group">
<label>电话<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="tel" placeholder="电话" minlength="6" maxlength="30" data-validation-message="电话格式有误" class="am-radius" {{if !empty($data['tel'])}} value="{{$data.tel}}"{{/if}} required />
</div>
</div>
</div>
{{include file="lib/region_linkage" /}}
<div class="am-form-group">
<label>详细地址<span class="am-form-group-label-tips-must">必填</span></label>
<label>详细地址<span class="am-form-group-label-tips-must">*</span></label>
{{if MyC('home_user_address_map_status') eq 1}}
<div class="am-input-group am-input-group-sm">
<input type="hidden" name="lng" id="form-lng" {{if !empty($data['lng'])}} value="{{$data.lng}}"{{/if}} />
@ -81,7 +93,7 @@
</div>
{{/if}}
<div class="am-form-group am-form-group-refreshing">
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data['id'])}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>

View File

@ -23,7 +23,7 @@ use app\service\ResourcesService;
class ExpressService
{
/**
* 获取地区名称
* 获取快递名称
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
@ -56,6 +56,40 @@ class ExpressService
return (!empty($data) && is_array($data) && array_key_exists($express_ids, $data)) ? $data[$express_ids] : null;
}
/**
* 获取快递信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-19
* @desc description
* @param [array|int] $express_ids [快递id]
*/
public static function ExpressData($express_ids = 0)
{
if(empty($express_ids))
{
return null;
}
// 参数处理查询数据
if(is_array($express_ids))
{
$express_ids = array_filter(array_unique($express_ids));
}
if(!empty($express_ids))
{
$data = self::DataHandle(Db::name('Express')->where(['id'=>$express_ids])->column('id,name,website_url,icon', 'id'));
}
// id数组则直接返回
if(is_array($express_ids))
{
return empty($data) ? [] : $data;
}
return (!empty($data) && is_array($data) && array_key_exists($express_ids, $data)) ? $data[$express_ids] : null;
}
/**
* 快递列表
* @author Devil
@ -113,11 +147,8 @@ class ExpressService
*/
public static function ExpressNodeSon($params = [])
{
// id
$id = isset($params['id']) ? intval($params['id']) : 0;
// 获取数据
$field = 'id,pid,icon,name,sort,is_enable';
$field = 'id,pid,icon,name,website_url,sort,is_enable';
$data = Db::name('Express')->field($field)->where(['pid'=>$id])->order('sort asc')->select()->toArray();
if(!empty($data))
{
@ -167,11 +198,12 @@ class ExpressService
// 数据
$data = [
'name' => $params['name'],
'pid' => isset($params['pid']) ? intval($params['pid']) : 0,
'sort' => isset($params['sort']) ? intval($params['sort']) : 0,
'is_enable' => isset($params['is_enable']) ? intval($params['is_enable']) : 0,
'icon' => $attachment['data']['icon'],
'pid' => isset($params['pid']) ? intval($params['pid']) : 0,
'name' => $params['name'],
'website_url' => empty($params['website_url']) ? '' : $params['website_url'],
'sort' => isset($params['sort']) ? intval($params['sort']) : 0,
'is_enable' => isset($params['is_enable']) ? intval($params['is_enable']) : 0,
'icon' => $attachment['data']['icon'],
];
// 添加

View File

@ -491,7 +491,7 @@ class GoodsService
* @desc description
* @param [array] $ids [分类id数组]
* @param [int] $is_enable [是否启用 null, 0否, 1是]
* @param [int] $level [指定级别 null, 整数、默认则全部级]
* @param [int] $level [指定级别 null, 整数1~3、默认则全部级]
*/
public static function GoodsCategoryParentIds($ids = [], $is_enable = null, $level = null)
{

View File

@ -1261,10 +1261,10 @@ class OrderService
$user_list = UserService::GetUserViewInfo(array_column($data, 'user_id'));
}
// 快递名称
// 快递信息
if(in_array('express_id', $keys))
{
$express_list = ExpressService::ExpressName(array_column($data, 'express_id'));
$express_list = ExpressService::ExpressData(array_column($data, 'express_id'));
}
// 支付方式名称
@ -1350,7 +1350,17 @@ class OrderService
$v['pay_status_name'] = (in_array($v['status'], [2,3,4]) && $v['pay_status'] == 0) ? '待确认' : $order_pay_status[$v['pay_status']]['name'];
// 快递公司
$v['express_name'] = (!empty($express_list) && is_array($express_list) && array_key_exists($v['express_id'], $express_list)) ? $express_list[$v['express_id']] : null;
$express = (!empty($express_list) && is_array($express_list) && array_key_exists($v['express_id'], $express_list)) ? $express_list[$v['express_id']] : null;
if(empty($express))
{
$v['express_name'] = '';
$v['express_icon'] = '';
$v['express_website_url'] = '';
} else {
$v['express_name'] = $express['name'];
$v['express_icon'] = $express['icon'];
$v['express_website_url'] = $express['website_url'];
}
// 支付方式
$v['payment_name'] = (!empty($payment_list) && is_array($payment_list) && array_key_exists($v['id'], $payment_list)) ? $payment_list[$v['id']] : null;

View File

@ -14,7 +14,7 @@
right:0;
width:80px;
position:fixed;
z-index:1000;
z-index:10001;
border:1px solid #eee;
border-right:0px;
}
@ -149,7 +149,7 @@ ul {
overflow:hidden;
}
.content-app-items > li {
border:3px dashed #eee;
border:1px dashed #eee;
padding:10px;
}
ul li {

View File

@ -501,7 +501,7 @@ $(function()
html += '<label class="block">'+$app_content.data('images-title')+'</label>';
html += '<ul class="plug-file-upload-view goods-content-app-images-view-'+index+'" data-form-name="'+images_name+'_'+index+'" data-max-number="1" data-dialog-type="images">';
html += '</ul>';
html += '<div class="plug-file-upload-submit" data-view-tag="ul.goods-content-app-images-view-'+index+'">+'+$app_content.data('images-name')+'</div>';
html += '<div class="plug-file-upload-submit" data-view-tag="ul.goods-content-app-images-view-'+index+'">+'+$app_content.data('images-title')+'</div>';
html += '</div>';
// 右侧
@ -512,8 +512,8 @@ $(function()
html += '</div>';
// 操作按钮
html += '<a href="javascript:;" class="am-text-xs am-text-danger content-app-items-rem-sub">'+$app_content.data('delete-name')+'</a>';
html += ' <a href="javascript:;" class="am-text-xs am-margin-left-lg drag-sort-submit">'+$app_content.data('drag-name')+'</a>';
html += '<a href="javascript:;" class="am-text-xs am-text-danger am-icon-remove content-app-items-rem-sub"> '+$app_content.data('delete-title')+'</a>';
html += ' <a href="javascript:;" class="am-text-xs am-margin-left-lg am-icon-arrows drag-sort-submit"> '+$app_content.data('drag-title')+'</a>';
html += '</li>';
$app_content.append(html);
$app_content.attr('index', index);

View File

@ -2923,6 +2923,30 @@ function CommonGoodsChoiceSpecType()
});
}
/**
* 二维码初始化
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2023-01-09
* @desc description
*/
function ViewQrCodeInit()
{
$('.view-qrcode-init').each(function()
{
var text = $(this).text();
if(text !== '')
{
$(this).empty().qrcode({
text: text,
width: parseInt($(this).data('width') || 100),
height: parseInt($(this).data('height') || 100)
});
}
});
}
// 公共数据操作
$(function()
@ -2933,6 +2957,9 @@ $(function()
// 颜色选择器初始化
ColorPickerInit();
// 二维码初始化
ViewQrCodeInit();
// 表格字段数据排序
$('.form-sort-container .sort-icon').on('click', function()
{

File diff suppressed because it is too large Load Diff

View File

@ -139,7 +139,7 @@ ul.progress li.current .title {
float: left;
}
.order-base {
border: 1px solid #ddd;
border: 1px solid #f0f0f0;
}
.order-base .am-panel-default {
border-color: #fff;
@ -149,7 +149,7 @@ ul.progress li.current .title {
margin: 0;
}
.order-base .base-left {
border-right: 1px solid #ddd;
border-right: 1px solid #f0f0f0;
}
.order-base .base-right {
padding-top: 0;
@ -157,7 +157,7 @@ ul.progress li.current .title {
}
@media only screen and (max-width: 641px) {
.order-base .base-right {
border: 1px solid #ddd;
border: 1px solid #f0f0f0;
}
}