同步niucloud

This commit is contained in:
CQ 2025-11-13 09:51:05 +08:00
parent ef43d9e616
commit b4563d004b
578 changed files with 2629 additions and 168 deletions

View File

@ -55,14 +55,23 @@ class Request extends \think\Request
*/
public function paramFilter($param, bool $filter = true)
{
if (!$param || !$filter || !is_string($param)) return $param;
// 把数据过滤
if (!$param || !$filter || !is_string($param)) {
return $param;
}
// 过滤危险标签
$filter_rule = [
"/<(\\/?)(script|i?frame|style|html|body|title|link|metaf|alert|font|object|\\?|\\%)([^>]*?)>/isU",
"/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",
"/<(\\/?)(script|iframe|frame|style|html|body|title|link|meta|alert|font|object|\\?|\\%)([^>]*?)>/isU",
"/(<[^>]*?)on[a-zA-Z]+\s*=[\s\"'][^\"']*?([\s\"'][^>]*?>)/isU",
"/\\b(select|join|where|drop|like|modify|rename|insert|update|table|database|alter|truncate|\'|\/\*|\.\.\/|\.\/|union|into|load_file|outfile)\\b/is"
];
return preg_replace($filter_rule, '', $param);
$replace = [
'', // 移除整个危险标签
'$1$2', // 仅移除 onxxx 属性,保留标签
''
];
return preg_replace($filter_rule, $replace, $param);
}
/**

View File

@ -42,7 +42,8 @@ class Config extends BaseAdminController
['token', ''],
['encoding_aes_key', ''],
['qr_code', ''],
['encryption_type', '']
['encryption_type', ''],
['base_uri', '']
]);
$this->validate($data, 'app\validate\channel\Wechat.set');
(new WechatConfigService())->setWechatConfig($data);

View File

@ -27,13 +27,13 @@ Route::group(function () {
Route::get('addon/:id', 'addon.Addon/info');
//安装插件
Route::post('addon/install/:addon', 'addon.Addon/install');
Route::post('addon/install/:addon', 'addon.Addon/install')->pattern(['addon' => '[\w|\,]+']);
//云安装插件
Route::post('addon/cloudinstall/:addon', 'addon.Addon/cloudInstall');
Route::post('addon/cloudinstall/:addon', 'addon.Addon/cloudInstall')->pattern(['addon' => '[\w|\,]+']);
// 云编译进度
Route::get('addon/cloudinstall/:addon', 'addon.Addon/cloudInstallLog');
Route::get('addon/cloudinstall/:addon', 'addon.Addon/cloudInstallLog')->pattern(['addon' => '[\w|\,]+']);
//插件安装检测安装环境
Route::get('addon/install/check/:addon', 'addon.Addon/installCheck');
Route::get('addon/install/check/:addon', 'addon.Addon/installCheck')->pattern(['addon' => '[\w|\,]+']);
// 获取安装任务
Route::get('addon/installtask', 'addon.Addon/getInstallTask');
//下载插件

View File

@ -149,9 +149,9 @@ Route::group('member', function() {
//全部会员等级
Route::get('level/all', 'member.MemberLevel/getAll');
// 获取会员权益内容
Route::get('benefits/content', 'member.Member/getMemberBenefitsContent');
Route::post('benefits/content', 'member.Member/getMemberBenefitsContent');
// 获取会员礼包内容
Route::get('gifts/content', 'member.Member/getMemberGiftsContent');
Route::post('gifts/content', 'member.Member/getMemberGiftsContent');
/***************************************************** 会员签到 ****************************************************/
//签到设置
Route::put('sign/config', 'member.MemberSign/setSign');

View File

@ -26,6 +26,7 @@ class CommonActiveDict
const EXCHANGE = 'exchange';// 积分商城 积
const MANJIANSONG = 'manjiansong'; // 满减送 满减
const NEWCOMER_DISCOUNT = 'newcomer_discount'; // 新人专享 新
const FRIEND_HELP = 'friend_help'; // 好友助力 友
const PINTUAN = 'pintuan'; // 新人专享 新
const SECKILL = 'seckill'; // 秒杀 秒
const RELAY = 'relay'; // 接龙 接
@ -78,6 +79,11 @@ class CommonActiveDict
'active_name' => get_lang('common_active_short.relay_name'),
'bg_color' => '#0EB108'
],
self::FRIEND_HELP => [
'name' => get_lang('common_active_short.friend_help_short'),
'active_name' => get_lang('common_active_short.friend_help_name'),
'bg_color' => '#F20C8A'
],
];
return !empty($active) ? $data[$active] ?? [] : $data;
}

View File

@ -160,7 +160,8 @@ class PagesDict
],
"copyright" => [
'control' => true,
'isShow' => false
'isShow' => false,
'textColor' =>'#ccc'
],
"template" => [
'textColor' => "#303133",
@ -243,7 +244,8 @@ class PagesDict
],
"copyright" => [
'control' => true,
'isShow' => false
'isShow' => false,
'textColor' =>'#ccc'
],
"template" => [
'textColor' => "#303133",
@ -720,7 +722,8 @@ class PagesDict
],
"copyright" => [
'control' => true,
'isShow' => false
'isShow' => false,
'textColor' =>'#ccc'
],
"template" => [
'textColor' => "#303133",

View File

@ -87,7 +87,8 @@ class TemplateDict
],
"copyright" => [
'control' => true,
'isShow' => false
'isShow' => false,
'textColor' =>'#ccc'
],
"popWindow" => [
"imgUrl" => "",
@ -740,7 +741,8 @@ class TemplateDict
],
"copyright" => [
'control' => true,
'isShow' => false
'isShow' => false,
'textColor' =>'#ccc'
],
"popWindow" => [
"imgUrl" => "",

View File

@ -1688,21 +1688,7 @@ return [
'is_show' => '1',
]
]
],
[
'menu_name' => '系统更新',
'menu_key' => 'system_upgrade',
'menu_short_name' => '系统更新',
'menu_type' => '1',
'icon' => 'iconfont iconxitonggengxin1',
'api_url' => '',
'router_path' => 'tools/upgrade',
'view_path' => 'app/upgrade',
'methods' => '',
'sort' => '97',
'status' => '1',
'is_show' => '1',
],
]
],
],

View File

@ -40,6 +40,7 @@ class ConfigKeyDict
public const SMS = 'SMS';//短信配置
public const PINTUAN_ORDER_CONFIG = 'PINTUAN_ORDER_CONFIG';//拼团订单配置
public const FRIEND_HELP_CONFIG = 'FRIEND_HELP_CONFIG';//拼团订单配置
public const RELAY_ORDER_CONFIG = 'RELAY_ORDER_CONFIG';//接龙订单配置
public const APP = 'app';

View File

@ -78,6 +78,7 @@ class FileDict
self::IMAGE,//图片上传
self::VIDEO,//视频上传
self::AUDIO,//视频上传
self::DOCUMENT,//文件上传
self::APPLET,//小程序包上传
self::EXCEL,//excel导入
self::APP_PACKAGE,//应用包

View File

@ -469,6 +469,8 @@ return [
'seckill_name' => '秒杀',
'relay_short' => '接',
'relay_name' => '接龙',
'friend_help_short' => '友',
'friend_help_name' => '好友助力',
],
//应用菜单下 特殊菜单定义
'dict_site_addon_menu' => [

View File

@ -69,8 +69,9 @@ class AuthService extends BaseAdminService
$method = strtolower(trim($request->method()));
$site_info = (new AuthSiteService())->getSiteInfo();
if ($method != 'get') {
if ($site_info['status'] == SiteDict::EXPIRE) throw new AuthException('SITE_EXPIRE_NOT_ALLOW');
if ($site_info['status'] == SiteDict::CLOSE) throw new AuthException('SITE_CLOSE_NOT_ALLOW');
// throw new AuthException('演示站禁止操作');
if ($site_info[ 'status' ] == SiteDict::EXPIRE) throw new AuthException('SITE_EXPIRE_NOT_ALLOW');
if ($site_info[ 'status' ] == SiteDict::CLOSE) throw new AuthException('SITE_CLOSE_NOT_ALLOW');
}
$menu_service = new MenuService();

View File

@ -213,6 +213,9 @@ class AuthSiteService extends BaseAdminService
* @return true
*/
public function createSite(array $data) {
// throw new CommonException('演示站禁止操作');
if (!AuthService::isSuperAdmin()) {
$limit = (new UserCreateSiteLimit())->where([ ['uid', '=', $this->uid], ['group_id', '=', $data['group_id'] ] ])->findOrEmpty();
if ($limit->isEmpty()) throw new CommonException('NO_PERMISSION_TO_CREATE_SITE_GROUP');

View File

@ -175,6 +175,7 @@ class WeappAuthService extends BaseApiService
// }
}
}
if (empty($member_info->wx_unionid) && !empty($unionid)) $member_info->wx_unionid = $unionid;
return $login_service->login($member_info, MemberLoginTypeDict::WEAPP);
}
}

View File

@ -143,6 +143,7 @@ class WechatAppService extends BaseApiService
if (!empty($avatar)) $member_info->headimg = $avatar;
if (!empty($nickname)) $member_info->nickname = $nickname;
}
if (empty($member_info->wx_unionid) && !empty($unionid)) $member_info->wx_unionid = $unionid;
return $login_service->login($member_info, MemberLoginTypeDict::WECHAT);
}
}

View File

@ -163,6 +163,7 @@ class WechatAuthService extends BaseApiService
if (!empty($avatar)) $member_info->headimg = $avatar;
if (!empty($nickname)) $member_info->nickname = $nickname;
}
if (empty($member_info->wx_unionid) && !empty($unionid)) $member_info->wx_unionid = $unionid;
return $login_service->login($member_info, MemberLoginTypeDict::WECHAT);
}
}

View File

@ -133,6 +133,7 @@ class CoreAddonCloudService extends CoreCloudBaseService
return $build_log;
}
if ($last['percent'] == 100) {
$addon = isset($install_task['addon_list']) ? implode(',', $install_task['addon_list']) : $addon;
$build_log['data'][0] = $this->buildSuccess($addon, $build_log['data'][0], $install_task['timestamp']);
}
}

View File

@ -23,6 +23,7 @@ use think\db\exception\DbException;
use think\db\exception\PDOException;
use think\facade\Cache;
use think\facade\Db;
use think\facade\Log;
/**
* 安装服务层
@ -63,11 +64,14 @@ class CoreAddonInstallService extends CoreAddonBaseService
private $install_task = null;
private $addon_list = [];
public function __construct($addon)
{
parent::__construct();
$this->addon = $addon;
$this->install_addon_path = $this->addon_path . $addon . DIRECTORY_SEPARATOR;
$this->addon_list = explode(',', $addon);
$this->addon = $this->addon_list[0];
$this->install_addon_path = $this->addon_path . $this->addon . DIRECTORY_SEPARATOR;
$this->cache_key = "install_{$addon}";
@ -93,30 +97,17 @@ class CoreAddonInstallService extends CoreAddonBaseService
*/
public function installCheck()
{
$from_admin_dir = $this->install_addon_path . 'admin' . DIRECTORY_SEPARATOR;
$from_web_dir = $this->install_addon_path . 'web' . DIRECTORY_SEPARATOR;
$from_wap_dir = $this->install_addon_path . 'uni-app' . DIRECTORY_SEPARATOR;
$from_resource_dir = $this->install_addon_path . 'resource' . DIRECTORY_SEPARATOR;
// 放入的文件
$to_admin_dir = $this->root_path . 'admin' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'addon'. DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
$to_admin_dir = $this->root_path . 'admin' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'addon'. DIRECTORY_SEPARATOR;
$to_web_dir = $this->root_path . 'web' . DIRECTORY_SEPARATOR;
$to_wap_dir = $this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'addon'. DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
$to_wap_dir = $this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'addon'. DIRECTORY_SEPARATOR;
$to_resource_dir = public_path() . 'addon' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
$to_resource_dir = public_path() . 'addon' . DIRECTORY_SEPARATOR;
if (!is_dir($this->root_path . 'admin' . DIRECTORY_SEPARATOR)) throw new CommonException('ADMIN_DIR_NOT_EXIST');
if (!is_dir($this->root_path . 'web' . DIRECTORY_SEPARATOR)) throw new CommonException('WEB_DIR_NOT_EXIST');
if (!is_dir($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR)) throw new CommonException('UNIAPP_DIR_NOT_EXIST');
// 配置文件
$package_path = $this->install_addon_path . 'package' . DIRECTORY_SEPARATOR;
$package_file = [];
search_dir($package_path, $package_file);
$package_file = array_map(function ($file) use ($package_path) {
return str_replace($package_path . DIRECTORY_SEPARATOR, '', $file);
}, $package_file);
$data = [
// 目录检测
'dir' => [
@ -127,10 +118,7 @@ class CoreAddonInstallService extends CoreAddonBaseService
]
];
if (is_dir($from_admin_dir)) $data['dir']['is_readable'][] = ['dir' => str_replace(project_path(), '', $from_admin_dir), 'status' => is_readable($from_admin_dir)];
if (is_dir($from_web_dir)) $data['dir']['is_readable'][] = ['dir' => str_replace(project_path(), '', $from_web_dir), 'status' => is_readable($from_web_dir)];
if (is_dir($from_wap_dir)) $data['dir']['is_readable'][] = ['dir' => str_replace(project_path(), '', $from_wap_dir), 'status' => is_readable($from_wap_dir)];
if (is_dir($from_resource_dir)) $data['dir']['is_readable'][] = ['dir' => str_replace(project_path(), '', $from_resource_dir), 'status' => is_readable($from_resource_dir)];
if (is_dir($this->addon_path)) $data['dir']['is_readable'][] = ['dir' => str_replace(project_path(), '', $this->addon_path), 'status' => is_readable($this->addon_path)];
$data['dir']['is_write'][] = ['dir' => str_replace(project_path(), '', $to_admin_dir), 'status' => is_dir($to_admin_dir) ? is_write($to_admin_dir) : mkdir($to_admin_dir, 0777, true)];
$data['dir']['is_write'][] = ['dir' => str_replace(project_path(), '', $to_web_dir), 'status' => is_dir($to_web_dir) ? is_write($to_web_dir) : mkdir($to_web_dir, 0777, true)];
@ -138,7 +126,8 @@ class CoreAddonInstallService extends CoreAddonBaseService
$data['dir']['is_write'][] = ['dir' => str_replace(project_path(), '', $to_resource_dir), 'status' => is_dir($to_resource_dir) ? is_write($to_resource_dir) : mkdir($to_resource_dir, 0777, true)];
// 校验niucloud/public下 wap web admin 目录及文件是否可读可写
$check_res = checkDirPermissions(public_path() . 'wap');
$check_res = checkDirPermissions($this->addon_path);
$check_res = array_merge2($check_res, checkDirPermissions(public_path() . 'wap'));
$check_res = array_merge2($check_res, checkDirPermissions(public_path() . 'admin'));
$check_res = array_merge2($check_res, checkDirPermissions(public_path() . 'web'));
@ -153,13 +142,65 @@ class CoreAddonInstallService extends CoreAddonBaseService
}
}
$check_res = array_merge(
array_column($data['dir']['is_readable'], 'status'),
array_column($data['dir']['is_write'], 'status')
);
// 检测插件
$framework_version = config('version.version');
$framework_version_arr = explode('.', $framework_version);
$data['addon_check'] = [];
foreach ($this->addon_list as $addon) {
$install_data = $this->getAddonConfig($addon);
if (empty($install_data)) {
$data['addon_check'][] = [
'msg' => "未找到插件{$addon}的info.json文件",
'status' => false
];
continue;
}
$core_addon_service = new CoreAddonService();
if (!empty($core_addon_service->getInfoByKey($addon))) {
$data['addon_check'][] = [
'msg' => $install_data['title'] . '插件已安装,不能重复安装',
'status' => false
];
continue;
}
if (isset($install_data['support_app']) && !empty($install_data['support_app']) &&
empty($core_addon_service->getInfoByKey($install_data['support_app'])) && !in_array($install_data['support_app'], $this->addon_list)) {
$support_app_data = $this->getAddonConfig($install_data['support_app']);
$data['addon_check'][] = [
'msg' => $install_data['title'] . '插件的主应用'. (empty($support_app_data) ? $install_data['support_app'] : $support_app_data['title']) .'插件还未安装,请先安装主应用',
'status' => false
];
continue;
}
if (!isset($install_data['support_version']) || empty($install_data['support_version'])) {
$data['addon_check'][] = [
'msg' => $install_data['title'] . '插件的info.json文件中未检测到匹配框架当前版本['. $framework_version_arr[0].'.'.$framework_version_arr[1] .'.*]的信息无法安装,<a style="text-decoration: underline;" href="https://www.kancloud.cn/niucloud/niucloud-admin-develop/3244512" target="blank">点击查看相关手册</a>',
'status' => false
];
continue;
}
$support_framework_arr = explode('.', $install_data['support_version']);
if ($framework_version_arr[0].$framework_version_arr[1] != $support_framework_arr[0].$support_framework_arr[1]) {
if ((float) "$support_framework_arr[0].$support_framework_arr[1]" < (float) "$framework_version_arr[0].$framework_version_arr[1]") {
$data['addon_check'][] = [
'msg' => $install_data['title'] . '插件的info.json文件中检测到支持的框架版本['. $install_data['support_version'] .']低于当前框架版本['. $framework_version_arr[0].'.'.$framework_version_arr[1] .'.*]无法安装,<a style="text-decoration: underline;" href="https://www.kancloud.cn/niucloud/niucloud-admin-develop/3244512" target="blank">点击查看相关手册</a>',
'status' => false
];
}
}
}
// 是否通过校验
$data['is_pass'] = !in_array(false, $check_res);
$data['is_pass'] = !in_array(false, array_merge(
array_column($data['dir']['is_readable'], 'status'),
array_column($data['dir']['is_write'], 'status'),
array_column($data['addon_check'], 'status')
));
$data['file_permission_is_pass'] = !in_array(false, array_merge(
array_column($data['dir']['is_readable'], 'status'),
array_column($data['dir']['is_write'], 'status'),
));
Cache::set($this->cache_key . '_install_check', $data['is_pass']);
return $data;
}
@ -170,58 +211,34 @@ class CoreAddonInstallService extends CoreAddonBaseService
*/
public function install(string $mode = 'local')
{
$core_addon_service = new CoreAddonService();
if (!empty($core_addon_service->getInfoByKey($this->addon))) throw new AddonException('REPEAT_INSTALL');
$install_data = $this->getAddonConfig($this->addon);
if (empty($install_data)) throw new AddonException('ADDON_INFO_FILE_NOT_EXIST');
$framework_version = config('version.version');
$framework_version_arr = explode('.', $framework_version);
// 检测框架版本是否支持
if (!isset($install_data['support_version']) || empty($install_data['support_version']))
throw new AddonException('您要安装的插件或应用的info.json文件中未检测到匹配框架当前版本['. $framework_version_arr[0].'.'.$framework_version_arr[1] .'.*]的信息无法安装,<a style="text-decoration: underline;" href="https://www.kancloud.cn/niucloud/niucloud-admin-develop/3244512" target="blank">点击查看相关手册</a>');
$support_framework_arr = explode('.', $install_data['support_version']);
if ($framework_version_arr[0].$framework_version_arr[1] != $support_framework_arr[0].$support_framework_arr[1]) {
if ((float) "$support_framework_arr[0].$support_framework_arr[1]" < (float) "$framework_version_arr[0].$framework_version_arr[1]") {
throw new AddonException('您要安装的插件或应用的info.json文件中检测到支持的框架版本['. $install_data['support_version'] .']低于当前框架版本['. $framework_version_arr[0].'.'.$framework_version_arr[1] .'.*]无法安装,<a style="text-decoration: underline;" href="https://www.kancloud.cn/niucloud/niucloud-admin-develop/3244512" target="blank">点击查看相关手册</a>');
}
}
$check_res = Cache::get($this->cache_key . '_install_check');
if (!$check_res) throw new CommonException('INSTALL_CHECK_NOT_PASS');
if ($this->install_task) throw new CommonException('ADDON_INSTALLING');
$this->install_task = [ 'mode' => $mode, 'addon' => $this->addon, 'step' => [], 'timestamp' => time() ];
$this->install_task = [ 'mode' => $mode, 'addon' => $this->addon, 'addon_list' => $this->addon_list, 'step' => [], 'fail_addon' => [], 'timestamp' => time() ];
Cache::set('install_task', $this->install_task);
set_time_limit(0);
$install_step = ['installDir','installWap','installDepend'];
// 备份前端目录
$this->backupFrontend();
if (!empty($install_data['compile']) || $mode == 'cloud') {
// 备份前端目录
$install_step[] = 'backupFrontend';
}
$tips = [];
if ($mode != 'cloud') $tips[] = get_lang('dict_addon.install_after_update');
// 检测插件是否存在编译内容
if (!empty($install_data['compile'])) {
$install_step[] = 'coverCompile';
}
foreach ($this->addon_list as $addon) {
$this->install_task['addon'] = $addon;
Cache::set('install_task', $this->install_task);
if ($mode == 'cloud') {
$install_step[] = 'cloudInstall';
} else {
$install_step[] = 'handleAddonInstall';
}
$this->addon = $addon;
$this->install_addon_path = $this->addon_path . $this->addon . DIRECTORY_SEPARATOR;
$install_data = $this->getAddonConfig($addon);
try {
foreach ($install_step as $step) {
$this->install_task['step'][] = $step;
$this->$step();
if ($step != 'handleAddonInstall') Cache::set('install_task', $this->install_task);
$install_step = ['installDir','installDepend'];
// 检测插件是否存在编译内容
if (!empty($install_data['compile'])) {
$install_step[] = 'coverCompile';
}
if ($mode != 'cloud') {
@ -233,41 +250,57 @@ class CoreAddonInstallService extends CoreAddonBaseService
return str_replace($package_path . DIRECTORY_SEPARATOR, '', $file);
}, $package_file);
$tips = [get_lang('dict_addon.install_after_update')];
if (in_array('admin-package.json', $package_file)) $tips[] = get_lang('dict_addon.install_after_admin_update');
if (in_array('composer.json', $package_file)) $tips[] = get_lang('dict_addon.install_after_composer_update');
if (in_array('uni-app-package.json', $package_file)) $tips[] = get_lang('dict_addon.install_after_wap_update');
if (in_array('web-package.json', $package_file)) $tips[] = get_lang('dict_addon.install_after_web_update');
return $tips;
if (in_array('admin-package.json', $package_file) && !in_array(get_lang('dict_addon.install_after_admin_update'), $tips)) $tips[] = get_lang('dict_addon.install_after_admin_update');
if (in_array('composer.json', $package_file) && !in_array(get_lang('dict_addon.install_after_composer_update'), $tips)) $tips[] = get_lang('dict_addon.install_after_composer_update');
if (in_array('uni-app-package.json', $package_file) && !in_array(get_lang('dict_addon.install_after_wap_update'), $tips)) $tips[] = get_lang('dict_addon.install_after_wap_update');
if (in_array('web-package.json', $package_file) && !in_array(get_lang('dict_addon.install_after_web_update'), $tips) ) $tips[] = get_lang('dict_addon.install_after_web_update');
}
try {
$this->install_task['step'] = [];
foreach ($install_step as $step) {
$this->install_task['step'][] = $step;
Cache::set('install_task', $this->install_task);
$this->$step();
}
} catch (\Exception $e) {
$this->install_task['fail_addon'] = $this->addon;
$this->installExceptionHandle($addon);
if (count($this->addon_list) == 1) {
throw new CommonException($e->getMessage());
}
Log::write($install_data['title'] . '插件安装失败');
Log::write($e->getTrace());
$tips[] = $install_data['title'] . '插件安装失败';
}
return true;
} catch (\Exception $e) {
Cache::set('install_task', $this->install_task);
$this->installExceptionHandle();
throw new CommonException($e->getMessage());
}
$this->installWap();
if ($mode == 'cloud') {
$this->install_task['tips'] = $tips;
Cache::set('install_task', $this->install_task);
$this->cloudInstall();
} else {
$this->handleAddonInstall();
}
return empty($tips) ? true : $tips;
}
/**
* 安装异常处理
* @return void
*/
public function installExceptionHandle() {
public function installExceptionHandle($name = '') {
$install_task = Cache::get('install_task');
if (in_array('installDir', $install_task['step'])) {
foreach ($this->addon_list as $addon) {
if (!empty($name) && $name != $addon) continue;
@$this->uninstallDir();
}
if (in_array('installWap', $install_task['step'])) {
@$this->uninstallWap();
}
if (in_array('backupFrontend', $install_task['step'])) {
@$this->revertFrontendBackup();
}
Cache::set('install_task', null);
@$this->revertFrontendBackup();
}
/**
@ -275,7 +308,10 @@ class CoreAddonInstallService extends CoreAddonBaseService
* @return void
*/
public function cancleInstall() {
if (Cache::get('install_task')) $this->installExceptionHandle();
if (Cache::get('install_task')) {
$this->installExceptionHandle();
Cache::set('install_task', null);
}
}
/**
@ -411,25 +447,37 @@ class CoreAddonInstallService extends CoreAddonBaseService
*/
public function handleAddonInstall()
{
// 执行安装sql
$this->installSql();
// 安装菜单
$this->installMenu();
// 安装计划任务
$this->installSchedule();
$core_addon_service = new CoreAddonService();
$install_data = $this->getAddonConfig($this->addon);
$install_data['icon'] = 'addon/' . $this->addon . '/icon.png';
$core_addon_service->set($install_data);
$fail_addon = $this->install_task['fail_addon'] ?? [];
foreach ($this->addon_list as $addon) {
if (in_array($addon, $fail_addon)) continue;
$this->addon = $addon;
$this->install_addon_path = $this->addon_path . $this->addon . DIRECTORY_SEPARATOR;
// 执行安装sql
$this->installSql();
// 安装菜单
$this->installMenu();
// 安装计划任务
$this->installSchedule();
$install_data = $this->getAddonConfig($this->addon);
$install_data['icon'] = 'addon/' . $this->addon . '/icon.png';
$core_addon_service->set($install_data);
//执行插件安装方法
$class = "addon\\" . $this->addon . "\\" . 'Addon';
if (class_exists($class)) {
(new $class())->install();
}
}
//清理缓存
Cache::tag(self::$cache_tag_name)->clear();
//执行命令
//执行插件安装方法
$class = "addon\\" . $this->addon . "\\" . 'Addon';
if (class_exists($class)) {
(new $class())->install();
}
// 清除插件安装中标识
Cache::delete('install_task');
Cache::delete($this->cache_key . '_install_check');
@ -691,13 +739,13 @@ class CoreAddonInstallService extends CoreAddonBaseService
{
// 编译 diy-group 自定义组件代码文件
$this->compileDiyComponentsCode($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR, $this->addon);
$this->compileDiyComponentsCode($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR, $this->addon_list);
// 编译 pages.json 页面路由代码文件
$this->installPageCode($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR);
$this->installPageCode($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR, $this->addon_list);
// 编译 加载插件标题语言包
$this->compileLocale($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR, $this->addon);
$this->compileLocale($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR, $this->addon_list);
}

View File

@ -83,7 +83,12 @@ trait WapTrait
}
}
if (!empty($addon)) {
$addon_arr[] = $addon; // 追加新装插件
// 追加新装插件
if (is_array($addon)) {
$addon_arr = array_merge($addon_arr, $addon);
} else if (is_string($addon)) {
$addon_arr[] = $addon;
}
}
$addon_arr = array_unique($addon_arr);
@ -122,7 +127,7 @@ trait WapTrait
$content .= " </view>\n";
$content .= " </template>\n";
$content .= " <template v-if=\"diyStore.mode == '' && data.global && diyGroup.showCopyright.value && data.global.copyright && data.global.copyright.isShow\">\n";
$content .= " <copy-right />\n";
$content .= " <copy-right :textColor=\"data.global.copyright.textColor\" />\n";
$content .= " </template>\n\n";
$content .= " <template v-if=\"diyStore.mode == '' && data.global && data.global.bottomTabBar && data.global.bottomTabBar.isShow\">\n";
$content .= " <view class=\"pt-[20rpx]\"></view>\n";
@ -184,7 +189,7 @@ trait WapTrait
* @param $compile_path
* @return bool|int|void
*/
public function installPageCode($compile_path)
public function installPageCode($compile_path, $addon = '')
{
if (!file_exists($this->geAddonPackagePath($this->addon) . 'uni-app-pages.php')) return;
@ -195,7 +200,25 @@ trait WapTrait
}
$pages = [];
$addon_arr = array_unique(array_merge([ $this->addon ], array_column(( new CoreAddonService() )->getInstallAddonList(), 'key')));
$addon_service = new CoreAddonService();
$addon_list = $addon_service->getInstallAddonList();
$addon_arr = [];
if (!empty($addon_list)) {
foreach ($addon_list as $k => $v) {
$addon_arr[] = $v[ 'key' ];
}
}
if (!empty($addon)) {
// 追加新装插件
if (is_array($addon)) {
$addon_arr = array_merge($addon_arr, $addon);
} else if (is_string($addon)) {
$addon_arr[] = $addon;
}
}
$addon_arr = array_unique($addon_arr);
foreach ($addon_arr as $addon) {
if (!file_exists($this->geAddonPackagePath($addon) . 'uni-app-pages.php')) continue;
$uniapp_pages = require $this->geAddonPackagePath($addon) . 'uni-app-pages.php';
@ -284,8 +307,16 @@ trait WapTrait
$json = json_decode($app_json, true);
// 清空当前安装/卸载的插件语言包
foreach ($json as $jk => $jc) {
if (strpos($jk, $addon) !== false) {
unset($json[ $jk ]);
if (is_array($addon)) {
foreach ($addon as $key) {
if (strpos($jk, $key) !== false) {
unset($json[ $jk ]);
}
}
} else {
if (strpos($jk, $addon) !== false) {
unset($json[ $jk ]);
}
}
}
$locale_data[ $cv ] = [
@ -305,8 +336,16 @@ trait WapTrait
$addon_arr[] = $v[ 'key' ];
}
}
$addon_arr[] = $addon; // 追加新装插件
if (!empty($addon)) {
// 追加新装插件
if (is_array($addon)) {
$addon_arr = array_merge($addon_arr, $addon);
} else if (is_string($addon)) {
$addon_arr[] = $addon;
}
}
$addon_arr = array_unique($addon_arr);
foreach ($addon_arr as $k => $v) {
$addon_path = $compile_path . str_replace('/', DIRECTORY_SEPARATOR, 'addon/' . $v . '/locale'); // 插件语言包根目录
$addon_file_arr = getFileMap($addon_path, []);

View File

@ -432,4 +432,4 @@ class CoreMemberCashOutService extends BaseCoreService
$this->giveback($site_id, $cash_out);
return true;
}
}
}

View File

@ -131,7 +131,6 @@ class CorePosterService extends BaseCoreService
$condition[] = ['is_default', '=', 1];
}
$poster = (new Poster())->where($condition)->findOrEmpty();
try {
if ($poster->isEmpty()) {
@ -146,7 +145,6 @@ class CorePosterService extends BaseCoreService
}
if (empty($poster)) throw new CommonException('海报模板不存在');
$poster_data = [];
$poster_data_arr = array_values(array_filter(event('GetPosterData', [
'type' => $type,
@ -154,7 +152,6 @@ class CorePosterService extends BaseCoreService
'param' => $param,
'channel' => $channel
])));
// 合并模版数据
foreach ($poster_data_arr as $k => $v) {
$poster_data = array_merge($poster_data, $v);

View File

@ -155,10 +155,10 @@ class CoreWeappService extends BaseCoreService
$result = CoreOplatformService::weappVersion($site_id);
if (isset($result['errcode']) && $result['errcode'] != 0) throw new CommonException($result['errmsg']);
return [
"release_version" => $result['release_info']['release_version'],
"release_time" => date('Y-m-d H:i:s', $result['release_info']['release_time']),
"exp_version" => $result['exp_info']['exp_version'] ?? '',
"exp_time" => !empty($result['exp_info']['exp_time']) ? date('Y-m-d H:i:s', $result['exp_info']['exp_time']) : '',
"release_version" => !empty($result['release_info']) ? $result['release_info']['release_version'] : '',
"release_time" => !empty($result['release_info']) ? date('Y-m-d H:i:s', $result['release_info']['release_time']) : '',
"exp_version" => !empty($result['exp_info']) ? ($result['exp_info']['exp_version'] ?? '') : '',
"exp_time" => !empty($result['exp_info']) ? date('Y-m-d H:i:s', $result['exp_info']['exp_time']) : '',
];
}
return [];

View File

@ -17,6 +17,7 @@ use EasyWeChat\Kernel\Exceptions\InvalidConfigException;
use EasyWeChat\Kernel\Support\Collection;
use GuzzleHttp\Exception\GuzzleException;
use Psr\Http\Message\ResponseInterface;
use think\facade\Log;
/**
* 微信小程序服务提供
@ -39,12 +40,13 @@ class CoreWeappTemplateService extends BaseCoreService
*/
public function send(int $site_id, string $template_id, string $touser, array $data, string $page = ''){
$api = CoreWeappService::appApiClient($site_id);
$api->postJson('cgi-bin/message/subscribe/send', [
$res = $api->postJson('cgi-bin/message/subscribe/send', [
'template_id' => $template_id, // 所需下发的订阅模板id
'touser' => $touser, // 接收者(用户)的 openid
'page' => $page, // 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,示例index?foo=bar。该字段不填则模板无跳转。
'data' => $data,
]);
Log::write('小程序消息发送RESPONSE'.json_encode($res->toArray(),256));
}
/**

View File

@ -43,7 +43,8 @@ class CoreWechatConfigService extends BaseCoreService
'token' => $info[ 'token' ] ?? '',
'encoding_aes_key' => $info[ 'encoding_aes_key' ] ?? '',
'encryption_type' => $info[ 'encryption_type' ] ?? 'not_encrypt',//加解密模式 not_encrypt 明文 compatible 兼容 safe 安全
'is_authorization' => $info[ 'is_authorization' ] ?? 0
'is_authorization' => $info[ 'is_authorization' ] ?? 0,
'base_uri' => $info['base_uri'] ?? ''
];
}

View File

@ -51,6 +51,7 @@ class CoreWechatService extends BaseCoreService
'retry' => true, // 使用默认重试配置
]
);
if (isset($wechat_config['base_uri']) && !empty($wechat_config['base_uri'])) $config['http']['base_uri'] = $wechat_config['base_uri'];
return new Application($config);
}
}

View File

@ -44,7 +44,7 @@ class CoreOplatformService extends BaseCoreService
'token' => $oplatform_config['token'],
'aes_key' => $oplatform_config['aes_key'],// 明文模式请勿填写 EncodingAESKey
'http' => [
'timeout' => 5.0,
'timeout' => 10,//若返回不及时会导致接口返回报错 9402205 (猜测)
'retry' => true, // 使用默认重试配置
]
);

View File

@ -0,0 +1,73 @@
<?php
namespace app\upgrade\v119;
use app\model\diy\Diy;
use app\model\diy_form\DiyForm;
class Upgrade
{
public function handle()
{
$this->handleDiyData();
$this->handleDiyFormData();
}
/**
* 处理自定义数据
* @return void
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
private function handleDiyData()
{
$diy_model = new Diy();
$where = [
['value', '<>', ''],
];
$field = 'id,value';
$list = $diy_model->where($where)->field($field)->select()->toArray();
if (!empty($list)) {
foreach ($list as $k => $v) {
$diy_data = json_decode($v['value'], true);
$diy_data['global']['copyright']['textColor'] = '#ccc';
$diy_data = json_encode($diy_data);
$diy_model->where([['id', '=', $v['id']]])->update(['value' => $diy_data]);
}
}
}
/**
* 处理万能表单数据
* @return void
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
private function handleDiyFormData()
{
$diy_form_model = new DiyForm();
$where = [
['value', '<>', '']
];
$field = 'form_id,value';
$list = $diy_form_model->where($where)->field($field)->select()->toArray();
if (!empty($list)) {
foreach ($list as $k => $v) {
$diy_data = $v['value'];
if (!isset($diy_data['global']['copyright']['textColor'])) {
$diy_data['global']['copyright']['textColor'] = '#ccc';
}
$diy_form_model->where([['form_id', '=', $v['form_id']]])->update(['value' => $diy_data]);
}
}
}
}

View File

View File

@ -1,6 +1,6 @@
<?php
return [
'version' => '1.1.8',
'code' => '202510300001'
'version' => '1.1.9',
'code' => '202511110001'
];

View File

@ -181,4 +181,4 @@ class Poster extends BasePoster
}
return $content_list;
}
}
}

View File

@ -0,0 +1,840 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\service\core\addon;
use app\model\site\Site;
use app\model\site\SiteGroup;
use app\service\admin\sys\MenuService;
use app\service\core\menu\CoreMenuService;
use app\service\core\schedule\CoreScheduleInstallService;
use core\exception\AddonException;
use core\exception\CommonException;
use core\util\Terminal;
use think\db\exception\DbException;
use think\db\exception\PDOException;
use think\facade\Cache;
use think\facade\Db;
use think\facade\Log;
/**
* 安装服务层
* Class CoreInstallService
* @package app\service\core\install
*/
class CoreAddonInstallService extends CoreAddonBaseService
{
use WapTrait;
public static $instance;
/**
* 需要迁移的文件,用于检测是否冲突
* @var array[]
*/
public $install_files = [
'admin' => [],
'web' => [],
'wap' => [],
];
private $files = [
'niucloud' => [],
'admin' => [],
'web' => [],
'wap' => [],
'resource' => []
];
private $flow_path = [
'file',
'sql',
'menu',
'diy'
];
private $addon;
private $install_addon_path;
private $cache_key = '';
private $install_task = null;
private $addon_list = [];
public function __construct($addon)
{
parent::__construct();
$this->addon_list = explode(',', $addon);
$this->addon = $this->addon_list[0];
$this->install_addon_path = $this->addon_path . $this->addon . DIRECTORY_SEPARATOR;
$this->cache_key = "install_{$addon}";
$this->install_task = Cache::get('install_task');
}
/**
* 初始化实例
* @param string $addon
* @return static
*/
public static function instance(string $addon)
{
if (is_null(self::$instance)) {
self::$instance = new static($addon);
}
return self::$instance;
}
/**
* 安装前检测
* @return array
*/
public function installCheck()
{
// 放入的文件
$to_admin_dir = $this->root_path . 'admin' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'addon'. DIRECTORY_SEPARATOR;
$to_web_dir = $this->root_path . 'web' . DIRECTORY_SEPARATOR;
$to_wap_dir = $this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'addon'. DIRECTORY_SEPARATOR;
$to_resource_dir = public_path() . 'addon' . DIRECTORY_SEPARATOR;
if (!is_dir($this->root_path . 'admin' . DIRECTORY_SEPARATOR)) throw new CommonException('ADMIN_DIR_NOT_EXIST');
if (!is_dir($this->root_path . 'web' . DIRECTORY_SEPARATOR)) throw new CommonException('WEB_DIR_NOT_EXIST');
if (!is_dir($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR)) throw new CommonException('UNIAPP_DIR_NOT_EXIST');
$data = [
// 目录检测
'dir' => [
// 要求可读权限
'is_readable' => [],
// 要求可写权限
'is_write' => []
]
];
if (is_dir($this->addon_path)) $data['dir']['is_readable'][] = ['dir' => str_replace(project_path(), '', $this->addon_path), 'status' => is_readable($this->addon_path)];
$data['dir']['is_write'][] = ['dir' => str_replace(project_path(), '', $to_admin_dir), 'status' => is_dir($to_admin_dir) ? is_write($to_admin_dir) : mkdir($to_admin_dir, 0777, true)];
$data['dir']['is_write'][] = ['dir' => str_replace(project_path(), '', $to_web_dir), 'status' => is_dir($to_web_dir) ? is_write($to_web_dir) : mkdir($to_web_dir, 0777, true)];
$data['dir']['is_write'][] = ['dir' => str_replace(project_path(), '', $to_wap_dir), 'status' => is_dir($to_wap_dir) ? is_write($to_wap_dir) : mkdir($to_wap_dir, 0777, true)];
$data['dir']['is_write'][] = ['dir' => str_replace(project_path(), '', $to_resource_dir), 'status' => is_dir($to_resource_dir) ? is_write($to_resource_dir) : mkdir($to_resource_dir, 0777, true)];
// 校验niucloud/public下 wap web admin 目录及文件是否可读可写
$check_res = checkDirPermissions($this->addon_path);
$check_res = array_merge2($check_res, checkDirPermissions(public_path() . 'wap'));
$check_res = array_merge2($check_res, checkDirPermissions(public_path() . 'admin'));
$check_res = array_merge2($check_res, checkDirPermissions(public_path() . 'web'));
if (!empty($check_res['unreadable'])) {
foreach ($check_res['unreadable'] as $item) {
$data['dir']['is_readable'][] = ['dir' => str_replace(project_path(), '', $item),'status' => false];
}
}
if (!empty($check_res['not_writable'])) {
foreach ($check_res['not_writable'] as $item) {
$data['dir']['is_write'][] = ['dir' => str_replace(project_path(), '', $item),'status' => false];
}
}
// 检测插件
$framework_version = config('version.version');
$framework_version_arr = explode('.', $framework_version);
$data['addon_check'] = [];
foreach ($this->addon_list as $addon) {
$install_data = $this->getAddonConfig($addon);
if (empty($install_data)) {
$data['addon_check'][] = [
'msg' => "未找到插件{$addon}的info.json文件",
'status' => false
];
continue;
}
$core_addon_service = new CoreAddonService();
if (!empty($core_addon_service->getInfoByKey($addon))) {
$data['addon_check'][] = [
'msg' => $install_data['title'] . '插件已安装,不能重复安装',
'status' => false
];
continue;
}
if (isset($install_data['support_app']) && !empty($install_data['support_app']) &&
empty($core_addon_service->getInfoByKey($install_data['support_app'])) && !in_array($install_data['support_app'], $this->addon_list)) {
$support_app_data = $this->getAddonConfig($install_data['support_app']);
$data['addon_check'][] = [
'msg' => $install_data['title'] . '插件的主应用'. (empty($support_app_data) ? $install_data['support_app'] : $support_app_data['title']) .'插件还未安装,请先安装主应用',
'status' => false
];
continue;
}
if (!isset($install_data['support_version']) || empty($install_data['support_version'])) {
$data['addon_check'][] = [
'msg' => $install_data['title'] . '插件的info.json文件中未检测到匹配框架当前版本['. $framework_version_arr[0].'.'.$framework_version_arr[1] .'.*]的信息无法安装,<a style="text-decoration: underline;" href="https://www.kancloud.cn/niucloud/niucloud-admin-develop/3244512" target="blank">点击查看相关手册</a>',
'status' => false
];
continue;
}
$support_framework_arr = explode('.', $install_data['support_version']);
if ($framework_version_arr[0].$framework_version_arr[1] != $support_framework_arr[0].$support_framework_arr[1]) {
if ((float) "$support_framework_arr[0].$support_framework_arr[1]" < (float) "$framework_version_arr[0].$framework_version_arr[1]") {
$data['addon_check'][] = [
'msg' => $install_data['title'] . '插件的info.json文件中检测到支持的框架版本['. $install_data['support_version'] .']低于当前框架版本['. $framework_version_arr[0].'.'.$framework_version_arr[1] .'.*]无法安装,<a style="text-decoration: underline;" href="https://www.kancloud.cn/niucloud/niucloud-admin-develop/3244512" target="blank">点击查看相关手册</a>',
'status' => false
];
}
}
}
// 是否通过校验
$data['is_pass'] = !in_array(false, array_merge(
array_column($data['dir']['is_readable'], 'status'),
array_column($data['dir']['is_write'], 'status'),
array_column($data['addon_check'], 'status')
));
$data['file_permission_is_pass'] = !in_array(false, array_merge(
array_column($data['dir']['is_readable'], 'status'),
array_column($data['dir']['is_write'], 'status'),
));
Cache::set($this->cache_key . '_install_check', $data['is_pass']);
return $data;
}
/**
* 插件安装
* @return true
*/
public function install(string $mode = 'local')
{
$check_res = Cache::get($this->cache_key . '_install_check');
if (!$check_res) throw new CommonException('INSTALL_CHECK_NOT_PASS');
if ($this->install_task) throw new CommonException('ADDON_INSTALLING');
$this->install_task = [ 'mode' => $mode, 'addon' => $this->addon, 'addon_list' => $this->addon_list, 'step' => [], 'fail_addon' => [], 'timestamp' => time() ];
Cache::set('install_task', $this->install_task);
set_time_limit(0);
// 备份前端目录
$this->backupFrontend();
$tips = [];
if ($mode != 'cloud') $tips[] = get_lang('dict_addon.install_after_update');
foreach ($this->addon_list as $addon) {
$this->install_task['addon'] = $addon;
Cache::set('install_task', $this->install_task);
$this->addon = $addon;
$this->install_addon_path = $this->addon_path . $this->addon . DIRECTORY_SEPARATOR;
$install_data = $this->getAddonConfig($addon);
$install_step = ['installDir','installDepend'];
// 检测插件是否存在编译内容
if (!empty($install_data['compile'])) {
$install_step[] = 'coverCompile';
}
if ($mode != 'cloud') {
// 配置文件
$package_path = $this->install_addon_path . 'package' . DIRECTORY_SEPARATOR;
$package_file = [];
search_dir($package_path, $package_file);
$package_file = array_map(function ($file) use ($package_path) {
return str_replace($package_path . DIRECTORY_SEPARATOR, '', $file);
}, $package_file);
if (in_array('admin-package.json', $package_file) && !in_array(get_lang('dict_addon.install_after_admin_update'), $tips)) $tips[] = get_lang('dict_addon.install_after_admin_update');
if (in_array('composer.json', $package_file) && !in_array(get_lang('dict_addon.install_after_composer_update'), $tips)) $tips[] = get_lang('dict_addon.install_after_composer_update');
if (in_array('uni-app-package.json', $package_file) && !in_array(get_lang('dict_addon.install_after_wap_update'), $tips)) $tips[] = get_lang('dict_addon.install_after_wap_update');
if (in_array('web-package.json', $package_file) && !in_array(get_lang('dict_addon.install_after_web_update'), $tips) ) $tips[] = get_lang('dict_addon.install_after_web_update');
}
try {
$this->install_task['step'] = [];
foreach ($install_step as $step) {
$this->install_task['step'][] = $step;
Cache::set('install_task', $this->install_task);
$this->$step();
}
} catch (\Exception $e) {
$this->install_task['fail_addon'] = $this->addon;
$this->installExceptionHandle($addon);
if (count($this->addon_list) == 1) {
throw new CommonException($e->getMessage());
}
Log::write($install_data['title'] . '插件安装失败');
Log::write($e->getTrace());
$tips[] = $install_data['title'] . '插件安装失败';
}
}
$this->installWap();
if ($mode == 'cloud') {
$this->install_task['tips'] = $tips;
Cache::set('install_task', $this->install_task);
$this->cloudInstall();
} else {
$this->handleAddonInstall();
}
return empty($tips) ? true : $tips;
}
/**
* 安装异常处理
* @return void
*/
public function installExceptionHandle($name = '') {
$install_task = Cache::get('install_task');
foreach ($this->addon_list as $addon) {
if (!empty($name) && $name != $addon) continue;
@$this->uninstallDir();
@$this->uninstallWap();
}
@$this->revertFrontendBackup();
}
/**
* 取消安装任务
* @return void
*/
public function cancleInstall() {
if (Cache::get('install_task')) {
$this->installExceptionHandle();
Cache::set('install_task', null);
}
}
/**
* 获取安装任务
* @return mixed
*/
public function getInstallTask() {
return $this->install_task;
}
/**
* 安装迁移复制文件
* @return bool
*/
public function installDir()
{
$from_admin_dir = $this->install_addon_path . 'admin' . DIRECTORY_SEPARATOR;
$from_web_dir = $this->install_addon_path . 'web' . DIRECTORY_SEPARATOR;
$from_wap_dir = $this->install_addon_path . 'uni-app' . DIRECTORY_SEPARATOR;
$from_resource_dir = $this->install_addon_path . 'resource' . DIRECTORY_SEPARATOR;
// 放入的文件
$to_admin_dir = $this->root_path . 'admin' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'addon' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
$to_web_dir = $this->root_path . 'web' . DIRECTORY_SEPARATOR . 'addon' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
$to_wap_dir = $this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'addon' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
$to_resource_dir = public_path() . 'addon' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
// 安装admin管理端
if (file_exists($from_admin_dir)) {
dir_copy($from_admin_dir, $to_admin_dir, $this->files['admin'], exclude_dirs:['icon']);
// 判断图标目录是否存在
if (is_dir($from_admin_dir . 'icon')) {
$addon_icon_dir = $this->root_path . 'admin' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'styles' . DIRECTORY_SEPARATOR . 'icon' . DIRECTORY_SEPARATOR . 'addon' . DIRECTORY_SEPARATOR . $this->addon;
dir_copy($from_admin_dir . 'icon', $addon_icon_dir);
}
// 编译后台图标库文件
$this->compileAdminIcon();
}
// 安装电脑端
if (file_exists($from_web_dir)) {
// 安装布局文件
$layout = $from_web_dir . 'layouts';
if (is_dir($layout)) {
dir_copy($layout, $this->root_path . 'web' . DIRECTORY_SEPARATOR . 'layouts');
del_target_dir($layout, true);
}
dir_copy($from_web_dir, $to_web_dir, $this->files['web']);
}
// 安装手机端
if (file_exists($from_wap_dir)) {
dir_copy($from_wap_dir, $to_wap_dir, $this->files['wap']);
}
//安装资源文件
if (file_exists($from_resource_dir)) {
dir_copy($from_resource_dir, $to_resource_dir, $this->files['resource']);
}
return true;
}
/**
* 编译后台图标库文件
* 图标开发注意事项,不能占用 iconfont、icon 关键词(会跟系统图标冲突),建议增加业务前缀,比如 旅游业recharge
* @return bool
*/
public function compileAdminIcon()
{
$compile_path = $this->root_path . str_replace('/', DIRECTORY_SEPARATOR, 'admin/src/styles/icon/');
$content = "";
$root_path = $compile_path . 'addon'; // 插件图标根目录
$file_arr = getFileMap($root_path);
if (!empty($file_arr)) {
foreach ($file_arr as $ck => $cv) {
if (str_contains($cv, '.css')) {
$path = str_replace($root_path . '/', '', $ck);
$path = str_replace('/.css', '', $path);
$content .= "@import \"addon/{$path}\";\n";
}
}
}
file_put_contents($compile_path . 'addon-iconfont.css', $content);
return true;
}
public function installSql()
{
$sql = $this->install_addon_path . 'sql' . DIRECTORY_SEPARATOR . 'install.sql';
$this->executeSql($sql);
return true;
}
/**
* 执行sql
* @param string $sql_file
* @return bool
*/
public static function executeSql(string $sql_file): bool
{
if (is_file($sql_file)) {
$sql = file_get_contents($sql_file);
// 执行sql
$sql_arr = parse_sql($sql);
if (!empty($sql_arr)) {
$prefix = config('database.connections.mysql.prefix');
Db::startTrans();
try {
foreach ($sql_arr as $sql_line) {
$sql_line = trim($sql_line);
if (!empty($sql_line)) {
$sql_line = str_ireplace('{{prefix}}', $prefix, $sql_line);
$sql_line = str_ireplace('INSERT INTO ', 'INSERT IGNORE INTO ', $sql_line);
Db::execute($sql_line);
}
}
Db::commit();
return true;
} catch ( PDOException $e ) {
Db::rollback();
throw new AddonException($e->getMessage());
}
}
}
return true;
}
/**
* 执行插件install方法
* @return true
*/
public function handleAddonInstall()
{
$core_addon_service = new CoreAddonService();
$fail_addon = $this->install_task['fail_addon'] ?? [];
foreach ($this->addon_list as $addon) {
if (in_array($addon, $fail_addon)) continue;
$this->addon = $addon;
$this->install_addon_path = $this->addon_path . $this->addon . DIRECTORY_SEPARATOR;
// 执行安装sql
$this->installSql();
// 安装菜单
$this->installMenu();
// 安装计划任务
$this->installSchedule();
$install_data = $this->getAddonConfig($this->addon);
$install_data['icon'] = 'addon/' . $this->addon . '/icon.png';
$core_addon_service->set($install_data);
//执行插件安装方法
$class = "addon\\" . $this->addon . "\\" . 'Addon';
if (class_exists($class)) {
(new $class())->install();
}
}
//清理缓存
Cache::tag(self::$cache_tag_name)->clear();
// 清除插件安装中标识
Cache::delete('install_task');
Cache::delete($this->cache_key . '_install_check');
return true;
}
/**
* 合并依赖
* @return void
*/
public function installDepend()
{
(new CoreDependService())->installDepend($this->addon);
}
/**
* 备份前端页面
* @return void
*/
public function backupFrontend() {
$backup_dir = runtime_path() . 'backup' . DIRECTORY_SEPARATOR . 'frontend' . DIRECTORY_SEPARATOR;
if (is_dir($backup_dir)) del_target_dir($backup_dir, true);
foreach (['admin', 'wap', 'web'] as $port) {
$to_dir = public_path() . $port;
if (is_dir($to_dir)) {
if (is_dir($backup_dir . $port)) del_target_dir($backup_dir . $port, true);
// 备份原目录
dir_copy($to_dir, $backup_dir . $port);
}
}
}
/**
* 还原被覆盖前的文件
* @return void
*/
public function revertFrontendBackup() {
$backup_dir = runtime_path() . 'backup' . DIRECTORY_SEPARATOR . 'frontend' . DIRECTORY_SEPARATOR;
$backup_file = [];
search_dir($backup_dir, $backup_file);
if (!empty($backup_file)) {
dir_copy(public_path(), $backup_dir);
@del_target_dir($backup_dir, true);
}
}
/**
* 插件编译文件覆盖
* @return void
*/
public function coverCompile() {
$compile = $this->getAddonConfig($this->addon)['compile'];
foreach ($compile as $port) {
$to_dir = public_path() . $port;
$from_dir = $this->addon_path . 'compile' . DIRECTORY_SEPARATOR . $port;
if (is_dir($from_dir) && is_dir($to_dir)) {
// 删除后覆盖目录
del_target_dir($to_dir, true);
dir_copy($from_dir, $to_dir . $port);
}
}
}
/**
* 云安装
* @return void
*/
public function cloudInstall() {
(new CoreAddonCloudService())->cloudBuild($this->addon);
}
/**
* 插件卸载环境检测
* @return array|array[]
*/
public function uninstallCheck() {
$data = [
// 目录检测
'dir' => [
// 要求可读权限
'is_readable' => [],
// 要求可写权限
'is_write' => []
]
];
// 将要删除的根目录
$to_admin_dir = $this->root_path . 'admin' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
$to_web_dir = $this->root_path . 'web' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
$to_wap_dir = $this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
$to_resource_dir = public_path() . 'addon' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
if (is_dir($to_admin_dir)) $data['dir']['is_write'][] = ['dir' => str_replace(project_path(), '', $to_admin_dir), 'status' => is_write($to_admin_dir)];
if (is_dir($to_web_dir)) $data['dir']['is_write'][] = ['dir' => str_replace(project_path(), '', $to_web_dir), 'status' => is_write($to_web_dir)];
if (is_dir($to_wap_dir)) $data['dir']['is_write'][] = ['dir' => str_replace(project_path(), '', $to_wap_dir), 'status' => is_write($to_wap_dir)];
if (is_dir($to_resource_dir)) $data['dir']['is_write'][] = ['dir' => str_replace(project_path(), '', $to_resource_dir), 'status' => is_write($to_resource_dir)];
$check_res = array_merge(
array_column($data['dir']['is_readable'], 'status'),
array_column($data['dir']['is_write'], 'status')
);
// 是否通过校验
$data['is_pass'] = !in_array(false, $check_res);
return $data;
}
/**
* 卸载插件
* @return true
*/
public function uninstall()
{
$site_groups = (new SiteGroup())->where([ ['app|addon', 'like', "%\"$this->addon\"%"] ])->column("group_id");
if (!empty($site_groups)) {
$site_num = (new Site())->where([ ['group_id', 'in', $site_groups] ])->count('site_id');
if ($site_num) throw new CommonException('APP_NOT_ALLOW_UNINSTALL');
}
(new CoreAddonDevelopBuildService())->build($this->addon);
//执行插件卸载方法
$class = "addon\\" . $this->addon . "\\" . 'Addon';
if (class_exists($class)) {
(new $class())->uninstall();
}
$core_addon_service = new CoreAddonService();
$addon_info = $core_addon_service->getInfoByKey($this->addon);
if (empty($addon_info)) throw new AddonException('NOT_UNINSTALL');
if (!$this->uninstallSql()) throw new AddonException('ADDON_SQL_FAIL');
// 卸载菜单
$this->uninstallMenu();
// 卸载计划任务
$this->uninstallSchedule();
// 卸载wap
$this->uninstallWap();
// 还原备份
if (!empty($addon_info['compile'])) (new CoreAddonCompileHandleService())->revertBackup();
$core_addon_service = new CoreAddonService();
$core_addon_service->delByKey($this->addon);
//清理缓存
Cache::tag(self::$cache_tag_name)->clear();
return true;
}
/**
* 卸载数据库
* @return true
*/
public function uninstallSql()
{
$sql = $this->install_addon_path . 'sql' . DIRECTORY_SEPARATOR . 'uninstall.sql';
$this->executeSql($sql);
return true;
}
/**
* 卸载插件
* @return true
*/
public function uninstallDir()
{
// 将要删除的根目录
$to_admin_dir = $this->root_path . 'admin' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'addon' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
$to_web_dir = $this->root_path . 'web' . DIRECTORY_SEPARATOR . 'addon' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
$to_web_layouts = $this->root_path . 'web' . DIRECTORY_SEPARATOR . 'layouts' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
$to_wap_dir = $this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'addon' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
$to_resource_dir = public_path() . 'addon' . DIRECTORY_SEPARATOR . $this->addon . DIRECTORY_SEPARATOR;
// 卸载admin管理端
if (is_dir($to_admin_dir)) del_target_dir($to_admin_dir, true);
// 移除admin图标
$addon_icon_dir = $this->root_path . 'admin' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'styles' . DIRECTORY_SEPARATOR . 'icon' . DIRECTORY_SEPARATOR . 'addon' . DIRECTORY_SEPARATOR . $this->addon;
if (is_dir($addon_icon_dir)) del_target_dir($addon_icon_dir, true);
// 编译后台图标库文件
$this->compileAdminIcon();
// 卸载pc端
if (is_dir($to_web_dir)) del_target_dir($to_web_dir, true);
if (is_dir($to_web_layouts)) del_target_dir($to_web_layouts, true);
// 卸载手机端
if (is_dir($to_wap_dir)) del_target_dir($to_wap_dir, true);
//删除资源文件
if (is_dir($to_resource_dir)) del_target_dir($to_resource_dir, true);
//todo 卸载插件目录涉及到的空文件
return true;
}
/**
* 卸载菜单
* @return true
* @throws DbException
*/
public function uninstallMenu()
{
$core_menu_service = new CoreMenuService();
$core_menu_service->deleteByAddon($this->addon);
Cache::tag(MenuService::$cache_tag_name)->clear();
return true;
}
/**
* 卸载计划任务
* @return true
*/
public function uninstallSchedule()
{
(new CoreScheduleInstallService())->uninstallAddonSchedule($this->addon);
return true;
}
/**
* 卸载手机端
* @return void
*/
public function uninstallWap()
{
// 编译 diy-group 自定义组件代码文件
$this->compileDiyComponentsCode($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR, $this->addon);
// 编译 pages.json 页面路由代码文件
$this->uninstallPageCode($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR);
// 编译 加载插件标题语言包
$this->compileLocale($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR, $this->addon);
}
/**
* 安装插件菜单
* @return true
*/
public function installMenu()
{
(new CoreMenuService)->refreshAddonMenu($this->addon);
Cache::tag(MenuService::$cache_tag_name)->clear();
return true;
}
/**
* 安装手机端
* @return void
*/
public function installWap()
{
// 编译 diy-group 自定义组件代码文件
$this->compileDiyComponentsCode($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR, $this->addon_list);
// 编译 pages.json 页面路由代码文件
$this->installPageCode($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR, $this->addon_list);
// 编译 加载插件标题语言包
$this->compileLocale($this->root_path . 'uni-app' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR, $this->addon_list);
}
public function download()
{
}
public function edit()
{
}
/**
* 更新composer依赖
* @return true
*/
public function updateComposer()
{
$result = Terminal::execute(root_path(), 'composer update');
if ($result !== true) {
throw new CommonException($result);
}
return $result;
}
/**
* 更新admin端依赖
* @return true
*/
public function updateAdminDependencies()
{
$result = Terminal::execute(root_path() . '../admin/', 'npm install');
if ($result !== true) {
throw new CommonException($result);
}
return $result;
}
/**
* 更新手机端依赖
* @return true
*/
public function updateWapDependencies()
{
$result = Terminal::execute(root_path() . '../uni-app/', 'npm install');
if ($result !== true) {
throw new CommonException($result);
}
return $result;
}
/**
* 更新web端依赖
* @return true
*/
public function updateWebDependencies()
{
$result = Terminal::execute(root_path() . '../web/', 'npm install');
if ($result !== true) {
throw new CommonException($result);
}
return $result;
}
/**
* 安装完成 销毁插件实例
* @return true
*/
public function installComplete()
{
return true;
}
/**
* 安装计划任务
* @return true
*/
public function installSchedule()
{
(new CoreScheduleInstallService())->installAddonSchedule($this->addon);
return true;
}
/**
* 处理编译之后的文件
* @return true
*/
public function handleBuildFile() {
return true;
}
}

View File

@ -0,0 +1,401 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\service\core\addon;
/**
* 编译手机端文件
*/
trait WapTrait
{
// TODO 主题色调 theme
// TODO 图标库 iconfont
/**
* 编译 diy-group 自定义组件代码文件
* @param $compile_path
* @param $addon
* @return false|int
*/
public function compileDiyComponentsCode($compile_path, $addon)
{
$content = "<template>\n";
$content .= " <view class=\"diy-group\" id=\"componentList\">\n";
$content .= " <top-tabbar :scrollBool=\"diyGroup.componentsScrollBool.TopTabbar\" v-if=\"data.global && Object.keys(data.global).length && data.global.topStatusBar && data.global.topStatusBar.isShow\" ref=\"topTabbarRef\" :data=\"data.global\" />\n";
$content .= " <pop-ads v-if=\"data.global && Object.keys(data.global).length && data.global.popWindow && data.global.popWindow.show\" ref=\"popAbsRef\" :data=\"data.global\" />\n";
$content .= " <template v-for=\"(component, index) in data.value\" :key=\"component.id\">\n";
$content .= " <view v-show=\"component.componentIsShow\"\n";
$content .= " @click=\"diyStore.changeCurrentIndex(index, component)\"\n";
$content .= " :class=\"diyGroup.getComponentClass(index,component)\" :style=\"component.pageStyle\">\n";
$content .= " <view class=\"relative\" :style=\"{ marginTop : component.margin.top < 0 ? (component.margin.top * 2) + 'rpx' : '0', marginBottom : component.margin.bottom < 0 ? (component.margin.bottom * 2) + 'rpx' : '0' }\">\n";
$content .= " <!-- 装修模式下,设置负上边距后超出的内容,禁止选中设置 -->\n";
$content .= " <view v-if=\"diyGroup.isShowPlaceHolder(index,component)\" class=\"absolute w-full z-1\" :style=\"{ height : (component.margin.top * 2 * -1) + 'rpx' }\" @click.stop=\"diyGroup.placeholderEvent\"></view>\n";
$root_path = $compile_path . str_replace('/', DIRECTORY_SEPARATOR, 'app/components/diy'); // 系统自定义组件根目录
$file_arr = getFileMap($root_path);
if (!empty($file_arr)) {
foreach ($file_arr as $ck => $cv) {
if (str_contains($cv, 'index.vue')) {
$path = str_replace($root_path . '/', '', $ck);
$path = str_replace('/index.vue', '', $path);
if ($path == 'group') {
continue;
}
// 获取自定义组件 key 关键词
$name_arr = explode('-', $path);
foreach ($name_arr as $k => $v) {
// 首字母大写
$name_arr[ $k ] = strtoupper($v[ 0 ] ?? '') . substr($v, 1);
}
$name = implode('', $name_arr);
$file_name = 'diy-' . $path;
$content .= " <template v-if=\"component.componentName == '{$name}'\">\n";
$event_str = '$event';
$content .= " <$file_name ref=\"diy{$name}Ref\" :component=\"component\" :global=\"data.global\" :index=\"index\" :scrollBool=\"diyGroup.componentsScrollBool.{$name}\" @update:componentIsShow=\"component.componentIsShow = {$event_str}\" />\n";
$content .= " </template>\n";
}
}
}
// 查询已安装的插件
$addon_import_content = "";
$addon_service = new CoreAddonService();
$addon_list = $addon_service->getInstallAddonList();
$addon_arr = [];
if (!empty($addon_list)) {
foreach ($addon_list as $k => $v) {
$addon_arr[] = $v[ 'key' ];
}
}
if (!empty($addon)) {
// 追加新装插件
if (is_array($addon)) {
$addon_arr = array_merge($addon_arr, $addon);
} else if (is_string($addon)) {
$addon_arr[] = $addon;
}
}
$addon_arr = array_unique($addon_arr);
foreach ($addon_arr as $k => $v) {
$addon_path = $compile_path . str_replace('/', DIRECTORY_SEPARATOR, 'addon/' . $v . '/components/diy'); // 插件自定义组件根目录
$addon_file_arr = getFileMap($addon_path);
if (!empty($addon_file_arr)) {
foreach ($addon_file_arr as $ck => $cv) {
if (str_contains($cv, 'index.vue')) {
$path = str_replace($addon_path . '/', '', $ck);
$path = str_replace('/index.vue', '', $path);
// 获取自定义组件 key 关键词
$name_arr = explode('-', $path);
foreach ($name_arr as $nk => $nv) {
// 首字母大写
$name_arr[ $nk ] = strtoupper($nv[ 0 ] ?? '') . substr($nv, 1);
}
$name = implode('', $name_arr);
$file_name = 'diy-' . $path;
$content .= " <template v-if=\"component.componentName == '{$name}'\">\n";
$event_str = '$event';
$content .= " <$file_name ref=\"diy{$name}Ref\" :component=\"component\" :global=\"data.global\" :index=\"index\" :scrollBool=\"diyGroup.componentsScrollBool.{$name}\" @update:componentIsShow=\"component.componentIsShow = {$event_str}\" />\n";
$content .= " </template>\n";
$addon_import_content .= " import diy{$name} from '@/addon/" . $v . "/components/diy/{$path}/index.vue';\n";
}
}
}
}
$content .= " </view>\n";
$content .= " </view>\n";
$content .= " </template>\n";
$content .= " <template v-if=\"diyStore.mode == '' && data.global && diyGroup.showCopyright.value && data.global.copyright && data.global.copyright.isShow\">\n";
$content .= " <copy-right :textColor=\"data.global.copyright.textColor\" />\n";
$content .= " </template>\n\n";
$content .= " <template v-if=\"diyStore.mode == '' && data.global && data.global.bottomTabBar && data.global.bottomTabBar.isShow\">\n";
$content .= " <view class=\"pt-[20rpx]\"></view>\n";
$content .= " <tabbar :addon=\"data.global.bottomTabBar.designNav.key\" />\n";
$content .= " </template>\n";
$content .= " </view>\n";
$content .= "</template>\n";
$content .= "<script lang=\"ts\" setup>\n";
if (!empty($addon_import_content)) {
$content .= $addon_import_content;
}
$content .= " import topTabbar from '@/components/top-tabbar/top-tabbar.vue'\n";
$content .= " import popAds from '@/components/pop-ads/pop-ads.vue'\n";
$content .= " import useDiyStore from '@/app/stores/diy';\n";
$content .= " import { useDiyGroup } from './useDiyGroup';\n";
$content .= " import { ref,getCurrentInstance } from 'vue';\n\n";
$content .= " const props = defineProps(['data']);\n";
$content .= " const instance: any = getCurrentInstance();\n";
$content .= " const getFormRef = () => {\n";
$content .= " return {\n";
$content .= " componentRefs: instance.refs\n";
$content .= " }\n";
$content .= " }\n";
$content .= " const diyStore = useDiyStore();\n";
$content .= " const diyGroup = useDiyGroup({\n";
$content .= " ...props,\n";
$content .= " getFormRef\n";
$content .= " });\n";
$content .= " const data = ref(diyGroup.data);\n\n";
$content .= " // 监听页面加载完成\n";
$content .= " diyGroup.onMounted();\n\n";
$content .= " // 监听滚动事件\n";
$content .= " diyGroup.onPageScroll();\n";
$content .= " defineExpose({\n";
$content .= " refresh: diyGroup.refresh,\n";
$content .= " getFormRef\n";
$content .= " })\n";
$content .= "</script>\n";
$content .= "<style lang=\"scss\" scoped>\n";
$content .= " @import './index.scss';\n";
$content .= "</style>\n";
return file_put_contents($compile_path . str_replace('/', DIRECTORY_SEPARATOR, 'addon/components/diy/group/index.vue'), $content);
}
/**
* 编译 pages.json 页面路由代码文件,// {{PAGE}}
* @param $compile_path
* @return bool|int|void
*/
public function installPageCode($compile_path, $addon = '')
{
if (!file_exists($this->geAddonPackagePath($this->addon) . 'uni-app-pages.php')) return;
$uniapp_pages = require $this->geAddonPackagePath($this->addon) . 'uni-app-pages.php';
if (empty($uniapp_pages[ 'pages' ])) {
return;
}
$pages = [];
$addon_service = new CoreAddonService();
$addon_list = $addon_service->getInstallAddonList();
$addon_arr = [];
if (!empty($addon_list)) {
foreach ($addon_list as $k => $v) {
$addon_arr[] = $v[ 'key' ];
}
}
if (!empty($addon)) {
// 追加新装插件
if (is_array($addon)) {
$addon_arr = array_merge($addon_arr, $addon);
} else if (is_string($addon)) {
$addon_arr[] = $addon;
}
}
$addon_arr = array_unique($addon_arr);
foreach ($addon_arr as $addon) {
if (!file_exists($this->geAddonPackagePath($addon) . 'uni-app-pages.php')) continue;
$uniapp_pages = require $this->geAddonPackagePath($addon) . 'uni-app-pages.php';
if (empty($uniapp_pages[ 'pages' ])) continue;
$page_begin = strtoupper($addon) . '_PAGE_BEGIN';
$page_end = strtoupper($addon) . '_PAGE_END';
// 对0.2.0之前的版本做处理
$uniapp_pages[ 'pages' ] = preg_replace_callback('/(.*)(\\r\\n.*\/\/ PAGE_END.*)/s', function ($match) {
return $match[ 1 ] . ( substr($match[ 1 ], -1) == ',' ? '' : ',' ) . $match[ 2 ];
}, $uniapp_pages[ 'pages' ]);
$uniapp_pages[ 'pages' ] = str_replace('PAGE_BEGIN', $page_begin, $uniapp_pages[ 'pages' ]);
$uniapp_pages[ 'pages' ] = str_replace('PAGE_END', $page_end, $uniapp_pages[ 'pages' ]);
$uniapp_pages[ 'pages' ] = str_replace('{{addon_name}}', $addon, $uniapp_pages[ 'pages' ]);
$pages[] = $uniapp_pages[ 'pages' ];
}
$content = @file_get_contents($compile_path . "pages.json");
$content = preg_replace_callback('/(.*\/\/ \{\{ PAGE_BEGAIN \}\})(.*)(\/\/ \{\{ PAGE_END \}\}.*)/s', function ($match) use ($pages) {
return $match[ 1 ] . PHP_EOL . implode(PHP_EOL, $pages) . PHP_EOL . $match[ 3 ];
}, $content);
// 找到页面路由文件 pages.json写入内容
return file_put_contents($compile_path . "pages.json", $content);
}
/**
* 编译 pages.json 页面路由代码文件
* @param $compile_path
* @return bool|int|void
*/
public function uninstallPageCode($compile_path)
{
if (!file_exists($this->geAddonPackagePath($this->addon) . 'uni-app-pages.php')) return;
$uniapp_pages = require $this->geAddonPackagePath($this->addon) . 'uni-app-pages.php';
if (empty($uniapp_pages[ 'pages' ])) {
return;
}
$pages = [];
$addon_arr = array_diff(array_column(( new CoreAddonService() )->getInstallAddonList(), 'key'), [ $this->addon ]);
foreach ($addon_arr as $addon) {
if (!file_exists($this->geAddonPackagePath($addon) . 'uni-app-pages.php')) continue;
$uniapp_pages = require $this->geAddonPackagePath($addon) . 'uni-app-pages.php';
if (empty($uniapp_pages[ 'pages' ])) continue;
$page_begin = strtoupper($addon) . '_PAGE_BEGIN';
$page_end = strtoupper($addon) . '_PAGE_END';
$uniapp_pages[ 'pages' ] = str_replace('PAGE_BEGIN', $page_begin, $uniapp_pages[ 'pages' ]);
$uniapp_pages[ 'pages' ] = str_replace('PAGE_END', $page_end, $uniapp_pages[ 'pages' ]);
$uniapp_pages[ 'pages' ] = str_replace('{{addon_name}}', $addon, $uniapp_pages[ 'pages' ]);
$pages[] = $uniapp_pages[ 'pages' ];
}
$content = @file_get_contents($compile_path . "pages.json");
$content = preg_replace_callback('/(.*\/\/ \{\{ PAGE_BEGAIN \}\})(.*)(\/\/ \{\{ PAGE_END \}\}.*)/s', function ($match) use ($pages) {
return $match[ 1 ] . PHP_EOL . implode(PHP_EOL, $pages) . PHP_EOL . $match[ 3 ];
}, $content);
// 找到页面路由文件 pages.json写入内容
return file_put_contents($compile_path . "pages.json", $content);
}
/**
* 编译 加载插件标题语言包
* @param $compile_path
* @param $addon
*/
public function compileLocale($compile_path, $addon)
{
$locale_data = [];
$root_path = $compile_path . str_replace('/', DIRECTORY_SEPARATOR, 'locale'); // 系统语言包根目录
$file_arr = getFileMap($root_path, []);
if (!empty($file_arr)) {
foreach ($file_arr as $ck => $cv) {
if (str_contains($cv, '.json')) {
$app_json = @file_get_contents($ck);
$json = json_decode($app_json, true);
// 清空当前安装/卸载的插件语言包
foreach ($json as $jk => $jc) {
if (is_array($addon)) {
foreach ($addon as $key) {
if (strpos($jk, $key) !== false) {
unset($json[ $jk ]);
}
}
} else {
if (strpos($jk, $addon) !== false) {
unset($json[ $jk ]);
}
}
}
$locale_data[ $cv ] = [
'path' => $ck,
'json' => $json
];
}
}
}
// 查询已安装的插件
$addon_service = new CoreAddonService();
$addon_list = $addon_service->getInstallAddonList();
$addon_arr = [];
if (!empty($addon_list)) {
foreach ($addon_list as $k => $v) {
$addon_arr[] = $v[ 'key' ];
}
}
if (!empty($addon)) {
// 追加新装插件
if (is_array($addon)) {
$addon_arr = array_merge($addon_arr, $addon);
} else if (is_string($addon)) {
$addon_arr[] = $addon;
}
}
$addon_arr = array_unique($addon_arr);
foreach ($addon_arr as $k => $v) {
$addon_path = $compile_path . str_replace('/', DIRECTORY_SEPARATOR, 'addon/' . $v . '/locale'); // 插件语言包根目录
$addon_file_arr = getFileMap($addon_path, []);
if (!empty($addon_file_arr)) {
foreach ($addon_file_arr as $ck => $cv) {
if (str_contains($cv, '.json')) {
$json = @file_get_contents($ck);
$json = json_decode($json, true);
$addon_json = [];
foreach ($json as $jk => $jv) {
$addon_json[ $v . '.' . $jk ] = $jv;
}
if (isset($locale_data[ $cv ])) $locale_data[ $cv ][ 'json' ] = array_merge($locale_data[ $cv ][ 'json' ], $addon_json);
}
}
}
}
foreach ($locale_data as $k => $v) {
file_put_contents($v[ 'path' ], json_encode($v[ 'json' ], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
}
}
/**
* 合并manifest.json
* @param string $compile_path
* @param array $merge_data
* @return void
*/
public function mergeManifestJson(string $compile_path, array $merge_data)
{
$manifest_json = str_replace('/', DIRECTORY_SEPARATOR, $compile_path . 'src/manifest.json');
$manifest_content = $this->jsonStringToArray(file_get_contents($manifest_json));
( new CoreAddonBaseService() )->writeArrayToJsonFile(array_merge2($manifest_content, $merge_data), $manifest_json);
}
/**
* json 字符串解析成数组
* @param $string
* @return array
*/
private function jsonStringToArray($string)
{
$list = explode("\n", $string);
$json_array = [];
foreach ($list as $index => $item) {
if (strpos($item, '/*') === false) {
$json_array[] = $item;
}
}
return json_decode(implode(PHP_EOL, $json_array), true);
}
}

View File

@ -0,0 +1 @@
import{d as l,r as d,o as i,c as p,a as t,b as u,e as m,w as x,u as v,f,E as h,p as b,g,h as I,i as w,t as S}from"./index-6fd8f478.js";/* empty css */import{_ as B}from"./_plugin-vue_export-helper-c27b6911.js";const k=""+new URL("error-ab7e4004.png",import.meta.url).href,o=e=>(b("data-v-4f4088b5"),e=e(),g(),e),y={class:"error"},C={class:"flex items-center"},E=o(()=>t("div",null,[t("img",{class:"w-[240px]",src:k})],-1)),N={class:"text-left ml-[100px]"},R=o(()=>t("div",{class:"error-text text-[28px] font-bold"},"404错误",-1)),U=o(()=>t("div",{class:"text-[#222] text-[20px] mt-[15px]"},"哎呀,出错了!您访问的页面不存在...",-1)),V=o(()=>t("div",{class:"text-[#c4c2c2] text-[12px] mt-[5px]"},"尝试检查URL的错误然后点击浏览器刷新按钮。",-1)),L={class:"mt-[40px]"},$=l({__name:"404",setup(e){let s=null;const a=d(5),n=f();return s=setInterval(()=>{a.value===0?(clearInterval(s),n.go(-1)):a.value--},1e3),i(()=>{s&&clearInterval(s)}),(r,c)=>{const _=h;return I(),p("div",y,[t("div",C,[u(r.$slots,"content",{},()=>[E],!0),t("div",N,[R,U,V,t("div",L,[m(_,{class:"bottom",onClick:c[0]||(c[0]=D=>v(n).go(-1))},{default:x(()=>[w(S(a.value)+" 秒后返回上一页",1)]),_:1})])])])])}}});const z=B($,[["__scopeId","data-v-4f4088b5"]]);export{z as default};

View File

@ -0,0 +1 @@
import{dC as f}from"./index-6fd8f478.js";export{f as default};

View File

@ -0,0 +1 @@
import z from"./VerifySlide-3eaafa00.js";import g from"./VerifyPoints-fd48ca90.js";import{Q as k,r as o,l as w,ba as T,Z as V,_ as B,h as p,c as u,a as c,i as N,C as y,x as d,s as C,bb as j,v}from"./index-6fd8f478.js";import{_ as O}from"./_plugin-vue_export-helper-c27b6911.js";import"./index-f1634d30.js";const P={name:"Vue2Verify",components:{VerifySlide:z,VerifyPoints:g},props:{captchaType:{type:String,required:!0},figure:{type:Number},arith:{type:Number},mode:{type:String,default:"pop"},vSpace:{type:Number},explain:{type:String},imgSize:{type:Object,default(){return{width:"310px",height:"155px"}}},blockSize:{type:Object},barSize:{type:Object}},setup(m){const{captchaType:i,figure:e,arith:t,mode:n,vSpace:h,explain:f,imgSize:Q,blockSize:R,barSize:W}=k(m),a=o(!1),r=o(void 0),s=o(void 0),l=o({}),S=w(()=>n.value=="pop"?a.value:!0),b=()=>{l.value.refresh&&l.value.refresh()},x=()=>{a.value=!1,b()},_=()=>{n.value=="pop"&&(a.value=!0)};return T(()=>{switch(i.value){case"blockPuzzle":r.value="2",s.value="VerifySlide";break;case"clickWord":r.value="",s.value="VerifyPoints";break}}),{clickShow:a,verifyType:r,componentType:s,instance:l,showBox:S,closeBox:x,show:_}}},D={key:0,class:"verifybox-top"},E=c("i",{class:"iconfont icon-close"},null,-1),q=[E];function I(m,i,e,t,n,h){return V((p(),u("div",{class:v(e.mode=="pop"?"mask":"")},[c("div",{class:v(e.mode=="pop"?"verifybox":""),style:d({"max-width":parseInt(e.imgSize.width)+30+"px"})},[e.mode=="pop"?(p(),u("div",D,[N(" 请完成安全验证 "),c("span",{class:"verifybox-close",onClick:i[0]||(i[0]=(...f)=>t.closeBox&&t.closeBox(...f))},q)])):y("",!0),c("div",{class:"verifybox-bottom",style:d({padding:e.mode=="pop"?"15px":"0"})},[t.componentType?(p(),C(j(t.componentType),{key:0,captchaType:e.captchaType,type:t.verifyType,figure:e.figure,arith:e.arith,mode:e.mode,vSpace:e.vSpace,explain:e.explain,imgSize:e.imgSize,blockSize:e.blockSize,barSize:e.barSize,ref:"instance"},null,8,["captchaType","type","figure","arith","mode","vSpace","explain","imgSize","blockSize","barSize"])):y("",!0)],4)],6)],2)),[[B,t.showBox]])}const J=O(P,[["render",I]]);export{J as default};

View File

@ -0,0 +1 @@
import{r as F,a as V,b as K,c as Z}from"./index-f1634d30.js";import{Q as G,bc as Q,r as s,n as m,aZ as X,h as H,c as I,a as l,x as A,Z as Y,_ as U,F as $,W as ee,t as L,ax as te}from"./index-6fd8f478.js";import{_ as ae}from"./_plugin-vue_export-helper-c27b6911.js";const ie={name:"VerifyPoints",props:{mode:{type:String,default:"fixed"},captchaType:{type:String},vSpace:{type:Number,default:5},imgSize:{type:Object,default(){return{width:"310px",height:"155px"}}},barSize:{type:Object,default(){return{width:"310px",height:"40px"}}}},setup(N,f){const{mode:_,captchaType:e,vSpace:R,imgSize:q,barSize:c}=G(N),{proxy:n}=Q(),h=s(""),z=s(3),p=m([]),a=m([]),o=s(1),O=s(""),w=m([]),v=s(""),u=m({imgHeight:0,imgWidth:0,barHeight:0,barWidth:0}),y=m([]),d=s(""),b=s(void 0),x=s(void 0),j=s(!0),C=s(!0),J=()=>{p.splice(0,p.length),a.splice(0,a.length),o.value=1,B(),te(()=>{const{imgHeight:i,imgWidth:t,barHeight:g,barWidth:r}=F(n);u.imgHeight=i,u.imgWidth=t,u.barHeight=g,u.barWidth=r,n.$parent.$emit("ready",n)})};X(()=>{J(),n.$el.onselectstart=function(){return!1}});const S=s(null),D=i=>{if(a.push(k(S,i)),o.value==z.value){o.value=T(k(S,i));const t=M(a,u);a.length=0,a.push(...t),setTimeout(()=>{const g=h.value?V(v.value+"---"+JSON.stringify(a),h.value):v.value+"---"+JSON.stringify(a),r={captchaType:e.value,captcha_code:h.value?V(JSON.stringify(a),h.value):JSON.stringify(a),captcha_key:v.value};K(r).then(P=>{P.code==1?(b.value="#4cae4c",x.value="#5cb85c",d.value="验证成功",C.value=!1,_.value=="pop"&&setTimeout(()=>{n.$parent.clickShow=!1,W()},1500),n.$parent.$emit("success",{captchaVerification:g})):(n.$parent.$emit("error",n),b.value="#d9534f",x.value="#d9534f",d.value="验证失败",setTimeout(()=>{W()},700))})},400)}o.value<z.value&&(o.value=T(k(S,i)))},k=function(i,t){const g=t.offsetX,r=t.offsetY;return{x:g,y:r}},T=function(i){return y.push(Object.assign({},i)),o.value+1},W=function(){y.splice(0,y.length),b.value="#000",x.value="#ddd",C.value=!0,p.splice(0,p.length),a.splice(0,a.length),o.value=1,B(),d.value="验证失败",j.value=!0};function B(){const i={captchaType:e.value};Z(i).then(t=>{t.code==1?(O.value=t.data.originalImageBase64,v.value=t.data.token,h.value=t.data.secretKey,w.value=t.data.wordList,d.value="请依次点击【"+w.value.join(",")+"】"):d.value=t.msg})}const M=function(i,t){return i.map(r=>{const P=Math.round(310*r.x/parseInt(t.imgWidth)),E=Math.round(155*r.y/parseInt(t.imgHeight));return{x:P,y:E}})};return{secretKey:h,checkNum:z,fontPos:p,checkPosArr:a,num:o,pointBackImgBase:O,pointTextList:w,backToken:v,setSize:u,tempPoints:y,text:d,barAreaColor:b,barAreaBorderColor:x,showRefresh:j,bindingClick:C,init:J,canvas:S,canvasClick:D,getMousePos:k,createPoint:T,refresh:W,getPictrue:B,pointTransfrom:M}}},ne={style:{position:"relative"}},se={class:"verify-img-out"},oe=l("i",{class:"iconfont icon-refresh"},null,-1),re=[oe],ce=["src"],le={class:"verify-msg"};function he(N,f,_,e,R,q){return H(),I("div",ne,[l("div",se,[l("div",{class:"verify-img-panel",style:A({width:e.setSize.imgWidth,height:e.setSize.imgHeight,"background-size":e.setSize.imgWidth+" "+e.setSize.imgHeight,"margin-bottom":_.vSpace+"px"})},[Y(l("div",{class:"verify-refresh",style:{"z-index":"3"},onClick:f[0]||(f[0]=(...c)=>e.refresh&&e.refresh(...c))},re,512),[[U,e.showRefresh]]),l("img",{src:"data:image/png;base64,"+e.pointBackImgBase,ref:"canvas",alt:"",style:{width:"100%",height:"100%",display:"block"},onClick:f[1]||(f[1]=c=>e.bindingClick?e.canvasClick(c):void 0)},null,8,ce),(H(!0),I($,null,ee(e.tempPoints,(c,n)=>(H(),I("div",{key:n,class:"point-area",style:A({"background-color":"#1abd6c",color:"#fff","z-index":9999,width:"20px",height:"20px","text-align":"center","line-height":"20px","border-radius":"50%",position:"absolute",top:parseInt(c.y-10)+"px",left:parseInt(c.x-10)+"px"})},L(n+1),5))),128))],4)]),l("div",{class:"verify-bar-area",style:A({width:e.setSize.imgWidth,color:this.barAreaColor,"border-color":this.barAreaBorderColor,"line-height":this.barSize.height})},[l("span",le,L(e.text),1)],4)])}const fe=ae(ie,[["render",he]]);export{fe as default};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{d as V,y as B,f as N,r as x,aZ as S,h as T,c as j,e as o,w as s,a as t,t as n,u as e,q as a,i as h,B as q,aH as I,aI as R,E as $,a_ as D,a$ as F,b0 as H,K,b1 as M,a9 as P}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{g as Q}from"./aliapp-6b51f887.js";const U={class:"main-container"},Z={class:"flex justify-between items-center"},z={class:"text-page-title"},G={class:"p-[20px]"},J={class:"panel-title !text-sm"},L={class:"text-[14px] font-[700]"},O={class:"text-[#999]"},W={class:"mt-[20px] mb-[40px] h-[32px]"},X={class:"text-[14px] font-[700]"},Y={class:"text-[#999]"},tt={class:"mt-[20px] mb-[40px] h-[32px]"},et={class:"text-[14px] font-[700]"},st={class:"text-[#999]"},at=t("div",{class:"mt-[20px] mb-[40px] h-[32px]"},null,-1),ot={class:"text-[14px] font-[700]"},nt={class:"text-[#999]"},lt={class:"flex justify-center"},ct={class:"w-[100%] h-[100%] flex items-center justify-center bg-[#f5f7fa]"},pt={class:"mt-[22px] text-center"},it={class:"text-[12px]"},bt=V({__name:"access",setup(_t){const f=B(),d=N(),v=f.meta.title,_=x("/channel/aliapp"),p=x("");S(async()=>{const c=await Q();p.value=c.data.qr_code});const w=c=>{window.open(c,"_blank")},b=c=>{d.push({path:_.value})};return(c,l)=>{const g=I,y=R,m=$,i=D,C=F,u=H,E=K,k=M,A=P;return T(),j("div",U,[o(A,{class:"card !border-none",shadow:"never"},{default:s(()=>[t("div",Z,[t("span",z,n(e(v)),1)]),o(y,{modelValue:_.value,"onUpdate:modelValue":l[0]||(l[0]=r=>_.value=r),class:"my-[20px]",onTabChange:b},{default:s(()=>[o(g,{label:e(a)("weappAccessFlow"),name:"/channel/aliapp"},null,8,["label"])]),_:1},8,["modelValue"]),t("div",G,[t("h3",J,n(e(a)("weappInlet")),1),o(k,null,{default:s(()=>[o(u,{span:20},{default:s(()=>[o(C,{active:4,direction:"vertical"},{default:s(()=>[o(i,null,{title:s(()=>[t("p",L,n(e(a)("weappAttestation")),1)]),description:s(()=>[t("span",O,n(e(a)("weappAttest")),1),t("div",W,[o(m,{type:"primary",onClick:l[1]||(l[1]=r=>w("https://open.alipay.com/develop/manage"))},{default:s(()=>[h(n(e(a)("clickAccess")),1)]),_:1})])]),_:1}),o(i,null,{title:s(()=>[t("p",X,n(e(a)("weappSetting")),1)]),description:s(()=>[t("span",Y,n(e(a)("emplace")),1),t("div",tt,[o(m,{type:"primary",plain:"",onClick:l[2]||(l[2]=r=>e(d).push("/channel/aliapp/config"))},{default:s(()=>[h(n(e(a)("weappSettingBtn")),1)]),_:1})])]),_:1}),o(i,null,{title:s(()=>[t("p",et,n(e(a)("uploadVersion")),1)]),description:s(()=>[t("span",st,n(e(a)("releaseCourse")),1),at]),_:1}),o(i,null,{title:s(()=>[t("p",ot,n(e(a)("completeAccess")),1)]),description:s(()=>[t("span",nt,n(e(a)("releaseCourse")),1)]),_:1})]),_:1})]),_:1}),o(u,{span:4},{default:s(()=>[t("div",lt,[o(E,{class:"w-[180px] h-[180px]",src:p.value?e(q)(p.value):""},{error:s(()=>[t("div",ct,[t("span",null,n(p.value?e(a)("fileErr"):e(a)("emptyQrCode")),1)])]),_:1},8,["src"])]),t("div",pt,[t("p",it,n(e(a)("clickAccess2")),1)])]),_:1})]),_:1})])]),_:1})])}}});export{bt as default};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{d as B,y as T,f as $,r as c,aZ as q,b5 as I,o as M,h as R,c as W,e,w as t,a,t as o,u as n,q as s,i as u,aH as A,aI as L,E as U,a_ as j,a$ as D,b0 as F,b1 as G,a9 as H}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{g as P}from"./wechat-1fe17a88.js";const Z={class:"main-container"},z={class:"flex justify-between items-center"},J={class:"text-page-title"},K={class:"p-[20px]"},O={class:"panel-title !text-sm"},Q={class:"text-[14px] font-[700]"},X={class:"text-[#999]"},Y={class:"mt-[20px] mb-[40px] h-[32px]"},tt={class:"text-[14px] font-[700]"},et={class:"mt-[20px] mb-[40px] h-[32px]"},nt={class:"text-[14px] font-[700]"},at={class:"mt-[20px] mb-[40px] h-[32px]"},dt=B({__name:"access",setup(st){const f=T(),_=$(),x=f.meta.title,r=c("/channel/app"),b=c(""),g=c({}),y=c({}),h=async()=>{await P().then(({data:l})=>{g.value=l,b.value=l.qr_code})};q(async()=>{await h(),await I().then(({data:l})=>{y.value=l}),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&h()})}),M(()=>{document.removeEventListener("visibilitychange",()=>{})});const w=l=>{window.open(l,"_blank")},C=l=>{_.push({path:r.value})};return(l,i)=>{const v=A,E=L,d=U,m=j,k=D,V=F,S=G,N=H;return R(),W("div",Z,[e(N,{class:"card !border-none",shadow:"never"},{default:t(()=>[a("div",z,[a("span",J,o(n(x)),1)]),e(E,{modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=p=>r.value=p),class:"my-[20px]",onTabChange:C},{default:t(()=>[e(v,{label:n(s)("accessFlow"),name:"/channel/app"},null,8,["label"]),e(v,{label:n(s)("versionManage"),name:"/channel/app/version"},null,8,["label"])]),_:1},8,["modelValue"]),a("div",K,[a("h3",O,o(n(s)("appInlet")),1),e(S,null,{default:t(()=>[e(V,{span:20},{default:t(()=>[e(k,{class:"!mt-[10px]",active:3,direction:"vertical"},{default:t(()=>[e(m,null,{title:t(()=>[a("p",Q,o(n(s)("uniappApp")),1)]),description:t(()=>[a("span",X,o(n(s)("appAttestation1")),1),a("div",Y,[e(d,{type:"primary",onClick:i[1]||(i[1]=p=>w("https://dcloud.io/"))},{default:t(()=>[u(o(n(s)("toCreate")),1)]),_:1})])]),_:1}),e(m,null,{title:t(()=>[a("p",tt,o(n(s)("appSetting")),1)]),description:t(()=>[a("div",et,[e(d,{type:"primary",onClick:i[2]||(i[2]=p=>n(_).push("/channel/app/config"))},{default:t(()=>[u(o(n(s)("settingInfo")),1)]),_:1})])]),_:1}),e(m,null,{title:t(()=>[a("p",nt,o(n(s)("versionManage")),1)]),description:t(()=>[a("div",at,[e(d,{type:"primary",plain:"",onClick:i[3]||(i[3]=p=>n(_).push("/channel/app/version"))},{default:t(()=>[u(o(n(s)("releaseVersion")),1)]),_:1})])]),_:1})]),_:1})]),_:1})]),_:1})])]),_:1})])}}});export{dt as default};

View File

@ -0,0 +1 @@
import{d as W,y as $,f as j,r as u,aZ as F,b5 as I,o as R,h as w,c as y,e as a,w as s,a as n,t as o,u as e,q as t,i as r,F as U,s as z,B as L,aH as M,aI as D,E as G,a_ as H,a$ as K,b0 as P,K as Q,b1 as Z,a9 as J}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{g as O}from"./wechat-1fe17a88.js";import{a as X}from"./wxoplatform-32bd4d63.js";const Y={class:"main-container"},ee={class:"flex justify-between items-center"},te={class:"text-page-title"},ae={class:"p-[20px]"},se={class:"panel-title !text-sm"},ne={class:"text-[14px] font-[700]"},oe={class:"text-[#999]"},le={class:"mt-[20px] mb-[40px] h-[32px]"},ce={class:"text-[14px] font-[700]"},ie={class:"text-[#999]"},pe={class:"mt-[20px] mb-[40px] h-[32px]"},re={class:"text-[14px] font-[700]"},_e={class:"text-[#999]"},de={class:"mt-[20px] mb-[40px] h-[32px]"},me={class:"flex justify-center"},ue={class:"w-[100%] h-[100%] flex items-center justify-center bg-[#f5f7fa]"},he={class:"mt-[22px] text-center"},fe={class:"text-[12px]"},Be=W({__name:"access",setup(ve){const C=$(),_=j(),k=C.meta.title,h=u("/channel/wechat"),d=u(""),f=u({}),v=u({}),b=async()=>{await O().then(({data:l})=>{f.value=l,d.value=l.qr_code})};F(async()=>{await b(),await I().then(({data:l})=>{v.value=l}),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&b()})}),R(()=>{document.removeEventListener("visibilitychange",()=>{})});const E=l=>{window.open(l,"_blank")},A=l=>{_.push({path:h.value})},S=()=>{X().then(({data:l})=>{window.open(l)})};return(l,c)=>{const m=M,B=D,i=G,x=H,V=K,g=P,q=Q,N=Z,T=J;return w(),y("div",Y,[a(T,{class:"card !border-none",shadow:"never"},{default:s(()=>[n("div",ee,[n("span",te,o(e(k)),1)]),a(B,{modelValue:h.value,"onUpdate:modelValue":c[0]||(c[0]=p=>h.value=p),class:"my-[20px]",onTabChange:A},{default:s(()=>[a(m,{label:e(t)("wechatAccessFlow"),name:"/channel/wechat"},null,8,["label"]),a(m,{label:e(t)("customMenu"),name:"/channel/wechat/menu"},null,8,["label"]),a(m,{label:e(t)("wechatTemplate"),name:"/channel/wechat/message"},null,8,["label"]),a(m,{label:e(t)("reply"),name:"/channel/wechat/reply"},null,8,["label"])]),_:1},8,["modelValue"]),n("div",ae,[n("h3",se,o(e(t)("wechatInlet")),1),a(N,null,{default:s(()=>[a(g,{span:20},{default:s(()=>[a(V,{class:"!mt-[10px]",active:3,direction:"vertical"},{default:s(()=>[a(x,null,{title:s(()=>[n("p",ne,o(e(t)("wechatAttestation")),1)]),description:s(()=>[n("span",oe,o(e(t)("wechatAttestation1")),1),n("div",le,[a(i,{type:"primary",onClick:c[1]||(c[1]=p=>E("https://mp.weixin.qq.com/"))},{default:s(()=>[r(o(e(t)("clickAccess")),1)]),_:1})])]),_:1}),a(x,null,{title:s(()=>[n("p",ce,o(e(t)("wechatSetting")),1)]),description:s(()=>[n("span",ie,o(e(t)("wechatSetting1")),1),n("div",pe,[v.value.app_id&&v.value.app_secret?(w(),y(U,{key:0},[a(i,{type:"primary",onClick:c[2]||(c[2]=p=>e(_).push("/channel/wechat/config"))},{default:s(()=>[r(o(f.value.app_id?e(t)("seeConfig"):e(t)("clickSetting")),1)]),_:1}),a(i,{type:"primary",plain:"",onClick:S},{default:s(()=>[r(o(f.value.is_authorization?e(t)("refreshAuth"):e(t)("authWechat")),1)]),_:1})],64)):(w(),z(i,{key:1,type:"primary",onClick:c[3]||(c[3]=p=>e(_).push("/channel/wechat/config"))},{default:s(()=>[r(o(e(t)("clickSetting")),1)]),_:1}))])]),_:1}),a(x,null,{title:s(()=>[n("p",re,o(e(t)("wechatAccess")),1)]),description:s(()=>[n("span",_e,o(e(t)("wechatAccess")),1),n("div",de,[a(i,{type:"primary",plain:"",onClick:c[4]||(c[4]=p=>e(_).push("/channel/wechat/course"))},{default:s(()=>[r(o(e(t)("releaseCourse")),1)]),_:1})])]),_:1})]),_:1})]),_:1}),a(g,{span:4},{default:s(()=>[n("div",me,[a(q,{class:"w-[180px] h-[180px]",src:d.value?e(L)(d.value):""},{error:s(()=>[n("div",ue,[n("span",null,o(d.value?e(t)("fileErr"):e(t)("emptyQrCode")),1)])]),_:1},8,["src"])]),n("div",he,[n("p",fe,o(e(t)("clickAccess2")),1)])]),_:1})]),_:1})])]),_:1})])}}});export{Be as default};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{_ as o}from"./add-member.vue_vue_type_script_setup_true_lang-03eaad7d.js";import"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import"./member-08ee6cb9.js";export{o as default};

View File

@ -0,0 +1 @@
import{d as I,r as m,n as L,l as R,q as o,h as N,s as M,w as d,a as j,e as s,i as k,t as C,u as t,Z as z,bY as A,L as O,M as T,N as Z,E as K,V as S,a3 as Y}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{p as G,z as J,A as Q}from"./member-08ee6cb9.js";const W={class:"dialog-footer"},me=I({__name:"add-member",emits:["complete"],setup(X,{expose:$,emit:x}){const p=m(!1),i=m(!1),b=m(!1);let f="",c="";const w=m(!0),v=m(!0),g=m(!0),_={member_id:"",nickname:"",member_no:"",init_member_no:"",mobile:"",password:"",password_copy:""},r=L({..._}),y=m(),P=R(()=>({member_no:[{required:!0,message:o("memberNoPlaceholder"),trigger:"blur"},{validator:B,trigger:"blur"}],mobile:[{required:!0,message:o("mobilePlaceholder"),trigger:"blur"},{validator:D,trigger:"blur"}],password:[{required:!0,message:o("passwordPlaceholder"),trigger:"blur"}],password_copy:[{required:!0,message:o("passwordPlaceholder"),trigger:"blur"},{validator:E,trigger:"blur"}]})),D=(n,e,a)=>{e&&!/^1[3-9]\d{9}$/.test(e)?a(new Error(o("mobileHint"))):a()},E=(n,e,a)=>{e!=r.password?a(o("doubleCipherHint")):a()},B=(n,e,a)=>{e&&!/^[0-9a-zA-Z]*$/g.test(e)?a(new Error(o("memberNoHint"))):a()},U=async()=>{await J().then(n=>{c=n.data}).catch(()=>{})},q=async n=>{if(i.value||!n)return;const e=Q;await n.validate(async a=>{if(a){if(i.value=!0,b.value)return;b.value=!0,e(r).then(V=>{i.value=!1,b.value=!1,p.value=!1,x("complete")}).catch(()=>{i.value=!1,b.value=!1})}})};return $({showDialog:p,setFormData:async(n=null)=>{if(i.value=!0,Object.assign(r,_),f=o("addMember"),n){f=o("updateMember");const e=await(await G(n.member_id)).data;e&&Object.keys(r).forEach(a=>{e[a]!=null&&(r[a]=e[a])})}else await U(),r.member_no=c,r.init_member_no=c;i.value=!1}}),(n,e)=>{const a=O,u=T,V=Z,h=K,F=S,H=Y;return N(),M(F,{modelValue:p.value,"onUpdate:modelValue":e[14]||(e[14]=l=>p.value=l),title:t(f),width:"500px","destroy-on-close":!0},{footer:d(()=>[j("span",W,[s(h,{onClick:e[12]||(e[12]=l=>p.value=!1)},{default:d(()=>[k(C(t(o)("cancel")),1)]),_:1}),s(h,{type:"primary",loading:i.value,onClick:e[13]||(e[13]=l=>q(y.value))},{default:d(()=>[k(C(t(o)("confirm")),1)]),_:1},8,["loading"])])]),default:d(()=>[z((N(),M(V,{model:r,"label-width":"90px",ref_key:"formRef",ref:y,rules:t(P),class:"page-form"},{default:d(()=>[s(u,{label:t(o)("memberNo"),prop:"member_no"},{default:d(()=>[s(a,{modelValue:r.member_no,"onUpdate:modelValue":e[0]||(e[0]=l=>r.member_no=l),modelModifiers:{trim:!0},clearable:"",maxlength:"20",placeholder:t(o)("memberNoPlaceholder"),class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(u,{label:t(o)("mobile"),prop:"mobile"},{default:d(()=>[s(a,{modelValue:r.mobile,"onUpdate:modelValue":e[1]||(e[1]=l=>r.mobile=l),modelModifiers:{trim:!0},clearable:"",placeholder:t(o)("mobilePlaceholder"),maxlength:"11",onKeyup:e[2]||(e[2]=l=>t(A)(l)),class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(u,{label:t(o)("nickname")},{default:d(()=>[s(a,{modelValue:r.nickname,"onUpdate:modelValue":e[3]||(e[3]=l=>r.nickname=l),modelModifiers:{trim:!0},clearable:"",placeholder:t(o)("nickNamePlaceholder"),class:"input-width",maxlength:"10","show-word-limit":"",readonly:w.value,onClick:e[4]||(e[4]=l=>w.value=!1),onBlur:e[5]||(e[5]=l=>w.value=!0)},null,8,["modelValue","placeholder","readonly"])]),_:1},8,["label"]),s(u,{label:t(o)("password"),prop:"password"},{default:d(()=>[s(a,{modelValue:r.password,"onUpdate:modelValue":e[6]||(e[6]=l=>r.password=l),modelModifiers:{trim:!0},type:"password",placeholder:t(o)("passwordPlaceholder"),clearable:"",class:"input-width","show-password":!0,readonly:v.value,onClick:e[7]||(e[7]=l=>v.value=!1),onBlur:e[8]||(e[8]=l=>v.value=!0)},null,8,["modelValue","placeholder","readonly"])]),_:1},8,["label"]),s(u,{label:t(o)("passwordCopy"),prop:"password_copy"},{default:d(()=>[s(a,{modelValue:r.password_copy,"onUpdate:modelValue":e[9]||(e[9]=l=>r.password_copy=l),modelModifiers:{trim:!0},type:"password",placeholder:t(o)("passwordPlaceholder"),clearable:"",class:"input-width","show-password":!0,readonly:g.value,onClick:e[10]||(e[10]=l=>g.value=!1),onBlur:e[11]||(e[11]=l=>g.value=!0)},null,8,["modelValue","placeholder","readonly"])]),_:1},8,["label"])]),_:1},8,["model","rules"])),[[H,i.value]])]),_:1},8,["modelValue","title"])}}});export{me as _};

View File

@ -0,0 +1 @@
import{_ as o}from"./add-table.vue_vue_type_script_setup_true_lang-1159c8a5.js";import"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./tools-1d3824c5.js";export{o as default};

View File

@ -0,0 +1 @@
import{d as L,f as N,r as c,n as k,l as E,h as p,s as _,w as o,a as b,Z as x,u as t,t as f,q as n,e as d,i as B,aj as z,L as q,E as F,ak as P,V as U,a3 as j}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{k as G,l as I}from"./tools-1d3824c5.js";const le=L({__name:"add-table",setup(M,{expose:h}){const g=N(),m=c(!1),s=c(""),e=k({loading:!0,data:[],searchParam:{table_name:"",table_content:""}}),v=E(()=>e.data.filter(a=>!s.value||a.Name.toLowerCase().includes(s.value.toLowerCase())||a.Comment.toLowerCase().includes(s.value.toLowerCase()))),u=()=>{e.loading=!0,G().then(a=>{e.loading=!1,e.data=a.data}).catch(()=>{e.loading=!1})};u();const w=a=>{const l=a.Name;e.loading=!0,I({table_name:l}).then(i=>{e.loading=!1,m.value=!1,g.push({path:"/tools/code/edit",query:{id:i.data.id}})}).catch(()=>{e.loading=!1})};return h({showDialog:m,setFormData:async(a=null)=>{u()}}),(a,l)=>{const i=z,C=q,V=F,D=P,y=U,T=j;return p(),_(y,{modelValue:m.value,"onUpdate:modelValue":l[1]||(l[1]=r=>m.value=r),title:t(n)("addCode"),width:"800px","destroy-on-close":!0},{default:o(()=>[b("div",null,[x((p(),_(D,{data:t(v),size:"large",height:"400"},{empty:o(()=>[b("span",null,f(e.loading?"":t(n)("emptyData")),1)]),default:o(()=>[d(i,{prop:"Name",label:t(n)("tableName"),"min-width":"150"},null,8,["label"]),d(i,{prop:"Comment",label:t(n)("tableComment"),"min-width":"120"},null,8,["label"]),d(i,{align:"right","min-width":"150"},{header:o(()=>[d(C,{modelValue:s.value,"onUpdate:modelValue":l[0]||(l[0]=r=>s.value=r),modelModifiers:{trim:!0},size:"small",placeholder:t(n)("searchPlaceholder")},null,8,["modelValue","placeholder"])]),default:o(r=>[d(V,{size:"small",type:"primary",onClick:S=>w(r.row)},{default:o(()=>[B(f(t(n)("addBtn")),1)]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data"])),[[T,e.loading]])])]),_:1},8,["modelValue","title"])}}});export{le as _};

View File

@ -0,0 +1 @@
import{_ as e}from"./add-theme.vue_vue_type_script_setup_true_lang-cf38677e.js";const o=Object.freeze(Object.defineProperty({__proto__:null,default:e},Symbol.toStringTag,{value:"Module"}));export{o as _};

View File

@ -0,0 +1 @@
import{d as U,r as d,n as h,l as B,h as N,s as R,w as n,a as q,e as o,i as v,u as _,a6 as F,L as I,M as O,bI as $,N as j,E as A,V as S}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";import{u as T}from"./diy-e1949c05.js";const z={class:"dialog-footer"},X=U({__name:"add-theme",emits:["confirm"],setup(L,{expose:g,emit:V}){const y=T(),s=d(!1),i=d(!1),b={title:"",label:"",value:"",tip:""};let f=[];const m=d(""),l=h({...b}),k=r=>{f=r.key,m.value="";for(const e in l)l[e]="";r.data&&Object.keys(r.data).length&&(m.value="edit",Object.keys(l).forEach((e,t)=>{l[e]=r.data[e]?r.data[e]:""})),s.value=!0},p=d(),x=B(()=>({title:[{required:!0,message:"请输入颜色名称",trigger:"blur"}],value:[{required:!0,validator:(r,e,t)=>{e?t():t("请输入颜色value值")},trigger:["blur","change"]}],label:[{required:!0,message:"请输入颜色key值",trigger:"blur"},{validator:(r,e,t)=>{const u=/^[a-zA-Z0-9-]+$/;f.indexOf(e)!=-1&&t("新增颜色key值与已存在颜色key值命名重复请修改命名"),u.test(e)?t():t("颜色key值只能输入字母、数字和连字符")},trigger:"blur"}]})),w=async r=>{var e;i.value||await((e=p.value)==null?void 0:e.validate(async t=>{i.value||(i.value=!0,t&&(i.value=!1,V("confirm",F(l)),s.value=!1))}))};return g({dialogThemeVisible:s,open:k}),(r,e)=>{const t=I,u=O,E=$,C=j,c=A,D=S;return N(),R(D,{modelValue:s.value,"onUpdate:modelValue":e[6]||(e[6]=a=>s.value=a),title:"新增颜色",width:"550px","align-center":""},{footer:n(()=>[q("div",z,[o(c,{onClick:e[4]||(e[4]=a=>s.value=!1)},{default:n(()=>[v("取消")]),_:1}),o(c,{type:"primary",onClick:e[5]||(e[5]=a=>w(p.value))},{default:n(()=>[v("保存")]),_:1})])]),default:n(()=>[o(C,{model:l,"label-width":"120px",ref_key:"formRef",ref:p,rules:_(x)},{default:n(()=>[o(u,{label:"名字",prop:"title"},{default:n(()=>[o(t,{modelValue:l.title,"onUpdate:modelValue":e[0]||(e[0]=a=>l.title=a),class:"!w-[250px]",maxlength:"7",placeholder:"请输入颜色名称"},null,8,["modelValue"])]),_:1}),o(u,{label:"颜色key值",prop:"label"},{default:n(()=>[o(t,{modelValue:l.label,"onUpdate:modelValue":e[1]||(e[1]=a=>l.label=a),class:"!w-[250px]",maxlength:"20",disabled:m.value=="edit",placeholder:"请输入颜色key值"},null,8,["modelValue","disabled"])]),_:1}),o(u,{label:"颜色value值",prop:"value"},{default:n(()=>[o(E,{modelValue:l.value,"onUpdate:modelValue":e[2]||(e[2]=a=>l.value=a),"show-alpha":"",predefine:_(y).predefineColors},null,8,["modelValue","predefine"])]),_:1}),o(u,{label:"颜色提示"},{default:n(()=>[o(t,{modelValue:l.tip,"onUpdate:modelValue":e[3]||(e[3]=a=>l.tip=a),class:"!w-[250px]",placeholder:"请输入颜色提示"},null,8,["modelValue"])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["modelValue"])}}});export{X as _};

View File

@ -0,0 +1 @@
import{P as t}from"./index-6fd8f478.js";function d(n){return t.get("addon/local",n)}function o(n){return t.post(`addon/install/${n.addon}`,n)}function a(n){return t.post(`addon/cloudinstall/${n.addon}`,n)}function s(n){return t.post(`addon/uninstall/${n.addon}`,n,{showSuccessMessage:!0})}function l(n){return t.get(`addon/install/check/${n}`)}function u(){return t.get("addon/installtask")}function i(n){return t.get(`addon/cloudinstall/${n}`)}function r(n){return t.get(`addon/uninstall/check/${n}`)}function c(n){return t.put(`addon/install/cancel/${n}`,{},{showErrorMessage:!1})}function g(){return t.get("addon/list/install")}function f(){return t.get("home/site/group/app_list")}function p(){return t.get("addon/init")}function A(){return t.get("app/index")}function h(){return t.get("index/adv_list")}export{g as a,A as b,h as c,p as d,d as e,u as f,f as g,a as h,o as i,i as j,r as k,c as l,l as p,s as u};

View File

@ -0,0 +1 @@
import{d as F,y as w,r as b,n as C,h as f,c as y,Z as B,s as D,w as r,e as o,a as l,t as n,u as a,q as i,i as k,ch as I,a6 as N,ci as U,b7 as L,M as R,a9 as S,N as T,E as j,a3 as q}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css */import A from"./index-68fc6f03.js";import"./el-form-item-4ed993c7.js";/* empty css *//* empty css */import"./index.vue_vue_type_style_index_0_lang-e1fd86ac.js";/* empty css *//* empty css */import"./attachment-ebf503f5.js";import"./index.vue_vue_type_script_setup_true_lang-80dd73f7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-4a53fa0a.js";/* empty css */import"./index.vue_vue_type_script_setup_true_lang-9a3bbef3.js";import"./_plugin-vue_export-helper-c27b6911.js";import"./sortable.esm-be94e56d.js";const M={class:"main-container"},O={class:"text-[16px] text-[#1D1F3A] font-bold mb-4"},Z={class:"panel-title !text-[14px] bg-[#F4F5F7] p-3 border-[#E6E6E6] border-solid border-b-[1px]"},$={class:"form-tip"},z={class:"box-card mt-[20px] !border-none"},G={class:"panel-title !text-[14px] bg-[#F4F5F7] p-3 border-[#E6E6E6] border-solid border-b-[1px]"},H={class:"form-tip"},J={class:"fixed-footer-wrap"},K={class:"fixed-footer"},Nt=F({__name:"adminlogin",setup(P){const g=w().meta.title,m=b(!0),_=b(),e=C({is_captcha:0,is_site_captcha:0,bg:"",site_bg:""});(async()=>{const p=await(await I()).data;Object.keys(e).forEach(t=>{e[t]=p[t]}),m.value=!1})();const v=async p=>{m.value||!p||await p.validate(t=>{if(t){const d=N(e);U(d).then(()=>{m.value=!1}).catch(()=>{m.value=!1})}})};return(p,t)=>{const d=L,c=R,u=A,h=S,x=T,V=j,E=q;return f(),y("div",M,[B((f(),D(x,{class:"page-form",model:e,"label-width":"150px",ref_key:"ruleFormRef",ref:_},{default:r(()=>[o(h,{class:"box-card !border-none",shadow:"never"},{default:r(()=>[l("h3",O,n(a(g)),1),l("h3",Z,n(a(i)("admin")),1),o(c,{label:a(i)("isCaptcha")},{default:r(()=>[o(d,{modelValue:e.is_captcha,"onUpdate:modelValue":t[0]||(t[0]=s=>e.is_captcha=s),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1},8,["label"]),o(c,{label:a(i)("bgImg")},{default:r(()=>[o(u,{modelValue:e.bg,"onUpdate:modelValue":t[1]||(t[1]=s=>e.bg=s)},null,8,["modelValue"]),l("div",$,n(a(i)("adminBgImgTip")),1)]),_:1},8,["label"]),l("div",z,[l("h3",G,n(a(i)("site")),1),o(c,{label:a(i)("isCaptcha")},{default:r(()=>[o(d,{modelValue:e.is_site_captcha,"onUpdate:modelValue":t[2]||(t[2]=s=>e.is_site_captcha=s),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1},8,["label"]),o(c,{label:a(i)("bgImg")},{default:r(()=>[o(u,{modelValue:e.site_bg,"onUpdate:modelValue":t[3]||(t[3]=s=>e.site_bg=s)},null,8,["modelValue"]),l("div",H,n(a(i)("siteBgImgTip")),1)]),_:1},8,["label"])])]),_:1})]),_:1},8,["model"])),[[E,m.value]]),l("div",J,[l("div",K,[o(V,{type:"primary",onClick:t[4]||(t[4]=s=>v(_.value))},{default:r(()=>[k(n(a(i)("save")),1)]),_:1})])])])}}});export{Nt as default};

View File

@ -0,0 +1 @@
import{d as v,y,n as k,f as x,h as m,c as E,e as a,w as o,a as i,t as r,u as t,Z as C,s as B,q as n,i as p,cj as N,aj as T,E as j,ak as D,a9 as L,a3 as A}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */const V={class:"main-container"},R={class:"flex justify-between items-center"},$={class:"text-page-title"},q={class:"mt-[20px]"},X=v({__name:"agreement",setup(z){const _=y().meta.title,e=k({loading:!0,data:[]});(()=>{e.loading=!0,e.data=[],N().then(l=>{Object.keys(l.data).forEach(d=>e.data.push(l.data[d])),e.loading=!1}).catch(()=>{e.loading=!1})})();const u=x(),g=l=>{u.push(`/setting/agreement/edit?key=${l.agreement_key}`)};return(l,d)=>{const s=T,h=j,f=D,b=L,w=A;return m(),E("div",V,[a(b,{class:"box-card !border-none",shadow:"never"},{default:o(()=>[i("div",R,[i("span",$,r(t(_)),1)]),i("div",q,[C((m(),B(f,{data:e.data,size:"large"},{empty:o(()=>[i("span",null,r(e.loading?"":t(n)("emptyData")),1)]),default:o(()=>[a(s,{prop:"type_name",label:t(n)("typeName"),"min-width":"100","show-overflow-tooltip":!0},null,8,["label"]),a(s,{prop:"title",label:t(n)("title"),"min-width":"100","show-overflow-tooltip":!0},null,8,["label"]),a(s,{label:t(n)("updateTime"),"min-width":"180",align:"center"},{default:o(({row:c})=>[p(r(c.update_time||""),1)]),_:1},8,["label"]),a(s,{label:t(n)("operation"),align:"right",fixed:"right",width:"100"},{default:o(({row:c})=>[a(h,{type:"primary",link:"",onClick:Z=>g(c)},{default:o(()=>[p(r(t(n)("config")),1)]),_:2},1032,["onClick"])]),_:1},8,["label"])]),_:1},8,["data"])),[[w,e.loading]])])]),_:1})])}}});export{X as default};

View File

@ -0,0 +1 @@
import{d as q,y as M,f as P,r as y,ck as S,n as T,l as $,q as r,h,c as I,e as a,w as s,u as n,b3 as U,Z as j,s as A,a as w,i as k,t as x,cl as L,cm as O,b4 as H,a9 as Z,L as z,M as G,N as J,E as K,a3 as Q}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css */import{_ as W}from"./index.vue_vue_type_script_setup_true_lang-5a405f05.js";import"./el-form-item-4ed993c7.js";/* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_style_index_0_lang-e1fd86ac.js";/* empty css *//* empty css */import"./attachment-ebf503f5.js";import"./index.vue_vue_type_script_setup_true_lang-80dd73f7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-4a53fa0a.js";/* empty css */import"./index.vue_vue_type_script_setup_true_lang-9a3bbef3.js";import"./_plugin-vue_export-helper-c27b6911.js";const X={class:"main-container"},Y={class:"fixed-footer-wrap"},ee={class:"fixed-footer"},Se=q({__name:"agreement_edit",setup(te){const d=M(),V=P(),_=d.query.key||"",i=y(!1),E=S(),B=d.meta.title,f={agreement_key:"",content:"",title:"",agreement_key_name:""},t=T({...f});i.value=!0,_&&(async(m="")=>{Object.assign(t,f);const e=await(await L(m)).data;Object.keys(t).forEach(o=>{e[o]!=null&&(t[o]=e[o])}),i.value=!1})(_);const g=y(),D=$(()=>({title:[{required:!0,message:r("titlePlaceholder"),trigger:"blur"}],content:[{required:!0,trigger:["blur","change"],validator:(m,e,o)=>{if(e==="")o(new Error(r("contentPlaceholder")));else{if(e.length<5||e.length>1e5)return o(new Error(r("contentMaxTips"))),!1;o()}}}]})),C=async m=>{i.value||!m||await m.validate(async e=>{if(e){i.value=!0;const o=t;o.key=t.agreement_key,O(o).then(c=>{i.value=!1,p()}).catch(()=>{i.value=!1})}})},p=()=>{E.removeTab(d.path),V.push({path:"/setting/agreement"})};return(m,e)=>{const o=H,c=Z,v=z,u=G,F=W,N=J,b=K,R=Q;return h(),I("div",X,[a(c,{class:"card !border-none",shadow:"never"},{default:s(()=>[a(o,{content:n(B),icon:n(U),onBack:e[0]||(e[0]=l=>p())},null,8,["content","icon"])]),_:1}),j((h(),A(c,{class:"box-card mt-[15px] !border-none",shadow:"never"},{default:s(()=>[a(N,{model:t,"label-width":"90px",ref_key:"formRef",ref:g,rules:n(D),class:"page-form"},{default:s(()=>[a(u,{label:n(r)("type")},{default:s(()=>[a(v,{modelValue:t.agreement_key_name,"onUpdate:modelValue":e[1]||(e[1]=l=>t.agreement_key_name=l),modelModifiers:{trim:!0},readonly:"",class:"input-width"},null,8,["modelValue"])]),_:1},8,["label"]),a(u,{label:n(r)("title"),prop:"title"},{default:s(()=>[a(v,{modelValue:t.title,"onUpdate:modelValue":e[2]||(e[2]=l=>t.title=l),modelModifiers:{trim:!0},clearable:"",placeholder:n(r)("titlePlaceholder"),class:"input-width",maxlength:"20"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(u,{label:n(r)("content"),prop:"content"},{default:s(()=>[a(F,{modelValue:t.content,"onUpdate:modelValue":e[3]||(e[3]=l=>t.content=l)},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["model","rules"])]),_:1})),[[R,i.value]]),w("div",Y,[w("div",ee,[a(b,{type:"primary",onClick:e[4]||(e[4]=l=>C(g.value))},{default:s(()=>[k(x(n(r)("save")),1)]),_:1}),a(b,{onClick:e[5]||(e[5]=l=>p())},{default:s(()=>[k(x(n(r)("cancel")),1)]),_:1})])])])}}});export{Se as default};

View File

@ -0,0 +1 @@
import{P as t}from"./index-6fd8f478.js";function e(){return t.get("aliapp/config")}function p(a){return t.put("aliapp/config",a,{showSuccessMessage:!0})}function n(){return t.get("aliapp/static")}export{n as a,e as g,p as s};

View File

@ -0,0 +1 @@
import{P as n}from"./index-6fd8f478.js";function t(){return n.get("channel/app/config")}function r(e){return n.put("channel/app/config",e,{showSuccessMessage:!0})}function a(e){return n.get("channel/app/version",{params:e})}function o(e){return n.get(`channel/app/version/${e}`)}function u(){return n.get("channel/app/platfrom")}function i(e){return n.post("channel/app/version",e,{showSuccessMessage:!0})}function c(e){return n.put(`channel/app/version/${e.id}`,e,{showSuccessMessage:!0})}function p(e){return n.delete(`channel/app/version/${e.id}`)}function g(e){return n.get(`channel/app/build/log/${e}`)}function f(e){return n.put(`channel/app/version/${e}/release`,{},{showSuccessMessage:!0})}function l(e){return n.post("channel/app/generate_sing_cert",e,{showSuccessMessage:!0})}export{a,g as b,u as c,p as d,c as e,i as f,t as g,o as h,l as i,f as r,r as s};

View File

@ -0,0 +1 @@
import{_ as o}from"./app-version-edit.vue_vue_type_style_index_0_lang-6c9d6b3b.js";import"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_style_index_0_lang-24610787.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";import"./app-c876f7a6.js";import"./generate-sing-cert.vue_vue_type_script_setup_true_lang-5cf89bff.js";export{o as default};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{d as I,f as V,j as M,r as y,n as N,Z as R,h as l,c as x,a as e,t as s,u as a,q as o,e as u,w as c,F as j,W as D,B as T,s as $,i as q,C as k,ca as b,H as w,E as z,K as H,b9 as K,cb as O,ab as P,a3 as U,p as W,g as Z}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import{_ as G}from"./apply_empty-cdca3e85.js";import{a as J}from"./addon-8de9fa57.js";import{_ as Q}from"./_plugin-vue_export-helper-c27b6911.js";const X=""+new URL("app_store_default-c0531792.png",import.meta.url).href,h=_=>(W("data-v-8a156fb4"),_=_(),Z(),_),Y={class:"box-border pt-[68px] px-[76px] overview-top"},ee={key:0},te={class:"flex justify-between items-center"},se={class:"font-[600] text-[26px] text-[#222] leading-[37px]"},ae={class:"font-[500] text-[14px] text-[#222] leading-[20px] mt-[12px]"},oe=h(()=>e("div",{class:"mr-[9px] text-[#3F3F3F] iconfont iconxiazai01"},null,-1)),ne={class:"font-[600] text-[14px] text-[#222] leading-[20px]"},pe={class:"flex flex-wrap mt-[40px]"},ce=["onClick"],ie={class:"bg-[#F7FAFB] py-[18px] px-[24px] flex items-center app-item-head"},re=h(()=>e("div",{class:"image-slot"},[e("img",{class:"w-[40px] h-[40px] rounded-[8px]",src:X})],-1)),le={class:"py-[18px] px-[24px]"},_e={class:"font-[600] leading-[1] text-[14px] text-[#222]"},de={class:"text-[13px] text-[#6D7278] leading-[18px] mt-[6px] truncate"},xe=h(()=>e("div",{class:"w-[230px] mx-auto"},[e("img",{src:G,class:"max-w-full",alt:""})],-1)),ue={class:"flex items-center"},me=I({__name:"app_manage",setup(_){const v=V(),m=M(),n=y(!0),d=N({appList:[]}),f=y({});(()=>{n.value=!0,J().then(p=>{Object.values(p.data).forEach((t,i)=>{t.type=="app"&&d.appList.push(t)}),m.routers.forEach((t,i)=>{t.children&&t.children.length?(t.name=b(t.children),f.value[t.meta.app]=b(t.children)):f.value[t.meta.app]=t.name}),n.value=!1}).catch(()=>{n.value=!1})})();const L=p=>{w.set({key:"menuAppStorage",data:p.key}),w.set({key:"plugMenuTypeStorage",data:""});const t=m.appMenuList;t.push(p.key),m.setAppMenuList(t);const i=f.value[p.key];v.push({name:i})},g=()=>{v.push("/app_manage/app_store")};return(p,t)=>{const i=z,F=H,E=K,S=O,C=P,A=U;return R((l(),x("div",Y,[d.appList&&!n.value?(l(),x("div",ee,[e("div",te,[e("div",null,[e("div",se,s(a(o)("app")),1),e("div",ae,s(a(o)("versionInfo"))+" "+s(a(o)("currentVersion")),1)]),u(i,{onClick:g,class:"px-[15px]"},{default:c(()=>[oe,e("span",ne,s(a(o)("appStore")),1)]),_:1})]),e("div",pe,[(l(!0),x(j,null,D(d.appList,(r,B)=>(l(),x("div",{key:B,class:"app-item w-[280px] box-border !bg-[#fff] rounded-[6px] cursor-pointer mr-[20px] mb-[20px] overflow-hidden",onClick:he=>L(r)},[e("div",ie,[u(F,{class:"w-[44px] h-[44px] rounded-[8px]",src:a(T)(r.icon),fit:"contain"},{error:c(()=>[re]),_:2},1032,["src"])]),e("div",le,[e("div",_e,s(r.title),1),u(E,{class:"box-item",effect:"light",content:r.desc,placement:"bottom-start"},{default:c(()=>[e("div",de,s(r.desc),1)]),_:2},1032,["content"])])],8,ce))),128)),!d.appList.length&&!n.value?(l(),$(C,{key:0,class:"mx-auto overview-empty"},{image:c(()=>[xe]),description:c(()=>[e("p",ue,[e("span",null,s(a(o)("descriptionLeft")),1),u(S,{type:"primary",onClick:g,class:"mx-[5px]"},{default:c(()=>[q(s(a(o)("link")),1)]),_:1}),e("span",null,s(a(o)("descriptionRight")),1)])]),_:1})):k("",!0)])])):k("",!0)])),[[A,n.value]])}}});const Be=Q(me,[["__scopeId","data-v-8a156fb4"]]);export{Be as default};

View File

@ -0,0 +1 @@
import{d as f,y as h,r as y,h as m,c as s,e,w as o,a as i,t as b,u as p,F as v,W as x,q as g,aH as V,aI as w,a9 as E}from"./index-6fd8f478.js";/* empty css *//* empty css */import k from"./attachment-ebf503f5.js";/* empty css */import"./index.vue_vue_type_script_setup_true_lang-80dd73f7.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-4a53fa0a.js";/* empty css */import"./index.vue_vue_type_script_setup_true_lang-9a3bbef3.js";import"./_plugin-vue_export-helper-c27b6911.js";const B={class:"main-container attachment-container"},C={class:"flex justify-between items-center mb-[20px]"},N={class:"text-page-title"},it=f({__name:"attachment",setup(T){const l=h().meta.title,a=["image","video","icon"],n=y(a[0]);return(j,r)=>{const c=V,_=w,d=E;return m(),s("div",B,[e(d,{class:"box-card !border-none full-container",shadow:"never"},{default:o(()=>[i("div",C,[i("span",N,b(p(l)),1)]),e(_,{modelValue:n.value,"onUpdate:modelValue":r[0]||(r[0]=t=>n.value=t),"tab-position":"top"},{default:o(()=>[(m(),s(v,null,x(a,(t,u)=>e(c,{label:p(g)(t),name:t,key:u},{default:o(()=>[e(k,{scene:"attachment",type:t},null,8,["type"])]),_:2},1032,["label","name"])),64))]),_:1},8,["modelValue"])]),_:1})])}}});export{it as default};

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 @@
import{d as b,r as d,n as w,I as m,l as g,R as c,h as F,s as E,w as i,e as n,a,Z as N,i as R,_ as j,aF as B,L as C,M as I,N as O}from"./index-6fd8f478.js";/* empty css */import"./el-form-item-4ed993c7.js";/* empty css *//* empty css */const k={class:"flex items-center"},D=a("span",{class:"ml-[10px] el-form-item__label"},"消费折扣",-1),M={class:"w-[120px]"},U=a("div",{class:"text-sm text-gray-400 mb-[5px]"},"会员购买产品默认折扣,需要商品设置参与会员折扣有效",-1),A=b({__name:"benefits-discount",props:{modelValue:{type:Object,default:()=>({})}},emits:["update:modelValue"],setup(p,{expose:_,emit:f}){const v=p,e=d({is_use:0,discount:""}),r=d(null),x=w({discount:[{validator:(l,t,s)=>{e.value.is_use&&(m.empty(e.value.discount)&&s("请输入折扣"),m.decimal(e.value.discount,1)||s("折扣格式错误"),(parseFloat(e.value.discount)<0||parseFloat(e.value.discount)>9.9)&&s("折扣只能输入0~9.9之间的值"),e.value.discount<0&&s("折扣不能小于0")),s()}}]}),o=g({get(){return v.modelValue},set(l){f("update:modelValue",l)}});return c(()=>o.value,(l,t)=>{(!t||!Object.keys(t).length)&&Object.keys(l).length&&(e.value=o.value)},{immediate:!0}),c(()=>e.value,()=>{o.value=e.value},{deep:!0}),_({verify:async()=>{var t;let l=!0;return await((t=r.value)==null?void 0:t.validate(s=>{l=s})),l}}),(l,t)=>{const s=B,V=C,h=I,y=O;return F(),E(y,{ref_key:"formRef",ref:r,model:e.value,rules:x},{default:i(()=>[n(h,{label:"",prop:"discount",class:"!mb-[10px]"},{default:i(()=>[a("div",null,[a("div",k,[n(s,{modelValue:e.value.is_use,"onUpdate:modelValue":t[0]||(t[0]=u=>e.value.is_use=u),"true-label":1,"false-label":0,label:"",size:"large"},null,8,["modelValue"]),D,N(a("div",M,[n(V,{modelValue:e.value.discount,"onUpdate:modelValue":t[1]||(t[1]=u=>e.value.discount=u),modelModifiers:{trim:!0},clearable:""},{append:i(()=>[R("折")]),_:1},8,["modelValue"])],512),[[j,e.value.is_use]])]),U])]),_:1})]),_:1},8,["model","rules"])}}});export{A as default};

View File

@ -0,0 +1 @@
import{d as U,y as O,r as b,n as V,h as u,c as E,e as n,w as s,a as i,t as m,u as o,Z as z,s as p,q as l,bW as k,C as f,i as v,F as L,W as S,b7 as j,M as G,L as H,aD as I,aE as K,aF as P,bD as q,a9 as X,N as Z,E as $,a3 as J}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{d as Q,W as Y,X as ee}from"./member-08ee6cb9.js";const te={class:"main-container"},ae={class:"flex justify-between items-center"},oe={class:"text-page-title"},se={class:"text-[12px] text-[#999] leading-[24px]"},le=i("span",{class:"ml-2"},"%",-1),ne={class:"text-[12px] text-[#999] leading-[24px]"},re={class:"fixed-footer-wrap"},ie={class:"fixed-footer"},Fe=U({__name:"cash_out",setup(de){const C=O().meta.title,c=b(!0),g=b(),t=V({is_auto_transfer:"0",is_auto_verify:"0",is_open:"0",min:"0",rate:"0",transfer_type:[]}),y=b([]);(async()=>{y.value=await(await Q()).data})(),(async()=>{const d=await(await Y()).data;Object.keys(t).forEach(e=>{d[e]!=null&&(t[e]=d[e])}),c.value=!1})();const R=V({min:[{validator:(d,e,r)=>{Number(e)<.01?r(new Error(l("cashWithdrawalAmountHint"))):r()},trigger:"blur"}],rate:[{validator:(d,e,r)=>{Number(e)>100||Number(e)<0?r(new Error(l("commissionRatioHint"))):r()},trigger:"blur"}]}),F=async d=>{c.value||!d||await d.validate(e=>{if(e){const r={...t};ee(r).then(()=>{c.value=!1}).catch(()=>{c.value=!1})}})};return(d,e)=>{const r=j,_=G,h=H,x=I,N=K,D=P,T=q,w=X,W=Z,A=$,B=J;return u(),E("div",te,[n(w,{class:"box-card !border-none",shadow:"never"},{default:s(()=>[i("div",ae,[i("span",oe,m(o(C)),1)]),z((u(),p(W,{class:"page-form mt-[20px]",model:t,"label-width":"150px",ref_key:"ruleFormRef",ref:g,rules:R},{default:s(()=>[n(w,{class:"box-card !border-none",shadow:"never"},{default:s(()=>[n(_,{label:o(l)("isOpen")},{default:s(()=>[n(r,{modelValue:t.is_open,"onUpdate:modelValue":e[0]||(e[0]=a=>t.is_open=a),"active-value":"1","inactive-value":"0"},null,8,["modelValue"])]),_:1},8,["label"]),t.is_open?(u(),p(_,{key:0,label:o(l)("cashWithdrawalAmount"),prop:"min"},{default:s(()=>[i("div",null,[n(h,{modelValue:t.min,"onUpdate:modelValue":e[1]||(e[1]=a=>t.min=a),modelModifiers:{trim:!0},onKeyup:e[2]||(e[2]=a=>o(k)(a)),class:"input-width",placeholder:o(l)("cashWithdrawalAmountPlaceholder")},null,8,["modelValue","placeholder"]),i("div",se,m(o(l)("minTips")),1)])]),_:1},8,["label"])):f("",!0),t.is_open?(u(),p(_,{key:1,label:o(l)("commissionRatio"),prop:"rate"},{default:s(()=>[n(h,{modelValue:t.rate,"onUpdate:modelValue":e[3]||(e[3]=a=>t.rate=a),modelModifiers:{trim:!0},onKeyup:e[4]||(e[4]=a=>o(k)(a)),class:"input-width",placeholder:o(l)("commissionRatioPlaceholder")},null,8,["modelValue","placeholder"]),le]),_:1},8,["label"])):f("",!0),t.is_open?(u(),p(_,{key:2,label:o(l)("audit"),class:"items-center"},{default:s(()=>[n(N,{modelValue:t.is_auto_verify,"onUpdate:modelValue":e[5]||(e[5]=a=>t.is_auto_verify=a)},{default:s(()=>[n(x,{label:"0",size:"large"},{default:s(()=>[v(m(o(l)("manualAudit")),1)]),_:1}),n(x,{label:"1",size:"large"},{default:s(()=>[v(m(o(l)("automaticAudit")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"])):f("",!0),t.is_open?(u(),p(_,{key:3,label:o(l)("transferMode"),class:"items-baseline"},{default:s(()=>[i("div",null,[n(T,{modelValue:t.transfer_type,"onUpdate:modelValue":e[6]||(e[6]=a=>t.transfer_type=a),size:"large"},{default:s(()=>[(u(!0),E(L,null,S(y.value,(a,M)=>(u(),p(D,{label:a.key,key:"a"+M},{default:s(()=>[v(m(a.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"]),i("div",ne,m(o(l)("transferModeTips")),1)])]),_:1},8,["label"])):f("",!0)]),_:1})]),_:1},8,["model","rules"])),[[B,c.value]])]),_:1}),i("div",re,[i("div",ie,[n(A,{type:"primary",onClick:e[7]||(e[7]=a=>F(g.value))},{default:s(()=>[v(m(o(l)("save")),1)]),_:1})])])])}}});export{Fe as default};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
const e="公众号名称",c="公众号原始ID",t="公众号二维码",o="建议尺寸上传430px*430px宽高的二维码",n="开发者ID",a="开发者ID是公众号开发识别码配合开发者密码可调用公众号的接口能力。",s="开发者密码",i="开发者密码是校验公众号开发者身份的密码,具有极高的安全性",p="业务域名",h="JS接口安全域名",r="网页授权域名",l="公众号信息",d="公众号开发信息",w="消息推送配置",T="功能设置",g="在微信公众平台中,点击 设置与开发>公众号设置>功能设置,设置业务域名 JS接口安全域名 网页授权域名",S="必须为英文或数字长度为3-32字符。",A="消息加密密钥由43位字符组成可随机修改字符范围为A-Za-z0-9。",m="消息加解密方式",f="明文模式",P="兼容模式",D="安全模式(推荐)",M="请输入公众号名称",u="请输入公众号原始ID",y="请输入开发者ID",I="请输入开发者密码",b="请输入Token",x="请输入EncodingAESKey",B="明文模式下,不使用消息体加解密功能,安全系数较低",U="兼容模式下,明文、密文将共存,方便开发者调试和维护",k="安全模式下,消息包为纯密文,需要开发者加密和解密,安全系数高",K="借权域名",v="",E="默认留空填写后将替换https://open.weixin.gg.com/获取授权!",N={wechatName:e,wechatOriginal:c,wechatQrcode:t,wechatQrcodeTips:o,wechatAppid:n,wechatAppidTips:a,wechatAppsecret:s,wechatAppsecretTips:i,businessDomain:p,jsSecureDomain:h,webAuthDomain:r,wechatInfo:l,wechatDevelopInfo:d,theServerSetting:w,functionSetting:T,functionSettingTips:g,tokenTips:S,encodingAESKeyTips:A,encryptionType:m,cleartextMode:f,compatibleMode:P,safeMode:D,wechatNamePlaceholder:M,wechatOriginalPlaceholder:u,appidPlaceholder:y,appSecretPlaceholder:I,tokenPlaceholder:b,encodingAesKeyPlaceholder:x,cleartextModeTips:B,compatibleModeTips:U,safeModeTips:k,wechatBaseUri:K,wechatBaseUriPlaceholder:v,wechatBaseUriTips:E};export{I as appSecretPlaceholder,y as appidPlaceholder,p as businessDomain,f as cleartextMode,B as cleartextModeTips,P as compatibleMode,U as compatibleModeTips,N as default,A as encodingAESKeyTips,x as encodingAesKeyPlaceholder,m as encryptionType,T as functionSetting,g as functionSettingTips,h as jsSecureDomain,D as safeMode,k as safeModeTips,w as theServerSetting,b as tokenPlaceholder,S as tokenTips,r as webAuthDomain,n as wechatAppid,a as wechatAppidTips,s as wechatAppsecret,i as wechatAppsecretTips,K as wechatBaseUri,v as wechatBaseUriPlaceholder,E as wechatBaseUriTips,d as wechatDevelopInfo,l as wechatInfo,e as wechatName,M as wechatNamePlaceholder,c as wechatOriginal,u as wechatOriginalPlaceholder,t as wechatQrcode,o as wechatQrcodeTips};

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 @@
import{d as M,y as B,f as N,r as v,n as U,l as R,h as b,c as T,e as a,w as s,u as t,Z as D,s as $,a as n,t as d,q as l,i as m,b4 as L,a9 as P,L as F,E as K,M as O,N as S,a3 as j}from"./index-6fd8f478.js";/* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import{g as q,s as H}from"./app-c876f7a6.js";const Z={class:"main-container"},z={class:"panel-title !text-sm"},G={class:"form-tip flex items-center"},J={class:"form-tip"},Q={class:"form-tip"},W={class:"panel-title !text-sm"},X={class:"form-tip"},Y={class:"fixed-footer-wrap"},ee={class:"fixed-footer"},ce=M({__name:"config",setup(ae){const V=B(),y=N(),g=V.meta.title,r=v(!0),o=U({uni_app_id:"",app_name:"",android_app_key:"",application_id:"",wechat_app_id:"",wechat_app_secret:""}),f=v(),k=R(()=>({}));q().then(i=>{Object.assign(o,i.data),r.value=!1});const x=async i=>{r.value||!i||await i.validate(async e=>{e&&(r.value=!0,H(o).then(()=>{r.value=!1}).catch(()=>{r.value=!1}))})},h=i=>{window.open(i)},A=()=>{y.push("/channel/app")};return(i,e)=>{const C=L,_=P,c=F,w=K,u=O,I=S,E=j;return b(),T("div",Z,[a(_,{class:"card !border-none",shadow:"never"},{default:s(()=>[a(C,{content:t(g),icon:i.ArrowLeft,onBack:e[0]||(e[0]=p=>A())},null,8,["content","icon"])]),_:1}),D((b(),$(I,{class:"page-form mt-[15px]",model:o,"label-width":"170px",ref_key:"formRef",ref:f,rules:t(k)},{default:s(()=>[a(_,{class:"box-card !border-none mt-[15px]",shadow:"never"},{default:s(()=>[n("h3",z,d(t(l)("appInfo")),1),a(u,{label:t(l)("uniAppId"),prop:"uni_app_id"},{default:s(()=>[a(c,{modelValue:o.uni_app_id,"onUpdate:modelValue":e[1]||(e[1]=p=>o.uni_app_id=p),modelModifiers:{trim:!0},placeholder:"",class:"input-width",clearable:""},null,8,["modelValue"]),n("div",G,[m(d(t(l)("uniAppIdTips"))+" ",1),a(w,{link:"",type:"primary",onClick:e[2]||(e[2]=p=>h("https://www.dcloud.io/"))},{default:s(()=>[m(d(t(l)("toCreate")),1)]),_:1})])]),_:1},8,["label"]),a(u,{label:t(l)("appName"),prop:"app_name"},{default:s(()=>[a(c,{modelValue:o.app_name,"onUpdate:modelValue":e[3]||(e[3]=p=>o.app_name=p),modelModifiers:{trim:!0},placeholder:"",class:"input-width",clearable:""},null,8,["modelValue"])]),_:1},8,["label"]),a(u,{label:t(l)("androidAppKey"),prop:"android_app_key"},{default:s(()=>[a(c,{modelValue:o.android_app_key,"onUpdate:modelValue":e[4]||(e[4]=p=>o.android_app_key=p),modelModifiers:{trim:!0},placeholder:"",class:"input-width",clearable:""},null,8,["modelValue"]),n("div",J,[m(d(t(l)("androidAppKeyTips"))+" ",1),n("span",{class:"text-primary cursor-pointer",onClick:e[5]||(e[5]=p=>h("https://nativesupport.dcloud.net.cn/AppDocs/usesdk/appkey.html"))},"查看详情")])]),_:1},8,["label"]),a(u,{label:t(l)("applicationId"),prop:"application_id"},{default:s(()=>[a(c,{modelValue:o.application_id,"onUpdate:modelValue":e[6]||(e[6]=p=>o.application_id=p),modelModifiers:{trim:!0},placeholder:"",class:"input-width",clearable:""},null,8,["modelValue"]),n("div",Q,d(t(l)("applicationIdTips")),1)]),_:1},8,["label"])]),_:1}),a(_,{class:"box-card !border-none mt-[15px]",shadow:"never"},{default:s(()=>[n("h3",W,d(t(l)("wechatAppInfo")),1),a(u,{label:t(l)("wechatAppid"),prop:"app_id"},{default:s(()=>[a(c,{modelValue:o.wechat_app_id,"onUpdate:modelValue":e[7]||(e[7]=p=>o.wechat_app_id=p),modelModifiers:{trim:!0},placeholder:t(l)("appidPlaceholder"),class:"input-width",clearable:""},null,8,["modelValue","placeholder"]),n("div",X,d(t(l)("wechatAppidTips")),1)]),_:1},8,["label"]),a(u,{label:t(l)("wechatAppsecret"),prop:"app_secret"},{default:s(()=>[a(c,{modelValue:o.wechat_app_secret,"onUpdate:modelValue":e[8]||(e[8]=p=>o.wechat_app_secret=p),modelModifiers:{trim:!0},placeholder:t(l)("appSecretPlaceholder"),class:"input-width",clearable:""},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["model","rules"])),[[E,r.value]]),n("div",Y,[n("div",ee,[a(w,{type:"primary",loading:r.value,onClick:e[9]||(e[9]=p=>x(f.value))},{default:s(()=>[m(d(t(l)("save")),1)]),_:1},8,["loading"])])])])}}});export{ce as default};

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 @@
import{P as b,d as S,y as B,r as v,n as R,b8 as D,b2 as F,R as I,$ as g,q as o,h as M,c as $,e as a,w as l,a as r,t as u,u as i,i as j,b7 as H,M as O,L as U,N as L,a9 as P,E as T}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{_ as z}from"./_plugin-vue_export-helper-c27b6911.js";function A(){return b.get("channel/h5/config")}function G(_){return b.put("channel/h5/config",_,{showSuccessMessage:!0})}const J={class:"main-container"},K={class:"flex justify-between items-center"},Q={class:"text-page-title"},W={class:"fixed-footer-wrap"},X={class:"fixed-footer"},Y=S({__name:"config",setup(_){const h=B().meta.title,n=v(!0),e=R({is_open:!0,request_url:""}),d=v();A().then(t=>{Object.assign(e,t.data),e.is_open=Boolean(Number(e.is_open)),n.value=!1}),D().then(t=>{e.request_url=t.data.wap_url+"/"});const{copy:y,isSupported:w,copied:m}=F(),x=t=>{if(!w.value){g({message:o("notSupportCopy"),type:"warning"});return}y(t)};I(m,()=>{m.value&&g({message:o("copySuccess"),type:"success"})});const C=()=>{window.open(e.request_url)},E=async t=>{n.value||!t||await t.validate(async s=>{if(s){n.value=!0;const c={...e};c.is_open=Number(c.is_open),G(c).then(()=>{n.value=!1}).catch(()=>{n.value=!1})}})};return(t,s)=>{const c=H,f=O,N=U,k=L,q=P,V=T;return M(),$("div",J,[a(q,{class:"box-card !border-none",shadow:"never"},{default:l(()=>[r("div",K,[r("span",Q,u(i(h)),1)]),a(k,{class:"page-form mt-[20px]",model:e,"label-width":"150px",ref_key:"formRef",ref:d},{default:l(()=>[a(f,{label:i(o)("isOpen")},{default:l(()=>[a(c,{modelValue:e.is_open,"onUpdate:modelValue":s[0]||(s[0]=p=>e.is_open=p)},null,8,["modelValue"])]),_:1},8,["label"]),a(f,{label:i(o)("h5DomainName")},{default:l(()=>[a(N,{"model-value":e.request_url,class:"input-width",readonly:!0},{append:l(()=>[r("div",{class:"cursor-pointer",onClick:s[1]||(s[1]=p=>x(e.request_url))},u(i(o)("copy")),1)]),_:1},8,["model-value"]),r("span",{class:"ml-2 cursor-pointer visit-btn",onClick:C},u(i(o)("clickVisit")),1)]),_:1},8,["label"])]),_:1},8,["model"])]),_:1}),r("div",W,[r("div",X,[a(V,{type:"primary",loading:n.value,onClick:s[2]||(s[2]=p=>E(d.value))},{default:l(()=>[j(u(i(o)("save")),1)]),_:1},8,["loading"])])])])}}});const ie=z(Y,[["__scopeId","data-v-8a5349bf"]]);export{ie as default};

View File

@ -0,0 +1 @@
import{P as b,d as S,y as B,r as v,n as R,b8 as D,b2 as F,R as I,$ as g,q as a,h as M,c as P,e as n,w as l,a as r,t as u,u as i,i as $,b7 as j,M as O,L as U,N as L,a9 as T,E as z}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{_ as A}from"./_plugin-vue_export-helper-c27b6911.js";function G(){return b.get("channel/pc/config")}function H(_){return b.put("channel/pc/config",_,{showSuccessMessage:!0})}const J={class:"main-container"},K={class:"flex justify-between items-center"},Q={class:"text-page-title"},W={class:"fixed-footer-wrap"},X={class:"fixed-footer"},Y=S({__name:"config",setup(_){const y=B().meta.title,o=v(!0),e=R({is_open:!1,request_url:""}),d=v();D().then(t=>{e.request_url=t.data.web_url+"/",o.value=!1}),G().then(t=>{Object.assign(e,t.data),e.is_open=Boolean(Number(e.is_open)),o.value=!1});const{copy:w,isSupported:h,copied:m}=F(),x=t=>{if(!h.value){g({message:a("notSupportCopy"),type:"warning"});return}w(t)};I(m,()=>{m.value&&g({message:a("copySuccess"),type:"success"})});const C=()=>{window.open(e.request_url)},E=async t=>{o.value||!t||await t.validate(async s=>{if(s){o.value=!0;const c={...e};c.is_open=Number(c.is_open),H(c).then(()=>{o.value=!1}).catch(()=>{o.value=!1})}})};return(t,s)=>{const c=j,f=O,N=U,k=L,q=T,V=z;return M(),P("div",J,[n(q,{class:"box-card !border-none",shadow:"never"},{default:l(()=>[r("div",K,[r("span",Q,u(i(y)),1)]),n(k,{class:"page-form mt-[20px]",model:e,"label-width":"150px",ref_key:"formRef",ref:d},{default:l(()=>[n(f,{label:i(a)("isOpen")},{default:l(()=>[n(c,{modelValue:e.is_open,"onUpdate:modelValue":s[0]||(s[0]=p=>e.is_open=p)},null,8,["modelValue"])]),_:1},8,["label"]),n(f,{label:i(a)("pCDomainName")},{default:l(()=>[n(N,{"model-value":e.request_url,class:"input-width",readonly:!0},{append:l(()=>[r("div",{class:"cursor-pointer",onClick:s[1]||(s[1]=p=>x(e.request_url))},u(i(a)("copy")),1)]),_:1},8,["model-value"]),r("span",{class:"ml-2 cursor-pointer visit-btn",onClick:C},u(i(a)("clickVisit")),1)]),_:1},8,["label"])]),_:1},8,["model"])]),_:1}),r("div",W,[r("div",X,[n(V,{type:"primary",loading:o.value,onClick:s[2]||(s[2]=p=>E(d.value))},{default:l(()=>[$(u(i(a)("save")),1)]),_:1},8,["loading"])])])])}}});const ie=A(Y,[["__scopeId","data-v-2f7e1e13"]]);export{ie as default};

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 @@
import{d as u,y as h,f,h as b,c as g,e as r,w as i,u as t,b3 as v,a as e,i as o,t as s,q as n,b4 as y,a9 as k,E as T}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css */const E=""+new URL("weapp_1-7017a047.png",import.meta.url).href,R=""+new URL("weapp_2-8fac7fa5.png",import.meta.url).href,B=""+new URL("weapp_3-07a2249e.png",import.meta.url).href,L=""+new URL("weapp_4-d837a9b1.png",import.meta.url).href,U={class:"main-container"},j={class:"flex"},C=e("div",{class:"min-w-[60px]"},[e("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"1")],-1),N={class:"flex items-center text-[14px]"},q=e("div",{class:"w-[100%] mt-[10px]"},[e("img",{class:"w-[100%]",src:E})],-1),O={class:"flex mt-[40px]"},V=e("div",{class:"min-w-[60px]"},[e("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"2")],-1),F={class:"flex items-center text-[14px]"},S=e("div",{class:"w-[100%] mt-[10px]"},[e("img",{class:"w-[100%]",src:R})],-1),A={class:"flex mt-[40px]"},D=e("div",{class:"min-w-[60px]"},[e("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"3")],-1),H={class:"flex items-center text-[14px]"},K={class:"text-primary"},P=e("div",{class:"w-[100%] mt-[10px]"},[e("img",{class:"w-[100%]",src:B})],-1),$={class:"flex mt-[40px]"},z=e("div",{class:"min-w-[60px]"},[e("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"4")],-1),G={class:"flex items-center text-[14px]"},I=e("span",{class:"text-primary"},"URL / Token / EncondingAESKey",-1),J=e("div",{class:"w-[100%] mt-[10px]"},[e("img",{class:"w-[100%]",src:L})],-1),te=u({__name:"course",setup(M){const p=h(),l=f(),d=p.meta.title,_=()=>{l.push("/channel/weapp")},m=()=>{window.open("https://mp.weixin.qq.com/","_blank")};return(Q,a)=>{const x=y,c=k,w=T;return b(),g("div",U,[r(c,{class:"card !border-none",shadow:"never"},{default:i(()=>[r(x,{content:t(d),icon:t(v),onBack:a[0]||(a[0]=W=>_())},null,8,["content","icon"])]),_:1}),r(c,{class:"box-card mt-[15px] !border-none",shadow:"never"},{default:i(()=>[e("div",j,[C,e("div",null,[e("p",N,[o(s(t(n)("writingTipsOne1")),1),r(w,{link:"",type:"primary",onClick:m},{default:i(()=>[o(s(t(n)("writingTipsOne2")),1)]),_:1}),o(","+s(t(n)("writingTipsOne3")),1)]),q])]),e("div",O,[V,e("div",null,[e("p",F,s(t(n)("writingTipsTwo1")),1),S])]),e("div",A,[D,e("div",null,[e("p",H,[o(s(t(n)("writingTipsThree1")),1),e("span",K,s(t(n)("writingTipsThree2")),1)]),P])]),e("div",$,[z,e("div",null,[e("p",G,[o(s(t(n)("writingTipsFour1")),1),I,o(s(t(n)("writingTipsFour2")),1)]),J])])]),_:1})])}}});export{te as default};

View File

@ -0,0 +1 @@
import{d as v,y as b,f as R,r as C,n as T,h as k,c as L,e as t,w as a,u as e,b3 as U,a as s,i as r,t as o,q as n,b4 as j,a9 as E,E as B,b0 as N,b1 as O}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css */import{g as V}from"./wechat-1fe17a88.js";const q=""+new URL("alipay1-029c00a2.png",import.meta.url).href,D=""+new URL("alipay2-f74219b9.png",import.meta.url).href,H=""+new URL("alipay3-0895ce6e.png",import.meta.url).href,P=""+new URL("alipay4-92fef352.png",import.meta.url).href,S=""+new URL("alipay4_1-ad9b08e3.jpg",import.meta.url).href,W=""+new URL("alipay4_2-cbaa820b.jpg",import.meta.url).href,$=""+new URL("alipay4_3-4a213289.jpg",import.meta.url).href,z=""+new URL("alipay4_4-7924cbdd.jpg",import.meta.url).href,A=""+new URL("alipay5-6dba1989.png",import.meta.url).href,F=""+new URL("alipay6-f1e18995.png",import.meta.url).href,G=""+new URL("alipay7-c805d7c0.png",import.meta.url).href,I=""+new URL("alipay8-3097d150.png",import.meta.url).href,J={class:"main-container"},K={class:"flex"},M=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"1")],-1),Q={class:"flex items-center text-[14px]"},X=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:q})],-1),Y={class:"flex items-center text-[14px] mt-[20px]"},Z=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:D})],-1),ss=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:H})],-1),es={class:"flex mt-[40px]"},ts=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"2")],-1),as={class:"flex items-center text-[14px]"},os={class:"w-[100%] mt-[10px] flex flex-wrap"},ns=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:P})],-1),is=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:S})],-1),rs=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:W})],-1),cs=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:$})],-1),ps=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:z})],-1),ls={class:"flex mt-[40px]"},_s=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"3")],-1),ms={class:"flex items-center text-[14px]"},ds=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:A})],-1),xs=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:F})],-1),us={class:"flex items-center text-[14px] mt-[20px]"},ws=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:G})],-1),hs={class:"flex items-center text-[14px] mt-[20px]"},fs=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:I})],-1),Ls=v({__name:"course",setup(ys){const _=b(),m=R(),d=()=>{m.push("/channel/aliapp")},x=_.meta.title,u=C(!0),w=T({wechat_name:"",wechat_original:"",app_id:"",app_secret:"",qr_code:"",token:"",encoding_aes_key:"",encryption_type:"not_encrypt"});V().then(c=>{Object.assign(w,c.data),u.value=!1});const h=()=>{window.open("https://open.alipay.com/develop/manage","_blank")};return(c,p)=>{const f=j,l=E,y=B,i=N,g=O;return k(),L("div",J,[t(l,{class:"card !border-none",shadow:"never"},{default:a(()=>[t(f,{content:e(x),icon:e(U),onBack:p[0]||(p[0]=gs=>d())},null,8,["content","icon"])]),_:1}),t(l,{class:"box-card mt-[15px] !border-none",shadow:"never"},{default:a(()=>[s("div",K,[M,s("div",null,[s("p",Q,[r(o(e(n)("alipayCourseTipsOne1"))+"--",1),t(y,{link:"",type:"primary",onClick:h},{default:a(()=>[r(o(e(n)("alipayCourseTipsOne2")),1)]),_:1}),r(", "+o(e(n)("alipayCourseTipsOne3")),1)]),X,s("p",Y,o(e(n)("alipayCourseTipsTwo1")),1),Z,ss])]),s("div",es,[ts,s("div",null,[s("p",as,o(e(n)("alipayCourseTipsTwo2")),1),s("div",os,[ns,s("div",null,[t(g,{gutter:20},{default:a(()=>[t(i,{span:6},{default:a(()=>[is]),_:1}),t(i,{span:6},{default:a(()=>[rs]),_:1}),t(i,{span:6},{default:a(()=>[cs]),_:1}),t(i,{span:6},{default:a(()=>[ps]),_:1})]),_:1})])])])]),s("div",ls,[_s,s("div",null,[s("p",ms,o(e(n)("alipayCourseTipsThree1")),1),ds,xs,s("p",us,o(e(n)("alipayCourseTipsThree2")),1),ws,s("p",hs,o(e(n)("alipayCourseTipsThree3")),1),fs])])]),_:1})])}}});export{Ls as default};

View File

@ -0,0 +1 @@
import{d as f,y as g,f as v,r as y,n as b,h as k,c as T,e as a,w as r,u as t,b3 as E,a as e,i as o,t as s,q as n,b4 as R,a9 as O,E as B}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css */import{g as C}from"./wechat-1fe17a88.js";const L=""+new URL("wechat_1-0a26d3a6.png",import.meta.url).href,U=""+new URL("wechat_4-94a271d5.png",import.meta.url).href,j=""+new URL("wechat_2-0513f476.png",import.meta.url).href,q=""+new URL("wechat_3-0a96f3fe.png",import.meta.url).href,N={class:"main-container"},V={class:"flex"},D=e("div",{class:"min-w-[60px]"},[e("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"1")],-1),S={class:"flex items-center text-[14px]"},A=e("span",{class:"text-primary"},"URL / Token / EncondingAESKey",-1),H=e("div",{class:"w-[100%] mt-[10px]"},[e("img",{class:"w-[100%]",src:L})],-1),K={class:"flex items-center text-[14px] mt-[20px]"},P=e("div",{class:"w-[100%] mt-[10px]"},[e("img",{class:"w-[100%]",src:U})],-1),W={class:"flex mt-[40px]"},$=e("div",{class:"min-w-[60px]"},[e("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"2")],-1),z={class:"flex items-center text-[14px]"},F=e("div",{class:"w-[100%] mt-[10px]"},[e("img",{class:"w-[100%]",src:j})],-1),G={class:"flex mt-[40px]"},I=e("div",{class:"min-w-[60px]"},[e("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"3")],-1),J={class:"flex items-center text-[14px]"},M={class:"text-primary"},Q=e("div",{class:"w-[100%] mt-[10px]"},[e("img",{class:"w-[100%]",src:q})],-1),ae=f({__name:"course",setup(X){const l=g().meta.title,_=v(),d=()=>{_.push("/channel/wechat")},m=y(!0),x=b({wechat_name:"",wechat_original:"",app_id:"",app_secret:"",qr_code:"",token:"",encoding_aes_key:"",encryption_type:"not_encrypt"});C().then(i=>{Object.assign(x,i.data),m.value=!1});const h=()=>{window.open("https://mp.weixin.qq.com/","_blank")};return(i,c)=>{const w=R,p=O,u=B;return k(),T("div",N,[a(p,{class:"card !border-none",shadow:"never"},{default:r(()=>[a(w,{content:t(l),icon:t(E),onBack:c[0]||(c[0]=Z=>d())},null,8,["content","icon"])]),_:1}),a(p,{class:"box-card mt-[15px] pt-[20px] !border-none",shadow:"never"},{default:r(()=>[e("div",V,[D,e("div",null,[e("p",S,[o(s(t(n)("writingTipsOne1"))+"--",1),a(u,{link:"",type:"primary",onClick:h},{default:r(()=>[o(s(t(n)("writingTipsOne2")),1)]),_:1}),o(", "+s(t(n)("writingTipsOne3")),1),A,o(s(t(n)("writingTipsOne4")),1)]),H,e("p",K,s(t(n)("writingTipsOne5")),1),P])]),e("div",W,[$,e("div",null,[e("p",z,s(t(n)("writingTipsTwo1")),1),F])]),e("div",G,[I,e("div",null,[e("p",J,[o(s(t(n)("writingTipsThree1")),1),e("span",M,s(t(n)("writingTipsThree2")),1)]),Q])])]),_:1})])}}});export{ae as default};

View File

@ -0,0 +1 @@
import{_ as o}from"./create-site-limit.vue_vue_type_script_setup_true_lang-3ab70be6.js";import"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./user-26797620.js";export{o as default};

View File

@ -0,0 +1 @@
import{d as B,r as f,l as F,q as o,R as q,h as d,s as v,w as a,a as x,e as s,i as g,t as p,u as r,Z as P,c as C,F as R,W as I,C as M,a4 as Z,a1 as O,M as T,L as $,N as j,E as W,V as z,a3 as A}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{e as H,a as J,b as K}from"./user-26797620.js";const Q={key:0,class:"text-[12px] text-[#a9a9a9] leading-normal mt-[5px]"},X={class:"dialog-footer"},ce=B({__name:"create-site-limit",props:{siteGroup:{type:Object,default:()=>({})},uid:{type:Number,default:0}},emits:["complete"],setup(w,{expose:y,emit:L}){const c=w,u=f(!1),b=f(null),t=f({id:0,uid:c.uid,group_id:"",num:1,month:1}),m=f(!1),S=F(()=>({group_id:[{required:!0,message:o("siteGroupPlaceholder"),trigger:"blur"}],num:[{required:!0,message:o("numPlaceholder"),trigger:"blur"},{validator:(i,e,n)=>{e<=0&&n(o("numCannotLtZero")),n()}}],month:[{required:!0,message:o("monthPlaceholder"),trigger:"blur"},{validator:(i,e,n)=>{e<=0&&n(o("monthCannotLtZero")),n()}}]})),E=async i=>{m.value||!i||await i.validate(async e=>{e&&(m.value=!0,(t.value.id?H:J)(t.value).then(()=>{m.value=!1,u.value=!1,L("complete")}).catch(()=>{m.value=!1}))})},N=(i=0)=>{i?K(i).then(({data:e})=>{t.value=e,u.value=!0}):u.value=!0};return q(()=>u.value,()=>{u.value||(t.value={id:0,uid:c.uid,group_id:"",num:1,month:1})}),y({setFormData:N,loading:m}),(i,e)=>{const n=Z,U=O,_=T,V=$,D=j,h=W,G=z,k=A;return d(),v(G,{modelValue:u.value,"onUpdate:modelValue":e[5]||(e[5]=l=>u.value=l),title:r(o)("userCreateSiteLimit"),width:"700px","destroy-on-close":!0},{footer:a(()=>[x("span",X,[s(h,{onClick:e[3]||(e[3]=l=>u.value=!1)},{default:a(()=>[g(p(r(o)("cancel")),1)]),_:1}),s(h,{type:"primary",loading:m.value,onClick:e[4]||(e[4]=l=>E(b.value))},{default:a(()=>[g(p(r(o)("confirm")),1)]),_:1},8,["loading"])])]),default:a(()=>[P((d(),v(D,{model:t.value,"label-width":"130px",ref_key:"formRef",ref:b,rules:r(S),class:"page-form",autocomplete:"off"},{default:a(()=>[s(_,{label:r(o)("siteGroup"),prop:"group_id"},{default:a(()=>[s(U,{modelValue:t.value.group_id,"onUpdate:modelValue":e[0]||(e[0]=l=>t.value.group_id=l),placeholder:r(o)("siteGroupPlaceholder"),disabled:t.value.id},{default:a(()=>[(d(!0),C(R,null,I(c.siteGroup,l=>(d(),v(n,{label:l.group_name,value:l.group_id},null,8,["label","value"]))),256))]),_:1},8,["modelValue","placeholder","disabled"])]),_:1},8,["label"]),s(_,{label:r(o)("createSiteNum"),prop:"num"},{default:a(()=>[x("div",null,[s(V,{modelValue:t.value.num,"onUpdate:modelValue":e[1]||(e[1]=l=>t.value.num=l),modelModifiers:{number:!0,trim:!0},class:"!w-[150px]"},null,8,["modelValue"]),t.value.group_id?(d(),C("p",Q,p(r(o)("createdSiteNum"))+""+p(c.siteGroup[t.value.group_id].site_num),1)):M("",!0)])]),_:1},8,["label"]),s(_,{label:r(o)("createSiteTimeLimit"),prop:"month"},{default:a(()=>[s(V,{modelValue:t.value.month,"onUpdate:modelValue":e[2]||(e[2]=l=>t.value.month=l),modelModifiers:{number:!0,trim:!0},class:"!w-[150px]"},{append:a(()=>[g(p(r(o)("month")),1)]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["model","rules"])),[[k,m.value]])]),_:1},8,["modelValue","title"])}}});export{ce as _};

View File

@ -0,0 +1 @@
import{_ as o}from"./cron-info.vue_vue_type_script_setup_true_lang-f235518e.js";import"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";export{o as default};

View File

@ -0,0 +1 @@
import{d as E,r as m,n as V,l as N,h as r,s as h,w as e,a as n,e as o,i as B,t as l,u as a,q as s,Z as F,c as b,M as T,N as C,E as O,V as R,a3 as j}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";const I={class:"input-width"},S={class:"input-width"},q={key:0,class:"input-width"},J={key:1,class:"input-width"},L={class:"input-width"},M={class:"input-width"},U={class:"input-width"},Z={class:"input-width"},$={class:"input-width"},z={class:"input-width"},A={class:"input-width"},G={class:"dialog-footer"},at=E({__name:"cron-info",setup(H,{expose:v}){const c=m(!1),u=m(!0),p={count:0,create_time:"",crond_length:"",crond_type:"",crond_type_name:"",data:"",delete_time:"",last_time:"",next_time:"",status_desc:"",title:"",type:"",type_name:"",update_time:""},t=V({...p}),y=m(),w=N(()=>({}));return v({showDialog:c,setFormData:async(_=null)=>{u.value=!0,Object.assign(t,p),_&&Object.keys(t).forEach(d=>{_[d]!=null&&(t[d]=_[d])}),u.value=!1}}),(_,d)=>{const i=T,g=C,x=O,D=R,k=j;return r(),h(D,{modelValue:c.value,"onUpdate:modelValue":d[1]||(d[1]=f=>c.value=f),title:a(s)("cronInfo"),width:"550px","destroy-on-close":!0},{footer:e(()=>[n("span",G,[o(x,{type:"primary",onClick:d[0]||(d[0]=f=>c.value=!1)},{default:e(()=>[B(l(a(s)("confirm")),1)]),_:1})])]),default:e(()=>[F((r(),h(g,{model:t,"label-width":"110px",ref_key:"formRef",ref:y,rules:a(w),class:"page-form"},{default:e(()=>[o(i,{label:a(s)("title")},{default:e(()=>[n("div",I,l(t.title),1)]),_:1},8,["label"]),o(i,{label:a(s)("typeName")},{default:e(()=>[n("div",S,l(t.type_name),1)]),_:1},8,["label"]),o(i,{label:a(s)("crondType")},{default:e(()=>[t.type=="crond"?(r(),b("div",q,l(t.crond_length)+" "+l(t.crond_type_name),1)):(r(),b("div",J,l(a(s)("cron")),1))]),_:1},8,["label"]),o(i,{label:a(s)("count")},{default:e(()=>[n("div",L,l(t.count),1)]),_:1},8,["label"]),o(i,{label:a(s)("task")},{default:e(()=>[n("div",M,l(t.task),1)]),_:1},8,["label"]),o(i,{label:a(s)("data")},{default:e(()=>[n("div",U,l(JSON.stringify(t.data)),1)]),_:1},8,["label"]),o(i,{label:a(s)("statusDesc")},{default:e(()=>[n("div",Z,l(t.status_desc),1)]),_:1},8,["label"]),o(i,{label:a(s)("lastTime")},{default:e(()=>[n("div",$,l(t.last_time),1)]),_:1},8,["label"]),o(i,{label:a(s)("nextTime")},{default:e(()=>[n("div",z,l(t.next_time),1)]),_:1},8,["label"]),o(i,{label:a(s)("createTime")},{default:e(()=>[n("div",A,l(t.create_time),1)]),_:1},8,["label"])]),_:1},8,["model","rules"])),[[k,u.value]])]),_:1},8,["modelValue","title"])}}});export{at as _};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{d as _,l as d,B as r,h as a,c as n,F as u,W as p,s as f,u as s,v as g,K as v}from"./index-6fd8f478.js";/* empty css *//* empty css */const h=_({__name:"detail-form-image",props:{data:{type:Object,default:()=>({})}},setup(i){const e=i,o=d(()=>e.data.handle_field_value.map(t=>r(t)));return(t,x)=>{const c=v;return a(),n("div",null,[(a(!0),n(u,null,p(e.data.handle_field_value,(m,l)=>(a(),f(c,{src:s(r)(m),class:g(["w-[70px] h-[70px]",{"mr-[5px]":l+1<e.data.handle_field_value.length}]),fit:"contain","preview-src-list":s(o),"zoom-rate":1.2,"max-scale":7,"min-scale":.2,"initial-index":l,"hide-on-click-modal":!0},null,8,["src","class","preview-src-list","zoom-rate","min-scale","initial-index"]))),256))])}}}),B=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{B as _};

View File

@ -0,0 +1 @@
import{d as o,h as r,c as _,t as a}from"./index-6fd8f478.js";import{_ as n}from"./_plugin-vue_export-helper-c27b6911.js";const s={class:"form-render"},d=o({__name:"detail-form-render",props:{data:{type:Object,default:()=>({})}},setup(e){const t=e;return(l,p)=>(r(),_("div",s,a(t.data.render_value),1))}});const c=n(d,[["__scopeId","data-v-2b402684"]]),u=Object.freeze(Object.defineProperty({__proto__:null,default:c},Symbol.toStringTag,{value:"Module"}));export{u as _};

View File

@ -0,0 +1 @@
import{_ as o}from"./detail-member.vue_vue_type_script_setup_true_lang-94a3ebc4.js";import"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css */import"./member_head-d9fd7b2c.js";import"./member-08ee6cb9.js";import"./member-point-edit.vue_vue_type_script_setup_true_lang-9250666e.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";import"./member-balance-edit.vue_vue_type_script_setup_true_lang-3bc51c19.js";import"./edit-member.vue_vue_type_script_setup_true_lang-eb43d177.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index-68fc6f03.js";/* empty css */import"./index.vue_vue_type_style_index_0_lang-e1fd86ac.js";import"./attachment-ebf503f5.js";import"./index.vue_vue_type_script_setup_true_lang-80dd73f7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-4a53fa0a.js";/* empty css */import"./index.vue_vue_type_script_setup_true_lang-9a3bbef3.js";import"./_plugin-vue_export-helper-c27b6911.js";import"./sortable.esm-be94e56d.js";export{o as default};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{d as w,r as f,a5 as b,Z as y,h as i,c as d,s as k,w as n,a as l,t as _,u as t,q as a,e,C as S,aj as C,ak as B,a0 as E,a9 as z,a3 as D}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import{w as N}from"./tools-1d3824c5.js";const V={class:"main-container min-h-[70vh]"},j={class:"panel-title !text-sm"},I={class:"text-[14px]"},T={class:"mt-[20px]"},q={class:"panel-title !text-sm"},L={class:"text-[14px]"},O={class:"mt-[20px]"},Z={class:"panel-title !text-sm"},A={class:"text-[14px]"},F={key:0},G={key:1},H={class:"mt-[20px]"},J={class:"panel-title !text-sm"},K={class:"text-[14px]"},M={key:0},P={key:1},ie=w({__name:"detection",setup(Q){const o=f({}),p=f(!0);return(()=>{N().then(u=>{o.value=u.data,p.value=!1})})(),(u,U)=>{const s=C,r=B,h=b("Select"),c=E,v=b("CloseBold"),g=z,x=D;return y((i(),d("div",V,[Object.keys(o.value).length?(i(),k(g,{key:0,class:"box-card !border-none",shadow:"never"},{default:n(()=>[l("div",null,[l("h3",j,_(t(a)("serverInformation")),1),l("div",I,[e(r,{data:o.value.server,size:"large"},{default:n(()=>[e(s,{prop:"name",label:t(a)("environment"),align:"left","min-width":"200"},null,8,["label"]),e(s,{prop:"server",label:t(a)("version"),align:"left","min-width":"140"},null,8,["label"])]),_:1},8,["data"])])]),l("div",T,[l("h3",q,_(t(a)("systemDemand")),1),l("div",L,[e(r,{data:o.value.server_version,size:"large"},{default:n(()=>[e(s,{prop:"name",label:t(a)("environment"),align:"left","min-width":"200"},null,8,["label"]),e(s,{prop:"demand",label:t(a)("demand"),align:"left","min-width":"140"},null,8,["label"]),e(s,{prop:"server",label:t(a)("version"),align:"left","min-width":"140"},null,8,["label"])]),_:1},8,["data"])])]),l("div",O,[l("h3",Z,_(t(a)("authorityStatus")),1),l("div",A,[e(r,{data:o.value.system_variables,size:"large"},{default:n(()=>[e(s,{prop:"name",label:t(a)("name"),align:"left","min-width":"200"},null,8,["label"]),e(s,{prop:"need",label:t(a)("demand"),align:"left","min-width":"140"},null,8,["label"]),e(s,{label:t(a)("status"),align:"left","min-width":"140"},{default:n(({row:m})=>[m.status?(i(),d("span",F,[e(c,{color:"green"},{default:n(()=>[e(h)]),_:1})])):(i(),d("span",G,[e(c,{color:"red"},{default:n(()=>[e(v)]),_:1})]))]),_:1},8,["label"])]),_:1},8,["data"])])]),l("div",H,[l("h3",J,_(t(a)("process")),1),l("div",K,[e(r,{data:o.value.process,size:"large"},{default:n(()=>[e(s,{prop:"name",label:t(a)("name"),align:"left","min-width":"200"},null,8,["label"]),e(s,{prop:"need",label:t(a)("demand"),align:"left","min-width":"140"},null,8,["label"]),e(s,{label:t(a)("status"),align:"left","min-width":"140"},{default:n(({row:m})=>[m.status?(i(),d("span",M,[e(c,{color:"green"},{default:n(()=>[e(h)]),_:1})])):(i(),d("span",P,[e(c,{color:"red"},{default:n(()=>[e(v)]),_:1})]))]),_:1},8,["label"])]),_:1},8,["data"])])])]),_:1})):S("",!0)])),[[x,p.value]])}}});export{ie as default};

View File

@ -0,0 +1 @@
import{d as w,r as i,cs as E,n as y,q as l,h as _,c as V,e as n,w as s,Z as B,s as D,a as c,t as d,u as r,i as T,ct as C,L as N,M as R,E as q,N as F,a9 as I,a3 as L}from"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */const M={class:"main-container"},P={class:"panel-title !text-sm"},S={class:"text-[14px] text-[#a9a9a9] leading-tight mt-[10px]"},J=w({__name:"developer_token",setup(U){const e=i(!0),o=i({token:""});E().then(({data:t})=>{e.value=!1,t.token&&(o.value=t)});const u=i(),v=y({token:[{required:!0,message:l("tokenPlaceholder"),trigger:"blur"}]}),f=async t=>{e.value||!t||await t.validate(async a=>{a&&(e.value=!0,C(o.value).then(()=>{e.value=!1}).catch(()=>{e.value=!1}))})};return(t,a)=>{const k=N,m=R,h=q,g=F,x=I,b=L;return _(),V("div",M,[n(x,{class:"box-card !border-none",shadow:"never"},{default:s(()=>[B((_(),D(g,{class:"page-form",model:o.value,"label-width":"0",ref_key:"formRef",ref:u,rules:v},{default:s(()=>[c("h3",P,d(r(l)("developerTokenEdit")),1),n(m,{label:"",prop:"token"},{default:s(()=>[c("div",null,[n(k,{modelValue:o.value.token,"onUpdate:modelValue":a[0]||(a[0]=p=>o.value.token=p),modelModifiers:{trim:!0},placeholder:r(l)("tokenPlaceholder"),class:"input-width",clearable:"",maxlength:"30"},null,8,["modelValue","placeholder"])]),c("div",S,d(r(l)("tokenTips")),1)]),_:1}),n(m,{label:""},{default:s(()=>[n(h,{type:"primary",loading:e.value,onClick:a[1]||(a[1]=p=>f(u.value))},{default:s(()=>[T(d(r(l)("save")),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model","rules"])),[[b,e.value]])]),_:1})])}}});export{J as default};

View File

@ -0,0 +1 @@
import{P as e}from"./index-6fd8f478.js";function c(t){return e.get("dict/dict",{params:t})}function i(t){return e.get(`dict/dict/${t}`)}function u(t){return e.post("dict/dict",t,{showErrorMessage:!0,showSuccessMessage:!0})}function o(t){return e.put(`dict/dict/${t.id}`,t,{showErrorMessage:!0,showSuccessMessage:!0})}function n(t){return e.delete(`dict/dict/${t}`,{showErrorMessage:!0,showSuccessMessage:!0})}function a(t,s){return e.put(`dict/dictionary/${t}`,s,{showErrorMessage:!0,showSuccessMessage:!0})}function d(){return e.get("dict/all")}export{u as a,c as b,d as c,n as d,o as e,i as g,a as s};

View File

@ -0,0 +1 @@
import{_ as o}from"./dict.vue_vue_type_style_index_0_lang-9d9ce62b.js";import"./index-6fd8f478.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./dict-283c3be2.js";export{o as default};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{P as t}from"./index-6fd8f478.js";function i(e){return t.get("diy/diy",{params:e})}function u(e){return t.get("diy/carousel_search",{params:e})}function n(e){return t.post("diy/diy",e,{showSuccessMessage:!0})}function r(e){return t.put(`diy/diy/${e.id}`,e,{showSuccessMessage:!0})}function o(e){return t.put(`diy/use/${e.id}`,e,{showSuccessMessage:!0})}function a(e){return t.put("diy/diy/share",e,{showSuccessMessage:!0})}function c(e){return t.delete(`diy/diy/${e}`,{showSuccessMessage:!0})}function g(e){return t.get("diy/init",{params:e})}function y(e){return t.get("diy/link",{params:e})}function d(e){return t.get("diy/bottom",{params:e})}function f(e){return t.get("diy/bottom/config",{params:e})}function h(e){return t.post("diy/bottom",e,{showSuccessMessage:!0})}function p(e){return t.get("diy/template",{params:e})}function m(e){return t.get("diy/template/pages",{params:e})}function D(e){return t.get("diy/route",{params:e})}function l(){return t.get("diy/route/apps")}function S(e){return t.get("diy/route/info",{params:e})}function w(e){return t.put("diy/route/share",e,{showSuccessMessage:!0})}function M(e){return t.get("diy/decorate",{params:e})}function P(e){return t.put("diy/change",e,{showSuccessMessage:!0})}function T(e){return t.get("diy/apps")}function L(e){return t.post("diy/copy",e,{showSuccessMessage:!0})}function k(e){return t.get("diy/page_link",{params:e})}function B(e){return t.get("diy/theme/color",{params:e})}function $(e){return t.get("diy/theme",{params:e})}function b(e){return t.post("diy/theme/add",e)}function C(e){return t.put(`diy/theme/edit/${e.id}`,e,{showSuccessMessage:!0})}function R(e){return t.delete(`diy/theme/delete/${e}`,{showSuccessMessage:!0})}function A(e){return t.post("diy/theme",e,{showSuccessMessage:!0})}export{h as A,$ as B,k as C,u as a,d as b,b as c,R as d,C as e,B as f,y as g,m as h,g as i,r as j,n as k,M as l,P as m,T as n,p as o,i as p,o as q,L as r,A as s,c as t,a as u,l as v,D as w,S as x,w as y,f as z};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{P as t}from"./index-6fd8f478.js";function s(e){return t.get("diy/form",{params:e})}function o(e){return t.get("diy/form/list",{params:e})}function i(e){return t.get("diy/form/select",{params:e})}function u(e){return t.post("diy/form",e,{showSuccessMessage:!0})}function n(e){return t.put(`diy/form/${e.form_id}`,e,{showSuccessMessage:!0})}function m(e){return t.put("diy/form/share",e,{showSuccessMessage:!0})}function c(e){return t.put("diy/form/delete",e,{showSuccessMessage:!0})}function f(e){return t.get("diy/form/init",{params:e})}function a(e){return t.get("diy/form/fields/list",{params:e})}function d(e){return t.get("diy/form/records/field/stat",{params:e})}function g(e){return t.get("diy/form/template",{params:e})}function y(e){return t.put("diy/form/status",e,{showErrorMessage:!0,showSuccessMessage:!0})}function F(e){return t.get("diy/form/type")}function p(e){return t.get(`diy/form/write/${e}`)}function l(e){return t.put("diy/form/write",e,{showSuccessMessage:!0})}function S(e){return t.get(`diy/form/submit/${e}`)}function h(e){return t.put("diy/form/submit",e,{showSuccessMessage:!0})}function w(e){return t.get("diy/form/records",{params:e})}function D(e){return t.put("diy/form/records/delete",e,{showSuccessMessage:!0})}function M(e){return t.get("diy/form/records/member/stat",{params:e})}function b(e){return t.post("diy/form/copy",e,{showSuccessMessage:!0})}export{F as a,S as b,p as c,l as d,h as e,g as f,i as g,n as h,f as i,u as j,y as k,s as l,b as m,c as n,m as o,D as p,w as q,M as r,a as s,d as t,o as u};

View File

@ -0,0 +1 @@
.el-collapse-item__wrap{border-bottom:none}.el-collapse-item__content{padding-bottom:0}.el-collapse-item__header{font-size:var(--el-font-size-base)}.display-block .el-form-item__content{display:block}.edit-component-wrap .content-wrap .edit-attr-item-wrap,.edit-component-wrap .style-wrap .edit-attr-item-wrap{border-top:2px solid var(--el-color-info-light-8);padding-top:20px}.edit-component-wrap .content-wrap .edit-attr-item-wrap:first-of-type,.edit-component-wrap .style-wrap .edit-attr-item-wrap:first-of-type{border-top:none;padding-top:0}.diy-nav-slider .el-slider__input{width:100px}.full-container[data-v-c52a9bdb]{height:calc(100vh - 60px)}.preview-iframe[data-v-c52a9bdb]{height:calc(100vh - 160px)}.component-list[data-v-c52a9bdb]{background:var(--el-bg-color)}.component-list ul li[data-v-c52a9bdb]:not(.disabled):hover{color:var(--el-color-primary);background:var(--el-color-primary-light-9)}.diy-view-wrap[data-v-c52a9bdb]{background:var(--el-bg-color-page)}.diy-view-wrap .preview-head[data-v-c52a9bdb]{background-image:url(./diy_preview_head-8c072698.png);background-color:var(--el-bg-color)}.quick-action[data-v-c52a9bdb],.edit-attribute-wrap[data-v-c52a9bdb]{background:var(--el-bg-color)}.edit-attribute-wrap .box-card[data-v-c52a9bdb]{border:none}.diy-view-wrap .preview-head[data-v-c52a9bdb]{padding:28px 15px 0}.diy-view-wrap .preview-head .content-wrap[data-v-c52a9bdb]{height:30px}.diy-view-wrap .preview-head.style-1 .content-wrap .title-wrap[data-v-c52a9bdb]{height:30px;line-height:30px}.diy-view-wrap .preview-head.style-2 .content-wrap .title-wrap[data-v-c52a9bdb]{display:flex;align-items:center}.diy-view-wrap .preview-head.style-2 .content-wrap .title-wrap>div[data-v-c52a9bdb]{height:30px;line-height:30px;max-width:150px;font-size:14px}.diy-view-wrap .preview-head.style-2 .content-wrap .title-wrap>div[data-v-c52a9bdb]:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;max-width:200px}.diy-view-wrap .preview-head.style-3 .content-wrap[data-v-c52a9bdb]{display:flex;align-items:center}.diy-view-wrap .preview-head.style-3 .content-wrap .title-wrap[data-v-c52a9bdb]{height:30px;max-width:85px;margin-right:5px;display:flex;align-items:center;justify-content:center}.diy-view-wrap .preview-head.style-3 .content-wrap .search[data-v-c52a9bdb]{flex:1;padding-right:10px;padding-left:31px;position:relative;background-color:#fff;text-align:left;border-radius:30px;height:30px;line-height:30px;border:1px solid #eeeeee;color:#666;display:flex;align-items:center;margin-right:105px;overflow:hidden;box-sizing:border-box}.diy-view-wrap .preview-head.style-3 .content-wrap .search span[data-v-c52a9bdb]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.diy-view-wrap .preview-head.style-3 .content-wrap .search .iconfont[data-v-c52a9bdb]{color:#909399;font-size:16px;margin-right:5px}.diy-view-wrap .preview-head.style-4 .content-wrap[data-v-c52a9bdb]{display:flex;align-items:center}.diy-view-wrap .preview-head.style-4 .content-wrap .title-wrap[data-v-c52a9bdb]{flex:none;margin:0 5px;max-width:180px;font-size:14px}

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

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