初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

38
addon/pc/config/diy_view.php Executable file
View File

@@ -0,0 +1,38 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
return [
// 自定义模板页面类型,格式:[ 'title' => '页面类型名称', 'name' => '页面标识', 'path' => '页面路径', 'value' => '页面数据json格式' ]
'template' => [],
// 后台自定义组件——装修
'util' => [],
// 自定义页面路径
'link' => [],
// 自定义图标库
'icon_library' => [],
// uni-app 组件,格式:[ 'name' => '组件名称/文件夹名称', 'path' => '文件路径/目录路径' ]多个逗号隔开自定义组件名称前缀必须是diy-,也可以引用第三方组件
'component' => [],
// uni-app 页面,多个逗号隔开
'pages' => [],
// 模板信息,格式:'title' => '模板名称', 'name' => '模板标识', 'cover' => '模板封面图', 'preview' => '模板预览图', 'desc' => '模板描述'
'info' => [],
// 主题风格配色格式可以自由定义扩展【在uni-app中通过this.themeStyle... 获取定义的颜色字段例如this.themeStyle.main_color】
'theme' => [],
// 自定义页面数据,格式:[ 'title' => '页面名称', 'name' => "页面标识", 'value' => [页面数据json格式] ]
'data' => []
];

16
addon/pc/config/event.php Executable file
View File

@@ -0,0 +1,16 @@
<?php
// 事件定义文件
return [
'bind' => [
],
'listen' => [
'ShowPromotion' => [
'addon\pc\event\ShowPromotion',
]
],
'subscribe' => [
],
];

21
addon/pc/config/info.php Executable file
View File

@@ -0,0 +1,21 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
return [
'name' => 'pc',
'title' => '电脑端',
'description' => '电脑端管理',
'type' => 'tool', //插件类型 system :系统插件(自动安装), promotion:扩展营销插件 tool:工具插件
'status' => 1,
'author' => '',
'version' => '5.5.3',
'version_no' => '553250709001',
'content' => '',
];

225
addon/pc/config/menu_shop.php Executable file
View File

@@ -0,0 +1,225 @@
<?php
// +----------------------------------------------------------------------
// | 平台端菜单设置
// +----------------------------------------------------------------------
return [
[
'name' => 'PC_CONFIG',
'title' => '电脑端',
'url' => 'pc://shop/pc/floor',
'is_show' => 1,
'is_control' => 1,
'is_icon' => 0,
'picture' => 'app/shop/view/public/img/icon_new/diy_web_new.png',
'picture_selected' => 'app/shop/view/public/img/icon_new/diy_web_select.png',
'parent' => 'SHOP_ROOT',
'sort' => 3,
'child_list' => [
[
'name' => 'PC_INDEX_FLOOR',
'title' => '首页楼层',
'url' => 'pc://shop/pc/floor',
'is_show' => 1,
'sort' => 1,
'child_list' => [
[
'name' => 'PC_INDEX_FLOOR_EDIT',
'title' => '楼层编辑',
'url' => 'pc://shop/pc/editfloor',
'is_show' => 0,
'type' => 'button',
],
[
'name' => 'PC_INDEX_FLOOR_DELETE',
'title' => '楼层删除',
'url' => 'pc://shop/pc/deleteFloor',
'is_show' => 0,
'type' => 'button',
'type' => 'button',
]
],
],
[
'name' => 'PC_FLOAT_LAYER',
'title' => '首页浮层',
'url' => 'pc://shop/pc/floatlayer',
'is_show' => 1,
'sort' => 2,
'child_list' => [],
],
[
'name' => 'PC_NAV_LIST',
'title' => '导航设置',
'url' => 'pc://shop/pc/navlist',
'is_show' => 1,
'sort' => 3,
'child_list' => [
[
'name' => 'PC_NAV_ADD',
'title' => '添加导航',
'url' => 'pc://shop/pc/addnav',
'is_show' => 0,
'sort' => 1,
'type' => 'button',
],
[
'name' => 'PC_NAV_EDIT',
'title' => '编辑导航',
'url' => 'pc://shop/pc/editnav',
'is_show' => 0,
'sort' => 2,
'type' => 'button',
],
[
'name' => 'PC_NAV_DELETE',
'title' => '删除导航',
'url' => 'pc://shop/pc/deletenav',
'is_show' => 0,
'sort' => 3,
'type' => 'button',
],
[
'name' => 'PC_NAV_MODIFY_IS_SHOW',
'title' => '导航是否显示',
'url' => 'pc://shop/pc/modifynavisshow',
'is_show' => 0,
'sort' => 4,
'type' => 'button',
],
],
],
[
'name' => 'PC_LINK_LIST',
'title' => '友情链接',
'url' => 'pc://shop/pc/linklist',
'is_show' => 1,
'sort' => 4,
'child_list' => [
[
'name' => 'PC_LINK_ADD',
'title' => '添加友情链接',
'url' => 'pc://shop/pc/addlink',
'is_show' => 0,
'sort' => 1,
'type' => 'button',
'type' => 'button',
'type' => 'button',
],
[
'name' => 'PC_LINK_EDIT',
'title' => '编辑友情链接',
'url' => 'pc://shop/pc/editlink',
'is_show' => 0,
'sort' => 2,
'type' => 'button',
'type' => 'button',
'type' => 'button',
],
[
'name' => 'PC_LINK_DELETE',
'title' => '删除友情链接',
'url' => 'pc://shop/pc/deletelink',
'is_show' => 0,
'sort' => 3,
'type' => 'button',
'type' => 'button',
'type' => 'button',
],
],
],
[
'name' => 'WEBSITE_ADV',
'title' => '广告管理',
'url' => 'pc://shop/adv/index',
'is_show' => 1,
'sort' => 5,
'child_list' => [
[
'name' => 'WEBSITE_ADV_POSITION',
'title' => '广告位管理',
'url' => 'pc://shop/adv/index',
'is_show' => 1,
'child_list' => [
[
'name' => 'WEBSITE_ADV_POSITION_ADD',
'title' => '添加广告位',
'url' => 'pc://shop/adv/addposition',
'is_show' => 0,
'type' => 'button',
'type' => 'button',
],
[
'name' => 'WEBSITE_ADV_POSITION_EDIT',
'title' => '编辑广告位',
'url' => 'pc://shop/adv/editposition',
'is_show' => 0,
'type' => 'button',
'type' => 'button',
],
[
'name' => 'WEBSITE_ADV_POSITION_DELETE',
'title' => '删除广告位',
'url' => 'pc://shop/adv/deleteposition',
'is_show' => 0,
'type' => 'button',
'type' => 'button',
],
[
'name' => 'WEBSITE_ADV_POSITION_STATE_ALTER',
'title' => '更改状态',
'url' => 'pc://shop/adv/alteradvpositionstate',
'is_show' => 0,
'type' => 'button',
'type' => 'button',
],
]
],
[
'name' => 'WEBSITE_ADV_LISTS',
'title' => '广告管理',
'url' => 'pc://shop/adv/lists',
'is_show' => 1,
'child_list' => [
[
'name' => 'WEBSITE_ADV_ADD',
'title' => '添加广告',
'url' => 'pc://shop/adv/addadv',
'is_show' => 0,
'type' => 'button',
],
[
'name' => 'WEBSITE_ADV_EDIT',
'title' => '编辑广告',
'url' => 'pc://shop/adv/editadv',
'is_show' => 0,
'type' => 'button',
],
[
'name' => 'WEBSITE_ADV_DELETE',
'title' => '删除广告',
'url' => 'pc://shop/adv/deleteadv',
'is_show' => 0,
'type' => 'button',
],
[
'name' => 'WEBSITE_ADV_STATE_ALTER',
'title' => '更改状态',
'url' => 'pc://shop/adv/alteradvstate',
'is_show' => 0,
'type' => 'button',
],
]
]
]
],
[
'name' => 'PC_CATEGORY_CONFIG',
'title' => '首页分类',
'url' => 'pc://shop/pc/category',
'is_show' => 1,
'sort' => 8,
'child_list' => []
]
]
]
];

36
addon/pc/event/Install.php Executable file
View File

@@ -0,0 +1,36 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace addon\pc\event;
use addon\pc\model\Pc;
/**
* 应用安装
*/
class Install
{
/**
* 执行安装
*/
public function handle()
{
try{
$pc_model = new Pc();
$pc_model->downloadCsDefault();
return success();
}catch (\Exception $e)
{
return error('', $e->getMessage());
}
}
}

View File

@@ -0,0 +1,48 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace addon\pc\event;
/**
* 活动展示
*/
class ShowPromotion
{
/**
* 活动展示
*
* @return multitype:number unknown
*/
public function handle()
{
$data = [
'shop' => [
[
//插件名称
'name' => 'pc',
//店铺端展示分类 shop:营销活动 member:互动营销
'show_type' => 'tool',
//展示主题
'title' => '电脑端',
//展示介绍
'description' => '商家的PC端商城',
//展示图标
'icon' => 'addon/pc/icon.png',
//跳转链接
'url' => 'shop/config/sitedeploy',
]
]
];
return $data;
}
}

32
addon/pc/event/UnInstall.php Executable file
View File

@@ -0,0 +1,32 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace addon\pc\event;
/**
* 应用卸载
*/
class UnInstall
{
/**
* 执行卸载
*/
public function handle()
{
try{
return success();
}catch (\Exception $e)
{
return error('', $e->getMessage());
}
}
}

BIN
addon/pc/icon.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 B

701
addon/pc/model/Pc.php Executable file
View File

@@ -0,0 +1,701 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
* =========================================================
*/
namespace addon\pc\model;
use app\model\BaseModel;
use app\model\goods\Goods as GoodsModel;
use app\model\goods\GoodsCategory as GoodsCategoryModel;
use app\model\system\Api;
use app\model\system\Config as ConfigModel;
use app\model\web\Config as WebConfig;
use think\db\Raw;
use think\facade\Cache;
use think\facade\Db;
/**
* PC端
* @author Administrator
*
*/
class Pc extends BaseModel
{
private $link = [
[
'title' => '首页',
'url' => '/'
],
[
'title' => '登录',
'url' => '/auth/login'
],
[
'title' => '注册',
'url' => '/auth/register'
],
[
'title' => '找回密码',
'url' => '/auth/find'
],
[
'title' => '公告列表',
'url' => '/cms/notice/list'
],
[
'title' => '文章列表',
'url' => '/cms/article/list'
],
[
'title' => '帮助中心',
'url' => '/cms/help/list'
],
[
'title' => '购物车',
'url' => '/goods/cart'
],
[
'title' => '领券中心',
'url' => '/goods/coupon'
],
[
'title' => '商品分类',
'url' => '/goods/category'
],
[
'title' => '商品列表',
'url' => '/goods/list'
],
[
'title' => '品牌专区',
'url' => '/goods/brand'
],
[
'title' => '团购专区',
'url' => '/promotion/groupbuy'
],
[
'title' => '秒杀专区',
'url' => '/promotion/seckill'
],
[
'title' => '会员中心',
'url' => '/member'
]
];
private $web_demain = __ROOT__ . '/web';
private $not_found_file_error = "未找到源码包,请检查目录文件";
/*************************************************网站部署******************************************/
/**
* 默认部署无需下载一键刷新API接口请求地址为当前域名编译代码存放到web文件夹中
* @return array
*/
public function downloadCsDefault()
{
try {
$path = 'addon/pc/source/cs_default';
$web_path = 'web'; // web端生成目录
if (!is_dir($path) || count(scandir($path)) <= 3) {
return $this->error('', $this->not_found_file_error);
}
if (is_dir($web_path)) {
// 先将之前的文件删除
if (count(scandir($web_path)) > 1) deleteDir($web_path);
} else {
// 创建web目录
mkdir($web_path, intval('0777', 8), true);
}
// 将原代码包拷贝到web目录下
recurseCopy($path, $web_path);
$this->dealWithParamReplace($web_path);
file_put_contents($web_path . '/refresh.log', time());
return $this->success();
} catch (\Exception $e) {
return $this->error('', $e->getMessage());
}
}
/**
* 独立部署:下载编译代码包,参考开发文档进行配置
* @param $domain
* @return array
*/
public function downloadCsSeparate($domain)
{
$this->web_demain = $domain;
try {
$path = 'addon/pc/source/cs_separate';
$source_file_path = 'upload/web/cs_separate'; // web端生成目录
if (!is_dir($path) || count(scandir($path)) <= 3) {
return $this->error('', $this->not_found_file_error);
}
if (is_dir($source_file_path)) {
// 先将之前的文件删除
if (count(scandir($source_file_path)) > 2) deleteDir($source_file_path);
} else {
// 创建web目录
mkdir($source_file_path, intval('0777', 8), true);
}
// 将原代码包拷贝到web目录下
recurseCopy($path, $source_file_path);
$this->dealWithParamReplace($source_file_path);
// 生成压缩包
$file_arr = getFileMap($source_file_path);
if (!empty($file_arr)) {
$zipname = 'web_cs_separate_' . date('YmdHi') . '.zip';
$zip = new \ZipArchive();
$res = $zip->open($zipname, \ZipArchive::CREATE);
if ($res === TRUE) {
foreach ($file_arr as $file_path => $file_name) {
if (is_dir($file_path)) {
$file_path = str_replace($source_file_path . '/', '', $file_path);
$zip->addEmptyDir($file_path);
} else {
$zip_path = str_replace($source_file_path . '/', '', $file_path);
$zip->addFile($file_path, $zip_path);
}
}
$zip->close();
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: Binary");
header("Content-Length: " . filesize($zipname));
header("Content-Disposition: attachment; filename=\"" . basename($zipname) . "\"");
readfile($zipname);
@unlink($zipname);
}
}
return $this->success();
} catch (\Exception $e) {
return $this->error('', $e->getMessage());
}
}
/**
* 源码下载:下载开源代码包,参考开发文档进行配置,结合业务需求进行二次开发
* @return array
*/
public function downloadOs()
{
try {
$source_file_path = 'addon/pc/source/os';
if (!is_dir($source_file_path) || count(scandir($source_file_path)) <= 3) {
return $this->error('', $this->not_found_file_error);
}
$file_arr = getFileMap($source_file_path);
if (!empty($file_arr)) {
$zipname = 'web_os_' . date('YmdHi') . '.zip';
$zip = new \ZipArchive();
$res = $zip->open($zipname, \ZipArchive::CREATE);
if ($res === TRUE) {
foreach ($file_arr as $file_path => $file_name) {
if (is_dir($file_path)) {
$file_path = str_replace($source_file_path . '/', '', $file_path);
$zip->addEmptyDir($file_path);
} else {
$zip_path = str_replace($source_file_path . '/', '', $file_path);
$zip->addFile($file_path, $zip_path);
}
}
$zip->close();
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: Binary");
header("Content-Length: " . filesize($zipname));
header("Content-Disposition: attachment; filename=\"" . basename($zipname) . "\"");
readfile($zipname);
@unlink($zipname);
}
}
return $this->success();
} catch (\Exception $e) {
return $this->error('', $e->getMessage());
}
}
/**
* 替换配置信息API请求域名地址、图片、密钥等
* @param $source_path
* @param string $domain
*/
private function dealWithParamReplace($source_path)
{
//处理js文件中的变量替换
$js_path = $source_path . '/_nuxt';
$files = scandir($js_path);
foreach ($files as $path) {
if ($path != '.' && $path != '..') {
$temp_path = $js_path . '/' . $path;
if (file_exists($temp_path)) {
if (preg_match("/(\w{7})(.js)$/", $temp_path)) {
$content = file_get_contents($temp_path);
$content = $this->paramReplace($content);
file_put_contents($temp_path, $content);
}
}
}
}
}
/**
* 参数替换
* @param $string
* @param string $domain
* @return string|string[]|null
*/
private function paramReplace($string)
{
$api_model = new Api();
$api_config = $api_model->getApiConfig()[ 'data' ];
$web_config_model = new WebConfig();
$web_config = $web_config_model->getMapConfig()[ 'data' ][ 'value' ];
$web_socket = ( strstr(__ROOT__, 'https://') === false ? str_replace('http', 'ws', __ROOT__) : str_replace('https', 'wss', __ROOT__) ) . '/wss';
$patterns = [
'/\{\{\$baseUrl\}\}/',
'/\{\{\$imgDomain\}\}/',
'/\{\{\$webDomain\}\}/',
'/\{\{\$mpKey\}\}/',
'/\{\{\$apiSecurity\}\}/',
'/\{\{\$publicKey\}\}/',
'/\{\{\$webSocket\}\}/'
];
$replacements = [
__ROOT__,
__ROOT__,
$this->web_demain,
$web_config[ 'tencent_map_key' ] ?? '',
$api_config[ 'is_use' ] ?? 0,
$api_config[ 'value' ][ 'public_key' ] ?? '',
$web_socket
];
$string = preg_replace($patterns, $replacements, $string);
return $string;
}
/**
* 获取PC端固定跳转链接
* @return array
*/
public function getLink()
{
foreach ($this->link as $k => $v) {
if ($v[ 'url' ] == '/auth/register' && addon_is_exit('memberregister') == 0) {
unset($this->link[ $k ]);
} elseif ($v[ 'url' ] == '/goods/coupon' && addon_is_exit('coupon') == 0) {
unset($this->link[ $k ]);
} elseif ($v[ 'url' ] == '/promotion/seckill' && addon_is_exit('seckill') == 0) {
unset($this->link[ $k ]);
} elseif ($v[ 'url' ] == '/promotion/groupbuy' && addon_is_exit('groupbuy') == 0) {
unset($this->link[ $k ]);
}
}
$this->link = array_values($this->link);
return $this->link;
}
/**
* 设置首页浮层
* @param $data
* @return array
*/
public function setFloatLayer($data, $site_id, $app_module = 'shop')
{
$config = new ConfigModel();
$res = $config->setConfig($data, 'PC端首页浮层', 1, [ [ 'site_id', '=', $site_id ], [ 'app_module', '=', $app_module ], [ 'config_key', '=', 'PC_INDEX_FLOAT_LAYER_CONFIG' ] ]);
return $res;
}
/**
* 获取首页浮层
* @param $data
* @return array
*/
public function getFloatLayer($site_id, $app_module = 'shop')
{
$config = new ConfigModel();
$res = $config->getConfig([ [ 'site_id', '=', $site_id ], [ 'app_module', '=', $app_module ], [ 'config_key', '=', 'PC_INDEX_FLOAT_LAYER_CONFIG' ] ]);
if (empty($res[ 'data' ][ 'value' ])) {
$res[ 'data' ][ 'value' ] = [
'title' => '首页浮层',
'url' => '{"title":"\u81ea\u5b9a\u4e49","url":"https:\/\/www.niushop.com"}',
'is_show' => 1,
'number' => '3',
'img_url' => 'public/static/img/pc/index_float_layer.png'
];
} else {
if (is_null(json_decode($res[ 'data' ][ 'value' ][ 'url' ]))) {
$res[ 'data' ][ 'value' ][ 'url' ] = '{"title":"\u81ea\u5b9a\u4e49","url":"https:\/\/www.niushop.com"}';
}
}
return $res;
}
/*****************************************导航*****************************************/
/**
* 添加导航
* @param array $data
*/
public function addNav($data)
{
$id = model('pc_nav')->add($data);
Cache::tag("pc_nav")->clear();
return $this->success($id);
}
/**
* 修改导航
* @param array $data
*/
public function editNav($data, $condition)
{
$res = model('pc_nav')->update($data, $condition);
Cache::tag("pc_nav")->clear();
return $this->success($res);
}
/**
* 删除导航
* @param unknown $coupon_type_id
*/
public function deleteNav($condition)
{
$res = model('pc_nav')->delete($condition);
Cache::tag("pc_nav")->clear();
return $this->success($res);
}
/**
* 获取导航详情
* @param int $id
* @return multitype:string mixed
*/
public function getNavInfo($id)
{
$res = model('pc_nav')->getInfo([ [ 'id', '=', $id ] ], 'id, nav_title, nav_url, sort, is_blank, create_time, modify_time, nav_icon, is_show');
return $this->success($res);
}
/**
* 获取导航详情
* @param int $id
* @return multitype:string mixed
*/
public function getNavInfoByCondition($condition, $field = 'id, nav_title, nav_url, sort, is_blank, create_time, modify_time, nav_icon, is_show')
{
$res = model('pc_nav')->getInfo($condition, $field);
return $this->success($res);
}
/**
* 获取导航分页列表
* @param array $condition
* @param number $page
* @param string $page_size
* @param string $order
* @param string $field
*/
public function getNavPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'create_time desc', $field = 'id, nav_title, nav_url, sort, is_blank, create_time, modify_time, nav_icon, is_show')
{
$list = model('pc_nav')->pageList($condition, $field, $order, $page, $page_size);
return $this->success($list);
}
/**
* 获取导航列表
* @param array $condition
* @param string $field
* @param string $order
* @return array
*/
public function getNavList($condition = [], $field = 'id,nav_title,nav_url,sort,is_blank,create_time,modify_time,nav_icon,is_show', $order = 'create_time desc')
{
$list = model('pc_nav')->getList($condition, $field, $order);
return $this->success($list);
}
/**
* 修改排序
* @param int $sort
* @param int $id
*/
public function modifyNavSort($sort, $id)
{
$res = model('pc_nav')->update([ 'sort' => $sort ], [ [ 'id', '=', $id ] ]);
Cache::tag('pc_nav')->clear();
return $this->success($res);
}
/*****************************************友情链接*****************************************/
/**
* 添加友情链接
* @param array $data
*/
public function addLink($data)
{
$id = model('pc_friendly_link')->add($data);
Cache::tag("pc_friendly_link")->clear();
return $this->success($id);
}
/**
* 修改友情链接
* @param array $data
*/
public function editLink($data, $condition)
{
$res = model('pc_friendly_link')->update($data, $condition);
Cache::tag("pc_friendly_link")->clear();
return $this->success($res);
}
/**
* 删除友情链接
* @param unknown $coupon_type_id
*/
public function deleteLink($condition)
{
$res = model('pc_friendly_link')->delete($condition);
Cache::tag("pc_friendly_link")->clear();
return $this->success($res);
}
/**
* 获取友情链接详情
* @param int $id
* @return multitype:string mixed
*/
public function getLinkInfo($id)
{
$res = model('pc_friendly_link')->getInfo([ [ 'id', '=', $id ] ], 'id, link_title, link_url, link_pic, link_sort, is_blank, is_show');
return $this->success($res);
}
/**
* 获取导航分页列表
* @param array $condition
* @param number $page
* @param string $page_size
* @param string $order
* @param string $field
*/
public function getLinkPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'link_sort desc', $field = 'id, link_title, link_url, link_pic, link_sort, is_blank, is_show')
{
$list = model('pc_friendly_link')->pageList($condition, $field, $order, $page, $page_size);
return $this->success($list);
}
/**
* 获取导航列表
* @param array $condition
* @param number $page
* @param string $page_size
* @param string $order
* @param string $field
*/
public function getLinkList($condition = [], $field = true, $order = '')
{
$list = model('pc_friendly_link')->getList($condition, $field, $order);
return $this->success($list);
}
/**
* 修改排序
* @param $sort
* @param $id
* @return array
*/
public function modifyLinkSort($sort, $id)
{
$res = model('pc_friendly_link')->update([ 'link_sort' => $sort ], [ [ 'id', '=', $id ] ]);
Cache::tag('pc_friendly_link')->clear();
return $this->success($res);
}
/*****************************************首页楼层*****************************************/
/**
* 添加楼层模板
* @param $data
* @return array
*/
public function addFloorBlockList($data)
{
$res = model("pc_floor_block")->addList($data);
return $this->success($res);
}
/**
* 获取PC端首页楼层模板
* @return array
*/
public function getFloorBlockList()
{
$list = model('pc_floor_block')->getList([], 'id,name,title,value,sort');
return $this->success($list);
}
/**
* 添加楼层
* @param $data
* @return array
*/
public function addFloor($data)
{
$data[ 'create_time' ] = time();
$res = model("pc_floor")->add($data);
return $this->success($res);
}
/**
* 编辑楼层
* @param $data
* @param $condition
* @return array
*/
public function editFloor($data, $condition)
{
$res = model("pc_floor")->update($data, $condition);
return $this->success($res);
}
/**
* 修改首页楼层排序
* @param $sort
* @param $condition
* @return array
*/
public function modifyFloorSort($sort, $condition)
{
$res = model('pc_floor')->update([ 'sort' => $sort ], $condition);
return $this->success($res);
}
/**
* 删除首页楼层
* @param $condition
* @return array
*/
public function deleteFloor($condition)
{
$res = model('pc_floor')->delete($condition);
return $this->success($res);
}
/**
* 获取首页楼层信息
* @param $condition
* @param $field
* @return array
*/
public function getFloorInfo($condition, $field = 'id,block_id,title,value,state,create_time,sort')
{
$res = model("pc_floor")->getInfo($condition, $field);
return $this->success($res);
}
/**
* 获取首页楼层详情
* @param $id
* @return array
*/
public function getFloorDetail($id, $site_id)
{
$goods_model = new GoodsModel();
$goods_category_model = new GoodsCategoryModel();
$floor_info = model("pc_floor")->getInfo([ [ 'id', '=', $id ], [ 'site_id', '=', $site_id ] ], 'id,block_id,title,value,state,sort');
if (!empty($floor_info)) {
$value = $floor_info[ 'value' ];
if (!empty($value)) {
$value = json_decode($value, true);
foreach ($value as $k => $v) {
if (!empty($v[ 'type' ])) {
if ($v[ 'type' ] == 'goods') {
// 商品
$field = 'goods_id,goods_name,goods_image,price,create_time,sku_id,introduction,market_price';
// $order = 'sort desc,create_time desc';
$order = '';
$list = $goods_model->getGoodsList([ [ 'goods_id', 'in', $v[ 'value' ][ 'goods_ids' ] ] ], $field, $order)[ 'data' ];
$value[ $k ][ 'value' ][ 'list' ] = $list;
} elseif ($v[ 'type' ] == 'category') {
// 商品分类
$condition = [
[ 'category_id', 'in', $v[ 'value' ][ 'category_ids' ] ],
[ 'site_id', '=', $site_id ]
];
$list = $goods_category_model->getCategoryList($condition, 'category_id,category_name,short_name,image,image_adv',Db::raw("FIELD(category_id, '{$v[ 'value' ][ 'category_ids' ]}')"))[ 'data' ];
$value[ $k ][ 'value' ][ 'list' ] = $list;
}
}
}
$floor_info[ 'value' ] = json_encode($value);
}
}
return $this->success($floor_info);
}
/**
* 获取PC端首页楼层列表
* @param array $condition
* @param string $field
* @param string $order
* @return array
*/
public function getFloorList($condition = [], $field = 'pf.id,pf.block_id,pf.title,pf.value,pf.state,pf.create_time,pf.sort,fb.name as block_name,fb.title as block_title', $order = 'pf.sort desc,pf.create_time desc')
{
$alias = 'pf';
$join = [
[ 'pc_floor_block fb', 'pf.block_id = fb.id', 'inner' ]
];
$list = model('pc_floor')->getList($condition, $field, $order, $alias, $join);
return $this->success($list);
}
/**
* 获取PC端首页楼层分页列表
* @param array $condition
* @param int $page
* @param int $page_size
* @param string $order
* @param string $field
* @return array
*/
public function getFloorPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'pf.create_time desc', $field = 'pf.id,pf.block_id,pf.title,pf.value,pf.state,pf.create_time,pf.sort,fb.name as block_name,fb.title as block_title')
{
$alias = 'pf';
$join = [
[ 'pc_floor_block fb', 'pf.block_id = fb.id', 'inner' ]
];
$list = model('pc_floor')->pageList($condition, $field, $order, $page, $page_size, $alias, $join);
return $this->success($list);
}
}

336
addon/pc/shop/controller/Adv.php Executable file
View File

@@ -0,0 +1,336 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
* =========================================================
*/
namespace addon\pc\shop\controller;
use app\model\web\Adv as AdvModel;
use app\model\web\AdvPosition;
use addon\pc\model\Pc as PcModel;
use app\shop\controller\BaseShop;
/**
* 广告管理
*/
class Adv extends BaseShop
{
/**
* 广告位管理
* @return mixed
*/
public function index()
{
$adv_position = new AdvPosition();
if (request()->isJson()) {
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$search_text = input('search_text', '');
$type = input('type', '');//位置类型 1 电脑端 2 手机端
$condition = [
[ 'site_id', '=', $this->site_id ],
[ 'type', '=', 1 ]
];
if (!empty($search_text)) {
$condition[] = [ 'ap_name', 'like', '%' . $search_text . '%' ];
}
if ($type !== '') {
$condition[] = [ 'type', '=', $type ];
}
return $adv_position->getAdvPositionPageList($condition, $page, $page_size);
} else {
return $this->fetch('adv/index');
}
}
/**
* 添加广告位
*/
public function addPosition()
{
$adv_position = new AdvPosition();
if (request()->isJson()) {
$data = [
'ap_name' => input('ap_name', ''),
'keyword' => input('keyword', ''),
'ap_intro' => input('ap_intro', ''),
'ap_height' => input('ap_height', 0),
'ap_width' => input('ap_width', 0),
'default_content' => input('default_content', ''),
'ap_background_color' => input('ap_background_color', ''),
'type' => input('type', 1),
'site_id' => $this->site_id,
'state' => input('state', 0),
];
return $adv_position->addAdvPosition($data);
} else {
return $this->fetch('adv/add_position');
}
}
/**
* 编辑广告位
*/
public function editPosition()
{
$adv_position = new AdvPosition();
$ap_id = input('ap_id', 0);
if (request()->isJson()) {
$data = [
'ap_name' => input('ap_name', ''),
'keyword' => input('keyword', ''),
'ap_intro' => input('ap_intro', ''),
'ap_height' => input('ap_height', 0),
'ap_width' => input('ap_width', 0),
'default_content' => input('default_content', ''),
'ap_background_color' => input('ap_background_color', ''),
'state' => input('state', 0),
];
return $adv_position->editAdvPosition($data, [ [ 'ap_id', '=', $ap_id ], [ 'site_id', '=', $this->site_id ] ]);
} else {
$ap_info = $adv_position->getAdvPositionInfo([ [ 'ap_id', '=', $ap_id ], [ 'site_id', '=', $this->site_id ] ]);
$this->assign('info', $ap_info[ 'data' ]);
return $this->fetch('adv/edit_position');
}
}
/**
* 修改广告位字段
*/
public function editPositionField()
{
if (request()->isJson()) {
$adv_position = new AdvPosition();
$type = input('type', '');
$value = input('value', 0);
$ap_id = input('ap_id', 0);
$data = [
$type => $value
];
return $adv_position->editAdvPosition($data, [ [ 'ap_id', '=', $ap_id ] ]);
}
}
/**
* 删除广告位
*/
public function deletePosition()
{
if (request()->isJson()) {
$ap_ids = input('ap_ids', 0);
$adv_position = new AdvPosition();
return $adv_position->deleteAdvPosition([ [ 'ap_id', 'in', $ap_ids ], [ 'site_id', '=', $this->site_id ] ], $ap_ids);
}
}
/**
* 广告列表
*/
public function lists()
{
$adv = new AdvModel();
$adv_position = new AdvPosition();
$ap_id = input('ap_id', '');
if (request()->isJson()) {
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$search_text = input('search_text', '');
$ap_id = input('ap_id', '');
//查询所有手机端广告位
$conditions[] = [ 'type', '=', 1 ];
$positions = $adv_position->getAdvPositionList($conditions);
$positions_ids = array_column($positions[ 'data' ], 'ap_id');
$condition = [
[ 'a.site_id', '=', $this->site_id ],
[ 'a.ap_id', 'in', $positions_ids ]
];
if (!empty($search_text)) {
$condition[] = [ 'a.adv_title', 'like', '%' . $search_text . '%' ];
}
if ($ap_id !== '') {
$condition[] = [ 'a.ap_id', '=', $ap_id ];
}
//排序
$order = input('order', 'slide_sort');
$sort = input('sort', 'desc');
if ($order == 'slide_sort') {
$order_by = 'a.' . $order . ' ' . $sort;
} else {
$order_by = 'a.' . $order . ' ' . $sort . ',a.slide_sort desc';
}
return $adv->getAdvPageList($condition, $page, $page_size, $order_by);
} else {
$this->assign('ap_id', $ap_id);
$adv_position = new AdvPosition();
$adv_position_list = $adv_position->getAdvPositionList([ [ 'site_id', '=', $this->site_id ], [ 'type', '=', 1 ] ], 'ap_id,ap_name');
$this->assign('adv_position', $adv_position_list[ 'data' ]);
return $this->fetch('adv/lists');
}
}
/**
* 添加广告
*/
public function addAdv()
{
$adv = new AdvModel();
if (request()->isJson()) {
$data = [
'ap_id' => input('ap_id', 0),
'adv_title' => input('adv_title', ''),
'adv_url' => input('adv_url', ''),
'adv_image' => input('adv_image', ''),
'slide_sort' => input('slide_sort', 0),
'price' => input('price', 0),
'background' => input('background', ''),
'state' => input('state', 0),
'site_id' => $this->site_id
];
return $adv->addAdv($data);
} else {
$pc_model = new PcModel();
$pc_link = $pc_model->getLink();
$this->assign('pc_link', $pc_link);
$adv_position = new AdvPosition();
$adv_position_list = $adv_position->getAdvPositionList([
[ 'site_id', '=', $this->site_id ],
[ 'type', '=', 1 ],
]);
$this->assign('adv_position_list', $adv_position_list[ 'data' ]);
$ap_id = input('ap_id', 0);
$this->assign('ap_id', $ap_id);
return $this->fetch('adv/add_adv');
}
}
/**
* 编辑广告
*/
public function editAdv()
{
$adv_id = input('adv_id', '');
$adv = new AdvModel();
if (request()->isJson()) {
$data = [
'ap_id' => input('ap_id', 0),
'adv_title' => input('adv_title', ''),
'adv_url' => input('adv_url', ''),
'adv_image' => input('adv_image', ''),
'slide_sort' => input('slide_sort', 0),
'price' => input('price', 0),
'background' => input('background', ''),
'state' => input('state', 0),
];
return $adv->editAdv($data, [ [ 'adv_id', '=', $adv_id ], [ 'site_id', '=', $this->site_id ] ]);
} else {
$pc_model = new PcModel();
$pc_link = $pc_model->getLink();
$this->assign('pc_link', $pc_link);
$adv_position = new AdvPosition();
$adv_position_list = $adv_position->getAdvPositionList([
[ 'site_id', '=', $this->site_id ],
[ 'type', '=', 1 ],
]);
$this->assign('adv_position_list', $adv_position_list[ 'data' ]);
$adv_info = $adv->getAdvInfo($adv_id);
//得出推荐宽高
foreach ($adv_position_list[ 'data' ] as $k => $v) {
if ($v[ 'ap_id' ] == $adv_info[ 'data' ][ 'ap_id' ]) {
$adv_info[ 'data' ][ 'ap_width' ] = $v[ 'ap_width' ];
$adv_info[ 'data' ][ 'ap_height' ] = $v[ 'ap_height' ];
}
}
$this->assign('adv_info', $adv_info[ 'data' ]);
// 得到当前广告图类型
$type = 2;// 1 pc、2 wap
foreach ($adv_position_list[ 'data' ] as $k => $v) {
if ($v[ 'ap_id' ] == $adv_info[ 'data' ][ 'ap_id' ]) {
$type = $v[ 'type' ];
break;
}
}
$this->assign('type', $type);
$ap_id = input('ap_id', 0);
$this->assign('ap_id', $ap_id);
return $this->fetch('adv/edit_adv');
}
}
/**
* 修改广告字段
*/
public function editAdvField()
{
if (request()->isJson()) {
$adv = new AdvModel();
$type = input('type', '');
$value = input('value', '');
$adv_id = input('adv_id', '');
$data = [
$type => $value
];
return $adv->editAdv($data, [ [ 'adv_id', '=', $adv_id ] ]);
}
}
/**
* 删除广告
*/
public function deleteAdv()
{
if (request()->isJson()) {
$adv_ids = input('adv_ids', 0);
$adv = new AdvModel();
return $adv->deleteAdv([ [ 'adv_id', 'in', $adv_ids ], [ 'site_id', '=', $this->site_id ] ]);
}
}
/**
* 修改广告位状态
* @return array
*/
public function alterAdvPositionState()
{
if (request()->isJson()) {
$ap_id = input('ap_id', 0);
$state = input('state', 0);
$ap_model = new AdvPosition();
return $ap_model->editAdvPosition([ 'state' => $state ], [ [ 'ap_id', '=', $ap_id ], [ 'site_id', '=', $this->site_id ] ]);
}
}
/**
* 修改广告状态
* @return array
*/
public function alterAdvState()
{
if (request()->isJson()) {
$adv_id = input('adv_id', 0);
$state = input('state', 0);
$ap_model = new AdvModel();
return $ap_model->editAdv([ 'state' => $state ], [ [ 'adv_id', '=', $adv_id ], [ 'site_id', '=', $this->site_id ] ]);
}
}
}

508
addon/pc/shop/controller/Pc.php Executable file
View File

@@ -0,0 +1,508 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
* =========================================================
*/
namespace addon\pc\shop\controller;
use app\model\goods\GoodsCategory as GoodsCategoryModel;
use addon\pc\model\Pc as PcModel;
use app\model\web\Config;
use app\shop\controller\BaseShop;
use think\App;
/**
* Pc端 控制器
*/
class Pc extends BaseShop
{
private $pc_model;
public function __construct(App $app = null)
{
$this->replace = [
'ADDON_PC_CSS' => __ROOT__ . '/addon/pc/shop/view/public/css',
'ADDON_PC_JS' => __ROOT__ . '/addon/pc/shop/view/public/js',
'ADDON_PC_IMG' => __ROOT__ . '/addon/pc/shop/view/public/img',
];
$this->pc_model = new PcModel();
parent::__construct($app);
}
/**
* 获取PC端部署信息
* @return array
*/
public function getDeploy()
{
if (request()->isJson()) {
$config_model = new Config();
$config = $config_model->getPcDomainName($this->site_id)[ 'data' ][ 'value' ];
if ($config[ 'deploy_way' ] == 'separate') {
$root_url = $config[ 'domain_name_pc' ];
} else {
$root_url = __ROOT__;
}
$res = [
'root_url' => __ROOT__,
'roots_url' => $root_url,
'config' => $config,
];
return success('', '', $res);
}
}
/**
* 设置pc端域名
* @return array
*/
public function pcDomainName()
{
$config_model = new Config();
$domain_name = input("domain", "");
$deploy_way = input("deploy_way", "default");
if ($deploy_way == 'default') $domain_name = __ROOT__ . '/web';
$result = $config_model->setPcDomainName([
'domain_name_pc' => $domain_name,
'deploy_way' => $deploy_way
]);
return $result;
}
/**
* 默认部署无需下载一键刷新API接口请求地址为当前域名编译代码存放到web文件夹中
*/
public function downloadCsDefault()
{
$this->pcDomainName();
return $this->pc_model->downloadCsDefault();
}
/**
* 独立部署:下载编译代码包,参考开发文档进行配置
*/
public function downloadCsSeparate()
{
if (strstr(ROOT_URL, 'niuteam.cn') === false) {
$domain_name = input("domain", "");
$res = $this->pc_model->downloadCsSeparate($domain_name);
if ($res[ 'code' ] >= 0) {
$config_model = new Config();
$result = $config_model->setPcDomainName([
'domain_name_pc' => $domain_name,
'deploy_way' => 'separate'
]);
}
echo $res[ 'message' ];
}
}
/**
* 源码下载:下载开源代码包,参考开发文档进行配置,结合业务需求进行二次开发
*/
public function downloadOs()
{
if (strstr(ROOT_URL, 'niuteam.cn') === false) {
$res = $this->pc_model->downloadOs();
echo $res[ 'message' ];
}
}
/**
* 首页浮层
* @return mixed
*/
public function floatLayer()
{
if (request()->isJson()) {
$data = [
'title' => input("title", ""),
'url' => input("url", ""),
'is_show' => input("is_show", 0),
'number' => input("number", ""),
'img_url' => input("img_url", "")
];
$res = $this->pc_model->setFloatLayer($data, $this->site_id);
return $res;
} else {
$link = $this->pc_model->getLink();
$this->assign("link", $link);
$float_layer = $this->pc_model->getFloatLayer($this->site_id)[ 'data' ][ 'value' ];
$this->assign("float_layer", $float_layer);
return $this->fetch('pc/float_layer');
}
}
/**
* 导航设置
* @return mixed
*/
public function navList()
{
if (request()->isJson()) {
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$search_text = input('search_text', '');
$condition = [
[ 'site_id', '=', $this->site_id ]
];
if (!empty($search_text)) $condition[] = [ 'nav_title', 'like', '%' . $search_text . '%' ];
$order = 'create_time desc';
$model = new PcModel();
return $model->getNavPageList($condition, $page, $page_size, $order);
} else {
return $this->fetch('pc/nav_list');
}
}
/**
* 添加导航
* @return mixed
*/
public function addNav()
{
$model = new PcModel();
if (request()->isJson()) {
$data = [
'nav_title' => input('nav_title', ''),
'nav_url' => input('nav_url', ''),
'sort' => input('sort', ''),
'is_blank' => input('is_blank', ''),
'nav_icon' => input('nav_icon', ''),
'is_show' => input('is_show', ''),
'create_time' => time(),
'site_id' => $this->site_id
];
return $model->addNav($data);
} else {
$link_list = $model->getLink();
$this->assign('link', $link_list);
return $this->fetch('pc/add_nav');
}
}
/**
* 编辑导航
* @return mixed
*/
public function editNav()
{
$model = new PcModel();
if (request()->isJson()) {
$data = [
'nav_title' => input('nav_title', ''),
'nav_url' => input('nav_url', ''),
'sort' => input('sort', ''),
'is_blank' => input('is_blank', ''),
'nav_icon' => input('nav_icon', ''),
'is_show' => input('is_show', ''),
'modify_time' => time(),
];
$id = input('id', 0);
$condition = [
[ 'id', '=', $id ],
[ 'site_id', '=', $this->site_id ]
];
return $model->editNav($data, $condition);
} else {
$link_list = $model->getLink();
$this->assign('link', $link_list);
$id = input('id', 0);
$this->assign('id', $id);
$nav_info = $model->getNavInfo($id);
$this->assign('nav_info', $nav_info[ 'data' ]);
return $this->fetch('pc/edit_nav');
}
}
/**
* 删除导航
* @return mixed
*/
public function deleteNav()
{
if (request()->isJson()) {
$id = input('id', 0);
$model = new PcModel();
return $model->deleteNav([ [ 'id', '=', $id ], [ 'site_id', '=', $this->site_id ] ]);
}
}
/**
* 修改排序
*/
public function modifySort()
{
if (request()->isJson()) {
$sort = input('sort', 0);
$id = input('id', 0);
$model = new PcModel();
return $model->modifyNavSort($sort, $id);
}
}
public function modifyNavIsShow()
{
if (request()->isJson()) {
$is_show = input('is_show', 0);
$id = input('id', 0);
$model = new PcModel();
return $model->editNav([ 'is_show' => $is_show ], [ [ 'id', '=', $id ] ]);
}
}
/**
* 友情链接
* @return mixed
*/
public function linklist()
{
if (request()->isJson()) {
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$search_text = input('search_text', '');
$condition = [
[ 'site_id', '=', $this->site_id ]
];
if (!empty($search_text)) $condition[] = [ 'link_title', 'like', '%' . $search_text . '%' ];
//排序
$link_sort = input('order', 'link_sort');
$sort = input('sort', 'desc');
if ($link_sort == 'link_sort') {
$order_by = $link_sort . ' ' . $sort;
} else {
$order_by = $link_sort . ' ' . $sort . ',link_sort desc';
}
$model = new PcModel();
return $model->getLinkPageList($condition, $page, $page_size, $order_by);
} else {
return $this->fetch('pc/link_list');
}
}
/**
* 添加友情链接
* @return mixed
*/
public function addLink()
{
$model = new PcModel();
if (request()->isJson()) {
$data = [
'link_title' => input('link_title', ''),
'link_url' => input('link_url', ''),
'link_pic' => input('link_pic', ''),
'link_sort' => input('link_sort', ''),
'is_blank' => input('is_blank', ''),
'is_show' => input('is_show', ''),
'site_id' => $this->site_id
];
return $model->addLink($data);
} else {
return $this->fetch('pc/add_link');
}
}
/**
* 编辑友情链接
* @return mixed
*/
public function editLink()
{
$model = new PcModel();
if (request()->isJson()) {
$data = [
'link_title' => input('link_title', ''),
'link_url' => input('link_url', ''),
'link_pic' => input('link_pic', ''),
'link_sort' => input('link_sort', ''),
'is_blank' => input('is_blank', ''),
'is_show' => input('is_show', ''),
];
$id = input('id', 0);
$condition = [
[ 'id', '=', $id ],
[ 'site_id', '=', $this->site_id ]
];
return $model->editLink($data, $condition);
} else {
$id = input('id', 0);
$this->assign('id', $id);
$link_info = $model->getLinkInfo($id);
$this->assign('link_info', $link_info[ 'data' ]);
return $this->fetch('pc/edit_link');
}
}
/**
* 删除友情链接
* @return mixed
*/
public function deleteLink()
{
if (request()->isJson()) {
$id = input('id', 0);
$model = new PcModel();
return $model->deleteLink([ [ 'id', '=', $id ], [ 'site_id', '=', $this->site_id ] ]);
}
}
/**
* 修改排序
*/
public function modifyLinkSort()
{
if (request()->isJson()) {
$sort = input('sort', 0);
$id = input('id', 0);
return $this->pc_model->modifyLinkSort($sort, $id);
}
}
/**
* 首页楼层
* @return array|mixed
*/
public function floor()
{
if (request()->isJson()) {
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$search_text = input('search_text', '');
$condition = [
[ 'pf.site_id', '=', $this->site_id ]
];
if (!empty($search_text)) $condition[] = [ 'pf.title', 'like', '%' . $search_text . '%' ];
$list = $this->pc_model->getFloorPageList($condition, $page, $page_size);
return $list;
} else {
return $this->fetch('pc/floor');
}
}
/**
* 修改首页楼层排序
*/
public function modifyFloorSort()
{
if (request()->isJson()) {
$sort = input('sort', 0);
$id = input('id', 0);
$condition = array (
[ 'id', '=', $id ],
[ 'site_id', '=', $this->site_id ]
);
$res = $this->pc_model->modifyFloorSort($sort, $condition);
return $res;
}
}
/**
* 删除首页楼层
* @return array
*/
public function deleteFloor()
{
if (request()->isJson()) {
$id = input('id', 0);
$res = $this->pc_model->deleteFloor([ [ 'id', '=', $id ], [ 'site_id', '=', $this->site_id ] ]);
return $res;
}
}
/**
* 编辑楼层
* @return mixed
*/
public function editFloor()
{
if (request()->isJson()) {
$id = input("id", 0);
$data = [
'block_id' => input("block_id", 0), //楼层模板关联id
'title' => input("title", ''), // 楼层标题
'value' => input("value", ''),
'state' => input("state", 0),// 状态0禁用1启用
'sort' => input("sort", 0), //排序号
'site_id' => $this->site_id
];
if ($id == 0) {
$res = $this->pc_model->addFloor($data);
} else {
$res = $this->pc_model->editFloor($data, [ [ 'id', '=', $id ], [ 'site_id', '=', $this->site_id ] ]);
}
return $res;
} else {
$id = input("id", 0);
$this->assign("id", $id);
if (!empty($id)) {
$floor_info = $this->pc_model->getFloorDetail($id, $this->site_id);
$floor_info = $floor_info[ 'data' ];
$this->assign("floor_info", $floor_info);
}
$floor_block_list = $this->pc_model->getFloorBlockList();
$floor_block_list = $floor_block_list[ 'data' ];
$this->assign("floor_block_list", $floor_block_list);
$pc_link = $this->pc_model->getLink();
$this->assign("pc_link", $pc_link);
$goods_category_model = new GoodsCategoryModel();
$category_list = $goods_category_model->getCategoryTree([ [ 'site_id', '=', $this->site_id ] ]);
$category_list = $category_list[ 'data' ];
$this->assign("category_list", $category_list);
return $this->fetch('pc/edit_floor');
}
}
/**
* PC端首页分类设置
* @return array|mixed
*/
public function category()
{
$config_model = new Config();
if (request()->isJson()) {
$data = array (
"category" => input("category", "1"),
"img" => input("img", "0")
);
$res = $config_model->setCategoryConfig($data, $this->site_id, $this->app_module);
return $res;
} else {
$config_info = $config_model->getCategoryConfig($this->site_id, $this->app_module);
$this->assign('config_info', $config_info[ 'data' ][ 'value' ]);
return $this->fetch('pc/category');
}
}
}

View File

@@ -0,0 +1,242 @@
<style>
.adv-url-show{margin-right: 10px;}
.layui-colorpicker-main-input div.layui-inline{margin-right: 0;}
.layui-colorpicker-main-input input.layui-input{width: 130px;height: 34px;}
</style>
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>广告名称:</label>
<div class="layui-input-block">
<input name="adv_title" type="text" lay-verify="required" class="layui-input len-long">
</div>
</div>
{notempty name="$adv_position_list"}
<div class="layui-form-item">
<label class="layui-form-label">所属广告位:</label>
<div class="layui-input-block len-mid">
<select name="ap_id" lay-filter="ap_id">
{foreach $adv_position_list as $adv_position_k => $adv_position_v}
<option value="{$adv_position_v.ap_id}" {if $ap_id == $adv_position_v.ap_id}selected{/if} data-type="{$adv_position_v.type}" data-width="{$adv_position_v.ap_width}" data-height="{$adv_position_v.ap_height}">{$adv_position_v.ap_name}</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item" data-type="1" {if $adv_position_list[0]['type'] == 2}style="display: none"{/if}>
<label class="layui-form-label">PC端广告链接</label>
<div class="layui-input-block len-mid">
<select name="pc_link" lay-filter="pc_link">
<option value="">请选择</option>
{foreach $pc_link as $k => $v}
<option value="{$v.url}">{$v.title}</option>
{/foreach}
<option value="diy">自定义</option>
</select>
</div>
</div>
<div class="layui-form-item" data-type="2" {if $adv_position_list[0]['type'] == 1}style="display: none"{/if}>
<label class="layui-form-label">移动端广告链接:</label>
<div class="layui-input-block len-mid">
<span class="adv-url-show"></span>
<button class="layui-btn layui-btn-primary sm" onclick="selectedLink()">选择链接</button>
</div>
</div>
<input name="adv_url" type="hidden" />
{/notempty}
<div class="layui-form-item">
<label class="layui-form-label">广告图片:</label>
<div class="layui-input-block">
<div class="upload-img-block img-upload">
<div class="upload-img-box">
<div class="upload-default" id="adv_image">
<div class="upload">
<i class="iconfont iconshangchuan"></i>
<p>点击上传</p>
</div>
</div>
<div class="operation">
<div>
<i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
<i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
</div>
<div class="replace_img js-replace">点击替换</div>
</div>
<input type="hidden" name="adv_image" value="">
</div>
</div>
</div>
<div class="word-aux">建议宽度<span class="pic_width">{$adv_position_list[0]['ap_width']}</span>px 建议高度<span class="pic_height">{$adv_position_list[0]['ap_height']}</span>px</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序:</label>
<div class="layui-input-block">
<input name="slide_sort" value="0" type="number" placeholder="排序" lay-verify="num" class="layui-input len-short">
</div>
<div class="word-aux">排序值必须为整数</div>
</div>
<div class="layui-form-item" style="display: none">
<label class="layui-form-label">广告价格:</label>
<div class="layui-input-block">
<input name="price" value="0.00" type="number" placeholder="广告价格" lay-verify="flo" class="layui-input len-short">
</div>
<div class="word-aux">广告价格 / 月</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">背景色:</label>
<div class="layui-input-inline">
<div id="bg_color"></div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否启用:</label>
<div class="layui-input-block">
<input type="checkbox" name="state" value="1" lay-skin="switch" lay-filter="state" checked />
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backPcAdvList()">返回</button>
</div>
<input type="hidden" name="background" id="ap_background_color" value="#FFFFFF" />
</div>
<script>
layui.use(['form', 'colorpicker'], function () {
var form = layui.form,
colorpicker = layui.colorpicker,
repeat_flag = false; //防重复标识
form.render();
form.on('select(ap_id)', function(data){
var type = $(data.elem).find("option:selected").attr("data-type");
var width = $(data.elem).find("option:selected").attr("data-width");
var height = $(data.elem).find("option:selected").attr("data-height");
$(".pic_width").text(width);
$(".pic_height").text(height);
$("[data-type]").hide();
$("[data-type='"+ type+"']").show();
});
form.on('select(pc_link)', function(data){
var title = $(data.elem).find("option:selected").text();
if(data.value != 'diy'){
$("input[name='adv_url']").val(JSON.stringify({
"title": title,
"url": data.value
}));
}else{
layer.prompt({
formType: 2,
value :$("input[name='adv_url']").val() ? JSON.parse($("input[name='adv_url']").val()).url : '',
title: '自定义链接地址',
area: ['450px', '100px'],
cancel : function () {
$("input[name='adv_url']").val("");
}
}, function(value, index, elem){
$("input[name='adv_url']").val(JSON.stringify({
"title": title,
"url": value
}));
layer.close(index);
});
}
});
/**
* 颜色
*/
colorpicker.render({
elem: '#bg_color', //绑定元素
color: "#FFFFFF",
done: function(color) {
$(".tdrag-name").css("color", color);
$("#ap_background_color").val(color);
}
});
// 广告图片
var logo_upload = new Upload({
elem: '#adv_image'
});
/**
* 监听提交
*/
form.on('submit(save)', function(data) {
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("pc://shop/adv/addAdv"),
data: data.field,
dataType: 'JSON',
type: 'POST',
success: function(res) {
repeat_flag = false;
if (res.code == 0) {
layer.confirm('添加成功', {
title:'操作提示',
btn: ['返回列表', '继续添加'],
yes: function(index, layero) {
location.hash = ns.hash("pc://shop/adv/lists", {ap_id: '{$ap_id}'})
layer.close(index);
},
btn2: function(index, layero) {
listenerHash(); // 刷新页面
layer.close(index);
}
});
} else {
layer.msg(res.message);
}
}
});
});
/**
* 表单验证
*/
form.verify({
num: function (value) {
let reg = ns.getRegexp('>=0num');
if (value !== '' && !reg.test(value)) {
return '排序数值必须为大于或等于0的整数'
}
},
flo: function (value) {
let reg = ns.getRegexp('>=0float2');
if (value !== '' && !reg.test(value)) {
return '价格必须大于或等于0最多保留两位小数'
}
}
});
});
function backPcAdvList() {
location.hash = ns.hash("pc://shop/adv/lists", {ap_id : '{$ap_id}'})
}
function selectedLink() {
ns.select_link('', function (data) {
for (var o in data) {
if (data[o] == null) delete data[o];
}
$("input[name='adv_url']").val(JSON.stringify(data));
$(".adv-url-show").text(data.title);
});
}
</script>

View File

@@ -0,0 +1,146 @@
<style>
.layui-colorpicker-main-input div.layui-inline{margin-right: 0;}
.layui-colorpicker-main-input input.layui-input{width: 130px;height: 34px;}
</style>
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>广告位置名:</label>
<div class="layui-input-block">
<input name="ap_name" type="text" lay-verify="required" class="layui-input len-long">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>广告关键字:</label>
<div class="layui-input-block">
<input name="keyword" type="text" lay-verify="required" class="layui-input len-long">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">广告位简介:</label>
<div class="layui-input-block len-long">
<textarea name="ap_intro" class="layui-textarea" maxlength="150"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">建议广告图片宽度:</label>
<div class="layui-input-block">
<input name="ap_width" value="1920" type="number" lay-verify="int" class="layui-input len-short">
</div>
<div class="word-aux">单位px &nbsp;&nbsp; 宽度值不能小于0首页轮播图一般为1920px * 400px</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">建议广告图片高度:</label>
<div class="layui-input-block">
<input name="ap_height" value="400" type="number" lay-verify="int" class="layui-input len-short">
</div>
<div class="word-aux">单位px &nbsp;&nbsp; 高度值不能小于0首页轮播图一般为1920px * 400px</div>
</div>
<!--<div class="layui-form-item">-->
<!--<label class="layui-form-label">广告位类型:</label>-->
<!--<div class="layui-input-inline" id="type">-->
<!--<input type="radio" name="type" lay-filter="type" value="1" title="电脑端" checked>-->
<!--<input type="radio" name="type" lay-filter="type" value="2" title="手机端" >-->
<!--</div>-->
<!--</div>-->
<div class="layui-form-item">
<label class="layui-form-label">广告位背景色:</label>
<div class="layui-input-inline">
<div id="bg_color"></div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否启用:</label>
<div class="layui-input-block">
<input type="checkbox" name="state" value="1" lay-skin="switch" lay-filter="state" checked/>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backPcAdvIndex()">返回</button>
</div>
<input type="hidden" name="ap_background_color" id="ap_background_color" value="#FFFFFF" />
</div>
<script>
layui.use(['form', 'colorpicker'], function () {
var form = layui.form,
colorpicker = layui.colorpicker,
repeat_flag = false; //防重复标识
form.render();
/**
* 颜色
*/
colorpicker.render({
elem: '#bg_color', //绑定元素
color: "#FFFFFF",
done: function(color) {
$(".tdrag-name").css("color", color);
$("#ap_background_color").val(color);
}
});
/**
* 监听提交
*/
form.on('submit(save)', function(data) {
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("pc://shop/adv/addPosition"),
data: data.field,
dataType: 'JSON',
type: 'POST',
success: function(res) {
repeat_flag = false;
if (res.code == 0) {
layer.confirm('添加成功', {
title:'操作提示',
btn: ['返回列表', '继续添加'],
yes: function(index, layero) {
location.hash = ns.hash("pc://shop/adv/index")
layer.close(index);
},
btn2: function(index, layero) {
listenerHash(); // 刷新页面
layer.close(index);
}
});
} else {
layer.msg(res.message);
}
}
});
});
/**
* 表单验证
*/
form.verify({
int: function (value) {
if (value == '') {
return;
}
if (value < 0 || value%1 != 0) {
return '请输入0或正整数'
}
}
});
});
function backPcAdvIndex() {
location.hash = ns.hash("pc://shop/adv/index")
}
</script>

View File

@@ -0,0 +1,268 @@
<style>
.adv-url-show{margin-right: 10px;}
.layui-colorpicker-main-input div.layui-inline{margin-right: 0;}
.layui-colorpicker-main-input input.layui-input{width: 130px;height: 34px;}
.iconreview{margin-right: 20px;}
</style>
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>广告名称:</label>
<div class="layui-input-block">
<input name="adv_title" type="text" value="{$adv_info.adv_title}" lay-verify="required" class="layui-input len-long">
</div>
</div>
{notempty name="$adv_position_list"}
<div class="layui-form-item">
<label class="layui-form-label">所属广告位:</label>
<div class="layui-input-block len-mid">
<select name="ap_id" lay-filter="ap_id">
{foreach $adv_position_list as $adv_position_k => $adv_position_v}
<option value="{$adv_position_v.ap_id}" data-type="{$adv_position_v.type}" data-width="{$adv_position_v.ap_width}" data-height="{$adv_position_v.ap_height}" {if condition="$adv_position_v.ap_id == $adv_info.ap_id"}selected{/if} >{$adv_position_v.ap_name}</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item" data-type="1" {if $type == 2}style="display: none"{/if}>
<label class="layui-form-label">PC端广告链接</label>
<div class="layui-input-block len-mid">
<select name="pc_link" lay-filter="pc_link">
<option value="">请选择</option>
{foreach $pc_link as $k => $v}
<option value="{$v.url}" {if $adv_info.adv_url && (json_decode($adv_info.adv_url,true)['url'] ?? '') == $v.url}selected{/if}>{$v.title}</option>
{/foreach}
<option value="diy"{if $adv_info.adv_url && (json_decode($adv_info.adv_url,true)['title'] ?? '') == '自定义'}selected{/if}>自定义</option>
</select>
</div>
</div>
<div class="layui-form-item" data-type="2" {if $type == 1}style="display: none"{/if}>
<label class="layui-form-label">移动端广告链接:</label>
<div class="layui-input-block len-mid">
<span class="adv-url-show"></span>
<button class="layui-btn layui-btn-primary sm" onclick="selectedLink()">选择链接</button>
</div>
</div>
<input name="adv_url" type="hidden" value="{$adv_info.adv_url}" />
{/notempty}
<div class="layui-form-item">
<label class="layui-form-label">广告图片:</label>
<div class="layui-input-block">
<div class="upload-img-block img-upload">
<div class="upload-img-box {notempty name="$adv_info['adv_image']"}hover{/notempty}">
<div class="upload-default" id="adv_image">
{if condition="$adv_info.adv_image"}
<div id="preview_adv_image" class="preview_img">
<img layer-src src="{:img($adv_info.adv_image)}" class="img_prev"/>
</div>
{else/}
<div class="upload">
<i class="iconfont iconshangchuan"></i>
<p>点击上传</p>
</div>
{/if}
</div>
<div class="operation">
<div>
<i title="图片预览" class="iconfont iconreview js-preview" ></i>
<i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
</div>
<div class="replace_img js-replace">点击替换</div>
</div>
<input type="hidden" name="adv_image" value="{$adv_info.adv_image}">
</div>
<!-- <div class="upload-img-box icon">
{if condition="$adv_info.adv_image"}
<img layer-src src="{:img($adv_info.adv_image)}" />
{else/}
<div class="upload-default">
<i class="iconfont iconshangchuan"></i>
<p>点击上传</p>
</div>
{/if}
</div>
<p id="adv_image" class=" {if condition="$adv_info.adv_image"} replace {else/} no-replace{/if}">替换</p>
<input type="hidden" name="adv_image" value="{$adv_info.adv_image}">
<i class="del {if condition="$adv_info.adv_image"}show{/if}">x</i> -->
</div>
</div>
<div class="word-aux">建议宽度<span class="pic_width">{$adv_info['ap_width']}</span>px 建议高度<span class="pic_height">{$adv_info['ap_height']}</span>px</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序:</label>
<div class="layui-input-block">
<input name="slide_sort" value="{$adv_info.slide_sort}" type="number" placeholder="排序" lay-verify="num" class="layui-input len-short">
</div>
<div class="word-aux">排序值必须为整数</div>
</div>
<div class="layui-form-item" style="display: none">
<label class="layui-form-label">广告价格:</label>
<div class="layui-input-block">
<input name="price" value="{$adv_info.price}" type="number" placeholder="广告价格" lay-verify="flo" class="layui-input len-short">
</div>
<div class="word-aux">单位:元 &nbsp;&nbsp; 价格不能小于0可以保留两位小数</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">背景色:</label>
<div class="layui-input-inline">
<div id="bg_color"></div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否启用:</label>
<div class="layui-input-block">
<input type="checkbox" name="state" value="1" lay-skin="switch" lay-filter="state" {if condition="$adv_info.state == 1"} checked {/if} />
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backPcAdvList()">返回</button>
</div>
<input type="hidden" name="background" id="background" value="{$adv_info.background}" />
<input type="hidden" name="adv_id" value="{$adv_info.adv_id}" />
</div>
<script>
var color = $("#background").val();
var adv_url_json = $("input[name='adv_url']").val();
var ap_id = '{$ap_id}';
if(adv_url_json) adv_url_json = JSON.parse(adv_url_json);
$(".adv-url-show").text(adv_url_json.title);
layui.use(['form', 'colorpicker'], function () {
var form = layui.form,
colorpicker = layui.colorpicker,
repeat_flag = false; //防重复标识
form.render();
form.on('select(ap_id)', function(data){
var type = $(data.elem).find("option:selected").attr("data-type");
var width = $(data.elem).find("option:selected").attr("data-width");
var height = $(data.elem).find("option:selected").attr("data-height");
$(".pic_width").text(width);
$(".pic_height").text(height);
$("[data-type]").hide();
$("[data-type='"+ type+"']").show();
});
form.on('select(pc_link)', function(data){
var title = $(data.elem).find("option:selected").text();
if(data.value != 'diy'){
$("input[name='adv_url']").val(JSON.stringify({
"title": title,
"url": data.value
}));
}else{
layer.prompt({
formType: 2,
value :$("input[name='adv_url']").val() ? JSON.parse($("input[name='adv_url']").val()).url : '',
title: '自定义链接地址',
area: ['450px', '100px'],
cancel : function () {
$("input[name='url']").val("");
}
}, function(value, index, elem){
$("input[name='adv_url']").val(JSON.stringify({
"title": title,
"url": value
}));
layer.close(index);
});
}
});
/**
* 颜色
*/
colorpicker.render({
elem: '#bg_color', //绑定元素
color: color,
done: function(color) {
$(".tdrag-name").css("color", color);
$("#background").val(color);
}
});
// 广告图片
var logo_upload = new Upload({
elem: '#adv_image'
});
/**
* 监听提交
*/
form.on('submit(save)', function(data) {
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("pc://shop/adv/editAdv"),
data: data.field,
dataType: 'JSON',
type: 'POST',
success: function(res) {
repeat_flag = false;
if (res.code == 0) {
layer.confirm('编辑成功', {
title:'操作提示',
btn: ['返回列表', '继续操作'],
yes: function(index, layero) {
location.hash = ns.hash("pc://shop/adv/lists", {ap_id:ap_id})
layer.close(index);
},
btn2: function(index, layero) {
layer.close(index);
}
});
} else {
layer.msg(res.message);
}
}
});
});
/**
* 表单验证
*/
form.verify({
num: function (value) {
let reg = ns.getRegexp('>=0num');
if (value !== '' && !reg.test(value)) {
return '排序数值必须为大于或等于0的整数'
}
},
flo: function (value) {
let reg = ns.getRegexp('>=0float2');
if (value !== '' && !reg.test(value)) {
return '价格必须大于或等于0最多保留两位小数'
}
}
});
});
function backPcAdvList() {
location.hash = ns.hash("pc://shop/adv/lists", {ap_id:ap_id})
}
function selectedLink() {
ns.select_link(adv_url_json, function (data) {
for (var o in data) {
if (data[o] == null) delete data[o];
}
$("input[name='adv_url']").val(JSON.stringify(data));
$(".adv-url-show").text(data.title);
});
}
</script>

View File

@@ -0,0 +1,148 @@
<style>
.layui-colorpicker-main-input div.layui-inline{margin-right: 0;}
.layui-colorpicker-main-input input.layui-input{width: 130px;height: 34px;}
</style>
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>广告位置名:</label>
<div class="layui-input-block">
<input name="ap_name" type="text" value="{$info.ap_name}" lay-verify="required" class="layui-input len-long {if condition="$info.is_system == 1"}layui-btn-disabled{/if}" {if condition="$info.is_system == 1"}disabled{/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>广告关键字:</label>
<div class="layui-input-block">
<input name="keyword" value='{$info.keyword}'type="text" lay-verify="required" class="layui-input len-long {if condition="$info.is_system == 1"}layui-btn-disabled{/if}" {if condition="$info.is_system == 1"}disabled{/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">广告位简介:</label>
<div class="layui-input-block len-long">
<textarea name="ap_intro" maxlength="150" class="layui-textarea {if condition="$info.is_system == 1"}layui-btn-disabled{/if}" {if condition="$info.is_system == 1"}disabled{/if}>{$info.ap_intro}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">建议广告图片宽度:</label>
<div class="layui-input-block">
<input name="ap_width" value="{$info.ap_width}" type="number" lay-verify="int" class="layui-input len-short {if condition="$info.is_system == 1"}layui-btn-disabled{/if}" {if condition="$info.is_system == 1"}disabled{/if}>
</div>
<div class="word-aux">单位px &nbsp;&nbsp; 宽度值不能小于0首页轮播图一般为1920px * 400px</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">建议广告图片高度:</label>
<div class="layui-input-block">
<input name="ap_height" value="{$info.ap_height}" type="number" lay-verify="int" class="layui-input len-short {if condition="$info.is_system == 1"}layui-btn-disabled{/if}" {if condition="$info.is_system == 1"}disabled{/if}>
</div>
<div class="word-aux">单位px &nbsp;&nbsp; 高度值不能小于0首页轮播图一般为1920px * 400px</div>
</div>
<!--<div class="layui-form-item">-->
<!--<label class="layui-form-label">广告位类型:</label>-->
<!--<div class="layui-input-inline" id="type">-->
<!--<input type="radio" name="type" lay-filter="type" value="1" title="电脑端" {if condition="$info.type == 1"}checked{/if}>-->
<!--<input type="radio" name="type" lay-filter="type" value="2" title="手机端" {if condition="$info.type == 2"}checked{/if}>-->
<!--</div>-->
<!--</div>-->
<div class="layui-form-item">
<label class="layui-form-label">广告位背景色:</label>
<div class="layui-input-inline">
<div id="font_color"></div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否启用:</label>
<div class="layui-input-block">
<input type="checkbox" name="state" value="1" lay-skin="switch" lay-filter="state" {if condition="$info.state == 1"} checked {/if} />
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backPcAdvIndex()">返回</button>
</div>
<input type="hidden" name="ap_id" value="{$info.ap_id}" />
<input type="hidden" name="ap_background_color" id="ap_background_color" value="{$info.ap_background_color}" />
</div>
<script>
var colorN = $("#ap_background_color").val();
layui.use(['form', 'colorpicker'], function () {
var form = layui.form,
colorpicker = layui.colorpicker,
repeat_flag = false; //防重复标识
form.render();
/**
* 颜色
*/
colorpicker.render({
elem: '#font_color', //绑定元素
color: colorN,
done: function(color) {
$(".tdrag-name").css("color", color);
$("#ap_background_color").val(color);
}
});
/**
* 监听提交
*/
form.on('submit(save)', function(data) {
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("pc://shop/adv/editPosition"),
data: data.field,
dataType: 'JSON',
type: 'POST',
success: function(res) {
repeat_flag = false;
if (res.code == 0) {
layer.confirm('编辑成功', {
title:'操作提示',
btn: ['返回列表', '继续操作'],
yes: function(index, layero) {
location.hash = ns.hash("pc://shop/adv/index")
layer.close(index);
},
btn2: function(index, layero) {
layer.close(index);
}
});
} else {
layer.msg(res.message);
}
}
});
});
/**
* 表单验证
*/
form.verify({
int: function (value) {
if (value == '') {
return;
}
if (value < 0 || value%1 != 0) {
return '请输入0或正整数'
}
}
});
});
function backPcAdvIndex() {
location.hash = ns.hash("pc://shop/adv/index")
}
</script>

243
addon/pc/shop/view/adv/index.html Executable file
View File

@@ -0,0 +1,243 @@
<div class="single-filter-box">
<div>
<!--<button class="layui-btn" onclick="add()">添加广告位</button>-->
</div>
<div class="layui-form" style="margin-left: unset">
<div class="layui-input-inline">
<input type="text" name="search_text" placeholder="请输入广告位置" class="layui-input">
<button type="button" class="layui-btn layui-btn-primary" lay-filter="search" lay-submit>
<i class="layui-icon">&#xe615;</i>
</button>
</div>
</div>
</div>
<!-- 列表 -->
<table id="adv_position" lay-filter="adv_position"></table>
<!-- 广告位宽度 -->
<script type="text/html" id="ap_width">
<input name="ap_width" type="number" onchange="editPosition({{d.ap_id}}, 'ap_width', this)" value="{{d.ap_width}}" class="layui-input sort-len">
</script>
<!-- 广告位高度 -->
<script type="text/html" id="ap_height">
<input name="ap_height" type="number" onchange="editPosition({{d.ap_id}}, 'ap_height', this)" value="{{d.ap_height}}" class="layui-input sort-len">
</script>
<!-- 操作 -->
<script type="text/html" id="action">
<div class="table-btn">
<a class="layui-btn" lay-event="manager">管理广告</a>
<a class="layui-btn" lay-event="edit">编辑</a>
<!-- <a class="layui-btn" lay-event="delete">删除</a>-->
</div>
</script>
<!-- 批量删除 -->
<script type="text/html" id="toolbarOperation">
<button class="layui-btn layui-btn-primary" lay-event="del">批量删除</button>
</script>
<!-- 批量删除 -->
<script type="text/html" id="batchOperation">
<button class="layui-btn layui-btn-primary" lay-event="del">批量删除</button>
</script>
<script>
var table, form,
repeat_flag = false; //防重复标识
layui.use('form', function() {
form = layui.form;
form.render();
form.on('switch(state)', function(data){
let state = data.elem.checked ? 1 : 0;
let ap_id = $(data.elem).attr('data-ap-id');
if(repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("pc://shop/adv/alterAdvPositionState"),
data: {
ap_id : ap_id,
state : state,
},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
}
});
})
table = new Table({
elem: '#adv_position',
url: ns.url("pc://shop/adv/index"),
cols: [
[
// {
// width: '3%',
// type: 'checkbox',
// unresize: 'false'
// },
{
field: 'ap_name',
title: '广告位置名',
unresize: 'false',
width: '30%',
}, {
field: 'keyword',
title: '广告关键字',
unresize: 'false',
width: '30%',
},{
title: '是否是系统',
unresize: 'false',
templet: function(data) {
return data.is_system == 0 ? "否" : "是";
},
width: '10%',
},{
title: '是否启用',
unresize: 'false',
templet: function(data) {
return '<input type="checkbox" name="state" value="1" lay-skin="switch" lay-filter="state" data-ap-id="'+ data.ap_id +'" '+ (data.state == 1 ? 'checked' : '') +' />';
},
width: '10%',
}, {
title: '操作',
toolbar: '#action',
unresize: 'false',
align : 'right'
}]
],
// toolbar: "#toolbarOperation",
// bottomToolbar: "#batchOperation"
});
/**
* 监听工具栏操作
*/
table.tool(function(obj) {
var data = obj.data;
switch (obj.event) {
case 'manager': //管理
location.hash = ns.hash("pc://shop/adv/lists?ap_id=" + data.ap_id);
break;
case 'edit': //编辑
location.hash = ns.hash("pc://shop/adv/editPosition?ap_id=" + data.ap_id);
break;
case 'delete': //删除
deletePosition(data.ap_id);
break;
}
});
/**
* 批量操作
*/
table.toolbar(function(obj) {
if (obj.data.length < 1) {
layer.msg('请选择要操作的数据');
return;
}
switch (obj.event) {
case "del":
var id_array = new Array();
for (i in obj.data) id_array.push(obj.data[i].ap_id);
deletePosition(id_array.toString());
break;
}
});
table.bottomToolbar(function(obj) {
if (obj.data.length < 1) {
layer.msg('请选择要操作的数据');
return;
}
switch (obj.event) {
case "del":
var id_array = new Array();
for (i in obj.data) id_array.push(obj.data[i].ap_id);
deletePosition(id_array.toString());
break;
}
});
/**
* 删除
*/
function deletePosition(ap_ids) {
if (repeat_flag) return false;
repeat_flag = true;
layer.confirm('删除将会影响广告位的使用,确定要删除吗?', function(index) {
layer.close(index);
$.ajax({
url: ns.url("pc://shop/adv/deletePosition"),
data: {'ap_ids': ap_ids},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
}, function() {
layer.close();
repeat_flag = false;
});
}
/**
* 监听搜索
*/
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
});
});
// 监听单元格编辑--编辑宽度
function editPosition(id, type, event) {
var value = $(event).val();
if (!new RegExp("^\\d+$").test(value)) {
layer.msg("广告位宽高必须为大于等于0的整数");
return;
}
$.ajax({
type: 'POST',
url: ns.url("pc://shop/adv/editPositionField"),
data: {
'type': type,
'value': value,
'ap_id': id
},
dataType: 'JSON',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
table.reload();
}
}
});
}
function add() {
location.hash = ns.hash("pc://shop/adv/addPosition");
}
</script>

294
addon/pc/shop/view/adv/lists.html Executable file
View File

@@ -0,0 +1,294 @@
<div>
<button class="layui-btn" onclick="add()">添加广告</button>
<div class="layui-form" style="display:none;">
<div class="layui-input-inline">
<select name="ap_id">
<option value="">所属广告位</option>
{notempty name="adv_position"}
{foreach name="adv_position" item="vo"}
<option value="{$vo.ap_id}" {if $ap_id == $vo.ap_id}selected{/if}>{$vo.ap_name}</option>
{/foreach}
{/notempty}
</select>
</div>
<div class="layui-input-inline len-mid">
<input type="text" name="search_text" placeholder="请输入广告名称" class="layui-input">
<button type="button" class="layui-btn layui-btn-primary" lay-filter="search" lay-submit>
<i class="layui-icon">&#xe615;</i>
</button>
</div>
</div>
</div>
<!-- 列表 -->
<table id="adv_list" lay-filter="adv_list"></table>
<!-- 广告图片 -->
<script type="text/html" id="adv_image">
<div class="img-box">
<img layer-src src="{{ns.img(d.adv_image)}}" />
</div>
</script>
<!-- 排序 -->
<script type="text/html" id="slide_sort">
<input name="slide_sort" type="number" onchange="editSort({{d.adv_id}},'slide_sort', this)" value="{{d.slide_sort}}" class="layui-input sort-len">
</script>
<!-- 广告链接 -->
<script type="text/html" id="adv_url">
<a href="{{d.adv_url}}">{{d.adv_url}}</a>
</script>
<!-- 操作 -->
<script type="text/html" id="action">
<div class="table-btn">
<a class="layui-btn" lay-event="edit">编辑</a>
<a class="layui-btn" lay-event="delete">删除</a>
</div>
</script>
<!-- 批量删除 -->
<script type="text/html" id="toolbarOperation">
<button class="layui-btn layui-btn-primary" lay-event="del">批量删除</button>
</script>
<!-- 批量删除 -->
<script type="text/html" id="batchOperation">
<button class="layui-btn layui-btn-primary" lay-event="del">批量删除</button>
</script>
<script>
var ap_id = '{$ap_id}';
layui.use('form', function () {
var table,
form = layui.form,
repeat_flag = false; //防重复标识
form.render();
form.on('switch(state)', function(data){
let state = data.elem.checked ? 1 : 0;
let adv_id = $(data.elem).attr('data-adv-id');
if(repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("pc://shop/adv/alterAdvState"),
data: {
adv_id : adv_id,
state : state,
},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
}
});
})
table = new Table({
elem: '#adv_list',
url: ns.url("pc://shop/adv/lists"),
where: {
'ap_id': '{$ap_id}'
},
cols: [
[{
width: '3%',
type: 'checkbox',
unresize: 'false',
}, {
field: 'adv_title',
title: '广告名称',
unresize: 'false',
width: '15%'
}, {
title: '广告链接',
unresize: 'false',
width: '15%',
templet: function(data) {
var adv_url = data.adv_url;
if(adv_url){
adv_url = JSON.parse(data.adv_url);
return adv_url.title ? adv_url.title : '';
}else{
return '';
}
}
}, {
field: 'ap_name',
title: '所属广告位',
unresize: 'false',
templet:'#ap_posi',
width: '15%'
}, {
title: '广告图片',
unresize: 'false',
templet: '#adv_image',
width: '15%'
}, {
field: 'slide_sort',
title: '排序',
unresize: 'false',
templet: '#slide_sort',
width: '12%',
sort: true
}, {
title: '是否启用',
unresize: 'false',
templet: function(data) {
return '<input type="checkbox" name="state" value="1" lay-skin="switch" lay-filter="state" data-adv-id="'+ data.adv_id +'" '+ (data.state == 1 ? 'checked' : '') +' />';
},
width: '10%',
},{
title: '操作',
toolbar: '#action',
unresize: 'false',
align:'right'
}]
],
bottomToolbar: "#batchOperation",
toolbar: "#toolbarOperation"
});
/**
* 监听工具栏操作
*/
table.tool(function(obj) {
var data = obj.data;
switch (obj.event) {
case 'edit': //编辑
location.hash = ns.hash("pc://shop/adv/editadv",{"adv_id":data.adv_id, ap_id:ap_id});
break;
case 'delete': //删除
deleteAdv(data.adv_id);
break;
}
});
/**
* 批量操作
*/
table.bottomToolbar(function(obj) {
if (obj.data.length < 1) {
layer.msg('请选择要操作的数据');
return;
}
switch (obj.event) {
case "del":
var id_array = new Array();
for (i in obj.data) id_array.push(obj.data[i].adv_id);
deleteAdv(id_array.toString());
break;
}
});
table.on("sort",function (obj) {
table.reload({
page: {
curr: 1
},
where: {
order:obj.field,
sort:obj.type
}
});
});
/**
* 批量操作
*/
table.toolbar(function(obj) {
if (obj.data.length < 1) {
layer.msg('请选择要操作的数据');
return;
}
switch (obj.event) {
case "del":
var id_array = new Array();
for (i in obj.data) id_array.push(obj.data[i].adv_id);
deleteAdv(id_array.toString());
break;
}
});
/**
* 删除
*/
function deleteAdv(adv_ids) {
if (repeat_flag) return false;
repeat_flag = true;
layer.confirm('确定要删除该广告吗?', function(index) {
layer.close(index);
$.ajax({
url: ns.url("pc://shop/adv/deleteAdv"),
data: {'adv_ids': adv_ids},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
}, function () {
layer.close();
repeat_flag = false;
});
}
/**
* 监听搜索
*/
form.on('submit(search)', function(data){
ap_id = $("select[name='ap_id']").val();
table.reload({
page: {
curr: 1
},
where: data.field
});
});
});
// 监听单元格编辑
function editSort(adv_id, type, event){
var value = $(event).val();
if(!new RegExp("^-?[1-9]\\d*$").test(value)){
layer.msg("排序号只能是整数");
return ;
}
if(value<0){
layer.msg("排序号必须大于0");
return ;
}
$.ajax({
type: 'POST',
url: ns.url("pc://shop/adv/editAdvField"),
data: {'type': type, 'value': value, 'adv_id': adv_id},
dataType: 'JSON',
success: function(res) {
layer.msg(res.message);
if(res.code==0){
table.reload();
}
}
});
}
function add() {
location.hash = ns.hash("pc://shop/adv/addAdv", {ap_id : ap_id});
}
</script>

View File

@@ -0,0 +1,104 @@
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>链接名称:</label>
<div class="layui-input-block">
<input name="link_title" type="text" lay-verify="required" class="layui-input len-mid" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>链接地址:</label>
<div class="layui-input-block">
<input name="link_url" type="text" lay-verify="required" class="layui-input len-mid" >
</div>
<div class="word-aux">当填写链接链接地址后点击标题将打开链接地址链接格式请以http://开头</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否显示:</label>
<div class="layui-input-block">
<input type="checkbox" name="is_show" value="1" lay-skin="switch" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否新窗口打开:</label>
<div class="layui-input-block">
<input type="checkbox" name="is_blank" value="1" lay-skin="switch" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required"></span>排序:</label>
<div class="layui-input-block">
<input name="link_sort" type="text" value="0" class="layui-input len-short">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">导航图标:</label>
<div class="layui-input-block">
<div class="upload-img-block img-upload">
<div class="upload-img-box">
<div class="upload-default" id="imgUpload">
<div class="upload">
<i class="iconfont iconshangchuan"></i>
<p>点击上传</p>
</div>
</div>
<div class="operation">
<div>
<i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
<i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
</div>
<div class="replace_img js-replace">点击替换</div>
</div>
<input type="hidden" name="link_pic" value="">
</div>
</div>
</div>
<div class="word-aux">
<p>建议图片尺寸不能大于100k。图片格式jpg、png、jpeg。</p>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
</div>
</div>
<script>
layui.use(['form'], function() {
var form = layui.form, repeat_flag=false;
// 普通图片上传
var logo_upload = new Upload({
elem: '#imgUpload',
size:100
});
form.on('submit(save)', function(data) {
if(!data.field.link_url){
layer.msg("请输入链接地址");
return;
}
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("pc://shop/pc/addLink"),
data: data.field,
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
location.hash = ns.hash("pc://shop/pc/linklist");
}
repeat_flag = false;
}
});
});
});
</script>

View File

@@ -0,0 +1,137 @@
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>导航名称:</label>
<div class="layui-input-block">
<input name="nav_title" type="text" lay-verify="required" class="layui-input len-mid" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>链接地址:</label>
<div class="layui-input-block len-mid">
<select name="link" lay-filter="link">
<option value="">请选择</option>
{foreach $link as $k => $v}
<option value="{$v.url}">{$v.title}</option>
{/foreach}
<option value="diy">自定义</option>
</select>
<input name="nav_url" type="hidden" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否显示:</label>
<div class="layui-input-block">
<input type="checkbox" name="is_show" value="1" lay-skin="switch" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否新窗口打开:</label>
<div class="layui-input-block">
<input type="checkbox" name="is_blank" value="1" lay-skin="switch" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required"></span>排序:</label>
<div class="layui-input-block">
<input name="sort" type="text" value="0" class="layui-input len-short">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">导航图标:</label>
<div class="layui-input-block">
<div class="upload-img-block img-upload">
<div class="upload-img-box">
<div class="upload-default" id="imgUpload">
<div class="upload">
<i class="iconfont iconshangchuan"></i>
<p>点击上传</p>
</div>
</div>
<div class="operation">
<div>
<i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
<i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
</div>
<div class="replace_img js-replace">点击替换</div>
</div>
<input type="hidden" name="nav_icon" value="">
</div>
</div>
</div>
<div class="word-aux">
<p>建议图片尺寸不能大于100k。图片格式jpg、png、jpeg。</p>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
</div>
</div>
<script>
layui.use(['form'], function() {
var form = layui.form, repeat_flag=false;
form.render();
form.on('select(link)', function(data){
var title = $(data.elem).find("option:selected").text();
if(data.value != 'diy'){
$("input[name='nav_url']").val(JSON.stringify({
title : title,
url:data.value
}));
}else{
var value = $("input[name='nav_url']").val();
if(value) value = JSON.parse(value).url;
layer.prompt({
formType: 2,
value :value,
title: '自定义链接地址',
area: ['450px', '100px'],
cancel : function () {
$("input[name='nav_url']").val("");
}
}, function(value, index, elem){
$("input[name='nav_url']").val(JSON.stringify({
title : title,
url:value
}));
layer.close(index);
});
}
});
// 普通图片上传
var logo_upload = new Upload({
elem: '#imgUpload',
size:100
});
form.on('submit(save)', function(data) {
if(!data.field.nav_url){
layer.msg("请输入链接地址");
return;
}
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("pc://shop/pc/addNav"),
data: data.field,
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
location.hash = ns.hash("pc://shop/pc/navlist");
}
repeat_flag = false;
}
});
});
});
</script>

View File

@@ -0,0 +1,128 @@
<style>
.new-footer {
position: fixed;
bottom: 0px;
left: 180px;
width: 89%;
height: 50px;
}
.new-footer .layui-btn1 {
position: absolute;
bottom: 20px;
left: 790px;
}
.new-footer .layui-btn2 {
position: absolute;
bottom: 20px;
left: 870px;
}
</style>
<div class="screen layui-collapse" lay-filter="selection_panel">
<div class="layui-colla-item">
<form class="layui-colla-content layui-form layui-show" lay-filter="addForm">
<div class="layui-form-item">
<label class="layui-form-label">模板选择</label>
<div class="layui-input-block">
<input type="radio" name="category" value="1" lay-filter="category_filter" title="一级分类" {$config_info.category==1?'checked':''}>
<input type="radio" name="category" value="2" lay-filter="category_filter" title="二级分类" {$config_info.category==2?'checked':''}>
<input type="radio" name="category" value="3" lay-filter="category_filter" title="三级分类" {$config_info.category==3?'checked':''}>
</div>
</div>
<div class="layui-form-item">
<input type="hidden" name="img" id="img" value="{$config_info.img}" />
<label class="layui-form-label">分类图</label>
<div class="layui-input-block">
<button type="button" class="layui-btn layui-btn-primary propertychange noimg">无图模式</button>
<button type="button" class="layui-btn layui-btn-primary propertychange youimg">有图模式</button>
</div>
</div>
<div class="layui-form form-wrap new-footer">
<div class="form-row">
<button class="layui-btn layui-btn1" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn2 layui-btn-primary" lay-submit lay-filter="back">返回</button>
</div>
</div>
</form>
</div>
</div>
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<img class="index-classify" src="" alt="" width="800" >
</div>
</div>
</div>
<div class="footer"></div>
<script>
var template = {$config_info.category};
var img = {$config_info.img};
var classifyData = {
template: template,
img: img
};
renderImg();
layui.use(['form'], function() {
var form = layui.form;
form.on('radio(category_filter)', function (data) {
classifyData.template = data.value;
// classifyData.img = 0;
renderImg();
// $(".noimg").addClass('border-color text-color').siblings().removeClass('border-color text-color');
});
form.on('submit(save)', function (data) {
$.ajax({
type: 'post',
dataType: 'json',
url: ns.url("pc://shop/pc/category"),
data: data.field,
success: function (res) {
layer.msg(res.message);
if (res.code == 0) {
listenerHash(); // 刷新页面
}
}
});
return false;
});
form.on('submit(back)', function (data) {
history.go(-1);
return false;
});
if(classifyData.img==1){
$(".youimg").addClass('border-color text-color');
$('.noimg').removeClass('border-color text-color');
}else{
$('.noimg').addClass('border-color text-color');
$('.youimg').removeClass('border-color text-color');
}
});
$('.youimg').click(function () {
classifyData.img = 1;
$("#img").attr("value","1");
$(".youimg").addClass('border-color text-color');
$('.noimg').removeClass('border-color text-color');
renderImg();
});
$('.noimg').click(function () {
classifyData.img = 0;
$("#img").attr("value","0");
$('.noimg').addClass('border-color text-color');
$('.youimg').removeClass('border-color text-color');
renderImg();
});
function renderImg() {
var imgSrc = "public/static/img/shop/category_" + classifyData.template + '_' + classifyData.img + '.png';
imgSrc = ns.img(imgSrc);
$(".index-classify").attr("src",imgSrc);
}
</script>

View File

@@ -0,0 +1,246 @@
<link rel="stylesheet" href="ADDON_PC_CSS/edit_floor.css">
<style>
.upload-default{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
</style>
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>楼层名称:</label>
<div class="layui-input-block">
<input name="title" type="text" lay-verify="title" class="layui-input len-mid" {notempty name="$floor_info"}value="{$floor_info['title']}"{/notempty} />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>楼层模板:</label>
<div class="layui-input-block len-mid">
<select name="block_id" lay-filter="block_id" lay-verify="block_id">
<option value="">请选择</option>
{foreach name="$floor_block_list" item="vo"}
<option value="{$vo.id}" data-value='{$vo.value}' data-block-id="{$vo.id}" {if condition="!empty($floor_info) && $floor_info['block_id'] == $vo['id']" }selected{/if}>{$vo.title}</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否显示:</label>
<div class="layui-input-block">
<input type="checkbox" name="state" value="1" lay-skin="switch" {if condition="!empty($floor_info) && $floor_info['state'] == 1" }checked{elseif condition="!empty($floor_info) && $floor_info['state'] == 0"}{else/}checked{/if} />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required"></span>排序:</label>
<div class="layui-input-block">
<input name="sort" type="text" class="layui-input len-short" value="{if condition="!empty($floor_info)" }{$floor_info['sort']}{else/}0{/if}" />
</div>
</div>
<div id="app">
{foreach name="$floor_block_list" item="vo"}
{notempty name="$vo['value']"}
<{$vo['name']} :data='data' v-if="blockId == {$vo.id}">{$vo.title}</{$vo['name']}>
{/notempty}
{/foreach}
</div>
<input type="hidden" name="id" value="{$id}"/>
{notempty name="$floor_info"}
<input type="hidden" id="info" value='{$floor_info.value}' />
<input type="hidden" id="block_id" value='{$floor_info.block_id}' />
{/notempty}
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
</div>
</div>
<script type="text/html" id="setTitleHtml">
<div class="layui-form form-wrap set-title">
<div class="layui-form-item">
<label class="layui-form-label sm">{{# if(!('isTextRequired' in d) || ('isTextRequired' in d) && d.isTextRequired){ }}<span class="required">*</span>{{# } }}</label>
<div class="layui-input-block">
<input name="text" type="text" lay-verify="{{(!('isTextRequired' in d) || ('isTextRequired' in d) && d.isTextRequired) && 'required' || ''}}" class="layui-input len-mid" value="{{ d.text ? d.text : '' }}">
</div>
</div>
{{# if(d.textAlign){ }}
<div class="layui-form-item ">
<label class="layui-form-label sm">位置</label>
<div class="layui-input-block">
<input type="radio" name="textAlign" value="left" title="左边" {{(d.textAlign == 'left') && 'checked' || ''}}>
<input type="radio" name="textAlign" value="center" title="居中" {{(d.textAlign == 'center') && 'checked' || ''}}>
<input type="radio" name="textAlign" value="right" title="右边" {{(d.textAlign == 'right') && 'checked' || ''}}>
</div>
</div>
{{# } }}
<div class="layui-form-item">
<label class="layui-form-label sm">链接</label>
<div class="layui-input-block len-mid">
<select name="pc_link_text" lay-filter="pc_link_text">
<option value="">请选择</option>
{foreach $pc_link as $k => $v}
{{# if(d.link && d.link.title == '{$v.title}'){ }}
<option value="{$v.url}" selected>{$v.title}</option>
{{# }else{ }}
<option value="{$v.url}">{$v.title}</option>
{{# } }}
{/foreach}
{{# if(d.link && d.link.title == '自定义'){ }}
<option value="diy" selected>自定义</option>
{{# }else{ }}
<option value="diy">自定义</option>
{{# } }}
</select>
</div>
</div>
{{# if(d.link && d.link.title){ }}
<input name="text_link" type="hidden" value='{{ JSON.stringify(d.link) }}' />
{{# }else{ }}
<input name="text_link" type="hidden" />
{{# } }}
<div class="layui-form-item">
<label class="layui-form-label sm">颜色</label>
<div class="layui-input-block len-mid">
<div id="text_color"></div>
</div>
<input name="text_color" type="hidden" value="" class="layui-input len-short" id="text_color_input">
</div>
<div class="form-row sm">
<button class="layui-btn" lay-submit lay-filter="save_text">保存</button>
</div>
</div>
</script>
<script type="text/html" id="uploadImg">
<div class="layui-form form-wrap upload-img">
<div class="layui-form-item">
<label class="layui-form-label sm">图片</label>
<div class="layui-input-inline img-upload">
<input type="hidden" class="layui-input" name="upload_image" value="{{ d.url ? d.url : '' }}" />
<div class="upload-img-block icon">
<div class="upload-img-box" id="upload_image">
{{# if(d.url){ }}
<img src="{{ ns.img(d.url) }}" />
{{# }else{ }}
<div class="upload-default">
<i class="iconfont iconshangchuan"></i>
<p>点击上传</p>
</div>
{{# } }}
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label sm">链接</label>
<div class="layui-input-block len-mid">
<select name="pc_link_upload" lay-filter="pc_link_upload">
<option value="">请选择</option>
{foreach $pc_link as $k => $v}
{{# if(d.link && d.link.title == '{$v.title}'){ }}
<option value="{$v.url}" selected>{$v.title}</option>
{{# }else{ }}
<option value="{$v.url}">{$v.title}</option>
{{# } }}
{/foreach}
{{# if(d.link && d.link.title == '自定义'){ }}
<option value="diy" selected>自定义</option>
{{# }else{ }}
<option value="diy">自定义</option>
{{# } }}
</select>
</div>
</div>
{{# if(d.link && d.link.title){ }}
<input name="upload_link" type="hidden" value='{{ JSON.stringify(d.link) }}' />
{{# }else{ }}
<input name="upload_link" type="hidden" />
{{# } }}
<div class="form-row sm">
<button class="layui-btn" lay-submit lay-filter="save_upload">保存</button>
</div>
</div>
</script>
<script type="text/html" id="setCategoryHtml">
<div class="layui-form form-wrap set-category">
<div class="layui-form-item">
<label class="layui-form-label sm">商品分类</label>
<div class="layui-input-block len-mid">
<select name="goods_category" lay-filter="goods_category">
<option value="">请选择</option>
{foreach $category_list as $k => $v}
<option value="{$v.category_id}" data-category-name="{$v.category_name}">{$v.category_name}</option>
{notempty name="$v['child_list']"}
{foreach $v['child_list'] as $second_k => $second_v}
<option value="{$second_v.category_id}" data-category-name="{$second_v.category_name}">&nbsp;&nbsp;&nbsp;&nbsp;{$second_v.category_name}</option>
{notempty name="$second_v['child_list']"}
{foreach $second_v['child_list'] as $third_k => $third_v}
<option value="{$third_v.category_id}" data-category-name="{$third_v.category_name}">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{$third_v.category_name}</option>
{/foreach}
{/notempty}
{/foreach}
{/notempty}
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label sm">已选</label>
<div class="layui-input-block selected-wrap">
<ul>
{{# if(d.list){ }}
{{# for(var i=0;i<d.list.length;i++){ }}
<li>
<span>{{d.list[i].category_name}}</span>
<i class='delete-category' data-id="{{d.list[i].category_id}}">x</i>
</li>
{{# } }}
{{# } }}
</ul>
</div>
</div>
{{# if(d.list){ }}
<input name="category_list" type="hidden" value='{{ JSON.stringify(d.list) }}' />
<input name="category_ids" type="hidden" value="
{{# for(var i=0;i<d.list.length;i++){ }}
{{ d.list[i].category_id }}
{{# if((i+1)!=d.list.length){ }}
,
{{# } }}
{{# } }}" />
{{# }else{ }}
<input name="category_ids" type="hidden" />
<input name="category_list" type="hidden" />
{{# } }}
<div class="form-row sm">
<button class="layui-btn" lay-submit lay-filter="save_category">保存</button>
</div>
</div>
</script>
<script src="STATIC_JS/vue.js"></script>
<script src="ADDON_PC_JS/floor/edit.js"></script>
<script src="ADDON_PC_JS/floor/floor_style_1.js"></script>
<script src="ADDON_PC_JS/floor/floor_style_2.js"></script>
<script src="ADDON_PC_JS/floor/floor_style_3.js"></script>
<script src="ADDON_PC_JS/floor/floor_style_4.js"></script>

View File

@@ -0,0 +1,112 @@
<div class="layui-form form-wrap">
<input type="hidden" name="id" value="{$id}">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>链接名称:</label>
<div class="layui-input-block">
<input name="link_title" value="{$link_info['link_title']}" type="text" lay-verify="required" class="layui-input len-mid" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>链接地址:</label>
<div class="layui-input-block">
<input name="link_url" value="{$link_info['link_url']}" type="text" lay-verify="required" class="layui-input len-mid" >
</div>
<div class="word-aux">当填写链接链接地址后点击标题将打开链接地址链接格式请以http://开头</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否显示:</label>
<div class="layui-input-block">
<input type="checkbox" name="is_show" value="1" lay-skin="switch" {if condition="$link_info && $link_info.is_show == 1"} checked {/if} />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否新窗口打开:</label>
<div class="layui-input-block">
<input type="checkbox" name="is_blank" value="1" lay-skin="switch" {if condition="$link_info && $link_info.is_blank == 1"} checked {/if} />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required"></span>排序:</label>
<div class="layui-input-block">
<input name="link_sort" type="text" value="{$link_info['link_sort']}" class="layui-input len-short">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">导航图标:</label>
<div class="layui-input-block">
<div class="upload-img-block img-upload">
<div class="upload-img-box {notempty name="$link_info['link_pic']"}hover{/notempty}">
<div class="upload-default" id="imgUpload">
{if condition="$link_info.link_pic"}
<div id="preview_imgUpload" class="preview_img">
<img layer-src src="{:img($link_info.link_pic)}" class="img_prev"/>
</div>
{else/}
<div class="upload">
<i class="iconfont iconshangchuan"></i>
<p>点击上传</p>
</div>
{/if}
</div>
<div class="operation">
<div>
<i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
<i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
</div>
<div class="replace_img js-replace">点击替换</div>
</div>
<input type="hidden" name="link_pic" value="{$link_info.link_pic}">
</div>
</div>
</div>
<div class="word-aux">
<p>建议图片尺寸不能大于100k。图片格式jpg、png、jpeg。</p>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
</div>
</div>
<script>
layui.use(['form'], function() {
var form = layui.form, repeat_flag=false;
// 普通图片上传
var logo_upload = new Upload({
elem: '#imgUpload',
size:100
});
form.on('submit(save)', function(data) {
if(!data.field.link_url){
layer.msg("请输入链接地址");
return;
}
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("pc://shop/pc/editLink"),
data: data.field,
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
location.hash = ns.hash("pc://shop/pc/linklist");
}
repeat_flag = false;
}
});
});
});
</script>

View File

@@ -0,0 +1,145 @@
<div class="layui-form form-wrap">
<input type="hidden" name="id" value="{$nav_info.id}">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>导航名称:</label>
<div class="layui-input-block">
<input name="nav_title" type="text" lay-verify="required" class="layui-input len-mid" {if $nav_info} value="{$nav_info.nav_title}" {/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>链接地址:</label>
<div class="layui-input-block len-mid">
<select name="link" lay-filter="link">
<option value="">请选择</option>
{foreach $link as $k => $v}
<option value="{$v.url}" {if $nav_info && $nav_info.nav_url && json_decode($nav_info.nav_url,true)['title'] == $v.title}selected{/if}>{$v.title}</option>
{/foreach}
<option value="diy" {if $nav_info && $nav_info.nav_url && json_decode($nav_info.nav_url,true)['title'] == '自定义'}selected{/if}>自定义</option>
</select>
<input name="nav_url" type="hidden" {if $nav_info} value="{$nav_info.nav_url}" {/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否显示:</label>
<div class="layui-input-block">
<input type="checkbox" name="is_show" value="1" lay-skin="switch" {if condition="$nav_info && $nav_info.is_show == 1"} checked {/if} />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否新窗口打开:</label>
<div class="layui-input-block">
<input type="checkbox" name="is_blank" value="1" lay-skin="switch" {if condition="$nav_info && $nav_info.is_blank == 1"} checked {/if} />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required"></span>排序:</label>
<div class="layui-input-block">
<input name="sort" type="text" class="layui-input len-short" {if $nav_info} value="{$nav_info.sort}"{else /}value="0" {/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">导航图标:</label>
<div class="layui-input-block">
<div class="upload-img-block img-upload">
<div class="upload-img-box {notempty name="$nav_info['nav_icon']"}hover{/notempty}">
<div class="upload-default" id="imgUpload">
{if condition="$nav_info.nav_icon"}
<div id="preview_imgUpload" class="preview_img">
<img layer-src src="{:img($nav_info.nav_icon)}" class="img_prev"/>
</div>
{else/}
<div class="upload">
<i class="iconfont iconshangchuan"></i>
<p>点击上传</p>
</div>
{/if}
</div>
<div class="operation">
<div>
<i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
<i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
</div>
<div class="replace_img js-replace">点击替换</div>
</div>
<input type="hidden" name="nav_icon" value="{$nav_info.nav_icon}">
</div>
</div>
</div>
<div class="word-aux">
<p>建议图片尺寸不能大于100k。图片格式jpg、png、jpeg。</p>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
</div>
</div>
<script>
layui.use(['form'], function() {
var form = layui.form, repeat_flag=false;
form.render();
form.on('select(link)', function(data){
var title = $(data.elem).find("option:selected").text();
if(data.value != 'diy'){
$("input[name='nav_url']").val(JSON.stringify({
title : title,
url:data.value
}));
}else{
var value = $("input[name='nav_url']").val();
if(value) value = JSON.parse(value).url;
layer.prompt({
formType: 2,
value :value,
title: '自定义链接地址',
area: ['450px', '100px'],
cancel : function () {
$("input[name='nav_url']").val("");
}
}, function(value, index, elem){
$("input[name='nav_url']").val(JSON.stringify({
title : title,
url:value
}));
layer.close(index);
});
}
});
// 普通图片上传
var logo_upload = new Upload({
elem: '#imgUpload',
size:100
});
form.on('submit(save)', function(data) {
if(!data.field.nav_url){
layer.msg("请输入链接地址");
return;
}
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("pc://shop/pc/editNav"),
data: data.field,
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
location.hash = ns.hash("pc://shop/pc/navlist");
}
repeat_flag = false;
}
});
});
});
</script>

View File

@@ -0,0 +1,138 @@
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>浮窗名称:</label>
<div class="layui-input-block">
<input name="title" type="text" lay-verify="required" class="layui-input len-mid" {if $float_layer} value="{$float_layer.title}" {/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">链接地址:</label>
<div class="layui-input-block len-mid">
<select name="link" lay-filter="link">
<option value="">请选择</option>
{foreach $link as $k => $v}
<option value="{$v.url}" {if $float_layer && $float_layer.url && json_decode($float_layer.url,true)['title'] == $v.title}selected{/if}>{$v.title}</option>
{/foreach}
<option value="diy" {if $float_layer && $float_layer.url && json_decode($float_layer.url,true)['title'] == '自定义'}selected{/if}>自定义</option>
</select>
<input name="url" type="hidden" {if $float_layer} value="{$float_layer.url}" {/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否显示:</label>
<div class="layui-input-block">
<input type="checkbox" name="is_show" value="1" lay-skin="switch" {if condition="$float_layer && $float_layer.is_show == 1"} checked {/if} />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>显示次数:</label>
<div class="layui-input-block">
<input name="number" type="text" lay-verify="required" class="layui-input len-short" {if $float_layer} value="{$float_layer.number}" {/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">浮窗图片:</label>
<div class="layui-input-block">
<div class="upload-img-block img-upload">
<div class="upload-img-box {notempty name="$float_layer['img_url']"}hover{/notempty}">
<div class="upload-default" id="imgUpload">
{if condition="$float_layer.img_url"}
<div id="preview_imgUpload" class="preview_img">
<img layer-src src="{:img($float_layer.img_url)}" class="img_prev"/>
</div>
{else/}
<div class="upload">
<i class="iconfont iconshangchuan"></i>
<p>点击上传</p>
</div>
{/if}
</div>
<div class="operation">
<div>
<i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
<i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
</div>
<div class="replace_img js-replace">点击替换</div>
</div>
<input type="hidden" name="img_url" value="{$float_layer.img_url}">
</div>
</div>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
</div>
</div>
<script>
layui.use(['form'], function() {
var form = layui.form,
repeat_flag=false;
form.render();
form.on('select(link)', function(data){
var title = $(data.elem).find("option:selected").text();
if(data.value != 'diy'){
$("input[name='url']").val(JSON.stringify({
title : title,
url:data.value
}));
}else{
var value = $("input[name='url']").val();
if(value) value = JSON.parse(value).url;
layer.prompt({
formType: 2,
value :value,
title: '自定义链接地址',
area: ['450px', '100px'],
cancel : function () {
$("input[name='url']").val("");
}
}, function(value, index, elem){
$("input[name='url']").val(JSON.stringify({
title : title,
url:value
}));
layer.close(index);
});
}
});
// 普通图片上传
var logo_upload = new Upload({
elem: '#imgUpload'
});
form.on('submit(save)', function(data) {
if(!data.field.url){
layer.msg("请输入链接地址");
return;
}
if(!data.field.img_url){
layer.msg("请上传浮层图片");
return;
}
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("pc://shop/pc/floatLayer"),
data: data.field,
dataType: 'JSON',
type: 'POST',
success: function(res) {
repeat_flag = false;
layer.msg(res.message);
}
});
});
});
</script>

177
addon/pc/shop/view/pc/floor.html Executable file
View File

@@ -0,0 +1,177 @@
<!-- 搜索框 -->
<div class="single-filter-box">
<button class="layui-btn" onclick="add()">添加楼层</button>
<div class="layui-form">
<div class="layui-input-inline">
<input type="text" name="search_text" placeholder="请输入楼层名称" autocomplete="off" class="layui-input">
<button type="button" class="layui-btn layui-btn-primary" lay-filter="search" lay-submit>
<i class="layui-icon">&#xe615;</i>
</button>
</div>
</div>
</div>
<!-- 列表 -->
<table id="floor_list" lay-filter="floor_list"></table>
<!-- 操作 -->
<script type="text/html" id="action">
<div class="table-btn">
<a class="layui-btn" lay-event="edit">编辑</a>
<a class="layui-btn" lay-event="delete">删除</a>
</div>
</script>
<script type="text/html" id="sort">
<input name="sort" type="number" onchange="editSort({{d.id}},this)" value="{{d.sort}}" placeholder="请输入排序" class="layui-input edit-sort sort-len">
</script>
<script>
var table, repeat_flag = false;//防重复标识;
layui.use('form', function() {
var form = layui.form;
form.render();
table = new Table({
elem: '#floor_list',
url: ns.url("pc://shop/pc/floor"),
cols: [
[{
field: 'title',
title: '楼层名称',
width: '25%',
unresize: 'false'
}, {
field: 'block_title',
title: '所属模板',
width: '20%',
unresize: 'false'
}, {
field: 'state',
title: '状态',
width: '10%',
unresize: 'false',
templet: function (data) {
return data.state == 1 ? "开启" : "禁用";
}
}, {
field: 'create_time',
title: '创建时间',
width: '20%',
unresize: 'false',
templet: function (data) {
return ns.time_to_date(data.create_time);
}
}, {
field: 'sort',
title: '排序',
width: '10%',
sort : true,
unresize: 'false',
templet: '#sort'
}, {
title: '操作',
toolbar: '#action',
unresize: 'false',
align : 'right'
}]
]
});
/**
* 搜索功能
*/
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
});
table.on("sort",function (obj) {
table.reload({
page: {
curr: 1
},
where: {
order:obj.field,
sort:obj.type
}
});
});
/**
* 监听工具栏操作
*/
table.tool(function(obj) {
var data = obj.data;
switch (obj.event) {
case 'edit': //编辑
location.hash = ns.hash("pc://shop/pc/editfloor?id=" + data.id);
break;
case 'delete': //删除
deleteFloor(data.id);
break;
}
});
});
/**
* 删除
*/
function deleteFloor(id) {
if (repeat_flag) return;
repeat_flag = true;
layer.confirm('确定要删除该首页楼层吗?', function (index) {
layer.close(index);
$.ajax({
url: ns.url("pc://shop/pc/deletefloor"),
data: {id: id},
dataType: 'JSON',
type: 'POST',
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
},
function () {
repeat_flag = false;
layer.close();
});
}
// 监听单元格编辑
function editSort(id, event) {
var data = $(event).val();
if (!new RegExp("^-?[1-9]\\d*$").test(data)) {
layer.msg("排序号只能是整数");
return;
}
if(data<0){
layer.msg("排序号必须大于0");
return ;
}
$.ajax({
type: 'POST',
url: ns.url("pc://shop/pc/modifyFloorSort"),
data: {
sort: data,
id: id
},
dataType: 'JSON',
success: function(res) {
layer.msg(res.message);
}
});
}
function add() {
location.hash = ns.hash("pc://shop/pc/editfloor");
}
</script>

View File

@@ -0,0 +1,187 @@
<!-- 搜索框 -->
<div class="single-filter-box">
<button class="layui-btn" onclick="add()">添加链接</button>
<div class="layui-form">
<div class="layui-input-inline">
<input type="text" name="search_text" placeholder="请输入链接名称" autocomplete="off" class="layui-input">
<button type="button" class="layui-btn layui-btn-primary" lay-filter="search" lay-submit>
<i class="layui-icon">&#xe615;</i>
</button>
</div>
</div>
</div>
<!-- 列表 -->
<table id="nav_list" lay-filter="nav_list"></table>
<!-- 操作 -->
<script type="text/html" id="action">
<div class="table-btn">
<a class="layui-btn" lay-event="edit">编辑</a>
<a class="layui-btn" lay-event="delete">删除</a>
</div>
</script>
<script type="text/html" id="sort">
<input name="sort" type="number" onchange="editSort({{d.id}},this)" value="{{d.link_sort}}" placeholder="请输入排序" class="layui-input edit-sort sort-len">
</script>
<script>
var table, repeat_flag = false;//防重复标识;
layui.use('form', function() {
var form = layui.form;
form.render();
table = new Table({
elem: '#nav_list',
url: ns.url("pc://shop/pc/linkList"),
cols: [
[ {
field: 'link_sort',
title: '排序',
width: '8%',
sort : true,
unresize: 'false',
templet: '#sort'
},{
field: 'link_title',
title: '链接名称',
width: '15%',
unresize: 'false'
}, {
field: 'link_url',
title: '链接地址',
width: '30%',
unresize: 'false'
}, {
field: 'is_show',
title: '是否显示',
width: '15%',
unresize: 'false',
templet: function (data) {
if(data.is_show){
return '是';
}else {
return '否';
}
}
}, {
field: 'is_blank',
title: '新窗口打开',
width: '15%',
unresize: 'false',
templet: function (data) {
if(data.is_blank){
return '是';
}else {
return '否';
}
}
}, {
title: '操作',
toolbar: '#action',
unresize: 'false',
align : 'right'
}]
],
});
/**
* 搜索功能
*/
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
});
table.on("sort",function (obj) {
table.reload({
page: {
curr: 1
},
where: {
order:obj.field,
sort:obj.type
}
});
});
/**
* 监听工具栏操作
*/
table.tool(function(obj) {
var data = obj.data;
switch (obj.event) {
case 'edit': //编辑
location.hash = ns.hash("pc://shop/pc/editLink?id=" + data.id);
break;
case 'delete': //删除
deleteHelp(data.id);
break;
}
});
});
/**
* 删除
*/
function deleteHelp(id) {
if (repeat_flag) return false;
repeat_flag = true;
layer.confirm('确定要删除该链接吗?', function(index) {
layer.close(index);
$.ajax({
url: ns.url("pc://shop/pc/deleteLink"),
data: {id},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
},
function() {
repeat_flag = false;
layer.close();
});
}
// 监听单元格编辑
function editSort(id, event) {
var data = $(event).val();
if (!new RegExp("^-?[1-9]\\d*$").test(data)) {
layer.msg("排序号只能是整数");
return;
}
if(data<0){
layer.msg("排序号必须大于0");
return ;
}
$.ajax({
type: 'POST',
url: ns.url("pc://shop/pc/modifyLinkSort"),
data: {
sort: data,
id: id
},
dataType: 'JSON',
success: function(res) {
layer.msg(res.message);
}
});
}
function add() {
location.hash = ns.hash("pc://shop/pc/addLink");
}
</script>

View File

@@ -0,0 +1,205 @@
<!-- 搜索框 -->
<div class="single-filter-box">
<button class="layui-btn" onclick="add()">添加导航</button>
<div class="layui-form">
<div class="layui-input-inline">
<input type="text" name="search_text" placeholder="请输入导航名称" autocomplete="off" class="layui-input">
<button type="button" class="layui-btn layui-btn-primary" lay-filter="search" lay-submit>
<i class="layui-icon">&#xe615;</i>
</button>
</div>
</div>
</div>
<!-- 列表 -->
<table id="nav_list" lay-filter="nav_list"></table>
<!-- 操作 -->
<script type="text/html" id="action">
<div class="table-btn">
<a class="layui-btn" lay-event="edit">编辑</a>
<a class="layui-btn" lay-event="delete">删除</a>
</div>
</script>
<script type="text/html" id="sort">
<input name="sort" type="number" onchange="editSort({{d.id}},this)" value="{{d.sort}}" placeholder="请输入排序" class="layui-input edit-sort sort-len">
</script>
<script>
var table, repeat_flag = false;//防重复标识;
layui.use('form', function() {
var form = layui.form;
form.render();
form.on('switch(is_show)', function(data){
let is_show = data.elem.checked ? 1 : 0;
let id = $(data.elem).attr('data-id');
if(repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("pc://shop/pc/modifyNavIsShow"),
data: {
id : id,
is_show : is_show,
},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
}
});
});
table = new Table({
elem: '#nav_list',
url: ns.url("pc://shop/pc/navList"),
cols: [
[ {
field: 'nav_title',
title: '导航名称',
width: '15%',
unresize: 'false'
}, {
field: 'nav_url',
title: '链接地址',
width: '17%',
unresize: 'false',
templet: function (data) {
return JSON.parse(data.nav_url).url;
}
}, {
field: 'create_time',
title: '创建时间',
width: '20%',
unresize: 'false',
templet: function (data) {
return ns.time_to_date(data.create_time);
}
},{
field: 'sort',
title: '排序',
width: '8%',
sort : true,
unresize: 'false',
templet: '#sort'
},{
title: '是否显示',
unresize: 'false',
templet: function(data) {
return '<input type="checkbox" name="state" value="1" lay-skin="switch" lay-filter="is_show" data-id="'+ data.id +'" '+ (data.is_show == 1 ? 'checked' : '') +' />';
},
width: '10%',
}, {
title: '操作',
toolbar: '#action',
unresize: 'false',
align : 'right'
}]
],
});
/**
* 搜索功能
*/
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
});
table.on("sort",function (obj) {
table.reload({
page: {
curr: 1
},
where: {
order:obj.field,
sort:obj.type
}
});
});
/**
* 监听工具栏操作
*/
table.tool(function(obj) {
var data = obj.data;
switch (obj.event) {
case 'edit': //编辑
location.hash = ns.hash("pc://shop/pc/editNav?id=" + data.id);
break;
case 'delete': //删除
deleteHelp(data.id);
break;
}
});
});
/**
* 删除
*/
function deleteHelp(id) {
if (repeat_flag) return false;
repeat_flag = true;
layer.confirm('确定要删除该导航吗?', function(index) {
layer.close(index);
$.ajax({
url: ns.url("pc://shop/pc/deleteNav"),
data: {id},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
},
function() {
repeat_flag = false;
layer.close();
});
}
// 监听单元格编辑
function editSort(id, event) {
var data = $(event).val();
let reg = ns.getRegexp('>=0num');
if (!reg.test(data)) {
layer.msg("排序号必须是大于或等于0的整数");
return;
}
$.ajax({
type: 'POST',
url: ns.url("pc://shop/pc/modifySort"),
data: {
sort: data,
id: id
},
dataType: 'JSON',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
table.reload();
}
}
});
}
function add() {
location.hash = ns.hash("pc://shop/pc/addNav");
}
</script>

View File

@@ -0,0 +1,146 @@
#app{background: #F5F5F5;width: 1210px;margin-left: 200px;}
/* 楼层样式一*/
.floor-style-1{}
.floor-style-1 .head-wrap h2{line-height: 30px;color: #333;padding: 10px;font-size: 18px;cursor: pointer;width: 95%;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
.floor-style-1 .body-wrap .left-wrap{float: left;width: 234px;height: 614px;cursor: pointer;}
.floor-style-1 .body-wrap .left-wrap div.empty{background: #ebf8fd;height: 100%;text-align: center;color: #88c4dc;position: relative;}
.floor-style-1 .body-wrap .left-wrap div.empty span{position: absolute;top: 50%;left: 0;width: 100%;margin-top: -27px;}
.floor-style-1 .body-wrap .left-wrap img{max-width: 100%;cursor: pointer;}
.floor-style-1 .body-wrap .goods-list{margin-left: 235px;display: flex;flex-wrap: wrap;}
.floor-style-1 .body-wrap .goods-list li{width: 23%;margin-left: 15px;margin-bottom: 15px;background: #fff;cursor: pointer;padding: 17px 0;}
.floor-style-1 .body-wrap .goods-list li.empty{background: #F5F5F5;}
/*.floor-style-1 .body-wrap .goods-list li:nth-child(4n+1){margin-left: 0;}*/
.floor-style-1 .body-wrap .goods-list li .img-wrap{width: 160px;height: 160px;margin: 0 auto 18px;text-align: center;line-height: 160px;}
.floor-style-1 .body-wrap .goods-list li .img-wrap.empty{background: #ebf8fd;color: #88c4dc;}
.floor-style-1 .body-wrap .goods-list li .img-wrap img{max-width: 100%;max-height: 100%;}
.floor-style-1 .body-wrap .goods-list li h3{font-size: 14px;text-align: center;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;margin: 5px 15px;}
.floor-style-1 .body-wrap .goods-list li .desc{margin: 0 30px 10px;height: 20px;font-size: 12px;color: #b0b0b0;text-align: center;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;}
.floor-style-1 .body-wrap .goods-list li .price{margin: 0 10px 14px;text-align: center;}
.floor-style-1 .body-wrap .goods-list li .price del{margin-left: .5em;color: #b0b0b0 !important;}
.floor-style-1 .bottom-wrap{margin-top: 15px;width: 1210px;height: 118px;cursor: pointer;overflow: hidden;}
.floor-style-1 .bottom-wrap div.empty{background: #ebf8fd;height: 100%;text-align: center;color: #88c4dc;position: relative;}
.floor-style-1 .bottom-wrap div.empty span{position: absolute;top: 50%;left: 0;width: 100%;margin-top: -27px;}
.floor-style-1 .bottom-wrap img{max-width: 100%;}
.floor-style-1 .body-wrap .left-wrap-box{position:relative;display: block;}
.floor-style-1 .body-wrap .mask{position: absolute;z-index: 10;background: rgba(101, 101, 101, 0.6);color: #ffffff;opacity: 0;top: 0;right: 0;width: 100%;height: 100%;}
.floor-style-1 .body-wrap .mask .left-img-replace {text-align: center;height: 100%;position: relative;}
.floor-style-1 .body-wrap .mask .left-img-replace .replace{height:100%;width:100%;position:absolute;z-index:11;display: flex;}
.floor-style-1 .body-wrap .mask .left-img-replace .replace span{margin: auto}
.floor-style-1 .body-wrap .mask h4{text-align: right;position:absolute; top:5px; right:5px; display:inline-block;z-index:12}
.floor-style-1 .body-wrap .left-wrap-box:hover .mask{opacity: 1;}
.floor-style-1 .body-wrap .left-wrap{width: 234px;height: 614px;float: left;cursor: pointer;position: absolute;z-index: 9;}
/* 楼层样式二(通用,方块)*/
.floor-style-2{}
.floor-style-2 .head-wrap{text-align: center;}
.floor-style-2 .head-wrap h2{line-height: 30px;color: #333;padding: 10px;font-size: 22px;cursor: pointer;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
.floor-style-2 .head-wrap p{color: #b0b0b0;padding: 0 10px;font-size: 14px;cursor: pointer;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;margin-bottom: 20px;}
.floor-style-2 .body-wrap .goods-list{display: flex;flex-wrap: wrap;}
.floor-style-2 .body-wrap .goods-list li{width: 18.5%;margin-left: 15px;margin-bottom: 15px;background: #fff;cursor: pointer;padding: 15px 0;}
.floor-style-2 .body-wrap .goods-list li.empty{background: #F5F5F5;}
.floor-style-2 .body-wrap .goods-list li .img-wrap{width: 160px;height: 160px;margin: 0 auto 18px;text-align: center;line-height: 160px;}
.floor-style-2 .body-wrap .goods-list li .img-wrap.empty{background: #ebf8fd;color: #88c4dc;}
.floor-style-2 .body-wrap .goods-list li .img-wrap img{max-width: 100%;max-height: 100%;}
.floor-style-2 .body-wrap .goods-list li h3{font-size: 14px;text-align: center;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;margin: 5px 15px;}
.floor-style-2 .body-wrap .goods-list li .desc{margin: 0 30px 10px;height: 20px;font-size: 12px;color: #b0b0b0;text-align: center;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;}
.floor-style-2 .body-wrap .goods-list li .price{margin: 0 10px 14px;text-align: center;}
.floor-style-2 .body-wrap .goods-list li .price del{margin-left: .5em;color: #b0b0b0 !important;}
.floor-style-2 .bottom-wrap{margin-top: 15px;width: 1210px;height: 118px;cursor: pointer;overflow: hidden;}
.floor-style-2 .bottom-wrap div.empty{background: #ebf8fd;height: 100%;text-align: center;color: #88c4dc;position: relative;}
.floor-style-2 .bottom-wrap div.empty span{position: absolute;top: 50%;left: 0;width: 100%;margin-top: -27px;}
.floor-style-2 .bottom-wrap img{max-width: 100%;}
.floor-style-2 .left-wrap-box{position:relative;display: block;}
.floor-style-2 .mask{position: absolute;z-index: 10;background: rgba(101, 101, 101, 0.6);color: #ffffff;opacity: 0;top: 0;right: 0;width: 100%;height: 100%;}
.floor-style-2 .mask .left-img-replace {text-align: center;height: 100%;position: relative;}
.floor-style-2 .mask .left-img-replace .replace{height:100%;width:100%;position:absolute;z-index:11;display: flex;}
.floor-style-2 .mask .left-img-replace .replace span{margin: auto}
.floor-style-2 .mask h4{text-align: right;position:absolute; top:5px; right:5px; display:inline-block;z-index:12}
.floor-style-2 .left-wrap-box:hover .mask{opacity: 1;}
.floor-style-2 .left-wrap-box .bottom-wrap{width: 1210px;height: 118px;float: left;cursor: pointer;position: absolute;z-index: 9;}
/* 楼层样式三*/
.floor-style-3{overflow: hidden;}
.floor-style-3 .item-wrap .head-wrap{height: 50px;line-height: 50px;}
.floor-style-3 .item-wrap .head-wrap .title-name{display: inline-block;}
.floor-style-3 .item-wrap .head-wrap .title-name span{float: left;width: 5px;height: 21px;margin-top: 15px;}
.floor-style-3 .item-wrap .head-wrap .title-name h2{float: left;margin-left: 10px;font-weight: bold;font-size: 20px;}
.floor-style-3 .item-wrap .head-wrap .category-wrap{float: right;display: flex;}
.floor-style-3 .item-wrap .head-wrap .category-wrap li{margin-right: 10px;}
.floor-style-3 .item-wrap .body-wrap .left-img-box{position:absolute;right:-10px;top:-10px;z-index:10;color:#fff;width: 20px;height: 20px;line-height: 20px;background: black;opacity: .3;text-align: center;border-radius: 50%;}
.floor-style-3 .item-wrap .body-wrap .left-wrap-box{position:relative;display: block;}
.floor-style-3 .item-wrap .body-wrap .mask{position: absolute;z-index: 10;background: rgba(101, 101, 101, 0.6);color: #ffffff;opacity: 0;top: 0;right: 0;width: 100%;height: 100%;}
.floor-style-3 .item-wrap .body-wrap .mask .left-img-replace {text-align: center;height: 100%;position: relative;}
.floor-style-3 .item-wrap .body-wrap .mask .left-img-replace .replace{height:100%;width:100%;position:absolute;z-index:11;display: flex;}
.floor-style-3 .item-wrap .body-wrap .mask .left-img-replace .replace span{margin: auto}
.floor-style-3 .item-wrap .body-wrap .mask h4{text-align: right;position:absolute; top:5px; right:5px; display:inline-block;z-index:12}
.floor-style-3 .item-wrap .body-wrap .left-wrap-box:hover .mask{opacity: 1;}
.floor-style-3 .item-wrap .body-wrap .left-img-wrap{width: 190px;height: 360px;float: left;cursor: pointer;position: absolute;z-index: 9;}
.floor-style-3 .item-wrap .body-wrap .left-img-wrap img{max-width: 100%;max-height: 100%;}
.floor-style-3 .item-wrap .body-wrap .left-img-wrap div.empty{background: #ebf8fd;height: 100%;text-align: center;color: #88c4dc;position: relative;}
.floor-style-3 .item-wrap .body-wrap .left-img-wrap div.empty span{position: absolute;top: 50%;left: 0;width: 100%;margin-top: -27px;}
.floor-style-3 .item-wrap .body-wrap .right-goods-wrap{margin-left: 190px;text-align: center;overflow: hidden;}
.floor-style-3 .item-wrap .body-wrap .right-goods-wrap li{float: left;width: 19.9%;background: #ffff;border-width: 0 0 1px 1px;border-color: #f9f9f9;border-style: solid;cursor: pointer;}
.floor-style-3 .item-wrap .body-wrap .right-goods-wrap li h4{font-size: 14px;margin: 10px 20px 5px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;font-weight: normal;}
.floor-style-3 .item-wrap .body-wrap .right-goods-wrap li p{font-size: 12px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;margin: 10px 30px;height: 20px;}
.floor-style-3 .item-wrap .body-wrap .right-goods-wrap li .img-wrap{width: 105px;height: 105px;line-height: 105px;display: inline-block;margin-bottom: 5px;}
.floor-style-3 .item-wrap .body-wrap .right-goods-wrap li .img-wrap img{max-width: 100%;max-height: 100%;}
.floor-style-3 .item-wrap .body-wrap .right-goods-wrap li .img-wrap.empty{background: #ebf8fd;color: #88c4dc;}
.floor-style-3 .item-wrap .body-wrap .bottom-goods-wrap{overflow: hidden;display: flex;}
.floor-style-3 .item-wrap .body-wrap .bottom-goods-wrap li{flex: 1;background: #fff;border-width: 0 0 1px 1px;border-color: #f9f9f9;border-style: solid;cursor: pointer;}
.floor-style-3 .item-wrap .body-wrap .bottom-goods-wrap li:first-child{border-left: 0;}
.floor-style-3 .item-wrap .body-wrap .bottom-goods-wrap li .info-wrap{display: inline-block;vertical-align: middle;text-align: center;}
.floor-style-3 .item-wrap .body-wrap .bottom-goods-wrap li .info-wrap h4{font-size: 14px;margin: 0 10px 5px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;width: 90px;font-weight: normal; }
.floor-style-3 .item-wrap .body-wrap .bottom-goods-wrap li .info-wrap p{font-size: 12px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;margin: 0 20px;width: 70px;}
.floor-style-3 .item-wrap .body-wrap .bottom-goods-wrap li .img-wrap{width: 60px;height: 60px;line-height: 60px;display: inline-block;vertical-align: middle;text-align: center;padding: 10px;}
.floor-style-3 .item-wrap .body-wrap .bottom-goods-wrap li .img-wrap img{max-width: 100%;max-height: 100%;}
.floor-style-3 .item-wrap .body-wrap .bottom-goods-wrap li .img-wrap.empty{background: #ebf8fd;color: #88c4dc;}
.floor-style-3 .item-wrap .body-wrap .brand-wrap{display: flex;background: #fff;}
.floor-style-3 .item-wrap .body-wrap .brand-wrap li{flex: 1;height: 50px;cursor: pointer;line-height: 50px;text-align: center;background: #fff;}
.floor-style-3 .item-wrap .body-wrap .brand-wrap li img{max-width: 100%;max-height: 100%;}
.floor-style-3 .item-wrap .body-wrap .brand-wrap li .empty{background: #ebf8fd;color: #88c4dc;}
.floor-style-4 {}
.floor-style-4 .head-wrap {display: flex;align-items: center;justify-content: space-between;}
.floor-style-4 .head-wrap h2{line-height: 30px;color: #333;padding: 10px;font-size: 18px;cursor: pointer;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
.floor-style-4 .head-wrap .more {cursor: pointer;}
.floor-style-4 .body-wrap .left-wrap{float: left;width: 500px;height: 323px;cursor: pointer;}
.floor-style-4 .body-wrap .left-wrap div.empty{background: #ebf8fd;height: 100%;text-align: center;color: #88c4dc;position: relative;}
.floor-style-4 .body-wrap .left-wrap div.empty span{position: absolute;top: 50%;left: 0;width: 100%;margin-top: -27px;}
.floor-style-4 .body-wrap .left-wrap img{max-width: 100%;cursor: pointer;}
.floor-style-4 .body-wrap .goods-list{display: flex;flex-wrap: wrap;}
.floor-style-4 .body-wrap .goods-list li{width:calc((100% - 45px) / 3);margin-left: 15px;background: #fff;cursor: pointer;padding: 29px 0;}
.floor-style-4 .body-wrap .goods-list li.empty{background: #F5F5F5;}
.floor-style-4 .body-wrap .goods-list li .img-wrap{width: 160px;height: 160px;margin: 0 auto 20px;text-align: center;line-height: 160px;}
.floor-style-4 .body-wrap .goods-list li .img-wrap.empty{background: #ebf8fd;color: #88c4dc;}
.floor-style-4 .body-wrap .goods-list li .img-wrap img{max-width: 100%;max-height: 100%;}
.floor-style-4 .body-wrap .goods-list li h3{font-size: 14px;text-align: center;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;margin: 5px 15px;}
.floor-style-4 .body-wrap .goods-list li .desc{margin: 0 30px 10px;height: 20px;font-size: 12px;color: #b0b0b0;text-align: center;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;}
.floor-style-4 .body-wrap .goods-list li .price{margin: 0 10px 14px;text-align: center;}
.floor-style-4 .body-wrap .goods-list li .price del{margin-left: .5em;color: #b0b0b0 !important;}
.floor-style-4 .body-wrap .left-wrap-box{position:relative;display: block;}
.floor-style-4 .body-wrap .mask{position: absolute;z-index: 10;background: rgba(101, 101, 101, 0.6);color: #ffffff;opacity: 0;top: 0;right: 0;width: 100%;height: 100%;}
.floor-style-4 .body-wrap .mask .left-img-replace {text-align: center;height: 100%;position: relative;}
.floor-style-4 .body-wrap .mask .left-img-replace .replace{height:100%;width:100%;position:absolute;z-index:11;display: flex;}
.floor-style-4 .body-wrap .mask .left-img-replace .replace span{margin: auto}
.floor-style-4 .body-wrap .mask h4{text-align: right;position:absolute; top:5px; right:5px; display:inline-block;z-index:12}
.floor-style-4 .body-wrap .left-wrap-box:hover .mask{opacity: 1;}
.floor-style-4 .switch-wrap {margin-left: 500px;display: flex;padding: 15px 0;justify-content: center}
.floor-style-4 .switch-wrap .switch-item {display: flex;align-items: center;justify-content: center;width: 28px;height: 28px;background: #FFFFFF;margin-left: 20px;color: #999999}
.floor-style-4 .bottom-wrap{margin-top: 35px; width: 1210px;height: 118px;cursor: pointer;overflow: hidden;}
.floor-style-4 .bottom-wrap div.empty{background: #ebf8fd;height: 100%;text-align: center;color: #88c4dc;position: relative;}
.floor-style-4 .bottom-wrap div.empty span{position: absolute;top: 50%;left: 0;width: 100%;margin-top: -27px;}
.floor-style-4 .bottom-wrap img{max-width: 100%;}
.layui-layer-content .layui-form.set-title{padding: 0;}
.layui-layer-content .layui-form.upload-img{padding: 0;}
.layui-layer-content .layui-form.set-category{padding: 0;}
.layui-layer-content .layui-form.set-category .selected-wrap{}
.layui-layer-content .layui-form.set-category .selected-wrap ul{}
.layui-layer-content .layui-form.set-category .selected-wrap ul li{float: left;margin: 0 5px 10px 0;padding: 0 15px 0 10px;color: #636363;line-height: 28px;border: 1px solid #ccc;font-size: 12px;cursor: pointer;position: relative;}
.layui-layer-content .layui-form.set-category .selected-wrap ul li i{position: absolute;top: 0;right: 0;width: 14px;height: 14px;line-height: 14px;text-align: center;font-style: normal;background-color: #eee;z-index: 2;font-size: 12px;display: none;}
.layui-layer-content .layui-form.set-category .selected-wrap ul li:hover {color: var(--base-color);border-color: var(--base-color);background-color: #eff7fe;}
.layui-layer-content .layui-form.set-category .selected-wrap ul li:hover i{display: block;}
.layui-colorpicker-main-input div.layui-inline{margin-right: 0;}
.layui-colorpicker-main-input input.layui-input{width: 130px;height: 34px;}

View File

@@ -0,0 +1,274 @@
var floorForm, floorLayer, floorUpload, floorLaytpl, floorColorpicker, repeatFlag = false;
layui.use(['form', 'layer', 'upload', 'laytpl', 'colorpicker'], function () {
floorForm = layui.form;
floorLayer = layui.layer;
floorUpload = layui.upload;
floorLaytpl = layui.laytpl;
floorColorpicker = layui.colorpicker;
floorForm.render();
if ($("#info").length > 0) {
setTimeout(function () {
vm.data = JSON.parse($("#info").val().toString());
vm.blockId = parseInt($("#block_id").val().toString());
}, 100);
}
floorForm.on('select(block_id)', function (data) {
var value = $(data.elem).find("option:selected").attr("data-value");
var blockId = $(data.elem).find("option:selected").attr("data-block-id");
vm.blockId = blockId;
if (value) {
vm.data = JSON.parse(value);
}
});
floorForm.verify({
title: function (value) {
if (value == '') {
return '请输入楼层名称';
}
if (value.length > 100) {
return '最多100个字符';
}
},
block_id: function (value) {
if (!value) return '请选择楼层模板';
}
});
floorForm.on('submit(save)', function (data) {
var value = JSON.parse(JSON.stringify(vm.data));
for (var i in value) {
if ($.inArray(value[i].type, ['goods', 'brand', 'category']) == -1) {
value[i].value.list = [];
}
}
data.field.value = JSON.stringify(value);
if (repeatFlag) return;
repeatFlag = true;
$.ajax({
url: ns.url("pc://shop/pc/editFloor"),
data: data.field,
dataType: 'JSON',
type: 'POST',
success: function (res) {
floorLayer.msg(res.message);
if (res.code == 0) {
location.hash = ns.hash("pc://shop/pc/floor");
}
repeatFlag = false;
}
});
});
});
var vm = new Vue({
el: "#app",
data: function () {
return {
data: null,
blockId: 0
};
},
created: function () {
},
methods: {
img: function (url, type = '') {
return url ? ns.img(url, type) : "";
},
/**
* 初始化链接下拉框
* @param select_tag
* @param link_tag
*/
initLink: function (select_tag, link_tag) {
floorForm.on('select(' + select_tag + ')', function (data) {
var title = $(data.elem).find("option:selected").text();
if (data.value != 'diy') {
$("input[name='" + link_tag + "']").val(JSON.stringify({
"title": title,
"url": data.value
}));
} else {
floorLayer.prompt({
formType: 2,
value: $("input[name='" + link_tag + "']").val() ? JSON.parse($("input[name='" + link_tag + "']").val()).url : '',
title: '自定义链接地址',
area: ['450px', '100px'],
cancel: function () {
$("input[name='" + link_tag + "']").val("");
}
}, function (value, index, elem) {
$("input[name='" + link_tag + "']").val(JSON.stringify({
"title": title,
"url": value
}));
floorLayer.close(index);
});
}
});
},
/**
* 设置文本
* @param data 当前数据
* @param callback 回调
*/
setText: function (data, callback) {
var self = this;
var getTpl = $("#setTitleHtml").html();
if (!data) data = {};
floorLaytpl(getTpl).render(data, function (html) {
var textLayer = floorLayer.open({
type: 1,
title: "编辑文本",
content: html,
area: ['400px', 'auto'],
success: function (layero, index) {
floorForm.render();
self.initLink("pc_link_text", "text_link");
// 文字颜色
floorColorpicker.render({
elem: '#text_color', //绑定元素
color: data.color ? data.color : "",
done: function (color) {
$("#text_color_input").attr("value", color);
}
});
floorForm.on('submit(save_text)', function (data) {
if (data.field.text_link) data.field.text_link = JSON.parse(data.field.text_link);
if (callback) callback({
text: data.field.text,
link: data.field.text_link,
color: data.field.text_color,
textAlign: data.field.textAlign
});
floorLayer.close(textLayer);
});
}
});
floorForm.render();
});
},
/**
* 上传图片
* @param data 当前数据
* @param callback 回调
*/
uploadImg: function (data, callback) {
var self = this;
var getTpl = $("#uploadImg").html();
if (!data) data = {};
floorLaytpl(getTpl).render(data, function (html) {
var textLayer = floorLayer.open({
type: 1,
title: "上传图片",
content: html,
area: ['450px', '300px'],
success: function (layero, index) {
floorForm.render();
floorUpload.render({
elem: "#upload_image",
url: ns.url("shop/upload/upload"),
done: function (res) {
$("input[name='upload_image']").val(res.data.pic_path);
$("#upload_image").html("<img src=" + ns.img(res.data.pic_path) + " >");
}
});
self.initLink("pc_link_upload", "upload_link");
floorForm.on('submit(save_upload)', function (data) {
if (data.field.upload_link) data.field.upload_link = JSON.parse(data.field.upload_link);
if (callback) callback({
url: data.field.upload_image,
link: data.field.upload_link
});
floorLayer.close(textLayer);
});
}
});
floorForm.render();
});
},
/**
* 设置商品分类
* @param data 当前数据
* @param callback 回调
*/
setCategory: function (data, callback) {
var self = this;
var getTpl = $("#setCategoryHtml").html();
if (!data) data = {};
floorLaytpl(getTpl).render(data, function (html) {
var textLayer = floorLayer.open({
type: 1,
title: "编辑商品分类",
content: html,
area: ['600px', '400px'],
success: function (layero, index) {
floorForm.render();
floorForm.on('select(goods_category)', function (categoryData) {
var category_name = $.trim($(categoryData.elem).find("option:selected").text());
var category_id = $(categoryData.elem).val();
var isAdd = true;
for (var i = 0; i < data.list.length; i++) {
if (data.list[i].category_id == category_id) {
isAdd = false;
break;
}
}
if (isAdd) {
data.list.push({
category_id: category_id,
category_name: category_name
});
floorLaytpl(getTpl).render(data, function (html) {
$(".set-category").html(html);
floorForm.render();
});
}
});
floorForm.on('submit(save_category)', function (data) {
if (data.field.category_ids) data.field.category_ids = data.field.category_ids.replace(/\s+/g, "");
if (callback) callback({
category_ids: data.field.category_ids,
list: data.field.category_list ? JSON.parse(data.field.category_list) : [],
});
floorLayer.close(textLayer);
});
$(document).on('click','.delete-category',function(){
var catrgoryId = $(this).attr('data-id');
var data_catrgoryIds = data.category_ids.split(',');
for (var i = 0; i< data_catrgoryIds.length; i ++) {
if(catrgoryId == data_catrgoryIds[i]){
delete data_catrgoryIds[i];
}
}
data.category_ids = data_catrgoryIds.toString();
if(data_catrgoryIds.length == 2){
data.category_ids = data.category_ids.substring(0, data.category_ids.length-1)
}
for (var y = 0; y < data.list.length; y ++ ){
if(data.list[y].category_id == catrgoryId){
data.list.splice(y, 1);
}
}
floorLaytpl(getTpl).render(data, function (html) {
$(".set-category").html(html);
floorForm.render();
});
});
}
});
floorForm.render();
});
},
}
});

View File

@@ -0,0 +1,119 @@
var templateFloorStyle1 = `
<div class="floor-style-1">
<div class="head-wrap"><h2 @click="setTitle()" :style="{ color : mData.title.value.color }">{{ mData.title.value.text }}</h2></div>
<div class="body-wrap">
<div class="left-wrap left-wrap-box">
<div v-if="mData.leftImg.value.url" class="mask">
<div class="left-img-replace" @click="uploadLeftImg()">
<h4 @click.stop="delLeftImg()" class="iconfont iconshanchu">删除</h4>
<div class="replace"><span>点击替换</span></div>
</div>
</div>
<div class="left-wrap">
<img v-if="mData.leftImg.value.url" :src="$parent.img(mData.leftImg.value.url)">
<div v-else class="empty" @click="uploadLeftImg()"><span>点击上传图片<br/><br/>建议尺寸 234 x 614 像素</span></div>
</div>
</div>
<ul class="goods-list" @click="selectedGoods()">
<li v-for="(item,index) in goodsLength" :key="index">
<template v-if="mData.goodsList.value.list.length > index && mData.goodsList.value.list[index].goods_name">
<div class="img-wrap">
<img alt="商品图片" :src="$parent.img(mData.goodsList.value.list[index].goods_image.split(',')[0], 'mid')">
</div>
<h3>{{mData.goodsList.value.list[index].goods_name}}</h3>
<p class="desc">{{mData.goodsList.value.list[index].introduction}}</p>
<p class="price text-color">
<span class="num">{{mData.goodsList.value.list[index].price}}元</span>
<del>{{mData.goodsList.value.list[index].market_price}}元</del>
</p>
</template>
<template v-else>
<div class="img-wrap empty">商品图片</div>
<h3>商品名称</h3>
<p class="desc">商品描述</p>
<p class="price text-color">
<span class="num">99元</span>
<del>199元</del>
</p>
</template>
</li>
</ul>
</div>
<div class="bottom-wrap" @click="uploadBottomImg()">
<img v-if="mData.bottomImg.value.url" :src="$parent.img(mData.bottomImg.value.url)">
<div v-else class="empty"><span>点击上传图片<br/><br/>建议尺寸 1210 x 118 像素</span></div>
</div>
</div>`;
Vue.component('floor-style-1', {
template: templateFloorStyle1,
props: {
data: {
type: Object,
required: true,
},
},
data: function () {
return {
mData: {},
selectGoodsId: [],
goodsLength: 8
};
},
created: function () {
this.mData = this.data;
},
methods: {
setTitle: function () {
var self = this;
this.$parent.setText(self.mData.title.value, function (data) {
self.mData.title.value = data;
});
},
delLeftImg:function(){
this.mData.leftImg.value.url = '';
},
uploadLeftImg: function () {
var self = this;
this.$parent.uploadImg(self.mData.leftImg.value, function (data) {
self.mData.leftImg.value = data;
});
},
uploadBottomImg: function () {
var self = this;
this.$parent.uploadImg(self.mData.bottomImg.value, function (data) {
self.mData.bottomImg.value = data;
});
},
selectedGoods: function () {
var self = this;
goodsSelect(function (data) {
self.selectGoodsId = [];
var goods_ids = [];
self.mData.goodsList.value.list = [];
var i = 0;
for (var key in data) {
var item = data[key];
delete item.sku_list;
delete item.selected_sku_list;
self.mData.goodsList.value.list[i] = item;
self.selectGoodsId.push(item.goods_id);
goods_ids.push(item.goods_id);
i++;
}
self.mData.goodsList.value.goods_ids = goods_ids.toString();
vm.$forceUpdate();
}, self.selectGoodsId, {mode: "spu", max_num: self.goodsLength, min_num: 1, disabled: 0});
}
},
watch: {
mData: function (curr) {
for (var i = 0; i < curr.goodsList.value.list.length; i++) {
this.selectGoodsId.push(curr.goodsList.value.list[i].goods_id);
}
},
},
});

View File

@@ -0,0 +1,122 @@
var templateFloorStyle2 = `
<div class="floor-style-2">
<div class="head-wrap">
<h2 @click="setTitle()" :style="{ textAlign: mData.title.value.textAlign, color : mData.title.value.color }">{{ mData.title.value.text }}</h2>
<p @click="setSubTitle()" :style="{ color : mData.subTitle.value.color }">{{ mData.subTitle.value.text }}</p>
</div>
<div class="body-wrap">
<ul class="goods-list" @click="selectedGoods()">
<li v-for="(item,index) in goodsLength" :key="index">
<template v-if="mData.goodsList.value.list.length > index && mData.goodsList.value.list[index].goods_name">
<div class="img-wrap">
<img alt="商品图片" :src="$parent.img(mData.goodsList.value.list[index].goods_image.split(',')[0], 'mid')">
</div>
<h3>{{mData.goodsList.value.list[index].goods_name}}</h3>
<p class="desc">{{mData.goodsList.value.list[index].introduction}}</p>
<p class="price text-color">
<span class="num">{{mData.goodsList.value.list[index].price}}元</span>
<del>{{mData.goodsList.value.list[index].market_price}}元</del>
</p>
</template>
<template v-else>
<div class="img-wrap empty">商品图片</div>
<h3>商品名称</h3>
<p class="desc">商品描述</p>
<p class="price text-color">
<span class="num">99元</span>
<del>199元</del>
</p>
</template>
</li>
</ul>
</div>
<div class="bottom-wrap left-wrap-box">
<div v-if="mData.bottomImg.value.url" class="mask">
<div class="left-img-replace" @click="uploadBottomImg()">
<h4 @click.stop="delLeftImg()" class="iconfont iconshanchu">删除</h4>
<div class="replace"><span>点击替换</span></div>
</div>
</div>
<div class="bottom-wrap">
<img v-if="mData.bottomImg.value.url" :src="$parent.img(mData.bottomImg.value.url)">
<div v-else class="empty" @click="uploadBottomImg()"><span>点击上传图片<br/><br/>建议尺寸 1210 x 118 像素</span></div>
</div>
</div>
</div>`;
Vue.component('floor-style-2', {
template: templateFloorStyle2,
props: {
data: {
type: Object,
required: true,
},
},
data: function () {
return {
mData: {},
selectGoodsId: [],
goodsLength: 20
};
},
created: function () {
this.mData = this.data;
if(!('textAlign' in this.mData.title.value))
this.mData.title.value.textAlign = "center";
},
methods: {
setTitle: function () {
var self = this;
this.$parent.setText(self.mData.title.value, function (data) {
self.mData.title.value = data;
});
},
setSubTitle: function () {
var self = this;
self.mData.subTitle.value.isTextRequired=false;
this.$parent.setText(self.mData.subTitle.value, function (data) {
self.mData.subTitle.value = data;
});
},
delLeftImg:function(){
this.mData.bottomImg.value.url = '';
},
uploadBottomImg: function () {
var self = this;
this.$parent.uploadImg(self.mData.bottomImg.value, function (data) {
self.mData.bottomImg.value = data;
});
},
selectedGoods: function () {
var self = this;
goodsSelect(function (data) {
self.selectGoodsId = [];
var goods_ids = [];
self.mData.goodsList.value.list = [];
var i = 0;
for (var key in data) {
var item = data[key];
delete item.sku_list;
delete item.selected_sku_list;
self.mData.goodsList.value.list[i] = item;
self.selectGoodsId.push(item.goods_id);
goods_ids.push(item.goods_id);
i++;
}
self.mData.goodsList.value.goods_ids = goods_ids.toString();
vm.$forceUpdate();
}, self.selectGoodsId, {mode: "spu", max_num: self.goodsLength, min_num: 1, disabled: 0});
}
},
watch: {
mData: function (curr) {
for (var i = 0; i < curr.goodsList.value.list.length; i++) {
this.selectGoodsId.push(curr.goodsList.value.list[i].goods_id);
}
},
},
});

View File

@@ -0,0 +1,196 @@
var templateFloorStyle3 = `
<div class="floor-style-3">
<div class="item-wrap">
<div class="head-wrap">
<div class="title-name">
<span :style="{ backgroundColor : mData.title.value.color }"></span>
<h2 @click="setTitle()" :style="{ color : mData.title.value.color }">{{ mData.title.value.text }}</h2>
</div>
<div class="category-wrap" @click="setCategory()">
<li v-for="(item,index) in categoryLength" :key="index">
<template v-if="mData.categoryList.value.list.length > index && mData.categoryList.value.list[index].category_name">
<a href="javascript:;">{{mData.categoryList.value.list[index].category_name}}</a>
</template>
<template v-else>
<a href="javascript:;">商品分类名称</a>
</template>
</li>
</div>
</div>
<div class="body-wrap">
<div class="left-img-wrap left-wrap-box">
<div v-if="mData.leftImg.value.url" class="mask">
<div class="left-img-replace" @click="uploadLeftImg()">
<h4 @click.stop="delLeftImg()" class="iconfont iconshanchu">删除</h4>
<div class="replace"><span>点击替换</span></div>
</div>
</div>
<div class="left-img-wrap">
<img v-if="mData.leftImg.value.url" :src="$parent.img(mData.leftImg.value.url)">
<div v-else class="empty" @click="uploadLeftImg()"><span>点击上传图片<br/><br/>建议尺寸 190 x 360 像素</span></div>
</div>
</div>
<ul class="right-goods-wrap" @click="selectedRightGoods()">
<li v-for="(item,index) in rightGoodsLength" :key="index">
<template v-if="mData.rightGoodsList.value.list.length > index && mData.rightGoodsList.value.list[index].goods_name">
<h4>{{mData.rightGoodsList.value.list[index].goods_name}}</h4>
<p class="text-color">{{mData.rightGoodsList.value.list[index].introduction}}</p>
<div class="img-wrap">
<img alt="商品图片" :src="$parent.img(mData.rightGoodsList.value.list[index].goods_image.split(',')[0], 'mid')">
</div>
</template>
<template v-else>
<h4>商品名称</h4>
<p class="text-color">商品描述</p>
<div class="img-wrap empty">商品图片</div>
</template>
</li>
</ul>
<ul class="bottom-goods-wrap" @click="selectedBottomGoods()">
<li v-for="(item,index) in bottomGoodsLength" :key="index">
<template v-if="mData.bottomGoodsList.value.list.length > index && mData.bottomGoodsList.value.list[index].goods_name">
<div class="info-wrap">
<h4>{{mData.bottomGoodsList.value.list[index].goods_name}}</h4>
<p class="text-color">{{mData.bottomGoodsList.value.list[index].introduction}}</p>
</div>
<div class="img-wrap">
<img alt="商品图片" :src="$parent.img(mData.bottomGoodsList.value.list[index].goods_image.split(',')[0], 'mid')">
</div>
</template>
<template v-else>
<div class="info-wrap">
<h4>商品名称</h4>
<p class="text-color">商品描述</p>
</div>
<div class="img-wrap empty">商品图片</div>
</template>
</li>
</ul>
</div>
</div>
</div>`;
Vue.component('floor-style-3', {
template: templateFloorStyle3,
props: {
data: {
type: Object,
required: true,
},
},
data: function () {
return {
mData: {},
categoryLength: 6,
rightGoodsLength: 10,
rightSelectGoodsId: [],
bottomGoodsLength: 6,
bottomSelectGoodsId: [],
// brandLength: 8,
// selectBrandsId: []
};
},
created: function () {
this.mData = this.data;
},
methods: {
setTitle: function () {
var self = this;
this.$parent.setText(self.mData.title.value, function (data) {
self.mData.title.value = data;
});
},
delLeftImg:function(){
this.mData.leftImg.value.url = '';
},
uploadLeftImg: function () {
var self = this;
this.$parent.uploadImg(self.mData.leftImg.value, function (data) {
self.mData.leftImg.value = data;
});
},
setCategory: function () {
var self = this;
this.$parent.setCategory(self.mData.categoryList.value, function (data) {
self.mData.categoryList.value = data;
vm.$forceUpdate();
});
},
selectedRightGoods: function () {
var self = this;
goodsSelect(function (data) {
self.rightSelectGoodsId = [];
var goods_ids = [];
self.mData.rightGoodsList.value.list = [];
var i = 0;
for (var key in data) {
var item = data[key];
delete item.sku_list;
delete item.selected_sku_list;
self.mData.rightGoodsList.value.list[i] = item;
self.rightSelectGoodsId.push(item.goods_id);
goods_ids.push(item.goods_id);
i++;
}
self.mData.rightGoodsList.value.goods_ids = goods_ids.toString();
vm.$forceUpdate();
}, self.rightSelectGoodsId, {mode: "spu", max_num: self.rightGoodsLength, min_num: 1});
},
selectedBottomGoods: function () {
var self = this;
goodsSelect(function (data) {
self.bottomSelectGoodsId = [];
var goods_ids = [];
self.mData.bottomGoodsList.value.list = [];
var i = 0;
for (var key in data) {
var item = data[key];
delete item.sku_list;
delete item.selected_sku_list;
self.mData.bottomGoodsList.value.list[i] = item;
self.bottomSelectGoodsId.push(item.goods_id);
goods_ids.push(item.goods_id);
i++;
}
self.mData.bottomGoodsList.value.goods_ids = goods_ids.toString();
vm.$forceUpdate();
}, self.bottomSelectGoodsId, {mode: "spu", max_num: self.bottomGoodsLength, min_num: 1, disabled: 0});
},
// selectedBrand: function () {
// var self = this;
// brandSelect(function (res) {
// self.selectBrandsId = [];
// var brand_ids = [];
// self.mData.brandList.value.list = [];
// for (var i = 0; i < res.length; i++) {
// var item = res[i];
// self.mData.brandList.value.list[i] = item;
// self.selectBrandsId.push(item.brand_id);
// brand_ids.push(item.brand_id);
// }
// self.mData.brandList.value.brand_ids = brand_ids.toString();
// vm.$forceUpdate();
// }, self.selectBrandsId, {max_num: self.brandLength, min_num: 1});
// }
},
watch: {
mData: function (curr) {
for (var i = 0; i < curr.rightGoodsList.value.list.length; i++) {
this.rightSelectGoodsId.push(curr.rightGoodsList.value.list[i].goods_id);
}
for (var i = 0; i < curr.bottomGoodsList.value.list.length; i++) {
this.bottomSelectGoodsId.push(curr.bottomGoodsList.value.list[i].goods_id);
}
// for (var i = 0; i < curr.brandList.value.list.length; i++) {
// this.selectBrandsId.push(curr.brandList.value.list[i].brand_id);
// }
},
},
});

View File

@@ -0,0 +1,137 @@
var templateFloorStyle4 = `
<div class="floor-style-4">
<div class="head-wrap">
<h2 @click="setTitle()" :style="{ color : mData.title.value.color }">{{ mData.title.value.text }}</h2>
<div class="more" :style="{ color : mData.more.value.color }" @click="setMore()">
<span>{{ mData.more.value.text }}</span>
<i class="iconfont iconyoujiantou"></i>
</div>
</div>
<div class="body-wrap">
<div class="left-wrap left-wrap-box">
<div v-if="mData.leftImg.value.url" class="mask">
<div class="left-img-replace" @click="uploadLeftImg()">
<h4 @click.stop="delLeftImg()" class="iconfont iconshanchu">删除</h4>
<div class="replace"><span>点击替换</span></div>
</div>
</div>
<div class="left-wrap">
<img v-if="mData.leftImg.value.url" :src="$parent.img(mData.leftImg.value.url)">
<div v-else class="empty" @click="uploadLeftImg()"><span>点击上传图片<br/><br/>建议尺寸 500 x 323 像素</span></div>
</div>
</div>
<div>
<ul class="goods-list" @click="selectedGoods()">
<li v-for="(item,index) in goodsLength" :key="index">
<template v-if="mData.goodsList.value.list.length > index && mData.goodsList.value.list[index].goods_name">
<div class="img-wrap">
<img alt="商品图片" :src="$parent.img(mData.goodsList.value.list[index].goods_image.split(',')[0], 'mid')">
</div>
<h3>{{mData.goodsList.value.list[index].goods_name}}</h3>
<p class="desc">{{mData.goodsList.value.list[index].introduction}}</p>
<p class="price text-color">
<span class="num">{{mData.goodsList.value.list[index].price}}元</span>
<del>{{mData.goodsList.value.list[index].market_price}}元</del>
</p>
</template>
<template v-else>
<div class="img-wrap empty">商品图片</div>
<h3>商品名称</h3>
<p class="desc">商品描述</p>
<p class="price text-color">
<span class="num">99元</span>
<del>199元</del>
</p>
</template>
</li>
</ul>
<div class="switch-wrap layui-hide">
<div class="switch-item"><i class="iconfont iconback_light"></i></div>
<div class="switch-item"><i class="iconfont iconyoujiantou"></i></div>
</div>
</div>
</div>
<div class="bottom-wrap" @click="uploadBottomImg()">
<img v-if="mData.bottomImg.value.url" :src="$parent.img(mData.bottomImg.value.url)">
<div v-else class="empty"><span>点击上传图片<br/><br/>建议尺寸 1210 x 118 像素</span></div>
</div>
</div>`;
Vue.component('floor-style-4', {
template: templateFloorStyle4,
props: {
data: {
type: Object,
required: true,
},
},
data: function () {
return {
mData: {},
selectGoodsId: [],
goodsLength: 3
};
},
created: function () {
this.mData = this.data;
},
methods: {
setTitle: function () {
var self = this;
this.$parent.setText(self.mData.title.value, function (data) {
self.mData.title.value = data;
});
},
setMore: function () {
var self = this;
this.$parent.setText(self.mData.more.value, function (data) {
self.mData.more.value = data;
});
},
delLeftImg:function(){
this.mData.leftImg.value.url = '';
},
uploadLeftImg: function () {
var self = this;
this.$parent.uploadImg(self.mData.leftImg.value, function (data) {
self.mData.leftImg.value = data;
});
},
uploadBottomImg: function () {
var self = this;
this.$parent.uploadImg(self.mData.bottomImg.value, function (data) {
self.mData.bottomImg.value = data;
});
},
selectedGoods: function () {
var self = this;
goodsSelect(function (data) {
self.selectGoodsId = [];
var goods_ids = [];
self.mData.goodsList.value.list = [];
var i = 0;
for (var key in data) {
var item = data[key];
delete item.sku_list;
delete item.selected_sku_list;
self.mData.goodsList.value.list[i] = item;
self.selectGoodsId.push(item.goods_id);
goods_ids.push(item.goods_id);
i++;
}
self.mData.goodsList.value.goods_ids = goods_ids.toString();
vm.$forceUpdate();
}, self.selectGoodsId, {mode: "spu", min_num: 1, disabled: 0});
}
},
watch: {
mData: function (curr) {
for (var i = 0; i < curr.goodsList.value.list.length; i++) {
this.selectGoodsId.push(curr.goodsList.value.list[i].goods_id);
}
},
},
});

View File

View File

@@ -0,0 +1,9 @@
<!doctype html>
<html lang="en" data-n-head="%7B%22lang%22:%7B%221%22:%22en%22%7D%7D">
<head>
<meta data-n-head="1" charset="utf-8"><meta data-n-head="1" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="1" data-hid="description" name="description" content=""><meta data-n-head="1" name="format-detection" content="telephone=no"><link data-n-head="1" rel="icon" type="image/x-icon" href="/favicon.ico"><base href="/web/"><link rel="preload" href="/web/_nuxt/78522d7.js" as="script"><link rel="preload" href="/web/_nuxt/aa2d3bb.js" as="script"><link rel="preload" href="/web/_nuxt/css/c773712.css" as="style"><link rel="preload" href="/web/_nuxt/ed7bffa.js" as="script"><link rel="preload" href="/web/_nuxt/css/b43d66c.css" as="style"><link rel="preload" href="/web/_nuxt/d5be134.js" as="script">
<link href="/web/_nuxt/css/c773712.css" rel="stylesheet"><link href="/web/_nuxt/css/b43d66c.css" rel="stylesheet"></head>
<body>
<div id="__nuxt"><style>#nuxt-loading{background:#fff;visibility:hidden;opacity:0;position:absolute;left:0;right:0;top:0;bottom:0;display:flex;justify-content:center;align-items:center;flex-direction:column;animation:nuxtLoadingIn 10s ease;-webkit-animation:nuxtLoadingIn 10s ease;animation-fill-mode:forwards;overflow:hidden}@keyframes nuxtLoadingIn{0%{visibility:hidden;opacity:0}20%{visibility:visible;opacity:0}100%{visibility:visible;opacity:1}}@-webkit-keyframes nuxtLoadingIn{0%{visibility:hidden;opacity:0}20%{visibility:visible;opacity:0}100%{visibility:visible;opacity:1}}#nuxt-loading>div,#nuxt-loading>div:after{border-radius:50%;width:5rem;height:5rem}#nuxt-loading>div{font-size:10px;position:relative;text-indent:-9999em;border:.5rem solid #f5f5f5;border-left:.5rem solid #000;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:nuxtLoading 1.1s infinite linear;animation:nuxtLoading 1.1s infinite linear}#nuxt-loading.error>div{border-left:.5rem solid #ff4500;animation-duration:5s}@-webkit-keyframes nuxtLoading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes nuxtLoading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}</style><script>window.addEventListener("error",function(){var e=document.getElementById("nuxt-loading");e&&(e.className+=" error")})</script><div id="nuxt-loading" aria-live="polite" role="status"><div>Loading...</div></div></div><script>window.__NUXT__={config:{_app:{basePath:"/web/",assetsPath:"/web/_nuxt/",cdnURL:null}}}</script>
<script src="/web/_nuxt/78522d7.js"></script><script src="/web/_nuxt/aa2d3bb.js"></script><script src="/web/_nuxt/ed7bffa.js"></script><script src="/web/_nuxt/d5be134.js"></script></body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{594:function(e,t,r){},682:function(e,t,r){"use strict";r(594)},770:function(e,t,r){"use strict";r.r(t);r(31),r(73);var n=r(207),o={name:"account_edit",layout:"member",data:function(){return{formData:{id:"",realname:"",mobile:"",withdraw_type:"",bank_account:"",branch_bank_name:""},flag:!1,payList:[],loading:!0,index:0,transferType:[],rules:{realname:[{required:!0,message:"请输入真实姓名",trigger:"blur"}],mobile:[{required:!0,validator:function(e,t,r){if(!t)return r(new Error("手机号不能为空"));/^\d{11}$/.test(t)?r():r(new Error("请输入正确的手机号"))},trigger:"blur"}],withdraw_type:[{required:!0,message:"请选择账号类型",trigger:"change"}],branch_bank_name:[{required:!0,message:"请输入银行名称",trigger:"blur"}],bank_account:[{required:!0,message:"请输入提现账号",trigger:"blur"}]},yes:!0}},created:function(){this.formData.id=this.$route.query.id,this.getTransferType(),this.formData.id&&this.getAccountDetail(this.formData.id)},mounted:function(){var e=this;setTimeout((function(){e.yes=!1}),300)},methods:{getTransferType:function(){var e=this;Object(n.o)().then((function(t){e.transferType=t.data,e.formData.id||(e.loading=!1)})).catch((function(t){e.formData.id||(e.loading=!1)}))},getAccountDetail:function(e){var t=this;Object(n.b)({id:this.formData.id}).then((function(e){0==e.code&&e.data&&(t.formData.realname=e.data.realname,t.formData.mobile=e.data.mobile,t.formData.bank_account=e.data.bank_account,t.formData.branch_bank_name=e.data.branch_bank_name,t.formData.withdraw_type=e.data.withdraw_type),t.loading=!1})).catch((function(e){t.loading=!1}))},saveAccount:function(e){var t=this;this.$refs[e].validate((function(e){if(!e)return!1;var data={id:t.formData.id,realname:t.formData.realname,mobile:t.formData.mobile,withdraw_type:t.formData.withdraw_type,bank_account:t.formData.bank_account,branch_bank_name:t.formData.branch_bank_name,url:"add"};t.formData.id&&(data.url="edit"),t.flag||(t.flag=!0,Object(n.l)(data).then((function(e){0==e.code?t.$router.push({path:"/member/account_list"}):(t.flag=!1,t.$message({message:e.message,type:"warning"}))})).catch((function(e){t.flag=!1,t.$message.error(e.message)})))}))}}},l=(r(682),r(6)),component=Object(l.a)(o,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"box"},[t("div",{directives:[{name:"show",rawName:"v-show",value:e.yes,expression:"yes"}],staticClass:"null-page"}),e._v(" "),t("el-card",{staticClass:"box-card"},[t("div",{staticClass:"clearfix",attrs:{slot:"header"},slot:"header"},[t("span",[e._v("编辑账户")])]),e._v(" "),t("div",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}]},[t("el-form",{ref:"ruleForm",attrs:{model:e.formData,rules:e.rules,"label-width":"80px"}},[t("el-form-item",{attrs:{label:"姓名",prop:"realname"}},[t("el-input",{staticClass:"ns-len-input",attrs:{placeholder:"请输入真实姓名"},model:{value:e.formData.realname,callback:function(t){e.$set(e.formData,"realname",t)},expression:"formData.realname"}})],1),e._v(" "),t("el-form-item",{attrs:{label:"手机",prop:"mobile"}},[t("el-input",{staticClass:"ns-len-input",attrs:{autocomplete:"off",placeholder:"请输入手机号",maxlength:"11"},model:{value:e.formData.mobile,callback:function(t){e.$set(e.formData,"mobile",t)},expression:"formData.mobile"}})],1),e._v(" "),t("el-form-item",{attrs:{label:"账号类型",prop:"withdraw_type"}},[t("el-select",{attrs:{placeholder:"请选择账号类型"},model:{value:e.formData.withdraw_type,callback:function(t){e.$set(e.formData,"withdraw_type",t)},expression:"formData.withdraw_type"}},e._l(e.transferType,(function(e,r){return t("el-option",{key:r,attrs:{label:e,value:r,disabled:"wechatpay"==r}})})),1)],1),e._v(" "),"bank"==e.formData.withdraw_type?t("el-form-item",{attrs:{label:"银行名称",prop:"branch_bank_name"}},[t("el-input",{staticClass:"ns-len-input",attrs:{autocomplete:"off",placeholder:"请输入银行名称",maxlength:"50"},model:{value:e.formData.branch_bank_name,callback:function(t){e.$set(e.formData,"branch_bank_name",t)},expression:"formData.branch_bank_name"}})],1):e._e(),e._v(" "),"wechatpay"!=e.formData.withdraw_type&&e.formData.withdraw_type?t("el-form-item",{attrs:{label:"提现账号",prop:"bank_account"}},[t("el-input",{staticClass:"ns-len-input",attrs:{autocomplete:"off",placeholder:"请输入提现账号",maxlength:"30"},model:{value:e.formData.bank_account,callback:function(t){e.$set(e.formData,"bank_account",t)},expression:"formData.bank_account"}})],1):e._e(),e._v(" "),t("el-form-item",[t("el-button",{attrs:{size:"medium",type:"primary"},on:{click:function(t){return e.saveAccount("ruleForm")}}},[e._v("保存")])],1)],1)],1)])],1)}),[],!1,null,"5ff5db24",null);t.default=component.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{554:function(t,e,n){"use strict";n.d(e,"b",(function(){return c})),n.d(e,"a",(function(){return o}));var r=n(1);function c(t){return Object(r.a)({url:"/api/notice/page",data:t})}function o(t){return Object(r.a)({url:"/api/notice/info",data:t})}},644:function(t,e,n){},737:function(t,e,n){"use strict";n(644)},808:function(t,e,n){"use strict";n.r(e);var r=n(554),c={name:"notice",components:{},data:function(){return{queryInfo:{page:1,page_size:10,receiving_type:"web"},noticeList:[],total:0,loading:!0}},head:function(){return{title:"公告列表-"+this.$store.state.site.siteInfo.site_name}},created:function(){this.getList()},methods:{toDetail:function(t){this.$router.push({path:"/cms/notice/detail",query:{id:t}})},getList:function(){var t=this;Object(r.b)(this.queryInfo).then((function(e){0==e.code&&e.data&&(t.noticeList=e.data.list,t.total=e.data.count),t.loading=!1})).catch((function(e){t.loading=!1,t.$message.error(e.message)}))},handlePageSizeChange:function(t){this.queryInfo.page_size=t,this.getList()},handleCurrentPageChange:function(t){this.queryInfo.page=t,this.getList()}}},o=(n(737),n(6)),component=Object(o.a)(c,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"notice-wrap"},[e("el-breadcrumb",{staticClass:"path",attrs:{separator:"/"}},[e("el-breadcrumb-item",{staticClass:"path-home",attrs:{to:{path:"/"}}},[t._v("首页")]),t._v(" "),e("el-breadcrumb-item",{staticClass:"path-help"},[t._v("公告")])],1),t._v(" "),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"notice"},[e("div",{staticClass:"menu"},[e("div",{staticClass:"title"},[t._v("最新公告")]),t._v(" "),t._l(t.noticeList,(function(n){return e("div",{key:n.id,staticClass:"item",on:{click:function(e){return t.toDetail(n.id)}}},[e("div",{staticClass:"item-name"},[t._v(t._s(n.title))])])}))],2),t._v(" "),e("div",{staticClass:"list-wrap"},[e("div",{staticClass:"notice-title"},[t._v("商城公告")]),t._v(" "),t._l(t.noticeList,(function(n){return e("div",{key:n.id,staticClass:"list",on:{click:function(e){return t.toDetail(n.id)}}},[e("div",{staticClass:"item"},[t._v(t._s(n.title))]),t._v(" "),e("div",{staticClass:"info"},[e("div",{staticClass:"time"},[t._v(t._s(t.$util.timeStampTurnTime(n.create_time)))])])])}))],2)]),t._v(" "),e("div",{staticClass:"pager"},[e("el-pagination",{attrs:{background:"","pager-count":5,total:t.total,"prev-text":"上一页","next-text":"下一页","current-page":t.queryInfo.page,"page-size":t.queryInfo.page_size,"hide-on-single-page":""},on:{"update:currentPage":function(e){return t.$set(t.queryInfo,"page",e)},"update:current-page":function(e){return t.$set(t.queryInfo,"page",e)},"update:pageSize":function(e){return t.$set(t.queryInfo,"page_size",e)},"update:page-size":function(e){return t.$set(t.queryInfo,"page_size",e)},"size-change":t.handlePageSizeChange,"current-change":t.handleCurrentPageChange}})],1)],1)}),[],!1,null,"000c5148",null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{552:function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return f})),n.d(t,"d",(function(){return v}));var c=n(1);function r(e){return Object(c.a)({url:"/api/verify/verifyInfo",data:e,forceLogin:!0})}function o(e){return Object(c.a)({url:"/api/verify/verify",data:e,forceLogin:!0})}function f(e){return Object(c.a)({url:"/api/verify/getVerifyType",data:e})}function v(e){return Object(c.a)({url:"/api/verify/lists",data:e,forceLogin:!0})}},631:function(e,t,n){},724:function(e,t,n){"use strict";n(631)},798:function(e,t,n){"use strict";n.r(t);n(73),n(31);var c=n(552),r={name:"verification",components:{},data:function(){return{verify_code:"",yes:!0}},created:function(){},layout:"member",mounted:function(){var e=this;setTimeout((function(){e.yes=!1}),300)},methods:{confirm:function(){var e=this;if(!/[\S]+/.test(this.verify_code))return this.$message({message:"请输入核销码",type:"warning"}),!1;Object(c.c)({verify_code:this.verify_code}).then((function(t){t.code>=0?e.$router.push({path:"/order/verification_detail",query:{code:e.verify_code}}):e.$message({message:t.message,type:"warning"})})).catch((function(t){e.$message.error(t.message)}))}}},o=(n(724),n(6)),component=Object(o.a)(r,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"box"},[t("div",{directives:[{name:"show",rawName:"v-show",value:e.yes,expression:"yes"}],staticClass:"null-page"}),e._v(" "),t("el-card",{staticClass:"box-card order-list"},[t("div",{staticClass:"clearfix",attrs:{slot:"header"},slot:"header"},[t("span",[e._v("核销台")])]),e._v(" "),t("div",{staticClass:"ns-verification"},[t("div",{staticClass:"ns-verification-flow"},[t("div",{staticClass:"ns-verification-icon"},[t("div",[t("i",{staticClass:"iconfont icon-shurutianxiebi"})]),e._v(" "),t("p",[e._v("输入核销码")])]),e._v(" "),t("div",[t("i",{staticClass:"iconfont icon-jiang-copy"})]),e._v(" "),t("div",{staticClass:"ns-verification-icon"},[t("div",[t("i",{staticClass:"iconfont icon-hexiao"})]),e._v(" "),t("p",[e._v("核销")])])]),e._v(" "),t("div",{staticClass:"ns-verification-wrap"},[t("el-input",{attrs:{placeholder:"请输入核销码"},model:{value:e.verify_code,callback:function(t){e.verify_code=t},expression:"verify_code"}}),e._v(" "),t("el-button",{on:{click:e.confirm}},[e._v("确认")])],1)])])],1)}),[],!1,null,"66d369ce",null);t.default=component.exports}}]);

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{537:function(t,e,n){"use strict";n.d(e,"b",(function(){return c})),n.d(e,"c",(function(){return o})),n.d(e,"j",(function(){return l})),n.d(e,"a",(function(){return d})),n.d(e,"h",(function(){return f})),n.d(e,"k",(function(){return h})),n.d(e,"i",(function(){return m})),n.d(e,"f",(function(){return w})),n.d(e,"e",(function(){return v})),n.d(e,"d",(function(){return _})),n.d(e,"g",(function(){return j}));var r=n(1);function c(t){return Object(r.a)({url:"/api/memberaccount/info",data:t,forceLogin:!0})}function o(t){return Object(r.a)({url:"/api/memberaccount/page",data:t,forceLogin:!0})}function l(t){return Object(r.a)({url:"/api/memberwithdraw/info",data:t})}function d(t){return Object(r.a)({url:"/api/memberbankaccount/defaultinfo",data:t})}function f(t){return Object(r.a)({url:"/api/memberwithdraw/apply",data:t})}function h(t){return Object(r.a)({url:"/api/memberwithdraw/page",data:t})}function m(t){return Object(r.a)({url:"/api/memberwithdraw/detail",data:t})}function w(t){return Object(r.a)({url:"/memberrecharge/api/memberrecharge/page",data:t})}function v(t){return Object(r.a)({url:"/memberrecharge/api/memberrecharge/info",data:t})}function _(t){return Object(r.a)({url:"/memberrecharge/api/ordercreate/create",data:t})}function j(t){return Object(r.a)({url:"/memberrecharge/api/order/page",data:t})}},618:function(t,e,n){},710:function(t,e,n){"use strict";n(618)},789:function(t,e,n){"use strict";n.r(e);n(73),n(7),n(18);var r=n(537),c={name:"withdrawal",layout:"member",components:{},data:function(){return{dataList:[],currentPage:1,pageSize:10,total:0,loading:!0,yes:!0}},created:function(){this.getDateList()},mounted:function(){var t=this;setTimeout((function(){t.yes=!1}),300)},methods:{handlePageSizeChange:function(t){this.pageSize=t,this.refresh()},handleCurrentPageChange:function(t){this.currentPage=t,this.refresh()},refresh:function(){this.loading=!0,this.getDateList()},getDateList:function(){var t=this;Object(r.k)({page_size:this.pageSize,page:this.currentPage}).then((function(e){0==e.code&&e.data&&(t.dataList=e.data.list,t.dataList.forEach((function(e){e.apply_time=t.$util.timeStampTurnTime(e.apply_time)})),t.total=e.data.count),t.loading=!1})).catch((function(e){t.loading=!1}))},handleEdit:function(t,e){this.$router.push({path:"/member/withdrawal_detail",query:{id:e.id}})}}},o=(n(710),n(6)),component=Object(o.a)(c,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"box"},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.yes,expression:"yes"}],staticClass:"null-page"}),t._v(" "),e("el-card",{staticClass:"box-card"},[e("div",{staticClass:"clearfix",attrs:{slot:"header"},slot:"header"},[e("span",[t._v("提现记录")])]),t._v(" "),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"withdrawal-list"},[t.dataList.length>0?e("el-table",{attrs:{data:t.dataList,border:""}},[e("el-table-column",{attrs:{prop:"transfer_type_name",label:"账户类型",width:"150"}}),t._v(" "),e("el-table-column",{attrs:{prop:"apply_money",label:"提现金额",width:"150"}}),t._v(" "),e("el-table-column",{attrs:{prop:"apply_time",label:"提现时间"}}),t._v(" "),e("el-table-column",{attrs:{prop:"status_name",label:"提现状态",width:"150"}}),t._v(" "),e("el-table-column",{attrs:{label:"操作",width:"150"},scopedSlots:t._u([{key:"default",fn:function(n){return[e("el-button",{attrs:{size:"mini"},on:{click:function(e){return t.handleEdit(n.$index,n.row)}}},[t._v("详情")])]}}],null,!1,859713525)})],1):t.loading||0!=t.dataList.length?t._e():e("div",{staticClass:"ns-text-align"},[t._v("暂无提现记录")])],1),t._v(" "),e("div",{staticClass:"pager"},[e("el-pagination",{attrs:{background:"","pager-count":5,total:t.total,"prev-text":"上一页","next-text":"下一页","current-page":t.currentPage,"page-size":t.pageSize,"hide-on-single-page":""},on:{"update:currentPage":function(e){t.currentPage=e},"update:current-page":function(e){t.currentPage=e},"update:pageSize":function(e){t.pageSize=e},"update:page-size":function(e){t.pageSize=e},"size-change":t.handlePageSizeChange,"current-change":t.handleCurrentPageChange}})],1)])],1)}),[],!1,null,"59aa8f82",null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{554:function(t,e,n){"use strict";n.d(e,"b",(function(){return c})),n.d(e,"a",(function(){return o}));var r=n(1);function c(t){return Object(r.a)({url:"/api/notice/page",data:t})}function o(t){return Object(r.a)({url:"/api/notice/info",data:t})}},643:function(t,e,n){},736:function(t,e,n){"use strict";n(643)},807:function(t,e,n){"use strict";n.r(e);n(24),n(25),n(23),n(7),n(29),n(18),n(30);var r=n(10),c=(n(92),n(12)),o=n(554);function l(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(object);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,n)}return e}var d={name:"notice_detail",components:{},data:function(){return{info:{},loading:!0}},created:function(){this.id=this.$route.query.id,this.getDetail()},computed:function(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?l(Object(source),!0).forEach((function(e){Object(r.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):l(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}({},Object(c.b)(["siteInfo"])),watch:{$route:function(t){this.id=t.query.id,this.getDetail()}},methods:{getDetail:function(){var t=this;Object(o.a)({id:this.id}).then((function(e){e.data?(t.info=e.data,t.loading=!1,window.document.title="".concat(t.info.title," - ").concat(t.siteInfo.site_name)):t.$router.push({path:"/cms/notice/list"})})).catch((function(e){t.loading=!1,t.$message.error(e.message)}))}}},f=d,m=(n(736),n(6)),component=Object(m.a)(f,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"notice-wrap"},[e("el-breadcrumb",{staticClass:"path",attrs:{separator:"/"}},[e("el-breadcrumb-item",{staticClass:"path-home",attrs:{to:{path:"/"}}},[t._v("首页")]),t._v(" "),e("el-breadcrumb-item",{attrs:{to:{path:"/cms/notice/list"}}},[t._v("公告列表")]),t._v(" "),e("el-breadcrumb-item",{staticClass:"path-help"},[t._v("公告详情")])],1),t._v(" "),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"notice-detil"},[e("div",{staticClass:"notice-info"},[e("div",{staticClass:"title"},[t._v(t._s(t.info.title))]),t._v(" "),e("div",{staticClass:"time"},[t._v(t._s(t.$util.timeStampTurnTime(t.info.create_time)))])]),t._v(" "),e("div",{staticClass:"content",domProps:{innerHTML:t._s(t.info.content)}})])],1)}),[],!1,null,"322898bc",null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{590:function(e,t,o){},678:function(e,t,o){"use strict";o(590)},767:function(e,t,o){"use strict";o.r(t);var n=o(152),r={name:"category",components:{},data:function(){return{goodsCategory:[],categoryFixed:!1,clickIndex:0,loading:!0}},created:function(){this.getGoodsCategory()},mounted:function(){window.addEventListener("scroll",this.handleScroll)},methods:{getGoodsCategory:function(){var e=this;Object(n.d)({level:3,template:2}).then((function(t){0==t.code&&(e.goodsCategory=t.data),e.loading=!1})).catch((function(t){e.$message.error(t.message),e.loading=!1}))},handleScroll:function(){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop,t=document.querySelector(".newCategory").offsetTop;this.categoryFixed=e>t;for(var o=[],i=0;i<this.goodsCategory.length;i++){var n=this.$refs["category"+i][0].offsetTop;o.push(n);var r=e-t;r<o[o.length-1]?r>=o[i]&&r<o[i+1]&&(this.clickIndex=i):this.clickIndex=o.length-1}},changeCate:function(e,t){this.clickIndex=e,document.querySelector(t).scrollIntoView(!0)}},destroyed:function(){window.removeEventListener("scroll",this.handleScroll)}},c=(o(678),o(6)),component=Object(c.a)(r,(function(){var e=this,t=e._self._c;return t("div",[t("div",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],staticClass:"newCategory"},[t("div",{staticClass:"categoryLink"},[t("ul",{class:1==e.categoryFixed?"category-fixed":"",attrs:{id:"categoryUl"}},e._l(e.goodsCategory,(function(o,n){return t("li",{key:n,class:n==e.clickIndex?"selected":"",on:{click:function(t){return e.changeCate(n,"#category"+n)}}},[t("a",[t("span",[e._v(e._s(o.category_name))])])])})),0)]),e._v(" "),t("div",{staticClass:"categoryCon"},e._l(e.goodsCategory,(function(o,n){return t("div",{key:n,ref:"category"+n,refInFor:!0,staticClass:"items",class:"items-"+n,attrs:{id:"category"+n}},[t("h2",[t("router-link",{attrs:{to:{path:"/goods/list",query:{category_id:o.category_id,level:o.level}},target:"_blank"}},[e._v(e._s(o.category_name))])],1),e._v(" "),e._l(o.child_list,(function(o,n){return t("dl",{key:n},[t("dt",[t("router-link",{attrs:{to:{path:"/goods/list",query:{category_id:o.category_id,level:o.level}},target:"_blank"}},[e._v(e._s(o.category_name))])],1),e._v(" "),t("dd",e._l(o.child_list,(function(o,n){return t("router-link",{key:n,attrs:{to:{path:"/goods/list",query:{category_id:o.category_id,level:o.level}},target:"_blank"}},[e._v(e._s(o.category_name))])})),1)])}))],2)})),0),e._v(" "),e.goodsCategory.length<=0?t("div",{staticClass:"empty-wrap"},[t("div",{staticClass:"ns-text-align"},[e._v("暂无商品分类")])]):e._e()])])}),[],!1,null,"31ec0007",null);t.default=component.exports}}]);

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{624:function(e,t,r){},716:function(e,t,r){"use strict";r(624)},794:function(e,t,r){"use strict";r.r(t);r(24),r(25),r(23),r(29),r(30);var n=r(10),c=(r(73),r(7),r(18),r(204)),o=r(12);function l(object,e){var t=Object.keys(object);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(object);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(object,e).enumerable}))),t.push.apply(t,r)}return t}var d={name:"logistics",components:{},data:function(){return{orderId:0,loading:!0,activeParcel:"parcel_0",packageList:[],yes:!0}},created:function(){this.orderId=this.$route.query.order_id,this.orderId||this.$router.push({path:"/member/order_list"}),this.getOrderPackageInfo()},computed:function(e){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?l(Object(source),!0).forEach((function(t){Object(n.a)(e,t,source[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(source)):l(Object(source)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(source,t))}))}return e}({},Object(o.b)(["defaultGoodsImage"])),layout:"member",mounted:function(){var e=this;setTimeout((function(){e.yes=!1}),300)},methods:{getOrderPackageInfo:function(){var e=this;Object(c.f)({order_id:this.orderId}).then((function(t){t.code>=0?(e.packageList=t.data,e.packageList.forEach((function(e){e.trace.list&&(e.trace.list=e.trace.list.reverse())})),e.loading=!1):e.$message({message:"未获取到订单包裹信息!",type:"warning",duration:2e3,onClose:function(){e.$router.push({path:"/member/order_list"})}})})).catch((function(t){e.loading=!1}))},imageError:function(e,t){this.packageList[e].goods_list[t].sku_image=this.defaultGoodsImage}}},m=d,v=(r(716),r(6)),component=Object(v.a)(m,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"box"},[t("div",{directives:[{name:"show",rawName:"v-show",value:e.yes,expression:"yes"}],staticClass:"null-page"}),e._v(" "),t("el-card",{staticClass:"box-card logistics"},[t("div",{staticClass:"clearfix",attrs:{slot:"header"},slot:"header"},[t("el-breadcrumb",{attrs:{separator:"/"}},[t("el-breadcrumb-item",{attrs:{to:{path:"/member/order_list"}}},[e._v("订单列表")]),e._v(" "),t("el-breadcrumb-item",[e._v("物流详情")])],1)],1),e._v(" "),t("div",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}]},[t("el-tabs",{model:{value:e.activeParcel,callback:function(t){e.activeParcel=t},expression:"activeParcel"}},e._l(e.packageList,(function(r,n){return t("el-tab-pane",{key:n,attrs:{label:r.package_name,name:"parcel_"+n}},[r.trace.success&&r.trace.list.length>0?t("div",{staticClass:"trace"},[t("el-timeline",e._l(r.trace.list,(function(r,n){return t("el-timeline-item",{key:n,attrs:{timestamp:r.datetime,placement:"top",type:0==n?"primary":""}},[t("p",[e._v(e._s(r.remark))])])})),1)],1):t("div",{staticClass:"trace"},[t("p",{staticClass:"empty-wrap"},[e._v(e._s(r.trace.reason))])]),e._v(" "),t("ul",{staticClass:"info-wrap"},[t("li",[t("label",[e._v("运单号码:")]),e._v(" "),t("span",[e._v(e._s(r.delivery_no))])]),e._v(" "),t("li",[t("label",[e._v("物流公司:")]),e._v(" "),t("span",[e._v(e._s(r.express_company_name))])])]),e._v(" "),t("ul",{staticClass:"goods-wrap"},e._l(r.goods_list,(function(r,c){return t("li",{key:c,on:{click:function(t){return e.$util.pushToTab("/sku/"+r.sku_id)}}},[t("div",{staticClass:"img-wrap"},[t("img",{attrs:{src:e.$img(r.sku_image,{size:"mid"})},on:{error:function(t){return e.imageError(n,c)}}})]),e._v(" "),t("p",{staticClass:"sku-name"},[e._v(e._s(r.sku_name)+" x "+e._s(r.num))])])})),0)])})),1)],1)])],1)}),[],!1,null,"444ed289",null);t.default=component.exports}}]);

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{535:function(t,e,r){"use strict";var n=r(3),o=r(35),c=r(14),f=r(8),path=r(319),l=r(5),d=r(113),m=r(16),v=r(205),h=r(63),_=r(112),O=r(318),N=r(4),y=r(93).f,I=r(57).f,w=r(26).f,E=r(320),j=r(316).trim,S="Number",k=f[S],P=path[S],T=k.prototype,A=f.TypeError,C=l("".slice),G=l("".charCodeAt),F=function(t){var e=O(t,"number");return"bigint"==typeof e?e:z(e)},z=function(t){var e,r,n,o,c,f,l,code,d=O(t,"number");if(_(d))throw A("Cannot convert a Symbol value to a number");if("string"==typeof d&&d.length>2)if(d=j(d),43===(e=G(d,0))||45===e){if(88===(r=G(d,2))||120===r)return NaN}else if(48===e){switch(G(d,1)){case 66:case 98:n=2,o=49;break;case 79:case 111:n=8,o=55;break;default:return+d}for(f=(c=C(d,2)).length,l=0;l<f;l++)if((code=G(c,l))<48||code>o)return NaN;return parseInt(c,n)}return+d},D=d(S,!k(" 0o1")||!k("0b1")||k("+0x1")),M=function(t){return h(T,t)&&N((function(){E(t)}))},R=function(t){var e=arguments.length<1?0:k(F(t));return M(this)?v(Object(e),this,R):e};R.prototype=T,D&&!o&&(T.constructor=R),n({global:!0,constructor:!0,wrap:!0,forced:D},{Number:R});var V=function(t,source){for(var e,r=c?y(source):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),n=0;r.length>n;n++)m(source,e=r[n])&&!m(t,e)&&w(t,e,I(source,e))};o&&P&&V(path[S],P),(D||o)&&V(path[S],k)},536:function(t,e,r){},539:function(t,e,r){"use strict";r(536)},544:function(t,e,r){"use strict";r.r(e);r(24),r(25),r(23),r(7),r(29),r(18),r(30);var n=r(10),o=(r(535),r(12)),c=r(206);function f(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(object);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,r)}return e}var l={name:"goods_recommend",props:{page:{type:[Number,String],default:1},pageSize:{type:[Number,String],default:5}},data:function(){return{loading:!0,list:[]}},created:function(){this.getGoodsRecommend()},computed:function(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?f(Object(source),!0).forEach((function(e){Object(n.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):f(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}({},Object(o.b)(["defaultGoodsImage"])),methods:{getGoodsRecommend:function(){var t=this;Object(c.e)({page:this.page,page_size:this.pageSize}).then((function(e){0==e.code&&(t.list=e.data.list),t.loading=!1})).catch((function(e){t.loading=!1}))},imageError:function(t){this.list[t].sku_image=this.defaultGoodsImage}}},d=l,m=(r(539),r(6)),component=Object(m.a)(d,(function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"goods-recommend"},[e("h4",[t._v("商品精选")]),t._v(" "),t.list.length?e("ul",t._l(t.list,(function(r,n){return e("li",{key:n,on:{click:function(e){return t.$util.pushToTab({path:"/sku/"+r.sku_id})}}},[e("div",{staticClass:"img-wrap"},[e("img",{attrs:{src:t.$img(r.sku_image,{size:"mid"})},on:{error:function(e){return t.imageError(n)}}})]),t._v(" "),e("div",{staticClass:"price"},[t._v("¥"+t._s(r.discount_price))]),t._v(" "),e("p",{staticClass:"sku-name"},[t._v(t._s(r.goods_name))]),t._v(" "),e("div",{staticClass:"info-wrap"})])})),0):t._e()])}),[],!1,null,"a68a46cc",null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{578:function(t,e,n){},660:function(t,e,n){"use strict";n(578)},762:function(t,e,n){"use strict";n.r(e);var c=n(27),o={name:"close",created:function(){this.getSiteStatus()},layout:"empty",methods:{getSiteStatus:function(){var t=this;Object(c.e)().then((function(e){0==e.code&&t.$router.push("/")}))}}},r=(n(660),n(6)),component=Object(r.a)(o,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"error-wrap"},[e("img",{attrs:{src:n(331)}}),t._v(" "),e("h2",[t._v(t._s("网站已关闭"))])])}),[],!1,null,"7f63829b",null);e.default=component.exports}}]);

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{535:function(t,e,r){"use strict";var o=r(3),n=r(35),l=r(14),c=r(8),path=r(319),v=r(5),f=r(113),d=r(16),m=r(205),_=r(63),I=r(112),h=r(318),y=r(4),N=r(93).f,O=r(57).f,w=r(26).f,k=r(320),j=r(316).trim,E="Number",T=c[E],x=path[E],S=T.prototype,C=c.TypeError,A=v("".slice),P=v("".charCodeAt),F=function(t){var e=h(t,"number");return"bigint"==typeof e?e:G(e)},G=function(t){var e,r,o,n,l,c,v,code,f=h(t,"number");if(I(f))throw C("Cannot convert a Symbol value to a number");if("string"==typeof f&&f.length>2)if(f=j(f),43===(e=P(f,0))||45===e){if(88===(r=P(f,2))||120===r)return NaN}else if(48===e){switch(P(f,1)){case 66:case 98:o=2,n=49;break;case 79:case 111:o=8,n=55;break;default:return+f}for(c=(l=A(f,2)).length,v=0;v<c;v++)if((code=P(l,v))<48||code>n)return NaN;return parseInt(l,o)}return+f},$=f(E,!T(" 0o1")||!T("0b1")||T("+0x1")),L=function(t){return _(S,t)&&y((function(){k(t)}))},D=function(t){var e=arguments.length<1?0:T(F(t));return L(this)?m(Object(e),this,D):e};D.prototype=S,$&&!n&&(S.constructor=D),o({global:!0,constructor:!0,wrap:!0,forced:$},{Number:D});var M=function(t,source){for(var e,r=l?N(source):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),o=0;r.length>o;o++)d(source,e=r[o])&&!d(t,e)&&w(t,e,O(source,e))};n&&x&&M(path[E],x),($||n)&&M(path[E],T)},542:function(t,e,r){var o=r(3),n=r(548);o({target:"Number",stat:!0,forced:Number.parseInt!=n},{parseInt:n})},548:function(t,e,r){var o=r(8),n=r(4),l=r(5),c=r(19),v=r(316).trim,f=r(209),d=o.parseInt,m=o.Symbol,_=m&&m.iterator,I=/^[+-]?0x/i,h=l(I.exec),y=8!==d(f+"08")||22!==d(f+"0x16")||_&&!n((function(){d(Object(_))}));t.exports=y?function(t,e){var r=v(c(t));return d(r,e>>>0||(h(I,r)?16:10))}:d},558:function(t,e,r){},574:function(t,e,r){"use strict";r(558)},657:function(t,e,r){"use strict";r.r(e);r(321),r(542),r(535),r(24),r(25),r(23),r(7),r(29),r(18),r(30);var o=r(10),n=r(12);function l(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(object);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,r)}return e}var c={name:"floor-style-2",props:{data:{type:Object}},data:function(){return{}},created:function(){},computed:function(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?l(Object(source),!0).forEach((function(e){Object(o.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):l(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}({},Object(n.b)(["defaultGoodsImage"])),methods:{goSku:function(t){this.$router.push("/sku/"+t)},imageError:function(t){this.data.value.goodsList.value.list[t].goods_image=this.defaultGoodsImage}}},v=c,f=(r(574),r(6)),component=Object(f.a)(v,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"floor-style-2"},[t.data.value.title.value.text?e("div",{staticClass:"head-wrap"},[e("h2",{style:{textAlign:t.data.value.title.value.textAlign,color:t.data.value.title.value.color},on:{click:function(e){return t.$util.pushToTab(t.data.value.title.value.link.url)}}},[t._v(t._s(t.data.value.title.value.text))]),t._v(" "),t.data.value.subTitle.value.text?e("p",{style:{color:t.data.value.subTitle.value.color},on:{click:function(e){return t.$util.pushToTab(t.data.value.subTitle.value.link.url)}}},[t._v(t._s(t.data.value.subTitle.value.text))]):t._e()]):t._e(),t._v(" "),e("div",{staticClass:"body-wrap"},[e("ul",{staticClass:"goods-list"},t._l(t.data.value.goodsList.value.list,(function(r,o){return e("li",{key:o,attrs:{title:r.goods_name},on:{click:function(e){return t.goSku(r.sku_id)}}},[e("div",{staticClass:"img-wrap"},[e("img",{attrs:{alt:"商品图片",src:r.goods_image?t.$img(r.goods_image.split(",")[0],{size:"mid"}):t.defaultGoodsImage},on:{error:function(e){return t.imageError(o)}}})]),t._v(" "),e("h3",[t._v(t._s(r.goods_name))]),t._v(" "),e("p",{staticClass:"desc"},[t._v(t._s(r.introduction))]),t._v(" "),e("p",{staticClass:"price"},[e("span",{staticClass:"num"},[t._v(t._s(r.discount_price)+"元")]),t._v(" "),e("del",{directives:[{name:"show",rawName:"v-show",value:Number.parseInt(r.market_price),expression:"Number.parseInt(item.market_price)"}]},[t._v(t._s(r.market_price)+"元")])])])})),0)]),t._v(" "),t.data.value.bottomImg.value.url?e("div",{staticClass:"bottom-wrap"},[e("img",{attrs:{src:t.$img(t.data.value.bottomImg.value.url)},on:{click:function(e){return t.$util.pushToTab(t.data.value.bottomImg.value.link.url)}}})]):t._e()])}),[],!1,null,"cf1bbd00",null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{642:function(t,e,n){},735:function(t,e,n){"use strict";n(642)},806:function(t,e,n){"use strict";n.r(e);var c=n(216),r={name:"help",components:{},data:function(){return{helpList:[],helpOther:[],currentId:0,loading:!0}},head:function(){return{title:"帮助列表-"+this.$store.state.site.siteInfo.site_name}},created:function(){this.getInfo()},methods:{menuOther:function(t){this.currentId=t,this.getHelpOtherInfo()},getInfo:function(){var t=this;Object(c.b)().then((function(e){0==e.code&&e.data.length>0&&(t.currentId=e.data[0].class_id,t.helpList=e.data,t.getHelpOtherInfo()),t.loading=!1})).catch((function(e){t.loading=!1,t.$message.error(e.message)}))},getHelpOtherInfo:function(){var t=this;Object(c.c)({class_id:this.currentId}).then((function(e){0==e.code&&e.data&&(t.helpOther=e.data)})).catch((function(e){t.$message.error(e.message)}))},detail:function(t){this.$router.push({path:"/cms/help/detail",query:{id:t}})}}},l=(n(735),n(6)),component=Object(l.a)(r,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"help-wrap"},[e("el-breadcrumb",{staticClass:"path",attrs:{separator:"/"}},[e("el-breadcrumb-item",{staticClass:"path-home",attrs:{to:{path:"/"}}},[t._v("首页")]),t._v(" "),e("el-breadcrumb-item",{staticClass:"path-help"},[t._v("帮助")])],1),t._v(" "),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"help"},[e("div",{staticClass:"menu"},[e("div",{staticClass:"title"},[t._v("帮助列表")]),t._v(" "),t._l(t.helpList,(function(n,c){return e("div",{key:c,staticClass:"item"},[e("div",{class:t.currentId==n.class_id?"active item-name":"item-name",on:{click:function(e){return t.menuOther(n.class_id)}}},[t._v(t._s(n.class_name))])])}))],2),t._v(" "),e("div",{staticClass:"list-other"},[e("div",{staticClass:"item-info"},t._l(t.helpOther.list,(function(n,c){return e("div",{key:c,staticClass:"item",on:{click:function(e){return t.detail(n.id)}}},[e("div",{staticClass:"item-title"},[t._v(t._s(n.title))]),t._v(" "),e("div",{staticClass:"info"},[e("div",{staticClass:"time"},[t._v(t._s(t.$util.timeStampTurnTime(n.create_time)))])])])})),0)])])],1)}),[],!1,null,"6d1a51da",null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{537:function(t,e,n){"use strict";n.d(e,"b",(function(){return l})),n.d(e,"c",(function(){return c})),n.d(e,"j",(function(){return d})),n.d(e,"a",(function(){return o})),n.d(e,"h",(function(){return v})),n.d(e,"k",(function(){return _})),n.d(e,"i",(function(){return m})),n.d(e,"f",(function(){return f})),n.d(e,"e",(function(){return w})),n.d(e,"d",(function(){return C})),n.d(e,"g",(function(){return h}));var r=n(1);function l(t){return Object(r.a)({url:"/api/memberaccount/info",data:t,forceLogin:!0})}function c(t){return Object(r.a)({url:"/api/memberaccount/page",data:t,forceLogin:!0})}function d(t){return Object(r.a)({url:"/api/memberwithdraw/info",data:t})}function o(t){return Object(r.a)({url:"/api/memberbankaccount/defaultinfo",data:t})}function v(t){return Object(r.a)({url:"/api/memberwithdraw/apply",data:t})}function _(t){return Object(r.a)({url:"/api/memberwithdraw/page",data:t})}function m(t){return Object(r.a)({url:"/api/memberwithdraw/detail",data:t})}function f(t){return Object(r.a)({url:"/memberrecharge/api/memberrecharge/page",data:t})}function w(t){return Object(r.a)({url:"/memberrecharge/api/memberrecharge/info",data:t})}function C(t){return Object(r.a)({url:"/memberrecharge/api/ordercreate/create",data:t})}function h(t){return Object(r.a)({url:"/memberrecharge/api/order/page",data:t})}},619:function(t,e,n){},711:function(t,e,n){"use strict";n(619)},790:function(t,e,n){"use strict";n.r(e);n(73);var r=n(537),l={name:"withdrawal_detail",layout:"member",components:{},data:function(){return{loading:!0,id:"",detail:{},yes:!0}},created:function(){this.getDetail()},mounted:function(){var t=this;setTimeout((function(){t.yes=!1}),300)},methods:{getDetail:function(){var t=this;this.id=this.$route.query.id,Object(r.i)({id:this.id}).then((function(e){e.data&&(t.detail=e.data),t.loading=!1})).catch((function(e){t.loading=!1}))}}},c=(n(711),n(6)),component=Object(c.a)(l,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"box"},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.yes,expression:"yes"}],staticClass:"null-page"}),t._v(" "),e("el-card",{staticClass:"box-card"},[e("div",{staticClass:"clearfix",attrs:{slot:"header"},slot:"header"},[e("el-breadcrumb",{attrs:{separator:"/"}},[e("el-breadcrumb-item",{attrs:{to:{path:"/member/withdrawal"}}},[t._v("提现记录")]),t._v(" "),e("el-breadcrumb-item",[t._v("提现详情")])],1)],1),t._v(" "),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}]},[e("div",{staticClass:"money-wrap"},[e("span",[t._v("-"+t._s(t.detail.apply_money))])]),t._v(" "),e("div",{staticClass:"line-wrap"},[e("span",{staticClass:"label"},[t._v("当前状态")]),t._v(" "),e("span",{staticClass:"value"},[t._v(t._s(t.detail.status_name))])]),t._v(" "),e("div",{staticClass:"line-wrap"},[e("span",{staticClass:"label"},[t._v("交易号")]),t._v(" "),e("span",{staticClass:"value"},[t._v(t._s(t.detail.withdraw_no))])]),t._v(" "),e("div",{staticClass:"line-wrap"},[e("span",{staticClass:"label"},[t._v("手续费")]),t._v(" "),e("span",{staticClass:"value"},[t._v("¥"+t._s(t.detail.service_money))])]),t._v(" "),e("div",{staticClass:"line-wrap"},[e("span",{staticClass:"label"},[t._v("申请时间")]),t._v(" "),e("span",{staticClass:"value"},[t._v(t._s(t.$util.timeStampTurnTime(t.detail.apply_time)))])]),t._v(" "),t.detail.status?e("div",{staticClass:"line-wrap"},[e("span",{staticClass:"label"},[t._v("审核时间")]),t._v(" "),e("span",{staticClass:"value"},[t._v(t._s(t.$util.timeStampTurnTime(t.detail.audit_time)))])]):t._e(),t._v(" "),t.detail.bank_name?e("div",{staticClass:"line-wrap"},[e("span",{staticClass:"label"},[t._v("银行名称")]),t._v(" "),e("span",{staticClass:"value"},[t._v(t._s(t.detail.bank_name))])]):t._e(),t._v(" "),e("div",{staticClass:"line-wrap"},[e("span",{staticClass:"label"},[t._v("收款账号")]),t._v(" "),e("span",{staticClass:"value"},[t._v(t._s(t.detail.account_number))])]),t._v(" "),-1==t.detail.status&&t.detail.refuse_reason?e("div",{staticClass:"line-wrap"},[e("span",{staticClass:"label"},[t._v("拒绝理由")]),t._v(" "),e("span",{staticClass:"value"},[t._v(t._s(t.detail.refuse_reason))])]):t._e(),t._v(" "),2==t.detail.status?e("div",{staticClass:"line-wrap"},[e("span",{staticClass:"label"},[t._v("转账方式名称")]),t._v(" "),e("span",{staticClass:"value"},[t._v(t._s(t.detail.transfer_type_name))])]):t._e(),t._v(" "),2==t.detail.status?e("div",{staticClass:"line-wrap"},[e("span",{staticClass:"label"},[t._v("转账时间")]),t._v(" "),e("span",{staticClass:"value"},[t._v(t._s(t.$util.timeStampTurnTime(t.detail.payment_time)))])]):t._e()])])],1)}),[],!1,null,"630fcd2e",null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{603:function(t,e,o){},604:function(t,e,o){},692:function(t,e,o){"use strict";o(603)},693:function(t,e,o){"use strict";o(604)},778:function(t,e,o){"use strict";o.r(e);o(24),o(25),o(23),o(7),o(29),o(18),o(30);var n=o(10),r=(o(73),o(207)),c=o(12);function l(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(object);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,o)}return e}var d={name:"footprint",layout:"member",components:{},data:function(){return{timesArr:[],footPrintData:[],loading:!0,yes:!0}},created:function(){this.getFootPrintData()},computed:function(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?l(Object(source),!0).forEach((function(e){Object(n.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):l(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}({},Object(c.b)(["defaultGoodsImage"])),mounted:function(){var t=this;setTimeout((function(){t.yes=!1}),300)},methods:{getFootPrintData:function(){var t=this;Object(r.j)({page:1,page_size:0}).then((function(e){var data=e.data.list;t.footPrintData=[],t.timesArr=[];for(var i=0;i<data.length;i++){var o=t.$util.timeStampTurnTime(data[i].browse_time).split(" ")[0];-1==t.$util.inArray(o,t.timesArr)&&t.timesArr.push(o);var n={};n.id=data[i].id,n.sku_id=data[i].sku_id,n.browse_time=o,n.goods_image=data[i].sku_image.split(",")[0],n.goods_name=data[i].sku_name,n.goods_price=data[i].discount_price,t.footPrintData.push(n)}t.loading=!1})).catch((function(e){t.loading=!1}))},imageError:function(t){this.footPrintData[t].goods_image=this.defaultGoodsImage},deleteFootprint:function(t){var e=this;Object(r.h)({id:t}).then((function(t){e.loading=!1,e.getFootPrintData(),e.$message({message:t.message,type:"success"})})).catch((function(t){e.loading=!1,e.$message.error(t.message)}))},mouseenter:function(t){this.$set(t,"del",!0)},mouseleave:function(t){this.$set(t,"del",!1)}}},m=d,f=(o(692),o(693),o(6)),component=Object(f.a)(m,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"box"},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.yes,expression:"yes"}],staticClass:"null-page"}),t._v(" "),e("el-card",{staticClass:"box-card foot-print"},[e("div",{staticClass:"clearfix",attrs:{slot:"header"},slot:"header"},[e("span",[t._v("我的足迹")])]),t._v(" "),""!=t.timesArr?e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}]},[e("el-timeline",t._l(t.timesArr,(function(o,n){return e("el-timeline-item",{key:n,staticClass:"ns-time-line",attrs:{timestamp:o,placement:"top"}},[e("el-card",[e("div",{staticClass:"ns-goods-list"},t._l(t.footPrintData,(function(n,r){return o==n.browse_time?e("div",{key:r,staticClass:"ns-goods-li",on:{click:function(e){return t.$util.pushToTab("/sku/"+n.sku_id)}}},[e("span",{staticClass:"ns-btn-del",on:{click:function(e){return e.stopPropagation(),t.deleteFootprint(n.id)}}},[e("i",{staticClass:"iconfont icon-shanchu"})]),t._v(" "),e("el-image",{attrs:{src:t.$img(n.goods_image,{size:"mid"}),fit:"contain"},on:{error:function(e){return t.imageError(r)}}}),t._v(" "),e("p",{staticClass:"goods-name",attrs:{title:n.goods_name}},[t._v(t._s(n.goods_name))]),t._v(" "),e("span",{staticClass:"goods-price"},[t._v("¥"+t._s(n.goods_price))])],1):t._e()})),0)])],1)})),1)],1):e("div",{staticClass:"footprint"},[e("router-link",{attrs:{to:"/"}},[t._v("暂时没有足迹~")])],1)])],1)}),[],!1,null,"3b294beb",null);e.default=component.exports}}]);

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{602:function(e,t,n){},691:function(e,t,n){"use strict";n(602)},777:function(e,t,n){"use strict";n.r(t);n(56),n(73);var r=n(207),d={name:"delivery_address",layout:"member",components:{},data:function(){return{addressList:[],total:0,currentPage:1,pageSize:8,loading:!0,yes:!0}},created:function(){this.getListData()},mounted:function(){var e=this;setTimeout((function(){e.yes=!1}),300)},methods:{getListData:function(){var e=this;Object(r.e)({page:this.currentPage,page_size:this.pageSize,type:1}).then((function(t){var n=t.data,r=n.count,d=(n.page_count,n.list);e.total=r,e.addressList=d,e.loading=!1})).catch((function(t){e.loading=!1,e.$message.error(t.message)}))},handlePageSizeChange:function(e){this.pageSize=e,this.refresh()},handleCurrentPageChange:function(e){this.currentPage=e,this.refresh()},refresh:function(){this.loading=!0,this.getListData()},setDefault:function(e){var t=this;Object(r.n)({id:e}).then((function(e){t.refresh(),t.$message({message:"修改默认地址成功",type:"success"})})).catch((function(e){t.$message.error(e.message)}))},addAddress:function(e,t){"edit"==e?this.$router.push({path:"/member/address_edit",query:{id:t}}):this.$router.push({path:"/member/address_edit"})},delAddress:function(e,t){var n=this;this.$confirm("确定要删除该地址吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((function(){1!=t?Object(r.i)({id:e}).then((function(e){n.refresh(),n.$message({message:e.message,type:"success"})})).catch((function(e){n.$message.error(e.message)})):n.$message({type:"warning",message:"默认地址,不能删除!"})}))}}},c=(n(691),n(6)),component=Object(c.a)(d,(function(){var e=this,t=e._self._c;return t("div",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],staticClass:"box"},[t("div",{directives:[{name:"show",rawName:"v-show",value:e.yes,expression:"yes"}],staticClass:"null-page"}),e._v(" "),t("el-card",{staticClass:"box-card"},[t("div",{staticClass:"clearfix",attrs:{slot:"header"},slot:"header"},[t("span",[e._v("收货地址")])]),e._v(" "),t("div",[t("div",{staticClass:"ns-member-address-list"},[t("div",{staticClass:"text item ns-add-address",on:{click:function(t){return e.addAddress("add")}}},[t("span",[e._v("+ 添加收货地址")])]),e._v(" "),e._l(e.addressList,(function(n,r){return t("div",{key:r,staticClass:"text item"},[t("div",{staticClass:"text-name"},[t("span",[e._v(e._s(n.name))]),e._v(" "),1==n.is_default?t("span",{staticClass:"text-default"},[e._v("默认")]):e._e()]),e._v(" "),t("div",{staticClass:"text-content"},[t("p",[e._v(e._s(n.mobile))]),e._v(" "),t("p",{staticClass:"ns-address-detail",attrs:{title:n.full_address+n.address}},[e._v("\n "+e._s(n.full_address)+e._s(n.address))])]),e._v(" "),t("div",{staticClass:"text-operation"},[1!=n.is_default?t("span",{on:{click:function(t){return e.setDefault(n.id)}}},[e._v("设为默认")]):e._e(),e._v(" "),t("span",{on:{click:function(t){return e.addAddress("edit",n.id)}}},[e._v("编辑")]),e._v(" "),1!=n.is_default?t("span",{on:{click:function(t){return e.delAddress(n.id,n.is_default)}}},[e._v("删除")]):e._e()])])}))],2),e._v(" "),t("div",{staticClass:"pager"},[t("el-pagination",{attrs:{background:"","pager-count":5,total:e.total,"prev-text":"上一页","next-text":"下一页","current-page":e.currentPage,"page-size":e.pageSize,"hide-on-single-page":""},on:{"update:currentPage":function(t){e.currentPage=t},"update:current-page":function(t){e.currentPage=t},"update:pageSize":function(t){e.pageSize=t},"update:page-size":function(t){e.pageSize=t},"size-change":e.handlePageSizeChange,"current-change":e.handleCurrentPageChange}})],1)])])],1)}),[],!1,null,"1183a10c",null);t.default=component.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{620:function(t,e,r){},712:function(t,e,r){"use strict";r(620)},791:function(t,e,r){"use strict";r.r(e);r(24),r(25),r(23),r(29),r(30);var o=r(10),n=(r(7),r(18),r(75),r(151),r(204)),d=r(12);function c(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(object);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,r)}return e}var l={name:"account_edit",components:{},data:function(){return{yes:!0,order_id:0,orderData:[],checked:!1,order_goods_ids:[]}},created:function(){this.order_id=this.$route.query.order_id,this.getOrderInfo()},mounted:function(){},computed:function(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?c(Object(source),!0).forEach((function(e){Object(o.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):c(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}({},Object(d.b)(["defaultGoodsImage"])),layout:"member",methods:{getOrderInfo:function(){var t=this;Object(n.d)({order_id:this.order_id}).then((function(e){e.code>=0&&(t.orderData=[],e.data.order_goods.forEach((function(e){0==e.refund_status&&t.orderData.push(e)})))}))},handleSelectionChange:function(t){this.order_goods_ids=t.map((function(t,e){return t.order_goods_id}))},next:function(){this.$router.push({path:"/order/orderbatch_refund",query:{order_goods_id:this.order_goods_ids.join(","),order_id:this.order_id}})}}},_=l,f=(r(712),r(6)),component=Object(f.a)(_,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"box"},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.yes,expression:"yes"}],staticClass:"null-page"}),t._v(" "),e("el-card",{staticClass:"box-card"},[e("div",{staticClass:"title clearfix",attrs:{slot:"header"},slot:"header"},[e("el-breadcrumb",{attrs:{separator:"/"}},[e("el-breadcrumb-item",{attrs:{to:{path:"/member/order_list"}}},[t._v("我的订单")]),t._v(" "),e("el-breadcrumb-item",{attrs:{to:{path:"/member/order_detail?order_id="+t.order_id}}},[t._v("订单详情")]),t._v(" "),e("el-breadcrumb-item",[t._v("批量退款")])],1)],1),t._v(" "),e("div",{staticClass:"shopings clearfix",attrs:{slot:"header"},slot:"header"},[e("span",[t._v("选择退款商品")])]),t._v(" "),e("el-table",{ref:"multipleTable",staticStyle:{width:"100%"},attrs:{data:t.orderData,"tooltip-effect":"dark"},on:{"selection-change":t.handleSelectionChange}},[e("el-table-column",{attrs:{type:"selection",width:"55"}}),t._v(" "),e("el-table-column",{attrs:{label:"商品图片",width:"100",prop:"goods_image"},scopedSlots:t._u([{key:"default",fn:function(r){return[e("img",{staticClass:"box-img",attrs:{src:t.$img(r.row.sku_image,{size:"mid"}),alt:""},on:{error:function(e){r.row.sku_image=t.defaultGoodsImage}}})]}}])}),t._v(" "),e("el-table-column",{attrs:{label:"商品名称",prop:"goods_name"}}),t._v(" "),e("el-table-column",{attrs:{label:"价格",width:"180",prop:"price"}})],1),t._v(" "),e("div",{staticClass:"flooter"},[e("div",{staticClass:"flooter-left"}),t._v(" "),e("div",{staticClass:"flooter-right"},[t._v("\n 共计选中"+t._s(t.order_goods_ids.length)+"件商品\n "),t.order_goods_ids.length?e("el-button",{staticClass:"but",attrs:{type:"primary"},on:{click:t.next}},[t._v("下一步")]):e("el-button",{staticClass:"but",attrs:{type:"info"}},[t._v("请选择退款商品")])],1)])],1)],1)}),[],!1,null,"2edc49ec",null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{571:function(t,e,n){"use strict";n.d(e,"c",(function(){return c})),n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return l}));var r=n(1);function c(t){return Object(r.a)({url:"/api/article/page",data:t})}function o(t){return Object(r.a)({url:"/api/article/category",data:t})}function l(t){return Object(r.a)({url:"/api/article/info",data:t})}},639:function(t,e,n){},732:function(t,e,n){"use strict";n(639)},803:function(t,e,n){"use strict";n.r(e);n(24),n(25),n(23),n(7),n(29),n(18),n(30);var r=n(10),c=(n(92),n(12)),article=n(571);function o(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(object);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,n)}return e}var l={name:"article_detail",data:function(){return{info:{},loading:!0}},created:function(){this.id=this.$route.query.id,this.getDetail()},computed:function(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?o(Object(source),!0).forEach((function(e){Object(r.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):o(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}({},Object(c.b)(["siteInfo"])),watch:{$route:function(t){this.id=t.query.id,this.getDetail()}},methods:{getDetail:function(){var t=this;Object(article.b)({article_id:this.id}).then((function(e){e.data?(t.info=e.data,t.loading=!1,window.document.title="".concat(t.info.article_title," - ").concat(t.siteInfo.site_name)):t.$router.push({path:"/cms/article/list"})})).catch((function(e){t.loading=!1,t.$message.error(e.message)}))}}},d=l,f=(n(732),n(6)),component=Object(f.a)(d,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"article-wrap"},[e("el-breadcrumb",{staticClass:"path",attrs:{separator:"/"}},[e("el-breadcrumb-item",{staticClass:"path-home",attrs:{to:{path:"/"}}},[t._v("首页")]),t._v(" "),e("el-breadcrumb-item",{attrs:{to:{path:"/cms/article/list"}}},[t._v("文章列表")]),t._v(" "),e("el-breadcrumb-item",{staticClass:"path-help"},[t._v("文章详情")])],1),t._v(" "),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"article-detil"},[e("div",{staticClass:"article-info"},[e("div",{staticClass:"title"},[t._v(t._s(t.info.article_title))]),t._v(" "),e("div",{staticClass:"flex-wrap"},[e("div",{staticClass:"time"},[t._v(t._s(t.$util.timeStampTurnTime(t.info.create_time)))]),t._v(" "),1==t.info.is_show_read_num?e("div",{staticClass:"num-wrap"},[e("img",{attrs:{src:t.$img("public/static/img/read.png")}}),t._v("\n "+t._s(t.info.initial_read_num+t.info.read_num)+"\n ")]):t._e(),t._v(" "),1==t.info.is_show_dianzan_num?e("div",{staticClass:"num-wrap"},[e("img",{attrs:{src:t.$img("public/static/img/dianzan.png")}}),t._v(" "),e("span",[t._v(t._s(t.info.initial_dianzan_num+t.info.dianzan_num))])]):t._e()])]),t._v(" "),e("div",{staticClass:"content",domProps:{innerHTML:t._s(t.info.article_content)}})])],1)}),[],!1,null,"de941858",null);e.default=component.exports}}]);

View File

@@ -0,0 +1,59 @@
/*!
* JavaScript Cookie v2.2.1
* https://github.com/js-cookie/js-cookie
*
* Copyright 2006, 2015 Klaus Hartl & Fagner Brack
* Released under the MIT license
*/
/*!
* Vue.js v2.7.14
* (c) 2014-2022 Evan You
* Released under the MIT License.
*/
/*!
* vuex v3.6.2
* (c) 2021 Evan You
* @license MIT
*/
/*!
* vue-client-only v0.0.0-semantic-release
* (c) 2021-present egoist <0x142857@gmail.com>
* Released under the MIT License.
*/
/*!
* vue-no-ssr v1.1.1
* (c) 2018-present egoist <0x142857@gmail.com>
* Released under the MIT License.
*/
/**
* @license
* Video.js 6.13.0 <http://videojs.com/>
* Copyright Brightcove, Inc. <https://www.brightcove.com/>
* Available under Apache License Version 2.0
* <https://github.com/videojs/video.js/blob/master/LICENSE>
*
* Includes vtt.js <https://github.com/mozilla/vtt.js>
* Available under Apache License Version 2.0
* <https://github.com/mozilla/vtt.js/blob/master/LICENSE>
*/
/**
* Checks if an event is supported in the current execution environment.
*
* NOTE: This will not work correctly for non-generic events such as `change`,
* `reset`, `load`, `error`, and `select`.
*
* Borrows from Modernizr.
*
* @param {string} eventNameSuffix Event name, e.g. "click".
* @param {?boolean} capture Check if the capture phase is supported.
* @return {boolean} True if the event is supported.
* @internal
* @license Modernizr 3.0.0pre (Custom Build) | MIT
*/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{595:function(t,e,n){},683:function(t,e,n){"use strict";n(595)},771:function(t,e,n){"use strict";n.r(e);n(73),n(7),n(18);var c=n(207),r={name:"account_list",layout:"member",components:{},data:function(){return{dataList:[],total:0,currentPage:1,pageSize:8,loading:!0,isSub:!1,yes:!0}},created:function(){this.back=this.$route.query.back,this.getAccountList()},mounted:function(){var t=this;setTimeout((function(){t.yes=!1}),300)},methods:{handlePageSizeChange:function(t){this.pageSize=t,this.refresh()},handleCurrentPageChange:function(t){this.currentPage=t,this.refresh()},refresh:function(){this.loading=!0,this.getAccountList()},getAccountList:function(){var t=this;Object(c.c)({page_size:this.pageSize,page:this.currentPage}).then((function(e){t.dataList=e.data.list,t.total=e.data.count;var n={bank:"银行",alipay:"支付宝",wechatpay:"微信"};t.dataList.forEach((function(t){t.withdraw_type_name=n[t.withdraw_type]?n[t.withdraw_type]:""})),t.loading=!1})).catch((function(e){t.loading=!1}))},setDefault:function(t){var e=this;this.isSub||(this.isSub=!0,Object(c.a)({id:t}).then((function(t){e.back?e.$router.push(e.back):(e.refresh(),e.$message.success("修改默认账户成功")),e.isSub=!1})).catch((function(t){e.isSub=!1,e.$message.error(t.message)})))},delAccount:function(t){var e=this;this.$confirm("确定要删除该账户吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((function(){Object(c.g)({id:t}).then((function(t){e.refresh(),e.$message.success(t.message)})).catch((function(t){e.$message.error(t.message)}))}))},addAccount:function(t,e){"edit"==t?this.$router.push({path:"/member/account_edit",query:{id:e}}):this.$router.push({path:"/member/account_edit"})}}},o=(n(683),n(6)),component=Object(o.a)(r,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"box"},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.yes,expression:"yes"}],staticClass:"null-page"}),t._v(" "),e("el-card",{staticClass:"box-card"},[e("div",{staticClass:"clearfix",attrs:{slot:"header"},slot:"header"},[e("span",[t._v("账户列表")])]),t._v(" "),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}]},[e("div",{staticClass:"ns-member-address-list"},[e("div",{staticClass:"text item ns-add-address",on:{click:function(e){return t.addAccount("add")}}},[e("span",[t._v("+ 新增账户")])]),t._v(" "),t._l(t.dataList,(function(n,c){return e("div",{key:c,staticClass:"text item ns-account-list",on:{click:function(e){return t.setDefault(n.id)}}},[e("div",{staticClass:"text-name"},[e("span",[t._v(t._s(n.realname))]),t._v(" "),1==n.is_default?e("span",{staticClass:"text-default"},[t._v("默认")]):t._e()]),t._v(" "),e("div",{staticClass:"text-content"},[e("p",[t._v("手机号码:"+t._s(n.mobile))]),t._v(" "),"alipay"==n.withdraw_type?e("p",[t._v("提现账号:"+t._s(n.bank_account))]):t._e(),t._v(" "),e("p",[t._v("账号类型:"+t._s(n.withdraw_type_name))]),t._v(" "),"bank"==n.withdraw_type?e("p",[t._v("银行名称:"+t._s(n.branch_bank_name))]):t._e()]),t._v(" "),e("div",{staticClass:"text-operation"},[1!=n.is_default?e("span",{on:{click:function(e){return t.setDefault(n.id)}}},[t._v("设为默认")]):t._e(),t._v(" "),e("span",{on:{click:function(e){return e.stopPropagation(),t.addAccount("edit",n.id)}}},[t._v("编辑")]),t._v(" "),1!=n.is_default?e("span",{on:{click:function(e){return e.stopPropagation(),t.delAccount(n.id,n.is_default)}}},[t._v("删除")]):t._e()])])}))],2),t._v(" "),e("div",{staticClass:"pager"},[e("el-pagination",{attrs:{background:"","pager-count":5,total:t.total,"prev-text":"上一页","next-text":"下一页","current-page":t.currentPage,"page-size":t.pageSize,"hide-on-single-page":""},on:{"update:currentPage":function(e){t.currentPage=e},"update:current-page":function(e){t.currentPage=e},"update:pageSize":function(e){t.pageSize=e},"update:page-size":function(e){t.pageSize=e},"size-change":t.handlePageSizeChange,"current-change":t.handleCurrentPageChange}})],1)])])],1)}),[],!1,null,"71a754a8",null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{607:function(t,e,n){},700:function(t,e,n){"use strict";n(607)},752:function(t,e,n){"use strict";n.r(e);n(73),n(7),n(18);var o=n(1);var c={name:"my_point",layout:"member",components:{},data:function(){return{pointInfo:{page:1,page_size:10,account_type:"point"},pointList:[],memberPoint:{point:0},total:0,loading:!0,yes:!0}},created:function(){this.getPointInfo(),this.getPointList()},mounted:function(){var t=this;setTimeout((function(){t.yes=!1}),300)},methods:{getPointInfo:function(){var t,e=this;(t={account_type:this.pointInfo.account_type},Object(o.a)({url:"/api/memberaccount/info",data:t,forceLogin:!0})).then((function(t){0==t.code&&t.data&&(e.memberPoint=t.data),e.loading=!1})).catch((function(t){e.loading=!1,e.$message.error(t.message)}))},getPointList:function(){var t,e=this;(t=this.pointInfo,Object(o.a)({url:"/api/memberaccount/page",data:t,forceLogin:!0})).then((function(t){0==t.code&&t.data&&(e.pointList=t.data.list,e.total=t.data.count,e.pointList.forEach((function(t){t.time=e.$util.timeStampTurnTime(t.create_time),t.pointNum=t.account_data>0?"+"+parseInt(t.account_data):parseInt(t.account_data)})))})).catch((function(t){e.$message.error(t.message)}))},handlePageSizeChange:function(t){this.pointInfo.page_size=t,this.getPointList()},handleCurrentPageChange:function(t){this.pointInfo.page=t,this.getPointList()}}},r=(n(700),n(6)),component=Object(r.a)(c,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"box"},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.yes,expression:"yes"}],staticClass:"null-page"}),t._v(" "),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"my-point"},[e("div",{staticClass:"member-point"},[e("div",{staticClass:"title"},[t._v("我的积分")]),t._v(" "),e("div",{staticClass:"num"},[t._v(t._s(t.memberPoint.point?Math.ceil(t.memberPoint.point):0))])]),t._v(" "),e("div",{staticClass:"detail"},[e("el-table",{attrs:{data:t.pointList,border:""}},[e("el-table-column",{attrs:{prop:"type_name",label:"来源",width:"150"}}),t._v(" "),e("el-table-column",{attrs:{prop:"pointNum",label:"积分",width:"150"}}),t._v(" "),e("el-table-column",{attrs:{prop:"remark",label:"详细说明"}}),t._v(" "),e("el-table-column",{attrs:{prop:"time",label:"时间",width:"180"}})],1)],1),t._v(" "),e("div",{staticClass:"pager"},[e("el-pagination",{attrs:{background:"","pager-count":5,total:t.total,"prev-text":"上一页","next-text":"下一页","current-page":t.pointInfo.page,"page-size":t.pointInfo.page_size,"hide-on-single-page":""},on:{"update:currentPage":function(e){return t.$set(t.pointInfo,"page",e)},"update:current-page":function(e){return t.$set(t.pointInfo,"page",e)},"update:pageSize":function(e){return t.$set(t.pointInfo,"page_size",e)},"update:page-size":function(e){return t.$set(t.pointInfo,"page_size",e)},"size-change":t.handlePageSizeChange,"current-change":t.handleCurrentPageChange}})],1)])])}),[],!1,null,"0c506c7c",null);e.default=component.exports}}]);

View File

@@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{559:function(t,e,o){},575:function(t,e,o){"use strict";o(559)},658:function(t,e,o){"use strict";o.r(e);o(321),o(24),o(25),o(23),o(7),o(29),o(18),o(30);var r=o(10),l=o(12);function n(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(object);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,o)}return e}var c={name:"floor-style-3",props:{data:{type:Object}},data:function(){return{}},created:function(){},computed:function(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?n(Object(source),!0).forEach((function(e){Object(r.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):n(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}({},Object(l.b)(["defaultGoodsImage"])),methods:{goSku:function(t){this.$util.pushToTab("/sku/"+t)},imageErrorRight:function(t){this.data.value.rightGoodsList.value.list[t].goods_image=this.defaultGoodsImage},imageErrorBottom:function(t){this.data.value.bottomGoodsList.value.list[t].goods_image=this.defaultGoodsImage}}},d=c,v=(o(575),o(6)),component=Object(v.a)(d,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"floor-style-3"},[e("div",{staticClass:"item-wrap"},[e("div",{staticClass:"head-wrap"},[t.data.value.title.value.text?e("div",{staticClass:"title-name"},[e("span",{style:{backgroundColor:t.data.value.title.value.color}}),t._v(" "),e("h2",{style:{color:t.data.value.title.value.color},on:{click:function(e){return t.$util.pushToTab(t.data.value.title.value.link.url)}}},[t._v(t._s(t.data.value.title.value.text))])]):t._e(),t._v(" "),e("div",{staticClass:"category-wrap"},t._l(t.data.value.categoryList.value.list,(function(o,r){return e("li",{key:r},[e("router-link",{attrs:{target:"_blank",to:{path:"/goods/list",query:{category_id:o.category_id,level:o.level}}}},[t._v(t._s(o.category_name))])],1)})),0)]),t._v(" "),e("div",{staticClass:"body-wrap"},[e("div",{staticClass:"left-img-wrap"},[t.data.value.leftImg.value.url?e("img",{attrs:{src:t.$img(t.data.value.leftImg.value.url)},on:{click:function(e){return t.$util.pushToTab(t.data.value.leftImg.value.link.url)}}}):t._e()]),t._v(" "),e("ul",{staticClass:"right-goods-wrap"},t._l(t.data.value.rightGoodsList.value.list,(function(o,r){return e("li",{key:r,on:{click:function(e){return t.goSku(o.sku_id)}}},[e("h4",[t._v(t._s(o.goods_name))]),t._v(" "),e("p",{staticClass:"ns-text-color"},[t._v(t._s(o.introduction))]),t._v(" "),e("div",{staticClass:"img-wrap"},[e("img",{attrs:{alt:"商品图片",src:t.$img(o.goods_image.split(",")[0],{size:"mid"})},on:{error:function(e){return t.imageErrorRight(r)}}})])])})),0),t._v(" "),e("ul",{staticClass:"bottom-goods-wrap"},t._l(t.data.value.bottomGoodsList.value.list,(function(o,r){return e("li",{key:r,on:{click:function(e){return t.goSku(o.sku_id)}}},[e("div",{staticClass:"info-wrap"},[e("h4",[t._v(t._s(o.goods_name))]),t._v(" "),e("p",{staticClass:"ns-text-color"},[t._v(t._s(o.introduction))])]),t._v(" "),e("div",{staticClass:"img-wrap"},[e("img",{attrs:{alt:"商品图片",src:t.$img(o.goods_image.split(",")[0],{size:"mid"})},on:{error:function(e){return t.imageErrorBottom(r)}}})])])})),0)])])])}),[],!1,null,"d0ce147e",null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.ns-font-size-sm[data-v-7f63829b]{font-size:12px}.ns-font-size-base[data-v-7f63829b]{font-size:14px}.ns-font-size-lg[data-v-7f63829b]{font-size:16px}.ns-text-color[data-v-7f63829b]{color:#ff547b!important}.ns-text-color-black[data-v-7f63829b]{color:#303133!important}.ns-border-color[data-v-7f63829b]{border-color:#ff547b!important}.ns-bg-color[data-v-7f63829b]{background-color:#ff547b!important}body[data-v-7f63829b]{line-height:1.8;font-family:Helvetica Neue,Helvetica,Microsoft Yahei,PingFang SC,Hiragino Sans GB,WenQuanYi Micro Hei,sans-serif;font-size:14px;color:#303133}#__nuxt[data-v-7f63829b],body[data-v-7f63829b]{background-color:#f9f9f9}#nprogress .bar[data-v-7f63829b]{background:#ff547b!important}body[data-v-7f63829b],dd[data-v-7f63829b],dl[data-v-7f63829b],dt[data-v-7f63829b],h1[data-v-7f63829b],h2[data-v-7f63829b],h3[data-v-7f63829b],h4[data-v-7f63829b],h5[data-v-7f63829b],h6[data-v-7f63829b],html[data-v-7f63829b],ol[data-v-7f63829b],p[data-v-7f63829b],ul[data-v-7f63829b]{margin:0;padding:0}article[data-v-7f63829b],aside[data-v-7f63829b],details[data-v-7f63829b],figcaption[data-v-7f63829b],figure[data-v-7f63829b],footer[data-v-7f63829b],header[data-v-7f63829b],hgroup[data-v-7f63829b],menu[data-v-7f63829b],nav[data-v-7f63829b],section[data-v-7f63829b]{display:block}li[data-v-7f63829b],ol[data-v-7f63829b],ul[data-v-7f63829b]{list-style:none}em[data-v-7f63829b],i[data-v-7f63829b]{font-style:normal}a[data-v-7f63829b]{text-decoration:none;color:#303133}a[data-v-7f63829b]:hover{color:#ff547b}.el-main[data-v-7f63829b]{border-top:1px solid #f2f2f2;overflow:initial;margin:0 auto;padding:0}.el-button[data-v-7f63829b]:focus,.el-button[data-v-7f63829b]:hover{color:#ff547b;border-color:#ffbaca;background-color:#ffedf1}.el-button--primary.is-plain[data-v-7f63829b]:focus,.el-button--primary.is-plain[data-v-7f63829b]:hover,.el-button--primary[data-v-7f63829b],.el-button--primary[data-v-7f63829b]:focus,.el-button--primary[data-v-7f63829b]:hover{background-color:#ff547b;border-color:#ff547b;color:#fff}.el-button--primary.is-plain[data-v-7f63829b]{color:#ff547b;background-color:transparent;border-color:#ff547b}img[data-v-7f63829b]{border-style:none;max-width:100%;vertical-align:middle}.ns-text-align[data-v-7f63829b]{text-align:center}.el-pagination[data-v-7f63829b]{text-align:right}.el-pagination .el-pagination__rightwrapper[data-v-7f63829b]{margin-left:20px}.using-hidden[data-v-7f63829b]{-webkit-line-clamp:1;white-space:break-spaces}.multi-hidden[data-v-7f63829b],.using-hidden[data-v-7f63829b]{word-break:break-all;text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.multi-hidden[data-v-7f63829b]{-webkit-line-clamp:2}.el-breadcrumb__inner.is-link[data-v-7f63829b]:hover,.el-breadcrumb__inner a[data-v-7f63829b]:hover,.el-tabs__item.is-active[data-v-7f63829b],.el-tabs__item[data-v-7f63829b]:hover{color:#ff547b}.el-tabs__active-bar[data-v-7f63829b]{background-color:#ff547b}.el-pager li.active[data-v-7f63829b],.el-pagination.is-background .el-pager li[data-v-7f63829b]:not(.disabled):hover{color:#ff547b}.el-pagination.is-background .el-pager li:not(.disabled).active[data-v-7f63829b]{background-color:#ff547b}.el-menu-item.is-active[data-v-7f63829b]{color:#ff547b}.el-progress-bar__inner[data-v-7f63829b]{background-color:#ff547b}.el-button--text[data-v-7f63829b],.el-link.el-link--default[data-v-7f63829b]:hover{color:#ff547b}.el-input.is-active .el-input__inner[data-v-7f63829b],.el-input__inner[data-v-7f63829b]:focus{border-color:#ff547b}.el-loading-spinner .path[data-v-7f63829b]{stroke:#ff547b}.el-loading-spinner .el-loading-text[data-v-7f63829b],.el-loading-spinner i[data-v-7f63829b]{color:#ff547b}.el-checkbox__input.is-checked .el-checkbox__inner[data-v-7f63829b],.el-checkbox__input.is-indeterminate .el-checkbox__inner[data-v-7f63829b]{background-color:#ff547b;border-color:#ff547b}.el-checkbox__input.is-checked+.el-checkbox__label[data-v-7f63829b]{color:#ff547b}.el-radio__input.is-checked .el-radio__inner[data-v-7f63829b]{border-color:#ff547b;background:#ff547b}.el-textarea__inner[data-v-7f63829b]:focus{border-color:#ff547b}.error-wrap[data-v-7f63829b]{text-align:center;padding:40px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.error-wrap i[data-v-7f63829b]{font-size:60px}.error-wrap h2[data-v-7f63829b]{margin:0 0 30px}

View File

@@ -0,0 +1 @@
.ns-font-size-sm[data-v-3cbe8353]{font-size:12px}.ns-font-size-base[data-v-3cbe8353]{font-size:14px}.ns-font-size-lg[data-v-3cbe8353]{font-size:16px}.ns-text-color[data-v-3cbe8353]{color:#ff547b!important}.ns-text-color-black[data-v-3cbe8353]{color:#303133!important}.ns-border-color[data-v-3cbe8353]{border-color:#ff547b!important}.ns-bg-color[data-v-3cbe8353]{background-color:#ff547b!important}body[data-v-3cbe8353]{line-height:1.8;font-family:Helvetica Neue,Helvetica,Microsoft Yahei,PingFang SC,Hiragino Sans GB,WenQuanYi Micro Hei,sans-serif;font-size:14px;color:#303133}#__nuxt[data-v-3cbe8353],body[data-v-3cbe8353]{background-color:#f9f9f9}#nprogress .bar[data-v-3cbe8353]{background:#ff547b!important}body[data-v-3cbe8353],dd[data-v-3cbe8353],dl[data-v-3cbe8353],dt[data-v-3cbe8353],h1[data-v-3cbe8353],h2[data-v-3cbe8353],h3[data-v-3cbe8353],h4[data-v-3cbe8353],h5[data-v-3cbe8353],h6[data-v-3cbe8353],html[data-v-3cbe8353],ol[data-v-3cbe8353],p[data-v-3cbe8353],ul[data-v-3cbe8353]{margin:0;padding:0}article[data-v-3cbe8353],aside[data-v-3cbe8353],details[data-v-3cbe8353],figcaption[data-v-3cbe8353],figure[data-v-3cbe8353],footer[data-v-3cbe8353],header[data-v-3cbe8353],hgroup[data-v-3cbe8353],menu[data-v-3cbe8353],nav[data-v-3cbe8353],section[data-v-3cbe8353]{display:block}li[data-v-3cbe8353],ol[data-v-3cbe8353],ul[data-v-3cbe8353]{list-style:none}em[data-v-3cbe8353],i[data-v-3cbe8353]{font-style:normal}a[data-v-3cbe8353]{text-decoration:none;color:#303133}a[data-v-3cbe8353]:hover{color:#ff547b}.el-main[data-v-3cbe8353]{border-top:1px solid #f2f2f2;overflow:initial;margin:0 auto;padding:0}.el-button[data-v-3cbe8353]:focus,.el-button[data-v-3cbe8353]:hover{color:#ff547b;border-color:#ffbaca;background-color:#ffedf1}.el-button--primary.is-plain[data-v-3cbe8353]:focus,.el-button--primary.is-plain[data-v-3cbe8353]:hover,.el-button--primary[data-v-3cbe8353],.el-button--primary[data-v-3cbe8353]:focus,.el-button--primary[data-v-3cbe8353]:hover{background-color:#ff547b;border-color:#ff547b;color:#fff}.el-button--primary.is-plain[data-v-3cbe8353]{color:#ff547b;background-color:transparent;border-color:#ff547b}img[data-v-3cbe8353]{border-style:none;max-width:100%;vertical-align:middle}.ns-text-align[data-v-3cbe8353]{text-align:center}.el-pagination[data-v-3cbe8353]{text-align:right}.el-pagination .el-pagination__rightwrapper[data-v-3cbe8353]{margin-left:20px}.using-hidden[data-v-3cbe8353]{-webkit-line-clamp:1;white-space:break-spaces}.multi-hidden[data-v-3cbe8353],.using-hidden[data-v-3cbe8353]{word-break:break-all;text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.multi-hidden[data-v-3cbe8353]{-webkit-line-clamp:2}.el-breadcrumb__inner.is-link[data-v-3cbe8353]:hover,.el-breadcrumb__inner a[data-v-3cbe8353]:hover,.el-tabs__item.is-active[data-v-3cbe8353],.el-tabs__item[data-v-3cbe8353]:hover{color:#ff547b}.el-tabs__active-bar[data-v-3cbe8353]{background-color:#ff547b}.el-pager li.active[data-v-3cbe8353],.el-pagination.is-background .el-pager li[data-v-3cbe8353]:not(.disabled):hover{color:#ff547b}.el-pagination.is-background .el-pager li:not(.disabled).active[data-v-3cbe8353]{background-color:#ff547b}.el-menu-item.is-active[data-v-3cbe8353]{color:#ff547b}.el-progress-bar__inner[data-v-3cbe8353]{background-color:#ff547b}.el-button--text[data-v-3cbe8353],.el-link.el-link--default[data-v-3cbe8353]:hover{color:#ff547b}.el-input.is-active .el-input__inner[data-v-3cbe8353],.el-input__inner[data-v-3cbe8353]:focus{border-color:#ff547b}.el-loading-spinner .path[data-v-3cbe8353]{stroke:#ff547b}.el-loading-spinner .el-loading-text[data-v-3cbe8353],.el-loading-spinner i[data-v-3cbe8353]{color:#ff547b}.el-checkbox__input.is-checked .el-checkbox__inner[data-v-3cbe8353],.el-checkbox__input.is-indeterminate .el-checkbox__inner[data-v-3cbe8353]{background-color:#ff547b;border-color:#ff547b}.el-checkbox__input.is-checked+.el-checkbox__label[data-v-3cbe8353]{color:#ff547b}.el-radio__input.is-checked .el-radio__inner[data-v-3cbe8353]{border-color:#ff547b;background:#ff547b}.el-textarea__inner[data-v-3cbe8353]:focus{border-color:#ff547b}.ns-verification .ns-verification-order .ns-goods-list[data-v-3cbe8353]{display:flex;margin:10px 0}.ns-verification .ns-verification-order .ns-goods-list .el-image[data-v-3cbe8353]{width:80px;height:80px;line-height:80px;text-align:center;margin-right:10px;border-radius:5px}.ns-verification .ns-verification-order .ns-goods-list .ns-goods-price span[data-v-3cbe8353]:first-child{font-weight:600;font-size:16px}.ns-verification .ns-verification-order .ns-order-info[data-v-3cbe8353]{border-top:1px solid #eee;padding-top:20px;color:#909399;line-height:30px}.ns-verification .ns-verification-order .ns-btn[data-v-3cbe8353]{text-align:right}.ns-verification .ns-verification-order .ns-btn .el-button[data-v-3cbe8353]{background:#ff547b;color:#fff}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.ns-font-size-sm[data-v-66cc7143]{font-size:12px}.ns-font-size-base[data-v-66cc7143]{font-size:14px}.ns-font-size-lg[data-v-66cc7143]{font-size:16px}.ns-text-color[data-v-66cc7143]{color:#ff547b!important}.ns-text-color-black[data-v-66cc7143]{color:#303133!important}.ns-border-color[data-v-66cc7143]{border-color:#ff547b!important}.ns-bg-color[data-v-66cc7143]{background-color:#ff547b!important}body[data-v-66cc7143]{line-height:1.8;font-family:Helvetica Neue,Helvetica,Microsoft Yahei,PingFang SC,Hiragino Sans GB,WenQuanYi Micro Hei,sans-serif;font-size:14px;color:#303133}#__nuxt[data-v-66cc7143],body[data-v-66cc7143]{background-color:#f9f9f9}#nprogress .bar[data-v-66cc7143]{background:#ff547b!important}body[data-v-66cc7143],dd[data-v-66cc7143],dl[data-v-66cc7143],dt[data-v-66cc7143],h1[data-v-66cc7143],h2[data-v-66cc7143],h3[data-v-66cc7143],h4[data-v-66cc7143],h5[data-v-66cc7143],h6[data-v-66cc7143],html[data-v-66cc7143],ol[data-v-66cc7143],p[data-v-66cc7143],ul[data-v-66cc7143]{margin:0;padding:0}article[data-v-66cc7143],aside[data-v-66cc7143],details[data-v-66cc7143],figcaption[data-v-66cc7143],figure[data-v-66cc7143],footer[data-v-66cc7143],header[data-v-66cc7143],hgroup[data-v-66cc7143],menu[data-v-66cc7143],nav[data-v-66cc7143],section[data-v-66cc7143]{display:block}li[data-v-66cc7143],ol[data-v-66cc7143],ul[data-v-66cc7143]{list-style:none}em[data-v-66cc7143],i[data-v-66cc7143]{font-style:normal}a[data-v-66cc7143]{text-decoration:none;color:#303133}a[data-v-66cc7143]:hover{color:#ff547b}.el-main[data-v-66cc7143]{border-top:1px solid #f2f2f2;overflow:initial;margin:0 auto;padding:0}.el-button[data-v-66cc7143]:focus,.el-button[data-v-66cc7143]:hover{color:#ff547b;border-color:#ffbaca;background-color:#ffedf1}.el-button--primary.is-plain[data-v-66cc7143]:focus,.el-button--primary.is-plain[data-v-66cc7143]:hover,.el-button--primary[data-v-66cc7143],.el-button--primary[data-v-66cc7143]:focus,.el-button--primary[data-v-66cc7143]:hover{background-color:#ff547b;border-color:#ff547b;color:#fff}.el-button--primary.is-plain[data-v-66cc7143]{color:#ff547b;background-color:transparent;border-color:#ff547b}img[data-v-66cc7143]{border-style:none;max-width:100%;vertical-align:middle}.ns-text-align[data-v-66cc7143]{text-align:center}.el-pagination[data-v-66cc7143]{text-align:right}.el-pagination .el-pagination__rightwrapper[data-v-66cc7143]{margin-left:20px}.using-hidden[data-v-66cc7143]{-webkit-line-clamp:1;white-space:break-spaces}.multi-hidden[data-v-66cc7143],.using-hidden[data-v-66cc7143]{word-break:break-all;text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.multi-hidden[data-v-66cc7143]{-webkit-line-clamp:2}.el-breadcrumb__inner.is-link[data-v-66cc7143]:hover,.el-breadcrumb__inner a[data-v-66cc7143]:hover,.el-tabs__item.is-active[data-v-66cc7143],.el-tabs__item[data-v-66cc7143]:hover{color:#ff547b}.el-tabs__active-bar[data-v-66cc7143]{background-color:#ff547b}.el-pager li.active[data-v-66cc7143],.el-pagination.is-background .el-pager li[data-v-66cc7143]:not(.disabled):hover{color:#ff547b}.el-pagination.is-background .el-pager li:not(.disabled).active[data-v-66cc7143]{background-color:#ff547b}.el-menu-item.is-active[data-v-66cc7143]{color:#ff547b}.el-progress-bar__inner[data-v-66cc7143]{background-color:#ff547b}.el-button--text[data-v-66cc7143],.el-link.el-link--default[data-v-66cc7143]:hover{color:#ff547b}.el-input.is-active .el-input__inner[data-v-66cc7143],.el-input__inner[data-v-66cc7143]:focus{border-color:#ff547b}.el-loading-spinner .path[data-v-66cc7143]{stroke:#ff547b}.el-loading-spinner .el-loading-text[data-v-66cc7143],.el-loading-spinner i[data-v-66cc7143]{color:#ff547b}.el-checkbox__input.is-checked .el-checkbox__inner[data-v-66cc7143],.el-checkbox__input.is-indeterminate .el-checkbox__inner[data-v-66cc7143]{background-color:#ff547b;border-color:#ff547b}.el-checkbox__input.is-checked+.el-checkbox__label[data-v-66cc7143]{color:#ff547b}.el-radio__input.is-checked .el-radio__inner[data-v-66cc7143]{border-color:#ff547b;background:#ff547b}.el-textarea__inner[data-v-66cc7143]:focus{border-color:#ff547b}.app-breadcrumb.el-breadcrumb[data-v-66cc7143]{display:inline-block;font-size:14px;margin:10px auto 1px;width:100%;line-height:30px;border:1px solid #eae9e9}.app-breadcrumb.el-breadcrumb .el-breadcrumb__item[data-v-66cc7143]{padding-left:10px}.app-breadcrumb.el-breadcrumb .no-redirect[data-v-66cc7143]{color:#97a8be;cursor:text}

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More