第一次打包失败

This commit is contained in:
2026-07-02 18:01:56 +08:00
parent 3544208baa
commit 879d2e350a
75 changed files with 7499 additions and 2267 deletions

View File

@@ -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()})}});

File diff suppressed because it is too large Load Diff

View File

@@ -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\"/>",

View File

@@ -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;
}

View 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;
}

View File

@@ -0,0 +1,3 @@
{
"minSdkVersion": "21"
}

View 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)
}
))
}