| Server IP : 156.238.232.47 / Your IP : 216.73.216.150 Web Server : nginx/1.25.3 System : Linux C202504152095410 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : www ( 1000) PHP Version : 8.3.25 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /www/data/wwwroot/2025_09_04_01/application/admin/template/field/ |
Upload File : |
{include file="public/layout" /}
<body class="bodystyle">
<div id="toolTipLayer" style="position: absolute; z-index: 9999; display: none; visibility: visible; left: 95px; top: 573px;"></div>
<div id="append_parent"></div>
<div id="ajaxwaitid"></div>
<div class="page min-hg-c-i">
<form class="form-horizontal" id="post_form" action="{:url('Field/channel_add')}" method="post">
<!-- 常规选项 -->
<div class="ncap-form-default tab_div_1">
{if condition="!empty($type) && 'all' == $type"}
<dl class="row">
<dt class="tit">
<label><em>*</em>所属模型</label>
</dt>
<dd class="opt">
<select name="channel_id" id="channel_id" onchange="channelSelect(this);">
<option value="0">请选择模型</option>
{volist name="$channeltype_list" id="vo"}
<option value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
</dd>
</dl>
<script type="text/javascript">
function channelSelect(obj) {
var channel_id = $(obj).val();
var resData = '<option value="0" selected="false">—指定所有栏目—</option>';
if (channel_id && channel_id > 0) {
$.ajax({
type: 'post',
url : "{:url('Field/channel_select')}",
data: {'_ajax': 1, channel_id: channel_id},
dataType: 'json',
success: function(res){
if (res.code == 1) {
resData = resData + res.data;
$('#typeid').empty().html(resData);
} else {
showErrorMsg(res.msg);
}
},
error: function(e){
layer.alert(e.responseText, {icon: 5, title: false, closeBtn: false});
}
});
} else {
$('#typeid').empty().html(resData);
}
}
</script>
{/if}
<dl class="row">
<dt class="tit">
<label for="title"><em>*</em>字段名称</label>
</dt>
<dd class="opt">
<input type="text" value="" name="title" id="title" class="input-txt">
<p class="notic"></p>
</dd>
</dl>
<dl class="row">
<dt class="tit">
<label for="name"><em>*</em>字段标识</label>
</dt>
<dd class="opt">
<input type="text" value="" name="name" id="name" placeholder="支持字母、数字和下划线,不能和别的标识值相同" class="input-txt" onkeyup="this.value=this.value.replace(/[^0-9a-zA-Z_]/g,'');" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^0-9a-zA-Z_]/g,''));">
<p class="notic">保持唯一性</p>
</dd>
</dl>
<dl class="row">
<dt class="tit">
<label for="dtype"><em>*</em>数据类型</label>
</dt>
<dd class="opt">
{volist name='$fieldtype_list' id='vo'}
<div style="width: 150px; float: left;">
<label><input type="radio" name="dtype" value="{$vo.name}" data-ifoption="{$vo.ifoption|default=0}" {eq name='$i' value='1'} checked="checked" {/eq} data-text="{$vo.title}">{$vo.title}</label>
</div>
{if condition="$i % 4 == 0"}<br/>{/if}
{/volist}
<span class="err"></span>
<p class="notic"></p>
</dd>
</dl>
<div id='region_div' style="display: none;">
<dl class="row">
<dt class="tit">
<label for="region"><em>*</em>区域选择</label>
</dt>
<dd class="opt">
<select id="province" onchange="GetRegionData(this,'province');">
<option value="-1">请选择</option>
{volist name='$Province' id='P_V'}
<option value="{$P_V.id}">{$P_V.name}</option>
{/volist}
</select>
<span id='CityId'>
<select id="city" onchange="GetRegionData(this,'city');">
<option value="">请选择</option>
</select>
</span>
<span class="err"></span>
<p class="notic"></p>
</dd>
<input type="hidden" id="GetRegionDataUrl" value="{:url('Field/ajax_get_region_data')}">
<input type="hidden" name="region_data[region_id]" id="RegionId" value="-1">
</dl>
<dl class="row">
<dt class="tit">
<label><em>*</em>默认值</label>
</dt>
<dd class="opt">
<textarea rows="5" cols="60" name="region_data[region_names]" id="region_names" readonly='readonly' placeholder="这里会自动区域选择之后的下级区域列表" style="height:110px; background-color: #f5f5f5;"></textarea>
<span class="err"></span>
<p class="notic">这里会自动区域选择之后的下级区域列表</p>
</dd>
<input type="hidden" name="region_data[region_ids]" id='region_ids' value='' style="width: 100%;">
</dl>
<dl class="row">
<dt class="tit">
<label>三级区域联动</label>
</dt>
<dd class="opt">
<div class="onoff">
<label for="SetType_1" class="cb-enable">是</label>
<input id="SetType_1" name="set_type" value="1" type="radio" onclick="change_set_type(this);">
<label for="SetType_0" class="cb-disable selected">否</label>
<input id="SetType_0" name="set_type" value="0" type="radio" onclick="change_set_type(this);">
</div>
<span class="err"></span>
<p class="notic">是否开启三级联动</p>
</dd>
</dl>
</div>
<!-- 多项参数 -->
<dl class="row" id="checkboxs-item" style="display: none;">
<dt class="tit">
<label for="attr_input_type">多选项参数</label>
</dt>
<dd class="opt">
<a href="JavaScript:void(0);" class="ncap-btn ncap-btn-green" onClick="addCommentHtml(this);" data-id="0">新增</a>
<div class="" style="margin-top: 15px;width: 650px;">
<div class="flexigrid">
<div class="hDiv">
<div class="hDivBox">
<table cellspacing="0" cellpadding="0" style="width: 100%;">
<thead>
<tr>
<th abbr="article_title" axis="col3" class="">
<div style="text-align: left; padding-left: 10px;" class="">默认值</div>
</th>
<th abbr="article_time" axis="col4" class="w80">
<div class="tc">排序</div>
</th>
<th abbr="article_time" axis="col6" class="w60">
<div class="tc">操作</div>
</th>
</tr>
</thead>
</table>
</div>
<div class="bDiv" style="height: auto;">
<div id="flexigrid" cellpadding="0" cellspacing="0" border="0">
<table style="width: 100%;">
<tbody id="Template"></tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<p class="notic2 pt5">此多选项改动或增加默认值,将不会对文档内已保存数据做改变</p>
</dd>
</dl>
<!-- 多项参数 end -->
<dl class="row" id="dl_dfvalue">
<dt class="tit">
<label id="label_dfvalue">默认值</label>
</dt>
<dd class="opt">
<textarea rows="5" cols="60" id="dfvalue" name="dfvalue" placeholder="前端将默认显示输入的默认值" style="height:60px;"></textarea>
<span class="err"></span>
<p class="notic">1、如果定义字段类型为下拉框、单选项、多选项时,默认值为必填项,不支持反斜杠 \ ,可以用斜杠 / 代替。<br/>2、特殊符号会被过滤掉,比如:&、=、?等<br/>3、定义字段类型为多选项时,默认值最多为64项,超出则截取前64项</p>
</dd>
</dl>
<dl class="row" id="dl_dfvalue_unit">
<dt class="tit">
<label for="dfvalue_unit">数值单位</label>
</dt>
<dd class="opt">
<input type="text" value="" name="dfvalue_unit" id="dfvalue_unit" placeholder="比如:元、个、件等等" class="input-txt">
<p class="notic">比如:元、个、件等等</p>
</dd>
</dl>
<dl class="row" id='IsRelease' {eq name='$usersConfig.users_open_release' value='0'} style="display: none;" {/eq}>
<dt class="tit">
<label>支持投稿</label>
</dt>
<dd class="opt">
<label class="curpoin"><input id="IsRelease_1" name="is_release" value="1" type="radio" >是</label>
<label class="curpoin"><input id="IsRelease_0" name="is_release" value="0" type="radio" checked="checked">否</label>
<span class="err"></span>
<p class="notic">是否应用于会员投稿中</p>
</dd>
</dl>
<dl class="row" id='IsScreening' style="display: none;">
<dt class="tit">
<label>支持筛选</label>
</dt>
<dd class="opt">
<label class="curpoin"><input id="IsScreening_1" name="is_screening" value="1" type="radio" >是</label>
<label class="curpoin"><input id="IsScreening_0" name="is_screening" value="0" type="radio" checked="checked">否</label>
<input type="hidden" name="IsScreening_status" value="0">
<span class="err"></span>
<p class="notic">是否应用于列表的条件筛选中</p>
<a id="call_tags_help" href="JavaScript:void(0);" onclick="click_to_eyou_1575506523('https://www.eyoucms.com/plus/view.php?aid=7881&origin_eycms=1','筛选标签调用')" class="none">查看标签调用</a>
</dd>
</dl>
<dl class="row">
<dt class="tit">
<label>提示文字</label>
</dt>
<dd class="opt">
<textarea rows="5" cols="60" id="remark" name="remark" placeholder="问号提示文字" style="height:60px;"></textarea>
<span class="err"></span>
<p class="notic"></p>
</dd>
</dl>
<dl class="row">
<dt class="tit">
<label for="title" id="select_title">指定栏目</label>
</dt>
<dd class="opt">
<select name="typeids[]" id="typeid" style="width: 300px;" size="15" multiple="true">
<option value="0" selected="false">—指定所有栏目—</option>
{$select_html}
</select>
<span class="err"></span>
<p class="red">(按 Ctrl 可以进行多选)</p>
</dd>
</dl>
<!-- <dl class="row">
<dt class="tit">
<label for="sort_order">排序</label>
</dt>
<dd class="opt">
<input type="text" value="100" name="sort_order" id="sort_order" class="input-txt">
<p class="notic">越小越靠前</p>
</dd>
</dl> -->
</div>
<!-- 常规选项 -->
<div class="ncap-form-default">
<div class="bot">
{if condition="empty($type)"}
<input type="hidden" name="channel_id" id="channel_id" value="{$channel_id|default=''}">
{/if}
<a href="JavaScript:void(0);" onclick="check_submit();" class="ncap-btn-big ncap-btn-green" id="submitBtn">确认提交</a>
</div>
</div>
</form>
</div>
<script type="text/javascript">
function change_set_type(obj) {
var val = $(obj).val();
if (1 == val) {
// $("#IsScreening_1").prop('checked',false);
// $("#IsScreening_0").prop('checked',true);
// $("#IsScreening").find('label').eq(1).removeClass('selected');
// $("#IsScreening").find('label').eq(2).addClass('selected');
// $("#IsScreening").hide();
$("#call_tags_help").hide();
}else{
// $("#IsScreening").show();
}
}
$(function(){
if (0 == $('#RegionId').val() || -1 == $('#RegionId').val()) {
$('#CityId').hide();
}
var screening_value = $('input:radio[name="is_screening"]:checked').val();
$('#IsScreening_'+screening_value).click();
$('input[name=dtype]').click(function(){
dtype_change(this);
});
function dtype_change(obj) {
var dtype = $(obj).val();
var ifoption = $(obj).data('ifoption');
if (0 <= $.inArray(dtype, ['datetime','switch','img','imgs','file','media','checkboxs'])) {
$('#dl_dfvalue').hide();
if(dtype=='checkboxs'){
$('#checkboxs-item').css('display','block');
$('#dl_dfvalue').css('display','none');
}else{
$('#dl_dfvalue').css('display','block');
$('#checkboxs-item').css('display','none')
}
ClearAreaData();
} else if ('region' == dtype) {
$('#region_div').show();
$('#dl_dfvalue').hide();
} else {
$('#dl_dfvalue').show();
$('#checkboxs-item').css('display','none')
ClearAreaData();
}
if (1 == ifoption) {
$('#label_dfvalue').html('<em>*</em>默认值');
} else {
$('#label_dfvalue').html('默认值');
}
if (0 <= $.inArray(dtype, ['text','multitext'])) {
$('#dfvalue').attr('placeholder', '前端将默认显示输入的默认值');
} else if (0 <= $.inArray(dtype, ['checkbox','radio','select'])) {
$('#dfvalue').attr('placeholder', '此处填写被选择的项目(用“,”分开,如“男,女”)。');
} else {
$('#dfvalue').attr('placeholder', '前端将默认显示输入的默认值');
}
if (0 <= $.inArray(dtype, ['region','checkbox','radio','select','checkboxs'])) {
$('#IsScreening').show();
$('input[name=IsScreening_status]').val(1);
} else {
$('#IsScreening').hide();
$('input[name=IsScreening_status]').val(0);
$('#select_title').html('指定栏目');
}
if (0 <= $.inArray(dtype, ['text','int','float','decimal'])) {
$('#dl_dfvalue_unit').show();
} else {
$('#dl_dfvalue_unit').hide();
}
}
});
// 当切换其他类型时清空所有关于区域选择的数据
function ClearAreaData(){
$('#region_div').hide();
$('#RegionId').val('');
$('#region_dfvalue').empty();
}
// 获取联动地址
function GetRegionData(t,type){
var parent_id = $(t).val();
if(!parent_id){
return false;
}
var url = $('#GetRegionDataUrl').val();
$.ajax({
url: url,
data: {parent_id:parent_id,_ajax:1},
type:'post',
dataType:'json',
success:function(res){
// 判断是否隐藏第二级地区选择栏
if (0 <= $.inArray(parent_id, res.parent_array)) {
$('#CityId').hide();
}else{
$('#CityId').show();
}
// 加载城市名称数据到textarea
$('#region_names').empty().html(res.region_names);
// 加载城市ID数据到input
$('#region_ids').val(res.region_ids);
// 加载ID到input
$('#RegionId').val(parent_id);
// 输出下一级栏目选项
if ('province' == type) {
res = '<option value='+parent_id+'>请选择</option>'+ res.region_html;
$('#city').empty().html(res);
}
},
error : function(e) {
layer.closeAll();
layer.alert(e.responseText, {icon: 5});
}
});
}
$('#IsScreening_1').click(function(){
$('#select_title').html('<em>*</em>指定栏目');
$('#typeid').find('option:first').attr('disabled', true).css('display', 'none');
$('#call_tags_help').show();
});
$('#IsScreening_0').click(function(){
$('#select_title').html('指定栏目');
$('#typeid').find('option:first').attr('disabled', false).css('display', '');
$('#call_tags_help').hide();
});
var parentObj = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
function check_submit(){
var allFilled = true;
if($('input[name="title"]').val() == ''){
showErrorMsg('字段标题不能为空!');
$('input[name=title]').focus();
return false;
}
var name = $('input[name="name"]').val();
var ret1 = /^[_]+$/;
var ret2 = /^[\w]+$/;
var ret3 = /^[0-9]+$/;
if (ret1.test(name) || !ret2.test(name)) {
showErrorMsg('字段名称格式不正确!');
$('input[name=name]').focus();
return false;
} else if (ret3.test(name)) {
showErrorMsg('字段名称不能纯数字!');
$('input[name=name]').focus();
return false;
}
if($('input[name=dtype]:checked').val() == ''){
showErrorMsg('请选择字段类型!');
$('input[name=dtype]').focus();
return false;
} else if ('region' == $('input[name=dtype]:checked').val()){
if (-1 == $('#RegionId').val()) {
showErrorMsg('请选择区域范围!');
$('#province').focus();
return false;
}
} else {
var ifoption = $('input[name=dtype]:checked').data('ifoption');
if (1 == ifoption) {
if ($.trim($('#dfvalue').val()) == '') {
showErrorMsg('默认值不能为空!');
$('#dfvalue').focus();
return false;
}
var tag = '|';
if($('#dfvalue').val().indexOf(tag) != -1){
showErrorMsg('默认值不能输入 | 符号!');
$('#dfvalue').focus();
return false;
}
}
if (0 <= $.inArray($('input[name=dtype]:checked').val(), ['radio','checkbox','select'])) {
var dfvalue = $.trim($('#dfvalue').val());
if(dfvalue.indexOf('\\') != -1){
showErrorMsg('默认值不支持反斜杠 \\ ,可用斜杠 / 代替');
$('#dfvalue').focus();
return false;
}
data = dfvalue.split(',');
for(var i = 0;i < data.length ;i++) {
for(var j = i+1;j < data.length;j++) {
if ($.trim(data[i]) == $.trim(data [j])){
showErrorMsg('默认值不能含有相同的值!');
$('#dfvalue').focus();
return false;
}
}
}
if (0 <= $.inArray($('input[name=dtype]:checked').val(), ['checkbox'])) {
if (64 < data.length) {
showErrorMsg('默认值最多填写64项!');
$('#dfvalue').focus();
return false;
}
}
}
if($('input[name=dtype]:checked').val()=='checkboxs'){
if ($(".mcheck-inp").length == 0) {
showErrorMsg('请添加多选项参数!');
return false;
}
$(".mcheck-inp").each(function () {
var inputValue = $(this).val();
if (inputValue === "") {
allFilled = false;
showErrorMsg('多选项参数不能为空!');
$(this).css("border", "1px solid red");
}else{
$(this).css("border", "");
}
});
}
}
if (0 >= parseInt($('#typeid').find('option:selected').length)) {
showErrorMsg('请选择指定栏目!');
$('#typeid').focus();
return false;
}
// 字段支持筛选时,指定栏目必须指定一个或多个栏目
if (1 == parseInt($('input:radio[name="is_screening"]:checked').val())) {
if (0 == parseInt($('#typeid').find('option:selected').val())) {
if (1 >= $('#typeid').val().length) {
showErrorMsg('字段支持筛选时,栏目必须指定一个或多个!');
$('#typeid').focus();
return false;
}
}
}
if(allFilled){
layer_loading('正在处理');
$.ajax({
type : 'post',
url : "{:url('Field/channel_add', ['_ajax'=>1])}",
data : $('#post_form').serialize(),
dataType : 'json',
success : function(res){
layer.closeAll();
if(res.code == 1){
var _parent = parent;
_parent.layer.close(parentObj);
_parent.layer.msg(res.msg, {shade: layer_shade, time: 1000}, function(){
_parent.window.location.reload();
});
}else{
showErrorMsg(res.msg);
}
},
error: function(e){
layer.closeAll();
layer.alert(e.responseText, {icon: 5, title:false});
}
});
}
}
// 添加多选项
function addCommentHtml(obj) {
// 获取当前评价框最大ID 后 +1
var id = parseInt($(obj).attr('data-id')) + parseInt(1);
var html = [
'<tr class="tr" id="tr_'+id+'" data-id="'+id+'">'+
'<td style="width: 100%"><div style="">'+
'<input type="text" name="mcheck['+id+'][]" class="mcheck-inp" value="" style="width: 90%;" autocomplete="off"></div></td><td>'+
'<div class="w80 tc"><input type="text" name="mcheck['+id+'][]" value="100" style="width: 50px;text-align: center;" value="100"></div></td>'+
'<td class=""><div class="w60 tc">'+
'<a class="btn red" href="javascript:void(0);" data-id="tr_'+id+'" onclick="DelHtml('+id+')">删除</a></div></td></tr>'
];
$('#Template').append(html);
// 覆盖当前评价框最大ID
$(obj).attr('data-id', id);
}
// 删除多选项
function DelHtml(id) {
$('#tr_' + id).remove();
}
</script>
{include file="public/footer" /}