第一次打包失败
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
;(function(){
|
||||
let u=void 0,isReady=false,onReadyCallbacks=[],isServiceReady=false,onServiceReadyCallbacks=[];
|
||||
const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"uni-app","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"test1","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"5.07","entryPagePath":"pages/Login/Login","entryPageQuery":"","realEntryPagePath":"","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"locales":{},"darkmode":false,"themeConfig":{}};
|
||||
const __uniRoutes = [{"path":"pages/Login/Login","meta":{"isQuit":true,"isEntry":true,"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"登录页面","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/Chat/Chat","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"聊天页面(主页面)","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/WorkSpace/WorkSpace","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"工作区文件管理","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/UserProfileModal/UserProfileModal","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/ContactPages/ContactPages","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/WorkSpace/TemplateSpace/TemplateSpace","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/text/text","meta":{"navigationBar":{"titleText":"","type":"default"},"isNVue":false}},{"path":"pages/text/text2","meta":{"navigationBar":{"type":"default"},"isNVue":false}},{"path":"pages/CloudDatabase/CloudDatabase","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"云端数据","style":"custom","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute));
|
||||
const __uniRoutes = [{"path":"pages/Login/Login","meta":{"isQuit":true,"isEntry":true,"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"登录页面","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/Chat/Chat","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"聊天页面(主页面)","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/WorkSpace/WorkSpace","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"工作区文件管理","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/UserProfileModal/UserProfileModal","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/ContactPages/ContactPages","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/WorkSpace/TemplateSpace/TemplateSpace","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/text/text","meta":{"navigationBar":{"titleText":"","type":"default"},"isNVue":false}},{"path":"pages/text/text2","meta":{"navigationBar":{"type":"default"},"isNVue":false}},{"path":"pages/CloudDatabase/CloudDatabase","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"云端数据","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/CloudDbDetail/CloudDbDetail","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"数据库详情","style":"custom","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute));
|
||||
__uniConfig.styles=[];//styles
|
||||
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||
|
||||
2521
unpackage/dist/dev/app-plus/app-service.js
vendored
2521
unpackage/dist/dev/app-plus/app-service.js
vendored
File diff suppressed because it is too large
Load Diff
42
unpackage/dist/dev/app-plus/manifest.json
vendored
42
unpackage/dist/dev/app-plus/manifest.json
vendored
@@ -7,7 +7,7 @@
|
||||
"id": "__UNI__923FD9E",
|
||||
"name": "test1",
|
||||
"version": {
|
||||
"name": "1.0.0",
|
||||
"name": "1.1.1",
|
||||
"code": "1"
|
||||
},
|
||||
"description": "",
|
||||
@@ -46,6 +46,46 @@
|
||||
"nvueStyleCompiler": "uni-app",
|
||||
"compilerVersion": 3,
|
||||
"distribute": {
|
||||
"icons": {
|
||||
"android": {
|
||||
"hdpi": "unpackage/res/icons/72x72.png",
|
||||
"xhdpi": "unpackage/res/icons/96x96.png",
|
||||
"xxhdpi": "unpackage/res/icons/144x144.png",
|
||||
"xxxhdpi": "unpackage/res/icons/192x192.png"
|
||||
},
|
||||
"ios": {
|
||||
"appstore": "unpackage/res/icons/1024x1024.png",
|
||||
"ipad": {
|
||||
"app": "unpackage/res/icons/76x76.png",
|
||||
"app@2x": "unpackage/res/icons/152x152.png",
|
||||
"notification": "unpackage/res/icons/20x20.png",
|
||||
"notification@2x": "unpackage/res/icons/40x40.png",
|
||||
"proapp@2x": "unpackage/res/icons/167x167.png",
|
||||
"settings": "unpackage/res/icons/29x29.png",
|
||||
"settings@2x": "unpackage/res/icons/58x58.png",
|
||||
"spotlight": "unpackage/res/icons/40x40.png",
|
||||
"spotlight@2x": "unpackage/res/icons/80x80.png"
|
||||
},
|
||||
"iphone": {
|
||||
"app@2x": "unpackage/res/icons/120x120.png",
|
||||
"app@3x": "unpackage/res/icons/180x180.png",
|
||||
"notification@2x": "unpackage/res/icons/40x40.png",
|
||||
"notification@3x": "unpackage/res/icons/60x60.png",
|
||||
"settings@2x": "unpackage/res/icons/58x58.png",
|
||||
"settings@3x": "unpackage/res/icons/87x87.png",
|
||||
"spotlight@2x": "unpackage/res/icons/80x80.png",
|
||||
"spotlight@3x": "unpackage/res/icons/120x120.png"
|
||||
}
|
||||
}
|
||||
},
|
||||
"splashscreen": {
|
||||
"androidStyle": "default",
|
||||
"android": {
|
||||
"hdpi": "C:/Users/ADMIN/Pictures/480-762.png",
|
||||
"xhdpi": "C:/Users/ADMIN/Pictures/720-1242.png",
|
||||
"xxhdpi": "C:/Users/ADMIN/Pictures/1080-1882.png"
|
||||
}
|
||||
},
|
||||
"google": {
|
||||
"permissions": [
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
|
||||
@@ -1276,3 +1276,81 @@
|
||||
margin-bottom: 0.625rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* ===== 加载动画 ===== */
|
||||
.loading-area[data-v-51006ffb] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 1.875rem 0;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
.loading-spinner[data-v-51006ffb] {
|
||||
width: 1.75rem;
|
||||
height: 1.75rem;
|
||||
border: 0.125rem solid #e8e8e8;
|
||||
border-top-color: #3b86ff;
|
||||
border-radius: 50%;
|
||||
animation: spin-51006ffb 0.8s linear infinite;
|
||||
}
|
||||
@keyframes spin-51006ffb {
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
.loading-text[data-v-51006ffb] {
|
||||
font-size: 0.75rem;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
/* ===== 数据库标签 ===== */
|
||||
.db-tag[data-v-51006ffb] {
|
||||
display: inline-block;
|
||||
font-size: 0.625rem;
|
||||
font-weight: 500;
|
||||
padding: 0.0625rem 0.375rem;
|
||||
border-radius: 0.25rem;
|
||||
margin-left: 0.3125rem;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.db-tag.tag-personal[data-v-51006ffb] {
|
||||
color: #3b86ff;
|
||||
background: rgba(59, 134, 255, 0.08);
|
||||
border: 0.03125rem solid rgba(59, 134, 255, 0.2);
|
||||
}
|
||||
.db-tag.tag-team[data-v-51006ffb] {
|
||||
color: #67c23a;
|
||||
background: rgba(103, 194, 58, 0.08);
|
||||
border: 0.03125rem solid rgba(103, 194, 58, 0.2);
|
||||
}
|
||||
|
||||
/* ===== 上传数据库弹窗 ===== */
|
||||
.upload-db-hint[data-v-51006ffb] {
|
||||
font-size: 0.6875rem;
|
||||
color: #999;
|
||||
margin-bottom: 0.625rem;
|
||||
text-align: center;
|
||||
}
|
||||
.upload-file-area[data-v-51006ffb] {
|
||||
padding: 1.25rem;
|
||||
border: 0.0625rem dashed #d0d0d0;
|
||||
border-radius: 0.5rem;
|
||||
background: #f9fafb;
|
||||
text-align: center;
|
||||
margin-bottom: 0.625rem;
|
||||
}
|
||||
.upload-file-area[data-v-51006ffb]:active {
|
||||
border-color: #3b86ff;
|
||||
background: rgba(59, 134, 255, 0.03);
|
||||
}
|
||||
.selected-file[data-v-51006ffb] {
|
||||
font-size: 0.8125rem;
|
||||
color: #3b86ff;
|
||||
font-weight: 500;
|
||||
word-break: break-all;
|
||||
}
|
||||
.upload-hint[data-v-51006ffb] {
|
||||
font-size: 0.75rem;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
998
unpackage/dist/dev/app-plus/pages/CloudDbDetail/CloudDbDetail.css
vendored
Normal file
998
unpackage/dist/dev/app-plus/pages/CloudDbDetail/CloudDbDetail.css
vendored
Normal file
@@ -0,0 +1,998 @@
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
.uniui-cart-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6d0";
|
||||
}
|
||||
.uniui-gift-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6c4";
|
||||
}
|
||||
.uniui-color[data-v-d31e1c47]:before {
|
||||
content: "\e6cf";
|
||||
}
|
||||
.uniui-wallet[data-v-d31e1c47]:before {
|
||||
content: "\e6b1";
|
||||
}
|
||||
.uniui-settings-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6ce";
|
||||
}
|
||||
.uniui-auth-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6cc";
|
||||
}
|
||||
.uniui-shop-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6cd";
|
||||
}
|
||||
.uniui-staff-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6cb";
|
||||
}
|
||||
.uniui-vip-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6c6";
|
||||
}
|
||||
.uniui-plus-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6c7";
|
||||
}
|
||||
.uniui-folder-add-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6c8";
|
||||
}
|
||||
.uniui-color-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6c9";
|
||||
}
|
||||
.uniui-tune-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6ca";
|
||||
}
|
||||
.uniui-calendar-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6c0";
|
||||
}
|
||||
.uniui-notification-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6c1";
|
||||
}
|
||||
.uniui-wallet-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6c2";
|
||||
}
|
||||
.uniui-medal-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6c3";
|
||||
}
|
||||
.uniui-fire-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6c5";
|
||||
}
|
||||
.uniui-refreshempty[data-v-d31e1c47]:before {
|
||||
content: "\e6bf";
|
||||
}
|
||||
.uniui-location-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6af";
|
||||
}
|
||||
.uniui-person-filled[data-v-d31e1c47]:before {
|
||||
content: "\e69d";
|
||||
}
|
||||
.uniui-personadd-filled[data-v-d31e1c47]:before {
|
||||
content: "\e698";
|
||||
}
|
||||
.uniui-arrowthinleft[data-v-d31e1c47]:before {
|
||||
content: "\e6d2";
|
||||
}
|
||||
.uniui-arrowthinup[data-v-d31e1c47]:before {
|
||||
content: "\e6d3";
|
||||
}
|
||||
.uniui-arrowthindown[data-v-d31e1c47]:before {
|
||||
content: "\e6d4";
|
||||
}
|
||||
.uniui-back[data-v-d31e1c47]:before {
|
||||
content: "\e6b9";
|
||||
}
|
||||
.uniui-forward[data-v-d31e1c47]:before {
|
||||
content: "\e6ba";
|
||||
}
|
||||
.uniui-arrow-right[data-v-d31e1c47]:before {
|
||||
content: "\e6bb";
|
||||
}
|
||||
.uniui-arrow-left[data-v-d31e1c47]:before {
|
||||
content: "\e6bc";
|
||||
}
|
||||
.uniui-arrow-up[data-v-d31e1c47]:before {
|
||||
content: "\e6bd";
|
||||
}
|
||||
.uniui-arrow-down[data-v-d31e1c47]:before {
|
||||
content: "\e6be";
|
||||
}
|
||||
.uniui-arrowthinright[data-v-d31e1c47]:before {
|
||||
content: "\e6d1";
|
||||
}
|
||||
.uniui-down[data-v-d31e1c47]:before {
|
||||
content: "\e6b8";
|
||||
}
|
||||
.uniui-bottom[data-v-d31e1c47]:before {
|
||||
content: "\e6b8";
|
||||
}
|
||||
.uniui-arrowright[data-v-d31e1c47]:before {
|
||||
content: "\e6d5";
|
||||
}
|
||||
.uniui-right[data-v-d31e1c47]:before {
|
||||
content: "\e6b5";
|
||||
}
|
||||
.uniui-up[data-v-d31e1c47]:before {
|
||||
content: "\e6b6";
|
||||
}
|
||||
.uniui-top[data-v-d31e1c47]:before {
|
||||
content: "\e6b6";
|
||||
}
|
||||
.uniui-left[data-v-d31e1c47]:before {
|
||||
content: "\e6b7";
|
||||
}
|
||||
.uniui-arrowup[data-v-d31e1c47]:before {
|
||||
content: "\e6d6";
|
||||
}
|
||||
.uniui-eye[data-v-d31e1c47]:before {
|
||||
content: "\e651";
|
||||
}
|
||||
.uniui-eye-filled[data-v-d31e1c47]:before {
|
||||
content: "\e66a";
|
||||
}
|
||||
.uniui-eye-slash[data-v-d31e1c47]:before {
|
||||
content: "\e6b3";
|
||||
}
|
||||
.uniui-eye-slash-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6b4";
|
||||
}
|
||||
.uniui-info-filled[data-v-d31e1c47]:before {
|
||||
content: "\e649";
|
||||
}
|
||||
.uniui-reload[data-v-d31e1c47]:before {
|
||||
content: "\e6b2";
|
||||
}
|
||||
.uniui-micoff-filled[data-v-d31e1c47]:before {
|
||||
content: "\e6b0";
|
||||
}
|
||||
.uniui-map-pin-ellipse[data-v-d31e1c47]:before {
|
||||
content: "\e6ac";
|
||||
}
|
||||
.uniui-map-pin[data-v-d31e1c47]:before {
|
||||
content: "\e6ad";
|
||||
}
|
||||
.uniui-location[data-v-d31e1c47]:before {
|
||||
content: "\e6ae";
|
||||
}
|
||||
.uniui-starhalf[data-v-d31e1c47]:before {
|
||||
content: "\e683";
|
||||
}
|
||||
.uniui-star[data-v-d31e1c47]:before {
|
||||
content: "\e688";
|
||||
}
|
||||
.uniui-star-filled[data-v-d31e1c47]:before {
|
||||
content: "\e68f";
|
||||
}
|
||||
.uniui-calendar[data-v-d31e1c47]:before {
|
||||
content: "\e6a0";
|
||||
}
|
||||
.uniui-fire[data-v-d31e1c47]:before {
|
||||
content: "\e6a1";
|
||||
}
|
||||
.uniui-medal[data-v-d31e1c47]:before {
|
||||
content: "\e6a2";
|
||||
}
|
||||
.uniui-font[data-v-d31e1c47]:before {
|
||||
content: "\e6a3";
|
||||
}
|
||||
.uniui-gift[data-v-d31e1c47]:before {
|
||||
content: "\e6a4";
|
||||
}
|
||||
.uniui-link[data-v-d31e1c47]:before {
|
||||
content: "\e6a5";
|
||||
}
|
||||
.uniui-notification[data-v-d31e1c47]:before {
|
||||
content: "\e6a6";
|
||||
}
|
||||
.uniui-staff[data-v-d31e1c47]:before {
|
||||
content: "\e6a7";
|
||||
}
|
||||
.uniui-vip[data-v-d31e1c47]:before {
|
||||
content: "\e6a8";
|
||||
}
|
||||
.uniui-folder-add[data-v-d31e1c47]:before {
|
||||
content: "\e6a9";
|
||||
}
|
||||
.uniui-tune[data-v-d31e1c47]:before {
|
||||
content: "\e6aa";
|
||||
}
|
||||
.uniui-auth[data-v-d31e1c47]:before {
|
||||
content: "\e6ab";
|
||||
}
|
||||
.uniui-person[data-v-d31e1c47]:before {
|
||||
content: "\e699";
|
||||
}
|
||||
.uniui-email-filled[data-v-d31e1c47]:before {
|
||||
content: "\e69a";
|
||||
}
|
||||
.uniui-phone-filled[data-v-d31e1c47]:before {
|
||||
content: "\e69b";
|
||||
}
|
||||
.uniui-phone[data-v-d31e1c47]:before {
|
||||
content: "\e69c";
|
||||
}
|
||||
.uniui-email[data-v-d31e1c47]:before {
|
||||
content: "\e69e";
|
||||
}
|
||||
.uniui-personadd[data-v-d31e1c47]:before {
|
||||
content: "\e69f";
|
||||
}
|
||||
.uniui-chatboxes-filled[data-v-d31e1c47]:before {
|
||||
content: "\e692";
|
||||
}
|
||||
.uniui-contact[data-v-d31e1c47]:before {
|
||||
content: "\e693";
|
||||
}
|
||||
.uniui-chatbubble-filled[data-v-d31e1c47]:before {
|
||||
content: "\e694";
|
||||
}
|
||||
.uniui-contact-filled[data-v-d31e1c47]:before {
|
||||
content: "\e695";
|
||||
}
|
||||
.uniui-chatboxes[data-v-d31e1c47]:before {
|
||||
content: "\e696";
|
||||
}
|
||||
.uniui-chatbubble[data-v-d31e1c47]:before {
|
||||
content: "\e697";
|
||||
}
|
||||
.uniui-upload-filled[data-v-d31e1c47]:before {
|
||||
content: "\e68e";
|
||||
}
|
||||
.uniui-upload[data-v-d31e1c47]:before {
|
||||
content: "\e690";
|
||||
}
|
||||
.uniui-weixin[data-v-d31e1c47]:before {
|
||||
content: "\e691";
|
||||
}
|
||||
.uniui-compose[data-v-d31e1c47]:before {
|
||||
content: "\e67f";
|
||||
}
|
||||
.uniui-qq[data-v-d31e1c47]:before {
|
||||
content: "\e680";
|
||||
}
|
||||
.uniui-download-filled[data-v-d31e1c47]:before {
|
||||
content: "\e681";
|
||||
}
|
||||
.uniui-pyq[data-v-d31e1c47]:before {
|
||||
content: "\e682";
|
||||
}
|
||||
.uniui-sound[data-v-d31e1c47]:before {
|
||||
content: "\e684";
|
||||
}
|
||||
.uniui-trash-filled[data-v-d31e1c47]:before {
|
||||
content: "\e685";
|
||||
}
|
||||
.uniui-sound-filled[data-v-d31e1c47]:before {
|
||||
content: "\e686";
|
||||
}
|
||||
.uniui-trash[data-v-d31e1c47]:before {
|
||||
content: "\e687";
|
||||
}
|
||||
.uniui-videocam-filled[data-v-d31e1c47]:before {
|
||||
content: "\e689";
|
||||
}
|
||||
.uniui-spinner-cycle[data-v-d31e1c47]:before {
|
||||
content: "\e68a";
|
||||
}
|
||||
.uniui-weibo[data-v-d31e1c47]:before {
|
||||
content: "\e68b";
|
||||
}
|
||||
.uniui-videocam[data-v-d31e1c47]:before {
|
||||
content: "\e68c";
|
||||
}
|
||||
.uniui-download[data-v-d31e1c47]:before {
|
||||
content: "\e68d";
|
||||
}
|
||||
.uniui-help[data-v-d31e1c47]:before {
|
||||
content: "\e679";
|
||||
}
|
||||
.uniui-navigate-filled[data-v-d31e1c47]:before {
|
||||
content: "\e67a";
|
||||
}
|
||||
.uniui-plusempty[data-v-d31e1c47]:before {
|
||||
content: "\e67b";
|
||||
}
|
||||
.uniui-smallcircle[data-v-d31e1c47]:before {
|
||||
content: "\e67c";
|
||||
}
|
||||
.uniui-minus-filled[data-v-d31e1c47]:before {
|
||||
content: "\e67d";
|
||||
}
|
||||
.uniui-micoff[data-v-d31e1c47]:before {
|
||||
content: "\e67e";
|
||||
}
|
||||
.uniui-closeempty[data-v-d31e1c47]:before {
|
||||
content: "\e66c";
|
||||
}
|
||||
.uniui-clear[data-v-d31e1c47]:before {
|
||||
content: "\e66d";
|
||||
}
|
||||
.uniui-navigate[data-v-d31e1c47]:before {
|
||||
content: "\e66e";
|
||||
}
|
||||
.uniui-minus[data-v-d31e1c47]:before {
|
||||
content: "\e66f";
|
||||
}
|
||||
.uniui-image[data-v-d31e1c47]:before {
|
||||
content: "\e670";
|
||||
}
|
||||
.uniui-mic[data-v-d31e1c47]:before {
|
||||
content: "\e671";
|
||||
}
|
||||
.uniui-paperplane[data-v-d31e1c47]:before {
|
||||
content: "\e672";
|
||||
}
|
||||
.uniui-close[data-v-d31e1c47]:before {
|
||||
content: "\e673";
|
||||
}
|
||||
.uniui-help-filled[data-v-d31e1c47]:before {
|
||||
content: "\e674";
|
||||
}
|
||||
.uniui-paperplane-filled[data-v-d31e1c47]:before {
|
||||
content: "\e675";
|
||||
}
|
||||
.uniui-plus[data-v-d31e1c47]:before {
|
||||
content: "\e676";
|
||||
}
|
||||
.uniui-mic-filled[data-v-d31e1c47]:before {
|
||||
content: "\e677";
|
||||
}
|
||||
.uniui-image-filled[data-v-d31e1c47]:before {
|
||||
content: "\e678";
|
||||
}
|
||||
.uniui-locked-filled[data-v-d31e1c47]:before {
|
||||
content: "\e668";
|
||||
}
|
||||
.uniui-info[data-v-d31e1c47]:before {
|
||||
content: "\e669";
|
||||
}
|
||||
.uniui-locked[data-v-d31e1c47]:before {
|
||||
content: "\e66b";
|
||||
}
|
||||
.uniui-camera-filled[data-v-d31e1c47]:before {
|
||||
content: "\e658";
|
||||
}
|
||||
.uniui-chat-filled[data-v-d31e1c47]:before {
|
||||
content: "\e659";
|
||||
}
|
||||
.uniui-camera[data-v-d31e1c47]:before {
|
||||
content: "\e65a";
|
||||
}
|
||||
.uniui-circle[data-v-d31e1c47]:before {
|
||||
content: "\e65b";
|
||||
}
|
||||
.uniui-checkmarkempty[data-v-d31e1c47]:before {
|
||||
content: "\e65c";
|
||||
}
|
||||
.uniui-chat[data-v-d31e1c47]:before {
|
||||
content: "\e65d";
|
||||
}
|
||||
.uniui-circle-filled[data-v-d31e1c47]:before {
|
||||
content: "\e65e";
|
||||
}
|
||||
.uniui-flag[data-v-d31e1c47]:before {
|
||||
content: "\e65f";
|
||||
}
|
||||
.uniui-flag-filled[data-v-d31e1c47]:before {
|
||||
content: "\e660";
|
||||
}
|
||||
.uniui-gear-filled[data-v-d31e1c47]:before {
|
||||
content: "\e661";
|
||||
}
|
||||
.uniui-home[data-v-d31e1c47]:before {
|
||||
content: "\e662";
|
||||
}
|
||||
.uniui-home-filled[data-v-d31e1c47]:before {
|
||||
content: "\e663";
|
||||
}
|
||||
.uniui-gear[data-v-d31e1c47]:before {
|
||||
content: "\e664";
|
||||
}
|
||||
.uniui-smallcircle-filled[data-v-d31e1c47]:before {
|
||||
content: "\e665";
|
||||
}
|
||||
.uniui-map-filled[data-v-d31e1c47]:before {
|
||||
content: "\e666";
|
||||
}
|
||||
.uniui-map[data-v-d31e1c47]:before {
|
||||
content: "\e667";
|
||||
}
|
||||
.uniui-refresh-filled[data-v-d31e1c47]:before {
|
||||
content: "\e656";
|
||||
}
|
||||
.uniui-refresh[data-v-d31e1c47]:before {
|
||||
content: "\e657";
|
||||
}
|
||||
.uniui-cloud-upload[data-v-d31e1c47]:before {
|
||||
content: "\e645";
|
||||
}
|
||||
.uniui-cloud-download-filled[data-v-d31e1c47]:before {
|
||||
content: "\e646";
|
||||
}
|
||||
.uniui-cloud-download[data-v-d31e1c47]:before {
|
||||
content: "\e647";
|
||||
}
|
||||
.uniui-cloud-upload-filled[data-v-d31e1c47]:before {
|
||||
content: "\e648";
|
||||
}
|
||||
.uniui-redo[data-v-d31e1c47]:before {
|
||||
content: "\e64a";
|
||||
}
|
||||
.uniui-images-filled[data-v-d31e1c47]:before {
|
||||
content: "\e64b";
|
||||
}
|
||||
.uniui-undo-filled[data-v-d31e1c47]:before {
|
||||
content: "\e64c";
|
||||
}
|
||||
.uniui-more[data-v-d31e1c47]:before {
|
||||
content: "\e64d";
|
||||
}
|
||||
.uniui-more-filled[data-v-d31e1c47]:before {
|
||||
content: "\e64e";
|
||||
}
|
||||
.uniui-undo[data-v-d31e1c47]:before {
|
||||
content: "\e64f";
|
||||
}
|
||||
.uniui-images[data-v-d31e1c47]:before {
|
||||
content: "\e650";
|
||||
}
|
||||
.uniui-paperclip[data-v-d31e1c47]:before {
|
||||
content: "\e652";
|
||||
}
|
||||
.uniui-settings[data-v-d31e1c47]:before {
|
||||
content: "\e653";
|
||||
}
|
||||
.uniui-search[data-v-d31e1c47]:before {
|
||||
content: "\e654";
|
||||
}
|
||||
.uniui-redo-filled[data-v-d31e1c47]:before {
|
||||
content: "\e655";
|
||||
}
|
||||
.uniui-list[data-v-d31e1c47]:before {
|
||||
content: "\e644";
|
||||
}
|
||||
.uniui-mail-open-filled[data-v-d31e1c47]:before {
|
||||
content: "\e63a";
|
||||
}
|
||||
.uniui-hand-down-filled[data-v-d31e1c47]:before {
|
||||
content: "\e63c";
|
||||
}
|
||||
.uniui-hand-down[data-v-d31e1c47]:before {
|
||||
content: "\e63d";
|
||||
}
|
||||
.uniui-hand-up-filled[data-v-d31e1c47]:before {
|
||||
content: "\e63e";
|
||||
}
|
||||
.uniui-hand-up[data-v-d31e1c47]:before {
|
||||
content: "\e63f";
|
||||
}
|
||||
.uniui-heart-filled[data-v-d31e1c47]:before {
|
||||
content: "\e641";
|
||||
}
|
||||
.uniui-mail-open[data-v-d31e1c47]:before {
|
||||
content: "\e643";
|
||||
}
|
||||
.uniui-heart[data-v-d31e1c47]:before {
|
||||
content: "\e639";
|
||||
}
|
||||
.uniui-loop[data-v-d31e1c47]:before {
|
||||
content: "\e633";
|
||||
}
|
||||
.uniui-pulldown[data-v-d31e1c47]:before {
|
||||
content: "\e632";
|
||||
}
|
||||
.uniui-scan[data-v-d31e1c47]:before {
|
||||
content: "\e62a";
|
||||
}
|
||||
.uniui-bars[data-v-d31e1c47]:before {
|
||||
content: "\e627";
|
||||
}
|
||||
.uniui-checkbox[data-v-d31e1c47]:before {
|
||||
content: "\e62b";
|
||||
}
|
||||
.uniui-checkbox-filled[data-v-d31e1c47]:before {
|
||||
content: "\e62c";
|
||||
}
|
||||
.uniui-shop[data-v-d31e1c47]:before {
|
||||
content: "\e62f";
|
||||
}
|
||||
.uniui-headphones[data-v-d31e1c47]:before {
|
||||
content: "\e630";
|
||||
}
|
||||
.uniui-cart[data-v-d31e1c47]:before {
|
||||
content: "\e631";
|
||||
}
|
||||
@font-face {
|
||||
font-family: uniicons;
|
||||
src: url("../../assets/uniicons.32e978a5.ttf");
|
||||
}
|
||||
.uni-icons[data-v-d31e1c47] {
|
||||
font-family: uniicons;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
}
|
||||
/* ========== 通用 ========== */
|
||||
.status-bar[data-v-96fa4671] {
|
||||
height: var(--status-bar-height);
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.page-container[data-v-96fa4671] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100vh;
|
||||
background-color: #f5f6fa;
|
||||
}
|
||||
/* ========== 导航栏 ========== */
|
||||
.cloud-db-header[data-v-96fa4671] {
|
||||
background-color: #ffffff;
|
||||
flex-shrink: 0;
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
}
|
||||
.custom-navbar[data-v-96fa4671] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
height: 2.75rem;
|
||||
padding: 0 0.9375rem;
|
||||
}
|
||||
.navbar-left[data-v-96fa4671] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
min-width: 3.75rem;
|
||||
}
|
||||
.custom-navbar-icon[data-v-96fa4671] {
|
||||
font-size: 1.25rem;
|
||||
color: #333;
|
||||
}
|
||||
.navbar-title[data-v-96fa4671] {
|
||||
font-size: 1.0625rem;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.navbar-right[data-v-96fa4671] {
|
||||
min-width: 3.75rem;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
/* 下拉菜单 */
|
||||
.menu-card[data-v-96fa4671] {
|
||||
position: absolute;
|
||||
top: 2.75rem;
|
||||
right: 0.625rem;
|
||||
background: #fff;
|
||||
border-radius: 0.5rem;
|
||||
box-shadow: 0 0.25rem 1rem rgba(0,0,0,0.12);
|
||||
z-index: 500;
|
||||
overflow: hidden;
|
||||
min-width: 6.25rem;
|
||||
}
|
||||
.menu-card-item[data-v-96fa4671] {
|
||||
padding: 0.75rem 1.125rem;
|
||||
font-size: 0.875rem;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
}
|
||||
.menu-card-item[data-v-96fa4671]:active {
|
||||
background-color: #f5f6fa;
|
||||
}
|
||||
.solid-line[data-v-96fa4671] {
|
||||
height: 0.03125rem;
|
||||
background-color: #eee;
|
||||
margin: 0 0.625rem;
|
||||
}
|
||||
/* ========== 数据库信息栏 ========== */
|
||||
.db-info-bar[data-v-96fa4671] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
padding: 0.625rem 0.9375rem;
|
||||
background: #fff;
|
||||
border-bottom: 0.03125rem solid #f0f0f0;
|
||||
}
|
||||
.db-info-text[data-v-96fa4671] {
|
||||
font-size: 0.75rem;
|
||||
color: #999;
|
||||
}
|
||||
/* ========== 内容区域 ========== */
|
||||
.cloud-db-content[data-v-96fa4671] {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.section-block[data-v-96fa4671] {
|
||||
margin: 0.625rem;
|
||||
background: #fff;
|
||||
border-radius: 0.625rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
.section-header[data-v-96fa4671] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0.75rem 0.9375rem;
|
||||
border-bottom: 0.03125rem solid #f5f6fa;
|
||||
}
|
||||
.section-title[data-v-96fa4671] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.375rem;
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
}
|
||||
.section-title .iconfont[data-v-96fa4671] {
|
||||
font-size: 1.125rem;
|
||||
color: #3b86ff;
|
||||
}
|
||||
.section-actions[data-v-96fa4671] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
.row-count[data-v-96fa4671] {
|
||||
font-size: 0.75rem;
|
||||
color: #999;
|
||||
}
|
||||
.section-divider[data-v-96fa4671] {
|
||||
height: 0.03125rem;
|
||||
background-color: #f0f0f0;
|
||||
margin: 0 0.625rem;
|
||||
}
|
||||
.section-body[data-v-96fa4671] {
|
||||
padding: 0.5rem 0;
|
||||
}
|
||||
/* ========== 空状态 ========== */
|
||||
.empty-tip[data-v-96fa4671] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 1.875rem 0;
|
||||
color: #ccc;
|
||||
font-size: 0.8125rem;
|
||||
}
|
||||
.empty-tip .iconfont[data-v-96fa4671] {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
/* ========== 表列表 ========== */
|
||||
.table-list[data-v-96fa4671] {
|
||||
padding: 0 0.9375rem;
|
||||
}
|
||||
.table-item[data-v-96fa4671] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0.75rem 0;
|
||||
border-bottom: 0.03125rem solid #f5f6fa;
|
||||
}
|
||||
.table-item[data-v-96fa4671]:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.table-item[data-v-96fa4671]:active {
|
||||
background-color: #fafbfc;
|
||||
margin: 0 -0.9375rem;
|
||||
padding-left: 0.9375rem;
|
||||
padding-right: 0.9375rem;
|
||||
}
|
||||
.table-icon[data-v-96fa4671] {
|
||||
width: 2.25rem;
|
||||
height: 2.25rem;
|
||||
border-radius: 0.5rem;
|
||||
background: rgba(59, 134, 255, 0.08);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 0.625rem;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.table-info[data-v-96fa4671] {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
.table-name[data-v-96fa4671] {
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 500;
|
||||
color: #333;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.table-desc[data-v-96fa4671] {
|
||||
font-size: 0.75rem;
|
||||
color: #999;
|
||||
margin-top: 0.125rem;
|
||||
}
|
||||
.table-meta[data-v-96fa4671] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.25rem;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
/* ========== 数据表格 ========== */
|
||||
.data-table-wrapper[data-v-96fa4671] {
|
||||
padding: 0;
|
||||
}
|
||||
.data-table-scroll[data-v-96fa4671] {
|
||||
width: 100%;
|
||||
}
|
||||
.data-table[data-v-96fa4671] {
|
||||
min-width: 100%;
|
||||
}
|
||||
.data-row[data-v-96fa4671] {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
border-bottom: 0.03125rem solid #f0f0f0;
|
||||
}
|
||||
.data-row[data-v-96fa4671]:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.data-header[data-v-96fa4671] {
|
||||
background-color: #f8f9fb;
|
||||
}
|
||||
.data-cell[data-v-96fa4671] {
|
||||
padding: 0.5rem 0.625rem;
|
||||
font-size: 0.8125rem;
|
||||
color: #333;
|
||||
min-width: 5rem;
|
||||
max-width: 9.375rem;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
border-right: 0.03125rem solid #f0f0f0;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.data-cell[data-v-96fa4671]:last-child {
|
||||
border-right: none;
|
||||
}
|
||||
.data-header .data-cell[data-v-96fa4671] {
|
||||
font-weight: 600;
|
||||
color: #666;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.index-cell[data-v-96fa4671] {
|
||||
min-width: 2.5rem !important;
|
||||
max-width: 2.5rem !important;
|
||||
text-align: center;
|
||||
color: #999;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.data-row[data-v-96fa4671]:active {
|
||||
background-color: #f5f7fa;
|
||||
}
|
||||
/* ========== 弹窗通用 ========== */
|
||||
.popup-overlay[data-v-96fa4671] {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
z-index: 900;
|
||||
}
|
||||
.popup-card[data-v-96fa4671] {
|
||||
width: 20rem;
|
||||
background: #fff;
|
||||
border-radius: 0.75rem;
|
||||
padding: 1.25rem 1.125rem 0.9375rem;
|
||||
position: relative;
|
||||
}
|
||||
.close-popup-card[data-v-96fa4671] {
|
||||
position: absolute;
|
||||
top: 0.625rem;
|
||||
right: 0.625rem;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.close-popup-card .iconfont[data-v-96fa4671] {
|
||||
font-size: 1.125rem;
|
||||
color: #999;
|
||||
}
|
||||
.popup-title[data-v-96fa4671] {
|
||||
font-size: 1.0625rem;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
margin-bottom: 0.9375rem;
|
||||
}
|
||||
.new-folder-name[data-v-96fa4671] {
|
||||
font-size: 0.8125rem;
|
||||
color: #666;
|
||||
margin-bottom: 0.375rem;
|
||||
}
|
||||
.create-folder-name[data-v-96fa4671] {
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
.create-folder-name uni-input[data-v-96fa4671] {
|
||||
width: 100%;
|
||||
height: 2.5rem;
|
||||
border: 0.0625rem solid #e0e0e0;
|
||||
border-radius: 0.375rem;
|
||||
padding: 0 0.625rem;
|
||||
font-size: 0.875rem;
|
||||
box-sizing: border-box;
|
||||
background: #f8f9fb;
|
||||
}
|
||||
.upload-file-area[data-v-96fa4671] {
|
||||
width: 100%;
|
||||
height: 3.75rem;
|
||||
border: 0.0625rem dashed #d0d0d0;
|
||||
border-radius: 0.375rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 0.75rem;
|
||||
background: #fafbfc;
|
||||
}
|
||||
.selected-file[data-v-96fa4671] {
|
||||
font-size: 0.8125rem;
|
||||
color: #3b86ff;
|
||||
}
|
||||
.upload-hint[data-v-96fa4671] {
|
||||
font-size: 0.75rem;
|
||||
color: #999;
|
||||
}
|
||||
.option-wrapper[data-v-96fa4671] {
|
||||
display: flex;
|
||||
gap: 0.625rem;
|
||||
margin-top: 0.3125rem;
|
||||
}
|
||||
.opt-btn[data-v-96fa4671] {
|
||||
flex: 1;
|
||||
height: 2.5rem;
|
||||
border-radius: 0.375rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 0.9375rem;
|
||||
}
|
||||
.opt-cancel[data-v-96fa4671] {
|
||||
background: #f5f6fa;
|
||||
color: #666;
|
||||
}
|
||||
.opt-confirm[data-v-96fa4671] {
|
||||
background: #3b86ff;
|
||||
color: #fff;
|
||||
}
|
||||
/* ========== 权限管理 ========== */
|
||||
.permission-body[data-v-96fa4671] {
|
||||
max-height: 18.75rem;
|
||||
margin-bottom: 0.625rem;
|
||||
}
|
||||
.permission-list[data-v-96fa4671] {
|
||||
padding: 0 0.3125rem;
|
||||
}
|
||||
.permission-item[data-v-96fa4671] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0.625rem 0.3125rem;
|
||||
border-bottom: 0.03125rem solid #f0f0f0;
|
||||
}
|
||||
.perm-info[data-v-96fa4671] {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.125rem;
|
||||
}
|
||||
.perm-name[data-v-96fa4671] {
|
||||
font-size: 0.875rem;
|
||||
color: #333;
|
||||
}
|
||||
.perm-type[data-v-96fa4671] {
|
||||
font-size: 0.6875rem;
|
||||
color: #999;
|
||||
}
|
||||
.perm-level[data-v-96fa4671] {
|
||||
font-size: 0.75rem;
|
||||
color: #3b86ff;
|
||||
background: rgba(59, 134, 255, 0.08);
|
||||
padding: 0.1875rem 0.5rem;
|
||||
border-radius: 0.25rem;
|
||||
margin: 0 0.5rem;
|
||||
}
|
||||
.perm-actions[data-v-96fa4671] {
|
||||
display: flex;
|
||||
gap: 0.375rem;
|
||||
}
|
||||
.perm-action-btn[data-v-96fa4671] {
|
||||
font-size: 0.75rem;
|
||||
color: #3b86ff;
|
||||
padding: 0.25rem 0.5rem;
|
||||
border: 0.03125rem solid #3b86ff;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
.perm-action-btn.delete[data-v-96fa4671] {
|
||||
color: #f56c6c;
|
||||
border-color: #f56c6c;
|
||||
}
|
||||
.close-permission-btn[data-v-96fa4671] {
|
||||
text-align: center;
|
||||
font-size: 0.875rem;
|
||||
color: #999;
|
||||
padding: 0.5rem 0;
|
||||
}
|
||||
.folder-null[data-v-96fa4671] {
|
||||
text-align: center;
|
||||
padding: 1.25rem 0;
|
||||
font-size: 0.8125rem;
|
||||
color: #999;
|
||||
}
|
||||
/* ========== 移交团队 ========== */
|
||||
.transfer-body[data-v-96fa4671] {
|
||||
max-height: 15.625rem;
|
||||
margin-bottom: 0.625rem;
|
||||
}
|
||||
.transfer-list[data-v-96fa4671] {
|
||||
padding: 0 0.3125rem;
|
||||
}
|
||||
.transfer-item[data-v-96fa4671] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0.75rem 0.5rem;
|
||||
border-bottom: 0.03125rem solid #f0f0f0;
|
||||
border-radius: 0.375rem;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
.transfer-item.active[data-v-96fa4671] {
|
||||
background: rgba(59, 134, 255, 0.06);
|
||||
}
|
||||
.transfer-name[data-v-96fa4671] {
|
||||
font-size: 0.875rem;
|
||||
color: #333;
|
||||
}
|
||||
/* ===== 加载动画 ===== */
|
||||
.loading-area[data-v-96fa4671] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 1.875rem 0;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
.loading-spinner[data-v-96fa4671] {
|
||||
width: 1.75rem;
|
||||
height: 1.75rem;
|
||||
border: 0.125rem solid #e8e8e8;
|
||||
border-top-color: #3b86ff;
|
||||
border-radius: 50%;
|
||||
animation: spin-96fa4671 0.8s linear infinite;
|
||||
}
|
||||
@keyframes spin-96fa4671 {
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
.loading-text[data-v-96fa4671] {
|
||||
font-size: 0.75rem;
|
||||
color: #999;
|
||||
}
|
||||
BIN
unpackage/dist/dev/app-plus/uni_modules/lime-choose-file/utssdk/app-android/classes.dex
vendored
Normal file
BIN
unpackage/dist/dev/app-plus/uni_modules/lime-choose-file/utssdk/app-android/classes.dex
vendored
Normal file
Binary file not shown.
3
unpackage/dist/dev/app-plus/uni_modules/lime-choose-file/utssdk/app-android/config.json
vendored
Normal file
3
unpackage/dist/dev/app-plus/uni_modules/lime-choose-file/utssdk/app-android/config.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"minSdkVersion": "21"
|
||||
}
|
||||
277
unpackage/dist/dev/app-plus/uni_modules/lime-choose-file/utssdk/app-android/index.kt
vendored
Normal file
277
unpackage/dist/dev/app-plus/uni_modules/lime-choose-file/utssdk/app-android/index.kt
vendored
Normal file
@@ -0,0 +1,277 @@
|
||||
@file:Suppress("UNCHECKED_CAST", "USELESS_CAST", "INAPPLICABLE_JVM_NAME", "UNUSED_ANONYMOUS_PARAMETER", "SENSELESS_COMPARISON", "NAME_SHADOWING", "UNNECESSARY_NOT_NULL_ASSERTION")
|
||||
package uts.sdk.modules.limeChooseFile
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.provider.OpenableColumns
|
||||
import io.dcloud.uniapp.*
|
||||
import io.dcloud.uniapp.extapi.*
|
||||
import io.dcloud.unicloud.*
|
||||
import io.dcloud.uts.*
|
||||
import io.dcloud.uts.Map
|
||||
import io.dcloud.uts.Set
|
||||
import io.dcloud.uts.UTSAndroid
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import kotlin.properties.Delegates
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Deferred
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.async
|
||||
typealias ChooseFileErrorCode = Number
|
||||
interface GeneralCallbackResult : IUniError {
|
||||
override var errCode: ChooseFileErrorCode
|
||||
}
|
||||
interface ChooseFile {
|
||||
var name: String
|
||||
var path: String
|
||||
var size: Number
|
||||
var time: Number
|
||||
var type: String
|
||||
}
|
||||
open class ChooseFileSuccessCallbackResult (
|
||||
@JsonNotNull
|
||||
open var tempFiles: UTSArray<ChooseFile>,
|
||||
@JsonNotNull
|
||||
open var errMsg: String,
|
||||
) : UTSObject(), IUTSSourceMap {
|
||||
override fun `__$getOriginalPosition`(): UTSSourceMapPosition? {
|
||||
return UTSSourceMapPosition("ChooseFileSuccessCallbackResult", "uni_modules/lime-choose-file/utssdk/interface.uts", 34, 13)
|
||||
}
|
||||
}
|
||||
typealias ChooseFileSuccessCallback = (result: ChooseFileSuccessCallbackResult) -> Unit
|
||||
typealias ChooseFileFailCallback = (res: GeneralCallbackResult) -> Unit
|
||||
typealias ChooseFileCompleteCallback = (res: GeneralCallbackResult) -> Unit
|
||||
open class ChooseFileOption (
|
||||
open var filename: String? = null,
|
||||
open var count: Number? = null,
|
||||
open var type: String? = null,
|
||||
open var extension: UTSArray<String>? = null,
|
||||
open var success: ChooseFileSuccessCallback? = null,
|
||||
open var fail: ChooseFileFailCallback? = null,
|
||||
open var complete: ChooseFileCompleteCallback? = null,
|
||||
) : UTSObject(), IUTSSourceMap {
|
||||
override fun `__$getOriginalPosition`(): UTSSourceMapPosition? {
|
||||
return UTSSourceMapPosition("ChooseFileOption", "uni_modules/lime-choose-file/utssdk/interface.uts", 45, 13)
|
||||
}
|
||||
}
|
||||
val UniErrorSubject = "chooseFile\""
|
||||
val UniErrors: Map<ChooseFileErrorCode, String> = Map(_uA(
|
||||
_uA(
|
||||
9010001,
|
||||
"chooseFile:ok"
|
||||
),
|
||||
_uA(
|
||||
9010002,
|
||||
"ChooseFile:failed"
|
||||
)
|
||||
))
|
||||
open class GeneralCallbackResultImpl : UniError, GeneralCallbackResult, IUTSSourceMap {
|
||||
override fun `__$getOriginalPosition`(): UTSSourceMapPosition? {
|
||||
return UTSSourceMapPosition("GeneralCallbackResultImpl", "uni_modules/lime-choose-file/utssdk/unierror.uts", 25, 14)
|
||||
}
|
||||
constructor(errCode: ChooseFileErrorCode, errMsg: String? = null) : super() {
|
||||
this.errSubject = UniErrorSubject
|
||||
this.errCode = errCode
|
||||
this.errMsg = errMsg ?: UniErrors[errCode] ?: ""
|
||||
}
|
||||
}
|
||||
val REQUEST_CODE_CHOOSE_FILE: Int = 42
|
||||
var resultFunction: ((requestCode: Int, resultCode: Int, data: Intent?) -> Unit)? = null
|
||||
open class ChooseFileImpl : ChooseFile, IUTSSourceMap {
|
||||
override fun `__$getOriginalPosition`(): UTSSourceMapPosition? {
|
||||
return UTSSourceMapPosition("ChooseFileImpl", "uni_modules/lime-choose-file/utssdk/app-android/index.uts", 17, 7)
|
||||
}
|
||||
override var name: String = ""
|
||||
override var path: String = ""
|
||||
override var size: Number = 0
|
||||
override var time: Number = 0
|
||||
override var type: String = "file"
|
||||
private var options: ChooseFileOption
|
||||
constructor(uri: Uri, options: ChooseFileOption){
|
||||
this.options = options
|
||||
this.time = Date.now()
|
||||
this.type = this.getFileTypeFromUri(uri)
|
||||
this.getFileInfoFromUri(uri)
|
||||
if (this.isCache(options)) {
|
||||
this.copyFileToCache(uri)
|
||||
}
|
||||
}
|
||||
private fun isCache(options: ChooseFileOption): Boolean {
|
||||
val extension = this.getFileExtension(this.name)
|
||||
val extensions = options.extension
|
||||
val type = options.type ?: "all"
|
||||
val hasExtension = extensions != null && extension != "" && extensions.includes(extension)
|
||||
val isVideoOrImage = _uA(
|
||||
"video",
|
||||
"image"
|
||||
).includes(type)
|
||||
val isFileAndNotVideoOrImage = type == "file" && !_uA(
|
||||
"video",
|
||||
"image"
|
||||
).includes(this.type)
|
||||
if ((type == "all" || isVideoOrImage || isFileAndNotVideoOrImage) && !hasExtension) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
private fun getFileExtension(fileName: String): String {
|
||||
val lastDotIndex = fileName.lastIndexOf(".")
|
||||
if (lastDotIndex == -1) {
|
||||
return ""
|
||||
}
|
||||
return fileName.substring(lastDotIndex + 1)
|
||||
}
|
||||
private fun copyFileToCache(uri: Uri) {
|
||||
val cacheDir = UTSAndroid.getAppCachePath()
|
||||
val context = UTSAndroid.getAppContext()
|
||||
if (cacheDir != null) {
|
||||
val path = File(cacheDir)
|
||||
if (!path.exists()) {
|
||||
path.mkdir()
|
||||
}
|
||||
}
|
||||
var fileName = this.name
|
||||
if (this.options.filename != null) {
|
||||
fileName = this.options.filename!!
|
||||
if (this.options.count != null && this.options.count!! > 1) {
|
||||
fileName = "" + fileName + "_" + Date.now()
|
||||
}
|
||||
val extension = this.getFileExtension(this.name)
|
||||
fileName = "" + fileName + "." + extension
|
||||
}
|
||||
val destFile = File(cacheDir, fileName)
|
||||
try {
|
||||
val inputStream = context!!.getContentResolver().openInputStream(uri)
|
||||
val outputStream = FileOutputStream(destFile)
|
||||
if (inputStream != null) {
|
||||
var buffer = ByteArray(1024)
|
||||
var c = inputStream.read(buffer)
|
||||
while(c > 0){
|
||||
outputStream.write(buffer, 0, c)
|
||||
c = inputStream.read(buffer)
|
||||
}
|
||||
}
|
||||
this.path = cacheDir + fileName
|
||||
}
|
||||
catch (e: Throwable) {}
|
||||
}
|
||||
private fun getFileTypeFromUri(uri: Uri): String {
|
||||
val context = UTSAndroid.getAppContext()
|
||||
var fileType = "file"
|
||||
var mimeType = context!!.getContentResolver().getType(uri)
|
||||
if (mimeType != null) {
|
||||
if (mimeType.startsWith("video")) {
|
||||
fileType = "video"
|
||||
} else if (mimeType.startsWith("image")) {
|
||||
fileType = "image"
|
||||
}
|
||||
}
|
||||
return fileType
|
||||
}
|
||||
private fun getFileInfoFromUri(uri: Uri) {
|
||||
val context = UTSAndroid.getAppContext()
|
||||
var cursor = context!!.getContentResolver().query(uri, null, null, null, null)
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
this.name = cursor.getString(cursor.getColumnIndexOrThrow(OpenableColumns.DISPLAY_NAME))
|
||||
val fileSize = cursor.getLong(cursor.getColumnIndexOrThrow(OpenableColumns.SIZE))
|
||||
this.size = UTSNumber.from(fileSize)
|
||||
cursor.close()
|
||||
} else if ("file".equals(uri.getScheme())) {
|
||||
this.name = uri.getLastPathSegment() ?: ""
|
||||
val file = File(uri.getPath() ?: "")
|
||||
val fileSize = file.length()
|
||||
this.size = UTSNumber.from(fileSize)
|
||||
}
|
||||
}
|
||||
}
|
||||
fun chooseFile(options: ChooseFileOption) {
|
||||
if (resultFunction != null) {
|
||||
UTSAndroid.offAppActivityResult(resultFunction!!)
|
||||
}
|
||||
val type = options.type ?: "all"
|
||||
val intent = Intent(Intent.ACTION_GET_CONTENT)
|
||||
if (type.equals("all") || type.equals("file")) {
|
||||
intent.setType("*/*")
|
||||
} else if (type.equals("video")) {
|
||||
intent.setType("video/*")
|
||||
} else if (type.equals("image")) {
|
||||
intent.setType("image/*")
|
||||
}
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE)
|
||||
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, if (options.count == 1) {
|
||||
false
|
||||
} else {
|
||||
true
|
||||
}
|
||||
)
|
||||
resultFunction = fun(requestCode: Int, resultCode: Int, data: Intent?){
|
||||
if (requestCode == REQUEST_CODE_CHOOSE_FILE) {
|
||||
UTSAndroid.offAppActivityResult(resultFunction!!)
|
||||
if (resultCode == -1 && data != null) {
|
||||
val clipData = data.getClipData()
|
||||
val tempFiles: UTSArray<ChooseFile> = _uA()
|
||||
if (clipData != null) {
|
||||
run {
|
||||
var i: Number = 0
|
||||
while(i < clipData.getItemCount()){
|
||||
val uri = clipData.getItemAt(i.toInt()).getUri()
|
||||
val chooseFile = ChooseFileImpl(uri, options)
|
||||
if (chooseFile.path != "") {
|
||||
tempFiles.push(chooseFile)
|
||||
}
|
||||
i++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
val uri = data.getData()
|
||||
if (uri != null) {
|
||||
val chooseFile = ChooseFileImpl(uri, options)
|
||||
if (chooseFile.path != "") {
|
||||
tempFiles.push(chooseFile)
|
||||
}
|
||||
}
|
||||
}
|
||||
val count = options.count ?: Integer.MAX_VALUE
|
||||
if (tempFiles.length > 0 && count >= tempFiles.length) {
|
||||
options.success?.invoke(ChooseFileSuccessCallbackResult(tempFiles = tempFiles, errMsg = "chooseFile:ok"))
|
||||
} else {
|
||||
val err = GeneralCallbackResultImpl(9010002, "没有可用的文件或文件超过设置数量")
|
||||
options.fail?.invoke(err)
|
||||
options.complete?.invoke(err)
|
||||
}
|
||||
} else {
|
||||
val err = GeneralCallbackResultImpl(9010002, "没有可用的文件")
|
||||
options.fail?.invoke(err)
|
||||
options.complete?.invoke(err)
|
||||
}
|
||||
} else {
|
||||
val err = GeneralCallbackResultImpl(9010002, "没有可用的文件")
|
||||
options.fail?.invoke(err)
|
||||
options.complete?.invoke(err)
|
||||
}
|
||||
}
|
||||
UTSAndroid.onAppActivityResult(resultFunction!!)
|
||||
UTSAndroid.getUniActivity()!!.startActivityForResult(Intent.createChooser(intent, "选择文件"), REQUEST_CODE_CHOOSE_FILE)
|
||||
}
|
||||
open class ChooseFileOptionJSONObject : UTSJSONObject() {
|
||||
open var filename: String? = null
|
||||
open var count: Number? = null
|
||||
open var type: String? = null
|
||||
open var extension: UTSArray<String>? = null
|
||||
open var success: UTSCallback? = null
|
||||
open var fail: UTSCallback? = null
|
||||
open var complete: UTSCallback? = null
|
||||
}
|
||||
fun chooseFileByJs(options: ChooseFileOptionJSONObject) {
|
||||
return chooseFile(ChooseFileOption(filename = options.filename, count = options.count, type = options.type, extension = options.extension, success = fun(result: ChooseFileSuccessCallbackResult): Unit {
|
||||
options.success?.invoke(result)
|
||||
}
|
||||
, fail = fun(res: GeneralCallbackResult): Unit {
|
||||
options.fail?.invoke(res)
|
||||
}
|
||||
, complete = fun(res: GeneralCallbackResult): Unit {
|
||||
options.complete?.invoke(res)
|
||||
}
|
||||
))
|
||||
}
|
||||
Reference in New Issue
Block a user