Commit f45eae8f by 朱继来

调整下单

parent 54aab9f3
...@@ -567,14 +567,15 @@ Class AddOrderController extends Controller ...@@ -567,14 +567,15 @@ Class AddOrderController extends Controller
public function create(Request $request) public function create(Request $request)
{ {
if ($request->isMethod('post')) { if ($request->isMethod('post')) {
$data['uid'] = $request->input('uid'); $data['type'] = $request->input('type');
$data['sale_id'] = $request->input('sale_id'); $data['uid'] = $request->input('uid');
$data['address_id'] = $request->input('address_id'); $data['sale_id'] = $request->user->userId;
$data['cart_id'] = implode(',', $request->input('cart_ids')); $data['address_id'] = $request->input('address_id');
$data['type'] = $request->input('type'); $data['cart_id'] = implode(',', $request->input('cart_ids'));
$data['remark'] = $request->input('remark'); $data['remark'] = $request->input('remark');
$data['com_id'] = $request->input('com_id', 0); $data['com_id'] = $request->input('com_id', 0);
$data['com_name'] = $request->input('com_name', ''); $data['com_name'] = $request->input('com_name', '');
$data['shipping_type'] = $request->input('shipping_type', 0);
if ($data['type'] == 3) { // 自营线下订单 if ($data['type'] == 3) { // 自营线下订单
$data['address_name'] = $request->input('address_name'); $data['address_name'] = $request->input('address_name');
...@@ -605,7 +606,7 @@ Class AddOrderController extends Controller ...@@ -605,7 +606,7 @@ Class AddOrderController extends Controller
$data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi'); $data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi');
$url = Config('website.api_domain').'order/create'; $url = Config('website.api_domain').'order/create';
// dd(curlApi($url, $data));
$response = json_decode(curlApi($url, $data), true); $response = json_decode(curlApi($url, $data), true);
if ($response['err_code'] == 0) { if ($response['err_code'] == 0) {
...@@ -803,7 +804,7 @@ Class AddOrderController extends Controller ...@@ -803,7 +804,7 @@ Class AddOrderController extends Controller
$data['k1'] = time(); $data['k1'] = time();
$data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi'); $data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi');
// dd(curlApi($url, $data, "POST"));
$temp = json_decode(curlApi($url, $data, "POST"), true); $temp = json_decode(curlApi($url, $data, "POST"), true);
return ['errcode' => $temp['err_code'], 'errmsg' => $temp['err_msg']]; return ['errcode' => $temp['err_code'], 'errmsg' => $temp['err_msg']];
......
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Error;
use DB;
use App\Http\Model\UserActionLogModel;
class AddressController extends Controller
{
// 添加收货地址
public function add(Request $request)
{
if ($request->isMethod('post')) {
$address_id = $request->input('address_id', 0);
$data = [
'user_id' => $request->input('user_id', 0),
'province' => $request->input('province', ''),
'city' => $request->input('city', ''),
'district' => $request->input('district', ''),
'detail_address' => $request->input('detail_address', ''),
'zipcode' => $request->input('zipcode', ''),
'intl_code' => $request->input('intl_code', ''),
'consignee' => $request->input('consignee', ''),
'mobile' => $request->input('mobile', ''),
'is_default' => $request->input('is_default', ''),
'address_type' => $request->input('address_type', 0),
'operator_id' => $request->user->userId,
];
$valid = $this->_valid($data);
if ($valid['errcode']) return $this->_valid($data);
if ($address_id) {
$data['address_id'] = $address_id;
$url = Config('website.api_domain').'address/update';
$errmsg = '编辑地址';
} else {
$url = Config('website.api_domain').'address/create';
$errmsg = '新增地址';
}
$data['k1'] = time();
$data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi');
$data['pf'] = 4;
$temp = json_decode(curlApi($url, $data, "POST"), true);
if ($temp['err_code'] != 0) return ['errcode' => Error::E_ADD_FAILED, 'errmsg' => $errmsg.'失败,'.$temp['err_msg']];
return ['errcode' => 0, 'errmsg' => $errmsg.'成功'];
}
}
// 地址
public function getRegion($region_id)
{
$region = DB::connection('member')->table('lie_region')->where('region_id', $region_id)->select('region_name')->first();
return $region ? $region->region_name : '';
}
// 获取地址信息
public function getAddressInfo(Request $request)
{
if ($request->isMethod('post')) {
$address_id = $request->input('address_id');
$info = DB::connection('member')->table('lie_user_address')->where('address_id', $address_id)->first();
if (empty($info)) return ['errcode' => Error::E_NOT_EXISTS, 'errmsg' => '未找到'];
return ['errcode' => 0, 'errmsg' => '', 'data' => $info];
}
}
//验证
private function _valid($data)
{
if (!$data['user_id']) {
return array(
'errcode' => 1,
'errmsg' => '非法操作~',
'field' => ''
);
}
if (!$data['province'] || !$data['city'] || !$data['district']) {
return array(
'errcode' => 1,
'errmsg' => '您还没选择【所在地区】~',
'field' => 'district'
);
}
if (!$data['detail_address']) {
return array(
'errcode' => 1,
'errmsg' => '您还没填写【详细地址】~',
'field' => 'detail_address'
);
}
if ($data['zipcode'] && !is_postcode($data['zipcode'])) {
return array(
'errcode' => 1,
'errmsg' => '您填写的【邮政编码】格式不正确~',
'field' => 'zipcode'
);
}
if (!$data['consignee']) {
return array(
'errcode' => 1,
'errmsg' => '您还没填写【收货人】~',
'field' => 'consignee'
);
}
if (!$data['mobile']) {
return array(
'errcode' => 1,
'errmsg' => '您还没填写【联系电话】~',
'field' => 'link_mobile'
);
}
if ($data['intl_code'] != '0086') {
$mobile = $data['intl_code'].'+'.$data['mobile'];
} else {
$mobile = $data['mobile'];
}
if (!is_mobile($mobile)) {
return array(
'errcode' => 1,
'errmsg' => '您填写的【联系电话】格式不正确~',
'field' => 'link_mobile'
);
}
return array(
'errcode' => 0,
'errmsg' => '验证通过~',
);
}
// Ajax地址列表
public function ajax_list(Request $request)
{
$addressList = array();
$map = array();
if ($request->input('user_id')) {
$map['user_id'] = $request->input('user_id', '');
}
if ($request->input('address_type') !== '') {
$map['address_type'] = $request->input('address_type', '');
}
if ($map['user_id'] && isset($map['address_type'])) {
$addressList = DB::connection('member')->table('lie_user_address')->where($map)->get();
}
if(!empty($addressList) && is_array($addressList)) {
$region = array();
foreach ($addressList as &$val) {
$region = DB::connection('member')
->table('lie_region')
->whereIn('region_id', [$val->province, $val->city, $val->district])
->select('region_id', 'region_name')
->get();
foreach ($region as $v) {
$address[$v->region_id] = $v->region_name;
}
$val->province_txt = $address[$val->province];
$val->city_txt = $address[$val->city];
$val->district_txt = $address[$val->district];
// 检查港台电话code
if ($val->intl_code && $val->intl_code != '0086') $val->mobile = $val->intl_code.'+'.$val->mobile;
}
}
$data['list'] = $addressList;
$data['isaction'] = $request->input('isaction');
return view('ajax_list', $data);
}
//设置默认地址
public function set_default(Request $request)
{
if ($request->isMethod('post')) {
$data['user_id'] = $request->input('user_id');
$data['address_id'] = $request->input('address_id');
$data['operator_id'] = $request->user->userId;
$url = Config('website.api_domain').'address/setdefault';
$data['k1'] = time();
$data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi');
$data['pf'] = 4;
$temp = json_decode(curlApi($url, $data, "POST"), true);
return ['errcode' => $temp['err_code'], 'errmsg' => $temp['err_msg']];
}
}
// 删除地址
public function delete(Request $request)
{
if ($request->isMethod('post')) {
$data['user_id'] = $request->input('user_id');
$data['address_id'] = $request->input('address_id');
$data['operator_id'] = $request->user->userId;
$url = Config('website.api_domain').'address/delete';
$data['k1'] = time();
$data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi');
$data['pf'] = 4;
$temp = json_decode(curlApi($url, $data, "POST"), true);
return ['errcode' => $temp['err_code'], 'errmsg' => $temp['err_msg']];
}
}
}
\ No newline at end of file
...@@ -509,25 +509,39 @@ class ApiController extends Controller ...@@ -509,25 +509,39 @@ class ApiController extends Controller
$this->Export($temp['err_code'], $temp['err_msg'], $temp['data']); $this->Export($temp['err_code'], $temp['err_msg'], $temp['data']);
} }
// 获取用户绑定客服、发票 // 获取用户信息
public function getUserInvoice($request) public function getUserInfo($request)
{ {
$com_name = $request->input('com_name', ''); $val = $request->input('val', '');
$account = $request->input('account', ''); $type = $request->input('type', 1);
$invoice_type = $request->input('invoice_type', '');
$curr_user_id = $request->user->userId;
$tax_info = [];
if (!$account) $this->Export(-1, '未填写联系方式'); if ($type == 1) {
$com_id = DB::connection('order')->table('lie_invoice_company')->where('com_name', $val)->value('id');
if (preg_match('/@/', $account)) { $this->Export(0, '', $com_id);
}
if (preg_match('/@/', $val)) {
$field = 'email'; $field = 'email';
} else { } else {
$field = 'mobile'; $field = 'mobile';
} }
$user_id = DB::connection('order')->table('lie_user_main')->where($field, $account)->value('user_id'); $user_id = DB::connection('order')->table('lie_user_main')->where($field, $val)->value('user_id');
if (!$user_id) $this->Export(-1, '当前联系账号不存在');
$this->Export(0, '', $user_id);
}
// 获取用户绑定客服、发票
public function getUserInvoice($request)
{
$com_id = $request->input('com_id', '');
$user_id = $request->input('user_id', 0);
$invoice_type = $request->input('invoice_type', 2);
$curr_user_id = $request->user->userId;
$tax_info = [];
if (!$user_id) $this->Export(-1, '未填写联系方式');
// 个人发票 // 个人发票
if ($invoice_type == 2) { if ($invoice_type == 2) {
...@@ -540,13 +554,10 @@ class ApiController extends Controller ...@@ -540,13 +554,10 @@ class ApiController extends Controller
$this->Export(0, '', $tax_info); $this->Export(0, '', $tax_info);
} }
if (!$com_name) $this->Export(-1, '未填写当前发票/公司'); if (!$com_id) $this->Export(-1, '未填写当前发票/公司');
$invoice_company = DB::connection('order')->table('lie_invoice_company')->where('com_name', $com_name)->first();
if (!$invoice_company) $this->Export(-1, '当前公司不存在');
$map = []; $map = [];
$map['com_id'] = $invoice_company->id; $map['com_id'] = $com_id;
$map['user_id'] = $user_id; $map['user_id'] = $user_id;
$map['status'] = 0; $map['status'] = 0;
...@@ -558,8 +569,11 @@ class ApiController extends Controller ...@@ -558,8 +569,11 @@ class ApiController extends Controller
$this->Export(-1, '当前公司和联系账号由'.$sale_name.'跟进'); $this->Export(-1, '当前公司和联系账号由'.$sale_name.'跟进');
} }
$invoice_company = DB::connection('order')->table('lie_invoice_company')->where('id', $com_id)->first();
if (!$invoice_company) $this->Export(-1, '当前公司不存在');
$tax_info['tax_id'] = $invoice_company->tax_id; $tax_info['tax_id'] = $invoice_company->tax_id;
$tax_info['tax_title'] = $com_name; $tax_info['tax_title'] = $invoice_company->com_name;
$tax_info['tax_no'] = $invoice_company->com_tax_registration; $tax_info['tax_no'] = $invoice_company->com_tax_registration;
if ($invoice_type == 4) $this->Export(0, '', $tax_info); // 增值税普票 if ($invoice_type == 4) $this->Export(0, '', $tax_info); // 增值税普票
...@@ -578,5 +592,36 @@ class ApiController extends Controller ...@@ -578,5 +592,36 @@ class ApiController extends Controller
$this->Export(0, '', $tax_info); // 增值税专票 $this->Export(0, '', $tax_info); // 增值税专票
} }
// 获取用户收货地址
public function getUserAddress($request)
{
$user_id = $request->input('user_id', 0);
if (!$user_id) $this->Export(-1, '用户ID缺失');
$map = [];
$map['user_id'] = $user_id;
$map['address_type'] = 0;
$address = DB::connection('order')->table('lie_user_address')->where($map)->get();
if (empty($address)) $this->Export(-1, '未获取到用户收货地址');
foreach ($address as &$v) {
$province_val = $this->getAddress($v->province);
$city_val = $this->getAddress($v->city);
$district_val = $this->getAddress($v->district);
$v->address = $province_val.$city_val.$district_val.$v->detail_address;
}
$this->Export(0, '', $address);
}
// 查询省市区
public function getAddress($id)
{
return DB::connection('order')->table('lie_region')->where('region_id', $id)->value('region_name');
}
} }
<?php <?php
/** 公用函数 */ /** 公用函数 */
use Illuminate\Support\Facades\Redis; use Illuminate\Support\Facades\Redis;
//导出数据 //导出数据
//导出数据 //导出数据
function exportExcel($expTitle, $expCellName, $expTableData) function exportExcel($expTitle, $expCellName, $expTableData)
{ {
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
$fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
$cellNum = count($expCellName); $cellNum = count($expCellName);
$dataNum = count($expTableData); $dataNum = count($expTableData);
// vendor("PHPExcel.PHPExcel"); // vendor("PHPExcel.PHPExcel");
$objPHPExcel = new PHPExcel(); $objPHPExcel = new PHPExcel();
include_once(__DIR__."/../../vendor/PHPExcel/PHPExcel/IOFactory.php"); include_once(__DIR__."/../../vendor/PHPExcel/PHPExcel/IOFactory.php");
set_time_limit(0);//不对php(主要是写数据)执行时间做限制 set_time_limit(0);//不对php(主要是写数据)执行时间做限制
ini_set("memory_limit", "1024M");//设置内存(防爆内存) ini_set("memory_limit", "1024M");//设置内存(防爆内存)
$cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;//设置缓存策略(减少内存占用) $cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;//设置缓存策略(减少内存占用)
//判断缓存策略是否可用 //判断缓存策略是否可用
if (!\PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) { if (!\PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) {
die($cacheMethod . " 缓存方法不可用" . EOL); die($cacheMethod . " 缓存方法不可用" . EOL);
} }
$cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');
//显示导出名称和导出时间 //显示导出名称和导出时间
// $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 // $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
// $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' 导出时间:'.date('Y-m-d H:i:s')); // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' 导出时间:'.date('Y-m-d H:i:s'));
for($i=0;$i<$cellNum;$i++){ for($i=0;$i<$cellNum;$i++){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'1', $expCellName[$i][1]); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'1', $expCellName[$i][1]);
} }
// Miscellaneous glyphs, UTF-8 // Miscellaneous glyphs, UTF-8
for($i=0;$i<$dataNum;$i++){ for($i=0;$i<$dataNum;$i++){
for($j=0;$j<$cellNum;$j++){ for($j=0;$j<$cellNum;$j++){
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+2), $expTableData[$i][$expCellName[$j][0]]); $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+2), $expTableData[$i][$expCellName[$j][0]]);
} }
} }
header('pragma:public'); header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.csv"'); header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.csv"');
header("Content-Disposition:attachment;filename=$fileName.csv");//attachment新窗口打印inline本窗口打印 header("Content-Disposition:attachment;filename=$fileName.csv");//attachment新窗口打印inline本窗口打印
//输出bom //输出bom
print(chr(0xEF).chr(0xBB).chr(0xBF)); print(chr(0xEF).chr(0xBB).chr(0xBF));
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
$objWriter->save('php://output'); $objWriter->save('php://output');
exit; exit;
} }
// curl // curl
function curlApi($url , $params = array(), $method = 'GET' , $multi = false, $extheaders = array()) function curlApi($url , $params = array(), $method = 'GET' , $multi = false, $extheaders = array())
{ {
if(!function_exists('curl_init')) exit('Need to open the curl extension'); if(!function_exists('curl_init')) exit('Need to open the curl extension');
$method = strtoupper($method); $method = strtoupper($method);
$ci = curl_init(); $ci = curl_init();
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ci, CURLOPT_TIMEOUT, 30); curl_setopt($ci, CURLOPT_TIMEOUT, 30);
curl_setopt($ci, CURLOPT_RETURNTRANSFER, true); curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ci, CURLOPT_HEADER, false); curl_setopt($ci, CURLOPT_HEADER, false);
curl_setopt($ci, CURLOPT_REFERER, $_SERVER['HTTP_HOST']); curl_setopt($ci, CURLOPT_REFERER, $_SERVER['HTTP_HOST']);
$headers = (array)$extheaders; $headers = (array)$extheaders;
switch ($method) switch ($method)
{ {
case 'POST': case 'POST':
curl_setopt($ci, CURLOPT_POST, TRUE); curl_setopt($ci, CURLOPT_POST, TRUE);
if (!empty($params)) if (!empty($params))
{ {
if($multi) if($multi)
{ {
foreach($multi as $key => $file) foreach($multi as $key => $file)
{ {
$params[$key] = '@' . $file; $params[$key] = '@' . $file;
} }
curl_setopt($ci, CURLOPT_POSTFIELDS, $params); curl_setopt($ci, CURLOPT_POSTFIELDS, $params);
$headers[] = 'Expect: '; $headers[] = 'Expect: ';
} }
else else
{ {
curl_setopt($ci, CURLOPT_POSTFIELDS, http_build_query($params)); curl_setopt($ci, CURLOPT_POSTFIELDS, http_build_query($params));
} }
} }
break; break;
case 'DELETE': case 'DELETE':
case 'GET': case 'GET':
$method == 'DELETE' && curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE'); $method == 'DELETE' && curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
if (!empty($params)) if (!empty($params))
{ {
$url = $url . (strpos($url, '?') ? '&' : '?') $url = $url . (strpos($url, '?') ? '&' : '?')
. (is_array($params) ? http_build_query($params) : $params); . (is_array($params) ? http_build_query($params) : $params);
} }
break; break;
} }
curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE ); curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE );
curl_setopt($ci, CURLOPT_URL, $url); curl_setopt($ci, CURLOPT_URL, $url);
if($headers) if($headers)
{ {
curl_setopt($ci, CURLOPT_HTTPHEADER, $headers ); curl_setopt($ci, CURLOPT_HTTPHEADER, $headers );
} }
$response = curl_exec($ci); $response = curl_exec($ci);
curl_close ($ci); curl_close ($ci);
return $response; return $response;
} }
/** /**
* webpower CURL 请求 * webpower CURL 请求
* @param $url * @param $url
* @param $content * @param $content
* @param string $method * @param string $method
* @return mixed * @return mixed
*/ */
function webpower_curl($url, $content, $method= 'post'){ function webpower_curl($url, $content, $method= 'post'){
//username and password //username and password
$username = "xb@ichunt.com"; //短信平台的账号 $username = "xb@ichunt.com"; //短信平台的账号
$password = "Webp0wer"; //短信平台的密码 $password = "Webp0wer"; //短信平台的密码
$data_string = json_encode($content); $data_string = json_encode($content);
$header = array( $header = array(
"Content-Type: application/json", "Content-Type: application/json",
"X-HTTP-Method-Override: $method", "X-HTTP-Method-Override: $method",
"Authorization: Basic " . base64_encode($username . ":" . $password) "Authorization: Basic " . base64_encode($username . ":" . $password)
); );
$ch = curl_init(); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, 0); curl_setopt($ch, CURLOPT_FAILONERROR, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch,CURLOPT_HTTPHEADER, $header); curl_setopt($ch,CURLOPT_HTTPHEADER, $header);
$response = curl_exec($ch); $response = curl_exec($ch);
return $response ? $response : curl_error($ch); return $response ? $response : curl_error($ch);
} }
/** /**
* 接口服务时加密方式 * 接口服务时加密方式
* @param [type] $data [description] * @param [type] $data [description]
* @param [type] $timestamp [description] * @param [type] $timestamp [description]
* @param [type] $key [description] * @param [type] $key [description]
* @return [type] [description] * @return [type] [description]
*/ */
function service_token($data, $timestamp, $key = null) function service_token($data, $timestamp, $key = null)
{ {
$key = is_null($key) ? Config('website.SERVICE_KEY') : $key; $key = is_null($key) ? Config('website.SERVICE_KEY') : $key;
$token = md5($data.$timestamp.$key); $token = md5($data.$timestamp.$key);
return $token; return $token;
} }
/** /**
* 获取客户端IP地址 * 获取客户端IP地址
* @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
* @param boolean $adv 是否进行高级模式获取(有可能被伪装) * @param boolean $adv 是否进行高级模式获取(有可能被伪装)
* @return mixed * @return mixed
*/ */
function get_client_ip($type = 0, $adv = false) function get_client_ip($type = 0, $adv = false)
{ {
$type = $type ? 1 : 0; $type = $type ? 1 : 0;
static $ip = null; static $ip = null;
if (null !== $ip) { if (null !== $ip) {
return $ip[$type]; return $ip[$type];
} }
if ($adv) { if ($adv) {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$pos = array_search('unknown', $arr); $pos = array_search('unknown', $arr);
if (false !== $pos) { if (false !== $pos) {
unset($arr[$pos]); unset($arr[$pos]);
} }
$ip = trim($arr[0]); $ip = trim($arr[0]);
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP']; $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (isset($_SERVER['REMOTE_ADDR'])) { } elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR']; $ip = $_SERVER['REMOTE_ADDR'];
} }
} elseif (isset($_SERVER['REMOTE_ADDR'])) { } elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR']; $ip = $_SERVER['REMOTE_ADDR'];
} }
// IP地址合法验证 // IP地址合法验证
$long = sprintf("%u", ip2long($ip)); $long = sprintf("%u", ip2long($ip));
$ip = $long ? array($ip, $long) : array('0.0.0.0', 0); $ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
return $ip[$type]; return $ip[$type];
} }
// 记录错误日志 // 记录错误日志
function errorLog($err_code, $err_msg) function errorLog($err_code, $err_msg)
{ {
$near_trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); $near_trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
$backtrace = array_pop($near_trace); $backtrace = array_pop($near_trace);
$file = !empty($near_trace[0]['file']) ? $near_trace[0]['file'] : ''; $file = !empty($near_trace[0]['file']) ? $near_trace[0]['file'] : '';
$line = !empty($near_trace[0]['line']) ? $near_trace[0]['line'] : 0; $line = !empty($near_trace[0]['line']) ? $near_trace[0]['line'] : 0;
$method = !empty($backtrace['function']) ? $backtrace['function'] : ''; $method = !empty($backtrace['function']) ? $backtrace['function'] : '';
\LogReport::write(\LogReport::anlyError($err_msg, $file, $line, $err_code, $method)); \LogReport::write(\LogReport::anlyError($err_msg, $file, $line, $err_code, $method));
} }
function Crumbs($menus, $uri) function Crumbs($menus, $uri)
{ {
$actives = []; $actives = [];
CheckActive($menus, $actives, $uri); CheckActive($menus, $actives, $uri);
$ret = ''; $ret = '';
foreach ($actives as $k => $v) { foreach ($actives as $k => $v) {
if ($k == count($actives) - 1) { if ($k == count($actives) - 1) {
$ret .= '<li class="active"><a>' . $menus[$actives[0]]->childs[$actives[1]]->title . '</a></li>'; $ret .= '<li class="active"><a>' . $menus[$actives[0]]->childs[$actives[1]]->title . '</a></li>';
} else { } else {
$ret .= '<li><a href="#">' . $menus[$actives[0]]->title . '</a></li>'; $ret .= '<li><a href="#">' . $menus[$actives[0]]->title . '</a></li>';
} }
} }
return $ret; return $ret;
} }
function CheckActive($menus, &$arr, $url) function CheckActive($menus, &$arr, $url)
{ {
for ($i = 0; $i < count($menus); $i++) { for ($i = 0; $i < count($menus); $i++) {
$menu = $menus[$i]; $menu = $menus[$i];
array_push($arr, $i); array_push($arr, $i);
if (isset($menu->href) && ($menu->href == $url || ($menu->href == '/' && $url == '//'))) if (isset($menu->href) && ($menu->href == $url || ($menu->href == '/' && $url == '//')))
return true; return true;
if (isset($menu->childs) && count($menu->childs) > 0) { if (isset($menu->childs) && count($menu->childs) > 0) {
$ret = CheckActive($menu->childs, $arr, $url); $ret = CheckActive($menu->childs, $arr, $url);
if ($ret) if ($ret)
return $ret; return $ret;
} }
array_pop($arr); array_pop($arr);
} }
return false; return false;
} }
function createMenuReal($menus, $active, $level) function createMenuReal($menus, $active, $level)
{ {
$subclass = ($level == 0) ? 'nav-second-level' : 'nav-third-level'; $subclass = ($level == 0) ? 'nav-second-level' : 'nav-third-level';
$ret = ''; $ret = '';
for ($ii = 0; $ii < ($level == 0 ? 1 : 2); $ii++) { for ($ii = 0; $ii < ($level == 0 ? 1 : 2); $ii++) {
for ($i = 0; $i < count($menus); $i++) { for ($i = 0; $i < count($menus); $i++) {
$menu = $menus[$i]; $menu = $menus[$i];
$act = (count($active) > $level && $active[$level] == $i) ? true : false; $act = (count($active) > $level && $active[$level] == $i) ? true : false;
$actclass = $act ? ' class="active"' : ''; $actclass = $act ? ' class="active"' : '';
$actmenu = $act ? ' in': ''; $actmenu = $act ? ' in': '';
if (isset($menu->childs) && count($menu->childs) > 0) { if (isset($menu->childs) && count($menu->childs) > 0) {
if ($ii != 0 && $level > 0) if ($ii != 0 && $level > 0)
continue; continue;
$ret .= '<li'. $actclass .'><a><i class="' $ret .= '<li'. $actclass .'><a><i class="'
. $menu->class . '"></i><span class="nav-label">' . $menu->class . '"></i><span class="nav-label">'
. $menu->title . '</span><span class="fa arrow"></span></a>' . $menu->title . '</span><span class="fa arrow"></span></a>'
. '<ul class="nav ' . $subclass . ' collapse' . $actmenu . '">' . '<ul class="nav ' . $subclass . ' collapse' . $actmenu . '">'
. createMenuReal($menu->childs, $act ? $active : [], $level + 1) . createMenuReal($menu->childs, $act ? $active : [], $level + 1)
. '</ul></li>'; . '</ul></li>';
} else { } else {
if ($ii != 1 && $level > 0) if ($ii != 1 && $level > 0)
continue; continue;
$ret .= '<li' . $actclass . '><a href="'. $menu->href . '"><i class="' . $ret .= '<li' . $actclass . '><a href="'. $menu->href . '"><i class="' .
$menu->class . '"></i><span class="nav-label">' . $menu->title . '</span></a></li>'; $menu->class . '"></i><span class="nav-label">' . $menu->title . '</span></a></li>';
} }
} }
} }
return $ret; return $ret;
} }
function createMenu($menus, $url) function createMenu($menus, $url)
{ {
$actives = []; $actives = [];
$ret = CheckActive($menus, $actives, $url); $ret = CheckActive($menus, $actives, $url);
if (!$ret) if (!$ret)
$actives = []; $actives = [];
return createMenuReal($menus, $actives, 0); return createMenuReal($menus, $actives, 0);
} }
//过滤数据 //过滤数据
function TrimX($data='',$empty=true,$arr=false){ function TrimX($data='',$empty=true,$arr=false){
if(is_array($data)){ if(is_array($data)){
foreach ($data as $k=>$v){ foreach ($data as $k=>$v){
if(!empty($v) && $v!=0 && !is_array($v)){ if(!empty($v) && $v!=0 && !is_array($v)){
$data[$k]=trim($v); $data[$k]=trim($v);
} }
if($empty==true){ if($empty==true){
if((empty($v) && $v!=0) || $v=='undefined' || $v==null){ if((empty($v) && $v!=0) || $v=='undefined' || $v==null){
unset($data[$k]); unset($data[$k]);
} }
} }
if(is_array($arr) && count($arr)>0 && count($data)>0){ if(is_array($arr) && count($arr)>0 && count($data)>0){
if(!in_array($k,$arr)){ if(!in_array($k,$arr)){
unset($data[$k]); unset($data[$k]);
} }
} }
} }
}else{ }else{
$data=trim($data); $data=trim($data);
} }
return $data; return $data;
} }
/** /**
* 导出CSV文件 * 导出CSV文件
* @param array $data 数据 * @param array $data 数据
* @param array $header_data 首行数据 * @param array $header_data 首行数据
* @param string $file_name 文件名称 * @param string $file_name 文件名称
* @return string * @return string
*/ */
function export_csv($data = [], $header_data = [], $file_name = '') function export_csv($data = [], $header_data = [], $file_name = '')
{ {
set_time_limit(0); set_time_limit(0);
header('Content-Type: application/vnd.ms-excel'); header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename='.$file_name); header('Content-Disposition: attachment;filename='.$file_name);
header('Cache-Control: max-age=0'); header('Cache-Control: max-age=0');
$fp = fopen('php://output', 'a'); $fp = fopen('php://output', 'a');
if (!empty($header_data)) { if (!empty($header_data)) {
foreach ($header_data as $key => $value) { foreach ($header_data as $key => $value) {
$header_data[$key] = iconv('utf-8', 'gbk//TRANSLIT//IGNORE', $value); $header_data[$key] = iconv('utf-8', 'gbk//TRANSLIT//IGNORE', $value);
} }
fputcsv($fp, $header_data); fputcsv($fp, $header_data);
} }
$num = 0; $num = 0;
$limit = 100000; //每隔$limit行,刷新一下输出buffer,不要太大,也不要太小 $limit = 100000; //每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
$count = count($data); //逐行取出数据,不浪费内存 $count = count($data); //逐行取出数据,不浪费内存
if ($count > 0) { if ($count > 0) {
for ($i = 0; $i < $count; $i++) { for ($i = 0; $i < $count; $i++) {
$num++; $num++;
//刷新一下输出buffer,防止由于数据过多造成问题 //刷新一下输出buffer,防止由于数据过多造成问题
if ($limit == $num) { if ($limit == $num) {
ob_flush(); ob_flush();
flush(); flush();
$num = 0; $num = 0;
} }
$row = $data[$i]; $row = $data[$i];
foreach ($row as $key => $value) { foreach ($row as $key => $value) {
$row[$key] = iconv('utf-8', 'gbk//TRANSLIT//IGNORE', $value); $row[$key] = iconv('utf-8', 'gbk//TRANSLIT//IGNORE', $value);
} }
fputcsv($fp, $row); fputcsv($fp, $row);
} }
} }
fclose($fp);exit; fclose($fp);exit;
} }
/* /*
*所有变量转字符串 *所有变量转字符串
*/ */
function changeToStr($str){ function changeToStr($str){
return sprintf("'%s'", $str); return sprintf("'%s'", $str);
} }
/* /*
* 取二维数组某一列的值生成以逗号分隔的字符串,如:$data = ['0'=>['uid'=>'1313','name'=>121],'1'=>['uid'=>'1414','name'=>121]] * 取二维数组某一列的值生成以逗号分隔的字符串,如:$data = ['0'=>['uid'=>'1313','name'=>121],'1'=>['uid'=>'1414','name'=>121]]
转换后变为:arrayTostr($data,'uid') =》1313,1414 转换后变为:arrayTostr($data,'uid') =》1313,1414
* @param array $data 要取值的数组 * @param array $data 要取值的数组
* @param string $s 下标:如 uid * @param string $s 下标:如 uid
* @param string $type 类型,1为控制返回null,2 返回数字 * @param string $type 类型,1为控制返回null,2 返回数字
* @return str * @return str
*/ */
function arrayToCommaStr($data,$col,$type=''){ function arrayToCommaStr($data,$col,$type=''){
switch ($type){ switch ($type){
case 1: //如果计算后的值是空,返回空 case 1: //如果计算后的值是空,返回空
return array_filter(array_column($data,$col)); return array_filter(array_column($data,$col));
break; break;
case 2: case 2:
$arr = array_unique(array_column($data,$col)); $arr = array_unique(array_column($data,$col));
return $res = implode(',',$arr); return $res = implode(',',$arr);
break; break;
case 3: case 3:
$arr = array_filter(array_column($data,$col)); $arr = array_filter(array_column($data,$col));
$res = implode(',',array_map('changeToStr',$arr)); //回调本类中的changeToStr 函数 $res = implode(',',array_map('changeToStr',$arr)); //回调本类中的changeToStr 函数
return $res == "" ? "NULL" : $res; return $res == "" ? "NULL" : $res;
break; break;
default: default:
$arr = array_filter(array_column($data,$col)); $arr = array_filter(array_column($data,$col));
$res = implode(',',array_map('changeToStr',$arr)); //回调本类中的changeToStr 函数 $res = implode(',',array_map('changeToStr',$arr)); //回调本类中的changeToStr 函数
return $res; return $res;
break; break;
} }
} }
/** /**
* 对象转换数组 * 对象转换数组
* *
* @param $e StdClass对象实例 * @param $e StdClass对象实例
* @return array|void * @return array|void
*/ */
function objectToArray($e) function objectToArray($e)
{ {
$e = (array)$e; $e = (array)$e;
foreach ($e as $k => $v) { foreach ($e as $k => $v) {
if (gettype($v) == 'resource') return; if (gettype($v) == 'resource') return;
if (gettype($v) == 'object' || gettype($v) == 'array') if (gettype($v) == 'object' || gettype($v) == 'array')
$e[$k] = (array)objectToArray($v); $e[$k] = (array)objectToArray($v);
} }
return $e; return $e;
} }
// 计算中文字符串长度 // 计算中文字符串长度
function utf8_strlen($string = null) { function utf8_strlen($string = null) {
// 将字符串分解为单元 // 将字符串分解为单元
preg_match_all("/./us", $string, $match); preg_match_all("/./us", $string, $match);
// 返回单元个数 // 返回单元个数
return count($match[0]); return count($match[0]);
} }
//上传文件接口签名 //上传文件接口签名
function Autograph(){ function Autograph(){
$url=Config('website.api_domain'); $url=Config('website.api_domain');
$data['k1']=time(); $data['k1']=time();
$data['k2']=MD5(MD5($data['k1']).Config('website.upload_key')); $data['k2']=MD5(MD5($data['k1']).Config('website.upload_key'));
echo '<script> echo '<script>
k1="'.$data['k1'].'"; k1="'.$data['k1'].'";
k2="'.$data['k2'].'"; k2="'.$data['k2'].'";
UploadImgUrl="'.$url.'" UploadImgUrl="'.$url.'"
</script>'; </script>';
} }
/** /**
* 生成表单token * 生成表单token
* @param [type] $key [表单名,默认为空] * @param [type] $key [表单名,默认为空]
* @param string $prefix [项目名] * @param string $prefix [项目名]
* @return [type] [token] * @return [type] [token]
*/ */
// function getFormToken($key = null, $prefix='order_') // function getFormToken($key = null, $prefix='order_')
// { // {
// if (empty($key)) { // if (empty($key)) {
// $token = $prefix.md5(microtime(true).rand(10000, 99999)); // $token = $prefix.md5(microtime(true).rand(10000, 99999));
// } else { // } else {
// $token = $prefix.$key.'_'.md5(microtime(true).rand(10000, 99999)); // $token = $prefix.$key.'_'.md5(microtime(true).rand(10000, 99999));
// } // }
// // Session::put($token, $token); // 连续点击按钮,并发快的情况下,session里的token删除不及时,会导致多次并发请求 // // Session::put($token, $token); // 连续点击按钮,并发快的情况下,session里的token删除不及时,会导致多次并发请求
// Redis::setex($token, 3600, $token); // 缓存一小时 // Redis::setex($token, 3600, $token); // 缓存一小时
// return $token; // return $token;
// } // }
// // 验证表单token,防止重复提交 // // 验证表单token,防止重复提交
// function validFormToken($token) // function validFormToken($token)
// { // {
// $lock = Redis::set("lock", 1, "nx", "ex", 10); // $lock = Redis::set("lock", 1, "nx", "ex", 10);
// if (Redis::connection('read')->get($token) != $token || !$lock) return false; // if (Redis::connection('read')->get($token) != $token || !$lock) return false;
// Redis::del($token); // Redis::del($token);
// Redis::del("lock"); // Redis::del("lock");
// return true; // return true;
// // if (Session::get($token) != $token) return false; // // if (Session::get($token) != $token) return false;
// // Session::forget($token); // 验证完毕后删除token // // Session::forget($token); // 验证完毕后删除token
// // return true; // // return true;
// } // }
// 读取Redis缓存 // 读取Redis缓存
function S_str($key, $value='') function S_str($key, $value='')
{ {
static $redis = null; static $redis = null;
if ($redis == null) $redis = new \App\Model\RedisModel(); if ($redis == null) $redis = new \App\Model\RedisModel();
if ($value === '') return json_decode($redis->get($key), true); if ($value === '') return json_decode($redis->get($key), true);
return $redis->set($key, $value); return $redis->set($key, $value);
} }
function S_hash($key, $field='', $value='') function S_hash($key, $field='', $value='')
{ {
static $redis = null; static $redis = null;
if ($redis == null) $redis = new \App\Model\RedisModel(); if ($redis == null) $redis = new \App\Model\RedisModel();
if ($value === '') { if ($value === '') {
$data = $field === '' ? $redis->hgetAll($key) : $redis->hget($key, $field); $data = $field === '' ? $redis->hgetAll($key) : $redis->hget($key, $field);
$datas = []; $datas = [];
if (is_array($data)) { if (is_array($data)) {
foreach ($data as $v) { foreach ($data as $v) {
$datas[] = json_decode($v, true); $datas[] = json_decode($v, true);
} }
} else { } else {
$datas = json_decode($data, true); $datas = json_decode($data, true);
} }
return $datas; return $datas;
} }
return $redis->hset($key, $field, $value); return $redis->hset($key, $field, $value);
} }
// curl post // curl post
function post_curl($url, $data, $headers = array(), $cookie ="") function post_curl($url, $data, $headers = array(), $cookie ="")
{ {
$ch = curl_init(); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data); curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_TIMEOUT, 3); curl_setopt($ch, CURLOPT_TIMEOUT, 3);
if (count($headers)){ if (count($headers)){
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
} }
if ($cookie){ if ($cookie){
curl_setopt($ch, CURLOPT_COOKIE, $cookie); curl_setopt($ch, CURLOPT_COOKIE, $cookie);
} }
if (strpos($url, 'https://') !== false) { if (strpos($url, 'https://') !== false) {
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
} }
$output = curl_exec($ch); $output = curl_exec($ch);
curl_close($ch); curl_close($ch);
return $output; return $output;
}
/**
* 判断是否手机
* @param [type] $mobile [description]
* @return boolean [description]
*/
function is_mobile($mobile)
{
if (strstr($mobile, "+")) { // 国际手机
$res = explode("+", $mobile);
if (intval(strlen($res[1])) > 4 && strval($res[0]) !== '0086') {
return true;
}
if (strval(strlen($res[1])) === '11' && strval($res[0]) === '0086') {
return true;
}
} else if (preg_match("/^1[123456789]{1}\d{9}$/", $mobile)) {
return true;
}
return false;
}
// 验证邮编
function is_postcode($str) {
return preg_match('/^[1-9]\d{5}$/', $str) ? true : false;
} }
\ No newline at end of file
...@@ -149,7 +149,7 @@ Route::group(['middleware' => 'web'], function () { ...@@ -149,7 +149,7 @@ Route::group(['middleware' => 'web'], function () {
Route::post('/ajax/batchImportBlackList', 'AddOrderController@batchImportBlackList'); Route::post('/ajax/batchImportBlackList', 'AddOrderController@batchImportBlackList');
Route::post('/address/add', 'AddressController@add');
//bom单 //bom单
Route::match(['get', 'post'],'/ajax/bom/{key}', 'BomApiController@Entrance'); Route::match(['get', 'post'],'/ajax/bom/{key}', 'BomApiController@Entrance');
......
layui.use(['form', 'table', 'element'], function() { layui.config({
base: '/js/' //假设这是你存放拓展模块的根目录
}).use(['form', 'table', 'element', 'region'], function() {
var form = layui.form; var form = layui.form;
var table = layui.table; var table = layui.table;
var element = layui.element; var element = layui.element;
var region = layui.region;
// 公司、账号输入后,检查绑定客服、发票 // 选择发票类型
$('.com_name, .account').blur(function() { form.on('radio(invoice_type)', function(data) {
var com_name = $('.com_name').val(); if (!(data.value)) return false;
var account = $('.account').val();
checkBindUser();
})
// 公司、账号输入后,赋值ID,并检查绑定客服、发票
$('.inv-user-info').blur(function() {
var val = $(this).val();
var type = $(this).data('type'); // 1-公司,2-会员账号
if (!val) return false;
var datax = {};
datax.val = val;
datax.type = type;
$.ajax({
type: "POST",
url: '/api/getUserInfo',
data: datax,
dataType: "json",
success: function(resp){
var field = type == 1 ? 'inv_com_id' : 'user_id';
$('.' + field).val(resp.data);
checkBindUser();
renderTable();
}
})
})
// 检查绑定客服、发票
function checkBindUser(com_id, user_id, invoice_type)
{
var user_id = $('.user_id').val();
var inv_com_id = $('.inv_com_id').val();
var invoice_type = $('input[name=inv_type]:checked').val();
var invoice_type = $('input[name=invoice_type]:checked').val();
if (!invoice_type) return false; if (!invoice_type) return false;
if (!user_id && !inv_com_id) return false;
var datax = {}; var datax = {};
datax.com_name = com_name; datax.com_id = inv_com_id;
datax.account = account; datax.user_id = user_id;
datax.invoice_type = invoice_type; datax.invoice_type = invoice_type;
$.ajax({ $.ajax({
...@@ -42,6 +80,8 @@ layui.use(['form', 'table', 'element'], function() { ...@@ -42,6 +80,8 @@ layui.use(['form', 'table', 'element'], function() {
} }
$('.invoice-section-2').show(); $('.invoice-section-2').show();
$('.invoice-section-3').hide();
$('.invoice-section-4').hide();
$('#user_tax_id').empty().append(str); $('#user_tax_id').empty().append(str);
form.render('select', 'user-tax'); form.render('select', 'user-tax');
...@@ -58,20 +98,26 @@ layui.use(['form', 'table', 'element'], function() { ...@@ -58,20 +98,26 @@ layui.use(['form', 'table', 'element'], function() {
$('.tax_id').val(data.tax_id); $('.tax_id').val(data.tax_id);
$('.invoice-section-3').show(); $('.invoice-section-3').show();
$('.invoice-section-2').hide();
$('.invoice-section-4').hide();
} else if (invoice_type == 4) { // 增值税普票 } else if (invoice_type == 4) { // 增值税普票
$('.tax_title').text(data.tax_title); $('.tax_title').text(data.tax_title);
$('.tax_no').text(data.tax_no); $('.tax_no').text(data.tax_no);
$('.tax_id').val(data.tax_id); $('.tax_id').val(data.tax_id);
$('.invoice-section-4').show(); $('.invoice-section-4').show();
$('.invoice-section-2').hide();
$('.invoice-section-3').hide();
} }
}, },
}) })
}
// 选择个人发票
form.on('select(user_tax_id)', function(data) {
$('.tax_id').val(data.value)
}) })
// 选择销售组织 // 选择销售组织
form.on('select(com_id)', function(data) { form.on('select(com_id)', function(data) {
var val = data.value; var val = data.value;
...@@ -102,10 +148,160 @@ layui.use(['form', 'table', 'element'], function() { ...@@ -102,10 +148,160 @@ layui.use(['form', 'table', 'element'], function() {
$('.delivery_place').val(delivery_place); $('.delivery_place').val(delivery_place);
form.render('select', 'delivery_place'); form.render('select', 'delivery_place');
renderTable();
})
// 选择收货方式
form.on('radio(shipping_type)', function(data) {
if (data.value == 2) { // 自提
$('.address-select').hide();
return false;
}
// 快递
getUserAddress();
})
// 获取快递地址
function getUserAddress()
{
var user_id = $('.user_id').val(); var user_id = $('.user_id').val();
getCartLists(user_id, delivery_place); // 加载购物车列表 if (!user_id) return false;
var datax = {};
datax.user_id = user_id;
$.ajax({
type: "POST",
url: '/api/getUserAddress',
data: datax,
dataType: "json",
success: function(resp){
console.log(resp)
if (resp.errcode == 0) {
var data = resp.data;
var str = '<option value="">请选择</option>';
for(var i = 0; i < data.length; i++) {
str += '<option value="'+data[i].address_id+'" mobile="'+data[i].mobile+'" addr="'+data[i].address+'">'+data[i].consignee+'</option>';
}
$('.address').empty().append(str);
form.render('select', 'user-address');
$('.address-select').show();
return false;
}
},
})
}
// 选择收货地址
form.on('select(address-val)', function(data) {
$('.address_id').val(data.value);
if (!(data.value)) {
$('.address-consignee').text('');
$('.address-mobile').text('');
$('.address-detail').text('');
$('.address-section').hide();
return false;
}
var consignee = $(data.elem).find("option:selected").text();
var mobile = $(data.elem).find("option:selected").attr("mobile");
var addr = $(data.elem).find("option:selected").attr("addr");
$('.address-consignee').text(consignee);
$('.address-mobile').text(mobile);
$('.address-detail').text(addr);
$('.address-section').show();
}) })
// 添加收货地址
$(document).delegate('.add-address', 'click', function() {
var user_id = $('.user_id').val() || 0;
if (!user_id) {
layer.msg('未填写联系方式,无法添加地址');
return false;
}
$('.detail_address').val('');
$('.zipcode').val('');
$('.consignee').val('');
$('.link_mobile').val('');
$('.is_default').prop('checked', false);
form.render('checkbox', 'is_default');
layer.open({
id: 'add-address-pop',
type: 1,
title: '新增收货地址',
area: ['800px'],
content: $('#user-address-pop'),
btn: ['确定', '取消'],
btn1: function(index) {
var provinceObj = $('.layui-layer-content').find('.province');
var cityObj = $('.layui-layer-content').find('.city');
var districtObj = $('.layui-layer-content').find('.district');
var detail_addressObj = $('.layui-layer-content').find('.detail_address');
var zipcodeObj = $('.layui-layer-content').find('.zipcode');
var intl_codeObj = $('.layui-layer-content').find('#intl_code');
var consigneeObj = $('.layui-layer-content').find('.consignee');
var link_mobileObj = $('.layui-layer-content').find('.link_mobile');
$.ajax({
type: 'post',
url: '/address/add',
data: {
user_id: user_id,
province: provinceObj.val()||0,
city: cityObj.val()||0,
district: districtObj.val()||0,
detail_address: detail_addressObj.val()||'',
zipcode: zipcodeObj.val()||'',
intl_code: intl_codeObj.val()||'0086',
consignee: consigneeObj.val()||'',
mobile: link_mobileObj.val(),
is_default: $('input[name="is_default"]').is(':checked') ? 1 : 0,
},
dataType: 'json',
success: function(resp){
if (!resp) {
return layer.msg('网络异常,请稍后再试~');
}
if (resp.errcode != 0) {
layer.msg(resp.errmsg);
return false;
}
layer.close(index);
layer.msg(resp.errmsg);
getUserAddress();
}
});
},
btn2: function(index) {
layer.close(index)
}
});
region.init('#user-address-pop');
form.render('select', 's_region');
})
// 省
form.on('select(s_province)', function(data) {
region.makeRegionHtml(2, data.value);
form.render('select', 's_region');
})
// 市
form.on('select(s_city)', function(data) {
region.makeRegionHtml(3, data.value);
form.render('select', 's_region');
})
// 获取SKU信息 // 获取SKU信息
$('.get-sku').click(function() { $('.get-sku').click(function() {
...@@ -330,229 +526,168 @@ layui.use(['form', 'table', 'element'], function() { ...@@ -330,229 +526,168 @@ layui.use(['form', 'table', 'element'], function() {
form.find('input[type="file"]').trigger('click'); form.find('input[type="file"]').trigger('click');
}) })
// 提交订单
$('.submit-order').off().on('click', function() { $('.submit-order').off().on('click', function() {
var self = $(this); var self = $(this);
var address_id = $('input[name=address_id]').val(); var type = self.data('type'); // 1-联营线上,2-自营线上,3-自营线下,4-自营其他业务
var type = self.data('type'); // 1-联营线上,2-自营线上,3-自营线下,4-自营其他业务 var inv_type = $('input[name=inv_type]:checked').val(); // 开票方式
var cart_ids = []; var inv_com_name = $('.inv_com_name').val();
var user_id = 0; var user_id = $('.user_id').val() || 0;
var remark = $('#remark').val(); // 订单备注 var tax_id = $('.tax_id').val() || 0;
var zy_delivery_type = $('.zy_delivery_type').val() || 0;
if (internal_uid) { var com_id = $('.com_id').val(); // 公司ID
user_id = internal_uid; var com_name = $('.com_id').find("option:selected").text() || ''; // 公司名称
} else { var shipping_type = $('input[name=shipping_type]:checked').val(); // 收货方式
user_id = $('.user_id').val(); var address_id = $('.address_id').val() || 0; // 收货地址
var remark = $('#remark').val() || ''; // 订单备注
var user_coupon_id = $('.user_coupon_id').val() || 0;
if (typeof(inv_type) == 'undefined') {
layer.msg('请选择开票方式');
return false;
}
if ((inv_type == 3 || inv_type == 4) && !inv_com_name) {
layer.msg('请填写发票公司');
return false;
}
if (inv_type && !tax_id) {
layer.msg('请选择发票信息');
return false;
}
if (!user_id) {
layer.msg('用户不存在');
return false;
}
if (!zy_delivery_type) {
layer.msg('请选择发货方式');
return false;
}
if (!com_id) {
layer.msg('请选择销售组织');
return false;
}
if (zy_delivery_type == 1 && typeof(shipping_type) == 'undefined') {
layer.msg('请选择收货方式');
return false;
}
if (zy_delivery_type == 1 && !address_id) {
layer.msg('现货优先发货时,请选择快递上门,并选择收货地址');
return false;
} }
var is_dgk = false; var is_dgk = false;
if ($('.client-info').css('display') == 'block') {
is_dgk = true;
}
$('.shop-table tbody tr').each(function() { if (cart_ids.length == 0) {
var cid = $(this).data('cid'); layer.msg('请先添加商品');
cart_ids.push(cid); return false;
}
var datax = {
type: type,
uid: user_id,
tax_id: tax_id,
zy_delivery_type: zy_delivery_type,
com_id: com_id,
com_name: com_name,
shipping_type: shipping_type,
address_id: address_id,
remark: remark,
user_coupon_id: user_coupon_id,
cart_ids: cart_ids,
}
var supplier_id = $(this).data('sup_id'); if (is_dgk) { // 联营包含digikey商品,则填写终端资料
var supplier_name = $(this).data('sup_name'); var customer_cn = $('.customer_cn').val();
var customer_en = $('.customer_en').val();
var customer_type = $('.customer_type').val();
var product_use_classone_sn = $('.product_use_classone_sn').val();
var product_use_classtwo_sn = $('.product_use_classtwo_sn').val();
var customer_website = $('.customer_website').val();
if (supplier_id == '7' || supplier_name.toString().toLowerCase() == 'digikey') { if (!customer_cn) {
is_dgk = true; layer.msg('请填写终端中文名称');
return false;
} }
})
if (cart_ids.length > 0) { if (customer_type == '') {
var submit = true; layer.msg('请选择客户类型');
var datax = { return false;
uid: user_id,
sale_id: sale_id,
address_id: address_id,
type: type,
cart_ids: cart_ids,
remark: remark,
} }
if (type == 3) { // 自营线下订单 if (customer_type == 1) { // 若客户类型为终端,则外文名称,产品用途和网址为必填
datax.address_name = $('input[name=address_name]').val(); if (!customer_en) {
datax.address_mobile = $('input[name=address_mobile]').val(); layer.msg('请填写终端英文名称');
} else { // 联营、自营线上订单
var tax_id = $('.tax_id').val();
var inv_type = $('input[name=inv_type]:checked').val();
var user_coupon_id = $('.user_coupon_id').val();
var zy_delivery_type = $('.zy_delivery_type').val();
if (!address_id) {
layer.msg('请选择快递信息');
return false; return false;
} }
if (!zy_delivery_type) { var en_reg = /^[a-zA-Z0-9\.\-\s\,\(\)]+$/;
layer.msg('请选择发货方式'); if(!en_reg.test(customer_en)){
layer.msg('请填写全英文名称');
return false; return false;
} }
if ((typeof(inv_type) == 'undefined' || inv_type != '') && !tax_id) { if (product_use_classone_sn == '') {
layer.msg('请选择发票信息'); layer.msg('请选择产品用途一级分类');
return false; return false;
} }
if (type == 4) { // 自营其他业务
var business_type = $('#business_type').val();
datax.business_type = business_type;
datax.role = role; // 自营线上下单添加角色
} else {
// if ((inv_type && !tax_id) || (!tax_id && goods_type == 2)) {
// layer.msg('请选择发票信息');
// return false;
// }
}
if (type == 1 && is_dgk) { // 联营包含digikey商品,则填写终端资料
var customer_cn = $('.customer_cn').val();
var customer_en = $('.customer_en').val();
var customer_type = $('.customer_type').val();
var product_use_classone_sn = $('.product_use_classone_sn').val();
var product_use_classtwo_sn = $('.product_use_classtwo_sn').val();
var customer_website = $('.customer_website').val();
if (!customer_cn) {
layer.msg('请填写终端中文名称');
return false;
}
if (customer_type == '') {
layer.msg('请选择客户类型');
return false;
}
if (customer_type == 1) { // 若客户类型为终端,则外文名称,产品用途和网址为必填
if (!customer_en) {
layer.msg('请填写终端英文名称');
return false;
}
var en_reg = /^[a-zA-Z0-9\.\-\s\,\(\)]+$/;
if(!en_reg.test(customer_en)){
layer.msg('请填写全英文名称');
return false;
}
if (product_use_classone_sn == '') {
layer.msg('请选择产品用途一级分类');
return false;
}
if (!customer_website) { if (!customer_website) {
layer.msg('请填写客户网址'); layer.msg('请填写客户网址');
return false; return false;
}
}
datax.customer_cn = customer_cn;
datax.customer_en = customer_en;
datax.customer_type = customer_type;
datax.product_use_classone_sn = product_use_classone_sn;
datax.product_use_classtwo_sn = product_use_classtwo_sn;
datax.customer_website = customer_website;
} }
}
datax.customer_cn = customer_cn;
datax.customer_en = customer_en;
datax.customer_type = customer_type;
datax.product_use_classone_sn = product_use_classone_sn;
datax.product_use_classtwo_sn = product_use_classtwo_sn;
datax.customer_website = customer_website;
}
var com_id = $('.com_id').val(); // 公司ID $.ajax({
var com_name = $('.com_id').find("option:selected").text(); // 公司名称 type: "POST",
url: '/ajax/create',
data: datax,
dataType: "json",
success: function(resp){
if (resp.errcode == 0) {
layer.msg(resp.errmsg);
location.href = '/addorder/success?order_id='+resp.data.order_id+'&type='+resp.data.type;
return false;
} else if (resp.errcode == 21024) {
layer.alert('该用户已进入公司黑名单,具体请联系吴承义,同时订单无法提交');
return false;
} else if (resp.errcode == 21030) {
layer.alert(resp.errmsg, function() {
var delivery_place = $('.delivery_place').val();
if (!com_id) { loading.lists(user_id, goods_type, is_online, delivery_place); // 加载购物车列表
layer.msg('请选择销售组织'); loading.confirm(user_id, address_id, cart_ids, user_coupon_id, goods_type, is_online); // 确认订单信息
});
return false; return false;
} }
datax.com_id = com_id; layer.alert(resp.errmsg);
datax.com_name = com_name; },
})
datax.tax_id = tax_id;
datax.user_coupon_id = user_coupon_id;
datax.zy_delivery_type = zy_delivery_type;
}
// 自营线上
if (type == 2 && is_online == 1) {
var sale_type = $('#sale_type').val();
var cart_info = [];
$('.shop-table tbody tr').each(function() {
var gid = $(this).find('.goods_id').text();
var num = $(this).find('.goods_num').val();
cart_info.push({'gid':gid, 'num':num});
})
datax.role = role; // 自营线上下单添加角色
$.ajax({
type: "POST",
url: '/ajax/checkStock',
data: {cart_info: JSON.stringify(cart_info), sale_type: sale_type},
dataType: "json",
async: false,
success: function(resp){
if (resp.errcode == -1) {
var data = eval(resp.data);
var content = '<p>'+resp.errmsg+'</p>';
submit = false;
for (var i = 0; i < data.length; i++) {
content += '<p><span>'+(i+1)+'、</span>'+data[i]['goods_name']+',可用库存:'+data[i]['stock']+'</p>';
}
// 弹出提示
layer.open({
area: ['500px', '300px'],
title: '提示信息',
content: content,
btn: [],
});
// self.removeAttr('disabled').css('pointer-events', 'auto');
return false;
}
},
})
}
if (submit) {
$.ajax({
type: "POST",
url: '/ajax/create',
data: datax,
dataType: "json",
success: function(resp){
if (resp.errcode == 0) {
layer.msg(resp.errmsg);
location.href = '/addorder/success?order_id='+resp.data.order_id+'&type='+resp.data.type;
return false;
} else if (resp.errcode == 21024) {
layer.alert('该用户已进入公司黑名单,具体请联系吴承义,同时订单无法提交');
return false;
} else if (resp.errcode == 21030) {
layer.alert(resp.errmsg, function() {
var delivery_place = $('.delivery_place').val();
loading.lists(user_id, goods_type, is_online, delivery_place); // 加载购物车列表
loading.confirm(user_id, address_id, cart_ids, user_coupon_id, goods_type, is_online); // 确认订单信息
});
return false;
}
layer.alert(resp.errmsg);
},
})
layer.msg('订单生成中...', {icon: 16, time: 0, shade: 0.3}); layer.msg('订单生成中...', {icon: 16, time: 0, shade: 0.3});
}
} else {
layer.msg('请先添加商品');
}
}) })
var cart_ids = []; var cart_ids = [];
var renderTable = function () { var renderTable = function () {
table.render({ table.render({
...@@ -584,26 +719,68 @@ layui.use(['form', 'table', 'element'], function() { ...@@ -584,26 +719,68 @@ layui.use(['form', 'table', 'element'], function() {
// ,limit: 10 // ,limit: 10
// ,limits: [10, 20, 50,] // ,limits: [10, 20, 50,]
,done: function(res, curr, count) { ,done: function(res, curr, count) {
if (res.data.length == 0) return false; if (res.data.length == 0) {
$('.carts-info').hide();
return false;
}
$('.carts-info').show(); // 显示商品table
cart_ids = []; cart_ids = [];
for( i=0; i < count; i++){ for( i=0; i < count; i++){
cart_ids.push(res.data[i].cart_id); cart_ids.push(res.data[i].cart_id);
} }
getOrderGift(cart_ids);
var user_id = $('.user_id').val(); var user_id = $('.user_id').val();
var address_id = $('.address_id').val() ? $('.address_id').val() : 0; var address_id = $('.address_id').val() ? $('.address_id').val() : 0;
var user_coupon_id = $('.user_coupon_id').val() ? $('.user_coupon_id').val() : 0; var user_coupon_id = $('.user_coupon_id').val() ? $('.user_coupon_id').val() : 0;
checkSelfMpl(user_id, res.data, count);
getOrderGift(cart_ids);
orderConfirm(user_id, address_id, cart_ids, user_coupon_id); // 确认订单信息 orderConfirm(user_id, address_id, cart_ids, user_coupon_id); // 确认订单信息
} }
}); });
}; };
renderTable(); // 检查自营商品倍数
function checkSelfMpl(user_id, data, count)
{
// 自营商品检查数量
var changeGoods = [];
var self_goods_type = ['3', '4']; // 自营商品类型
for(var i = 0; i < count; i++){
var num = data[i].goods_number;
var mpl = data[i].mpl;
var cart_id = data[i].cart_id;
var goods_id = data[i].goods_id;
var type = data[i].type;
// 自营商品 且 数量与倍数不匹配
if (self_goods_type.indexOf(data[i].goods_type) != -1 && num % mpl != 0) {
num = Math.ceil(num / mpl) * mpl;
$.ajax({
type: "POST",
url: '/ajax/changeNum',
data: {uid: user_id, num: num, cart_id: cart_id, type: type},
dataType: "json",
async: false,
success: function(resp){
if (resp.errcode == 0) {
changeGoods.push(goods_id);
}
},
})
}
}
if (changeGoods.length > 0) {
layer.alert('已按倍数调整购买数量,商品ID:'+changeGoods.join(', '));
renderTable(); // 加载购物车列表
}
}
// 获取赠品信息 // 获取赠品信息
function getOrderGift(cart_ids) function getOrderGift(cart_ids)
...@@ -750,145 +927,7 @@ layui.use(['form', 'table', 'element'], function() { ...@@ -750,145 +927,7 @@ layui.use(['form', 'table', 'element'], function() {
layer.close(index); layer.close(index);
} }
}) })
}); });
// 购物车商品列表
function getCartLists(user_id, delivery_place="1")
{
var user_coupon_id = $('.user_coupon_id').val() ? $('.user_coupon_id').val() : 0;
$.ajax({
type: 'post',
url: '/ajax/cartList',
data: {uid : user_id, delivery_place: delivery_place},
dataType: "json",
success: function(resp){
if (resp.errcode == 0) {
var list = resp.data.list;
var len = list.length;
var html = '';
var order_amount = 0;
var currency = '';
var cart_ids = [];
var cart_gift = resp.data.cart_gift; // 订单赠品信息
if (len == 0) return false;
var buyer = '';
// list = list.reverse();
// 购物车列表
for (var i = len - 1 ; i >= 0; i--) {
html += '<tr data-cid="'+list[i].cart_id+'" data-type="'+list[i].type+'" min_buy="'+list[i].min_buy+'" data-sup_name="'+list[i].supplier_name+'" data-sup_id="'+list[i].supplier_id+'" data-brand_id="'+list[i].brand_id+'" data-brand_name="'+list[i].brand_name+'" data-goods_type="'+list[i].goods_type+'">'+
'<td>'+(len - i)+'</td>'+
'<td class="goods_id">'+list[i].goods_id+'</td>'+
'<td>'+list[i].goods_name+'</td>'+
'<td>'+list[i].brand_name+'</td>';
html += list[i].standard_brand_name ? '<td class="standard-brand-yellow">' : '<td>';
html += '<div class="layui-input-inline" style="width: 75%;"><input type="text" class="layui-input change_standard_brand_name" name="standard_brand_name" value="'+list[i].standard_brand_name+'" readonly /></div><i class="fa fa-exclamation-triangle fa-2x select-standard-brand" aria-hidden="true" data-type=1></i></td>';
var mpl = list[i].mpl ? list[i].mpl : '';
html += '<td><span class="goods_mpl">'+mpl+'</span></td>';
html += '<td><input type="text" class="layui-input goods_num" name="goods_num" value="'+list[i].goods_number+'" data-origin_num="'+list[i].goods_number+'"></td>'+
'<td class="goods_price">'+list[i].goods_price+'</td>'+
'<td class="goods_amount">'+list[i].goods_amount_format+'</td>'+
'<td>'+list[i].delivery_time+'</td>';
html += '<td>'+list[i].supplier_name+'</td>';
buyer = list[i].buyer_id != '0' ? list[i].buyer_id : '';
html += '<td>'+buyer+'</td>';
html += '<td>'+list[i].batch+'</td>';
html += '<td><a class="btn btn-danger btn-xs remove-goods">删除</a></td>'+
'</tr>';
cart_ids.push(list[i].cart_id); // 购物车ID集合
}
$('.shop-lists').show();
$('.shop-table tbody').empty().append(html);
$('#sale_type').val(list[0].sale_type); // 自营线上订单选择销售类型
var address_id = $('.address_id').val();
orderConfirm(user_id, address_id, cart_ids, user_coupon_id); // 确认订单信息
// 自营商品检查数量
var changeGoods = [];
$('.shop-table tbody tr').each(function() {
var goods_id = $(this).find('.goods_id').text();
var num = Number($(this).find('.goods_num').val());
var mpl = Number($(this).find('.goods_mpl').text());
var cart_id = $(this).data('cid');
var type = $(this).data('type');
var curr_goods_type = $(this).data('goods_type');
var self_goods_type = ['3', '4']; // 自营商品类型
// 自营商品 且 数量与倍数不匹配
if (self_goods_type.indexOf(curr_goods_type) != -1 && num % mpl != 0) {
num = Math.ceil(num / mpl) * mpl;
$.ajax({
type: "POST",
url: '/ajax/changeNum',
data: {uid: user_id, num: num, cart_id: cart_id, type: type},
dataType: "json",
async: false,
success: function(resp){
if (resp.errcode == 0) {
changeGoods.push(goods_id);
}
},
})
}
})
if (changeGoods.length > 0) {
layer.alert('已按倍数调整购买数量,商品ID:'+changeGoods.join(', '));
self.lists(user_id, delivery_place); // 加载购物车列表
}
// 赠品信息
if (cart_gift.err_code == 0) {
var gift_len = cart_gift.data.length;
var gift_data = cart_gift.data;
var str = '';
for (var i = 0; i < gift_len; i++) {
str += '<tr>\
<td>'+gift_data[i].activity_id+'</td>\
<td>\
<div class="layer-photos-demo">\
<a><img src="'+gift_data[i].pic+'" width="20" height="20"></a>\
</div>\
</td>\
<td>'+gift_data[i].item_name+'</td>\
<td>'+gift_data[i].num+'</td>\
<td>'+gift_data[i].content+'</td>\
</tr>';
}
$('.gift-table tbody').empty().append(str);
$('.order-gift-info').show();
} else {
$('.order-gift-info').hide();
}
return false;
}
layer.msg(resp.errmsg || '网络异常');
$('.shop-lists').hide();
$('.order-info').hide();
},
});
}
// 选择优惠券 // 选择优惠券
$('#user_coupon').change(function(){ $('#user_coupon').change(function(){
...@@ -966,7 +1005,7 @@ layui.use(['form', 'table', 'element'], function() { ...@@ -966,7 +1005,7 @@ layui.use(['form', 'table', 'element'], function() {
$('.client-info').css('display', 'none'); // 隐藏终端信息 $('.client-info').css('display', 'none'); // 隐藏终端信息
} }
layer.msg(resp.errmsg || '网络异常'); // layer.msg(resp.errmsg || '网络异常');
} }
}) })
} }
......
layui.define(function(exports){ //提示:模块也可以依赖其它模块,如:layui.define('layer', callback);
//行政区域选择
var obj = {
boxOjb: null,
dataCache: {
provinces: null,
citys: null,
towns: null
},
/*
* 初始化
* @param container <string/Object> 行政区域表单容器
*/
init: function(container, provinceId, cityId, districtId){
var self = this;
if ((typeof container).toLowerCase() == 'string') {
self.boxOjb = $(container);
} else {
self.boxOjb = container;
}
self.getRegionData(function(){
self.makeRegionHtml(1, 1, provinceId || 0);
self.makeRegionHtml(2, provinceId || 2, cityId || 0);
self.makeRegionHtml(3, cityId || 52, districtId || 0);
// self.bind();
});
},
getRegionData: function(callback){
var self = this;
if(self.dataCache.provinces) {
if (typeof callback == 'function') {
callback();
}
return false;
}
$.ajax({
type: 'post',
url: '/region/getAll',
dataType: 'json',
async: false,
success: function(resp){
if (!resp) {
return layer.msg('网络异常,请稍后再试~');
}
if (resp.provinces) self.dataCache.provinces = resp.provinces;
if (resp.citys) self.dataCache.citys = resp.citys;
if (resp.towns) self.dataCache.towns = resp.towns;
if (typeof callback == 'function') {
callback();
}
}
})
},
// bind: function(){
// var self = this, parent_id = 0;
// //省份选择事件
// $(self.boxOjb).find('select.s_province').on('change', function(){
// parent_id = $(this).val();
// self.makeRegionHtml(2, parent_id);
// });
// //城市选择事件
// $(self.boxOjb).find('select.s_city').on('change', function(){
// parent_id = $(this).val();
// self.makeRegionHtml(3, parent_id);
// });
// },
makeRegionHtml: function(level, parentId, selectId){
var optionHtml = [], self = this, _data = null, selectName = '', d_parent_id = 0;
switch (level) {
case 1:
selectName = 's_province';
_data = self.dataCache.provinces;
break;
case 2:
selectName = 's_city';
_data = self.dataCache.citys;
break;
case 3:
selectName = 's_county';
_data = self.dataCache.towns;
break;
}
if (_data) {
var item = null, children = null;
for (var i in _data) {
item = _data[i];
if (item && item.parent_id == parentId) {
children = item.children;
optionHtml.push('<option value="0">请选择</option>');
for (var j in children) {
if (!d_parent_id) {
d_parent_id = children[j].region_id;
}
optionHtml.push('<option value="' + children[j].region_id + '">' + children[j].region_name + '</option>');
}
break;
}
}
}
self.boxOjb.find('select.' + selectName + '').html(optionHtml.join(''));
if (level == 2) {
self.makeRegionHtml(3, d_parent_id);
}
if (selectId) self.boxOjb.find('select.' + selectName + '').val(selectId);
}
};
//输出test接口
exports('region', obj);
});
\ No newline at end of file
/** /**
* Created by ICHUNT on 2019-06-03. * Created by ICHUNT on 2019-06-03.
*/ */
$(document).on('mouseenter','.preview',function(){ $(document).on('mouseenter','.preview',function(){
var url=$(this).data('url'); var url=$(this).data('url');
if(!url || url == 'undefined') return false; if(!url || url == 'undefined') return false;
return top.layer.tips('<img src="'+url+'" width="150px">',$(this),{tips:[3,"#fff"],time:0,shade:0}); return top.layer.tips('<img src="'+url+'" width="150px">',$(this),{tips:[3,"#fff"],time:0,shade:0});
}); });
$(document).on('mouseleave','.preview',function(){ $(document).on('mouseleave','.preview',function(){
return top.layer.close(layer.index); return top.layer.close(layer.index);
}); });
/** /**
* 和PHP一样的时间戳格式化函数 * 和PHP一样的时间戳格式化函数
* @param {string} format 格式 * @param {string} format 格式
* @param {int} timestamp 要格式化的时间 默认为当前时间 * @param {int} timestamp 要格式化的时间 默认为当前时间
* @return {string} 格式化的时间字符串 * @return {string} 格式化的时间字符串
*/ */
function date(format, timestamp){ function date(format, timestamp){
if(!timestamp) return ''; if(!timestamp) return '';
var a, jsdate=((timestamp) ? new Date(timestamp*1000) : new Date()); var a, jsdate=((timestamp) ? new Date(timestamp*1000) : new Date());
var pad = function(n, c){ var pad = function(n, c){
if((n = n + "").length < c){ if((n = n + "").length < c){
return new Array(++c - n.length).join("0") + n; return new Array(++c - n.length).join("0") + n;
} else { } else {
return n; return n;
} }
}; };
var txt_weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; var txt_weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var txt_ordin = {1:"st", 2:"nd", 3:"rd", 21:"st", 22:"nd", 23:"rd", 31:"st"}; var txt_ordin = {1:"st", 2:"nd", 3:"rd", 21:"st", 22:"nd", 23:"rd", 31:"st"};
var txt_months = ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var txt_months = ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var f = { var f = {
// Day // Day
d: function(){return pad(f.j(), 2)}, d: function(){return pad(f.j(), 2)},
D: function(){return f.l().substr(0,3)}, D: function(){return f.l().substr(0,3)},
j: function(){return jsdate.getDate()}, j: function(){return jsdate.getDate()},
l: function(){return txt_weekdays[f.w()]}, l: function(){return txt_weekdays[f.w()]},
N: function(){return f.w() + 1}, N: function(){return f.w() + 1},
S: function(){return txt_ordin[f.j()] ? txt_ordin[f.j()] : 'th'}, S: function(){return txt_ordin[f.j()] ? txt_ordin[f.j()] : 'th'},
w: function(){return jsdate.getDay()}, w: function(){return jsdate.getDay()},
z: function(){return (jsdate - new Date(jsdate.getFullYear() + "/1/1")) / 864e5 >> 0}, z: function(){return (jsdate - new Date(jsdate.getFullYear() + "/1/1")) / 864e5 >> 0},
// Week // Week
W: function(){ W: function(){
var a = f.z(), b = 364 + f.L() - a; var a = f.z(), b = 364 + f.L() - a;
var nd2, nd = (new Date(jsdate.getFullYear() + "/1/1").getDay() || 7) - 1; var nd2, nd = (new Date(jsdate.getFullYear() + "/1/1").getDay() || 7) - 1;
if(b <= 2 && ((jsdate.getDay() || 7) - 1) <= 2 - b){ if(b <= 2 && ((jsdate.getDay() || 7) - 1) <= 2 - b){
return 1; return 1;
} else{ } else{
if(a <= 2 && nd >= 4 && a >= (6 - nd)){ if(a <= 2 && nd >= 4 && a >= (6 - nd)){
nd2 = new Date(jsdate.getFullYear() - 1 + "/12/31"); nd2 = new Date(jsdate.getFullYear() - 1 + "/12/31");
return date("W", Math.round(nd2.getTime()/1000)); return date("W", Math.round(nd2.getTime()/1000));
} else{ } else{
return (1 + (nd <= 3 ? ((a + nd) / 7) : (a - (7 - nd)) / 7) >> 0); return (1 + (nd <= 3 ? ((a + nd) / 7) : (a - (7 - nd)) / 7) >> 0);
} }
} }
}, },
// Month // Month
F: function(){return txt_months[f.n()]}, F: function(){return txt_months[f.n()]},
m: function(){return pad(f.n(), 2)}, m: function(){return pad(f.n(), 2)},
M: function(){return f.F().substr(0,3)}, M: function(){return f.F().substr(0,3)},
n: function(){return jsdate.getMonth() + 1}, n: function(){return jsdate.getMonth() + 1},
t: function(){ t: function(){
var n; var n;
if( (n = jsdate.getMonth() + 1) == 2 ){ if( (n = jsdate.getMonth() + 1) == 2 ){
return 28 + f.L(); return 28 + f.L();
} else{ } else{
if( n & 1 && n < 8 || !(n & 1) && n > 7 ){ if( n & 1 && n < 8 || !(n & 1) && n > 7 ){
return 31; return 31;
} else{ } else{
return 30; return 30;
} }
} }
}, },
// Year // Year
L: function(){var y = f.Y();return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0}, L: function(){var y = f.Y();return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0},
//o not supported yet //o not supported yet
Y: function(){return jsdate.getFullYear()}, Y: function(){return jsdate.getFullYear()},
y: function(){return (jsdate.getFullYear() + "").slice(2)}, y: function(){return (jsdate.getFullYear() + "").slice(2)},
// Time // Time
a: function(){return jsdate.getHours() > 11 ? "pm" : "am"}, a: function(){return jsdate.getHours() > 11 ? "pm" : "am"},
A: function(){return f.a().toUpperCase()}, A: function(){return f.a().toUpperCase()},
B: function(){ B: function(){
// peter paul koch: // peter paul koch:
var off = (jsdate.getTimezoneOffset() + 60)*60; var off = (jsdate.getTimezoneOffset() + 60)*60;
var theSeconds = (jsdate.getHours() * 3600) + (jsdate.getMinutes() * 60) + jsdate.getSeconds() + off; var theSeconds = (jsdate.getHours() * 3600) + (jsdate.getMinutes() * 60) + jsdate.getSeconds() + off;
var beat = Math.floor(theSeconds/86.4); var beat = Math.floor(theSeconds/86.4);
if (beat > 1000) beat -= 1000; if (beat > 1000) beat -= 1000;
if (beat < 0) beat += 1000; if (beat < 0) beat += 1000;
if ((String(beat)).length == 1) beat = "00"+beat; if ((String(beat)).length == 1) beat = "00"+beat;
if ((String(beat)).length == 2) beat = "0"+beat; if ((String(beat)).length == 2) beat = "0"+beat;
return beat; return beat;
}, },
g: function(){return jsdate.getHours() % 12 || 12}, g: function(){return jsdate.getHours() % 12 || 12},
G: function(){return jsdate.getHours()}, G: function(){return jsdate.getHours()},
h: function(){return pad(f.g(), 2)}, h: function(){return pad(f.g(), 2)},
H: function(){return pad(jsdate.getHours(), 2)}, H: function(){return pad(jsdate.getHours(), 2)},
i: function(){return pad(jsdate.getMinutes(), 2)}, i: function(){return pad(jsdate.getMinutes(), 2)},
s: function(){return pad(jsdate.getSeconds(), 2)}, s: function(){return pad(jsdate.getSeconds(), 2)},
//u not supported yet //u not supported yet
// Timezone // Timezone
//e not supported yet //e not supported yet
//I not supported yet //I not supported yet
O: function(){ O: function(){
var t = pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4); var t = pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4);
if (jsdate.getTimezoneOffset() > 0) t = "-" + t; else t = "+" + t; if (jsdate.getTimezoneOffset() > 0) t = "-" + t; else t = "+" + t;
return t; return t;
}, },
P: function(){var O = f.O();return (O.substr(0, 3) + ":" + O.substr(3, 2))}, P: function(){var O = f.O();return (O.substr(0, 3) + ":" + O.substr(3, 2))},
//T not supported yet //T not supported yet
//Z not supported yet //Z not supported yet
// Full Date/Time // Full Date/Time
c: function(){return f.Y() + "-" + f.m() + "-" + f.d() + "T" + f.h() + ":" + f.i() + ":" + f.s() + f.P()}, c: function(){return f.Y() + "-" + f.m() + "-" + f.d() + "T" + f.h() + ":" + f.i() + ":" + f.s() + f.P()},
//r not supported yet //r not supported yet
U: function(){return Math.round(jsdate.getTime()/1000)} U: function(){return Math.round(jsdate.getTime()/1000)}
}; };
return format.replace(/[\\]?([a-zA-Z])/g, function(t, s){ return format.replace(/[\\]?([a-zA-Z])/g, function(t, s){
if( t!=s ){ if( t!=s ){
// escaped // escaped
ret = s; ret = s;
} else if( f[s] ){ } else if( f[s] ){
// a date function exists // a date function exists
ret = f[s](); ret = f[s]();
} else{ } else{
// nothing special // nothing special
ret = s; ret = s;
} }
return ret; return ret;
}); });
} }
\ No newline at end of file
...@@ -12,7 +12,11 @@ ...@@ -12,7 +12,11 @@
<link href="/css/detail.css" rel="stylesheet"> <link href="/css/detail.css" rel="stylesheet">
@include('table.css') @include('table.css')
<script src="/js/jquery-2.2.1.js"></script> <script src="/js/jquery-2.2.1.js"></script>
@include('table.js')
<script src="/js/layui/layui.js"></script>
<script src="/js/region.js"></script>
<script src="/js/web/common.js"></script>
<script src="/js/add_order.js?v=<?= time() ?>"></script>
</head> </head>
<body class="body-small"> <body class="body-small">
...@@ -38,10 +42,7 @@ ...@@ -38,10 +42,7 @@
</div> </div>
</div> </div>
@include('table.js')
<script src="/js/layui/layui.js"></script>
<script src="/js/web/common.js"></script>
<script src="/js/add_order.js?v=<?= time() ?>"></script>
</body> </body>
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<div class="layui-input-inline"> <div class="layui-input-inline">
<select name="zy_delivery_type" class="zy_delivery_type" lay-verify="required"> <select name="zy_delivery_type" class="zy_delivery_type" lay-verify="required">
<option value=""></option> <option value=""></option>
<option value="1">现货发货</option> <option value="1">现货优先发货</option>
<option value="2">拼单发货</option> <option value="2">拼单发货</option>
</select> </select>
</div> </div>
...@@ -57,21 +57,26 @@ ...@@ -57,21 +57,26 @@
<label class="layui-form-label">收货方式:</label> <label class="layui-form-label">收货方式:</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" class="radio-invoice-type" name="invoice_type" value="2" title="快递上门"> <input type="radio" class="shipping_type" name="shipping_type" value="1" title="快递上门" lay-filter="shipping_type">
<input type="radio" class="radio-invoice-type" name="invoice_type" value="3" title="自提"> <input type="radio" class="shipping_type" name="shipping_type" value="2" title="自提" lay-filter="shipping_type">
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="layui-row"> <style>
.address-select, .address-section{ display: none; }
</style>
<div class="layui-row address-select">
<div class="layui-col-xs6 layui-col-sm6 layui-col-md6"> <div class="layui-col-xs6 layui-col-sm6 layui-col-md6">
<div class="layui-form-item"> <div class="layui-form-item">
<input type="hidden" name="address_id" class="address_id" value="">
<label class="layui-form-label">收货地址:</label> <label class="layui-form-label">收货地址:</label>
<div class="layui-input-inline"> <div class="layui-input-inline layui-form" lay-filter="user-address">
<select name="address" class="address" lay-verify="required"> <select name="address" class="address" lay-verify="required" lay-filter="address-val">
<option value=""></option>
</select> </select>
</div> </div>
...@@ -101,4 +106,83 @@ ...@@ -101,4 +106,83 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<style>
#user-address-pop{ display: none; margin: 20px 0px; }
#user-address-pop input{ width: 200px; }
.link_mobile{ width: 193px !important; }
#add-address-pop{ overflow: visible; }
</style>
<div id="user-address-pop">
<form class="layui-form address-form" id="address-form">
<div class="layui-row">
<div class="form-form-item layui-form" lay-filter="s_region">
<label class="layui-form-label"><i class="text-danger">*</i> 所在地区</label>
<div class="layui-input-inline">
<select name="province" class="s_province province" lay-filter="s_province"></select>
</div>
<div class="layui-input-inline">
<select name="city" class="s_city city" lay-filter="s_city"></select>
</div>
<div class="layui-input-inline">
<select name="district" class="s_county district"></select>
</div>
</div>
</div>
<div class="layui-row" style="margin-bottom: 5px;">
<div class="form-form-item layui-form-text">
<label class="layui-form-label"><i class="text-danger">*</i> 详细地址</label>
<div class="layui-input-inline">
<textarea class="layui-textarea detail_address" name="detail_address" cols="80" autocomplete="off"></textarea>
</div>
</div>
</div>
<div class="layui-row">
<div class="form-form-item">
<label class="layui-form-label">邮政编码</label>
<div class="layui-input-inline">
<input type="text" class="layui-input zipcode" name="zipcode" autocomplete="off">
</div>
</div>
</div>
<div class="layui-row">
<div class="form-form-item">
<label class="layui-form-label"><i class="text-danger">*</i> 收货人</label>
<div class="layui-input-inline">
<input type="text" class="layui-input consignee" name="consignee" autocomplete="off">
</div>
</div>
</div>
<div class="layui-row">
<div class="form-form-item">
<label class="layui-form-label"><i class="text-danger">*</i> 联系电话</label>
<div class="layui-input-inline">
<select name="intl_code" id="intl_code" style="float: left;">
<option value="0086">0086 (中国)</option>
<option value="00852">00852 (香港)</option>
<option value="00853">00853 (澳门)</option>
<option value="00886">00886 (台湾)</option>
</select>
</div>
<div class="layui-input-inline">
<input type="text" class="layui-input link_mobile" name="link_mobile" autocomplete="off">
</div>
</div>
</div>
<div class="layui-row">
<div class="form-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-inline layui-form" lay-filter="is_default">
<input type="checkbox" class="layui-input is_default" name="is_default" title="设为默认地址">
</div>
</div>
</div>
</form>
</div> </div>
\ No newline at end of file
...@@ -2,12 +2,13 @@ ...@@ -2,12 +2,13 @@
.addOrder .layui-colla-title{ margin-top: 0px; margin-bottom: 0px; } .addOrder .layui-colla-title{ margin-top: 0px; margin-bottom: 0px; }
.addOrder .layui-form-item{ margin-bottom: 0px; } .addOrder .layui-form-item{ margin-bottom: 0px; }
.addOrder label{ width: 110px; } .addOrder label{ width: 110px; }
.addOrder span{ line-height: 35px; } .addOrder span{ line-height: 37px; }
.invoice-section, .address-section{ border: 1px solid #ccc; } .invoice-section, .address-section{ border: 1px solid #ccc; }
.invoice-section-2, .invoice-section-3, .invoice-section-4{ display: none; } .invoice-section-2, .invoice-section-3, .invoice-section-4{ display: none; }
</style> </style>
<input type="hidden" name="user_id" class="user_id" value=""> <input type="hidden" name="user_id" class="user_id" value="">
<input type="hidden" name="inv_com_id" class="inv_com_id" value="">
<div class="layui-collapse addOrder"> <div class="layui-collapse addOrder">
<form class="layui-form layui-box quoteForm" method="post"> <form class="layui-form layui-box quoteForm" method="post">
...@@ -18,7 +19,7 @@ ...@@ -18,7 +19,7 @@
</div> </div>
</div> </div>
<div class="layui-colla-item"> <div class="layui-colla-item address-info">
<h2 class="layui-colla-title">收货信息</h2> <h2 class="layui-colla-title">收货信息</h2>
<div class="layui-colla-content layui-show"> <div class="layui-colla-content layui-show">
@include('addOrder.addressInfo') @include('addOrder.addressInfo')
...@@ -39,7 +40,14 @@ ...@@ -39,7 +40,14 @@
</div> </div>
</div> </div>
<div class="layui-colla-item order-info1"> <div class="layui-colla-item client-info">
<h2 class="layui-colla-title">终端客户信息</h2>
<div class="layui-colla-content layui-show">
@include('addOrder.dgkInfo')
</div>
</div>
<div class="layui-colla-item order-info">
<h2 class="layui-colla-title">订单信息</h2> <h2 class="layui-colla-title">订单信息</h2>
<div class="layui-colla-content layui-show"> <div class="layui-colla-content layui-show">
@include('addOrder.orderInfo') @include('addOrder.orderInfo')
......
<style>
.client-info label{ width: 150px; }
</style>
<div class="layui-row">
<div class="layui-col-xs6 layui-col-sm6 layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label"><i class="text-danger">*</i> 终端中文名称:</label>
<div class="layui-input-inline">
<input type="text" class="layui-input customer_cn" name="customer_cn" value="" autocomplete="off">
</div>
</div>
</div>
<div class="layui-col-xs6 layui-col-sm6 layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label"><i class="text-danger">*</i> 客户类型:</label>
<div class="layui-input-inline">
<select class="form-control customer_type" name="customer_type">
<option value="">请选择</option>
@if (Config('params.end_user_type'))
@foreach (Config('params.end_user_type') as $k => $v)
<option value="{{ $k }}">{{ $v }}</option>
@endforeach
@endif
</select>
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-xs6 layui-col-sm6 layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label"><i class="text-danger">*</i> 终端英文名称:</label>
<div class="layui-input-inline">
<input type="text" class="layui-input customer_en" name="customer_en" value="" autocomplete="off">
</div>
<div class="layui-form-mid">
<a href="https://translate.google.cn/" target="_blank">谷歌翻译</a>
</div>
</div>
</div>
<div class="layui-col-xs6 layui-col-sm6 layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label"><i class="text-danger">*</i> 产品用途:</label>
<div class="layui-input-inline">
<select class="form-control product_use_classone_sn" name="product_use_classone_sn">
<option value="">请选择</option>
</select>
</div>
<div class="layui-input-inline">
<select class="form-control product_use_classtwo_sn" name="product_use_classtwo_sn"></select>
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-xs6 layui-col-sm6 layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label"><i class="text-danger">*</i> 客户网址:</label>
<div class="layui-input-inline">
<input type="text" class="layui-input customer_website" name="customer_website" value="" autocomplete="off">
</div>
</div>
</div>
</div>
<script>
window.api_dgk_url_text ="<?php echo $api_dgk_url;?>"
setTimeout( function(){
$.get(window.api_dgk_url_text,function(data){
window.data = data.data.data
console.log(window.data)
var product = Object.keys(window.data); // 获取一级分类
var product_len = Object.keys(window.data).length
for(var i = 0; i < product_len; i++){
$('.product_use_classone_sn').append('<option value="'+i+'">'+product[i]+'</option>')
}
},'json')
}, 10)
$(document).on('change','.product_use_classone_sn',function(data){
var select_key = $('.product_use_classone_sn option:selected').text();
$('.product_use_classtwo_sn').html('');
for(let key in window.data){
if(key == select_key){
for(var i = 0; i < window.data[key].length; i++){
$('.product_use_classtwo_sn').append('<option value="'+i+'">'+window.data[key][i]+'</option>')
}
}
}
})
</script>
...@@ -94,6 +94,9 @@ ...@@ -94,6 +94,9 @@
<a class="btn btn-success add-to-lists">添加至商品列表</a> <a class="btn btn-success add-to-lists">添加至商品列表</a>
</div> </div>
<style>
.carts-info{ display: none; }
</style>
<!-- 商品列表 --> <!-- 商品列表 -->
<div class="carts-info"> <div class="carts-info">
<table id="list" lay-filter="list"></table> <table id="list" lay-filter="list"></table>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<label class="layui-form-label">选择优惠券:</label> <label class="layui-form-label">选择优惠券:</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<select name="user_coupon" id="user_coupon"> <select name="user_coupon" id="user_coupon" class="form-control">
<option value="">请选择</option> <option value="">请选择</option>
</select> </select>
</div> </div>
......
...@@ -6,10 +6,10 @@ ...@@ -6,10 +6,10 @@
<label class="layui-form-label">开票方式:</label> <label class="layui-form-label">开票方式:</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" class="radio-invoice-type" name="invoice_type" value="3" title="增值税专用发票"> <input type="radio" class="radio-invoice-type" name="inv_type" value="3" title="增值税专用发票" lay-filter="invoice_type">
<input type="radio" class="radio-invoice-type" name="invoice_type" value="4" title="增值税普通发票"> <input type="radio" class="radio-invoice-type" name="inv_type" value="4" title="增值税普通发票" lay-filter="invoice_type">
<input type="radio" class="radio-invoice-type" name="invoice_type" value="" title="不开发票"> <input type="radio" class="radio-invoice-type" name="inv_type" value="" title="不开发票" lay-filter="invoice_type">
<input type="radio" class="radio-invoice-type" name="invoice_type" value="2" title="个人"> <input type="radio" class="radio-invoice-type" name="inv_type" value="2" title="个人" lay-filter="invoice_type">
</div> </div>
</div> </div>
</div> </div>
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<label class="layui-form-label">发票/公司:</label> <label class="layui-form-label">发票/公司:</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" name="com_name" required lay-verify="" placeholder="请输入公司" autocomplete="off" class="layui-input com_name"> <input type="text" name="com_name" required lay-verify="" placeholder="请输入公司" autocomplete="off" class="layui-input inv_com_name inv-user-info" data-type="1">
</div> </div>
</div> </div>
</div> </div>
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<label class="layui-form-label">联系方式:</label> <label class="layui-form-label">联系方式:</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" name="account" required lay-verify="required" placeholder="请输入联系方式" autocomplete="off" class="layui-input account"> <input type="text" name="account" required lay-verify="required" placeholder="请输入联系方式" autocomplete="off" class="layui-input inv-user-info" data-type="2">
</div> </div>
</div> </div>
</div> </div>
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
<label class="layui-form-label">选择个人发票:</label> <label class="layui-form-label">选择个人发票:</label>
<div class="layui-input-inline layui-form" lay-filter="user-tax"> <div class="layui-input-inline layui-form" lay-filter="user-tax">
<select name="user_tax_id" id="user_tax_id"> <select name="user_tax_id" id="user_tax_id" lay-filter="user_tax_id">
</select> </select>
</div> </div>
......
<link href="/css/bootstrap.min.css" rel="stylesheet"> <link href="/css/bootstrap.min.css" rel="stylesheet">
<link href="/font-awesome/css/font-awesome.css" rel="stylesheet"> <link href="/font-awesome/css/font-awesome.css" rel="stylesheet">
<link href="/css/style.css" rel="stylesheet"> <link href="/css/style.css" rel="stylesheet">
<style> <style>
.well .form-group { .well .form-group {
margin-right: 0px; margin-right: 0px;
margin-left: 0px; margin-left: 0px;
} }
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment