### 訂單物流
#### 1、已售訂單管理
文件路徑:shop/controllers/Seller/Trade/OrderCtl.php
###### 1.1、所有訂單(physical())
$condition['chain_id'] = 0;
###### 1.2、待付款(getPhysicalNew())
$condi['order_status'] = Order_StateModel::ORDER_WAIT_PAY;
$condi['chain_id'] = 0;
###### 1.3、已付款(getPhysicalPay())
$condi['order_status'] = Order_StateModel::ORDER_PAYED;
$condi['chain_id'] = 0;
###### 1.4、已發貨(getPhysicalSend())
$condi['order_status'] = Order_StateModel::ORDER_WAIT_CONFIRM_GOODS;
$condi['chain_id'] = 0;
###### 1.5、已完成(getPhysicalSuccess())
$condi['order_status'] = Order_StateModel::ORDER_FINISH;
$condi['chain_id'] = 0;
###### 1.6、已取消(getPhysicalCancel())
$condi['order_status'] = Order_StateModel::ORDER_CANCEL;
$condi['chain_id'] = 0;
###### 1.7、回收站(getPhysicalHideOrder())
$condi['order_status'] = Order_StateModel::ORDER_CANCEL;
$condi['chain_id'] = 0;
###### 1.8、搜索訂單:
function formSub(){
$('.search-form').parents('form').submit();
}
###### 1.9、取消訂單
$('a[dialog_id="seller_order_cancel_order"]').on('click', function () {
var order_id = $(this).data('order_id'),url = SITE_URL + '?ctl=Seller_Trade_Order&met=orderCancel&typ=';
$.dialog({
title: '<?=__('取消訂單')?>',
content: 'url: ' + url + 'e',
data: { order_id: order_id },
height: 250,
width: 400,
lock: true,
drag: false,
ok: function () {
var form_ser = $(this.content.order_cancel_form).serialize();
$.post(url + 'json', form_ser, function (data) {
})
}
})
});
//獲取訂單詳情,判斷訂單的當前狀態與下單這是否為當前用戶
$order_base = $Order_BaseModel->getOne($order_id);
if( ($order_base['payment_id'] == PaymentChannlModel::PAY_CONFIRM&& $order_base['order_status'] ==Order_StateModel::ORDER_WAIT_PREPARE_GOODS) //貨到付款+等待發貨
$order_base['order_status'] == Order_StateModel::ORDER_WAIT_PAY&& $order_base['seller_user_id'] == Perm::$userId) {
//加入取消時間
$edit_flag = $Order_BaseModel->editBase($order_id, $condition);
//修改訂單商品表中的訂單狀態
$edit_flag1 = $Order_GoodsModel->editGoods($order_goods_id, $edit_row);
//退還訂單商品的庫存
if($order_base['chain_id']!=0){
$edit_flag2 = $Chain_GoodsModel->editGoods($chain_goods_id, $goods_stock);
}else{
$edit_flag2 = $Goods_BaseModel->returnGoodsStock($order_goods_id);
}
//將需要取消的訂單號遠程發送給Paycenter修改訂單狀態
//遠程修改paycenter中的訂單狀態
$rs = get_url_with_encrypt($key, sprintf('%s?ctl=Api_Pay_Pay&met=cancelOrder&typ=json', $url), $formvars);
//如果是供貨商取消進貨訂單,同時取消買家的訂單或減少買家訂單的金額
$dist_goods_order = $Order_GoodsModel -> getByWhere(array('order_id' => $dist_order['order_id']));
if(count($dist_goods_order) == 1){
$Order_BaseModel-> editBase($dist_order['order_id'], $condition);
$Order_GoodsModel-> editGoods($dist_goods_order[0]['order_goods_id'], $edit_row);
$Goods_BaseModel -> returnGoodsStock($dist_goods_order[0]['order_goods_id']);
}else{
$Order_BaseModel-> editBase($dist_order['order_id'], $dist_edit_row);
$Order_GoodsModel-> editGoods($dist_goods_order[$key]['order_goods_id'], $edit_row);
$Goods_BaseModel -> returnGoodsStock($dist_goods_order[$key]['order_goods_id']);
}
$formvars['order_id'] = $dist_order['order_id'];
$rs = get_url_with_encrypt($key, sprintf('%s?ctl=Api_Pay_Pay&met=cancelOrder&typ=json', $url), $formvars);
}
###### 1.10、刪除訂單
window.hideOrder = function (e)
{
$.dialog({
title: '刪除訂單',
content: '您確定要刪除嗎?刪除后的訂單可在回收站找回,或徹底刪除! ',
height: 100,
width: 405,
lock: true,
drag: false,
ok: function () {
$.post(SITE_URL + '?ctl=Buyer_Order&met=hideOrder&typ=json',{order_id:e,user:'buyer'},function(data)
{
})
}
})
}
//判斷訂單狀態是否是已完成(6)或者已取消(7)狀態
if($order_base['order_status'] >= Order_StateModel::ORDER_FINISH)
{
//判斷當前用戶是否是賣家
if($order_base['seller_user_id'] == Perm::$userId)
{
$edit_row['order_shop_hidden'] = Order_BaseModel::IS_SELLER_HIDDEN;
}
}
$flag = $Order_BaseModel->editBase($order_id, $edit_row);
###### 1.11、徹底刪除
window.delOrder = function (e)
{
$.dialog({
title: '刪除訂單',
content: '您確定要永久刪除嗎?永久刪除后您將無法再查看該訂單,也無法進行投訴維權,請謹慎操作!',
height: 100,
width: 610,
lock: true,
drag: false,
ok: function () {
$.post(SITE_URL +?'ctl=Buyer_Order&met=hideOrder&typ=json'{order_id:e,user:'buyer',op:'del'},function(data)
{
}
);
}
})
}
//判斷訂單狀態是否是已完成(6)或者已取消(7)狀態
if($order_base['order_status'] >= Order_StateModel::ORDER_FINISH)
{
//判斷當前用戶是否是賣家
if($order_base['seller_user_id'] == Perm::$userId)
{
$edit_row['order_shop_hidden'] = Order_BaseModel::IS_SELLER_REMOVE;
}
}
$flag = $Order_BaseModel->editBase($order_id, $edit_row);
###### 1.12、還原訂單
window.restoreOrder = function (e)
{
$.dialog({
title: '還原刪除訂單',
content: '您確定要還原嗎?',
height: 100,
width: 610,
lock: true,
drag: false,
ok: function () {
$.post(SITE_URL + '?ctl=Buyer_Order&met=restoreOrder&typ=json',{order_id:e,user:'buyer'},function(data)
{
}
);
}
})
}
$edit_row['order_shop_hidden'] = Order_BaseModel::NO_SELLER_HIDDEN;
$flag = $Order_BaseModel->editBase($order_id, $edit_row);
#### 2、虛擬兌換訂單
文件路徑:shop/controllers/Seller/Trade/OrderCtl.php
###### 2.1、所有訂單(virtual())
$condition['shop_id'] = Perm::$shopId;
$condition['order_is_virtual'] = Order_BaseModel::ORDER_IS_VIRTUAL;
$condition['order_shop_hidden'] = Order_BaseModel::ORDER_IS_REAL;
###### 2.2、待付款(getVirtualNew())
$condition['shop_id'] = Perm::$shopId;
$condition['order_is_virtual'] = Order_BaseModel::ORDER_IS_VIRTUAL;
$condition['order_shop_hidden'] = Order_BaseModel::ORDER_IS_REAL;
$condition['order_status'] = Order_StateModel::ORDER_WAIT_PAY;
###### 2.3、已發貨(getVirtualPay())
$condition['shop_id'] = Perm::$shopId;
$condition['order_is_virtual'] = Order_BaseModel::ORDER_IS_VIRTUAL;
$condition['order_shop_hidden'] = Order_BaseModel::ORDER_IS_REAL;
$condition['order_status'] = Order_StateModel::ORDER_WAIT_CONFIRM_GOODS;
###### 2.4、已完成(getVirtualSuccess())
$condition['shop_id'] = Perm::$shopId;
$condition['order_is_virtual'] = Order_BaseModel::ORDER_IS_VIRTUAL;
$condition['order_shop_hidden'] = Order_BaseModel::ORDER_IS_REAL;
$condition['order_status'] = Order_StateModel::ORDER_FINISH;
###### 2.5、已取消(getVirtualCancel())
$condition['shop_id'] = Perm::$shopId;
$condition['order_is_virtual'] = Order_BaseModel::ORDER_IS_VIRTUAL;
$condition['order_shop_hidden'] = Order_BaseModel::ORDER_IS_REAL;
$condition['order_status'] = Order_StateModel::ORDER_CANCEL;
###### 2.6、回收站(getVirtualHideOrder())
$condition['order_shop_hidden'] = $Order_BaseModel::IS_SELLER_HIDDEN;
$condition['shop_id'] = Perm::$shopId;
$condition['order_is_virtual'] = Order_BaseModel::ORDER_IS_VIRTUAL;
###### 2.7、校驗兌換碼(virtualExchange())
$('#_submit').on('click',function(){
exPost();
});
function exPost() {
$('#vr_code_waring').html('');
$.getJSON( SITE_URL + '?ctl=Seller_Trade_Order&met=virtualExchange&typ=json&vr_code='+$("#vr_code").val(), null, function(data){
});
}
//修改兌換碼狀態
$update['virtual_code_status'] = Order_GoodsVirtualCodeModel::VIRTUAL_CODE_USED;
$update['virtual_code_usetime'] = date('Y-m-d H:i:s', time()); //兌換時間
$result = $this->editCode($virtual_code_id, $update);
//判斷該筆訂單中有多少虛擬商品,如果是最后一筆虛擬商品,則修改訂單狀態為已完成,將訂單金額轉到商家賬戶
$edit_flag = $orderBaseModel->editBase($order_data['order_id'], array('order_status' => Order_StateModel::ORDER_FINISH , 'order_finished_time' => get_date_time()));
//遠程同步paycenter中的訂單狀態
$rs = get_url_with_encrypt($key, sprintf('%s?ctl=Api_Pay_Pay&met=confirmOrder&typ=json', $url), $formvars)
###### 2.8、其他
訂單搜索、取消訂單、刪除訂單、徹底刪除訂單、還原訂單與上文已售訂單管理中一致
#### 3、門店自提訂單
文件路徑:shop/controllers/Seller/Trade/OrderCtl.php
###### 3.1、所有訂單(chain())
$condition['chain_id:!='] = 0;
###### 3.2、待付款(getChainNew())
$condi['order_status'] = Order_StateModel::ORDER_WAIT_PAY;
$condi['chain_id:!='] = 0;
###### 3.3、待自提(getChainNotakes())
$condi['order_status'] = Order_StateModel::ORDER_SELF_PICKUP;
$condi['chain_id:!='] = 0;
###### 3.4、已完成(getChainSuccess())
$condi['order_status'] = Order_StateModel::ORDER_FINISH;
$condi['chain_id:!='] = 0;
###### 3.5、已取消(getChainCancel())
$condi['order_status'] = Order_StateModel::ORDER_CANCEL;
$condi['chain_id:!='] = 0;
###### 3.6、回收站(getChainHideOrder())
$condition['order_shop_hidden'] = $Order_BaseModel::IS_SELLER_HIDDEN;
$condition['chain_id:!='] = 0;
###### 3.7、其他
訂單搜索、取消訂單、刪除訂單、徹底刪除訂單、還原訂單與上文已售訂單管理中一致
#### 4、發貨
文件路徑:shop/controllers/Seller/Trade/DeliverCtl.php
###### 4.1、待發貨(deliver())
$condition['order_status:IN'] = array( Order_StateModel::ORDER_PAYED, Order_StateModel::ORDER_WAIT_PREPARE_GOODS );
###### 4.2、發貨(shop/controllers/Seller/Trade/OrderCtl.php,send())
編輯收貨人信息:
$('a[dialog_id="edit_buyer_address"]').on('click', function () {
var _this = $(this),
buyer_address = $('#buyer_address_span').html();
address_data = _this.data(),
address_data.order_id = $('#order_id').val();
$.dialog({
title: '<?=__('選擇收貨地址')?>',
content: 'url: ' + SITE_URL + '?ctl=Seller_Trade_Order&met=editBuyerAddress&typ=e',
height: 200,
width: 550,
lock: true,
drag: false,
data: { address_data: address_data,
callback: function ( data ) {
}
}
})
});
$update_data['order_receiver_name'] = request_string('order_receiver_name');
$update_data['order_receiver_address'] = request_string('order_receiver_address');
$update_data['order_receiver_contact'] = request_string('order_receiver_contact');
$flag = $Order_BaseModel->editBase($order_id, $update_data);
編輯我的發貨信息:
$('a[dialog_id="edit_seller_address"]').on('click', function () {
var order_id = $('#order_id').val(),
shop_id = $(this).data('shop_id'),
url = SITE_URL + '?ctl=Seller_Trade_Order&met=chooseSendAddress&typ=';
$.dialog({
title: '<?=__('選擇發貨地址')?>',
content: 'url: ' + url + 'e&shop_id=' + shop_id,
height: 400,
width: 640,
lock: true,
drag: false,
data: { callback: function ( send_address, win ) {
$.post(url + 'json&order_id=' + order_id, { send_address: send_address }, function (data) {
})
}
}
})
});
$update_data['order_seller_name'] = $send_address['order_seller_name'];
$update_data['order_seller_address'] = $send_address['order_seller_address'];
$update_data['order_seller_contact'] = $send_address['order_seller_contact'];
$flag = $Order_BaseModel->editBase($order_id, $update_data);
提交表單:
$('a[nc_value]').on('click', function () {
$.post(SITE_URL + '?ctl=Seller_Trade_Order&met=send&typ=json', send_data, function (data){
})
});
//判斷該筆訂單是否是自己的單子
$order_base = $Order_BaseModel->getOne($order_id);
//判斷賬號是否可以發貨
$check_send = $this->checkSend($order_base['seller_user_id'],$order_base['shop_id']);
//設置發貨
//配送時間 收貨時間
$edit_flag = $Order_BaseModel->editBase($order_id, $update_data);
$order_list = $Order_GoodsModel -> getByWhere(array('order_id' =>$order_base['order_source_id'],'order_goods_source_id' => ''));//查看不是分銷商品的訂單
if(!empty($order_list) && $order_base['order_source_id']){
foreach ($order_list as $key => $value) {
$edit_flag1 = $Order_GoodsModel -> editGoods($key,array('order_goods_source_ship' => $update_data['order_shipping_code'].'-'.$update_data['order_shipping_express_id']));
check_rs($edit_flag1,$rs_row);
}
}
//如果為采購單,改變 "買家<-->分銷商" 訂單狀態
/*
只有訂單中不含分銷商自己的商品時改變訂單狀態,如果含有分銷商自己的商品,
供貨商發貨改變訂單狀態,分銷商自己就發不了貨了.
所以如果訂單中含有分銷商自己的商品,只有分銷商的商品發貨了,才能改變訂單狀態
*/
$dist_flag = $Order_BaseModel->editBase($dist_order['order_id'], $update_data);
//買家商品訂單表里添加物流單號
$order_goods_id = $Order_GoodsModel->getKeyByWhere(array('order_goods_source_id' => $order_id));
$edit_flag2 = $Order_GoodsModel -> editGoods($order_goods_id,array('order_goods_source_ship' => $update_data['order_shipping_code'].'-'.$update_data['order_shipping_express_id']));
##### 4.3、發貨中(delivering())
獲取訂單列表
$Order_BaseModel = new Order_BaseModel();
$condition['order_status'] = Order_StateModel::ORDER_WAIT_CONFIRM_GOODS;
$data = $Order_BaseModel->getPhysicalList($condition);
foreach ($data['items'] as $key => $val)
{
if (strtotime($val['order_receiver_date']))
{
$data['items'][$key]['order_receiver_date'] = $val['order_receiver_date'];
}
}
延遲收貨
$('a[dialog_id="seller_order_delay_receive"]').on('click', function () {
var $this = $(this),
order_id = $this.data('order_id'),
buyer_name = $this.data('buyer_user_name'),
order_receiver_date = $this.data('order_receiver_date'),
url = SITE_URL + '?ctl=Seller_Trade_Deliver&met=delayReceive&typ=';
$.dialog({
title: '<?=__('延遲收貨')?>',
content: 'url: ' + url + 'e',
data: { order_id: order_id, order_receiver_date: order_receiver_date, buyer_name: buyer_name },
height: 250,
width: 500,
lock: true,
drag: false,
ok: function () {
}
})
})
$order_receiver_date = strtotime($order_receiver_date);
$order_receiver_date = strtotime("+$delayDays days", $order_receiver_date);
$update['order_receiver_date'] = date('Y-m-d H:i:s', $order_receiver_date);
$flag = $Order_BaseModel->editBase($order_id, $update);
##### 4.4、已發貨(delivered())
$condition['order_status'] = Order_StateModel::ORDER_FINISH;
##### 4.5、其他
訂單搜索、取消訂單、刪除訂單、徹底刪除訂單、還原訂單與上文已售訂單管理中一致
#### 5、發貨設置
文件路徑:shop/controllers/Seller/Trade/DeliverCtl.php
##### 5.1、地址庫(deliverSetting())
獲取地址列表:
$cond_row['shop_id'] = Perm::$shopId;
$data = $this->shopShippingAddressModel->getBaseList($cond_row, array('shipping_address_time' => 'desc'), $page, $rows);
新增/編輯地址:
$('#form').validator({
debug:true,
ignore: ':hidden',
theme: 'yellow_right',
timely: 1,
stopOnError: false,
rules: {
phone: [/^1[\d]{10}$/, '<?=__('請輸入正確的手機號')?>']
},
fields: {
'shipping_address_contact': 'required;length[2~10]',
'select_1':'required',
'select_2':'required',
'select_3':'required',
'shipping_address_address' : 'required',
'shipping_address_phone':'required;phone'
},
valid: function(form){
var me = this;
// 提交表單之前,hold住表單,并且在以后每次hold住時執行回調
me.holdSubmit(function(){
Public.tips.error('<?=__('正在處理中')?>...');
});
$.ajax({
url: ajax_url,
data: $(form).serialize(),
type: "POST",
success:function(e){
me.holdSubmit(false);
}
});
}
});
刪除地址:
<span class="del"><a data-param="{'ctl':'Seller_Trade_Deliver','met':'delAddress','id':'<?= $val['shipping_address_id'] ?>'}" href="javascript:void(0)"><i class="iconfont icon-lajitong"></i><?=__('刪除')?></a></span>
更改默認地址:
$('input[name="is_default"]').on('click',function(){
$.get('index.php?ctl=Seller_Trade_Deliver&met=setDefaultAddress&shipping_address_id='+$(this).val(),function(result){})
});
//獲取店鋪已設置默認地址信息
$data = $this->getByWhere(array('shop_id' => $shop_id,'shipping_address_default' => 1));
if (!empty($data))
{
foreach ($data as $key => $val)
{
//已有默認地址置為0
$this->edit($val['shipping_address_id'], array('shipping_address_default' => 0));
}
}
//設置新的默認地址
$this->edit($shipping_address_id, $field_row);
##### 5.2、默認物流公司(express)
循環顯示所有物流公司
<?php foreach($data['items'] as $key=>$val){ ?>
<td class="tl">
<label class="checkbox"><input type="checkbox" <?php if($val['checked']==1) echo "checked"; ?> name="id[]" value="<?=$val['express_id']?>"></label><?=__($val['express_name'])?>
</td>
<?php if(($key+1)%4==0){ ?></tr><tr><?php } ?>
<?php } ?>
保存修改
$('#form').validator({
$.ajax({
url: "index.php?ctl=Seller_Trade_Deliver&met=express&typ=json&op=save",
data: $(form).serialize(),
type: "POST",
success:function(e){
me.holdSubmit(false);
}
});
});
//獲取店鋪默認物流公司ID
$express_rows = $this->getShopExpressId(array('shop_id' => $shop_id));
//不在已有默認物流公司ID內,插入
$this->add($field);
//如果已有ID,不在提交的數組里,刪除
$cond_row['shop_id'] = $shop_id;
$cond_row['express_id'] = $v;
//獲取主鍵值,合并數組
$key_row = $this->getKeyByWhere($cond_row);
$del_row = array_merge($del_row, $key_row);
##### 5.3、免運費額度(freightAmount())
保存修改
$('#form').validator({
$.ajax({
url: "index.php?ctl=Seller_Trade_Deliver&met=freightAmount&op=save&typ=json",
data: $(form).serialize(),
type: "POST",
success:function(e){
me.holdSubmit(false);
}
});
});
$update_flag = $this->edit($shop_id, array('shop_free_shipping' => request_int('free_shipping')));
##### 5.4、發貨單打印設置(printSetting())
圖片上傳
$('#logo_upload').on('click', function () {
$.dialog({
title: '<?=__('圖片裁剪')?>',
content: "url: <?= Yf_Registry::get('url') ?>?ctl=Upload&met=cropperImage&typ=e",
data: {width:120,height:120 , callback: callback1 }, // 需要截取圖片的寬高比例
width: '800px',
lock: true
})
});
function callback1( respone , api ) {
$('#image_review').attr('src', respone.url);
$('.image_review').show();
$('#shop_stamp').attr('value', respone.url);
api.close();
}
if ( window.isIE8 ) {
$('#logo_upload').off('click');
logo_uploadss = new UploadImage({
thumbnailWidth: 200,
thumbnailHeight: 60,
imageContainer: '#image_review',
uploadButton: '#logo_upload',
inputHidden: '#shop_stamp'
});
}
保存修改:
$('#form').validator({
$.ajax({
url: "index.php?ctl=Seller_Trade_Deliver&met=printSetting&op=save&typ=json",
data: $(form).serialize(),
type: "POST",
success:function(e){
me.holdSubmit(false);
}
});
);
$field_row['shop_print_desc'] = request_string('shop_print_desc'); //打印描述
$field_row['shop_stamp'] = request_string('shop_stamp'); //店鋪印章
$flag = $Shop_BaseModel->setPrint($shop_id, $field_row);
#### 6、運單模板
文件路徑:shop/controllers/Seller/Trade/WaybillCtl.php
##### 6.1、模板綁定(waybillManage())
設為默認/解綁
$('span[data-action]').on('click', function () {
var user_express_id , tpl_id , param = {} ,
action = $(this).data('action') ,
url = SITE_URL + '?ctl=Seller_Trade_Waybill&met=operateByManage&typ=json&action=' ;
if (action == 'set_default' || action == 'unbind_tpl') {
param = {
user_express_id: $(this).parent().data('user_express_id'),
waybill_tpl_id: $(this).parent().data('waybill_tpl_id')
};
url += action;
$.post(url, param, function (data) {
})
}
})
//只能有一條數據為default
$shop_express_search['user_is_default'] = Shop_ExpressModel::DEFAULT_TRUE;
$shop_express_base = $this->shopExpressModel->getOneByWhere($shop_express_search);
$this->shopExpressModel->editExpress($u_express_id, $shop_express_search);
$shop_express_search['user_is_default'] = Shop_ExpressModel::DEFAULT_TRUE;
$flag = $this->shopExpressModel->editExpress($user_express_id, $shop_express_search);
##### 6.2、選擇模板(waybillBind())
綁定
var user_express_id = <?php if ( !empty($user_express_id) ) { echo $user_express_id; } else { echo 0; }; ?>;
$('a[nctype="btn_bind"]').on('click', function () {
var waybill_tpl_id = $(this).data('waybill_tpl_id');
$.post(SITE_URL + '?ctl=Seller_Trade_Waybill&met=waybillBind&typ=json', {waybill_tpl_id: waybill_tpl_id, user_express_id: user_express_id}, function (data) {
})
})
$waybill_tpl_id = request_int('waybill_tpl_id');
$shop_express_data['waybill_tpl_id'] = $waybill_tpl_id;
$flag = $this->shopExpressModel->editExpress($user_express_id, $shop_express_data);
##### 6.3、模板設置(waybillSetting())
初始化
<?php if ( !empty($shop_express_data['user_tpl_item']) ) { ?>
<?php foreach ( $shop_express_data['user_tpl_item'] as $key => $val ) { ?>
<?php echo $val; ?>.checked = true;
<?php } ?>
<?php } ?>
表單提交
$('#form').validator({
theme: 'yellow_right',
timely: true,
rules: {},
fields: {
'store_waybill_left':'required;range[0.01~9999];',
'store_waybill_top': 'required;range[0.01~9999];',
},
valid: function(form){
//表單驗證通過,提交表單到服務器
$.post( SITE_URL + "?ctl=Seller_Trade_Waybill&met=waybillSetting&typ=json", $('#form').serialize(), function(data) {
})
}
});
$express_data['user_tpl_item'] = array_keys($data);
$express_data['user_tpl_top'] = request_int('store_waybill_top');
$express_data['user_tpl_left'] = request_int('store_waybill_left');
$flag = $this->shopExpressModel->editExpress($user_express_id, $express_data);
##### 6.4、自建模板(waybillIndex())
6.4.1、添加模板(addTpl())
視圖文件:
$this->view->setMet('waybillAdd');
提交表單
$.post( SITE_URL + "?ctl=Seller_Trade_Waybill&typ=json&met=" + met, $('#form').serialize(), function(data) {
if( data.status == 200 ) {
Public.tips({ content: '<?=__('保存成功')?>!', type: 3 });
setTimeout(function () {
window.location.href = SITE_URL + '?ctl=Seller_Trade_Waybill&met=waybillIndex&typ=e';
}, 1000);
} else {
Public.tips({ content: '<?=__('保存失敗')?>!', type: 1 });
}
})
6.4.2、編輯模板(editTpl())
視圖文件:
$this->view->setMet('waybillAdd');
表單提交與6.4.1中表單提交一致。
6.4.3、刪除模板
$('a[nctype="btn_del"]').on('click', function () {
var _this = $(this),waybill_tpl_id = _this.data('waybill_tpl_id');
$.post(SITE_URL + '?ctl=Seller_Trade_Waybill&met=removeTpl&typ=json', {waybill_tpl_id: waybill_tpl_id}, function (data) {
})
})
$flag = $this->logisticsWaybillModel->removeTpl($waybill_tpl_id);
6.4.4、測試模板(testTpl())
視圖文件:
$this->view->setMet('waybillTest');
打印運單:
$('#btn').on('click', function() {
pos();
$('.waybill_back').hide();
$('.control').hide();
window.print();
});
var pos = function () {
var top = <?= $waybill_data['waybill_tpl_top']; ?>;
var left = <?= $waybill_data['waybill_tpl_left']; ?>;
$(".waybill_design").each(function(index) {
var offset = $(this).offset();
var offset_top = offset.top + top;
var offset_left = offset.left + left;
$(this).offset({ top: offset_top, left: offset_left})
});
};
6.4.5、設計模板(designTpl())
視圖文件:
$this->view->setMet('waybillDesign');
提交表單
$('#submit').on('click', function () {
$.post(SITE_URL + '?ctl=Seller_Trade_Waybill&met=designTpl&typ=json', $('#form').serialize(), function (data){
if( data.status == 200 ) {
Public.tips({ content: "<?=__('修改成功')?>", type: 3 });
setTimeout(function () {
window.location.href = SITE_URL + '?ctl=Seller_Trade_Waybill&met=waybillIndex&typ=e';
})
} else {
Public.tips({ content: "<?=__('修改失敗')?>", type: 1 });
}
})
})
$flag = $this->logisticsWaybillModel->editTpl($waybill_tpl_id, $waybill_edit_data);
#### 7、評價管理
文件路徑:shop/controllers/Seller/Goods/Evaluation.php
來自買家的評價(evaluation())
$data = $this->goodsEvaluationModel->getEvaluationList($cond_row, $order_row, $page, $rows);
解釋:
視圖文件
$this->view->setMet('explain');
表單提交
$("#add_form").ajaxSubmit(function(message){
if(message.status == 200)
{
location.href="<?=Yf_Registry::get('url')?>?ctl=Seller_Goods_Evaluation&met=evaluation";
}
else
{
Public.tips.error('<?=__('操作失敗!')?>');
}
});
#### 8、物流工具
文件路徑:shop/controllers/Seller/TransportlCtl.php
8.1、運費模板設置(transport())
視圖文件:
$this->view->setMet('template');
數據獲取:
$data = $this->template($shop_id);
8.2、添加/編輯運費模板(transport())
數據獲取:
$data = $this->transport_default($id,$shop_id);
添加規則:
$('.trans-line').on('click','.t_addRule',function(){
StartNum +=1;
cell = RuleCell.replace(/CurNum/g,StartNum);
$(this).parent().parent().find('.tbl-except').find('table').append(cell);
});
編輯規則:
$('.trans-line').on('click','a[entype="t_editArea"]',function () {
curTransType = 'kd';
//取消所有已選擇的checkbox
$('#J_CityList').find('input[type="checkbox"]').attr('checked',false).attr('disabled',false);
//取消顯示所有統計數量
$('#J_CityList').find('.check_num').html('');
//記錄當前行的標識n1,n2,n3....
curIndex = $(this).attr('data-group');
//記錄當前操作的行,選擇完地區會向該區域拋出值
objCurlArea = $('tr[data-group="'+curIndex+'"]').children(1);
//記錄已選擇的所有省及市的value,SelectArea下標為value值,值為true,如江蘇省SelectArea[320000]=true,南京市SelectArea[320100]=true
SelectArea = new Array();
//取得當前行隱藏域內的city值,放入SelectArea數組中
var expAreas = $('input[name="areas['+curTransType+']['+curIndex.substring(1)+']"]').val();
expAreas = expAreas.split('|||');
expAreas = expAreas[0].split(',');
try{
if(expAreas[0] != ''){
for(var v in expAreas){
SelectArea[expAreas[v]] = true;
}
}
//初始化已選中的checkbox
$('#J_CityList').find('.district-province').each(function(){
var count = 0;
$(this).find('input[type="checkbox"]').each(function(){
if(SelectArea[$(this).val()]==true){
$(this).attr('checked',true);
if($(this)[0].className!='J_Province') count++;
}
});
if (count > 0){
$(this).find('.check_num').html('('+count+')');
}
});
//循環每一行,如果一行省都選中,則大區載選中
$('#J_CityList>li').each(function(){
$(this).find('.region_group').attr('checked',true);
father = this;
$(this).find('.J_Province').each(function(){
if (!$(this).attr('checked')){
$(father).find('.region_group').attr('checked',false);
return ;
}
});
});
}catch(ex){}
//其它行已選擇的地區,不能再選擇了
$(objCurlArea).parent().parent().find('.area-group').each(function(){
if ($(this).next().attr('name') != 'areas['+curTransType+']['+curIndex.substring(1)+']'){
expAreas = $(this).next().val().split('|||');
expAreas = expAreas[0].split(',');
//重置SelectArea
SelectArea = new Array();
try{
if(expAreas[0] != ''){
for(var v in expAreas){
SelectArea[expAreas[v]] = true;
}
}
//其它行已選中的在這里都置灰
$('#J_CityList').find('input[type="checkbox"]').each(function(){
if(SelectArea[$(this).val()]==true){
$(this).attr('disabled',true).attr('checked',false);
}
});
//循環每一行,如果一行的省都被disabled,則大區域也disabled
$('#J_CityList>li').each(function(){
$(this).find('.region_group').attr('disabled',true);
father = this;
$(this).find('.J_Province').each(function(){
if (!$(this).attr('disabled')){
$(father).find('.region_group').attr('disabled',false);
return ;
}
});
});
}catch(ex){}
}
});
//定位彈出層的坐標
$("#dialog_areas").css({'position' : 'absolute','display' : 'block', 'z-index' : '9999','top':'20%','border':'1px solid #E6E6E6'});
$('.ks-ext-mask').css('display','block');
});
刪除一行規則:
$('.trans-line').on('click','.t_deleteRule',function (){
curDelNum = $(this).attr('ncNum');
$.dialog.confirm('<?=__('確認刪除嗎')?>?',function(){
curTransType = 'kd';
obj_parent = $('tr[data-group="'+curDelNum+'"]').parent();
$('tr[data-group="'+curDelNum+'"]').remove();
if ($(obj_parent).find('tr').html() == null){
$(obj_parent).parent().parent().parent().find('.batch').css('display','none');
$(obj_parent).parent().parent().parent().find('.J_ToggleBatch').css('display','none');
$(obj_parent).parent().parent().parent().find('.batch').next().find('span').css('display','none');
}else{
//如果該配送方式,地區都不為空,隱藏地區的提示層
isRemove = true;
$('div[data-delivery="'+curTransType+'"]').find('input[type="hidden"]').each(function(){
if ($(this).val()==''){
isRemove = false;return false;
}
});
if (isRemove == true){
$('div[data-delivery="'+curTransType+'"]').find('span[error_type="area"]').css('display','none');
}
}
});
});
表單提交:
var form_data = $('#transport_form').serialize();
var url = "<?=Yf_Registry::get('url')?>?ctl=Seller_Transport&met=transportSubmit&typ=json";
$.post(url,form_data,function(resp){
if(resp.status == 200){
window.location.href = "<?=Yf_Registry::get('url')?>?ctl=Seller_Transport&met=transport&typ=e";
}else{
Public.tips({type: 1, content: resp.msg});
}
},'json');
//修改模板
$res_info = $Transport_TemplateModel->templateAdd($template_data);
//添加模板
$res_info = $Transport_TemplateModel->templateModify($template_id,$template_data);
//批量刪除規則
$flag2 = $Transport_RuleModel->delAllRule($template_id);
//批量添加規則
foreach ($transport[$type] as $key=>$value){
$flag = $Transport_RuleModel->addRule($rule_data);
}
8.3、刪除模板
<span class="del"><a data-param="{'ctl':'Seller_Transport','met':'delTemplate','id':'<?=$value['id']?>'}" href="javascript:void(0)"><i class="iconfont icon-lajitong"></i><?=__('刪除')?></a></span>
$flag = $Transport_TemplateModel->templateDel($transport_template_id,$shop_id);
#### 9、售賣區域
文件路徑:shop/controllers/Seller/TransportlCtl.php
9.1、售賣區域模板設置(tplarea())
視圖文件:
$this->view->setMet('transportArea');
數據獲取:
$data = $this->transport_area($shop_id);
9.2、添加/編輯售賣區域模板(act=area)
視圖文件:
$this->view->setMet('area');
自定義中循環生成區域地址:
<?php foreach($val['city'] as $citykey => $cityval){?>
<li><label class="checkbox city">
<input <?php if($data['data']['area_ids_arr'] && in_array($cityval['district_id'],$data['data']['area_ids_arr'])){?>checked="checked"<?php }?> type="checkbox" name="city[]" data-province="<?=($val['district_id'])?>" value="<?=($cityval['district_id'])?>" /><?=($cityval['district_name'])?>
</label></li>
<?php }?>
表單提交路徑:
var ajax_url = '<?= Yf_Registry::get('url') ?>?ctl=Seller_Transport&met=areaSubmit&typ=json';
//全國
$area_ids = 0;
//非全國
$province_ids = is_array($area_province) && $area_province ? implode(',', $area_province) : '';
$area_ids = trim($city_ids.','.$province_ids,',');
$result = $Transport_AreaModel->areaAdd($data);
11.9.3、刪除模板
<span class="del"><a data-param="{'ctl':'Seller_Transport','met':'delArea','id':'<?=$value['id']?>'}" ><i class="iconfont icon-lajitong"></i><?=__('刪除')?></a></span>
$flag = $Transport_AreaModel->typeDel($type_id,$shop_id);
- 序言
- 系統要求
- 版本更新日志
- 遠豐商城技術對接說明
- 開發指導
- 系統架構
- 負載集群
- 云存儲
- 框架內容
- 基礎
- 開發規范
- 目錄結構
- 架構
- 架構總覽
- 數據庫
- 數據庫連接
- 基本使用
- 緩存
- 配置
- 路由
- 數據字典
- ucenter
- shop
- paycenter
- ucenter_admin
- shop_admin
- paycenter_admin
- shop1
- shop2
- shop3
- 通訊內容
- 商家中心
- 頂部導航欄
- 店鋪信息欄
- 店鋪及商品提示欄
- 交易提示欄
- 銷售情況統計欄
- 集群架構圖
- 單品銷量排行欄
- 店鋪運營推廣欄
- 平臺聯系方式欄
- 訂單物流
- 商品
- 商品列表
- 商品詳情
- 商品發布與編輯
- 分銷商品
- 關聯版式
- 商品規格
- 圖片空間
- 淘寶導入
- 訂單流程
- 交易訂單
- 訂單退款/退貨
- 促銷
- 團購管理
- 加價購
- 限時折扣
- 滿即送
- 代金券管理
- 分銷
- 店鋪
- 店鋪設置
- 自銷產品供應商
- 實體店鋪
- 品牌申請
- 店鋪信息
- 消費者保障服務
- 門店賬號
- 分銷商--產品供應商
- 分銷明細
- 批發市場
- 商家微信公眾號
- 售后服務
- 咨詢管理
- 投訴管理
- 退款管理
- 退貨管理
- 雜項
- 遠程上傳圖片
- 接口(廢棄,參考最外層接口項)
- 接口說明
- 品牌
- 商品規格
- 商品類型
- 商品分類
- 商品
- 訂單
- 商品/店鋪收藏
- 足跡
- 退款及退貨
- 商家店鋪
- 會員
- 入駐協議
- 訂單接口
- 商品接口
- 訂單物流接口
- 商家中心接口
- 促銷接口
- 快遞鳥物流接口
- 代金券接口
- 首頁版塊
- 團購
- 平臺紅包
- 限時折扣接口
- 拼團接口
- wap首頁模板
- JS
- 銀聯支付
- 多語言
- 商品評分
- 圖片加載
- 買家申請退款退貨
- 商家退款退貨
- 平臺退款退貨
- 添加發票
- 提交訂單
- 確認訂單
- 運費銷售區域
- 獲取會員地址
- 充值
- 導出XLS
- 商城系統集成
- 多語言實現
- 三級分銷推廣鏈接發展推廣員
- app.ini.php
- 去分銷
- 版本更新
- 物流支持
- 運營人員建議
- 業務邏輯
- 統計結算
- 客服消息
- 賬號
- 三級分銷
- IM
- 配置
- 平臺帳號
- 活動數據表說明
- 接口
- 數據庫中間鍵
- MyCat的優勢
- 概念說明
- Mycat的下載及安裝
- 參數配置案列
- Mycat讀寫分離
- 基本命令
- 常見錯誤