mirror of
https://gitee.com/niucloud-team/niucloud.git
synced 2026-03-12 19:05:28 +00:00
同步niucloud
This commit is contained in:
parent
3a89a12ff0
commit
654791a8f2
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2025 niucloud-admin
|
||||
Copyright (c) 2023 niucloud-admin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
|
||||
@ -46,6 +46,8 @@ class Config extends BaseAdminController
|
||||
['is_site_captcha', 0],
|
||||
['bg', ''],
|
||||
['site_bg', ''],
|
||||
['site_login_logo', ''],
|
||||
['site_login_bg_img', ''],
|
||||
]);
|
||||
(new ConfigService())->setConfig($data);
|
||||
return success('MODIFY_SUCCESS');
|
||||
|
||||
@ -86,4 +86,15 @@ class WeappVersion extends BaseAdminController
|
||||
(new WeappVersionService())->syncSiteGroupAuthWeapp($data['site_group_id']);
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除版本
|
||||
* @param $id
|
||||
* @description 删除版本
|
||||
* @return Response
|
||||
*/
|
||||
public function delVersion($id) {
|
||||
(new WeappVersionService())->delVersion($id);
|
||||
return success();
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,4 +29,4 @@ Route::group(function() {
|
||||
});
|
||||
|
||||
//加载插件路由
|
||||
( new DictLoader("Route") )->load([ 'app_type' => 'adminapi' ]);
|
||||
( new DictLoader("Route") )->load([ 'app_type' => 'adminapi' ]);
|
||||
|
||||
@ -35,6 +35,8 @@ Route::group('wxoplatform', function () {
|
||||
Route::get('authorization/record', 'wxoplatform.Oplatform/getAuthRecord');
|
||||
// 平台提交小程序版本
|
||||
Route::post('weapp/version/commit', 'wxoplatform.WeappVersion/weappCommit');
|
||||
// 删除小程序版本
|
||||
Route::delete('weapp/version/:id', 'wxoplatform.WeappVersion/delVersion');
|
||||
// 获取最后一次提交记录
|
||||
Route::get('weapp/commit/last', 'wxoplatform.WeappVersion/lastCommitRecord');
|
||||
// 获取小程序提交记录
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
<?php
|
||||
|
||||
use Location\Coordinate;
|
||||
use Location\Distance\Vincenty;
|
||||
use think\Container;
|
||||
use think\exception\InvalidArgumentException;
|
||||
use think\Response;
|
||||
use think\facade\Lang;
|
||||
use think\facade\Queue;
|
||||
@ -758,7 +761,11 @@ function cache_remember(string $name = null, $value = '', $tag = null, $options
|
||||
if (is_null($tag)) {
|
||||
Cache::set($name, $value, $options['expire'] ?? null);
|
||||
} else {
|
||||
Cache::tag($tag)->set($name, $value, $options['expire'] ?? null);
|
||||
try {
|
||||
Cache::tag($tag)->set($name, $value, $options['expire'] ?? null);
|
||||
} catch (InvalidArgumentException $e) {
|
||||
Cache::tag($tag)->set($name, $value, $options['expire'] ?? null);
|
||||
}
|
||||
}
|
||||
return $value;
|
||||
|
||||
@ -1158,3 +1165,18 @@ function downloadImage($img_url, $file_name)
|
||||
fclose($fp);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取地图两坐标点之间距离
|
||||
* @param $lat1
|
||||
* @param $lng1
|
||||
* @param $lat2
|
||||
* @param $lng2
|
||||
* @return float
|
||||
*/
|
||||
function get_map_distance($lat1, $lng1, $lat2, $lng2)
|
||||
{
|
||||
$location = new Coordinate($lat1, $lng1);
|
||||
$distance = ( new Vincenty() )->getDistance($location, new Coordinate((float) $lat2, (float) $lng2));
|
||||
return round($distance/1000, 3);
|
||||
}
|
||||
|
||||
@ -26,9 +26,10 @@ return [
|
||||
],
|
||||
'class' => 'app\job\schedule\AutoClearScheduleLog',
|
||||
'function' => ''
|
||||
], [
|
||||
],
|
||||
[
|
||||
'key' => 'auto_clear_poster_qrcode',
|
||||
'name' => '定时清理海报及二维码数据',
|
||||
'name' => '定时清理一周前的海报及二维码数据',
|
||||
'desc' => '',
|
||||
'time' => [
|
||||
'type' => 'day',
|
||||
@ -39,6 +40,19 @@ return [
|
||||
'class' => 'app\job\schedule\AutoClearPosterAndQrcode',
|
||||
'function' => ''
|
||||
],
|
||||
[
|
||||
'key' => 'auto_clear_system_log',
|
||||
'name' => '定时清理一周前的业务日志',
|
||||
'desc' => '',
|
||||
'time' => [
|
||||
'type' => 'day',
|
||||
'day' => 1,
|
||||
'hour' => 1,
|
||||
'min' => 1
|
||||
],
|
||||
'class' => 'app\job\schedule\AutoClearLogFiles',
|
||||
'function' => ''
|
||||
],
|
||||
[
|
||||
'key' => 'transfer_check_finish',
|
||||
'name' => '检验在线转账是否处理完毕',
|
||||
@ -62,7 +76,7 @@ return [
|
||||
],
|
||||
'class' => 'app\job\upgrade\AutoClearUpgradeRecords',
|
||||
'function' => ''
|
||||
],[
|
||||
], [
|
||||
'key' => 'auto_clear_user_log',
|
||||
'name' => '定时清理用户操作日志',
|
||||
'desc' => '',
|
||||
|
||||
@ -146,12 +146,20 @@ class Index extends BaseInstall
|
||||
|
||||
$conn = @mysqli_connect($dbhost, $dbuser, $dbpwd);
|
||||
if ($conn) {
|
||||
$sql_mode_result = mysqli_query($conn, "SELECT @@global.sql_mode");
|
||||
$sql_mode = strtolower($sql_mode_result->fetch_array()[0] ?? '');
|
||||
if (strpos($sql_mode, 'only_full_group_by') !== false) {
|
||||
return fail([
|
||||
"status" => -2,
|
||||
"message" => "请将mysql配置sql_mode字段中的值“ONLY_FULL_GROUP_BY”去掉"
|
||||
]);
|
||||
}
|
||||
|
||||
if (empty($dbname)) {
|
||||
$result = [
|
||||
"status" => 1,
|
||||
"message" => "数据库连接成功"
|
||||
];
|
||||
|
||||
} else {
|
||||
try {
|
||||
if (@mysqli_select_db($conn, $dbname)) {
|
||||
|
||||
@ -56,6 +56,12 @@
|
||||
<div style='float:left' class="mysql-message" id='dbpwdsta'></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="sql-mode-error" style="display: none">
|
||||
<td></td>
|
||||
<td>
|
||||
<div class="message" style="color: red;">请将mysql配置sql_mode字段中的值“ONLY_FULL_GROUP_BY”去掉</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="onetd"><span class="required">*</span>数据库名称:</td>
|
||||
<td>
|
||||
@ -224,7 +230,14 @@
|
||||
type: "post",
|
||||
dataType: 'json',
|
||||
success: function(data){
|
||||
inputBoxPointer('dbpwdsta').innerHTML = data.data.message;
|
||||
if (data.data.status == -2) {
|
||||
inputBoxPointer('dbpwdsta').innerHTML = '数据库连接成功'
|
||||
$('.sql-mode-error .message').text(data.data.message)
|
||||
$('.sql-mode-error').show()
|
||||
} else {
|
||||
$('.sql-mode-error').hide()
|
||||
inputBoxPointer('dbpwdsta').innerHTML = data.data.message;
|
||||
}
|
||||
is_existdb = data.data.status;
|
||||
message = data.data.message;
|
||||
}
|
||||
|
||||
163
niucloud/app/job/schedule/AutoClearLogFiles.php
Normal file
163
niucloud/app/job/schedule/AutoClearLogFiles.php
Normal file
@ -0,0 +1,163 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | Niucloud-admin 企业快速开发的saas管理平台
|
||||
// +----------------------------------------------------------------------
|
||||
// | 官方网址:https://www.niucloud.com
|
||||
// +----------------------------------------------------------------------
|
||||
// | niucloud团队 版权所有 开源版本可自由商用
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Niucloud Team
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\job\schedule;
|
||||
|
||||
use core\base\BaseJob;
|
||||
use think\facade\Log;
|
||||
|
||||
/**
|
||||
* 队列异步调用定时任务 - 清理日志文件
|
||||
*/
|
||||
class AutoClearLogFiles extends BaseJob
|
||||
{
|
||||
|
||||
public function doJob()
|
||||
{
|
||||
Log::write('AutoClearLogFiles 定时清理日志文件开始 ' . date('Y-m-d H:i:s'));
|
||||
try {
|
||||
// 定义需要清理的日志目录数组
|
||||
$log_dirs = [
|
||||
'log',
|
||||
'adminapi/log',
|
||||
'api/log'
|
||||
];
|
||||
|
||||
// 遍历每个日志目录进行清理
|
||||
foreach ($log_dirs as $dir) {
|
||||
$abs_dir = runtime_path($dir);
|
||||
// runtime_path,补充根目录拼接方式
|
||||
if (!is_dir($abs_dir)) {
|
||||
$abs_dir = root_path() . $dir;
|
||||
}
|
||||
$this->clearDirectory($abs_dir);
|
||||
}
|
||||
|
||||
Log::write('AutoClearLogFiles 定时清理日志文件完成 ' . date('Y-m-d H:i:s'));
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Log::write('AutoClearLogFiles 定时清除异常: ' . $e->getMessage() . ' 位置: ' . $e->getFile() . ':' . $e->getLine() . $e->getTraceAsString());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空指定目录下一周前的日志文件和空的子目录
|
||||
*
|
||||
* @param string $directory 目录路径
|
||||
* @param bool $preserveDirectory 是否保留根目录(默认保留)
|
||||
* @return bool 是否成功执行
|
||||
*/
|
||||
function clearDirectory(string $directory, bool $preserveDirectory = true): bool
|
||||
{
|
||||
// 规范化目录路径,统一使用DIRECTORY_SEPARATOR
|
||||
$directory = rtrim(realpath($directory), DIRECTORY_SEPARATOR);
|
||||
|
||||
Log::write('AutoClearLogFiles开始清理目录: ' . $directory);
|
||||
|
||||
// 检查目录是否存在
|
||||
if (!is_dir($directory)) {
|
||||
Log::write('AutoClearLogFiles目录不存在或不是有效目录: ' . $directory);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 计算一周前的时间戳(7天 = 7*24*60*60 = 604800秒)
|
||||
$one_week_ago = time() - 604800;
|
||||
|
||||
// 打开目录
|
||||
$handle = opendir($directory);
|
||||
if (!$handle) {
|
||||
Log::write('AutoClearLogFiles无法打开目录: ' . $directory);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 遍历目录内容
|
||||
while (($entry = readdir($handle)) !== false) {
|
||||
// 跳过当前目录和上级目录
|
||||
if ($entry === '.' || $entry === '..') {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 使用DIRECTORY_SEPARATOR确保路径分隔符正确
|
||||
$path = $directory . DIRECTORY_SEPARATOR . $entry;
|
||||
|
||||
// 递归处理子目录
|
||||
if (is_dir($path)) {
|
||||
// 递归清理子目录(只删一周前文件,保留子目录本身)
|
||||
if (!$this->clearDirectory($path, true)) {
|
||||
Log::write('AutoClearLogFiles递归清理子目录失败: ' . $path);
|
||||
closedir($handle);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查子目录是否为空,若为空则删除
|
||||
$isEmpty = true;
|
||||
$sub_handle = opendir($path);
|
||||
while (($sub_entry = readdir($sub_handle)) !== false) {
|
||||
if ($sub_entry !== '.' && $sub_entry !== '..') {
|
||||
$isEmpty = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
closedir($sub_handle);
|
||||
|
||||
if ($isEmpty && !$preserveDirectory) {
|
||||
if (!rmdir($path)) {
|
||||
Log::write('AutoClearLogFiles删除空目录失败: ' . $path);
|
||||
} else {
|
||||
Log::write('AutoClearLogFiles已删除空目录: ' . $path);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 过滤日志文件(可选:只清理.log后缀的文件,避免误删其他类型文件)
|
||||
$file_ext = pathinfo($path, PATHINFO_EXTENSION);
|
||||
if ($file_ext !== 'log') {
|
||||
Log::write('AutoClearLogFiles跳过非日志文件: ' . $path);
|
||||
continue;
|
||||
}
|
||||
|
||||
// 获取文件的最后修改时间
|
||||
$file_time = filemtime($path);
|
||||
|
||||
// 校验:文件时间有效 且 早于/等于一周前
|
||||
if ($file_time !== false && $file_time <= $one_week_ago) {
|
||||
// 删除一周前的日志文件
|
||||
if (!unlink($path)) {
|
||||
Log::write('AutoClearLogFiles删除日志文件失败: ' . $path);
|
||||
closedir($handle);
|
||||
return false;
|
||||
}
|
||||
Log::write('AutoClearLogFiles已删除一周前的日志文件: ' . $path);
|
||||
} else {
|
||||
// 跳过近期日志文件
|
||||
Log::write('AutoClearLogFiles跳过近期日志文件: ' . $path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 关闭目录句柄
|
||||
closedir($handle);
|
||||
|
||||
// 根目录是否删除(默认保留,避免目录丢失)
|
||||
if (!$preserveDirectory) {
|
||||
Log::write('AutoClearLogFiles准备删除根目录: ' . $directory);
|
||||
if (!rmdir($directory)) {
|
||||
Log::write('AutoClearLogFiles删除根目录失败: ' . $directory);
|
||||
return false;
|
||||
}
|
||||
Log::write('AutoClearLogFiles成功删除根目录: ' . $directory);
|
||||
} else {
|
||||
Log::write('AutoClearLogFiles保留根目录: ' . $directory);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -24,16 +24,14 @@ class AutoClearPosterAndQrcode extends BaseJob
|
||||
{
|
||||
Log::write('AutoClearPosterAndQrcode 定时清除 二维码及海报数据开始' . date('Y-m-d H:i:s'));
|
||||
try {
|
||||
// 清理海报目录
|
||||
$dir = 'upload/poster';
|
||||
$dir = public_path($dir);
|
||||
$res = $this->clearDirectory($dir);
|
||||
|
||||
// 清理二维码目录
|
||||
$qrcode_dir = 'upload/qrcode';
|
||||
$qrcode_dir = public_path($qrcode_dir);
|
||||
$res = $this->clearDirectory($qrcode_dir);
|
||||
|
||||
$dirs = [
|
||||
'upload/poster',
|
||||
'upload/qrcode',
|
||||
];
|
||||
foreach ($dirs as $dir) {
|
||||
$dir = public_path($dir);
|
||||
$res = $this->clearDirectory($dir);
|
||||
}
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Log::write('AutoClearPosterAndQrcode 定时清除异常: ' . $e->getMessage() . ' 位置: ' . $e->getFile() . ':' . $e->getLine() . $e->getTraceAsString());
|
||||
@ -42,7 +40,7 @@ class AutoClearPosterAndQrcode extends BaseJob
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空指定目录下的所有文件和子目录
|
||||
* 清空指定目录下一周前的文件和空的子目录
|
||||
*
|
||||
* @param string $directory 目录路径
|
||||
* @param bool $preserveDirectory 是否保留根目录(默认保留)
|
||||
@ -61,6 +59,9 @@ class AutoClearPosterAndQrcode extends BaseJob
|
||||
return false;
|
||||
}
|
||||
|
||||
// 计算一周前的时间戳(7天 = 7*24*60*60 = 604800秒)
|
||||
$one_week_ago = time() - 604800;
|
||||
|
||||
// 打开目录
|
||||
$handle = opendir($directory);
|
||||
if (!$handle) {
|
||||
@ -80,20 +81,47 @@ class AutoClearPosterAndQrcode extends BaseJob
|
||||
|
||||
// 递归处理子目录
|
||||
if (is_dir($path)) {
|
||||
// 递归清空子目录
|
||||
if (!$this->clearDirectory($path, false)) {
|
||||
// 递归清理子目录(只删一周前文件,保留子目录本身)
|
||||
if (!$this->clearDirectory($path, true)) {
|
||||
Log::write('AutoClearPosterAndQrcode递归清理子目录失败: ' . $path);
|
||||
closedir($handle);
|
||||
return false;
|
||||
}
|
||||
Log::write('AutoClearPosterAndQrcode已递归删除子目录: ' . $path);
|
||||
// 子目录已经在递归调用中被删除,不需要再次删除
|
||||
|
||||
// 检查子目录是否为空,若为空则删除(可选逻辑,根据需求调整)
|
||||
$isEmpty = true;
|
||||
$sub_handle = opendir($path);
|
||||
while (($sub_entry = readdir($sub_handle)) !== false) {
|
||||
if ($sub_entry !== '.' && $sub_entry !== '..') {
|
||||
$isEmpty = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
closedir($sub_handle);
|
||||
|
||||
if ($isEmpty && !$preserveDirectory) {
|
||||
if (!rmdir($path)) {
|
||||
Log::write('AutoClearPosterAndQrcode删除空目录失败: ' . $path);
|
||||
} else {
|
||||
Log::write('AutoClearPosterAndQrcode已删除空目录: ' . $path);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 删除文件
|
||||
if (!unlink($path)) {
|
||||
Log::write('AutoClearPosterAndQrcode删除文件失败: ' . $path);
|
||||
closedir($handle);
|
||||
return false;
|
||||
// 获取文件的创建/修改时间(优先用修改时间filemtime,更贴合业务)
|
||||
$file_time = filemtime($path);
|
||||
|
||||
// 校验:文件时间有效 且 早于一周前
|
||||
if ($file_time !== false && $file_time <= $one_week_ago) {
|
||||
// 删除一周前的文件
|
||||
if (!unlink($path)) {
|
||||
Log::write('AutoClearPosterAndQrcode删除文件失败: ' . $path);
|
||||
closedir($handle);
|
||||
return false;
|
||||
}
|
||||
Log::write('AutoClearPosterAndQrcode已删除一周前的文件: ' . $path);
|
||||
} else {
|
||||
// 跳过近期文件,记录日志(可选)
|
||||
Log::write('AutoClearPosterAndQrcode跳过近期文件: ' . $path);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -101,7 +129,7 @@ class AutoClearPosterAndQrcode extends BaseJob
|
||||
// 关闭目录句柄
|
||||
closedir($handle);
|
||||
|
||||
// 是否删除根目录本身
|
||||
// 根目录是否删除(默认保留,避免目录丢失)
|
||||
if (!$preserveDirectory) {
|
||||
Log::write('AutoClearPosterAndQrcode准备删除根目录: ' . $directory);
|
||||
if (!rmdir($directory)) {
|
||||
@ -115,6 +143,4 @@ class AutoClearPosterAndQrcode extends BaseJob
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@ -69,6 +69,7 @@ return [
|
||||
'CLOUD_BUILD_AUTH_CODE_NOT_FOUND' => '请先填写授权码',
|
||||
'TASK_CYCLE_ERROR' => '任务周期填写错误',
|
||||
'UPGRADE_TASK_EXIST' => '有正在执行的升级任务,可以展开正在升级的任务,也可以在开发>更新缓存中清除缓存重新开始升级',
|
||||
'ZIP_ARCHIVE_NOT_EXIST' => '请先安装或启用zip扩展',
|
||||
//登录注册重置账号....
|
||||
|
||||
'LOGIN_SUCCESS' => '登录成功',
|
||||
|
||||
@ -20,9 +20,11 @@ use app\service\admin\sys\MenuService;
|
||||
use app\service\admin\sys\RoleService;
|
||||
use app\service\admin\user\UserRoleService;
|
||||
use app\service\admin\user\UserService;
|
||||
use app\service\core\niucloud\CoreAuthService;
|
||||
use app\service\core\site\CoreSiteService;
|
||||
use core\base\BaseAdminService;
|
||||
use core\exception\AuthException;
|
||||
use core\exception\CommonException;
|
||||
use Exception;
|
||||
use think\facade\Cache;
|
||||
|
||||
@ -64,6 +66,7 @@ class AuthService extends BaseAdminService
|
||||
*/
|
||||
public function checkRole(Request $request)
|
||||
{
|
||||
$this->checkAuthinfo($request);
|
||||
|
||||
$rule = strtolower(trim($request->rule()->getRule()));
|
||||
$method = strtolower(trim($request->method()));
|
||||
@ -96,6 +99,33 @@ class AuthService extends BaseAdminService
|
||||
|
||||
}
|
||||
|
||||
public function checkAuthinfo(Request $request) {
|
||||
$rule = strtolower(trim($request->rule()->getRule()));
|
||||
$method = strtolower(trim($request->method()));
|
||||
|
||||
if ($method == 'get') return;
|
||||
|
||||
$ignore = ['niucloud/authinfo', 'upgrade', 'niucloud/build', 'sys/cache/clear'];
|
||||
foreach ($ignore as $item) {
|
||||
if (strpos($rule, $item) !== false) return;
|
||||
}
|
||||
|
||||
$authinfo = (new CoreAuthService())->getAuthInfo()['data'] ?? [];;
|
||||
if (empty($authinfo)) return;
|
||||
|
||||
if (!$this->isCheckDomain()) return;
|
||||
|
||||
$site_address = $authinfo['site_address'] ?? '';
|
||||
$domain = request()->domain();
|
||||
if (!empty($site_address) && strpos($domain, $site_address) !== false) return;
|
||||
|
||||
throw new CommonException("授权域名校验失败!请确保当前访问域名与授权码绑定的域名一致");
|
||||
}
|
||||
|
||||
private function isCheckDomain() {
|
||||
return !(request()->ip() == '127.0.0.1' || request()->host() == 'localhost');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取授权用户的权限信息
|
||||
* @return mixed
|
||||
|
||||
@ -40,6 +40,8 @@ class ConfigService extends BaseAdminService
|
||||
'is_site_captcha' => $info['is_site_captcha'] ?? 0,//是否启用站点验证码
|
||||
'bg' => $info['bg'] ?? '',//平台登录端 背景
|
||||
'site_bg' => $info['site_bg'] ?? '',//站点登录端 背景
|
||||
'site_login_logo' => $info['site_login_logo'] ?? '',//站点登录端 背景
|
||||
'site_login_bg_img' => $info['site_login_bg_img'] ?? '',//站点登录端 背景
|
||||
];
|
||||
}
|
||||
|
||||
@ -55,6 +57,8 @@ class ConfigService extends BaseAdminService
|
||||
'is_site_captcha' => $data['is_site_captcha'] ?? 0,//是否启用站点验证码
|
||||
'bg' => $data['bg'] ?? '',//平台登录端 背景
|
||||
'site_bg' => $data['site_bg'] ?? '',//站点登录端 背景
|
||||
'site_login_logo' => $data['site_login_logo'] ?? '',//站点登录端 背景
|
||||
'site_login_bg_img' => $data['site_login_bg_img'] ?? '',//站点登录端 背景
|
||||
];
|
||||
(new CoreConfigService())->setConfig($this->site_id, ConfigKeyDict::ADMIN_LOGIN, $config);
|
||||
return true;
|
||||
|
||||
@ -205,7 +205,7 @@ class GenerateService extends BaseAdminService
|
||||
|
||||
$table_id = $res->id;
|
||||
$add_column_data = [];
|
||||
$default_column = ['id', 'create_time', 'update_time'];
|
||||
$default_column = ['id', 'create_time', 'update_time', 'site_id', 'delete_time'];
|
||||
foreach ($fields as $k => $v){
|
||||
$required = 0;
|
||||
if ($v['notnull'] && !$v['primary'] && !in_array($v['name'], $default_column)) {
|
||||
|
||||
@ -106,7 +106,7 @@ class WebEditGenerator extends BaseGenerator
|
||||
{
|
||||
$content = '';
|
||||
foreach ($this->tableColumn as $column) {
|
||||
if (!$column['is_insert'] || !$column['is_update'] || $column['is_pk']) {
|
||||
if (!$column['is_insert'] || !$column['is_update'] || $column['is_pk'] || $column['is_delete']) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@ -156,7 +156,7 @@ class WebEditPageGenerator extends BaseGenerator
|
||||
{
|
||||
$content = '';
|
||||
foreach ($this->tableColumn as $column) {
|
||||
if (!$column['is_insert'] || !$column['is_update'] || $column['is_pk']) {
|
||||
if (!$column['is_insert'] || !$column['is_update'] || $column['is_pk'] || $column['is_delete']) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@ -17,6 +17,7 @@ use app\service\core\niucloud\CoreModuleService;
|
||||
use app\service\core\sys\CoreConfigService;
|
||||
use core\base\BaseAdminService;
|
||||
use core\exception\CommonException;
|
||||
use think\facade\Cache;
|
||||
|
||||
/**
|
||||
* 消息管理服务层
|
||||
@ -47,6 +48,7 @@ class NiucloudService extends BaseAdminService
|
||||
$auth_info = $service->getAuthInfo()['data'] ?? [];
|
||||
if (empty($auth_info)) throw new CommonException('AUTH_NOT_EXISTS');
|
||||
$service->clearAccessToken();
|
||||
Cache::set("authinfo", null);
|
||||
return $this->core_config_service->setConfig(0,ConfigKeyDict::NIUCLOUD_CONFIG, $data);
|
||||
}
|
||||
|
||||
|
||||
@ -526,7 +526,7 @@ class SiteService extends BaseAdminService
|
||||
{
|
||||
$auth_menu_list = (new AuthService())->getAuthMenuList(1);
|
||||
$auth_menu_list = array_column($auth_menu_list, null, 'menu_key');
|
||||
$auth_menu_list = $auth_menu_list['addon'];
|
||||
$auth_menu_list = $auth_menu_list['addon'] ?? [];
|
||||
|
||||
$list = $this->showCustomer(false);//获取对应的需要展示的key
|
||||
$addon_menu_list = SiteDict::getAddonChildMenu();
|
||||
@ -550,9 +550,11 @@ class SiteService extends BaseAdminService
|
||||
'is_show' => '1',
|
||||
];
|
||||
$children = [];
|
||||
foreach ($auth_menu_list['children'] as $datum_item) {
|
||||
if (in_array($datum_item['menu_key'], $menu_key_list)) {
|
||||
$children[] = $datum_item;
|
||||
if(!empty($auth_menu_list)){
|
||||
foreach ($auth_menu_list['children'] as $datum_item) {
|
||||
if (in_array($datum_item['menu_key'], $menu_key_list)) {
|
||||
$children[] = $datum_item;
|
||||
}
|
||||
}
|
||||
}
|
||||
$temp_menu['children'] = $children;
|
||||
|
||||
@ -128,15 +128,15 @@ class UpgradeService extends BaseAdminService
|
||||
// 检测全部目录及文件是否可读可写,忽略指定目录
|
||||
|
||||
// 忽略指定目录,admin
|
||||
$exclude_admin_dir = [ 'dist', 'node_modules', '.git' ];
|
||||
$exclude_admin_dir = [ 'dist', 'node_modules', '.git', '.user.ini' ];
|
||||
$check_res = checkDirPermissions(project_path() . 'admin', [], $exclude_admin_dir);
|
||||
|
||||
// 忽略指定目录,uni-app
|
||||
$exclude_uniapp_dir = [ 'dist', 'node_modules', '.git' ];
|
||||
$exclude_uniapp_dir = [ 'dist', 'node_modules', '.git', '.user.ini' ];
|
||||
$check_res = array_merge2($check_res, checkDirPermissions(project_path() . 'uni-app', [], $exclude_uniapp_dir));
|
||||
|
||||
// 忽略指定目录,web
|
||||
$exclude_web_dir = [ '.nuxt', '.output', 'dist', 'node_modules', '.git' ];
|
||||
$exclude_web_dir = [ '.nuxt', '.output', 'dist', 'node_modules', '.git', '.user.ini' ];
|
||||
$check_res = array_merge2($check_res, checkDirPermissions(project_path() . 'web', [], $exclude_web_dir));
|
||||
|
||||
// 忽略指定目录,niucloud
|
||||
@ -314,8 +314,6 @@ class UpgradeService extends BaseAdminService
|
||||
}
|
||||
if (!in_array($step, [ 'upgradeComplete', 'restoreComplete' ])) {
|
||||
Cache::set($this->cache_key, $this->upgrade_task);
|
||||
} else {
|
||||
$this->clearUpgradeTask(2);
|
||||
}
|
||||
} catch (CloudBuildException $e) {
|
||||
if (strpos($e->getMessage(), '队列') !== false) {
|
||||
@ -467,7 +465,7 @@ class UpgradeService extends BaseAdminService
|
||||
// 覆盖文件
|
||||
if (is_dir($code_dir . $version_no)) {
|
||||
// 忽略环境变量文件
|
||||
$exclude_files = [ '.env.development', '.env.production', '.env', '.env.dev', '.env.product' ];
|
||||
$exclude_files = [ '.env.development', '.env.production', '.env', '.env.dev', '.env.product', 'favicon.ico', 'niucloud.ico' ];
|
||||
dir_copy($code_dir . $version_no, $to_dir, exclude_files: $exclude_files);
|
||||
if ($addon != AddonDict::FRAMEWORK_KEY) {
|
||||
( new CoreAddonInstallService($addon) )->installDir();
|
||||
@ -630,15 +628,57 @@ class UpgradeService extends BaseAdminService
|
||||
$sql_data = array_filter($this->getSqlQuery($sql_content));
|
||||
|
||||
if (!empty($sql_data)) {
|
||||
try {
|
||||
$default_collation = Db::query("SHOW VARIABLES LIKE 'collation_database'")[0]['Value'] ?? 'utf8mb4_general_ci';
|
||||
} catch (\Exception $e) {
|
||||
$default_collation = 'utf8mb4_general_ci';
|
||||
}
|
||||
foreach ($sql_data as $sql) {
|
||||
$sql = $prefix ? $this->handleSqlPrefix($sql, $prefix) : $sql;
|
||||
Db::query($sql);
|
||||
// 处理成默认排序规则
|
||||
$sql = preg_replace_callback(
|
||||
'/\bCOLLATE\s*(=)?\s*[`"\']?([a-zA-Z0-9_]+)[`"\']?/i',
|
||||
function ($matches) use ($default_collation) {
|
||||
return "COLLATE " . $default_collation;
|
||||
},
|
||||
$sql
|
||||
);
|
||||
// 判断是否是新增字段
|
||||
$pattern = '/^ALTER\s+TABLE\s+(`?)(\w+)\1\s+ADD(?:\s+COLUMN)?\s+(`?)(\w+)\3\s+/i';
|
||||
if (preg_match($pattern, $sql, $matches)) {
|
||||
if (!$this->columnExists($matches[2], $matches[4])) {
|
||||
Db::query($sql);
|
||||
}
|
||||
}else{
|
||||
Db::query($sql);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断数据表中某个字段是否存在
|
||||
*
|
||||
* @param string $table 表名(不带前缀)
|
||||
* @param string $column 字段名
|
||||
* @param string|null $database 指定数据库名(可选,默认当前连接的数据库)
|
||||
* @return bool
|
||||
*/
|
||||
private function columnExists(string $table, string $column, ?string $database = null): bool
|
||||
{
|
||||
$db = env('database.database', '');
|
||||
|
||||
$count = Db::query(
|
||||
"SELECT COUNT(*) AS cnt FROM information_schema.COLUMNS
|
||||
WHERE table_schema = ? AND table_name = ? AND column_name = ?",
|
||||
[$db, $table, $column]
|
||||
);
|
||||
|
||||
return (int)$count[0]['cnt'] > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新菜单
|
||||
* @return array|true
|
||||
@ -704,20 +744,10 @@ class UpgradeService extends BaseAdminService
|
||||
foreach ($log[ 'data' ][ 0 ] as $item) {
|
||||
if ($item[ 'code' ] == 0) {
|
||||
$this->upgrade_task[ 'step' ] = 'gteCloudBuildLog';
|
||||
$this->upgrade_task[ 'error' ][] = $item[ 'msg' ];
|
||||
// $this->upgrade_task[ 'error' ][] = $item[ 'msg' ];
|
||||
$this->upgrade_task[ 'cloud_build_error' ] = $item[ 'msg' ];
|
||||
Cache::set($this->cache_key, $this->upgrade_task);
|
||||
|
||||
$fail_reason = [
|
||||
'Message' => '失败原因 云编译错误:' . $item[ 'msg' ],
|
||||
'File' => '',
|
||||
'Line' => '',
|
||||
'Trace' => ''
|
||||
];
|
||||
|
||||
( new CoreCloudBuildService() )->clearTask();
|
||||
|
||||
$this->upgradeErrorHandle($fail_reason);
|
||||
|
||||
return true;
|
||||
}
|
||||
if (!in_array($item[ 'action' ], $this->upgrade_task[ 'log' ])) {
|
||||
@ -746,7 +776,13 @@ class UpgradeService extends BaseAdminService
|
||||
}
|
||||
// 执行完成,更新升级记录状态,备份记录状态
|
||||
( new UpgradeRecordsService() )->complete($this->upgrade_task[ 'key' ]);
|
||||
$this->clearUpgradeTask(2);
|
||||
if (!isset($this->upgrade_task['cloud_build_error'])) {
|
||||
$this->upgrade_task['step'] = 'upgradeComplete';
|
||||
$this->clearUpgradeTask(2);
|
||||
} else {
|
||||
$this->upgrade_task['step'] = 'upgradeComplete';
|
||||
Cache::set($this->cache_key, $this->upgrade_task);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -780,7 +816,7 @@ class UpgradeService extends BaseAdminService
|
||||
if (!isset($this->upgrade_task['is_need_backup']) || $this->upgrade_task['is_need_backup']) {
|
||||
$backup_dir = $this->upgrade_dir . $this->upgrade_task[ 'key' ] . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'code' . DIRECTORY_SEPARATOR;
|
||||
} else {
|
||||
$backup_dir = $this->upgrade_dir . $this->upgrade_task['upgrade_content']['last_backup'][ 'key' ] . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'code' . DIRECTORY_SEPARATOR;
|
||||
$backup_dir = $this->upgrade_dir . $this->upgrade_task['upgrade_content']['last_backup'][ 'backup_key' ] . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'code' . DIRECTORY_SEPARATOR;
|
||||
}
|
||||
try {
|
||||
if (is_dir($backup_dir)) {
|
||||
@ -803,7 +839,7 @@ class UpgradeService extends BaseAdminService
|
||||
if (!isset($this->upgrade_task['is_need_backup']) || $this->upgrade_task['is_need_backup']) {
|
||||
$backup_dir = $this->upgrade_dir . $this->upgrade_task[ 'key' ] . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'sql' . DIRECTORY_SEPARATOR;
|
||||
} else {
|
||||
$backup_dir = $this->upgrade_dir . $this->upgrade_task['upgrade_content']['last_backup'][ 'key' ] . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'sql' . DIRECTORY_SEPARATOR;
|
||||
$backup_dir = $this->upgrade_dir . $this->upgrade_task['upgrade_content']['last_backup'][ 'backup_key' ] . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'sql' . DIRECTORY_SEPARATOR;
|
||||
}
|
||||
try {
|
||||
if (is_dir($backup_dir)) {
|
||||
@ -834,7 +870,11 @@ class UpgradeService extends BaseAdminService
|
||||
|
||||
public function restoreComplete()
|
||||
{
|
||||
( new UpgradeRecordsService() )->failed($this->upgrade_task[ 'key' ], $this->upgrade_task['error']);
|
||||
$error = $this->upgrade_task['error'] ?? [];
|
||||
if (isset($this->upgrade_task['cloud_build_error'])) $error[] = $this->upgrade_task['cloud_build_error'];
|
||||
( new UpgradeRecordsService() )->failed($this->upgrade_task[ 'key' ], $error);
|
||||
$this->upgrade_task['step'] = 'restoreComplete';
|
||||
Cache::set($this->cache_key, $this->upgrade_task);
|
||||
$this->clearUpgradeTask(2);
|
||||
return true;
|
||||
}
|
||||
@ -959,6 +999,15 @@ class UpgradeService extends BaseAdminService
|
||||
];
|
||||
$this->upgradeErrorHandle($fail_reason);
|
||||
break;
|
||||
case 'cloud_build_error_rollback':
|
||||
$fail_reason = [
|
||||
'Message' => '失败原因:云编译失败,错误原因:' . $this->upgrade_task['cloud_build_error'],
|
||||
'File' => '',
|
||||
'Line' => '',
|
||||
'Trace' => ''
|
||||
];
|
||||
$this->upgradeErrorHandle($fail_reason);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,6 +124,9 @@ class StorageConfigService extends BaseAdminService
|
||||
{
|
||||
$config['default'] = $storage_type;
|
||||
}else if ($config['default'] == $storage_type) {
|
||||
if ($this->site_id == 0){
|
||||
throw new AdminException('SUPER_UPLOAD_STORAGE_TYPE_ALL_CLOSE');
|
||||
}
|
||||
throw new AdminException('UPLOAD_STORAGE_TYPE_ALL_CLOSE');
|
||||
// $config['default'] = '';
|
||||
}
|
||||
|
||||
@ -15,6 +15,7 @@ use app\dict\sys\CloudDict;
|
||||
use app\model\weapp\WeappVersion;
|
||||
use app\service\core\wxoplatform\CoreOplatformService;
|
||||
use core\base\BaseAdminService;
|
||||
use think\facade\Log;
|
||||
|
||||
/**
|
||||
*/
|
||||
@ -92,14 +93,19 @@ class OplatformServerService extends BaseAdminService
|
||||
* @return true
|
||||
*/
|
||||
private function weappAuditSuccess($message) {
|
||||
$site_id = CoreOplatformService::getSiteIdByAuthorizerAppid($message['ToUserName']);
|
||||
CoreOplatformService::releaseWeapp($site_id);
|
||||
(new WeappVersion())->where(['site_id' => $site_id, 'status' => CloudDict::APPLET_AUDITING ])->update(['status' => CloudDict::APPLET_PUBLISHED ]);
|
||||
try {
|
||||
$site_id = CoreOplatformService::getSiteIdByAuthorizerAppid($message['ToUserName']);
|
||||
CoreOplatformService::releaseWeapp($site_id);
|
||||
(new WeappVersion())->where(['site_id' => $site_id, 'status' => CloudDict::APPLET_AUDITING ])->update(['status' => CloudDict::APPLET_PUBLISHED ]);
|
||||
|
||||
// 发布后重新设置下域名
|
||||
request()->siteId($site_id);
|
||||
(new WeappVersionService())->setDomain();
|
||||
return true;
|
||||
// 发布后重新设置下域名
|
||||
request()->siteId($site_id);
|
||||
(new WeappVersionService())->setDomain();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Log::write($message['ToUserName'] . "小程序审核通过处理异常");
|
||||
Log::write($e->getTrace());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -219,6 +219,18 @@ class WeappVersionService extends BaseAdminService
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除版本
|
||||
* @param $id
|
||||
* @return void
|
||||
*/
|
||||
public function delVersion($id) {
|
||||
$version = (new WxOplatfromWeappVersion())->where([ ['id', '=', $id] ])->findOrEmpty();
|
||||
if ($version->isEmpty()) throw new CommonException('NOT_YET_PRESENT_TEMPLATE_LIBRARY');
|
||||
|
||||
(new WxOplatfromWeappVersion())->where([ ['id', '=', $id] ])->delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* 站点提交
|
||||
* @return true
|
||||
|
||||
@ -420,6 +420,11 @@ class CoreAddonInstallService extends CoreAddonBaseService
|
||||
$sql_arr = parse_sql($sql);
|
||||
if (!empty($sql_arr)) {
|
||||
$prefix = config('database.connections.mysql.prefix');
|
||||
try {
|
||||
$default_collation = Db::query("SHOW VARIABLES LIKE 'collation_database'")[0]['Value'] ?? 'utf8mb4_general_ci';
|
||||
} catch (\Exception $e) {
|
||||
$default_collation = 'utf8mb4_general_ci';
|
||||
}
|
||||
Db::startTrans();
|
||||
try {
|
||||
foreach ($sql_arr as $sql_line) {
|
||||
@ -427,6 +432,14 @@ class CoreAddonInstallService extends CoreAddonBaseService
|
||||
if (!empty($sql_line)) {
|
||||
$sql_line = str_ireplace('{{prefix}}', $prefix, $sql_line);
|
||||
$sql_line = str_ireplace('INSERT INTO ', 'INSERT IGNORE INTO ', $sql_line);
|
||||
// 处理成默认排序规则
|
||||
$sql_line = preg_replace_callback(
|
||||
'/\bCOLLATE\s*(=)?\s*[`"\']?([a-zA-Z0-9_]+)[`"\']?/i',
|
||||
function ($matches) use ($default_collation) {
|
||||
return "COLLATE " . $default_collation;
|
||||
},
|
||||
$sql_line
|
||||
);
|
||||
Db::execute($sql_line);
|
||||
}
|
||||
}
|
||||
|
||||
@ -191,12 +191,20 @@ trait WapTrait
|
||||
*/
|
||||
public function installPageCode($compile_path, $addon = '')
|
||||
{
|
||||
if (!file_exists($this->geAddonPackagePath($this->addon) . 'uni-app-pages.php')) return;
|
||||
if (is_array($addon)){
|
||||
foreach ($addon as $item_addon){
|
||||
if (!file_exists($this->geAddonPackagePath($item_addon) . 'uni-app-pages.php')) {
|
||||
continue;
|
||||
}
|
||||
$uniapp_pages = require $this->geAddonPackagePath($item_addon) . 'uni-app-pages.php';
|
||||
}
|
||||
}else{
|
||||
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;
|
||||
$uniapp_pages = require $this->geAddonPackagePath($this->addon) . 'uni-app-pages.php';
|
||||
if (empty($uniapp_pages[ 'pages' ])) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$pages = [];
|
||||
|
||||
100
niucloud/app/service/core/map/CoreMapService.php
Normal file
100
niucloud/app/service/core/map/CoreMapService.php
Normal file
@ -0,0 +1,100 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | Niucloud-admin 企业快速开发的多应用管理平台
|
||||
// +----------------------------------------------------------------------
|
||||
// | 官方网址:https://www.niucloud.com
|
||||
// +----------------------------------------------------------------------
|
||||
// | niucloud团队 版权所有 开源版本可自由商用
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Niucloud Team
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\service\core\map;
|
||||
|
||||
use app\service\core\sys\CoreConfigService;
|
||||
use core\base\BaseCoreService;
|
||||
use core\exception\CommonException;
|
||||
|
||||
/**
|
||||
* 地图服务层
|
||||
* Class CoreMapService
|
||||
* @package app\service\core\map
|
||||
*/
|
||||
class CoreMapService extends BaseCoreService
|
||||
{
|
||||
//系统配置文件
|
||||
public $core_config_service;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->core_config_service = new CoreConfigService();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取规划路线
|
||||
* @param $site_id
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function getPolyline($site_id, $params)
|
||||
{
|
||||
|
||||
$url = 'https://apis.map.qq.com/ws/direction/v1/driving/';
|
||||
$map = $this->getMapConfig($site_id);
|
||||
|
||||
$get_data = [
|
||||
'key' => $map[ 'key' ],
|
||||
'from' => $params[ 'from' ],
|
||||
'to' => $params[ 'to' ], // 是否返回周边POI列表:1.返回;0不返回(默认)
|
||||
];
|
||||
|
||||
$url = $url . '?' . http_build_query($get_data);
|
||||
$curl = curl_init();
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($curl, CURLOPT_HEADER, 0);
|
||||
curl_setopt($curl, CURLOPT_URL, $url);
|
||||
curl_setopt($curl, CURLOPT_TIMEOUT, 1);
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
|
||||
|
||||
$res = curl_exec($curl);
|
||||
$res = json_decode($res, true);
|
||||
if ($res) {
|
||||
curl_close($curl);
|
||||
|
||||
if ($res[ 'status' ] == 0) {
|
||||
return $res['result'];
|
||||
} else {
|
||||
throw new CommonException('请检查地图配置:'.$res[ 'message' ]);
|
||||
}
|
||||
|
||||
} else {
|
||||
$error = curl_errno($curl);
|
||||
curl_close($curl);
|
||||
throw new CommonException($error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取地图配置
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getMapConfig($site_id)
|
||||
{
|
||||
$info = ( new CoreConfigService() )->getConfig($site_id, 'MAPKEY');
|
||||
if (empty($info)) {
|
||||
$info = [];
|
||||
$info[ 'value' ] = [
|
||||
'key' => 'IZQBZ-3UHEU-WTCVD-2464U-I5N4V-ZFFU3',
|
||||
'is_open' => 1, // 是否开启定位
|
||||
'valid_time' => 5 // 定位有效期/分钟,过期后将重新获取定位信息,0为不过期
|
||||
];
|
||||
}
|
||||
|
||||
$info[ 'value' ][ 'is_open' ] = $info[ 'value' ][ 'is_open' ] ?? 1;
|
||||
$info[ 'value' ][ 'valid_time' ] = $info[ 'value' ][ 'valid_time' ] ?? 5;
|
||||
return $info[ 'value' ];
|
||||
}
|
||||
}
|
||||
@ -15,6 +15,7 @@ use core\util\niucloud\BaseNiucloudClient;
|
||||
use core\util\niucloud\http\Response;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use think\facade\Cache;
|
||||
|
||||
/**
|
||||
* 官网授权管理服务层
|
||||
@ -28,10 +29,14 @@ class CoreAuthService extends BaseNiucloudClient
|
||||
*/
|
||||
public function getAuthInfo()
|
||||
{
|
||||
$cache = Cache::get("authinfo");
|
||||
if (!empty($cache)) return $cache;
|
||||
|
||||
$auth_info = $this->httpGet('authinfo', ['code' => $this->code, 'secret' => $this->secret, 'product_key' => self::PRODUCT ]);
|
||||
if(!empty($auth_info['data'])){
|
||||
$auth_info['data']['address_type'] = true;
|
||||
if($auth_info['data']['site_address'] != $_SERVER['HTTP_HOST']) $auth_info['data']['address_type'] = false;
|
||||
Cache::set("authinfo", $auth_info, 7200);
|
||||
}
|
||||
return $auth_info;
|
||||
}
|
||||
|
||||
@ -58,13 +58,10 @@ class CoreCloudBuildService extends BaseCoreService
|
||||
$web_dir = $this->root_path . 'web' . DIRECTORY_SEPARATOR;
|
||||
$wap_dir = $this->root_path . 'uni-app' . DIRECTORY_SEPARATOR;
|
||||
|
||||
try {
|
||||
if (!is_dir($admin_dir)) throw new CommonException('ADMIN_DIR_NOT_EXIST');
|
||||
if (!is_dir($web_dir)) throw new CommonException('WEB_DIR_NOT_EXIST');
|
||||
if (!is_dir($wap_dir)) throw new CommonException('UNIAPP_DIR_NOT_EXIST');
|
||||
} catch (\Exception $e) {
|
||||
throw new CommonException($e->getMessage());
|
||||
}
|
||||
if (!is_dir($admin_dir)) throw new CommonException('ADMIN_DIR_NOT_EXIST');
|
||||
if (!is_dir($web_dir)) throw new CommonException('WEB_DIR_NOT_EXIST');
|
||||
if (!is_dir($wap_dir)) throw new CommonException('UNIAPP_DIR_NOT_EXIST');
|
||||
if (!class_exists('ZipArchive')) throw new CommonException('ZIP_ARCHIVE_NOT_EXIST');
|
||||
|
||||
$data = [
|
||||
// 目录检测
|
||||
@ -161,6 +158,7 @@ class CoreCloudBuildService extends BaseCoreService
|
||||
'timestamp' => time(),
|
||||
'token' => $action_token[ 'data' ][ 'token' ] ?? ''
|
||||
];
|
||||
set_time_limit(0);
|
||||
$response = ( new CloudService(true) )->httpPost('cloud/build?' . http_build_query($query), [
|
||||
'multipart' => [
|
||||
[
|
||||
@ -292,21 +290,21 @@ class CoreCloudBuildService extends BaseCoreService
|
||||
$zip->extractTo($temp_dir . 'download');
|
||||
$zip->close();
|
||||
|
||||
// if (is_dir($temp_dir . 'download' . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . 'admin')) {
|
||||
// del_target_dir(public_path() .'admin', true);
|
||||
// }
|
||||
// if (is_dir($temp_dir . 'download' . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . 'web')) {
|
||||
// del_target_dir(public_path() .'web', true);
|
||||
// }
|
||||
// if (is_dir($temp_dir . 'download' . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . 'wap')) {
|
||||
// del_target_dir(public_path() .'wap', true);
|
||||
// }
|
||||
|
||||
dir_copy($temp_dir . 'download', root_path());
|
||||
$exclude_files = ['favicon.ico', 'niucloud.ico'];
|
||||
dir_copy($temp_dir . 'download', root_path(), exclude_files: $exclude_files);
|
||||
|
||||
$this->clearTask();
|
||||
} else {
|
||||
$log[] = [ 'code' => 0, 'msg' => '编译包解压失败', 'action' => '编译包解压', 'percent' => '100' ];
|
||||
// 压缩包解压失败 尝试重新下载
|
||||
if (!isset($this->build_task[ 'retry' ])) {
|
||||
unlink($zip_resource);
|
||||
$this->build_task['retry'] = 1;
|
||||
unset($this->build_task['index']);
|
||||
Cache::set($this->cache_key, $this->build_task);
|
||||
$log[] = [ 'code' => 1, 'msg' => '编译包解压失败,尝试重新下载', 'action' => '编译包解压失败,尝试重新下载', 'percent' => '100' ];
|
||||
} else {
|
||||
$log[] = [ 'code' => 0, 'msg' => '编译包解压失败', 'action' => '编译包解压', 'percent' => '100' ];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -280,7 +280,7 @@ class CorePayService extends BaseCoreService
|
||||
]
|
||||
);
|
||||
if (env('queue.state', true)) {
|
||||
PayReturnTo::dispatch([ 'site_id' => $site_id, 'out_trade_no' => $out_trade_no ], secs: 60);
|
||||
PayReturnTo::dispatch([ 'site_id' => $site_id, 'out_trade_no' => $out_trade_no ], secs: 300);
|
||||
}
|
||||
}
|
||||
return $pay_result;
|
||||
|
||||
@ -11,6 +11,7 @@
|
||||
|
||||
namespace app\service\core\sys;
|
||||
|
||||
use app\dict\sys\StorageDict;
|
||||
use app\model\sys\SysAttachment;
|
||||
use app\service\core\upload\CoreFileService;
|
||||
use core\base\BaseCoreService;
|
||||
@ -128,13 +129,29 @@ class CoreAttachmentService extends BaseCoreService
|
||||
if(empty($list))
|
||||
throw new UploadFileException('PLEACE_SELECT_IMAGE');
|
||||
|
||||
$ids = array_column($list, 'att_id');
|
||||
$del_success_ids = [];
|
||||
foreach($list as $v){
|
||||
$file_driver = (new CoreFileService())->driver($site_id, $v['storage_type']);
|
||||
//读取上传附件的信息用于后续得校验和数据写入,删除失败直接通过
|
||||
$file_driver->delete($v['path']);
|
||||
try {
|
||||
$file_driver = (new CoreFileService())->driver($site_id, $v['storage_type']);
|
||||
//读取上传附件的信息用于后续得校验和数据写入,删除失败直接通过
|
||||
$file_driver->delete($v['path']);
|
||||
} catch (\Exception $e) {
|
||||
// 如果附件在云存储中删除失败后 尝试该资源是否是在平台云存储中
|
||||
if ($v['storage_type'] != StorageDict::LOCAL) {
|
||||
try {
|
||||
$file_driver = (new CoreFileService())->driver(0, $v['storage_type']);
|
||||
$file_driver->delete($v['path']);
|
||||
} catch (\Exception $e) {
|
||||
if (!empty($del_success_ids)) {
|
||||
$this->model->destroy($del_success_ids);
|
||||
}
|
||||
throw new UploadFileException($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
$del_success_ids[] = $v['att_id'];
|
||||
}
|
||||
$this->model->destroy($ids);
|
||||
$this->model->destroy($del_success_ids);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -66,7 +66,8 @@ class CoreWechatConfigService extends BaseCoreService
|
||||
'token' => $data[ 'token' ] ?? '',
|
||||
'encoding_aes_key' => $data[ 'encoding_aes_key' ] ?? '',
|
||||
'encryption_type' => $data[ 'encryption_type' ] ?? '',
|
||||
'is_authorization' => $data[ 'is_authorization' ] ?? $old[ 'is_authorization' ]
|
||||
'is_authorization' => $data[ 'is_authorization' ] ?? $old[ 'is_authorization' ],
|
||||
'base_uri' => $data['base_uri'] ?? ''
|
||||
];
|
||||
return ( new CoreConfigService() )->setConfig($site_id, ConfigKeyDict::WECHAT, $config);
|
||||
}
|
||||
|
||||
@ -149,6 +149,7 @@ class CoreWechatServeService extends BaseCoreService
|
||||
'scene' => $scene
|
||||
],
|
||||
];
|
||||
return $api->postJson('cgi-bin/qrcode/create', $param);
|
||||
$response = $api->postJson('cgi-bin/qrcode/create', $param);
|
||||
return json_decode($response->getContent(), true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,6 +16,8 @@ use core\base\BaseCoreService;
|
||||
use core\exception\WechatException;
|
||||
use EasyWeChat\Kernel\Exceptions\InvalidArgumentException;
|
||||
use EasyWeChat\OfficialAccount\Application;
|
||||
use Overtrue\Socialite\Contracts\ProviderInterface as SocialiteProviderInterface;
|
||||
use Overtrue\Socialite\Providers\WeChat;
|
||||
|
||||
/**
|
||||
* easywechat主体提供
|
||||
@ -51,8 +53,18 @@ 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);
|
||||
|
||||
$app = new Application($config);
|
||||
if (isset($wechat_config['base_uri']) && !empty($wechat_config['base_uri'])) {
|
||||
$app->setOAuthFactory(fn (): SocialiteProviderInterface => (new WechatOAuthFactory(
|
||||
[
|
||||
'client_id' => $wechat_config['app_id'],
|
||||
'client_secret' => $wechat_config['app_secret'],
|
||||
'base_uri' => $wechat_config['base_uri']
|
||||
]
|
||||
)));
|
||||
}
|
||||
return $app;
|
||||
}
|
||||
}
|
||||
|
||||
@ -67,6 +79,9 @@ class CoreWechatService extends BaseCoreService
|
||||
return self::app($site_id)->getClient();
|
||||
}
|
||||
|
||||
public static function getOauth() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 回复文本消息
|
||||
|
||||
26
niucloud/app/service/core/wechat/WechatOAuthFactory.php
Normal file
26
niucloud/app/service/core/wechat/WechatOAuthFactory.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace app\service\core\wechat;
|
||||
|
||||
class WechatOAuthFactory extends \Overtrue\Socialite\Providers\WeChat {
|
||||
|
||||
private $oauth_url = 'https://open.weixin.qq.com';
|
||||
|
||||
public function __construct(array $config)
|
||||
{
|
||||
parent::__construct($config);
|
||||
if (isset($config['base_uri']) && !empty($config['base_uri'])) $this->oauth_url = $config['base_uri'];
|
||||
}
|
||||
|
||||
protected function getAuthUrl(): string
|
||||
{
|
||||
$path = 'oauth2/authorize';
|
||||
if (\in_array('snsapi_login', $this->scopes)) {
|
||||
$path = 'qrconnect';
|
||||
}
|
||||
return $this->buildAuthUrlFromBase("{$this->oauth_url}/connect/{$path}");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'version' => '1.1.9',
|
||||
'code' => '202511110001'
|
||||
'version' => '1.2.0',
|
||||
'code' => '202601300001'
|
||||
];
|
||||
|
||||
@ -233,8 +233,12 @@ class Alipay extends BasePay
|
||||
'out_trade_no' => $out_trade_no
|
||||
];
|
||||
} else {
|
||||
//todo 这儿可以抛出错误
|
||||
return false;
|
||||
return [
|
||||
'status' => RefundDict::FAIL,
|
||||
'refund_no' => $refund_no,
|
||||
'out_trade_no' => $out_trade_no,
|
||||
'fail_reason' => $result['sub_msg'] ?? ''
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -130,13 +130,14 @@ class Wechatpay extends BasePay
|
||||
public function app(array $params)
|
||||
{
|
||||
try {
|
||||
return $this->returnFormat(Pay::wechat()->app([
|
||||
$result = $this->returnFormat(Pay::wechat()->app([
|
||||
'out_trade_no' => $params['out_trade_no'],
|
||||
'description' => $params['body'],
|
||||
'amount' => [
|
||||
'total' => $params['money'],
|
||||
],
|
||||
]));
|
||||
return ['orderInfo' => $result];
|
||||
} catch (\Exception $e) {
|
||||
if ($e instanceof InvalidResponseException) {
|
||||
throw new PayException($e->response->all()['message'] ?? '');
|
||||
|
||||
100
niucloud/core/util/http/HttpClient.php
Normal file
100
niucloud/core/util/http/HttpClient.php
Normal file
@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
namespace core\util\http;
|
||||
|
||||
use core\util\http\src\HasHttpRequests;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
|
||||
class HttpClient
|
||||
{
|
||||
|
||||
use HasHttpRequests;
|
||||
|
||||
/**
|
||||
*
|
||||
* @var \think\facade\Request|\think\Request
|
||||
*/
|
||||
protected $request;
|
||||
|
||||
/**
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array $data
|
||||
* @return array|Response|object|ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function httpPost(string $url, array $data = [], array $options = [])
|
||||
{
|
||||
return $this->request($url, 'POST', array_merge([
|
||||
'json' => $data,
|
||||
'headers' => [
|
||||
'Content-Type' => 'application/json;charset=utf-8'
|
||||
]
|
||||
], $options));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array $data
|
||||
* @return array|Response|object|ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function httpPut(string $url, array $data = [], array $options = [])
|
||||
{
|
||||
return $this->request($url, 'PUT', array_merge([
|
||||
'json' => $data,
|
||||
'headers' => [
|
||||
'Content-Type' => 'application/json;charset=utf-8'
|
||||
]
|
||||
], $options));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param string $method
|
||||
* @param array $options
|
||||
* @param bool $returnRaw
|
||||
*
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function request(string $url, string $method = 'GET', array $options = [], bool $returnRaw = false)
|
||||
{
|
||||
$response = $this->toRequest($url, $method, $options);
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array $query
|
||||
* @return array|object|Response|ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function httpGet(string $url, array $query = [], array $options = [])
|
||||
{
|
||||
return $this->request($url, 'GET', array_merge([
|
||||
'query' => $query,
|
||||
], $options));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array $data
|
||||
* @param array $query
|
||||
* @return array|Response|object|ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function httpPostJson(string $url, array $data = [], array $query = [])
|
||||
{
|
||||
return $this->request($url, 'POST', ['query' => $query, 'json' => $data]);
|
||||
}
|
||||
}
|
||||
183
niucloud/core/util/http/src/HasHttpRequests.php
Normal file
183
niucloud/core/util/http/src/HasHttpRequests.php
Normal file
@ -0,0 +1,183 @@
|
||||
<?php
|
||||
|
||||
namespace core\util\http\src;
|
||||
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\ClientInterface;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use GuzzleHttp\HandlerStack;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use function GuzzleHttp\choose_handler;
|
||||
|
||||
|
||||
trait HasHttpRequests
|
||||
{
|
||||
/**
|
||||
* curl的自定义选项
|
||||
* @var array
|
||||
*/
|
||||
protected static array $defaults = [
|
||||
'curl' => [
|
||||
CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4,
|
||||
],
|
||||
];
|
||||
/**
|
||||
* @var ClientInterface
|
||||
*/
|
||||
protected $httpClient;
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected array $middlewares = [];
|
||||
/**
|
||||
* @var HandlerStack
|
||||
*/
|
||||
protected $handlerStack;
|
||||
|
||||
/**
|
||||
* @param array $defaults
|
||||
* @return void
|
||||
*/
|
||||
public static function setDefaultOptions(array $defaults = [])
|
||||
{
|
||||
self::$defaults = $defaults;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public static function getDefaultOptions(): array
|
||||
{
|
||||
return self::$defaults;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param callable $middleware
|
||||
* @param string|null $name
|
||||
* @return $this
|
||||
*/
|
||||
public function pushMiddleware(callable $middleware, string $name = null)
|
||||
{
|
||||
if (!is_null($name)) {
|
||||
$this->middlewares[$name] = $middleware;
|
||||
} else {
|
||||
$this->middlewares[] = $middleware;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getMiddlewares(): array
|
||||
{
|
||||
return $this->middlewares;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $url
|
||||
* @param string $method
|
||||
* @param array $options
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function toRequest($url, string $method = 'GET', array $options = [])
|
||||
{
|
||||
$method = strtoupper($method);
|
||||
|
||||
$options = array_merge(self::$defaults, $options, ['handler' => $this->getHandlerStack()]);
|
||||
|
||||
$options = $this->fixJsonIssue($options);
|
||||
|
||||
if (property_exists($this, 'baseUri') && !is_null($this->baseUri)) {
|
||||
$options['base_uri'] = $this->baseUri;
|
||||
}
|
||||
$options['connect_timeout'] = 10;
|
||||
$response = $this->getHttpClient()->request($method, $url, $options);
|
||||
$response->getBody()->rewind();
|
||||
return json_decode($response->getBody()->getContents(), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return HandlerStack
|
||||
*/
|
||||
public function getHandlerStack(): HandlerStack
|
||||
{
|
||||
if ($this->handlerStack) {
|
||||
return $this->handlerStack;
|
||||
}
|
||||
|
||||
$this->handlerStack = HandlerStack::create($this->getGuzzleHandler());
|
||||
|
||||
foreach ($this->middlewares as $name => $middleware) {
|
||||
$this->handlerStack->push($middleware, $name);
|
||||
}
|
||||
|
||||
return $this->handlerStack;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param HandlerStack $handlerStack
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setHandlerStack(HandlerStack $handlerStack)
|
||||
{
|
||||
$this->handlerStack = $handlerStack;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return callable
|
||||
*/
|
||||
protected function getGuzzleHandler()
|
||||
{
|
||||
return choose_handler();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $options
|
||||
* @return array
|
||||
*/
|
||||
protected function fixJsonIssue(array $options): array
|
||||
{
|
||||
if (isset($options['json']) && is_array($options['json'])) {
|
||||
$options['headers'] = array_merge($options['headers'] ?? [], ['Content-Type' => 'application/json']);
|
||||
|
||||
if (empty($options['json'])) {
|
||||
$options['body'] = \GuzzleHttp\json_encode($options['json'], JSON_FORCE_OBJECT);
|
||||
} else {
|
||||
$options['body'] = \GuzzleHttp\json_encode($options['json'], JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
unset($options['json']);
|
||||
}
|
||||
|
||||
return $options;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ClientInterface
|
||||
*/
|
||||
public function getHttpClient(): ClientInterface
|
||||
{
|
||||
if (!($this->httpClient instanceof ClientInterface)) {
|
||||
$this->httpClient = new Client(['handler' => HandlerStack::create($this->getGuzzleHandler())]);
|
||||
}
|
||||
|
||||
return $this->httpClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ClientInterface $httpClient
|
||||
* @return $this
|
||||
*/
|
||||
public function setHttpClient(ClientInterface $httpClient)
|
||||
{
|
||||
$this->httpClient = $httpClient;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
@ -34,6 +34,7 @@ trait AccessToken
|
||||
{
|
||||
$this->access_token = '';
|
||||
Cache::delete($this->access_token_cache);
|
||||
if (file_exists(public_path() . 'access_token.txt')) unlink(file_exists(public_path() . 'access_token.txt'));
|
||||
return $this;
|
||||
}
|
||||
/**
|
||||
@ -55,6 +56,9 @@ trait AccessToken
|
||||
if (empty($this->access_token)) {
|
||||
$this->access_token = Cache::get($this->access_token_cache, '');
|
||||
}
|
||||
if (empty($this->access_token) && file_exists(public_path() . 'access_token.txt')) {
|
||||
$this->access_token = file_get_contents(public_path() . 'access_token.txt');
|
||||
}
|
||||
return $this->access_token;
|
||||
}
|
||||
|
||||
@ -67,7 +71,9 @@ trait AccessToken
|
||||
{
|
||||
$access_token_info = $this->httpGet('auth', ['code' => $this->code, 'secret' => $this->secret, 'token' => $this->createToken(), 'product_key' => self::PRODUCT, 'redirect_uri' => $this->getDomain(false)]);
|
||||
if (isset($access_token_info['code']) && $access_token_info['code'] != 1) throw new NiucloudException($access_token_info['msg']);
|
||||
$this->setAccessToken($access_token_info['data']['token']);
|
||||
if (isset($access_token_info['data']['token']) && !empty($access_token_info['data']['token'])) {
|
||||
$this->setAccessToken($access_token_info['data']['token']);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,840 +0,0 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
@ -1,401 +0,0 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
@ -1 +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-ba7d1aeb.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};
|
||||
import{d as l,r as d,u as i,o as p,c as u,a as t,b as m,e as x,w as v,f,E as h,p as b,g,h as I,i as w,t as S}from"./index-38aa4eb6.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=i();return s=setInterval(()=>{a.value===0?(clearInterval(s),n.go(-1)):a.value--},1e3),p(()=>{s&&clearInterval(s)}),(r,c)=>{const _=h;return I(),u("div",y,[t("div",C,[m(r.$slots,"content",{},()=>[E],!0),t("div",N,[R,U,V,t("div",L,[x(_,{class:"bottom",onClick:c[0]||(c[0]=D=>f(n).go(-1))},{default:v(()=>[w(S(a.value)+" 秒后返回上一页",1)]),_:1})])])])])}}});const z=B($,[["__scopeId","data-v-4f4088b5"]]);export{z as default};
|
||||
@ -1 +0,0 @@
|
||||
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};
|
||||
@ -1 +0,0 @@
|
||||
import{dC as f}from"./index-ba7d1aeb.js";export{f as default};
|
||||
@ -1 +0,0 @@
|
||||
import{dC as f}from"./index-6fd8f478.js";export{f as default};
|
||||
1
niucloud/public/admin/assets/App-cf715319.js
Normal file
1
niucloud/public/admin/assets/App-cf715319.js
Normal file
@ -0,0 +1 @@
|
||||
import{dC as f}from"./index-38aa4eb6.js";export{f as default};
|
||||
@ -1 +0,0 @@
|
||||
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};
|
||||
1
niucloud/public/admin/assets/Verify-5addee75.js
Normal file
1
niucloud/public/admin/assets/Verify-5addee75.js
Normal file
@ -0,0 +1 @@
|
||||
import z from"./VerifySlide-b7e2c0ea.js";import g from"./VerifyPoints-8dcc621d.js";import{Q as k,r as o,m as w,bb as T,Z as V,_ as B,h as p,c as u,a as c,i as N,C as y,y as d,v as C,bc as j,x as v}from"./index-38aa4eb6.js";import{_ as O}from"./_plugin-vue_export-helper-c27b6911.js";import"./index-0f1d8573.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};
|
||||
@ -1 +0,0 @@
|
||||
import z from"./VerifySlide-fdfbb9b7.js";import g from"./VerifyPoints-e648cfd0.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-ba7d1aeb.js";import{_ as O}from"./_plugin-vue_export-helper-c27b6911.js";import"./index-95d56b60.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};
|
||||
1
niucloud/public/admin/assets/VerifyPoints-8dcc621d.js
Normal file
1
niucloud/public/admin/assets/VerifyPoints-8dcc621d.js
Normal file
@ -0,0 +1 @@
|
||||
import{r as F,a as V,b as K,c as G}from"./index-0f1d8573.js";import{Q,bd as X,r as s,q as m,a_ as Y,h as H,c as I,a as l,y as A,Z,_ as U,F as $,W as ee,t as q,ay as te}from"./index-38aa4eb6.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:L,imgSize:R,barSize:c}=Q(N),{proxy:n}=X(),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)})};Y(()=>{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};G(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,L,R){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"})},[Z(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"})},q(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,q(e.text),1)],4)])}const fe=ae(ie,[["render",he]]);export{fe as default};
|
||||
@ -1 +0,0 @@
|
||||
import{r as F,a as V,b as K,c as Z}from"./index-95d56b60.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-ba7d1aeb.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};
|
||||
@ -1 +0,0 @@
|
||||
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
File diff suppressed because one or more lines are too long
1
niucloud/public/admin/assets/access-19225961.js
Normal file
1
niucloud/public/admin/assets/access-19225961.js
Normal file
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
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};
|
||||
1
niucloud/public/admin/assets/access-42afd83e.js
Normal file
1
niucloud/public/admin/assets/access-42afd83e.js
Normal file
@ -0,0 +1 @@
|
||||
import{d as V,k as B,u as N,r as x,a_ as S,h as T,c as j,e as o,w as s,a as t,t as n,f as e,s as a,i as h,B as I,aI as R,aJ as $,E as q,a$ as D,b0 as F,b1 as J,K,b2 as M,a9 as P}from"./index-38aa4eb6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{g as Q}from"./aliapp-f10afabf.js";const U={class:"main-container"},z={class:"flex justify-between items-center"},G={class:"text-page-title"},H={class:"p-[20px]"},L={class:"panel-title !text-sm"},O={class:"text-[14px] font-[700]"},W={class:"text-[#999]"},X={class:"mt-[20px] mb-[40px] h-[32px]"},Y={class:"text-[14px] font-[700]"},Z={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]"},wt=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 b=c=>{window.open(c,"_blank")},w=c=>{d.push({path:_.value})};return(c,l)=>{const g=R,C=$,m=q,i=D,E=F,u=J,y=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",G,n(e(v)),1)]),o(C,{modelValue:_.value,"onUpdate:modelValue":l[0]||(l[0]=r=>_.value=r),class:"my-[20px]",onTabChange:w},{default:s(()=>[o(g,{label:e(a)("weappAccessFlow"),name:"/channel/aliapp"},null,8,["label"])]),_:1},8,["modelValue"]),t("div",H,[t("h3",L,n(e(a)("weappInlet")),1),o(k,null,{default:s(()=>[o(u,{span:20},{default:s(()=>[o(E,{active:4,direction:"vertical"},{default:s(()=>[o(i,null,{title:s(()=>[t("p",O,n(e(a)("weappAttestation")),1)]),description:s(()=>[t("span",W,n(e(a)("weappAttest")),1),t("div",X,[o(m,{type:"primary",onClick:l[1]||(l[1]=r=>b("https://open.alipay.com/develop/manage"))},{default:s(()=>[h(n(e(a)("clickAccess")),1)]),_:1})])]),_:1}),o(i,null,{title:s(()=>[t("p",Y,n(e(a)("weappSetting")),1)]),description:s(()=>[t("span",Z,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(y,{class:"w-[180px] h-[180px]",src:p.value?e(I)(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{wt as default};
|
||||
File diff suppressed because one or more lines are too long
1
niucloud/public/admin/assets/access-55b72064.js
Normal file
1
niucloud/public/admin/assets/access-55b72064.js
Normal file
@ -0,0 +1 @@
|
||||
import{d as B,k as T,u as $,r as c,a_ as I,b6 as M,o as R,h as W,c as q,e,w as t,a as s,t as o,f as n,s as a,i as u,aI as A,aJ as L,E as U,a$ as j,b0 as D,b1 as F,b2 as G,a9 as J}from"./index-38aa4eb6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{g as P}from"./wechat-8613d57d.js";const z={class:"main-container"},H={class:"flex justify-between items-center"},K={class:"text-page-title"},O={class:"p-[20px]"},Q={class:"panel-title !text-sm"},X={class:"text-[14px] font-[700]"},Y={class:"text-[#999]"},Z={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]"},st={class:"mt-[20px] mb-[40px] h-[32px]"},dt=B({__name:"access",setup(at){const f=T(),_=$(),x=f.meta.title,r=c("/channel/app"),b=c(""),g=c({}),w=c({}),h=async()=>{await P().then(({data:l})=>{g.value=l,b.value=l.qr_code})};I(async()=>{await h(),await M().then(({data:l})=>{w.value=l}),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&h()})}),R(()=>{document.removeEventListener("visibilitychange",()=>{})});const y=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=J;return W(),q("div",z,[e(N,{class:"card !border-none",shadow:"never"},{default:t(()=>[s("div",H,[s("span",K,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(a)("accessFlow"),name:"/channel/app"},null,8,["label"]),e(v,{label:n(a)("versionManage"),name:"/channel/app/version"},null,8,["label"])]),_:1},8,["modelValue"]),s("div",O,[s("h3",Q,o(n(a)("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(()=>[s("p",X,o(n(a)("uniappApp")),1)]),description:t(()=>[s("span",Y,o(n(a)("appAttestation1")),1),s("div",Z,[e(d,{type:"primary",onClick:i[1]||(i[1]=p=>y("https://dcloud.io/"))},{default:t(()=>[u(o(n(a)("toCreate")),1)]),_:1})])]),_:1}),e(m,null,{title:t(()=>[s("p",tt,o(n(a)("appSetting")),1)]),description:t(()=>[s("div",et,[e(d,{type:"primary",onClick:i[2]||(i[2]=p=>n(_).push("/channel/app/config"))},{default:t(()=>[u(o(n(a)("settingInfo")),1)]),_:1})])]),_:1}),e(m,null,{title:t(()=>[s("p",nt,o(n(a)("versionManage")),1)]),description:t(()=>[s("div",st,[e(d,{type:"primary",plain:"",onClick:i[3]||(i[3]=p=>n(_).push("/channel/app/version"))},{default:t(()=>[u(o(n(a)("releaseVersion")),1)]),_:1})])]),_:1})]),_:1})]),_:1})]),_:1})])]),_:1})])}}});export{dt as default};
|
||||
@ -1 +0,0 @@
|
||||
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-ba7d1aeb.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{g as Q}from"./aliapp-e0ba5cf6.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};
|
||||
@ -1 +0,0 @@
|
||||
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};
|
||||
@ -1 +0,0 @@
|
||||
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-ba7d1aeb.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{g as P}from"./wechat-9f509d30.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};
|
||||
@ -1 +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-ba7d1aeb.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{g as O}from"./wechat-9f509d30.js";import{a as X}from"./wxoplatform-485c6546.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};
|
||||
import{d as $,k as q,u as j,r as u,a_ as F,b6 as I,o as R,h as w,c as y,e as a,w as s,a as n,t as o,f as e,s as t,i as r,F as U,v as z,B as L,aI as M,aJ as D,E as G,a$ as J,b0 as K,b1 as P,K as Q,b2 as H,a9 as O}from"./index-38aa4eb6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{g as X}from"./wechat-8613d57d.js";import{a as Y}from"./wxoplatform-e80745b6.js";const Z={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=$({__name:"access",setup(ve){const k=q(),_=j(),C=k.meta.title,h=u("/channel/wechat"),d=u(""),f=u({}),v=u({}),b=async()=>{await X().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=()=>{Y().then(({data:l})=>{window.open(l)})};return(l,c)=>{const m=M,B=D,i=G,x=J,V=K,g=P,N=Q,T=H,W=O;return w(),y("div",Z,[a(W,{class:"card !border-none",shadow:"never"},{default:s(()=>[n("div",ee,[n("span",te,o(e(C)),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(T,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(N,{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};
|
||||
@ -1 +0,0 @@
|
||||
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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
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};
|
||||
@ -1 +1 @@
|
||||
import{_ as o}from"./add-member.vue_vue_type_script_setup_true_lang-ff41f0e4.js";import"./index-ba7d1aeb.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import"./member-9436e02a.js";export{o as default};
|
||||
import{_ as o}from"./add-member.vue_vue_type_script_setup_true_lang-0d836f83.js";import"./index-38aa4eb6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import"./member-d83c7f22.js";export{o as default};
|
||||
@ -1 +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 _};
|
||||
import{d as I,r as m,q as L,m as R,s as o,h as N,v as M,w as d,a as j,e as s,i as k,t as C,f 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-38aa4eb6.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-d83c7f22.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),f=m(!1);let b="",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,f.value)return;f.value=!0,e(r).then(V=>{i.value=!1,f.value=!1,p.value=!1,x("complete")}).catch(()=>{i.value=!1,f.value=!1})}})};return $({showDialog:p,setFormData:async(n=null)=>{if(i.value=!0,Object.assign(r,_),b=o("addMember"),n){b=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(b),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 _};
|
||||
@ -1 +0,0 @@
|
||||
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-ba7d1aeb.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-9436e02a.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 _};
|
||||
@ -1 +0,0 @@
|
||||
import{_ as o}from"./add-table.vue_vue_type_script_setup_true_lang-86dfc168.js";import"./index-ba7d1aeb.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-d530b6c9.js";export{o as default};
|
||||
@ -1 +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};
|
||||
import{_ as o}from"./add-table.vue_vue_type_script_setup_true_lang-d85bf56c.js";import"./index-38aa4eb6.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-f2ea1153.js";export{o as default};
|
||||
@ -1 +0,0 @@
|
||||
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-ba7d1aeb.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-d530b6c9.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 _};
|
||||
@ -1 +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 _};
|
||||
import{d as L,u as N,r as c,q as k,m as E,h as p,v as _,w as o,a as b,Z as x,f as t,t as f,s as n,e as d,i as B,ak as z,L as q,E as F,al as P,V as U,a3 as G}from"./index-38aa4eb6.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 I,l as M}from"./tools-f2ea1153.js";const le=L({__name:"add-table",setup(R,{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,I().then(a=>{e.loading=!1,e.data=a.data}).catch(()=>{e.loading=!1})};u();const w=a=>{const l=a.Name;e.loading=!0,M({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=G;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:Z=>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 _};
|
||||
@ -1 +0,0 @@
|
||||
import{_ as e}from"./add-theme.vue_vue_type_script_setup_true_lang-e332c994.js";const o=Object.freeze(Object.defineProperty({__proto__:null,default:e},Symbol.toStringTag,{value:"Module"}));export{o as _};
|
||||
@ -1 +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 _};
|
||||
import{_ as e}from"./add-theme.vue_vue_type_script_setup_true_lang-c432bd42.js";const o=Object.freeze(Object.defineProperty({__proto__:null,default:e},Symbol.toStringTag,{value:"Module"}));export{o as _};
|
||||
@ -1 +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 _};
|
||||
import{d as U,r as d,q as h,m as q,h as B,v as N,w as n,a as R,e as o,i as v,f as _,a6 as F,L as O,M as $,bJ as j,N as A,E as I,V as S}from"./index-38aa4eb6.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-605cb92e.js";const z={class:"dialog-footer"},X=U({__name:"add-theme",emits:["confirm"],setup(J,{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=q(()=>({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=O,u=$,E=j,C=A,c=I,D=S;return B(),N(D,{modelValue:s.value,"onUpdate:modelValue":e[6]||(e[6]=a=>s.value=a),title:"新增颜色",width:"550px","align-center":""},{footer:n(()=>[R("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 _};
|
||||
@ -1 +0,0 @@
|
||||
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-ba7d1aeb.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-1ffe17ef.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 _};
|
||||
@ -1 +0,0 @@
|
||||
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};
|
||||
@ -1 +1 @@
|
||||
import{P as t}from"./index-ba7d1aeb.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};
|
||||
import{P as t}from"./index-38aa4eb6.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};
|
||||
@ -1 +0,0 @@
|
||||
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-ba7d1aeb.js";/* empty css *//* empty css *//* empty css *//* empty css */import A from"./index-1f5ac258.js";import"./el-form-item-4ed993c7.js";/* empty css *//* empty css */import"./index.vue_vue_type_style_index_0_lang-5c3aa61d.js";/* empty css *//* empty css */import"./attachment-4189a3a9.js";import"./index.vue_vue_type_script_setup_true_lang-a6ff0d58.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-dffd187d.js";/* empty css */import"./index.vue_vue_type_script_setup_true_lang-9322f3d1.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};
|
||||
1
niucloud/public/admin/assets/adminlogin-b95f3e2f.js
Normal file
1
niucloud/public/admin/assets/adminlogin-b95f3e2f.js
Normal file
@ -0,0 +1 @@
|
||||
import{d as F,k as w,r as g,q as B,h as b,c as L,Z as C,v as D,w as n,e as o,a as s,t as r,f as a,s as l,i as I,ch as k,a6 as y,ci as U,b8 as N,M as T,a9 as R,N as S,E as j,a3 as q}from"./index-38aa4eb6.js";/* empty css *//* empty css *//* empty css *//* empty css */import A from"./index-7f95eef7.js";import"./el-form-item-4ed993c7.js";/* empty css *//* empty css */import"./index.vue_vue_type_style_index_0_lang-c54b1028.js";/* empty css *//* empty css */import"./attachment-e9cc5d6c.js";import"./index.vue_vue_type_script_setup_true_lang-afbe6a00.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-7756177a.js";/* empty css */import"./index.vue_vue_type_script_setup_true_lang-a1d95079.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:"text-[12px] text-[#a9a9a9]"},K={class:"text-[12px] text-[#a9a9a9]"},P={class:"fixed-footer-wrap"},Q={class:"fixed-footer"},Ne=F({__name:"adminlogin",setup(W){const f=w().meta.title,d=g(!0),u=g(),t=B({is_captcha:0,is_site_captcha:0,bg:"",site_bg:"",site_login_logo:"",site_login_bg_img:""});(async()=>{const p=await(await k()).data;Object.keys(t).forEach(e=>{t[e]=p[e]}),d.value=!1})();const v=async p=>{d.value||!p||await p.validate(e=>{if(e){const _=y(t);U(_).then(()=>{d.value=!1}).catch(()=>{d.value=!1})}})};return(p,e)=>{const _=N,m=T,c=A,x=R,V=S,h=j,E=q;return b(),L("div",M,[C((b(),D(V,{class:"page-form",model:t,"label-width":"150px",ref_key:"ruleFormRef",ref:u},{default:n(()=>[o(x,{class:"box-card !border-none",shadow:"never"},{default:n(()=>[s("h3",O,r(a(f)),1),s("h3",Z,r(a(l)("admin")),1),o(m,{label:a(l)("isCaptcha")},{default:n(()=>[o(_,{modelValue:t.is_captcha,"onUpdate:modelValue":e[0]||(e[0]=i=>t.is_captcha=i),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1},8,["label"]),o(m,{label:a(l)("bgImg")},{default:n(()=>[o(c,{modelValue:t.bg,"onUpdate:modelValue":e[1]||(e[1]=i=>t.bg=i)},null,8,["modelValue"]),s("div",$,r(a(l)("adminBgImgTip")),1)]),_:1},8,["label"]),s("div",z,[s("h3",G,r(a(l)("site")),1),o(m,{label:a(l)("isCaptcha")},{default:n(()=>[o(_,{modelValue:t.is_site_captcha,"onUpdate:modelValue":e[2]||(e[2]=i=>t.is_site_captcha=i),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1},8,["label"]),o(m,{label:a(l)("bgImg")},{default:n(()=>[o(c,{modelValue:t.site_bg,"onUpdate:modelValue":e[3]||(e[3]=i=>t.site_bg=i)},null,8,["modelValue"]),s("div",H,r(a(l)("siteBgImgTip")),1)]),_:1},8,["label"]),o(m,{label:a(l)("siteLoginLogo")},{default:n(()=>[s("div",null,[o(c,{modelValue:t.site_login_logo,"onUpdate:modelValue":e[4]||(e[4]=i=>t.site_login_logo=i)},null,8,["modelValue"]),s("p",J,r(a(l)("siteLoginLogoTips")),1)])]),_:1},8,["label"]),o(m,{label:a(l)("siteLoginBgImg")},{default:n(()=>[s("div",null,[o(c,{modelValue:t.site_login_bg_img,"onUpdate:modelValue":e[5]||(e[5]=i=>t.site_login_bg_img=i)},null,8,["modelValue"]),s("p",K,r(a(l)("siteLoginBgImgTips")),1)])]),_:1},8,["label"])])]),_:1})]),_:1},8,["model"])),[[E,d.value]]),s("div",P,[s("div",Q,[o(h,{type:"primary",onClick:e[6]||(e[6]=i=>v(u.value))},{default:n(()=>[I(r(a(l)("save")),1)]),_:1})])])])}}});export{Ne as default};
|
||||
@ -1 +0,0 @@
|
||||
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};
|
||||
@ -1 +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};
|
||||
import{d as w,k,q as y,u as x,h as m,c as E,e as a,w as o,a as i,t as r,f as t,Z as C,v as B,s as n,i as p,cj as N,ak as T,E as D,al as L,a9 as j,a3 as A}from"./index-38aa4eb6.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=w({__name:"agreement",setup(z){const _=k().meta.title,e=y({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=D,f=L,b=j,v=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"])),[[v,e.loading]])])]),_:1})])}}});export{X as default};
|
||||
@ -1 +0,0 @@
|
||||
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-ba7d1aeb.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};
|
||||
@ -1 +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};
|
||||
import{d as q,k as M,u as P,r as y,ck as S,q as T,m as $,s as r,h,c as I,e as a,w as s,f as n,b4 as U,Z as j,v as A,a as k,i as w,t as x,cl as L,cm as O,b5 as H,a9 as Z,L as z,M as G,N as J,E as K,a3 as Q}from"./index-38aa4eb6.js";/* empty css *//* empty css *//* empty css */import{_ as W}from"./index.vue_vue_type_script_setup_true_lang-3848f778.js";import"./el-form-item-4ed993c7.js";/* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_style_index_0_lang-c54b1028.js";/* empty css *//* empty css */import"./attachment-e9cc5d6c.js";import"./index.vue_vue_type_script_setup_true_lang-afbe6a00.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-7756177a.js";/* empty css */import"./index.vue_vue_type_script_setup_true_lang-a1d95079.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]]),k("div",Y,[k("div",ee,[a(b,{type:"primary",onClick:e[4]||(e[4]=l=>C(g.value))},{default:s(()=>[w(x(n(r)("save")),1)]),_:1}),a(b,{onClick:e[5]||(e[5]=l=>p())},{default:s(()=>[w(x(n(r)("cancel")),1)]),_:1})])])])}}});export{Se as default};
|
||||
@ -1 +0,0 @@
|
||||
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-ba7d1aeb.js";/* empty css *//* empty css *//* empty css */import{_ as W}from"./index.vue_vue_type_script_setup_true_lang-65857e3b.js";import"./el-form-item-4ed993c7.js";/* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_style_index_0_lang-5c3aa61d.js";/* empty css *//* empty css */import"./attachment-4189a3a9.js";import"./index.vue_vue_type_script_setup_true_lang-a6ff0d58.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-dffd187d.js";/* empty css */import"./index.vue_vue_type_script_setup_true_lang-9322f3d1.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};
|
||||
@ -1 +0,0 @@
|
||||
import{P as t}from"./index-ba7d1aeb.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};
|
||||
@ -1 +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};
|
||||
import{P as t}from"./index-38aa4eb6.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};
|
||||
@ -1 +1 @@
|
||||
import{P as n}from"./index-ba7d1aeb.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};
|
||||
import{P as n}from"./index-38aa4eb6.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};
|
||||
@ -1 +0,0 @@
|
||||
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};
|
||||
@ -1 +1 @@
|
||||
import{_ as o}from"./app-version-edit.vue_vue_type_style_index_0_lang-95e918a1.js";import"./index-ba7d1aeb.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_style_index_0_lang-f1070ddf.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";import"./app-25a0d4fd.js";import"./generate-sing-cert.vue_vue_type_script_setup_true_lang-2799a222.js";export{o as default};
|
||||
import{_ as o}from"./app-version-edit.vue_vue_type_style_index_0_lang-1da6801d.js";import"./index-38aa4eb6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_style_index_0_lang-a4acb467.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";import"./app-97ec12b5.js";import"./generate-sing-cert.vue_vue_type_script_setup_true_lang-a9fc7de8.js";export{o as default};
|
||||
@ -1 +0,0 @@
|
||||
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
File diff suppressed because one or more lines are too long
@ -1 +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-ba7d1aeb.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-3c353bae.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};
|
||||
import{d as I,u as V,j as M,r as y,q as N,Z as R,h as l,c as x,a as e,t as s,f as a,s as o,e as u,w as c,F as j,W as D,B as T,v as $,i as q,C as k,ca as b,H as w,E as z,K as H,ba as K,cb as O,ab as P,a3 as U,p as W,g as Z}from"./index-38aa4eb6.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-a1e06bf2.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};
|
||||
@ -1 +0,0 @@
|
||||
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};
|
||||
@ -1 +0,0 @@
|
||||
.group-list .group-item[data-v-8a7b9056]{height:32px;margin-top:3px}.group-list .group-item .operate[data-v-8a7b9056]{display:none}.group-list .group-item.active[data-v-8a7b9056]{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.group-list .group-item[data-v-8a7b9056]:hover{background-color:var(--el-color-primary-light-9)}.group-list .group-item:hover .operate[data-v-8a7b9056],.attachment-item:hover .attachment-action[data-v-8a7b9056]{display:block}.attachment-list-wrap .attachment-wrap[data-v-8a7b9056]{background:var(--el-border-color-extra-light)}.file-box-active[data-v-8a7b9056]:after{content:"";display:block;position:absolute;border:15px solid transparent;border-right-color:var(--el-color-primary);border-bottom-color:var(--el-color-primary);bottom:0;right:0}.file-box-active span[data-v-8a7b9056]{font-style:normal}.video-preview{background:none!important;box-shadow:none!important}.video-preview .el-dialog__headerbtn .el-dialog__close{border-radius:50%;width:34px;height:34px;font-size:24px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff}.el-upload-list{position:absolute!important;z-index:10}.el-upload-list .el-upload-list__item{background:#fff!important;box-shadow:var(--el-box-shadow-light)}.attachment-wrap .el-upload-list__item .el-upload-list__item-info{width:150px!important}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user