Files
OMS/app/logistics/view/admin/edit_city_rule.html
2025-12-28 23:13:25 +08:00

460 lines
19 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!--
Copyright © ShopeX http://www.shopex.cn. All rights reserved.
See LICENSE file for license details.
-->
<style>
.shop-name{color:red;font-weight:bold;}
.newshop-name{color:red;font-weight:bold;}
.area-name{font-weight:bold;font-size:12px;padding-top:4px;padding-right:4px;padding-bottom:4px;}
.weight_rule li{float:left;padding:4px;text-align:left;}
.weight_rule ul{width:600px;}
.weight_left{width:200px;}
.weight_right{width:380px;}
select{width:80px;}
ul{padding:4px;}
</style>
规则设置详情<br>
<div class="tableform">
<form id='rule_form' method="post" action="index.php?app=logistics&ctl=admin_area_rule&act=editArearule">
<div class="division" style="min-height: 420px;">
<table width="100%" cellspacing="0" cellpadding="0" >
<tbody>
<tr>
<th>规则名称:</th>
<td><{input type="text" name="rule_name" value=$rule.rule_name vtype="required"}></td>
</tr>
<tr id="useful_area">
<th>适用地区:</th>
<td>
<table width="100%" cellspacing="1" cellpadding="1" style="border: 1px solid #cccccc; ">
<{foreach from=$area item=area}>
<tr style="border: 1px solid #cccccc; ">
<td ><{$area.local_name}></td>
<td style="border: 1px solid #cccccc; "><input type="checkbox" onclick="showAll(this,<{$area.area_id}>)">全选</td>
<td style="border: 1px solid #cccccc; ">
<div style="width:450px;">
<{foreach from=$area.area_items item=area_items}>
<li style="width:80px;float:left">
<input class="item<{$area.area_id}> shop-name" type="checkbox" name="first_city[]" value="<{$area_items.region_id}>" <{if $area_items.flag=='1'}>disabled="disabled"<{/if}><{if in_array($area_items.region_id,$rule_list.class_city)}>checked<{/if}> onclick="javascript:if(this.checked){this.getNext('span').addClass('newshop-name');}else{this.getNext('span').removeClass('newshop-name');this.getNext('span').removeClass('shop-name');}">
<span style="padding:8px;" id='<{$area_items.region_id}>' <{if in_array($area_items.region_id,$rule_list.class_city)}>class="shop-name shops-name"<{/if}> ><{$area_items.local_name}></span>
<{/foreach}>
</div>
</td>
</tr>
<{/foreach}>
</table>
</td>
</tr>
<tr id="type_shop">
<th>指定店铺:</th>
<td>
<select name="shop_selected[]" multiple="multiple" data-search="fuzzy_search" style="width: 400px; height: 120px;">
<{foreach item=item_shop from=$shops}>
<option value="<{$item_shop.shop_id}>" <{if $item_shop.disabled}>disabled="disabled"<{/if}> <{if $item_shop.checked}>selected="selected"<{/if}>><{$item_shop.name}></option>
<{/foreach}>
</select>
</td>
</tr>
<tr>
<th>规则类型:</th>
<td colspan="2">
<input type='radio' id='shoptype' class='first_rule_weight' name='set_type' value='shop' <{if $rule.set_type=='shop'}> checked<{/if}> onclick="showArea(this.value)">按店铺设置
<input type='radio' id='noweighttype' class='first_rule_weight' name='set_type' value='noweight' <{if $rule.set_type=='noweight'}> checked<{/if}> onclick="showArea(this.value)">按任意重量设置
<input type='radio' id='weighttype' class='first_rule_weight' name='set_type' value='weight' <{if $rule.set_type=='weight'}> checked<{/if}> onclick="showArea(this.value)">按重量区间设置
<input type="hidden" id='cur_sel_set_type' value='<{$rule.set_type}>' />
</td>
</tr>
<tr id="weight_tr">
<th>规则详情:</th>
<td colspan="2">
<div id='first_rule_weight_one' style="display:none;padding:2px;">区间类型
<span class="spectype"><input type="radio" name="addspectype" class="addspectype" value="weight" checked >普通区间</span>
<span class="spectype"><input type="radio" name="addspectype" value="above" class="addspectype">"以上"区间</span>
<input type="button" id ='addspec' value='添加'>
<{help}>重量请输入整数,<br>请输入连续的区间,重量区间表示:左区间<=重量<右区间<{/help}><br>
<{if $rule.set_type=='weight'}>
<{foreach from=$rule.item_list item=item_list}>
<div class='weight_rule' id="<{$item_list.item_id}>">
<ul>
<li class="weight_left">
重量:<input type="text" name="min_weight[]" size=6 value="<{$item_list.min_weight}>" vtype="required&&unsigned">g&nbsp;&nbsp;&nbsp;
<{if $item_list.max_weight=='-1'}>&nbsp;&nbsp以上
<input type="hidden" name="max_weight[]" size=6 value="-1" >
<{else}>
<input type="text" name="max_weight[]" size=6 value="<{$item_list.max_weight}>" vtype="required&&unsigned">g
<{/if}>
</li>
<li class="weight_right">
首选物流公司:<select name="corp_id[]" id="dlyCorpWeight<{$item_list.item_id}>" onchange="dlyCorpChange('Weight<{$item_list.item_id}>')">
<{foreach from=$dly_corp item=dlyCorp1}>
<option value='<{$dlyCorp1.corp_id}>' <{if $item_list.corp_id==$dlyCorp1.corp_id}>selected<{/if}>><{$dlyCorp1.name}></option>
<{/foreach}>
</select>
<span id="secondSpanWeight<{$item_list.item_id}>" <{if !in_array($item_list.corp_id,$elecIds)}>style="display:none;"<{/if}>>
次选物流公司:<select name='second_corp_id[]' id="secondDlyCorpWeight<{$item_list.item_id}>">
<option value='0'>--请选择--</option>
<{foreach from=$dlyCorpNormal item=dlyCorp2}>
<option value='<{$dlyCorp2.corp_id}>' <{if $item_list.second_corp_id==$dlyCorp2.corp_id}>selected<{/if}>><{$dlyCorp2.name}></option>
<{/foreach}>
</select>
</span>
<a onclick='deleteArea($(this).getParent("div"))'>删除</a>
</li>
</ul>
</div>
<input type="hidden" name="item_id[]" value="<{$item_list.item_id}>">
<{/foreach}>
<{/if}>
<div id="spec_body"></div>
</div>
<div id='first_rule_weight_nothing' style="display:none">
首选物流公司:<select name='default_corp_id' id='dlyCorpNoweight' onchange="dlyCorpChange('Noweight')">
<{foreach from=$dly_corp item=dlyCorp1}>
<option value='<{$dlyCorp1.corp_id}>' <{if $rule.item_list.0.corp_id==$dlyCorp1.corp_id}>selected<{/if}>><{$dlyCorp1.name}></option>
<{/foreach}>
</select>
<span id="secondSpanNoweight" <{if !in_array($rule.item_list.0.corp_id,$elecIds)}>style="display:none;"<{/if}>>
次选物流公司:<select name='default_second_corp_id' id='secondDlyCorpNoweight'>
<option value='0'>--请选择--</option>
<{foreach from=$dlyCorpNormal item=dlyCorp2}>
<option value='<{$dlyCorp2.corp_id}>' <{if $rule.item_list.0.second_corp_id==$dlyCorp2.corp_id}>selected<{/if}>><{$dlyCorp2.name}></option>
<{/foreach}>
</select>
</span>
<input type="hidden" name="default_item_id" value="<{$rule.item_list.0.item_id}>">
</div>
</td>
</tr>
<tr id="type_shop_corp">
<th>指定物流公司:</th>
<td>
<select name='shop_corp_id'>
<{foreach from=$dly_corp item=dlyCorpItem}>
<option value='<{$dlyCorpItem.corp_id}>' <{if $dlyCorpItem.selected}>selected<{/if}>><{$dlyCorpItem.name}></option>
<{/foreach}>
</select>
</td>
</tr>
<tr>
<th style="vertical-align: middle;">权重:</th>
<td><input type='text' name='weight' value='<{$rule.weight}>' size="5" class="x-input"/><span>&nbsp;&nbsp;&nbsp;&nbsp;(数值越大表示优先级越高。如不填写,默认为0)</span></td>
</tr>
</tbody>
</table>
</div>
<div class="table-action">
<{button type="button" label="保存" id="edit_rule" }>
</div>
<input type="hidden" name="rule_id" value="<{$rule_id}>">
<input type="hidden" name="branch_id" value="<{$rule.branch_id}>">
<input type='hidden' name='deleteareaflag' id='deleteareaflag' value='0'>
<input type="hidden" id='relationflag' name="relationflag" value='0'>
</form>
</div>
<script>
var corp_id=<{$dly_corp_list}>;
var dlyCorpNormal = <{$dlyCorpNormalJson}>;
var electronIds = <{$electronIds}>;
function showAll(area,area_id){
if(area.checked==true){
$$('.item'+area_id).each(function(i,index){
if(!i.get('disabled')){
i.set('checked',true);
i.getNext('span').addClass('shop-name');
}
});
} else {
$$('.item'+area_id).each(function(i,index){
i.set('checked',false);
i.getNext('span').removeClass('shop-name');
});
}
}
function deleteArea(d){
if (!confirm('删除后无法恢复,确定要删除吗?')){
return;
}
d.remove();
if(d.get('id')){
new Request({url:'index.php?app=logistics&ctl=admin_area_rule&act=deleteRule&item_id='+d.get('id'),
onComplete:function(rs){
var json = Json.evaluate(rs);
if (typeof(json.error) != 'undefined'){
alert('删除失败');
}else{
alert('删除成功');
}
}}).send();
}
}
$('addspec').addEvent('click',function(e){
var add_above=0;
$$('.weight_left').each(function(etd){
above_max_weight = etd.getChildren('input[name^=max_weight]').get('value')/1;
if(above_max_weight=='-1'){
add_above++;
}
});
if(add_above>=1){
return MessageBox.error('<{t}>以上区间存在不可以再添加!<{/t}>');
}else{
var spectype = $('first_rule_weight_one').getElement("input[name='addspectype']:checked").value;
var index = uniqueID();
var newRow=new Element('div[class="areabox"]',{html:getTemp(spectype,index)}).inject($('spec_body'));
}
});
var getTemp = function(type,index){
temp='<div class="weight_rule"><ul><li class="weight_left">重量:<input type="text" name="min_weight[]" size=6 vtype="required&&unsigned">g&nbsp;&nbsp;&nbsp;&nbsp;';
if(type=='weight'){
temp+='至<input type="text" name="max_weight[]" size=6 vtype="required&&unsigned">g';
}else{
temp+='&nbsp;&nbsp以上<input type="hidden" name="max_weight[]" value="-1">';
}
temp+='</li><li class="weight_right">首选物流公司:';
temp+='<select name="corp_id[]" id="dlyCorp'+index+'" onchange="dlyCorpChange('+index+')">';
temp+='<option value="0">--请选择--</option>';
if(corp_id){
corp_id.each(function(i,index){
temp+='<option value='+i.corp_id+'>'+i.name+'</option>';
});
}
temp+="</select>";
temp+='<span id="secondSpan'+index+'" style="display:none;">次选物流公司:<select name="second_corp_id[]" id="secondDlyCorp'+index+'">';
temp+='<option value="0">--请选择--</option>';
if(dlyCorpNormal){
dlyCorpNormal.each(function(i,index){
temp+='<option value='+i.corp_id+'>'+i.name+'</option>';
});
}
temp+="</select></span>";
temp+="<a onclick='deleteArea($(this).getParent(\"div\"))'>删除</a>";
temp+="</li></ul></div>";
return temp;
};
function dlyCorpChange(index) {
var dlyCorp = 'dlyCorp'+index;
var secondDlyCorp = 'secondDlyCorp'+index;
var secondSpan = 'secondSpan'+index;
var val = $(dlyCorp).value;
if(electronIds.contains(val)) {
$(secondSpan).show();
} else {
$(secondSpan).hide();
}
$(secondDlyCorp).selectedIndex = 0;
}
function showArea(setType){
if(setType=='shop'){
$('type_shop').setStyle('display','');
$('type_shop_corp').setStyle('display','');
$('useful_area').setStyle('display','none');
$('weight_tr').setStyle('display','none');
}else{
$('useful_area').setStyle('display','');
$('weight_tr').setStyle('display','');
$('type_shop').setStyle('display','none');
$('type_shop_corp').setStyle('display','none');
if(setType=='weight'){
$('first_rule_weight_one').setStyle('display','');
$('first_rule_weight_nothing').setStyle('display','none');
}
if(setType=='noweight'){
$('first_rule_weight_nothing').setStyle('display','');
$('first_rule_weight_one').setStyle('display','none');
}
}
}
showArea('<{$rule.set_type}>');
$$('.first_rule_weight').addEvent('click',function(i,index){
var cur_sel_set_type = $("cur_sel_set_type").value;
if(cur_sel_set_type != this.value){
confirmchange = confirm('切换规则类型后保存操作,现有类型将会全部删除?');
if(confirmchange==false){
this.set('checked',false);
$(cur_sel_set_type+"type").set('checked',true);
showArea(cur_sel_set_type);
}else{
$("cur_sel_set_type").value = this.value;
showArea(this.value);
}
}
});
$('edit_rule').addEvent('click',function(e){
var _this=this;
var form=this.getParent('form');
var class_city_id = '<{$rule_list.class_city_id}>';
var set_type=$('rule_form').getElements("input[name='set_type']:checked").get('value');
if(set_type == "shop"){//按店铺
var shop_select = $('rule_form').getElement("select[name='shop_selected[]']");
var shop_selected_checked = shop_select.getSelected ? shop_select.getSelected() : shop_select.getElements('option:checked');
if(shop_selected_checked.length>0){
}else{
return MessageBox.error('<{t}>请选择指定店铺<{/t}>');
}
}else{//按任意重量 和 按重量区间
if($$("input[name^=first_city]:checked").length<=0){
return MessageBox.error('<{t}>请为此条规则选择区域!<{/t}>');
}
}
if($('rule_form').getElements("input[name='set_type']:checked").length <=0){
return MessageBox.error('<{t}>请选择规则类型!<{/t}>');
}
if(set_type=='weight'){
if($$('.weight_left').length<=0){
return MessageBox.error('<{t}>请选择对应的重量区间!<{/t}>');
}
var above_set=0;
compareValueFlag = $$('.weight_left').every(function(etd){
min_weight = etd.getChildren('input[name^=min_weight]').get('value')/1;
max_weight = etd.getChildren('input[name^=max_weight]').get('value')/1;
if(max_weight=='-1'){
above_set++;
}
if((min_weight>max_weight || min_weight==max_weight) && max_weight!='-1'){
return false;
}
return true;
});
if( !compareValueFlag )return MessageBox.error('<{t}>重量值为空或者最小值不可以大于最大值<{/t}>');
if(above_set>=2) return MessageBox.error('<{t}>以上区间只能有一个<{/t}>');
//区间判断重复
var length=$$('.weight_left').length;
for(i=0;i<length;i++){
imin = $$('.weight_left')[i].getChildren('input[name^=min_weight]').get('value')/1;
imax = $$('.weight_left')[i].getChildren('input[name^=max_weight]').get('value');
for(j=i+1;j<length;j++){
min=$$('.weight_left')[j].getChildren('input[name^=min_weight]').get('value')/1;
max=$$('.weight_left')[j].getChildren('input[name^=max_weight]').get('value')/1;
if(imax=='-1'){
if(min>imin/1){
return MessageBox.error(min+'大于'+imin+',<{t}>大于以上区间重量最小值<{/t}>');
}
}
if(imax>min){
return MessageBox.error(imax+'大于'+min+'<{t}>重复区间存在<{/t}>');
}
}
}
}
var deleteArea=[];
var newaddArea=[];
$$('.newshop-name').each(function(e){
newaddArea.push(e.getPrevious('input[name^=first_city]').get('value'));
});
if(newaddArea.length>0){
newaddArea=newaddArea.join(",");
}
var ckdeletearea = $$('.shops-name').every(function(e){
if(e.getPrevious('input[name^=first_city]').get('checked')==false){
deleteArea.push(e.getPrevious('input[name^=first_city]').get('value'));
return false;
}
return true;
});
if(!ckdeletearea){
var url = 'index.php?app=logistics&ctl=admin_rule&act=confirmDeleteRule';
new Dialog(url,{title:'确认',width:500,height:400});
}else{
if(newaddArea){
var relationRule='';
new Request({
url:'index.php?app=logistics&ctl=admin_area_rule&act=areaFilter&oper=ckarea&branch_id=<{$rule.branch_id}>&p_region_id='+newaddArea,async:false,
onComplete:function(rs){
if(rs){
rs=JSON.decode(rs);
rs.each(function(i,index){
relationRule+='['+i.region_name+']';
relationRule+='\n';
});
}
}
}).send();
}
if(relationRule!=''){
var relationflag = confirm('系统检测到\n'+relationRule+'\n 有下级地区规则存在,是否带出?');
if(relationflag==false){
$('relationflag').set('value',1);
}
}
form.store('target',{
onRequest:function(){
_this.disabled=true;
},
onComplete:function(jsontext){
try{
var json = Json.evaluate(jsontext);
if (typeof(json.error) != 'undefined'){
_this.disabled=false;
}else{
_this.disabled=true;
_this.getParent('.dialog').retrieve('instance').close();
MessageBox.success('<{t}>保存成功<{/t}>');
}
}catch(e){}
}
});
form.fireEvent('submit',e);
}
});
// 初始化 tail.select
tail.select('select[data-search="fuzzy_search"]', {
search: true,
hideDisabled: true,
zIndex: 9999,
height: 300,
});
uniqueID = (function () {
var id = 0;
return function () {
return id++;
};
})();
</script>