array('normal', 'electron' , 'cainiao', 'cainiao_standard', 'cainiao_user', 'pdd_standard', 'pdd_user', 'jd_standard', 'jd_user', 'douyin_standard', 'douyin_user','kuaishou_standard','kuaishou_user','wphvip_standard','wphvip_user', 'sf', 'xhs_standard', 'xhs_user', 'wxshipin_standard', 'wxshipin_user','dewu_ppzf','dewu_ppzf_zy','meituan4bulkpurchasing_user','youzan_standard')); $params = array( 'title'=>'快递面单管理', 'actions' => array( array( 'label' => '新增普通面单', 'href' => 'index.php?app=logisticsmanager&ctl=admin_express_template&act=addTmpl&type=normal&finder_id='.$_GET['finder_id'], 'target' => "_blank", ), array( 'label' => '新增电子面单', 'href' => 'index.php?app=logisticsmanager&ctl=admin_express_template&act=addTmpl&type=electron&finder_id='.$_GET['finder_id'], 'target' => "_blank", ), array( 'label' => '新增lodop版面单', 'href' => 'index.php?app=logisticsmanager&ctl=admin_express_template&act=addLodopTemplate&p[0]=electron&finder_id='.$_GET['finder_id'], 'target' => "_blank", ), array( 'label' => '同步面单来源模板', 'href' => 'index.php?app=logisticsmanager&ctl=admin_express_cainiao&act=preSyncTpl', 'target' => 'dialog::{width:600,height:500,title:\'同步面单来源模板\'}' ), array( 'label' => '导入面单模板', 'href' => 'index.php?app=logisticsmanager&ctl=admin_express_template&act=importnormalTmpl', 'target' => "dialog::{width:400,height:300,title:'导入面单模板'}", ), array( 'label' => '升级成lodop模板', 'submit' => 'index.php?app=logisticsmanager&ctl=admin_express_template&act=upgradeTemplate', 'target' => "dialog::{width:600,height:300,title:'升级成lodop模板'}", ), ), 'use_buildin_new_dialog' => false, 'use_buildin_set_tag'=>false, 'use_buildin_recycle'=>true, 'use_buildin_export'=>false, 'use_buildin_import'=>false, 'base_filter' => $base_filter ); $this->finder('logisticsmanager_mdl_express_template', $params); } function _views() { $mdl_order = $this->app->model('express_template'); $sub_menu = array( 'all' => array('label' => app::get('base')->_('全部'), 'filter' => array('status' => 'true'), 'optional' => false), 'cainiao' => array('label' => app::get('base')->_('菜鸟'), 'filter' => array('filter_sql' => 'template_type in("cainiao","cainiao_standard","cainiao_user")', 'status' => 'true'), 'optional' => false), 'pdd' => array('label' => app::get('base')->_('拼多多'), 'filter' => array('filter_sql' => 'template_type in("pdd_standard","pdd_user")', 'status' => 'true'), 'optional' => false), 'jd' => array('label' => app::get('base')->_('京东'), 'filter' => array('filter_sql' => 'template_type in("jd_standard","jd_user")', 'status' => 'true'), 'optional' => false), 'dy' => array('label' => app::get('base')->_('抖音'), 'filter' => array('filter_sql' => 'template_type in("douyin_standard","douyin_user")', 'status' => 'true'), 'optional' => false), 'ks' => array('label' => app::get('base')->_('快手'), 'filter' => array('filter_sql' => 'template_type in("kuaishou_standard","kuaishou_user")', 'status' => 'true'), 'optional' => false), 'wphvip' => array('label' => app::get('base')->_('唯品会vip'), 'filter' => array('filter_sql' => 'template_type in("wphvip_user","wphvip_standard")', 'status' => 'true'), 'optional' => false), 'sf' => array('label' => app::get('base')->_('顺丰'), 'filter' => array('filter_sql' => 'template_type in("sf")', 'status' => 'true'), 'optional' => false), 'xhs' => array('label' => app::get('base')->_('小红书'), 'filter' => array('filter_sql' => 'template_type in("xhs_standard","xhs_user")', 'status' => 'true'), 'optional' => false), 'wxshipin' => array('label' => app::get('base')->_('微信视频号'), 'filter' => array('filter_sql' => 'template_type in("wxshipin_standard","wxshipin_user")', 'status' => 'true'), 'optional' => false), 'youzan' => array('label' => app::get('base')->_('有赞'), 'filter' => array('filter_sql' => 'template_type in("youzan_standard")', 'status' => 'true'), 'optional' => false), 'dewu' => array('label' => app::get('base')->_('得物'), 'filter' => array('filter_sql' => 'template_type in("dewu_ppzf","dewu_ppzf_zy")', 'status' => 'true'), 'optional' => false), 'other' => array('label' => app::get('base')->_('其他'), 'filter' => array('filter_sql' => 'template_type in("electron","delivery","stock","normal")', 'status' => 'true'), 'optional' => false), ); foreach ($sub_menu as $k => $v) { $sub_menu[$k]['filter'] = $v['filter'] ? $v['filter'] : null; $sub_menu[$k]['addon'] = $mdl_order->viewcount($v['filter']); $sub_menu[$k]['href'] = 'index.php?app=logisticsmanager&ctl=' . $_GET['ctl'] . '&act=index&view=' . $k; } return $sub_menu; } /* 新增模板 */ public function addTmpl() { $this->_edit(); } /* 编辑模板 */ public function editTmpl($template_id){ $this->_edit($template_id); } private function _edit($template_id=NULL){ $templateObj = $this->app->model('express_template'); $elements = $templateObj->getElements(); if($template_id){ $template = $templateObj->dump($template_id); if($template['control_type'] == 'lodop') { $this->editLodopTemplate($template_id);exit(); } $this->pagedata['title'] = '编辑模板'; //获取用户自定义的打印项 $_arr_self_elments = $this->app->getConf('ome.delivery.print.selfElments'); $arr_self_elments = $_arr_self_elments['element_'.$template_id]; //获取每个快递单对应的自定义打印项 if(!empty($arr_self_elments)){ $_value = array_values($arr_self_elments['element']); $_key = array_keys($arr_self_elments['element']); $new_key = str_replace('+', '_', $_key[0]); //把原来键中的+号替换掉 $new_self_elments[$new_key] = $_value[0]; $elements = array_merge($elements,$new_self_elments); //合并系统打印项和用户自定义打印项 } } else { $template = array( 'template_width' => ($_GET['type']=='normal') ? 240 :100, 'template_height' => ($_GET['type']=='normal') ? 160: 150, 'template_type' => $_GET['type'] ? $_GET['type'] : 'normal', ); $this->pagedata['title'] = '新增模板'; } if($template['file_id']){ $bgUrl = $this->getImgUrl($template['file_id']); $this->pagedata['tmpl_bg'] = $bgUrl; } //$this->pagedata['tmpl_bg'] = 'http://img.tg.taoex.com/7ff271a2f9071043b751f18a08139ad6.jpg'; $this->pagedata['tmpl'] = $template; $this->pagedata['base_dir'] = kernel::base_url(); $this->pagedata['dpi'] = 96; $this->pagedata['uniqid'] = uniqid(); $this->pagedata['userAgent'] = $this->getUserAgent(); if($template['template_type']=='cainiao'){ $unarray = array( 'ship_name','ship_area_0','ship_area_1','ship_area_2', 'ship_addr','ship_addr_mark','ship_detailaddr', 'ship_detailaddr_mark','delivery_bn','logi_no', 'ship_tel','ship_mobile','ship_zip','dly_name', 'dly_area_0','dly_area_1','dly_area_2','dly_address', 'dly_detailaddr','dly_tel','dly_mobile','dly_zip','date_y', 'date_m','date_d','date_h','date_i','date_s','sfcity_code', 'mailno_position','mailno_position_no','package_wdjc', 'package_number','batch_logi_no','cloud_stack_position' ); foreach ($elements as $key => $value) { if(!in_array($key, $unarray)){ $cainiaos[$key] = $value; } } $this->pagedata['template_select'] = unserialize($template['template_select']); $this->pagedata['elements'] = $cainiaos; $this->pagedata['js_elements'] = json_encode($cainiaos); $this->singlepage('admin/express/template_cainiao.html'); }elseif(in_array($template['template_type'], array('cainiao_standard', 'cainiao_user'))) { header('content-Type:text/html;charset=utf8'); echo '菜鸟2模板不支持编辑'; }else{ $this->pagedata['elements'] = $elements; $this->singlepage('admin/express/template.html'); } //$this->pagedata['controllerTemplateObj'] = $this->_makeControllTemplateObj(); } /** * 保存模板 * */ function saveTmpl(){ if( $_POST['template_type']=='delivery' && !empty($_POST['template_select'])){ $template_select = kernel::single('logisticsmanager_print_tmpl')->formatDeliveryPrintTotal($_POST['template_select'],'save'); $_POST['template_select'] = $template_select; } $rs = kernel::single('logisticsmanager_print_tmpl')->save($_POST); if($rs['rs'] == 'succ') { //设置默认类型 $data = $rs['data']; if (in_array($data['template_type'], array('delivery', 'stock')) && $data['is_default'] == 'true') { if ($data['template_id']) { $filter = array('template_type' => $data['template_type'], 'template_id|noequal' => $data['template_id']); $updateMark = array('is_default' => 'false'); app::get('logisticsmanager')->model('express_template')->update($updateMark, $filter ); } } echo 'SUCC'; } else { echo $rs['msg']; } } /** * 上传背景图片页面 * * @param int $print_id */ function uploadBg($print_id=0){ $this->pagedata['dly_printer_id'] = $print_id; $this->display('admin/express/upload_bg.html'); } function extName($file){ return substr($file,strrpos($file,'.')); } /** * 处理上传的图片 * */ function doUploadBg(){ $ss = kernel::single('base_storager'); $extname = strtolower($this->extName($_FILES['background']['name'])); if($extname=='.jpg' || $extname=='.jpeg'){ $id = $ss->save_upload($_FILES['background'],"file","",$msg);//返回file_id; }else{ echo ""; return false; } $this->doneUploadBg(basename($id)); echo ""; } /** * 更新背景图片的显示 * * @param string $file */ function doneUploadBg($file){ if($file){ $bgUrl = $this->getImgUrl($file); list($width, $height) = getimagesize($bgUrl); $pager_width = intval($width*25.4/96); $pager_height = intval($height*25.4/96); echo ''; }else{ var_dump(__LINE__,$file); } } /** * 清除背景图片 * * @param string $file */ function deleteBg($file_id){ if($file_id>0){ $fileObj = app::get("base")->model("files"); $file = $fileObj->dump(array('file_id'=>$file_id)); if(is_array($file) && !empty($file)) { $storager = kernel::single('base_storager'); $storager->remove($file['file_path'],'file'); } } return true; } /** * 获取背景图片url * * @param string $file */ function getImgUrl($file){ $ss = kernel::single('base_storager'); $url = $ss->getUrl($file,"file"); return $url; } /** * 显示背景图片 * * @param string $file */ function showPicture($file){ header('Content-Type: image/jpeg'); $ss = kernel::single('base_storager'); $a = $ss->getUrl($file,"file"); // 当背景图片加载失败时,显示失败提示 $file = readfile($a); if($file) { return $file; }else{ $a = $this->app->res_dir.'/express_bg_error.jpg'; return readfile($a); } //$dlyObj = $this->app->model('delivery'); //$dlyObj->sfile($a);//ROOT_DIR.'/app/ome/upload/tmp/'.$file); } function printTest(){ $this->pagedata['base_dir'] = kernel::base_url(); $this->pagedata['dpi'] = 96; if($_POST['tmp_bg']){ $this->pagedata['bg_id'] = $_POST['tmp_bg']; }else if($_POST['prt_tmpl_id']){ $printTmpl = $this->app->model('print_tmpl'); $printTmpl = $printTmpl->dump($_POST['prt_tmpl_id'],'file_id'); $this->pagedata['bg_id'] = $printTmpl['file_id']; } $this->display('admin/delivery/express_print_test.html'); } #自定义模板 function selfTmpl(){ #模板id $prt_tmpl_id = $_GET['prt_tmpl_id']; $this->pagedata['prt_tmpl_id'] = $prt_tmpl_id; #获取用户自定义的打印项 $_arr_self_elment = $this->app->getConf('ome.delivery.print.selfElments'); $arr_self_elment = $_arr_self_elment['element_'.$prt_tmpl_id]; #自定义打印项的权重 if(isset($arr_self_elment)){ $key = array_keys($arr_self_elment['element']); $elments = explode('+', $key[0]); foreach($elments as $v){ #获取打印项的权重 if($v == 'n'){ $this->pagedata['n'] = 'true'; }else{ $this->pagedata[$v] = $arr_self_elment['weight'][$v]['weight']; } } } $this->display('admin/delivery/dly_print_selftmp.html'); } #保存自定义的打印方式 function doSelfTmlp(){ header("Content-type: text/html; charset=utf-8"); #模板id $tmlp_id = 'element_'.$_POST['prt_tmpl_id']; $_weight = $_POST['dly']; $elments = $_POST['delivery']; $_elments = $elments; #自定义的打印项键 unset($_elments['n']); #去除换行后,打印项数量在2-5个之间 $_count = count($_elments); if($_count > 5){ echo "";exit; } if( $_count < 2){ echo "";exit; } $self_elments = $this->selfPrintElments(); $_elments = array_keys($_elments); $elment_key = array(); $_i = 0; foreach($_elments as $v){ if(strlen($_weight[$v]['weight'])<=0){ echo "";exit; } #检测权重$_weight[$v]['weight'],是否重复 if($_i > 0){ if(array_key_exists($_weight[$v]['weight'], $elment_key)){ echo "";exit; } } $elment_key[$_weight[$v]['weight']] = $v; $elment_name[$_weight[$v]['weight']] = $self_elments[$v]; $_i++; } #按键名倒序排序 krsort($elment_key); krsort($elment_name); #检测前端原始提交的数据中,是否包含换行 if($elments['n'] == 'true'){ $elment_key['n'] = 'n'; $elment_name['n'] = $self_elments['n']; } $new_elment_key = implode('+',$elment_key); $new_elment_name = implode('+',$elment_name); #本次设置的自定义打印项 $arr_new_elments[$new_elment_key] = $new_elment_name; #获取用户所有自定义的打印项 $selfElments= $this->app->getConf('ome.delivery.print.selfElments'); $selfElments[$tmlp_id]['element'] = $arr_new_elments; $selfElments[$tmlp_id]['weight'] = $_weight; #保存自定义打印项 $this->app->setConf('ome.delivery.print.selfElments',$selfElments); echo ""; } #自定义打印项键值对 function selfPrintElments(){ return array( 'bn' => '货号', 'pos' => '货位', 'name' => '货品名称', 'spec' => '规格', 'amount' => '数量', 'new_bn_name' => '商品名称', 'goods_bn' => '商家编码', 'goods_bn2' => '商品编号',//历史遗留问题,商家编码就是商品编号 'n' => '换行' ); } /** * 发货单 */ public function delivery() { $base_filter = array('template_type' => 'delivery'); $params = array( 'title'=>'发货面单管理', 'actions' => array( array( 'label' => '新增发货面单', 'href' => 'index.php?app=logisticsmanager&ctl=admin_express_template&act=addDeliveryTmpl&type=delivery&finder_id='.$_GET['finder_id'], 'target' => "_blank", ), array( 'label' => '新增lodop版面单', 'href' => 'index.php?app=logisticsmanager&ctl=admin_express_template&act=addLodopTemplate&p[0]=delivery&finder_id='.$_GET['finder_id'], 'target' => "_blank", ), array( 'label' => '升级成lodop模板', 'submit' => 'index.php?app=logisticsmanager&ctl=admin_express_template&act=upgradeTemplate', 'target' => "dialog::{width:600,height:300,title:'升级成lodop模板'}", ), ), 'use_buildin_new_dialog' => false, 'use_buildin_set_tag'=>false, 'use_view_tab'=>false, 'use_buildin_recycle'=>true, 'use_buildin_export'=>false, 'use_buildin_import'=>false, 'base_filter' => $base_filter ); $this->finder('logisticsmanager_mdl_express_template', $params); } /** * 添加发货单面单 * Enter description here ... */ public function addDeliveryTmpl() { $this->_editTmplView(null, 'delivery'); } /* 编辑发货单模板 */ public function editDeliveryTmpl($template_id){ $this->_editTmplView($template_id, 'delivery'); } /** * 备货单 * Enter description here ... */ public function stock() { $base_filter = array('template_type' => 'stock'); $params = array( 'title'=>'备货面单管理', 'actions' => array( array( 'label' => '备货发货面单', 'href' => 'index.php?app=logisticsmanager&ctl=admin_express_template&act=addStockTmpl&type=stock&finder_id='.$_GET['finder_id'], 'target' => "_blank", ), array( 'label' => '新增lodop版面单', 'href' => 'index.php?app=logisticsmanager&ctl=admin_express_template&act=addLodopTemplate&p[0]=stock&finder_id='.$_GET['finder_id'], 'target' => "_blank", ), array( 'label' => '升级成lodop模板', 'submit' => 'index.php?app=logisticsmanager&ctl=admin_express_template&act=upgradeTemplate', 'target' => "dialog::{width:600,height:300,title:'升级成lodop模板'}", ), ), 'use_buildin_new_dialog' => false, 'use_buildin_set_tag'=>false, 'use_view_tab'=>false, 'use_buildin_recycle'=>true, 'use_buildin_export'=>false, 'use_buildin_import'=>false, 'base_filter' => $base_filter ); $this->finder('logisticsmanager_mdl_express_template', $params); } /** * 添加发货面单模板 */ public function addStockTmpl() { $this->_editTmplView(null, 'stock'); } /** * 编辑备货面单模板 * @param Int $template_id 模板ID */ public function editStockTmpl($template_id) { $this->_editTmplView($template_id, 'stock'); } /** * 编辑模板 * * @param Int $template_id 模板ID */ private function _editTmplView($template_id = null, $type = '') { $templateObj = $this->app->model('express_template'); $type = isset($_GET['type']) ? trim($_GET['type']) : $type; $elements = $templateObj->getElementsItem($type); if ($template_id) { $template = $templateObj->dump($template_id); $this->pagedata['title'] = '编辑模板'; if (in_array($type,array('copydelivery','copystock'))) { if ($type == 'copydelivery') { $this->pagedata['title'] = '复制发货单模板'; }else if($type == 'copystock'){ $this->pagedata['title'] = '复制备货单模板'; } $template['template_name'] = '复制'.$template['template_name']; unset($template['template_id']); } //获取用户自定义的打印项 $_arr_self_elments = $this->app->getConf('ome.delivery.print.'.$type.'.selfElments'); $arr_self_elments = $_arr_self_elments['element_'.$template_id]; //获取每个快递单对应的自定义打印项 if (!empty($arr_self_elments)) { $_value = array_values($arr_self_elments['element']); $_key = array_keys($arr_self_elments['element']); $new_key = str_replace('+', '_', $_key[0]); //把原来键中的+号替换掉 $new_self_elments[$new_key] = $_value[0]; $elements = array_merge($elements, $new_self_elments); //合并系统打印项和用户自定义打印项 } } else { switch ($type) { case 'stock': $templateWidth = 240; $templateHeight = 160; $templateType = 'stock'; $title = '新增备货面单模板'; break; case 'delivery': $templateWidth = 240; $templateHeight = 160; $templateType = 'delivery'; $title = '新增发货面单模板'; break; default : $templateWidth = 240; $templateHeight = 160; $templateType = 'delivery'; $title = '新增发货面单模板'; break; } $template = array( 'template_width' => $templateWidth, 'template_height' => $templateHeight, 'template_type' => $templateType ); $this->pagedata['title'] = $title; } $html = 'admin/' . $type . '/template.html'; //如果存在背景图 if ($template['file_id']) { $bgUrl = $this->getImgUrl($template['file_id']); $this->pagedata['tmpl_bg'] = $bgUrl; } $this->pagedata['tmpl'] = $template; $this->pagedata['base_dir'] = kernel::base_url(); $this->pagedata['dpi'] = 96; $this->pagedata['elements'] = $elements; $this->pagedata['uniqid'] = uniqid(); $this->pagedata['userAgent'] = $this->getUserAgent(); $this->singlepage($html); } /** * 获得模板字段类型 * @param String $type 模板类型 */ public function getTemplateFields($type = '', $display = true) { if (empty($type)) { $type = $_POST['type']; } $data = array(); switch ($type) { case 'delivery': $data = array( 'grid_name' => 'delivery_items', 'field_array' => array( 'name' => '商品名称', 'bn' => '货号', 'expire_bn' => '保质期条码', 'number' => '数量', 'price' => '单价', 'sale_price' => '实收金额', 'spec_info'=>'规格', 'pmt_price'=>'优惠价', 'goods_bn'=>'商品货号', 'product_weight'=>'货品重量', 'unit'=>'单位', 'brand_name'=>'品牌', 'type_name'=>'商品类型', 'store_position'=>'货位', 'print_number'=>'序号', ), 'countDeliveryMsg' => array( 'total' => '总计', 'empty' => '空', ), ); break; case 'stock': $data = array( 'grid_name' => 'stock_items', 'field_array' => array( 'bn' => '货号', 'expire_bn' => '保质期条码', 'store_position' => '货位', 'name' => '商品名称', 'spec_info' => '商品规格', 'num' => '商品数量', 'box_price' => '合计金额', 'box' => '盒子号', 'product_weight' => '货品重量', 'barcode' => '条形码号', ), 'countDeliveryMsg' => array( 'num_total' => '数量总计', 'num_money_total' => '数量金额总计', 'empty' => '空', ), ); break; } if ($display) { echo json_encode($data); exit; } else { return $data; } } /** * 获得浏览器版本 */ public function getUserAgent() { $agent = $_SERVER["HTTP_USER_AGENT"]; $brower = array('brower' => 'Other', 'ver' => '0', 'type' => 2); if (strpos($agent, "MSIE 10.0")) { $brower = array('brower' => 'Ie', 'ver' => '10.0', 'type' => 1); } elseif (strpos($agent, "MSIE 9.0")) { $brower = array('brower' => 'Ie', 'ver' => '9.0', 'type' => 1); } elseif (strpos($agent, "MSIE 8.0")) { $brower = array('brower' => 'Ie', 'ver' => '8.0', 'type' => 1); } elseif (strpos($agent, "MSIE 7.0")) { $brower = array('brower' => 'Ie', 'ver' => '7.0', 'type' => 1); } elseif (strpos($agent, "MSIE 6.0")) { $brower = array('brower' => 'Ie', 'ver' => '6.0', 'type' => 1); } elseif (strpos($agent, "Trident")) { //IE11以后的版本 $str = substr($agent, strpos($agent, 'rv:') + strlen('rv:')); $ver = substr($str, 0, strpos($str, ')')); $brower = array('brower' => 'Ie', 'ver' => $ver, 'type' => 1); } elseif (strpos($agent, "Chrome")) { $str = substr($agent, strpos($agent, 'Chrome/') + strlen('Chrome/')); $verInfo = explode(" ", $str); $brower = array('brower' => 'Chrome', 'ver' => $verInfo[0], 'type' => 2); } elseif (strpos($agent, "Firefox")) { $str = substr($agent, strpos($agent, 'Firefox/') + strlen('Firefox/')); $brower = array('brower' => 'Firefox', 'ver' => $str, 'type' => 2); } return $brower; } protected function _makeControllTemplateObj() { $style = 'style="border:3px #ccc solid;'; if ($this->pagedata['tmpl']['template_width'] && $this->pagedata['tmpl']['template_height']) { $style .= 'width:' . ($this->pagedata['tmpl']['template_width'] * 96/25.4+30) . 'px;'; $style .= 'height:' . ($this->pagedata['tmpl']['template_height']*96/25.4+30) .'px;'; } else { $style .= 'width:910px;height:510px;'; } $brower = $this->getUserAgent(); $templateObj = ''; if ($brower['type'] == 2) { $templateObj .= ''; } else { $templateObj .= ''; } return $templateObj; } /** * 复制发货单模板 * @param * @return * @access public * @author sunjing@shopex.cn */ function copyDeliveryTmpl($template_id) { $this->_copyTmplView($template_id, 'copydelivery'); } /** * 复制备货单模板 * @param * @return * @access public * @author sunjing@shopex.cn */ public function copyStockTmpl($template_id) { $this->_copyTmplView($template_id, 'copystock'); } /** * 复制快递单模板 * @param * @return * @access public * @author sunjing@shopex.cn */ public function copyTmpl($template_id){ $templateObj = $this->app->model('express_template'); $elements = $templateObj->getElements(); if($template_id){ $template = $templateObj->dump($template_id); $template['template_name'] = '复制'.$template['template_name']; $this->pagedata['title'] = '复制模板'; //获取用户自定义的打印项 $_arr_self_elments = $this->app->getConf('ome.delivery.print.selfElments'); $arr_self_elments = $_arr_self_elments['element_'.$template_id]; //获取每个快递单对应的自定义打印项 if(!empty($arr_self_elments)){ $_value = array_values($arr_self_elments['element']); $_key = array_keys($arr_self_elments['element']); $new_key = str_replace('+', '_', $_key[0]); //把原来键中的+号替换掉 $new_self_elments[$new_key] = $_value[0]; $elements = array_merge($elements,$new_self_elments); //合并系统打印项和用户自定义打印项 } } if($template['file_id']){ $bgUrl = $this->getImgUrl($template['file_id']); $this->pagedata['tmpl_bg'] = $bgUrl; } //$this->pagedata['tmpl_bg'] = 'http://img.tg.taoex.com/7ff271a2f9071043b751f18a08139ad6.jpg'; unset($template['template_id']); $this->pagedata['tmpl'] = $template; $this->pagedata['base_dir'] = kernel::base_url(); $this->pagedata['dpi'] = 96; $this->pagedata['uniqid'] = uniqid(); $this->pagedata['userAgent'] = $this->getUserAgent(); //$this->pagedata['controllerTemplateObj'] = $this->_makeControllTemplateObj(); if($template['template_type']=='cainiao'){ $unarray = array( 'ship_name','ship_area_0','ship_area_1','ship_area_2', 'ship_addr','ship_addr_mark','ship_detailaddr', 'ship_detailaddr_mark','delivery_bn','logi_no', 'ship_tel','ship_mobile','ship_zip','dly_name', 'dly_area_0','dly_area_1','dly_area_2','dly_address', 'dly_detailaddr','dly_tel','dly_mobile','dly_zip','date_y', 'date_m','date_d','date_h','date_i','date_s','sfcity_code', 'mailno_position','mailno_position_no','package_wdjc', 'package_number','batch_logi_no','cloud_stack_position' ); foreach ($elements as $key => $value) { if(!in_array($key, $unarray)){ $cainiaos[$key] = $value; } } $this->pagedata['template_select'] = unserialize($template['template_select']); $this->pagedata['elements'] = $cainiaos; $this->pagedata['js_elements'] = json_encode($cainiaos); $this->singlepage('admin/express/template_cainiao.html'); }else{ $this->pagedata['elements'] = $elements; $this->singlepage('admin/express/template.html'); } } private function _copyTmplView($template_id = null, $type = '') { $templateObj = $this->app->model('express_template'); $type = $type == 'copyStockTmpl' ? 'stock' : 'delivery' ; $elements = $templateObj->getElementsItem($type); if ($template_id) { $template = $templateObj->dump($template_id); $this->pagedata['title'] = '编辑模板'; if (in_array($type,array('stock','delivery'))) { if ($type == 'delivery') { $this->pagedata['title'] = '复制发货单模板'; }else if($type == 'stock'){ $this->pagedata['title'] = '复制备货单模板'; } $template['template_name'] = '复制'.$template['template_name']; unset($template['template_id']); } //获取用户自定义的打印项 $_arr_self_elments = $this->app->getConf('ome.delivery.print.'.$type.'.selfElments'); $arr_self_elments = $_arr_self_elments['element_'.$template_id]; //获取每个快递单对应的自定义打印项 if (!empty($arr_self_elments)) { $_value = array_values($arr_self_elments['element']); $_key = array_keys($arr_self_elments['element']); $new_key = str_replace('+', '_', $_key[0]); //把原来键中的+号替换掉 $new_self_elments[$new_key] = $_value[0]; $elements = array_merge($elements, $new_self_elments); //合并系统打印项和用户自定义打印项 } } $html = 'admin/' . $type . '/template.html'; //如果存在背景图 if ($template['file_id']) { $bgUrl = $this->getImgUrl($template['file_id']); $this->pagedata['tmpl_bg'] = $bgUrl; } $this->pagedata['tmpl'] = $template; $this->pagedata['base_dir'] = kernel::base_url(); $this->pagedata['dpi'] = 96; $this->pagedata['elements'] = $elements; $this->pagedata['uniqid'] = uniqid(); $this->pagedata['userAgent'] = $this->getUserAgent(); $this->singlepage($html); } /** * 导入普通面单模板 * @param * @return * @access public * @author sunjing@shopex.cn */ function importnormalTmpl() { $this->display('admin/delivery/dly_print_import.html'); } /** * 上传普通面单. * @param * @return * @access public * @author sunjing@shopex.cn */ function doUploadnormal() { header("content-type:text/html; charset=utf-8"); $file = $_FILES['package']; $msg = kernel::single('logisticsmanager_print_tmpl')->upload_tmpl($file); if ($msg=='success'){ $result = true; $msg = "上传完成"; } else{ $result = false; } echo ""; exit; } function downloadTmpl($tmpl_id){ $printObj = &$this->app->model('express_template'); $tmpl = $printObj->dump($tmpl_id,'template_name,template_type,template_width,template_height,file_id,is_logo,template_select,template_data'); //$tar = &$this->app->model('utility_tar');//修改加载方式 $tar = kernel::single('ome_utility_tar'); $tar->addFile('info',serialize($tmpl)); if($tmpl['file_id']){ $ss = kernel::single('base_storager'); $a = $ss->getUrl($tmpl['file_id'],"file");//echo file_get_contents($a);die; $tar->addFile('background.jpg',file_get_contents($a)); } //$this->system->session->close(); //$charset = $this->app->model('utility_charset');//修改加载方式 //$charset = kernel::single('ome_utility_charset'); $charset = kernel::single('base_charset'); $name = $charset->utf2local($tmpl['template_name'],'zh'); @set_time_limit(0); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header('Content-type: application/octet-stream'); header('Content-type: application/force-download'); header('Content-Disposition: attachment; filename="'.$name.'.dtp"'); $tar->getTar('output'); } /** * 编辑lodop模板 * @param Int $template_id 模板id * @param String $template_type 模板类型 */ public function editLodopTemplate($template_id){ $template = $this->app->model('express_template')->dump($template_id); $this->pagedata['type'] = 'edit'; $this->pagedata['template_id'] = $template_id; $this->pagedata['lodopPrintTemplate']['data'] = kernel::single('logisticsmanager_template_lodop')->tmplData($template_id,$template['template_type']); $this->pagedata['template_type'] = $template['template_type']; $this->display('admin/print/lodop/template.html'); } /** * 新增lodop模板 * @param String $template_type 模板类型 */ public function addLodopTemplate($template_type){ $this->pagedata['type'] = 'add'; $this->pagedata['template_id'] = ''; $this->pagedata['lodopPrintTemplate']['data'] = kernel::single('logisticsmanager_template_lodop')->tmplData(null,$template_type); $this->pagedata['template_type'] = $template_type; $this->display('admin/print/lodop/template.html'); } /* * 升级打印模板 * */ function upgradeTemplate() { $filter = $_POST; $arrRequestId = $filter['template_id']; $this->pagedata['count'] = count($filter['template_id']); $this->pagedata['arrId'] = json_encode($arrRequestId); $this->pagedata['request_url'] = 'index.php?app=logisticsmanager&ctl=admin_express_template&act=doAjaxUpgrade'; $this->display('admin/print/lodop/upgrade.html'); } /* * ajax升级模板 * */ public function doAjaxUpgrade(){ $arrRequestId = explode(';', $_POST['ajaxParams']); $none = $succ = $fail = $total = 0; foreach ($arrRequestId as $id){ $total++; $res = $this->changeLodop($id); if($res==1){ $succ++; }else if($res==2){ $none++; }else{ $fail++; } } echo json_encode(array( 'total' => $total, 'succ' => $succ, 'fail' => $fail, 'none' => $none )); } /* * 升级成lodop模板 * */ public function changeLodop($templateId){ $templateObj = app::get('logisticsmanager')->model('express_template'); $template = $templateObj->dump(array('template_id'=>$templateId)); if($template['control_type']=='lodop' || !in_array($template['template_type'], array('normal','electron','delivery','stock'))){ return 2; } $template['template_name'] .='[lodop]'; $template['template_data'] = kernel::single('logisticsmanager_template_lodop')->transformTemplateData($template['template_data'],$template['template_type']); $template['control_type'] = 'lodop'; unset($template['is_default'],$template['template_id']); $templateObj->save($template); return 1; } /** * 设置默认 * * @return void * @author chenping@shopex.cn */ public function setDefault($template_id) { $this->begin(sprintf('javascript:finderGroup["%s"].refresh();',$_GET['finder_id'])); $tmplMdl = app::get('logisticsmanager')->model('express_template'); $template = $tmplMdl->dump($template_id,'template_id,template_type'); if (!$template) $this->end(false,'模板不存在'); $tmplMdl->update(array('is_default'=>'false'),array('template_type'=>$template['template_type'])); $affect_rows = $tmplMdl->update(array('is_default'=>'true'),array('template_id'=>$template['template_id'],'template_type'=>$template['template_type'])); $this->end($affect_rows===1?true:false); } /** * 取消默认 * * @return void * @author chenping@shopex.cn */ public function unsetDefault($template_id) { $this->begin(sprintf('javascript:finderGroup["%s"].refresh();',$_GET['finder_id'])); $tmplMdl = app::get('logisticsmanager')->model('express_template'); $template = $tmplMdl->dump($template_id,'template_id,template_type'); if (!$template) $this->end(false,'模板不存在'); $affect_rows = $tmplMdl->update(array('is_default'=>'false'),array('template_id'=>$template['template_id'],'template_type'=>$template['template_type'])); $this->end($affect_rows===1?true:false); } /* 编辑模板 */ public function editField($template_id){ $tmplMdl = app::get('logisticsmanager')->model('express_template'); $template = $tmplMdl->db_dump($template_id,'template_id,control_type,template_data,template_select,template_type'); if (in_array($template['control_type'], ['youzan'])) { $template_select = @unserialize($template['template_select']); $tmpl = [ 'template_id' => $template['template_id'], 'control_type' => $template['control_type'], 'customer_template_url' => $template_select ? $template_select['user_url'] : '', ]; } else { $template['template_data'] = @json_decode($template['template_data'] ,1); $tmpl = [ 'template_id' => $template['template_id'], 'control_type' => $template['control_type'], 'customer_template_url' => $template['template_data']['customerTemplateUrl'], ]; } $this->pagedata['tmpl'] = $tmpl; $this->display('admin/express/template_field.html'); } /** * 保存Field * @return mixed 返回操作结果 */ public function saveField() { $this->begin(sprintf('javascript:finderGroup["%s"].refresh();',$_GET['finder_id'])); if (!$_POST['template_id']) { $this->end(false, 'template_id 无效'); } $tmplMdl = app::get('logisticsmanager')->model('express_template'); $res = $tmplMdl->saveTemplate($_POST); $this->end(true,'保存成功'); } }