feat: 合并应用->电子名片->增加视频号资源管理的功能

This commit is contained in:
2026-01-12 10:23:54 +08:00
parent 8a8e11414f
commit 3fef52081a
14 changed files with 1056 additions and 29 deletions

View File

@@ -112,13 +112,46 @@ return [
], ],
] ]
], ],
[
'name' => 'PERSONNEL_CHANNEL_LIST',
'title' => '视频号',
'url' => 'personnel://shop/enterprise/channellists',
'is_show' => 1,
'sort' => 4,
'child_list' => [
[
'name' => 'PERSONNEL_CHANNEL_ADD',
'title' => '添加视频号',
'url' => 'personnel://shop/enterprise/channeladd',
'sort' => 1,
'is_show' => 0,
'is_control' => 1,
],
[
'name' => 'PERSONNEL_CHANNEL_EDIT',
'title' => '编辑视频号',
'url' => 'personnel://shop/enterprise/channeledit',
'sort' => 1,
'is_show' => 0,
'is_control' => 1,
],
[
'name' => 'PERSONNEL_CHANNEL_DELETE',
'title' => '删除视频号',
'url' => 'personnel://shop/enterprise/channeldelete',
'sort' => 2,
'is_show' => 0,
'is_control' => 1,
],
]
],
[ [
'name' => 'MESSAGE_ROOT', 'name' => 'MESSAGE_ROOT',
'title' => '留言列表', 'title' => '留言列表',
'url' => 'personnel://shop/personnel/message', 'url' => 'personnel://shop/personnel/message',
'is_show' => 1, 'is_show' => 1,
'sort' => 4, 'sort' => 5,
'child_list' => [ 'child_list' => [
], ],
@@ -128,7 +161,7 @@ return [
'title' => '电子名片', 'title' => '电子名片',
'url' => 'personnel://shop/personnel/diy', 'url' => 'personnel://shop/personnel/diy',
'is_show' => 1, 'is_show' => 1,
'sort' => 5, 'sort' => 6,
'child_list' => [ 'child_list' => [
], ],
@@ -138,7 +171,7 @@ return [
'title' => '设置', 'title' => '设置',
'url' => 'personnel://shop/personnel/set', 'url' => 'personnel://shop/personnel/set',
'is_show' => 1, 'is_show' => 1,
'sort' => 6, 'sort' => 7,
'child_list' => [ 'child_list' => [
], ],

View File

@@ -1 +1,36 @@
SET NAMES 'utf8'; SET NAMES 'utf8';
-- 创建视频号表
CREATE TABLE IF NOT EXISTS `lucky_personnel_channel`
(
`channel_id` int unsigned NOT NULL AUTO_INCREMENT,
`site_id` int unsigned NOT NULL DEFAULT 0 COMMENT '站点ID',
`create_time` int unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
`channel_type` varchar(20) NOT NULL DEFAULT 'wechat' COMMENT '视频号类型wechat-微信视频号douyin-抖音kuaishou-快手redbook-小红书bilibili-B站',
`channel_name` varchar(100) NOT NULL DEFAULT '' COMMENT '视频号ID',
`feed_id` varchar(100) NOT NULL DEFAULT '' COMMENT '视频号内容ID',
`feed_token` varchar(255) NOT NULL DEFAULT '' COMMENT '视频号视频的标识',
`avatar_image_type` varchar(10) NOT NULL DEFAULT 'upload' COMMENT '头像类型upload-上传图片url-URL',
`avatar_url` varchar(500) NOT NULL DEFAULT '' COMMENT '头像URL',
`video_title` varchar(200) NOT NULL DEFAULT '' COMMENT '视频标题',
`cover_image_type` varchar(10) NOT NULL DEFAULT 'upload' COMMENT '封面类型upload-上传图片url-URL',
`cover_url` varchar(500) NOT NULL DEFAULT '' COMMENT '封面URL',
`view_count` int unsigned NOT NULL DEFAULT 0 COMMENT '视频观看次数',
`show_view_count` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否显示视频观看次数0-不显示1-显示',
`show_follow` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否显示关注按钮0-不显示1-显示',
`is_show` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否显示0-隐藏1-显示',
`sort` int NOT NULL DEFAULT 0 COMMENT '排序,数值越小越靠前',
PRIMARY KEY (`channel_id`),
KEY `idx_site_id` (`site_id`),
KEY `idx_channel_type` (`channel_type`),
KEY `idx_is_show` (`is_show`),
KEY `idx_sort` (`sort`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='电子名片视频号资源表';
-- 插入视频号菜单权限(使用 IGNORE 避免重复插入报错)
INSERT IGNORE INTO `lucky_menu` (`app_module`, `addon`, `title`, `name`, `parent`, `level`, `url`, `is_show`, `sort`, `desc`, `is_icon`, `picture`, `picture_select`, `is_control`)
VALUES
('shop', 'personnel', '视频号', 'PERSONNEL_CHANNEL_LIST', 'PERSONNEL_ROOT', 4, 'personnel://shop/enterprise/channellists', 1, 4, '', 0, '', '', 1),
('shop', 'personnel', '添加视频号', 'PERSONNEL_CHANNEL_ADD', 'PERSONNEL_CHANNEL_LIST', 5, 'personnel://shop/enterprise/channeladd', 0, 1, '', 0, '', '', 1),
('shop', 'personnel', '编辑视频号', 'PERSONNEL_CHANNEL_EDIT', 'PERSONNEL_CHANNEL_LIST', 5, 'personnel://shop/enterprise/channeledit', 0, 1, '', 0, '', '', 1),
('shop', 'personnel', '删除视频号', 'PERSONNEL_CHANNEL_DELETE', 'PERSONNEL_CHANNEL_LIST', 5, 'personnel://shop/enterprise/channeldelete', 0, 2, '', 0, '', '', 1);

View File

@@ -1 +1,7 @@
SET NAMES 'utf8'; SET NAMES 'utf8';
-- 删除视频号菜单权限
DELETE FROM `lucky_menu` WHERE `name` IN ('PERSONNEL_CHANNEL_LIST', 'PERSONNEL_CHANNEL_ADD', 'PERSONNEL_CHANNEL_EDIT', 'PERSONNEL_CHANNEL_DELETE');
-- 删除视频号表
DROP TABLE IF EXISTS `lucky_personnel_channel`;

View File

@@ -0,0 +1,35 @@
-- 升级脚本:为 personnel_channel 表添加新字段并优化表结构
-- 执行时间: 2026-01-10
-- 1. 为 lucky_personnel_channel 表添加新字段
ALTER TABLE `lucky_personnel_channel`
ADD COLUMN `feed_token` varchar(255) NOT NULL DEFAULT '' COMMENT '视频号视频的标识' AFTER `feed_id`,
ADD COLUMN `view_count` int unsigned NOT NULL DEFAULT 0 COMMENT '视频观看次数' AFTER `cover_url`,
ADD COLUMN `show_view_count` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否显示视频观看次数0-不显示1-显示' AFTER `view_count`,
ADD COLUMN `show_follow` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否显示关注按钮0-不显示1-显示' AFTER `show_view_count`;
-- 2. 优化现有字段长度和类型
ALTER TABLE `lucky_personnel_channel`
MODIFY COLUMN `channel_type` varchar(20) NOT NULL DEFAULT 'wechat' COMMENT '视频号类型wechat-微信视频号douyin-抖音kuaishou-快手redbook-小红书bilibili-B站',
MODIFY COLUMN `channel_name` varchar(100) NOT NULL DEFAULT '' COMMENT '视频号名称',
MODIFY COLUMN `avatar_image_type` varchar(10) NOT NULL DEFAULT 'upload' COMMENT '头像类型upload-上传图片url-URL',
MODIFY COLUMN `avatar_url` varchar(500) NOT NULL DEFAULT '' COMMENT '头像URL',
MODIFY COLUMN `video_title` varchar(200) NOT NULL DEFAULT '' COMMENT '视频标题',
MODIFY COLUMN `feed_id` varchar(100) NOT NULL DEFAULT '' COMMENT '视频号内容ID',
MODIFY COLUMN `cover_image_type` varchar(10) NOT NULL DEFAULT 'upload' COMMENT '封面类型upload-上传图片url-URL',
MODIFY COLUMN `cover_url` varchar(500) NOT NULL DEFAULT '' COMMENT '封面URL',
MODIFY COLUMN `sort` int NOT NULL DEFAULT 0 COMMENT '排序,数值越小越靠前',
MODIFY COLUMN `is_show` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否显示0-隐藏1-显示',
MODIFY COLUMN `channel_id` int unsigned NOT NULL AUTO_INCREMENT,
MODIFY COLUMN `site_id` int unsigned NOT NULL DEFAULT 0 COMMENT '站点ID',
MODIFY COLUMN `create_time` int unsigned NOT NULL DEFAULT 0 COMMENT '创建时间';
-- 3. 添加索引优化查询性能
ALTER TABLE `lucky_personnel_channel`
ADD INDEX `idx_site_id` (`site_id`),
ADD INDEX `idx_channel_type` (`channel_type`),
ADD INDEX `idx_is_show` (`is_show`),
ADD INDEX `idx_sort` (`sort`);
-- 4. 修改表引擎为 InnoDB 和字符集为 utf8mb4
ALTER TABLE `lucky_personnel_channel` ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

View File

@@ -264,4 +264,107 @@ class Enterprise extends BaseModel
return $this->success($res); return $this->success($res);
} }
//视频号
/**
* 获取视频号分页列表
* @param array $condition
* @param number $page
* @param string $page_size
* @param string $order
* @param string $field
*/
public function getChannelPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'create_time desc', $field = '*')
{
$check_condition = array_column($condition, 2, 0);
$site_id = $check_condition['site_id'] ?? '';
if ($site_id === '') {
return $this->error('', 'REQUEST_SITE_ID');
}
$list = model('personnel_channel')->pageList($condition, $field, $order, $page, $page_size);
return $this->success($list);
}
/**
* 获取视频号列表
* @param array $condition
* @param string $field
* @param string $order
* @param string $limit
*/
public function getChannelList($condition = [], $field = '*', $order = '', $limit = null)
{
$list = model('personnel_channel')->getList($condition, $field, $order, '', '', '', $limit);
return $this->success($list);
}
/**
* 添加视频号
* @param array $data
*/
public function addChannel($data)
{
$site_id = $data['site_id'] ?? '';
if ($site_id === '') {
return $this->error('', 'REQUEST_SITE_ID');
}
$data['create_time'] = time();
// 默认视频号类型为微信
if (!isset($data['channel_type']) || empty($data['channel_type'])) {
$data['channel_type'] = 'wechat';
}
$channel_id = model('personnel_channel')->add($data);
return $this->success($channel_id);
}
/**
* 获取视频号信息
* @param array $condition
* @param string $field
*/
public function getChannelInfo($condition = [], $field = '*')
{
$list = model('personnel_channel')->getInfo($condition, $field);
return $this->success($list);
}
/**
* 修改视频号
* @param array $data
*/
public function editChannel($data)
{
$site_id = $data['site_id'] ?? '';
if ($site_id === '') {
return $this->error('', 'REQUEST_SITE_ID');
}
model('personnel_channel')->startTrans();
try {
model('personnel_channel')->update($data, [ [ 'site_id', '=', $data[ 'site_id' ] ], [ 'channel_id', '=', $data[ 'channel_id' ] ] ]);
model('personnel_channel')->commit();
return $this->success();
} catch (\Exception $e) {
model('personnel_channel')->rollback();
return $this->error('', $e->getMessage());
}
}
/**
* 删除视频号
* @param array $condition
*/
public function deleteChannel($condition)
{
$check_condition = array_column($condition, 2, 0);
$site_id = $check_condition['site_id'] ?? '';
if ($site_id === '') {
return $this->error('', 'REQUEST_SITE_ID');
}
$res = model('personnel_channel')->delete($condition);
return $this->success($res);
}
} }

View File

@@ -10,7 +10,7 @@ class Personnel extends BaseModel
/** /**
* 获取名片设置 * 获取名片设置
* @param $site_id * @param $site_id
* @param $app_module * @param $app_module
@@ -18,16 +18,20 @@ class Personnel extends BaseModel
*/ */
public function getPersonnelSet($site_id, $app_module) public function getPersonnelSet($site_id, $app_module)
{ {
$DEFAULT_CONFIG_VALUE = '{"is_kefu":1,"is_mp":1,"is_file":1,"is_channel":1,"is_video":1,"is_map":1}';
$config = new ConfigModel(); $config = new ConfigModel();
$res = $config->getConfig([ [ 'site_id', '=', $site_id ], [ 'app_module', '=', $app_module ], [ 'config_key', '=', 'DIY_PERSONNEL' ] ]); $res = $config->getConfig([['site_id', '=', $site_id], ['app_module', '=', $app_module], ['config_key', '=', 'DIY_PERSONNEL']]);
if (empty($res[ 'data' ][ 'value' ])){ if (empty($res['data']['value'])) {
$res[ 'data' ][ 'value' ] = [ $res['data']['value'] = [
'personnel_bg' => '', 'personnel_bg' => '',
'value'=>'{"is_kefu":1,"is_mp":1,"is_file":1,"is_video":1,"is_map":1}' 'value' => $DEFAULT_CONFIG_VALUE
]; ];
}else{ } else {
if(!isset($res['data']['value']['value'])) $res['data']['value']['value'] = '{"is_kefu":1,"is_mp":1,"is_file":1,"is_video":1,"is_map":1}'; if (!isset($res['data']['value']['value']))
$res['data']['value']['value'] = $DEFAULT_CONFIG_VALUE;
} }
//public/static/img/diy_view/member_info_bg.png //public/static/img/diy_view/member_info_bg.png
return $res; return $res;
} }
@@ -42,7 +46,7 @@ class Personnel extends BaseModel
public function setPersonnelSet($data, $site_id, $app_module) public function setPersonnelSet($data, $site_id, $app_module)
{ {
$config = new ConfigModel(); $config = new ConfigModel();
$res = $config->setConfig($data, '名片设置', 1, [ [ 'site_id', '=', $site_id ], [ 'app_module', '=', $app_module ], [ 'config_key', '=', 'DIY_PERSONNEL' ] ]); $res = $config->setConfig($data, '名片设置', 1, [['site_id', '=', $site_id], ['app_module', '=', $app_module], ['config_key', '=', 'DIY_PERSONNEL']]);
return $res; return $res;
} }
@@ -63,9 +67,9 @@ class Personnel extends BaseModel
public function getMessagePageList($condition = [], $field = true, $order = '', $page = 1, $list_rows = PAGE_LIST_ROWS, $alias = 'a', $join = []) public function getMessagePageList($condition = [], $field = true, $order = '', $page = 1, $list_rows = PAGE_LIST_ROWS, $alias = 'a', $join = [])
{ {
$data = model('personnel_message')->pageList($condition, $field, $order, $page, $list_rows, $alias, $join); $data = model('personnel_message')->pageList($condition, $field, $order, $page, $list_rows, $alias, $join);
if (!empty($data[ 'list' ])) { if (!empty($data['list'])) {
foreach ($data[ 'list' ] as $k => $item) { foreach ($data['list'] as $k => $item) {
$data[ 'list' ][ $k ][ 'createtime' ] = date('Y-m-d H:i:s',$item['createtime']); $data['list'][$k]['createtime'] = date('Y-m-d H:i:s', $item['createtime']);
} }
} }
return $this->success($data); return $this->success($data);
@@ -87,9 +91,9 @@ class Personnel extends BaseModel
* 编辑人员 * 编辑人员
* @param $param * @param $param
*/ */
public function editPersonnel($condition,$data) public function editPersonnel($condition, $data)
{ {
$result = model('personnel')->update($condition,$data); $result = model('personnel')->update($condition, $data);
return $this->success($result); return $this->success($result);
} }
@@ -100,13 +104,14 @@ class Personnel extends BaseModel
*/ */
public function deletePersonnel($id, $site_id) public function deletePersonnel($id, $site_id)
{ {
$info = model('personnel')->getInfo([ [ 'site_id', '=', $site_id ], [ 'id', '=', $id ] ], 'id'); $info = model('personnel')->getInfo([['site_id', '=', $site_id], ['id', '=', $id]], 'id');
if (empty($info)) return $this->error('', '未获取到人员信息'); if (empty($info))
$res = model('personnel')->delete([ [ 'site_id', '=', $site_id ], [ 'id', '=', $id ] ]); return $this->error('', '未获取到人员信息');
$res = model('personnel')->delete([['site_id', '=', $site_id], ['id', '=', $id]]);
return $this->success($res); return $this->success($res);
} }
/** /**
* 获取电子名片人员列表 * 获取电子名片人员列表
* @param array $condition * @param array $condition
* @param bool $field * @param bool $field
@@ -123,16 +128,17 @@ class Personnel extends BaseModel
return $this->success($data); return $this->success($data);
} }
/** /**
* 删除留言 * 删除留言
* @param $id * @param $id
* @param $site_id * @param $site_id
*/ */
public function deleteMessage($id, $site_id) public function deleteMessage($id, $site_id)
{ {
$info = model('personnel_message')->getInfo([ [ 'site_id', '=', $site_id ], [ 'id', '=', $id ] ], 'id'); $info = model('personnel_message')->getInfo([['site_id', '=', $site_id], ['id', '=', $id]], 'id');
if (empty($info)) return $this->error('', '未获取到留言信息'); if (empty($info))
$res = model('personnel_message')->delete([ [ 'site_id', '=', $site_id ], [ 'id', '=', $id ] ]); return $this->error('', '未获取到留言信息');
$res = model('personnel_message')->delete([['site_id', '=', $site_id], ['id', '=', $id]]);
return $this->success($res); return $this->success($res);
} }
} }

View File

@@ -168,7 +168,117 @@ class Enterprise extends BaseShop
if (request()->isJson()) { if (request()->isJson()) {
$video_id = input('video_id', 0); $video_id = input('video_id', 0);
$model = new EnterpriseModel(); $model = new EnterpriseModel();
return $model->deleteVideo([ [ 'video_id', '=', $video_id],['site_id','=',$this->site_id] ]); return $model->deleteVideo([ [ 'video_id', '=', $video_id ], [ 'site_id', '=', $this->site_id ] ]);
}
}
/***************************************视频号部分****************************************/
/**
* 视频号列表
*/
public function channellists(){
if (request()->isJson()) {
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$search_text = input('search_text', '');
$channel_type = input('channel_type', '');
$is_show = input('is_show', '');
$order = input('order', '');
$condition = [ [ 'site_id', '=', $this->site_id ] ];
if ($search_text) {
$condition[] = [ 'channel_name', 'like', '%' . $search_text . '%' ];
}
if ($channel_type) {
$condition[] = [ 'channel_type', '=', $channel_type ];
}
if ($is_show !== '') {
$condition[] = [ 'is_show', '=', $is_show ];
}
$order_by = $order ? $order : 'create_time desc';
$model = new EnterpriseModel();
$list = $model->getChannelPageList($condition, $page, $page_size, $order_by);
return $list;
} else {
return $this->fetch('enterprise/channel/lists');
}
}
/**
* 添加视频号
*/
public function channeladd()
{
$model = new EnterpriseModel();
if (request()->isJson()) {
$data = [
'site_id' => $this->site_id,
'channel_type' => input('channel_type', 'wechat'),
'channel_name' => input('channel_name', ''),
'avatar_image_type' => input('avatar_image_type', 'upload'),
'avatar_url' => input('avatar_url', ''),
'video_title' => input('video_title', ''),
'feed_id' => input('feed_id', ''),
'cover_image_type' => input('cover_image_type', 'upload'),
'cover_url' => input('cover_url', ''),
'sort' => input('sort', 0),
'is_show' => input('is_show', 1),
'feed_token' => input('feed_token', ''),
'view_count' => input('view_count', 0),
'show_view_count' => input('show_view_count', 0),
'show_follow' => input('show_follow', 0),
'create_time' => time()
];
return $model->addChannel($data);
} else {
return $this->fetch('enterprise/channel/edit');
}
}
/**
* 编辑视频号
*/
public function channeledit()
{
$channel_id = input('channel_id', 0);
$model = new EnterpriseModel();
if (request()->isJson()) {
$data = [
'channel_id' => $channel_id,
'site_id' => $this->site_id,
'channel_type' => input('channel_type', 'wechat'),
'channel_name' => input('channel_name', ''),
'avatar_image_type' => input('avatar_image_type', 'upload'),
'avatar_url' => input('avatar_url', ''),
'video_title' => input('video_title', ''),
'feed_id' => input('feed_id', ''),
'cover_image_type' => input('cover_image_type', 'upload'),
'cover_url' => input('cover_url', ''),
'sort' => input('sort', 0),
'is_show' => input('is_show', 1),
'feed_token' => input('feed_token', ''),
'view_count' => input('view_count', 0),
'show_view_count' => input('show_view_count', 0),
'show_follow' => input('show_follow', 0),
];
return $model->editChannel($data);
} else {
$this->assign('channel_id', $channel_id);
$article_info = $model->getChannelInfo([ [ 'channel_id', '=', $channel_id ] ]);
$this->assign('info', $article_info[ 'data' ]);
// 返回统一的 add.html 模板,前端会根据 channel_id 判断是否为编辑模式
return $this->fetch('enterprise/channel/edit');
}
}
/**
* 删除视频号
*/
public function channeldelete()
{
if (request()->isJson()) {
$channel_id = input('channel_id', 0);
$model = new EnterpriseModel();
return $model->deleteChannel([ [ 'channel_id', '=', $channel_id ], [ 'site_id', '=', $this->site_id ] ]);
} }
} }
} }

View File

@@ -0,0 +1,452 @@
<link rel="stylesheet" href="__STATIC__/ext/video/video.css">
<link rel="stylesheet" type="text/css" href="__STATIC__/ext/searchable_select/searchable_select.css" />
<link rel="stylesheet" type="text/css" href="__STATIC__/ext/layui/extend/cascader/cascader.css"/>
<link rel="stylesheet" type="text/css" href="SHOP_CSS/goods_edit.css?v=2" />
<style>
.upload-img-block .upload-img-box .upload-default{position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);}
</style>
<div class="layui-form form-wrap">
<input type="hidden" name="channel_id" value="{$channel_id}">
<div class="layui-form-item">
<label class="layui-form-label short-label"><span class="required">*</span>视频号类型:</label>
<div class="layui-input-inline">
<select name="channel_type" lay-verify="required">
<option value="wechat" {:$info['channel_type'] ? ($info['channel_type'] == 'wechat' ? 'selected' : '') : 'selected'}>微信视频号</option>
<option value="douyin" {:$info['channel_type'] == 'douyin' ? 'selected' : ''}>抖音</option>
<option value="kuaishou" {:$info['channel_type'] == 'kuaishou' ? 'selected' : ''}>快手</option>
<option value="redbook" {:$info['channel_type'] == 'redbook' ? 'selected' : ''}>小红书</option>
<option value="bilibili" {:$info['channel_type'] == 'bilibili' ? 'selected' : ''}>B站</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>视频标题:</label>
<div class="layui-input-inline">
<input type="text" name="video_title" value="{$info.video_title}" lay-verify="required" maxlength="50" autocomplete="off" placeholder="请输入视频标题" class="layui-input len-long">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>视频Token</label>
<div class="layui-input-inline">
<input type="text" name="feed_token" value="{$info.feed_token}" maxlength="255" autocomplete="off" placeholder="请输入视频号视频的标识/feedToken。仅内嵌小程序非同主体视频号视频时使用。" 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 type="radio" name="cover_image_type" lay-filter="coverImageType" value="url" title="URL链接" {:$info['cover_image_type'] ? ($info['cover_image_type'] == 'url' ? 'checked' : '') : 'checked'}>
<input type="radio" name="cover_image_type" lay-filter="coverImageType" value="upload" title="上传图片" {:$info['cover_image_type'] ? ($info['cover_image_type'] == 'upload' ? 'checked' : '') : ''}>
</div>
</div>
<div class="layui-form-item" id="coverTypeUrl">
<label class="layui-form-label"><span class="required">*</span>封面URL</label>
<div class="layui-input-inline">
<input type="text" name="cover_url" value="{$info.cover_url}" maxlength="255" autocomplete="off" placeholder="请输入封面URL" class="layui-input len-long">
</div>
</div>
<div class="layui-form-item" id="coverTypeUpload">
<label class="layui-form-label"><span class="required">*</span>封面图:</label>
<div class="layui-input-block img-upload">
<div class="upload-img-block simple-uploading">
<div class="upload-img-box" id="coverImg">
<div class="upload-default">
<i class="iconfont iconshangchuan"></i>
<p>点击上传</p>
</div>
</div>
<input type="hidden" name="cover_url_upload" value="" />
<i class="del">x</i>
</div>
</div>
<div class="word-aux">推荐使用 750x420 像素的图片</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label short-label"><span class="required">*</span>视频号:</label>
<div class="layui-input-inline">
<input type="text" name="channel_name" value="{$info.channel_name}" lay-verify="required" maxlength="40" autocomplete="off" placeholder="请输入视频号名称。微信视频号,以&quot;sph&quot;开头的id" class="layui-input len-long">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容ID</label>
<div class="layui-input-inline">
<input type="text" name="feed_id" value="{$info.feed_id}" maxlength="50" autocomplete="off" placeholder="请输入视频号内容ID/feed_id. 微信视频号:仅视频号视频与小程序同主体时生效。" class="layui-input len-long">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">头像类型:</label>
<div class="layui-input-block">
<input type="radio" name="avatar_image_type" lay-filter="avatarType" value="url" title="URL链接" {:$info['avatar_image_type'] ? ($info['avatar_image_type'] == 'url' ? 'checked' : '') : 'checked'}>
<input type="radio" name="avatar_image_type" lay-filter="avatarType" value="upload" title="上传图片" {:$info['avatar_image_type'] ? ($info['avatar_image_type'] == 'upload' ? 'checked' : '') : ''}>
</div>
</div>
<div class="layui-form-item" id="avatarTypeUrl">
<label class="layui-form-label">头像URL</label>
<div class="layui-input-inline">
<input type="text" name="avatar_url" value="{$info.avatar_url}" maxlength="255" autocomplete="off" placeholder="请输入头像URL" class="layui-input len-long">
</div>
</div>
<div class="layui-form-item" id="avatarTypeUpload">
<label class="layui-form-label">头像图:</label>
<div class="layui-input-block img-upload">
<div class="upload-img-block square simple-uploading">
<div class="upload-img-box" id="avatarImg">
<div class="upload-default">
<i class="iconfont iconshangchuan"></i>
<p>点击上传</p>
</div>
</div>
<input type="hidden" name="avatar_url_upload" value="" />
<i class="del">x</i>
</div>
</div>
<div class="word-aux">推荐使用 200x200 像素的图片</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序:</label>
<div class="layui-input-inline">
<input type="number" name="sort" value="{$info.sort|default=0}" autocomplete="off" placeholder="请输入排序" class="layui-input len-short">
</div>
<div class="layui-form-mid layui-word-aux">数值越小排序越靠前</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否显示:</label>
<div class="layui-input-block">
<input type="radio" name="is_show" value="1" title="显示" {$info.is_show == 1 || !$info.is_show ? 'checked' : ''}>
<input type="radio" name="is_show" value="0" title="隐藏" {$info.is_show == 0 ? 'checked' : ''}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">观看次数:</label>
<div class="layui-input-inline">
<input type="number" name="view_count" value="{$info.view_count|default=0}" autocomplete="off" placeholder="请输入视频观看次数" class="layui-input len-short">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">显示观看次数:</label>
<div class="layui-input-block">
<input type="radio" name="show_view_count" value="1" title="显示" {$info.show_view_count == 1 ? 'checked' : ''}>
<input type="radio" name="show_view_count" value="0" title="不显示" {$info.show_view_count != 1 ? 'checked' : ''}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">显示关注按钮:</label>
<div class="layui-input-block">
<input type="radio" name="show_follow" value="1" title="显示" {$info.show_follow == 1 ? 'checked' : ''}>
<input type="radio" name="show_follow" value="0" title="不显示" {$info.show_follow != 1 ? 'checked' : ''}>
</div>
</div>
<div class="form-row" id="save">
<button class="layui-btn" lay-submit lay-filter="save">提交</button>
<button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
</div>
<!-- 新增成功后的对话框模板 -->
<script type="text/html" id="addSuccessDialog">
<div class="layui-form">
<p>操作成功</p>
</div>
</script>
</div>
<script>
var form, repeat_flag,
IMAGE_MAX = 2, //最多可以上传多少张图片
imageCollection = [], //图片集合
selectedGoodsId = [],
goods_id = [],
goods_list = [],
avatarImg = '{$info.avatar_url}',
coverImg = '{$info.cover_url}',
avatarImageType = '{:$info[\'avatar_image_type\'] ? $info[\'avatar_image_type\'] : \'url\'}',
coverImageType = '{:$info[\'cover_image_type\'] ? $info[\'cover_image_type\'] : \'url\'}';
var uploadHtml = "<div class='upload-default'><i class='iconfont iconshangchuan'></i><p>点击上传</p></div>"
// 判断是否为编辑模式URL 中有 channel_id 且不为 0
var isEditMode = false;
var channel_id = 0;
{if condition="$channel_id && $channel_id > 0"}
channel_id = {$channel_id};
isEditMode = true;
{/if}
layui.use(['form', 'upload', 'element'], function() {
form = layui.form;
repeat_flag = false;
form.render();
// 初始化头像
if(avatarImg){
if(avatarImageType == 'upload'){
$("#avatarImg").html("<img src='" + ns.img(avatarImg) + "' alt='头像'>");
$("input[name='avatar_url_upload']").val(avatarImg);
imageCollection.push(avatarImg);
}else{
$("#avatarImg").html("<img src='" + avatarImg + "' alt='头像' style='width:100%;height:100%;object-fit:contain;'>");
}
}
// 初始化封面
if(coverImg){
if(coverImageType == 'upload'){
$("#coverImg").html("<img src='" + ns.img(coverImg) + "' alt='封面'>");
$("input[name='cover_url_upload']").val(coverImg);
}else{
$("#coverImg").html("<img src='" + coverImg + "' alt='封面' style='width:100%;height:100%;object-fit:contain;'>");
}
}
// 头像类型切换
form.on('radio(avatarType)', function(data) {
var elem = data.elem;
var type = elem.value;
if(type == 'url'){
$('#avatarTypeUrl').show();
// 如果已有URL显示预览
var avatarUrlVal = $("input[name='avatar_url']").val();
if(avatarUrlVal){
$("#avatarImg").html("<img src='" + avatarUrlVal + "' alt='头像' style='width:100%;height:100%;object-fit:contain;'>");
} else {
$('#avatarTypeUpload').hide();
}
}else{
$('#avatarTypeUrl').hide();
$('#avatarTypeUpload').show();
// 如果已上传图片,显示预览
var avatarUrlVal = $("input[name='avatar_url_upload']").val();
if(avatarUrlVal){
$("#avatarImg").html("<img src='" + ns.img(avatarUrlVal) + "' alt='头像'>");
} else {
$("#avatarImg").html(uploadHtml);
}
}
});
// 头像URL输入预览
$("input[name='avatar_url']").on('input', function() {
var avatarType = $("input[name='avatar_image_type']:checked").val();
var url = $(this).val();
if(avatarType == 'url' && url){
$("#avatarImg").html("<img src='" + url + "' alt='头像' style='width:100%;height:100%;object-fit:contain;'>");
}
});
// 初始显示状态 - 头像
if(avatarImageType == 'url'){
$('#avatarTypeUrl').show();
// 如果已有URL显示预览
if(avatarImg){
$("#avatarImg").html("<img src='" + avatarImg + "' alt='头像' style='width:100%;height:100%;object-fit:contain;'>");
} else {
$('#avatarTypeUpload').hide();
}
}else{
$('#avatarTypeUrl').hide();
$('#avatarTypeUpload').show();
// 如果已上传图片,显示预览
if(avatarImg){
$("#avatarImg").html("<img src='" + ns.img(avatarImg) + "' alt='头像'>");
} else {
$("#avatarImg").html(uploadHtml);
}
}
// 封面类型切换
form.on('radio(coverImageType)', function(data) {
var elem = data.elem;
var type = elem.value;
var coverUrlVal = $("input[name='cover_url']").val();
if(type == 'url'){
$('#coverTypeUrl').show();
// 如果已有URL显示预览
if(coverUrlVal){
$("#coverImg").html("<img src='" + coverUrlVal + "' alt='封面' style='width:100%;height:100%;object-fit:contain;'>");
} else {
$('#coverTypeUpload').hide();
}
}else{
$('#coverTypeUrl').hide();
$('#coverTypeUpload').show();
// 如果已上传图片,显示预览
coverUrlVal = $("input[name='cover_url_upload']").val();
if(coverUrlVal){
$("#coverImg").html("<img src='" + ns.img(coverUrlVal) + "' alt='封面'>");
} else {
$("#coverImg").html(uploadHtml);
}
}
});
// 封面URL输入预览
$("input[name='cover_url']").on('input', function() {
var coverType = $("input[name='cover_image_type']:checked").val();
var url = $(this).val();
if(coverType == 'url' && url){
$("#coverImg").html("<img src='" + url + "' alt='封面' style='width:100%;height:100%;object-fit:contain;'>");
}
});
// 初始显示状态 - 封面
if(coverImageType == 'url'){
$('#coverTypeUrl').show();
// 如果已有URL显示预览
if(coverImg){
$("#coverImg").html("<img src='" + coverImg + "' alt='封面' style='width:100%;height:100%;object-fit:contain;'>");
} else {
$('#coverTypeUpload').hide();
}
}else{
$('#coverTypeUrl').hide();
$('#coverTypeUpload').show();
// 如果已上传图片,显示预览
if(coverImg){
$("#coverImg").html("<img src='" + ns.img(coverImg) + "' alt='封面'>");
} else {
$("#coverImg").html(uploadHtml);
}
}
// 头像上传
$("body").off("click", "#avatarImg").on("click", "#avatarImg", function () {
openAlbum(function (data) {
imageCollection = [];
imageCollection.push(data[0].pic_path);
imageCollection.splice(1, imageCollection.length);
var val = '<img src="' + ns.img(imageCollection[0]) + '" alt="头像">';
$("#avatarImg").html(val);
$("input[name='avatar_url_upload']").val(imageCollection[0]);
}, 1);
});
// 删除头像
$("#avatarImg").next(".del").click(function () {
$("#avatarImg").html('<div class="upload-default"><i class="iconfont iconshangchuan"></i><p>点击上传</p></div>');
$("input[name='avatar_url']").val('');
$("input[name='avatar_url_upload']").val('');
});
// 封面上传
$("body").off("click", "#coverImg").on("click", "#coverImg", function () {
openAlbum(function (data) {
var val = '<img src="' + ns.img(data[0].pic_path) + '" alt="封面">';
$("#coverImg").html(val);
$("input[name='cover_url_upload']").val(data[0].pic_path);
}, 1);
});
// 删除封面
$("#coverImg").next(".del").click(function () {
$("#coverImg").html('<div class="upload-default"><i class="iconfont iconshangchuan"></i><p>点击上传</p></div>');
$("input[name='cover_url']").val('');
$("input[name='cover_url_upload']").val('');
});
/**
* 表单提交(立即发布)
*/
form.on('submit(save)', function(data){
var field = data.field;
// 根据头像类型设置正确的头像URL
if(field.avatar_image_type == 'upload'){
field.avatar_url = field.avatar_url_upload;
}
// 根据封面类型设置正确的封面URL
if(field.cover_image_type == 'upload'){
field.cover_url = field.cover_url_upload;
}
delete field.avatar_url_upload;
delete field.cover_url_upload;
field.status = 1;
// 编辑模式下需要设置 channel_id
if(isEditMode && channel_id > 0){
field.channel_id = channel_id;
}
console.log(isEditMode ? '编辑:提交的数据' : '添加:提交的数据', field)
formSubmit(field, !isEditMode)
});
});
/**
* 提交
* @param data 表单数据
* @param isAdd 是否是新增操作true-新增false-编辑
*/
function formSubmit(data, isAdd){
if(repeat_flag) return;
repeat_flag = true;
var url = ns.url("personnel://shop/enterprise/channeladd")
if(data.channel_id > 0) url = ns.url("personnel://shop/enterprise/channeledit")
setTimeout(function () {
$.ajax({
type: 'POST',
dataType: 'JSON',
url: url,
data: data,
async: false,
success: function(res){
repeat_flag = false;
if (res.code == 0) {
if(isAdd){
// 新增成功,显示两个按钮
layer.confirm('操作成功', {
title:'操作提示',
btn: ['返回列表', '继续添加'],
closeBtn: 0,
yes: function(index, layero){
location.hash = ns.hash("personnel://shop/enterprise/channellists");
layer.close(index);
},
btn2: function(index, layero) {
listenerHash(); // 刷新页面
layer.close(index);
}
});
} else {
// 编辑成功,只显示一个按钮
layer.confirm('操作成功', {
title:'操作提示',
btn: ['返回列表'],
closeBtn: 0,
yes: function(index, layero){
location.hash = ns.hash("personnel://shop/enterprise/channellists");
layer.close(index);
}
});
}
}else{
layer.msg(res.message);
}
}
});
}, 1000);
}
function back() {
location.hash = ns.hash("personnel://shop/enterprise/channellists");
}
</script>

View File

@@ -0,0 +1,228 @@
<!-- 搜索框 -->
<div class="single-filter-box top">
<button class="layui-btn" onclick="add()">添加视频号</button>
<div class="layui-form">
<div class="layui-input-inline">
<select name="channel_type">
<option value="">全部类型</option>
<option value="wechat">微信视频号</option>
<option value="douyin">抖音</option>
<option value="kuaishou">快手</option>
<option value="redbook">小红书</option>
<option value="bilibili">B站</option>
</select>
</div>
<div class="layui-input-inline">
<select name="is_show">
<option value="">全部状态</option>
<option value="1">显示</option>
<option value="0">隐藏</option>
</select>
</div>
<div class="layui-input-inline">
<select name="order">
<option value="">默认排序</option>
<option value="sort asc">排序升序</option>
<option value="sort desc">排序降序</option>
<option value="create_time asc">创建时间升序</option>
<option value="create_time desc">创建时间降序</option>
</select>
</div>
<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="channel_list" lay-filter="channel_list"></table>
<!-- 操作 -->
<script type="text/html" id="operation">
<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="info">
<div class='table-title'>
{{# if(d.cover_url){ }}
<div class='title-pic'>
<img layer-src src="{{ns.img(d.cover_url)}}" onerror="this.src = ns.url('public/static/img/default_img/square.png')" alt="{{d.video_title}}">
</div>
{{# } }}
<div class='title-content'>
<p class="layui-elip" style="font-size: 12px;color: #999;margin-top: 5px;">{{d.feed_token}}</p>
<p class="layui-elip" style="font-weight: 500; font-size: 18px; color:#000">{{d.video_title}}</p>
</div>
</div>
</script>
<!-- 视频号内容信息 -->
<script type="text/html" id="channelinfo">
<div class='table-title'>
{{# if(d.avatar_url){ }}
<div class='title-pic headimg'>
<img layer-src src="{{ns.img(d.avatar_url)}}" onerror="this.src = ns.url('public/static/img/default_img/square.png')" alt="{{d.channel_name}}">
</div>
{{# } }}
<div class='title-content'>
<!-- <p class="layui-elip" style="font-size: 12px;color: #999;margin-top: 5px;">{{d.channel_id}}</p> -->
<p class="layui-elip" style="font-weight: 500; font-size: 13px; color:#000">{{d.channel_name}}</p>
</div>
</div>
</script>
<!-- 是否显示状态 -->
<script type="text/html" id="isShow">
{{# if(d.is_show == 1){ }}
<span class="layui-badge layui-bg-green">显示</span>
{{# } else { }}
<span class="layui-badge layui-bg-gray">隐藏</span>
{{# } }}
</script>
<!-- 视频号类型 -->
<script type="text/html" id="channelType">
{{# if(d.channel_type == 'wechat'){ }}
<span class="layui-badge layui-bg-blue">微信视频号</span>
{{# } else if(d.channel_type == 'douyin'){ }}
<span class="layui-badge layui-bg-cyan">抖音</span>
{{# } else if(d.channel_type == 'kuaishou'){ }}
<span class="layui-badge layui-bg-orange">快手</span>
{{# } else if(d.channel_type == 'redbook'){ }}
<span class="layui-badge layui-bg-red">小红书</span>
{{# } else if(d.channel_type == 'bilibili'){ }}
<span class="layui-badge layui-bg-green">B站</span>
{{# } else { }}
<span class="layui-badge layui-bg-gray">{{d.channel_type || '未知'}}</span>
{{# } }}
</script>
<script>
var form,laytpl,table, repeat_flag = false;//防重复标识;
layui.use(['form','laytpl'], function() {
form = layui.form;
laytpl = layui.laytpl;
form.render();
table = new Table({
elem: '#channel_list',
url: ns.url("personnel://shop/enterprise/channellists"),
cols: [[
{
field: 'video_title',
title: '视频',
width: '40%',
unresize: 'false',
templet: '#info'
},
{
field: 'channel_name',
title: '视频号',
width: '15%',
unresize: 'false',
templet: '#channelinfo'
},
{
field: 'channel_type',
title: '类型',
width: '12%',
unresize: 'false',
templet: '#channelType'
},
{
field: 'is_show',
title: '显示',
width: '5%',
unresize: 'false',
templet: '#isShow'
},
{
field: 'sort',
title: '排序',
width: '5%',
unresize: 'false'
},
{
field: 'view_count',
title: '观看次数',
width: '8%',
unresize: 'false'
},
{
title: '操作',
toolbar: '#operation',
unresize: 'false',
align : 'right'
}
]],
});
/**
* 搜索功能
*/
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
});
/**
* 监听工具栏操作
*/
table.tool(function(obj) {
var data = obj.data;
switch (obj.event) {
case 'edit': //编辑
location.hash = ns.hash("personnel://shop/enterprise/channeledit?channel_id=" + data.channel_id);
break;
case 'delete': //删除
deleteChannel(data.channel_id);
break;
}
});
});
/**
* 删除
*/
function deleteChannel(channel_id) {
if (repeat_flag) return false;
repeat_flag = true;
layer.confirm('确定要删除该视频号吗?', function (index) {
layer.close(index);
$.ajax({
url: ns.url("personnel://shop/enterprise/channeldelete"),
data: {channel_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 add() {
location.hash = ns.hash("personnel://shop/enterprise/channeladd");
}
</script>

View File

@@ -41,6 +41,10 @@
<img src="{:img('/addon/personnel/shop/view/public/img/video.png')}" style="width: 100%;"></img> <img src="{:img('/addon/personnel/shop/view/public/img/video.png')}" style="width: 100%;"></img>
</div> </div>
<div style="width: 100%;" v-if="is_channel">
<img src="{:img('/addon/personnel/shop/view/public/img/channel.png')}" style="width: 100%;" alt="视频号"></img>
</div>
<div style="width: 100%;" v-if="is_map"> <div style="width: 100%;" v-if="is_map">
<img src="{:img('/addon/personnel/shop/view/public/img/map.png')}" style="width: 100%;"></img> <img src="{:img('/addon/personnel/shop/view/public/img/map.png')}" style="width: 100%;"></img>
</div> </div>
@@ -99,6 +103,16 @@
<div v-else @click="is_video= 1" class="layui-unselect layui-form-checkbox" lay-skin="primary"><i class="layui-icon layui-icon-ok"></i></div> <div v-else @click="is_video= 1" class="layui-unselect layui-form-checkbox" lay-skin="primary"><i class="layui-icon layui-icon-ok"></i></div>
</div> </div>
</div> </div>
<div class="layui-form-item checkbox-wrap custom-popup">
<label class="layui-form-label sm">视频号</label>
<div class="layui-input-block">
<span v-if="is_channel== 0">隐藏</span><span v-else>显示</span>
<div v-if="is_channel!= 0" @click="is_channel= 0" class="layui-unselect layui-form-checkbox layui-form-checked" lay-skin="primary">
<i class="layui-icon layui-icon-ok"></i>
</div>
<div v-else @click="is_channel= 1" class="layui-unselect layui-form-checkbox" lay-skin="primary"><i class="layui-icon layui-icon-ok"></i></div>
</div>
</div>
<div class="layui-form-item checkbox-wrap custom-popup"> <div class="layui-form-item checkbox-wrap custom-popup">
<label class="layui-form-label sm">地图导航</label> <label class="layui-form-label sm">地图导航</label>
<div class="layui-input-block"> <div class="layui-input-block">

View File

@@ -17,6 +17,7 @@ var vue = new Vue({
is_mp: 1, is_mp: 1,
is_file: 1, is_file: 1,
is_video: 1, is_video: 1,
is_channel: 1,
is_map: 1, is_map: 1,
}, },
created: function () { created: function () {
@@ -32,6 +33,7 @@ var vue = new Vue({
this.is_file = data.is_file this.is_file = data.is_file
this.is_video = data.is_video this.is_video = data.is_video
this.is_map = data.is_map this.is_map = data.is_map
this.is_channel = data.is_channel
fullScreenSize(function () { fullScreenSize(function () {
self.lazyLoad = true; self.lazyLoad = true;
}); });
@@ -90,8 +92,9 @@ layui.use(['form'], function () {
is_mp:vue.is_mp, is_mp:vue.is_mp,
is_file:vue.is_file, is_file:vue.is_file,
is_video:vue.is_video, is_video:vue.is_video,
is_channel:vue.is_channel,
is_map:vue.is_map is_map:vue.is_map
} };
$.ajax({ $.ajax({
type: "post", type: "post",
url: ns.url('personnel://shop/personnel/diy'), url: ns.url('personnel://shop/personnel/diy'),

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@@ -576,6 +576,8 @@ class Member extends BaseApi
$Personnelmodel = new PersonnelModel(); $Personnelmodel = new PersonnelModel();
$set = $Personnelmodel->getPersonnelSet($this->site_id, $this->app_module)[ 'data' ][ 'value' ]; $set = $Personnelmodel->getPersonnelSet($this->site_id, $this->app_module)[ 'data' ][ 'value' ];
//视频号数据
$channel_list = model('personnel_channel')->getList(['site_id'=>$this->site_id, 'is_show'=>1],'*','sort asc createtime desc');
//视频文件 //视频文件
$video_list = model('personnel_video')->getList(['site_id'=>$this->site_id],'*','createtime desc'); $video_list = model('personnel_video')->getList(['site_id'=>$this->site_id],'*','createtime desc');
//企业文件 //企业文件
@@ -583,7 +585,7 @@ class Member extends BaseApi
//电子名片diy //电子名片diy
$config = $Personnelmodel->getPersonnelSet($this->site_id, $this->app_module)[ 'data' ][ 'value' ]; $config = $Personnelmodel->getPersonnelSet($this->site_id, $this->app_module)[ 'data' ][ 'value' ];
$config['value'] = json_decode($config['value'],true); $config['value'] = json_decode($config['value'],true);
return $this->response(['code'=>'0','data'=>$list,'message'=>'操作成功','shop'=>$shop_info_result,'set'=>$set,'video_list'=>$video_list,'file_list'=>$file_list,'diy'=>$config['value']]); return $this->response(['code'=>'0','data'=>$list,'message'=>'操作成功','shop'=>$shop_info_result,'set'=>$set,'channel_list'=>$channel_list, 'video_list'=>$video_list,'file_list'=>$file_list,'diy'=>$config['value']]);
} }
//留言 //留言
public function message() public function message()