fix: bug修复

This commit is contained in:
2024-10-29 17:38:47 +08:00
parent 48bf3e6f33
commit 260c1f052d
33 changed files with 1032 additions and 664 deletions

View File

@@ -15,6 +15,8 @@ class BaseController extends Base {
//当前是否管理员 0:否 1:是
protected $administrator = 0;
protected $adminlang;
protected $country_code;
public function __construct() {
parent::__construct();
}

View File

@@ -13,6 +13,8 @@ class Product extends BaseController {
private $saveDirectory = 'default';
private $config; //配置信息
private $docDir;
private $rootDir;
public function __construct() {
parent::__construct();
date_default_timezone_set("Asia/Shanghai");
@@ -648,7 +650,7 @@ class Product extends BaseController {
foreach($productAttr[$key]['type'] as $kt => $attrValue ) {
//echo $attrValue."<pre>*****"; print_r($productAttr[$key]['sort']);
$arrribute[$kt] = array(
$data['product_attr'][$kt] => $attrValue,
$data['product_attr'][$kt] => trim($attrValue),
'sort'=> isset($productAttr[$key]['sort'][$kt]) ? $productAttr[$key]['sort'][$kt]: ''
);
@@ -694,7 +696,7 @@ class Product extends BaseController {
'product_id' => $last_insert_id,
'image_url' => isset($product_image['image_url']) ? $product_image['image_url'] : '',
'image_bk_color' => isset($product_image['image_bkcolor']) ? $product_image['image_bkcolor'] : '',
'image_color' => isset($product_image['image_color']) ? $product_image['image_color'] : '',
'image_color' => isset($product_image['image_color']) ? trim($product_image['image_color']) : '',
'original_url' => isset($product_image['image_url']) ? $product_image['image_url'] : '',
'country_code' => $this->country_code
);
@@ -821,9 +823,8 @@ class Product extends BaseController {
foreach($productImages as $color => $att_item) {
$product_images[] = $att_item;
}
//echo "<pre>-------"; print_r($product_images); die;
unset($tmp_product_images);
// tiaoshi($product_images);die;
@@ -831,7 +832,7 @@ class Product extends BaseController {
$value['product_images'] = $product_images;
$value['product_two_img'] = model('product_two_img')->getList(array('product_id'=> $product['id']),['id' => 'asc',]);//print_r($value['product_product']);die;
//$value['product_bkimg'] = model('product_bk_img')->getList(array('product_id'=> $product['id']),['id' => 'asc',]);//print_r($value['product_bkimg']);die;
//$value['product_bkimg'] = model('product_bk_img')->getList(array('product_id'=> $product['id']),['id' => 'asc',]);
$value['product_dls'] = model('product_dl')->getList(array('product_id' => $product['id']), ['dl_sort' => 'asc', 'id' => 'asc',]);
$value['product_relateds'] = model('product')->getRelatedProductList(array('pr.product_id' => $product['id']), ['pr.related_sort' => 'asc', 'pr.id' => 'asc',], ['p.id' => 'id', 'p.name', 'pr.id' => 'related_id', 'pr.related_product_id', 'pr.related_sort', 'pr.related_desc']);
// tiaoshi($value['product_images']);die;
@@ -1047,7 +1048,7 @@ class Product extends BaseController {
foreach($productAttr[$key]['type'] as $kt => $attrValue ) {
$arrribute[$kt] = array(
$data['product_attr'][$kt] => $attrValue,
$data['product_attr'][$kt] => trim($attrValue),
'sort'=> isset($productAttr[$key]['sort']) ? $productAttr[$key]['sort'][$kt]: ''
);
@@ -1082,8 +1083,8 @@ class Product extends BaseController {
$product_image_list[$product_image_id] = array('sign' => 'update', 'where' => array('id' => $product_image_id), 'data' => array(
'product_id' => $last_update_id,
'image_url' => $product_image['image_url'],
'image_bk_color' => isset( $product_image['image_bkcolor']) ? $product_image['image_bkcolor'] : '',
'image_color' => isset($product_image['image_color']) ? $product_image['image_color']: '',
'image_bk_color' => isset($product_image['image_bkcolor']) ? $product_image['image_bkcolor'] : '',
'image_color' => isset($product_image['image_color']) ? trim($product_image['image_color']) : '',
'original_url' => $product_image['image_url'],
));
} else {
@@ -1091,12 +1092,13 @@ class Product extends BaseController {
'product_id' => $last_update_id,
'image_url' => $product_image['image_url'],
'image_bk_color' => isset($product_image['image_bkcolor']) ? $product_image['image_bkcolor'] : '',
'image_color' => isset($product_image['image_color']) ? $product_image['image_color']: '',
'image_color' => isset($product_image['image_color']) ? trim($product_image['image_color']) : '',
'original_url' => $product_image['image_url'],
));
}
//$imageModel->insertRow($image);
}
foreach ($product_image_list as $product_image_id => $image) {
if ($image['sign'] == 'insert') {
$imageModel->insertRow($image['data']);
@@ -1106,6 +1108,8 @@ class Product extends BaseController {
$imageModel->deleteRow($image['where']);
}
}
} else {
model('product_two_img')->deleteRow(['product_id' => $last_update_id]);
}
/* 二级列表主图片 end */
@@ -1591,13 +1595,13 @@ class Product extends BaseController {
$arg_order = ['a.id' => 'desc'];
$arg_field = ['a.*', 'c.id' => 'categoryid', 'c.name' => 'categoryname'];
foreach ($id as $where ){
foreach ($id as $where) {
$where = [
'a.id'=>$where,
'a.stat'=>0,
'a.id' => $where,
'a.stat' => 0,
'a.country_code' => $this->country_code
];
$result = model('product')->getProductLists($where,$arg_order,$arg_field,12);
];
$result = model('product')->getProductLists($where, $arg_order, $arg_field, 12);
}
$this->assign($result);
@@ -1711,7 +1715,9 @@ class Product extends BaseController {
}
$arg_order = ['c.sort' => 'asc', 'c.id' => 'asc'];
$arg_field = array_map(function($value) {return 'a.' . $value;}, array_keys($fields));
$arg_field = array_map(function ($value) {
return 'a.' . $value;
}, array_keys($fields));
$arg_field['c.id'] = 'categoryid';
$arg_field['c.name'] = 'categoryname';
$arg_field['c.pid'] = 'pid';
@@ -2592,7 +2598,7 @@ class Product extends BaseController {
mysqli_query($con, $sql);
}
}
} catch (Exception $e) {
} catch (\Exception $e) {
return $this->json(-1, $e->getMessage());
}

View File

@@ -49,6 +49,9 @@ class ProductCategory extends BaseController
$max_unique_id = \think\db::query($sql)[0]['unique_id'];
$value = ['categoryOptions' => $categoryOptions, 'pid' => $pid, 'max_unique_id' => $max_unique_id];
$tcoCategory = \think\Db::name('product_tco_category')->where('id', '>', 0)->where('country_code', '=', $this->country_code)->select();
$value['tcoCategoryOptions'] = $this->buildTcoCategoryToTree($tcoCategory, 0, 0, 0);
$this->assign($value);
return $this->fetch();
}

View File

@@ -1,4 +1,5 @@
<?php
namespace app\admin\controller;
use PHPExcel;
@@ -41,7 +42,7 @@ class ProductPurchaseLinks extends BaseController
->order('links.id', 'sort')
->group('links.product_id')
->paginate(10);
$data = [];
foreach ($list as $val) {
if (empty($data[$val['spu']])) {
@@ -49,7 +50,6 @@ class ProductPurchaseLinks extends BaseController
$data[$val['spu']] = $val;
}
}
if (!$list->isEmpty()) {
$others = Db::name('product_purchase_links')->alias('links')
->field([
@@ -75,7 +75,7 @@ class ProductPurchaseLinks extends BaseController
}
}
}
$this->assign('list', $data);
$this->assign('page', $list->render());
@@ -160,7 +160,7 @@ class ProductPurchaseLinks extends BaseController
$rows = $sheet->getHighestRow(); //总行数
$xlsx = [];
for($i = 2; $i <= $rows; $i++) {
for ($i = 2; $i <= $rows; $i++) {
// $xlsx[行号] = 数据
$xlsx[$i] = [
'spu' => $sheet->getCellByColumnAndRow(0, $i)->getValue(),
@@ -171,7 +171,7 @@ class ProductPurchaseLinks extends BaseController
// 错误提示
$errors = [];
// 验证成功数据
$valid_data = [];
@@ -272,7 +272,7 @@ class ProductPurchaseLinks extends BaseController
])
->join('product_purchase_link_platforms platforms', 'platforms.id=links.platform_id')
->join('product', 'product.id=links.product_id')
->where(function($query) {
->where(function ($query) {
$query->where('product.is_show', '=', 0)->where('links.country_code', '=', $this->country_code);
if (request()->has('skeyword')) {
$query->where(function ($q) {

0
app/admin/controller/ProductSeries.php Normal file → Executable file
View File

View File

@@ -222,10 +222,10 @@ class ReceiveSync extends Base
$record['cid'] = $category_id;
}
}
// 不更新产品名称
unset($record['name']);
$record['updatetime'] = time();
$ok = $query->name('product')->where('id', '=', $mp['id'])->update($record);
if (!$ok) {

View File

@@ -8,13 +8,17 @@ use think\Config;
use image\Image;
use pagination\Pagination;
class Webuploader extends BaseController {
class Webuploader extends BaseController
{
private $docDir = '';
private $rootDir = '';
private $basePath = '/';
private $saveDirectory = 'default';
private $num = '10';
public function __construct() {
public function __construct()
{
parent::__construct();
date_default_timezone_set("Asia/Shanghai");
$this->docDir = $this->request->server('DOCUMENT_ROOT');
@@ -26,7 +30,8 @@ class Webuploader extends BaseController {
header("Content-Type: text/html; charset=utf-8");
}
public function show() {
public function show()
{
$filter_name = $this->request->get('filter_name', '', 'urldecode');
if (!empty($filter_name)) {
$filter_name = trim(str_replace(['/../', '../', '*'], '', $filter_name), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
@@ -110,7 +115,11 @@ class Webuploader extends BaseController {
$path = mb_substr($image, mb_strlen($this->docDir . $this->rootDir));
$ext = strtolower(pathinfo($image, PATHINFO_EXTENSION));
switch ($ext) {
case 'jpg': case 'png': case 'gif': case 'bmp': case 'jpeg':
case 'jpg':
case 'png':
case 'gif':
case 'bmp':
case 'jpeg':
$data['images'][] = array(
'thumb' => $path,
'name' => implode(' ', $name),
@@ -119,7 +128,11 @@ class Webuploader extends BaseController {
'href' => $this->request->domain() . $path
);
break;
case 'html': case 'htm': case 'js': case 'php': case 'txt':
case 'html':
case 'htm':
case 'js':
case 'php':
case 'txt':
$data['images'][] = array(
'thumb' => $path,
'name' => implode(' ', $name),
@@ -128,7 +141,13 @@ class Webuploader extends BaseController {
'href' => 'javascript:void(0);'
);
break;
case 'avi': case 'mp4': case 'rmvb': case 'mkv': case 'wmv': case 'ogg': case 'webm':
case 'avi':
case 'mp4':
case 'rmvb':
case 'mkv':
case 'wmv':
case 'ogg':
case 'webm':
$data['images'][] = array(
'thumb' => $path,
'name' => implode(' ', $name),
@@ -137,7 +156,13 @@ class Webuploader extends BaseController {
'href' => 'javascript:void(0);'
);
break;
case 'zip': case 'rar': case 'gz': case 'tar': case 'tgz': case 'gz': case 'iso':
case 'zip':
case 'rar':
case 'gz':
case 'tar':
case 'tgz':
case 'gz':
case 'iso':
$data['images'][] = array(
'thumb' => $path,
'name' => implode(' ', $name),
@@ -203,13 +228,14 @@ class Webuploader extends BaseController {
return $this->fetch();
}
public function modal() {
public function modal()
{
$relativepath = $this->request->get('directory', '', 'urldecode');
if (!empty($relativepath)) {
$relativepath = trim(str_replace(['/../', '../', '*'], '', $relativepath), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
}
$func = $this->request->get('func', 'undefined');
$num = $this->num;
$num = $this->request->get('num', $this->num);
$type = $this->request->get('type', '');
$target = $this->request->get('target', '');
$thumb = $this->request->get('thumb', '');
@@ -252,14 +278,15 @@ class Webuploader extends BaseController {
return $this->fetch();
}
public function uploadiframe() {
public function uploadiframe()
{
$relativepath = $this->request->get('directory', '', 'urldecode');
if (!empty($relativepath)) {
$relativepath = trim(str_replace(['/../', '../', '*'], '', $relativepath), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
}
$func = $this->request->get('func', 'undefined');
//$num = $this->request->get('num/d', 1);
$num = $this->num;
$num = $this->request->get('num', $this->num);
$type = $this->request->get('type', '');
$target = $this->request->get('target', '');
$thumb = $this->request->get('thumb', '');
@@ -295,21 +322,24 @@ class Webuploader extends BaseController {
return str_replace(array_keys($tpl_replace_string), array_values($tpl_replace_string), $content);
}
public function imageupload() {
public function imageupload()
{
// 上传图片框中的描述表单名称,
$title = $this->request->get('pictitle');
$relativepath = $this->request->get('directory', '', 'urldecode');
if (!empty($relativepath)) {
$relativepath = trim(str_replace(['/../', '../', '*'], '', $relativepath), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
}
$this->saveDirectory = $relativepath? : 'default';
$this->saveDirectory = $relativepath ?: 'default';
// 获取表单上传文件 例如上传了001.jpg
$file = request()->file('file');
// if (empty($file))
// $file = request()->file('upfile');
// if (empty($file))
// $file = request()->file('upfile');
$image_upload_limit_size = Config::get('image_upload_limit_size');
$result = $this->validate(
['file' => $file], ['file' => 'image|fileSize:' . $image_upload_limit_size . '|fileExt:jpg,jpeg,gif,png'], ['file.image' => '上传文件必须为图片', 'file.fileSize' => '上传文件过大', 'file.fileExt' => '上传文件后缀名必须为jpg,jpeg,gif,png']
['file' => $file],
['file' => 'image|fileSize:' . $image_upload_limit_size . '|fileExt:jpg,jpeg,gif,png'],
['file.image' => '上传文件必须为图片', 'file.fileSize' => '上传文件过大', 'file.fileExt' => '上传文件后缀名必须为jpg,jpeg,gif,png']
);
if (true !== $result || !$file) {
$state = "ERROR " . $result;
@@ -332,25 +362,27 @@ class Webuploader extends BaseController {
$return_data['original'] = ''; // 这里好像没啥用 暂时注释起来
$return_data['state'] = $state;
$return_data['directory'] = $this->saveDirectory;
echo json_encode($return_data);
exit;
return json_encode($return_data);
}
public function fileupload() {
public function fileupload()
{
// 上传图片框中的描述表单名称,
$title = $this->request->get('pictitle');
$relativepath = $this->request->get('directory', '', 'urldecode');
if (!empty($relativepath)) {
$relativepath = trim(str_replace(['/../', '../', '*'], '', $relativepath), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
}
$this->saveDirectory = $relativepath? : 'default';
$this->saveDirectory = $relativepath ?: 'default';
// 获取表单上传文件 例如上传了001.jpg
$file = request()->file('file');
// if (empty($file))
// $file = request()->file('upfile');
// if (empty($file))
// $file = request()->file('upfile');
$file_upload_limit_size = Config::get('file_upload_limit_size');
$result = $this->validate(
['file' => $file], ['file' => 'fileSize:' . $file_upload_limit_size], ['file.fileSize' => '上传文件过大']
['file' => $file],
['file' => 'fileSize:' . $file_upload_limit_size],
['file.fileSize' => '上传文件过大']
);
if (true !== $result || !$file) {
$state = "ERROR " . $result;
@@ -377,12 +409,13 @@ class Webuploader extends BaseController {
删除上传的图片
*/
public function deluploadimage() {
public function deluploadimage()
{
$action = $this->request->get('action', 'del');
$filename = $this->request->get('filename');
$filename = empty($filename) ? $this->request->get('url') : $filename;
// $filename = str_replace('../', '', $filename);
// $filename = trim($filename, "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
// $filename = str_replace('../', '', $filename);
// $filename = trim($filename, "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
$filename = trim(str_replace('../', '', $filename), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
$filename = './' . $filename;
if ($action == 'del' && !empty($filename) && is_file($filename)) {
@@ -404,12 +437,13 @@ class Webuploader extends BaseController {
删除上传的文件
*/
public function deluploadfile() {
public function deluploadfile()
{
$action = $this->request->get('action', 'del');
$filename = $this->request->get('filename');
$filename = empty($filename) ? $this->request->get('url') : $filename;
// $filename = str_replace('../', '', $filename);
// $filename = trim($filename, "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
// $filename = str_replace('../', '', $filename);
// $filename = trim($filename, "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
$filename = trim(str_replace('../', '', $filename), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
$filename = './' . $filename;
if ($action == 'del' && !empty($filename) && is_file($filename)) {
@@ -422,7 +456,8 @@ class Webuploader extends BaseController {
exit;
}
public function preview() {
public function preview()
{
// 此页面用来协助 IE6/7 预览图片,因为 IE 6/7 不支持 base64
$DIR = 'preview';
// Create target dir
@@ -448,7 +483,10 @@ class Webuploader extends BaseController {
$src = file_get_contents('php://input');
if (preg_match("#^data:image/(\w+);base64,(.*)$#", $src, $matches)) {
$previewUrl = sprintf(
"%s://%s%s", isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', $_SERVER['HTTP_HOST'], $_SERVER['REQUEST_URI']
"%s://%s%s",
isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
$_SERVER['HTTP_HOST'],
$_SERVER['REQUEST_URI']
);
$previewUrl = str_replace("preview.php", "", $previewUrl);
$base64 = $matches[2];
@@ -470,8 +508,9 @@ class Webuploader extends BaseController {
}
}
public function upload() {
$json = array();
public function upload()
{
$json = [];
// Make sure we have the correct directory
$relativepath = $this->request->get('directory', '', 'urldecode');
if (!empty($relativepath)) {
@@ -482,46 +521,57 @@ class Webuploader extends BaseController {
}
// Check its a directory
if (!is_dir($directory) || mb_substr($directory, 0, mb_strlen($this->basePath)) != $this->basePath) {
$json['error'] = '路径错误';
}
if (!$json) {
$file_upload_limit_size = Config::get('file_upload_limit_size');
// Check if multiple files are uploaded or just one
//获取上传的文件类型
//$type = $this->request->get('type', '');
// 获取表单上传文件
$files = $this->request->file('file');
foreach ($files as $k => $file) {
// 移动到框架应用根目录/public/uploads/ 目录下
$info = $file->validate(['size' => $file_upload_limit_size])->move($directory, false);
if ($info) {
// 成功上传后 获取上传信息
$ext = strtolower($info->getExtension());
if (in_array($ext, ['gif', 'jpg', 'jpeg', 'png', 'bmp'])) {
$image_upload_limit_size = Config::get('image_upload_limit_size');
$chick = $info->getInfo();
if ($chick['size']>=$image_upload_limit_size) {
$json['success'] = "文件大小超过1M";
} else {
$this->watermark('/uploads/' . $relativepath . '/' . $info->getFilename());
}
}
} else {
// 上传失败获取错误信息
$json['error'] = '';
$json['error'] .= '文件' . $k . $file->getError();
}
if (!mkdir($directory, 0755, true)) {
$json['error'] = '路径错误';
}
}
if (!$json) {
$json['success'] = '文件上传成功';
$json = [
'success' => '文件上传成功'
];
$file_upload_limit_size = Config::get('file_upload_limit_size');
$image_upload_limit_size = Config::get('image_upload_limit_size');
// 获取表单上传文件
$errors = [];
$files = $this->request->file('file');
foreach ($files as $k => $file) {
$file_info = $file->getInfo();
$idx = mb_strripos($file_info['name'], '.', 0, 'utf-8');
$file = $file->validate(['size' => $file_upload_limit_size]);
if (false !== $idx) {
$start = $idx;
if (mb_strlen($file_info['name'], 'utf-8') > $idx) {
$start = $idx + 1;
}
$ext = mb_substr($file_info['name'], $start);
if (in_array($ext, ['gif', 'jpg', 'jpeg', 'png', 'bmp'])) {
$file->validate(['size' => $image_upload_limit_size]);
}
}
// 移动到框架应用根目录/public/uploads/ 目录下
$info = $file->move($directory, false);
if ($info) {
// 成功上传后 获取上传信息
$this->watermark('/uploads/' . $relativepath . '/' . $info->getFilename());
} else {
// 上传失败获取错误信息
$errors[] = '文件【' . $file->getInfo()['name'] . '】' . $file->getError();
}
}
if (count($errors) != 0) {
$json = [
'success' => implode('\n', $errors)
];
}
}
echo json_encode($json);
exit;
}
public function folder() {
public function folder()
{
$json = array();
// Make sure we have the correct directory
$relativepath = $this->request->get('directory', '', 'urldecode');
@@ -569,7 +619,8 @@ class Webuploader extends BaseController {
exit;
}
public function rename() {
public function rename()
{
$json = array();
// Make sure we have the correct directory
$relativepath = $this->request->get('directory', '', 'urldecode');
@@ -617,7 +668,8 @@ class Webuploader extends BaseController {
exit;
}
public function delete() {
public function delete()
{
$json = array();
$paths = $this->request->post();
if (isset($paths['path'])) {
@@ -677,7 +729,8 @@ class Webuploader extends BaseController {
exit;
}
public function watermark($return_url = '/uploads/nopic.jpg') {
public function watermark($return_url = '/uploads/nopic.jpg')
{
$iswatermark = Config::get('watermark');
$return_data = ['watermark' => $iswatermark];
if ($iswatermark) {
@@ -707,7 +760,7 @@ class Webuploader extends BaseController {
$ttf = './hgzb.ttf';
if (file_exists($ttf)) {
$size = $wmconfig['mark_text_size'] ? $wmconfig['mark_text_size'] : 30;
$color = $wmconfig['mark_text_color'] ? : '#000000';
$color = $wmconfig['mark_text_color'] ?: '#000000';
if (!preg_match('/^#[0-9a-fA-F]{6}$/', $color)) {
$color = '#000000';
}
@@ -729,5 +782,4 @@ class Webuploader extends BaseController {
}
return $return_data;
}
}

0
app/admin/model/ProductSeries.php Normal file → Executable file
View File

View File

@@ -37,8 +37,6 @@
<li><a href="#navthird" data-toggle="tab">图片信息</a></li>
<li><a href="#navsecond" data-toggle="tab">详细内容</a></li>
<li><a href="#navseventh" data-toggle="tab">相关信息及下载</a></li>
</ul>
<div class="tab-content" style="background: #f3f3f3;">
@@ -357,7 +355,6 @@
foreach ($selectColorObj as $c=>$v) {
$sltclrOption .= $c==$product_image['image_color']?'<option value="'.$c .'" selected="">' .$v.'</option>':'<option value="'.$c .'">' .$v.'</option>';
}
echo $product_row;
?>
<tr id="product_row<?php echo $product_row; ?>">
<td class="text-left"><a href="" id="thumb-two-image<?php echo $product_row; ?>" data-toggle="image" data-folder="<?php echo $filepath;?>" class="img-thumbnail"><img class="img-responsive" src="<?php echo $product_image['image_url'];?>"></a><input name="product_product[<?php echo $product_row; ?>][image_url]" value="<?php echo $product_image['image_url'];?>" id="input-two-image<?php echo $product_row; ?>" type="hidden"></td>
@@ -367,18 +364,14 @@
if(strlen($product_image["image_color"]) ==2 || $product_image["image_color"] == ''){
echo '<select class="form-control" name="product_product['.$product_row.'][image_color]"><option value="">请选择</option>';
foreach($productColor as $clroption => $proColor) {
echo '<option value="'.$clroption .'"'.($clroption==$product_image['image_color'] ? "selected": "").'>'.$proColor . '</option>';
echo '<option value="'.$clroption.'"'.($clroption==$product_image['image_color'] ? "selected": "").'>'.$proColor.'</option>';
}
echo '</select>';
echo '</select>';
}
else{
echo '<input name="product_product['.$product_row.'][image_color]" value="'. $product_image["image_color"].'" placeholder="背景颜色" class="form-control" size="2" type="text">';
}
?>
</td>
<!--td class="text-center"><input name="product_product[<?php echo $product_row; ?>][image_bk_color]" value="<?php echo $product_image['image_bk_color'];?>" class="form-control" id="input-two-color-image<?php echo $product_row; ?>" type="text"></td-->
@@ -1272,22 +1265,21 @@ function changeAlbumImagesSort(){
}
/*二级列表主图*/
var product_row = "<?php echo '0';?>";
function addProduct() {
var sltclrOption = '<select class="form-control" name="product_image[' + product_row + '][image_color]"><option value="">请选择</option>';
for (clroption in selectColorObj) {
var sltclrOption = '<select class="form-control" name="product_product[' + product_row + '][image_color]"><option value="">请选择</option>';
for (clroption in selectColorObj) {
sltclrOption += '<option value="' + clroption + '">' + selectColorObj[clroption] + '</option>';
}
sltclrOption += '</select>';
var html = '<tr id="product_row' + product_row + '">';
html += ' <td class="text-left"><a href="" id="thumb-two-image' + product_row + '"data-toggle="image" data-folder="' + filePath + '" class="img-thumbnail"><img class="img-responsive" src="/uploads/nopic.jpg"/></a><input type="hidden" name="product_product[' + product_row + '][image_url]" value="" id="input-two-image' + product_row + '"/></td>';
html += ' <td class="text-right">' + sltclrOption + '</td>';
html += ' <td class="text-right">' + sltclrOption + '</td>';
//html += ' <td class="text-right"><input type="hidden" name="product_product[' + product_row + '][image_color]" value="" id="input-two-color-image' + product_row + '"/></td>';
//html += ' <td class="text-right"><input type="text" name="product_product[' + product_row + '][image_bkcolor]" value="" placeholder="颜色" class="form-control" size="2"/></td>';
html += ' <td class="text-right"><input type="text" name="product_product[' + product_row + '][image_desc]" value="" placeholder="描述" class="form-control" size="2"/></td>';
html += ' <td class="text-right"><input type="text" name="product_product[' + product_row + '][image_desc]" value="" placeholder="描述" class="form-control" size="2"/></td>';
html += ' <td class="text-left"><button type="button" onclick="$(\'#product_row' + product_row + '\').remove();" title="删除" class="btn btn-danger"><i class="fa fa-minus-circle"></i></button></td>';
html += '</tr>';
$('#product tbody').append(html);
@@ -1795,16 +1787,16 @@ function delAlbumAttributeColumn (object){
}
</script>
<script>
$(function() {
$('.business-button,.busniess-joinus-btn').click(function() {
$(".marsk-container").show();
});
});
/*弹出框关闭*/
$(function() {
$('.business-close').click(function() {
$(".marsk-container").hide();
});
});
<script type="text/javascript">
$(function() {
$('.business-button,.busniess-joinus-btn').click(function() {
$(".marsk-container").show();
});
});
// 弹出框关闭
$(function() {
$('.business-close').click(function() {
$(".marsk-container").hide();
});
});
</script>

View File

@@ -15,7 +15,7 @@
<h3 class="box-title">链接列表</h3>
<div class="box-tools pull-right">
<div class="input-group input-group-sm">
<input type="text" class="form-control pull-right" id="list-search-in" placeholder="Search Name" value="">
<input type="text" class="form-control pull-right" id="list-search-in" placeholder="Search Name" value="" />
<div class="input-group-btn">
<button type="button" class="btn btn-default" id="list-search-btn"><i class="fa fa-search"></i></button>
</div>
@@ -37,43 +37,43 @@
<tbody>
{if condition="!empty($list)"}
{volist name="list" id="vo"}
<tr>
<td rowspan="{$vo.rowspan}" style="vertical-align: middle;">{$vo.name}</td>
<td rowspan="{$vo.rowspan}" style="vertical-align: middle;">{$vo.spu}</td>
<td rowspan="{$vo.rowspan}" style="vertical-align: middle;">
{if condition="$vo['is_show'] == -1"}
<span class="label label-warning">未上架</span>
{else/}
<span class="label label-success">已上架</span>
{/if}
</td>
<td>
<select name="platform" data-id="{$vo.id}" data-value="{$vo.platform_id}">
{volist name="platforms" id="p"}
<option value="{$p.id}" {if condition="$vo.platform_id == $p.id"}selected="selected"{/if}>{$p.platform}</option>
{/volist}
</select>
</td>
<td>
<input type="text" name="link" value="{$vo.link}" data-id="{$vo.id}" data-value="{$vo.link}"/>
</td>
</tr>
{if condition="!empty($vo.children)"}
{volist name="vo.children" id="voc"}
<tr>
<td>
<select name="platform" data-id="{$voc.id}" data-value="{$voc.platform_id}">
{volist name="platforms" id="p"}
<option value="{$p.id}" {if condition="$voc.platform_id == $p.id" }selected="selected" {/if}>{$p.platform}</option>
{/volist}
</select>
</td>
<td>
<input type="text" name="link" value="{$voc.link}" data-id="{$voc.id}" data-value="{$voc.link}" />
</td>
</tr>
{/volist}
{/if}
<tr>
<td rowspan="{$vo.rowspan}" style="vertical-align: middle;">{$vo.name}</td>
<td rowspan="{$vo.rowspan}" style="vertical-align: middle;">{$vo.spu}</td>
<td rowspan="{$vo.rowspan}" style="vertical-align: middle;">
{if condition="$vo['is_show'] == -1"}
<span class="label label-warning">未上架</span>
{else/}
<span class="label label-success">已上架</span>
{/if}
</td>
<td>
<select name="platform" data-id="{$vo.id}" data-value="{$vo.platform_id}">
{volist name="platforms" id="p"}
<option value="{$p.id}" {if condition="$vo.platform_id == $p.id"}selected="selected" {/if}>{$p.platform}</option>
{/volist}
</select>
</td>
<td>
<input type="text" name="link" value="{$vo.link}" data-id="{$vo.id}" data-value="{$vo.link}" />
</td>
</tr>
{if condition="!empty($vo.children)"}
{volist name="vo.children" id="voc"}
<tr>
<td>
<select name="platform" data-id="{$voc.id}" data-value="{$voc.platform_id}">
{volist name="platforms" id="p"}
<option value="{$p.id}" {if condition="$voc.platform_id == $p.id"}selected="selected" {/if}>{$p.platform}</option>
{/volist}
</select>
</td>
<td>
<input type="text" name="link" value="{$voc.link}" data-id="{$voc.id}" data-value="{$voc.link}" />
</td>
</tr>
{/volist}
{/if}
{/volist}
{/if}
</tbody>
@@ -96,9 +96,9 @@
</section>
</div>
<script type="text/javascript">
$(function() {
$(function () {
// 导入
$('#import').change(function(event) {
$('#import').change(function (event) {
var input = $(this)[0]
if (input.files.length > 0) {
var _load
@@ -111,7 +111,7 @@
cache: false,
processData: false,
contentType: false,
beforeSend: function() {
beforeSend: function () {
_load = layer.load()
},
success: function (r) {
@@ -125,12 +125,12 @@
})
}
},
error: function(e) {
layer.alert('导入失败', { icon: 2 }, function() {
error: function (e) {
layer.alert('导入失败', { icon: 2 }, function () {
location.reload()
});
},
complete: function() {
complete: function () {
$('#import').val(null)
layer.close(_load)
}
@@ -139,19 +139,19 @@
})
// 更新数据
var __update = function(data, success) {
var __update = function (data, success) {
var _load
return $.ajax({
type: 'POST',
url: '/admin/product_purchase_links/update',
data: data,
dataType: 'JSON',
beforeSend: function() {
beforeSend: function () {
_load = layer.load()
},
success: function(r) {
success: function (r) {
if (r.code == 0) {
layer.alert(r.msg, { icon: 2 }, function() {
layer.alert(r.msg, { icon: 2 }, function () {
location.reload()
})
} else {
@@ -159,7 +159,7 @@
layer.msg(r.msg)
}
},
complete: function() {
complete: function () {
layer.close(_load)
}
})
@@ -167,11 +167,11 @@
$('[name="platform"]').change(function () {
var value = $(this).get(0).dataset.value
if (value == $(this).val()) return false;
__update({ id: $(this).data('id'), platform_id: $(this).val() }, function() {
__update({ id: $(this).data('id'), platform_id: $(this).val() }, function () {
$(this).get(0).dataset.value = $(this).val()
}.bind(this))
})
$('[name="link"]').change(function(){
$('[name="link"]').change(function () {
var value = $(this).get(0).dataset.value
if (value == $(this).val()) return false;
__update({ id: $(this).data('id'), link: $(this).val() }, function () {

0
app/admin/view/product_series/add.html Normal file → Executable file
View File

0
app/admin/view/product_series/edit.html Normal file → Executable file
View File

0
app/admin/view/product_series/lists.html Normal file → Executable file
View File

View File

@@ -28,7 +28,7 @@
<div class="modal-footer"></div>
</div>
</div>
<script type="text/javascript"><!--
<script type="text/javascript">
$('#modal-image a.thumbnail').on('click', function(e) {
e.preventDefault();
var target = "<?php echo $target; ?>";
@@ -81,9 +81,9 @@
}
$('#modal-image').load(url);
});
//--></script>
<script type="text/javascript"><!--
$('#button-upload').on('click', function() {
</script>
<script type="text/javascript">
$('#button-upload').on('click', function(e) {
$('#form-upload').remove();
$('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input type="file" name="file[]" value="" multiple="multiple"/></form>');
$('#form-upload input[name=\'file[]\']').trigger('click');
@@ -97,7 +97,7 @@
url: '<?php echo url("/admin/webuploader/upload",["directory"=>$directory,"type"=>$type]); ?>',
type: 'post',
dataType: 'json',
data: $('#form-upload').serialize(),
data: new FormData($('#form-upload')[0]),
cache: false,
contentType: false,
processData: false,
@@ -197,4 +197,4 @@
});
}
});
//--></script>
</script>

View File

@@ -225,8 +225,8 @@
}
$('#modal-image').load(url);
});
//--></script>
<script type="text/javascript"><!--
</script>
<script type="text/javascript">
$('#button-upload').on('click', function() {
$('#form-upload').remove();
$('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input type="file" name="file[]" value="" multiple="multiple"/></form>');
@@ -389,4 +389,4 @@
});
}
});
//--></script>
</script>

View File

@@ -58,7 +58,7 @@
"compress": false, //不启用压缩
"resize": false, //尺寸不改变
"formData": {},
"pick": {id: '#filePicker', label: '点击选择文件', "name": "file"},
"pick": {id: '#filePicker', label: '点击选择文件', "name": "file", "multiple": false},
"thumb": {"width": 110, "height": 110, "quality": 70, "allowMagnify": true, "crop": true, "preserveHeaders": false, "type": "image\/jpeg"}
};
$(function() {