Merge branch 'develop' of http://25.13.9.101:9000/K17_AITS/tra-app into develop
This commit is contained in:
+1
-1
@@ -7,7 +7,7 @@ ENV = 'development'
|
||||
# VITE_APP_BASE_API_Url = 'https://aits.jlbank.com.cn:7001'
|
||||
|
||||
|
||||
VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7002'
|
||||
VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001'
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -8,8 +8,8 @@ android {
|
||||
applicationId "cn.com.jlbank.ai"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 33
|
||||
versionName System.getenv("versionName") ?: "1.0.0"
|
||||
versionCode System.getenv("versionCode")?.toInteger() ?: 1
|
||||
versionName System.getenv("versionName") ?: "0.0.4"
|
||||
versionCode System.getenv("versionCode")?.toInteger() ?: 4
|
||||
multiDexEnabled true
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -7,8 +7,8 @@
|
||||
"id": "__UNI__EDE0E52",
|
||||
"name": "tra-app",
|
||||
"version": {
|
||||
"name": "0.0.3",
|
||||
"code": 3
|
||||
"name": "0.0.4",
|
||||
"code": 4
|
||||
},
|
||||
"description": "",
|
||||
"developer": {
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
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 +1 @@
|
||||
.nav-bar[data-v-6f106210]{width:100%;height:var(--status-bar-height);position:fixed}.nav-bar-seat[data-v-6f106210]{width:100%;height:var(--status-bar-height)}.nav-bar-div[data-v-6f106210]{z-index:1900;width:100%;position:relative}uni-view[data-v-843a5998],uni-scroll-view[data-v-843a5998],uni-swiper-item[data-v-843a5998]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}@font-face{font-family:uvicon-iconfont;src:url(../../assets/uvicons.04d281cc.ttf) format("truetype")}.uv-icon[data-v-843a5998]{display:flex;align-items:center}.uv-icon--left[data-v-843a5998]{flex-direction:row-reverse;align-items:center}.uv-icon--right[data-v-843a5998]{flex-direction:row;align-items:center}.uv-icon--top[data-v-843a5998]{flex-direction:column-reverse;justify-content:center}.uv-icon--bottom[data-v-843a5998]{flex-direction:column;justify-content:center}.uv-icon__icon[data-v-843a5998]{font-family:uvicon-iconfont;position:relative;display:flex;flex-direction:row;align-items:center}.uv-icon__icon--primary[data-v-843a5998]{color:#06f}.uv-icon__icon--success[data-v-843a5998]{color:#5ac725}.uv-icon__icon--error[data-v-843a5998]{color:#f56c6c}.uv-icon__icon--warning[data-v-843a5998]{color:#f9ae3d}.uv-icon__icon--info[data-v-843a5998]{color:#909399}.uv-icon__img[data-v-843a5998]{height:auto;will-change:transform}.uv-icon__label[data-v-843a5998]{line-height:1}.uv-border[data-v-1b8a7a55]{border-width:.5px!important;border-color:#dadbde!important;border-style:solid}.uv-border-bottom[data-v-1b8a7a55]{border-bottom-width:.5px!important;border-color:#dadbde!important;border-bottom-style:solid}uni-view[data-v-1b8a7a55],uni-scroll-view[data-v-1b8a7a55],uni-swiper-item[data-v-1b8a7a55]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-input[data-v-1b8a7a55]{display:flex;flex-direction:row;align-items:center;justify-content:space-between;flex:1}.uv-input--radius[data-v-1b8a7a55],.uv-input--square[data-v-1b8a7a55]{border-radius:4px}.uv-input--no-radius[data-v-1b8a7a55]{border-radius:0}.uv-input--circle[data-v-1b8a7a55]{border-radius:100px}.uv-input__content[data-v-1b8a7a55]{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.uv-input__content__field-wrapper[data-v-1b8a7a55]{position:relative;display:flex;flex-direction:row;margin:0;flex:1}.uv-input__content__field-wrapper__field[data-v-1b8a7a55]{line-height:26px;text-align:left;color:#303133;height:24px;font-size:15px;flex:1}.uv-input__content__clear[data-v-1b8a7a55]{width:20px;height:20px;border-radius:100px;background-color:#c6c7cb;display:flex;flex-direction:row;align-items:center;justify-content:center;transform:scale(.82);margin-left:15px}.uv-input__content__subfix-icon[data-v-1b8a7a55]{margin-left:4px}.uv-input__content__prefix-icon[data-v-1b8a7a55]{margin-right:4px}.no_search[data-v-3ea77890]{width:100%;display:flex;flex-direction:column;align-items:center;margin-top:3.125rem}.no_search .img[data-v-3ea77890]{width:7.1875rem}.no_search .text[data-v-3ea77890]{color:#999;font-size:.9375rem}.history_div[data-v-3ea77890]{width:100%}.history_item[data-v-3ea77890]{padding:.25rem 0;color:#777}.title_div[data-v-3ea77890]{display:flex;justify-content:space-between;align-items:center;width:100%;height:2.1875rem;margin:.3125rem 0}.title_div .text[data-v-3ea77890]{font-size:1rem;font-weight:700}.title_div .delete_img[data-v-3ea77890]{display:flex;align-items:center;justify-content:center;padding:.625rem 0 .625rem 1rem}.title_div .delete_img .img[data-v-3ea77890]{height:.75rem}.search_content[data-v-3ea77890]{background-color:#fff;margin-top:-.1875rem;border-radius:.375rem .375rem 0 0;display:flex;flex-direction:column;align-items:center;padding:0 .9375rem;min-height:6.25rem;transition:max-height .3s ease}.search_content .bg_img[data-v-3ea77890]{width:84%;margin:.625rem auto}.fixed_search_div[data-v-3ea77890]{padding:calc(.3125rem + var(--status-bar-height)) .46875rem .75rem .3125rem;background:linear-gradient(90deg,#f1f7ff,#d8edff,#c3e6ff);display:flex;align-items:center}.fixed_search_div .back_div[data-v-3ea77890]{padding:.3125rem .3125rem .3125rem .625rem}.fixed_search_div .back_div .back-icon[data-v-3ea77890]{position:relative;width:1.25rem;height:1.25rem;cursor:pointer}.fixed_search_div .back_div .back-icon[data-v-3ea77890]:before,.fixed_search_div .back_div .back-icon[data-v-3ea77890]:after{content:"";position:absolute;transition:all .3s ease}.fixed_search_div .back_div .back-icon[data-v-3ea77890]:after{top:25%;left:25%;width:40%;height:40%;border-top:.125rem solid #2b2c2e;border-left:.125rem solid #2b2c2e;transform:rotate(-45deg)}.main_div[data-v-3ea77890]{display:flex;flex-direction:column}
|
||||
.nav-bar[data-v-4b9b9f99]{width:100%;height:var(--status-bar-height);position:fixed}.nav-bar-seat[data-v-4b9b9f99]{width:100%;height:var(--status-bar-height)}.nav-bar-div[data-v-4b9b9f99]{z-index:1900;width:100%;position:relative}uni-view[data-v-843a5998],uni-scroll-view[data-v-843a5998],uni-swiper-item[data-v-843a5998]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}@font-face{font-family:uvicon-iconfont;src:url(../../assets/uvicons.04d281cc.ttf) format("truetype")}.uv-icon[data-v-843a5998]{display:flex;align-items:center}.uv-icon--left[data-v-843a5998]{flex-direction:row-reverse;align-items:center}.uv-icon--right[data-v-843a5998]{flex-direction:row;align-items:center}.uv-icon--top[data-v-843a5998]{flex-direction:column-reverse;justify-content:center}.uv-icon--bottom[data-v-843a5998]{flex-direction:column;justify-content:center}.uv-icon__icon[data-v-843a5998]{font-family:uvicon-iconfont;position:relative;display:flex;flex-direction:row;align-items:center}.uv-icon__icon--primary[data-v-843a5998]{color:#06f}.uv-icon__icon--success[data-v-843a5998]{color:#5ac725}.uv-icon__icon--error[data-v-843a5998]{color:#f56c6c}.uv-icon__icon--warning[data-v-843a5998]{color:#f9ae3d}.uv-icon__icon--info[data-v-843a5998]{color:#909399}.uv-icon__img[data-v-843a5998]{height:auto;will-change:transform}.uv-icon__label[data-v-843a5998]{line-height:1}.uv-border[data-v-1b8a7a55]{border-width:.5px!important;border-color:#dadbde!important;border-style:solid}.uv-border-bottom[data-v-1b8a7a55]{border-bottom-width:.5px!important;border-color:#dadbde!important;border-bottom-style:solid}uni-view[data-v-1b8a7a55],uni-scroll-view[data-v-1b8a7a55],uni-swiper-item[data-v-1b8a7a55]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-input[data-v-1b8a7a55]{display:flex;flex-direction:row;align-items:center;justify-content:space-between;flex:1}.uv-input--radius[data-v-1b8a7a55],.uv-input--square[data-v-1b8a7a55]{border-radius:4px}.uv-input--no-radius[data-v-1b8a7a55]{border-radius:0}.uv-input--circle[data-v-1b8a7a55]{border-radius:100px}.uv-input__content[data-v-1b8a7a55]{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.uv-input__content__field-wrapper[data-v-1b8a7a55]{position:relative;display:flex;flex-direction:row;margin:0;flex:1}.uv-input__content__field-wrapper__field[data-v-1b8a7a55]{line-height:26px;text-align:left;color:#303133;height:24px;font-size:15px;flex:1}.uv-input__content__clear[data-v-1b8a7a55]{width:20px;height:20px;border-radius:100px;background-color:#c6c7cb;display:flex;flex-direction:row;align-items:center;justify-content:center;transform:scale(.82);margin-left:15px}.uv-input__content__subfix-icon[data-v-1b8a7a55]{margin-left:4px}.uv-input__content__prefix-icon[data-v-1b8a7a55]{margin-right:4px}.no_search[data-v-3ea77890]{width:100%;display:flex;flex-direction:column;align-items:center;margin-top:3.125rem}.no_search .img[data-v-3ea77890]{width:7.1875rem}.no_search .text[data-v-3ea77890]{color:#999;font-size:.9375rem}.history_div[data-v-3ea77890]{width:100%}.history_item[data-v-3ea77890]{padding:.25rem 0;color:#777}.title_div[data-v-3ea77890]{display:flex;justify-content:space-between;align-items:center;width:100%;height:2.1875rem;margin:.3125rem 0}.title_div .text[data-v-3ea77890]{font-size:1rem;font-weight:700}.title_div .delete_img[data-v-3ea77890]{display:flex;align-items:center;justify-content:center;padding:.625rem 0 .625rem 1rem}.title_div .delete_img .img[data-v-3ea77890]{height:.75rem}.search_content[data-v-3ea77890]{background-color:#fff;margin-top:-.1875rem;border-radius:.375rem .375rem 0 0;display:flex;flex-direction:column;align-items:center;padding:0 .9375rem;min-height:6.25rem;transition:max-height .3s ease}.search_content .bg_img[data-v-3ea77890]{width:84%;margin:.625rem auto}.fixed_search_div[data-v-3ea77890]{padding:calc(.3125rem + var(--status-bar-height)) .46875rem .75rem .3125rem;background:linear-gradient(90deg,#f1f7ff,#d8edff,#c3e6ff);display:flex;align-items:center}.fixed_search_div .back_div[data-v-3ea77890]{padding:.3125rem .3125rem .3125rem .625rem}.fixed_search_div .back_div .back-icon[data-v-3ea77890]{position:relative;width:1.25rem;height:1.25rem;cursor:pointer}.fixed_search_div .back_div .back-icon[data-v-3ea77890]:before,.fixed_search_div .back_div .back-icon[data-v-3ea77890]:after{content:"";position:absolute;transition:all .3s ease}.fixed_search_div .back_div .back-icon[data-v-3ea77890]:after{top:25%;left:25%;width:40%;height:40%;border-top:.125rem solid #2b2c2e;border-left:.125rem solid #2b2c2e;transform:rotate(-45deg)}.main_div[data-v-3ea77890]{display:flex;flex-direction:column}
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
.uni-popup[data-v-4d2f82f0]{position:fixed;z-index:99}.uni-popup.top[data-v-4d2f82f0],.uni-popup.left[data-v-4d2f82f0],.uni-popup.right[data-v-4d2f82f0]{top:0}.uni-popup .uni-popup__wrapper[data-v-4d2f82f0]{display:block;position:relative}.uni-popup .uni-popup__wrapper.left[data-v-4d2f82f0],.uni-popup .uni-popup__wrapper.right[data-v-4d2f82f0]{padding-top:0;flex:1}.fixforpc-z-index[data-v-4d2f82f0]{z-index:999}.fixforpc-top[data-v-4d2f82f0]{top:0}.overlay-box[data-v-19e7c522]{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:999;background-color:rgba(0,0,0,.65)}.overlay-box uni-movable-view[data-v-19e7c522]{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.overlay-box uni-movable-area[data-v-19e7c522]{height:100%;width:100%;position:fixed;overflow:hidden}.overlay-box uni-movable-view uni-image[data-v-19e7c522]{width:100%}.nav-bar[data-v-6f106210]{width:100%;height:var(--status-bar-height);position:fixed}.nav-bar-seat[data-v-6f106210]{width:100%;height:var(--status-bar-height)}.nav-bar-div[data-v-6f106210]{z-index:1900;width:100%;position:relative}.live-container[data-v-974a2859]{position:absolute;right:0;top:4.6875rem;overflow:hidden;border-radius:.625rem;width:8.4375rem;height:15rem}.pusher-container[data-v-974a2859]{overflow:hidden;border-radius:.625rem}.isVideo .role-info[data-v-75f2bd84]{display:none}.isVideo.show-box[data-v-75f2bd84]{background:linear-gradient(120deg,rgba(51,51,51,.2),rgba(102,102,102,.2),rgba(51,51,51,.2));backdrop-filter:blur(0px)}.title-time[data-v-75f2bd84],.title-tip[data-v-75f2bd84]{text-align:center;color:#fff;line-height:1.8125rem;font-size:1.1875rem;margin:0 auto}.role-name[data-v-75f2bd84]{margin-bottom:.8125rem;text-align:center;color:#fff;line-height:1.8125rem;font-size:1.1875rem}.title-tip[data-v-75f2bd84]{padding-right:.625rem;position:relative}.title-tip[data-v-75f2bd84]:after{content:"";position:absolute;animation:loading-75f2bd84 2.5s infinite}@keyframes loading-75f2bd84{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}to{content:""}}.switch-div[data-v-75f2bd84]{display:flex;justify-content:flex-end;align-items:center;margin-right:.625rem;margin-top:.3125rem;width:100%}.switch-div .switch-text[data-v-75f2bd84]{font-weight:400;font-size:.875rem;color:#fff}.switch-div .switch[data-v-75f2bd84]{transform:scale(.7) rotate(180deg)}.switch-div .switch[data-v-75f2bd84] .uni-switch-input.uni-switch-input-checked{border-color:#9eacbf!important;background-color:#9eacbf!important}.switch-div .switch[data-v-75f2bd84] .uni-switch-input:after{top:5px;left:5px;width:20px;height:20px}.switch-div .switch[data-v-75f2bd84] .uni-switch-input:before{background-color:#62a1ff!important;border-color:#62a1ff!important}.switch-div .switch[data-v-75f2bd84] .uni-switch-input:not(.uni-switch-input-checked){background-color:#62a1ff!important;border-color:#62a1ff!important}.fl1-div-1[data-v-75f2bd84]{min-height:3.75rem;max-height:7.5rem}.show-box[data-v-75f2bd84]{background:linear-gradient(120deg,rgba(51,51,51,.8),rgba(102,102,102,.8),rgba(51,51,51,.8));backdrop-filter:blur(10px);width:100vw;height:100vh;position:fixed;top:0;left:0;z-index:999;display:flex;flex-direction:column;align-items:center}.show-box-avatar[data-v-75f2bd84]{width:100vw;height:100vh;position:fixed;top:0;left:0;z-index:900}.role-info[data-v-75f2bd84]{position:relative;width:100vw;padding-top:6.5625rem}.role-info .role-avatar[data-v-75f2bd84]{width:5.78125rem;height:5.78125rem;border-radius:50%;overflow:hidden;position:absolute;left:50%;transform:translate(-50%);top:0}.body-scene[data-v-75f2bd84]{overflow:auto;width:calc(100% - 2.875rem);padding:.8125rem;color:rgba(255,255,255,.8);border:.125rem dashed rgba(255,255,255,.3);border-radius:.5rem;opacity:0;transition:opacity .5s ease}.body-scene.show[data-v-75f2bd84]{opacity:1}.close-btn[data-v-75f2bd84]{width:3.6875rem;height:3.6875rem;background-image:url(../../static/images/sparring/close-talk.png);background-repeat:no-repeat;background-position:center;background-size:cover;border-radius:50%;margin-top:1.4375rem;margin-bottom:3.5rem;flex-shrink:0}
|
||||
.uni-popup[data-v-4d2f82f0]{position:fixed;z-index:99}.uni-popup.top[data-v-4d2f82f0],.uni-popup.left[data-v-4d2f82f0],.uni-popup.right[data-v-4d2f82f0]{top:0}.uni-popup .uni-popup__wrapper[data-v-4d2f82f0]{display:block;position:relative}.uni-popup .uni-popup__wrapper.left[data-v-4d2f82f0],.uni-popup .uni-popup__wrapper.right[data-v-4d2f82f0]{padding-top:0;flex:1}.fixforpc-z-index[data-v-4d2f82f0]{z-index:999}.fixforpc-top[data-v-4d2f82f0]{top:0}.overlay-box[data-v-19e7c522]{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:999;background-color:rgba(0,0,0,.65)}.overlay-box uni-movable-view[data-v-19e7c522]{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.overlay-box uni-movable-area[data-v-19e7c522]{height:100%;width:100%;position:fixed;overflow:hidden}.overlay-box uni-movable-view uni-image[data-v-19e7c522]{width:100%}.nav-bar[data-v-4b9b9f99]{width:100%;height:var(--status-bar-height);position:fixed}.nav-bar-seat[data-v-4b9b9f99]{width:100%;height:var(--status-bar-height)}.nav-bar-div[data-v-4b9b9f99]{z-index:1900;width:100%;position:relative}.live-container[data-v-974a2859]{position:absolute;right:0;top:4.6875rem;overflow:hidden;border-radius:.625rem;width:8.4375rem;height:15rem}.pusher-container[data-v-974a2859]{overflow:hidden;border-radius:.625rem}.isVideo .role-info[data-v-75f2bd84]{display:none}.isVideo.show-box[data-v-75f2bd84]{background:linear-gradient(120deg,rgba(51,51,51,.2),rgba(102,102,102,.2),rgba(51,51,51,.2));backdrop-filter:blur(0px)}.title-time[data-v-75f2bd84],.title-tip[data-v-75f2bd84]{text-align:center;color:#fff;line-height:1.8125rem;font-size:1.1875rem;margin:0 auto}.role-name[data-v-75f2bd84]{margin-bottom:.8125rem;text-align:center;color:#fff;line-height:1.8125rem;font-size:1.1875rem}.title-tip[data-v-75f2bd84]{padding-right:.625rem;position:relative}.title-tip[data-v-75f2bd84]:after{content:"";position:absolute;animation:loading-75f2bd84 2.5s infinite}@keyframes loading-75f2bd84{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}to{content:""}}.switch-div[data-v-75f2bd84]{display:flex;justify-content:flex-end;align-items:center;margin-right:.625rem;margin-top:.3125rem;width:100%}.switch-div .switch-text[data-v-75f2bd84]{font-weight:400;font-size:.875rem;color:#fff}.switch-div .switch[data-v-75f2bd84]{transform:scale(.7) rotate(180deg)}.switch-div .switch[data-v-75f2bd84] .uni-switch-input.uni-switch-input-checked{border-color:#9eacbf!important;background-color:#9eacbf!important}.switch-div .switch[data-v-75f2bd84] .uni-switch-input:after{top:5px;left:5px;width:20px;height:20px}.switch-div .switch[data-v-75f2bd84] .uni-switch-input:before{background-color:#62a1ff!important;border-color:#62a1ff!important}.switch-div .switch[data-v-75f2bd84] .uni-switch-input:not(.uni-switch-input-checked){background-color:#62a1ff!important;border-color:#62a1ff!important}.fl1-div-1[data-v-75f2bd84]{min-height:3.75rem;max-height:7.5rem}.show-box[data-v-75f2bd84]{background:linear-gradient(120deg,rgba(51,51,51,.8),rgba(102,102,102,.8),rgba(51,51,51,.8));backdrop-filter:blur(10px);width:100vw;height:100vh;position:fixed;top:0;left:0;z-index:999;display:flex;flex-direction:column;align-items:center}.show-box-avatar[data-v-75f2bd84]{width:100vw;height:100vh;position:fixed;top:0;left:0;z-index:900}.role-info[data-v-75f2bd84]{position:relative;width:100vw;padding-top:6.5625rem}.role-info .role-avatar[data-v-75f2bd84]{width:5.78125rem;height:5.78125rem;border-radius:50%;overflow:hidden;position:absolute;left:50%;transform:translate(-50%);top:0}.body-scene[data-v-75f2bd84]{overflow:auto;width:calc(100% - 2.875rem);padding:.8125rem;color:rgba(255,255,255,.8);border:.125rem dashed rgba(255,255,255,.3);border-radius:.5rem;opacity:0;transition:opacity .5s ease}.body-scene.show[data-v-75f2bd84]{opacity:1}.close-btn[data-v-75f2bd84]{width:3.6875rem;height:3.6875rem;background-image:url(../../static/images/sparring/close-talk.png);background-repeat:no-repeat;background-position:center;background-size:cover;border-radius:50%;margin-top:1.4375rem;margin-bottom:3.5rem;flex-shrink:0}
|
||||
|
||||
+1
-1
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
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+145
-51
@@ -1,11 +1,13 @@
|
||||
@file:Suppress("UNCHECKED_CAST", "USELESS_CAST", "INAPPLICABLE_JVM_NAME", "UNUSED_ANONYMOUS_PARAMETER", "NAME_SHADOWING", "UNNECESSARY_NOT_NULL_ASSERTION")
|
||||
package uts.sdk.modules.tyCamera
|
||||
import android.content.Context
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.ImageFormat
|
||||
import android.hardware.camera2.CameraCaptureSession
|
||||
import android.hardware.camera2.CameraCharacteristics
|
||||
import android.hardware.camera2.CameraDevice
|
||||
import android.hardware.camera2.CameraManager
|
||||
import android.hardware.camera2.CaptureRequest
|
||||
import android.media.Image
|
||||
import android.media.ImageReader
|
||||
import android.os.Handler
|
||||
@@ -21,8 +23,119 @@ import kotlinx.coroutines.Deferred
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.async
|
||||
import io.dcloud.uts.UTSAndroid
|
||||
val width: Int = 176
|
||||
val height: Int = 144
|
||||
open class MyApiOptions (
|
||||
@JsonNotNull
|
||||
open var paramA: Boolean = false,
|
||||
open var success: ((res: String) -> Unit)? = null,
|
||||
open var fail: ((res: MyApiFail) -> Unit)? = null,
|
||||
open var complete: ((res: Any) -> Unit)? = null,
|
||||
) : UTSObject()
|
||||
typealias MyApiErrorCode = Number
|
||||
interface MyApiFail : IUniError {
|
||||
override var errCode: MyApiErrorCode
|
||||
}
|
||||
typealias CameraFacingType = String
|
||||
open class CameraHelper {
|
||||
private var context: Context
|
||||
private var cameraManager: CameraManager
|
||||
private var currentCameraId: String? = null
|
||||
private var totalRotation: Number = 0
|
||||
constructor(context: Context){
|
||||
this.context = context
|
||||
this.cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
|
||||
if (this.cameraManager == null) {
|
||||
throw UTSError("CameraHelper: 获取CameraManager失败,请检查摄像头权限或设备支持性")
|
||||
}
|
||||
}
|
||||
public open fun getCameraIdByFacing(facing: CameraFacingType): String {
|
||||
try {
|
||||
val cameraIds = this.cameraManager.getCameraIdList()
|
||||
if (cameraIds.size === 0) {
|
||||
console.error("CameraHelper: 无可用摄像头ID")
|
||||
throw UTSError()
|
||||
}
|
||||
var targetCameraId: String? = null
|
||||
for(id in resolveUTSValueIterator(cameraIds)){
|
||||
val characteristics = this.cameraManager.getCameraCharacteristics(id)
|
||||
val lensFacing = characteristics.get(CameraCharacteristics.LENS_FACING)
|
||||
if (lensFacing !== null && lensFacing === (if (facing === "BACK") {
|
||||
CameraCharacteristics.LENS_FACING_BACK
|
||||
} else {
|
||||
CameraCharacteristics.LENS_FACING_FRONT
|
||||
}
|
||||
)) {
|
||||
targetCameraId = id
|
||||
break
|
||||
}
|
||||
}
|
||||
if (targetCameraId === null) {
|
||||
throw UTSError()
|
||||
}
|
||||
console.log("CameraHelper: \u6210\u529F\u83B7\u53D6" + (if (facing === "BACK") {
|
||||
"后置"
|
||||
} else {
|
||||
"前置"
|
||||
}
|
||||
) + "\u6444\u50CF\u5934ID\uFF1A" + targetCameraId)
|
||||
return targetCameraId
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
console.error("CameraHelper: \u83B7\u53D6" + (if (facing === "BACK") {
|
||||
"后置"
|
||||
} else {
|
||||
"前置"
|
||||
}
|
||||
) + "\u6444\u50CF\u5934ID\u5F02\u5E38\uFF1A", e.message)
|
||||
throw UTSError()
|
||||
}
|
||||
}
|
||||
public open fun openCameraByFacing(facing: CameraFacingType, callback: CameraDevice.StateCallback, handler: Handler? = null): Unit {
|
||||
var cameraId: String
|
||||
try {
|
||||
cameraId = this.getCameraIdByFacing(facing)
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
throw UTSError()
|
||||
}
|
||||
val characteristics = this.cameraManager.getCameraCharacteristics(cameraId)
|
||||
val streamConfigurationMap = characteristics.get(android.hardware.camera2.CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP)
|
||||
if (streamConfigurationMap !== null) {
|
||||
val supportedSizes = streamConfigurationMap.getOutputSizes(ImageFormat.YUV_420_888)
|
||||
for(size in resolveUTSValueIterator(supportedSizes)){
|
||||
console.log(object : UTSJSONObject() {
|
||||
var width = size.getWidth()
|
||||
var height = size.getHeight()
|
||||
})
|
||||
}
|
||||
}
|
||||
this.cameraManager.openCamera(cameraId, callback, handler)
|
||||
}
|
||||
public open fun closeCamera(): Unit {}
|
||||
public open fun getCurrentCameraId(): String? {
|
||||
return this.currentCameraId
|
||||
}
|
||||
public open fun getTotalRotation(): Number {
|
||||
return this.totalRotation
|
||||
}
|
||||
private fun getBackCameraId(cameraIds: UTSArray<String>): String? {
|
||||
for(id in resolveUTSValueIterator(cameraIds)){
|
||||
val characteristics = this.cameraManager.getCameraCharacteristics(id)
|
||||
val facing = characteristics.get(CameraCharacteristics.LENS_FACING)
|
||||
if (facing !== null && facing === CameraCharacteristics.LENS_FACING_BACK) {
|
||||
return id
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
private fun calculateCameraRotation(cameraId: String): Unit {}
|
||||
public open fun release(): Unit {
|
||||
this.currentCameraId = null
|
||||
this.totalRotation = 0
|
||||
console.log("CameraHelper: 摄像头辅助类资源已释放")
|
||||
}
|
||||
}
|
||||
val width: Int = 720
|
||||
val height: Int = 480
|
||||
var backgroundHandler: Handler? = null
|
||||
var handlerThread: HandlerThread? = null
|
||||
var imageReader: ImageReader? = null
|
||||
@@ -100,7 +213,14 @@ fun yuvToJpegBase64(image: android.media.Image): String {
|
||||
return ""
|
||||
}
|
||||
val jpegBytes = outputStream.toByteArray()
|
||||
val base64Raw = android.util.Base64.encodeToString(jpegBytes, android.util.Base64.DEFAULT)
|
||||
val srcBitmap: Bitmap = android.graphics.BitmapFactory.decodeByteArray(jpegBytes, 0, jpegBytes.size)
|
||||
val matrix = android.graphics.Matrix()
|
||||
matrix.postRotate((-90 as Number).toFloat())
|
||||
val outputStream2 = java.io.ByteArrayOutputStream()
|
||||
val rotatedBitmap = android.graphics.Bitmap.createBitmap(srcBitmap, 0, 0, srcBitmap.getWidth(), srcBitmap.getHeight(), matrix, true)
|
||||
rotatedBitmap.compress(android.graphics.Bitmap.CompressFormat.JPEG, 80, outputStream2)
|
||||
val BitmapBytes = outputStream2.toByteArray()
|
||||
val base64Raw = android.util.Base64.encodeToString(BitmapBytes, android.util.Base64.DEFAULT)
|
||||
val base64Jpeg = "data:image/jpeg;base64," + base64Raw
|
||||
outputStream.close()
|
||||
return base64Jpeg
|
||||
@@ -110,7 +230,7 @@ fun yuvToJpegBase64(image: android.media.Image): String {
|
||||
return ""
|
||||
}
|
||||
}
|
||||
fun startCameraPreview(callback: (data: Any) -> Unit): Unit {
|
||||
fun startCameraPreview(options: MyApiOptions): Unit {
|
||||
val context = UTSAndroid.getAppContext()
|
||||
val activity = UTSAndroid.getUniActivity()
|
||||
if (context == null || activity == null) {
|
||||
@@ -120,13 +240,10 @@ fun startCameraPreview(callback: (data: Any) -> Unit): Unit {
|
||||
handlerThread = HandlerThread("CameraBackground", -8)
|
||||
handlerThread!!!!.start()
|
||||
backgroundHandler = Handler(handlerThread!!!!.getLooper())
|
||||
val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
|
||||
val cameraId = getValidCameraInfo(cameraManager)
|
||||
if (cameraId == null) {
|
||||
console.error("错误:cameraId为null,说明没有摄像头")
|
||||
return
|
||||
}
|
||||
val cameraHelper = CameraHelper(context)
|
||||
val totalRotation = cameraHelper.getTotalRotation()
|
||||
try {
|
||||
console.log("width, height", width, height)
|
||||
imageReader = ImageReader.newInstance(width, height, ImageFormat.YUV_420_888, 8)
|
||||
val localImageReader = imageReader
|
||||
if (localImageReader == null) {
|
||||
@@ -138,8 +255,7 @@ fun startCameraPreview(callback: (data: Any) -> Unit): Unit {
|
||||
if (imageProxy === null) {
|
||||
return
|
||||
}
|
||||
console.log("正确设置监听器")
|
||||
callback(yuvToJpegBase64(imageProxy))
|
||||
options.success?.invoke(yuvToJpegBase64(imageProxy))
|
||||
imageProxy.close()
|
||||
return
|
||||
}
|
||||
@@ -166,6 +282,7 @@ fun startCameraPreview(callback: (data: Any) -> Unit): Unit {
|
||||
captureSession = session
|
||||
val requestBuilder = this.localCameraDevice.createCaptureRequest(android.hardware.camera2.CameraDevice.TEMPLATE_PREVIEW)
|
||||
requestBuilder.addTarget(this.surface)
|
||||
requestBuilder.set(CaptureRequest.JPEG_ORIENTATION, 270)
|
||||
session.setRepeatingRequest(requestBuilder.build(), null, backgroundHandler)
|
||||
}
|
||||
override fun onConfigureFailed(session: android.hardware.camera2.CameraCaptureSession): Unit {
|
||||
@@ -197,7 +314,7 @@ fun startCameraPreview(callback: (data: Any) -> Unit): Unit {
|
||||
}
|
||||
}
|
||||
val cameraStateCallback = CustomCameraStateCallback()
|
||||
cameraManager.openCamera(cameraId, cameraStateCallback, backgroundHandler)
|
||||
cameraHelper.openCameraByFacing("FRONT", cameraStateCallback, backgroundHandler)
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
console.error("启动摄像头失败:", e)
|
||||
@@ -268,46 +385,23 @@ fun stopCameraPreview(): Unit {
|
||||
console.error("释放摄像头资源时发生全局异常:", e)
|
||||
}
|
||||
}
|
||||
fun getValidCameraInfo(cameraManager: CameraManager): String? {
|
||||
try {
|
||||
val cameraIds = cameraManager.getCameraIdList()
|
||||
if (cameraIds.size == 0) {
|
||||
console.error("无可用摄像头ID")
|
||||
return null
|
||||
}
|
||||
var cameraId = ""
|
||||
for(id in resolveUTSValueIterator(cameraIds)){
|
||||
val characteristics = cameraManager.getCameraCharacteristics(id)
|
||||
val facing = characteristics.get(CameraCharacteristics.LENS_FACING)
|
||||
if (facing === Integer.valueOf(CameraCharacteristics.LENS_FACING_FRONT)) {
|
||||
cameraId = id
|
||||
break
|
||||
}
|
||||
}
|
||||
if (cameraId === "" && cameraIds.size > 0) {
|
||||
cameraId = cameraIds[0]
|
||||
}
|
||||
if (cameraId === "") {
|
||||
console.error("无可用摄像头ID")
|
||||
return null
|
||||
}
|
||||
return cameraId
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
console.error("获取摄像头信息异常:", e.message)
|
||||
return null
|
||||
}
|
||||
open class MyApiOptionsJSONObject : UTSJSONObject() {
|
||||
open var paramA: Boolean = false
|
||||
open var success: UTSCallback? = null
|
||||
open var fail: UTSCallback? = null
|
||||
open var complete: UTSCallback? = null
|
||||
}
|
||||
fun startCameraPreviewByJs(callback: UTSCallback): Unit {
|
||||
return startCameraPreview(if (callback.fnJS != null) {
|
||||
callback.fnJS
|
||||
} else {
|
||||
callback.fnJS = fun(data: Any){
|
||||
callback(data)
|
||||
}
|
||||
callback.fnJS
|
||||
fun startCameraPreviewByJs(options: MyApiOptionsJSONObject): Unit {
|
||||
return startCameraPreview(MyApiOptions(paramA = options.paramA, success = fun(res: String): Unit {
|
||||
options.success?.invoke(res)
|
||||
}
|
||||
as (data: Any) -> Unit)
|
||||
, fail = fun(res: MyApiFail): Unit {
|
||||
options.fail?.invoke(res)
|
||||
}
|
||||
, complete = fun(res: Any): Unit {
|
||||
options.complete?.invoke(res)
|
||||
}
|
||||
))
|
||||
}
|
||||
fun stopCameraPreviewByJs(): Unit {
|
||||
return stopCameraPreview()
|
||||
|
||||
+3
-36
@@ -3,7 +3,7 @@ import DCloudUTSFoundation
|
||||
@objcMembers
|
||||
public class MyApiOptions : NSObject, UTSObject {
|
||||
public var paramA: Bool = false
|
||||
public var success: ((_ res: MyApiResult) -> Void)?
|
||||
public var success: ((_ res: String) -> Void)?
|
||||
public var fail: ((_ res: MyApiFail) -> Void)?
|
||||
public var complete: ((_ res: Any) -> Void)?
|
||||
public subscript(_ key: String) -> Any? {
|
||||
@@ -30,49 +30,16 @@ public class MyApiOptions : NSObject, UTSObject {
|
||||
}
|
||||
public init(_ obj: UTSJSONObject) {
|
||||
self.paramA = obj["paramA"] as! Bool
|
||||
self.success = obj["success"] as! ((_ res: MyApiResult) -> Void)?
|
||||
self.success = obj["success"] as! ((_ res: String) -> Void)?
|
||||
self.fail = obj["fail"] as! ((_ res: MyApiFail) -> Void)?
|
||||
self.complete = obj["complete"] as! ((_ res: Any) -> Void)?
|
||||
}
|
||||
}
|
||||
@objc(UTSSDKModulesTyCameraMyApiResult)
|
||||
@objcMembers
|
||||
public class MyApiResult : NSObject, UTSObject {
|
||||
public var fieldA: NSNumber!
|
||||
public var fieldB: Bool = false
|
||||
public var fieldC: String!
|
||||
public subscript(_ key: String) -> Any? {
|
||||
get {
|
||||
return utsSubscriptGetValue(key)
|
||||
}
|
||||
set {
|
||||
switch(key){
|
||||
case "fieldA":
|
||||
self.fieldA = try! utsSubscriptCheckValue(newValue)
|
||||
case "fieldB":
|
||||
self.fieldB = try! utsSubscriptCheckValue(newValue)
|
||||
case "fieldC":
|
||||
self.fieldC = try! utsSubscriptCheckValue(newValue)
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
public override init() {
|
||||
super.init()
|
||||
}
|
||||
public init(_ obj: UTSJSONObject) {
|
||||
self.fieldA = obj["fieldA"] as! NSNumber
|
||||
self.fieldB = obj["fieldB"] as! Bool
|
||||
self.fieldC = obj["fieldC"] as! String
|
||||
}
|
||||
}
|
||||
public typealias MyApiErrorCode = NSNumber
|
||||
public protocol MyApiFail : IUniError {
|
||||
var errCode: MyApiErrorCode { get set }
|
||||
}
|
||||
public typealias MyApi = (_ options: MyApiOptions) -> Void
|
||||
public typealias MyApiSync = (_ paramA: Bool) -> MyApiResult
|
||||
public var UniErrorSubject = "uts-api"
|
||||
public var MyAPIErrors: Map<MyApiErrorCode, String> = Map([
|
||||
[
|
||||
@@ -167,7 +134,7 @@ public func myApiByJs(_ options: MyApiOptionsJSONObject) -> Void {
|
||||
return myApi(MyApiOptions(UTSJSONObject([
|
||||
"paramA": options.paramA,
|
||||
"success": {
|
||||
(res: MyApiResult) -> Void in
|
||||
(res: String) -> Void in
|
||||
options.success?(res)
|
||||
},
|
||||
"fail": {
|
||||
|
||||
+8
-12
@@ -1,26 +1,25 @@
|
||||
<script>
|
||||
export default {
|
||||
onLaunch: function() {
|
||||
onLaunch: function () {
|
||||
uni.onTabBarMidButtonTap(() => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/index/dialog',
|
||||
animationType: 'slide-in-bottom'
|
||||
});
|
||||
});
|
||||
|
||||
//#ifdef APP-PLUS
|
||||
plus.screen.lockOrientation('portrait-primary')
|
||||
// 锁定屏幕方向
|
||||
plus.screen.lockOrientation('portrait-primary');
|
||||
// #endif
|
||||
},
|
||||
onShow: function() {
|
||||
|
||||
},
|
||||
onHide: function() {}
|
||||
onShow: function () {},
|
||||
onHide: function () {}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
|
||||
// @import "@/uni_modules/uview-ui/index.scss";
|
||||
// #ifndef APP-PLUS-NVUE
|
||||
@font-face {
|
||||
font-family: 'PingFangSC';
|
||||
@@ -64,12 +63,11 @@
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
.max_page {
|
||||
min-height: 100vh;
|
||||
}
|
||||
// #endif
|
||||
|
||||
|
||||
.mr-10 {
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
@@ -166,8 +164,6 @@
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.no-overflow {
|
||||
overflow: hidden;
|
||||
}
|
||||
@@ -180,4 +176,4 @@
|
||||
margin-right: 8rpx;
|
||||
margin-left: 2rpx;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
+59
-15
@@ -15,8 +15,9 @@ function msg(title, duration = 1000) {
|
||||
}
|
||||
|
||||
let isShowConfirm = false
|
||||
|
||||
function show(title, msg, showCancel = true, cancelText = '取消', confirmText = '确定') {
|
||||
if(isShowConfirm) {
|
||||
if (isShowConfirm) {
|
||||
return new Promise((resolve, reject) => {
|
||||
reject({});
|
||||
});
|
||||
@@ -35,7 +36,7 @@ function show(title, msg, showCancel = true, cancelText = '取消', confirmText
|
||||
resolve(!!res.confirm);
|
||||
isShowConfirm = false
|
||||
},
|
||||
|
||||
|
||||
};
|
||||
// #ifdef APP-PLUS
|
||||
if (getPhoneEnvBool('AND')) {
|
||||
@@ -83,19 +84,19 @@ const hideLoading = () => uni.hideLoading()
|
||||
// 根据姓名的长度生成对应的带星号格式
|
||||
export const formatName = (name) => {
|
||||
|
||||
// 处理空值或非字符串情况
|
||||
if (!name || typeof name !== 'string') {
|
||||
return '';
|
||||
}
|
||||
|
||||
const familyName = name.charAt(0); // 取姓氏(第一个字符)
|
||||
const givenNameLength = name.length - 1; // 名字部分的长度
|
||||
|
||||
// 根据名字长度计算星号数量,最多4个
|
||||
const starCount = Math.min(givenNameLength, 3);
|
||||
const stars = '*'.repeat(starCount);
|
||||
|
||||
return familyName + stars;
|
||||
// 处理空值或非字符串情况
|
||||
if (!name || typeof name !== 'string') {
|
||||
return '';
|
||||
}
|
||||
|
||||
const familyName = name.charAt(0); // 取姓氏(第一个字符)
|
||||
const givenNameLength = name.length - 1; // 名字部分的长度
|
||||
|
||||
// 根据名字长度计算星号数量,最多4个
|
||||
const starCount = Math.min(givenNameLength, 3);
|
||||
const stars = '*'.repeat(starCount);
|
||||
|
||||
return familyName + stars;
|
||||
}
|
||||
|
||||
// 防抖工具函数
|
||||
@@ -277,6 +278,49 @@ function isLogin() {
|
||||
return !!getToken();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取额外高度(纯函数,返回对应高度值)
|
||||
* @returns {string} 最终的额外高度值(带单位)
|
||||
*/
|
||||
export const getExtraHeight = () => {
|
||||
// 所有常量移入函数内部定义,TARGET_DEVICE_MODEL 改为数组类型
|
||||
const TARGET_DEVICE_MODEL = ['XT2321-2']; // 目标设备型号数组(摩托罗拉razr 40 Ultra)
|
||||
const EXTRA_HEIGHT_TARGET = '15rpx'; // 目标设备额外高度
|
||||
const EXTRA_HEIGHT_DEFAULT = '2rpx'; // 默认额外高度
|
||||
try {
|
||||
// 1. 优先读取缓存
|
||||
const cachedHeight = getValue('extra_height', '');
|
||||
if (cachedHeight) {
|
||||
console.log('缓存有值直接返回', cachedHeight);
|
||||
return cachedHeight; // 缓存有值直接返回
|
||||
}
|
||||
// 2. 缓存无值时,获取设备信息
|
||||
const deviceInfo = uni.getDeviceInfo();
|
||||
// 校验设备信息有效性
|
||||
if (!deviceInfo || !deviceInfo.deviceModel) {
|
||||
throw new Error('设备信息获取失败');
|
||||
}
|
||||
|
||||
// 3. 判断设备型号(数组包含判断,适配多型号)
|
||||
const isTargetDevice = TARGET_DEVICE_MODEL.includes(deviceInfo.deviceModel);
|
||||
const finalHeight = isTargetDevice ? EXTRA_HEIGHT_TARGET : EXTRA_HEIGHT_DEFAULT;
|
||||
|
||||
// 4. 缓存结果(后续复用)
|
||||
setValue('extra_height', finalHeight);
|
||||
return finalHeight; // 返回计算后的高度
|
||||
|
||||
} catch (error) {
|
||||
// 5. 异常兜底:返回默认值并缓存
|
||||
console.warn('获取/设置额外高度失败:', error.message);
|
||||
setValue('extra_height', EXTRA_HEIGHT_DEFAULT);
|
||||
return EXTRA_HEIGHT_DEFAULT;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
// 封装键盘高度变化处理
|
||||
export function setupKeyboardHeightListener(updateCallback) {
|
||||
// #ifndef APP-PLUS
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-top: 34rpx;
|
||||
height: 68rpx;
|
||||
height: 60rpx;
|
||||
.img {
|
||||
width: 26rpx;
|
||||
height: 44rpx;
|
||||
@@ -153,7 +153,7 @@
|
||||
font-weight: bold;
|
||||
font-size: 46rpx;
|
||||
color: #d88f50;
|
||||
margin: 0rpx 30rpx;
|
||||
margin: 0rpx 26rpx;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
@@ -180,14 +180,14 @@
|
||||
|
||||
}
|
||||
.max-div {
|
||||
width: 80vw;
|
||||
max-width: 80vw;
|
||||
background-color: #fefbfa;
|
||||
border-radius: 38rpx;
|
||||
position: relative;
|
||||
padding: 26rpx;
|
||||
padding: 26rpx 80rpx;
|
||||
overflow: hidden;
|
||||
margin-top: var(--status-bar-height);
|
||||
margin-bottom: 120rpx;
|
||||
margin-bottom: 100rpx;
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
+2
-2
@@ -2,8 +2,8 @@
|
||||
"name" : "tra-app",
|
||||
"appid" : "__UNI__EDE0E52",
|
||||
"description" : "",
|
||||
"versionName" : "0.0.3",
|
||||
"versionCode" : 3,
|
||||
"versionName" : "0.0.4",
|
||||
"versionCode" : 4,
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus" : {
|
||||
|
||||
@@ -130,8 +130,9 @@
|
||||
import { pkAnonymousClose, pkAnonymousOpen, pkRankingList, pkRules, switchIcon, optionErrorIcon } from '@/common/imgSvg';
|
||||
import { updateTraUserAnony } from '@/api/user';
|
||||
import selectionInstitutions from '@/components/selection-institutions/index.vue';
|
||||
import {getExtraHeight} from '@/common/common';
|
||||
|
||||
|
||||
const extra_height = ref(getExtraHeight());
|
||||
const data_info = reactive({
|
||||
userId: '',
|
||||
userName: '',
|
||||
@@ -184,11 +185,11 @@
|
||||
}, 1000);
|
||||
// 生成匹配延迟时间
|
||||
const delayTime = MatchTimeGenerator.generateInSeconds();
|
||||
console.log('delayTime', delayTime);
|
||||
// 匹配定时器
|
||||
matchTimer = setTimeout(async () => {
|
||||
try {
|
||||
challengeButtonStatus.value = false;
|
||||
|
||||
const orgId = data_info.orgId;
|
||||
const papersId = data_info.papersId;
|
||||
const comId = data_info.comId;
|
||||
@@ -349,4 +350,7 @@
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
.top-button-div{
|
||||
padding-top: calc(16rpx + var(--status-bar-height) + v-bind(extra_height));
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -150,6 +150,9 @@
|
||||
|
||||
.avatar-div {
|
||||
margin-top: 20rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
.avatar-img-div {
|
||||
width: 204rpx;
|
||||
height: 204rpx;
|
||||
@@ -248,7 +251,7 @@
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
height: 70rpx;
|
||||
padding-top: calc(16rpx + var(--status-bar-height));
|
||||
|
||||
font-weight: 500;
|
||||
position: relative;
|
||||
margin-right: 10rpx;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view class="exam-ranking">
|
||||
<image src="@/static/images/examRanking/bg.png" mode="aspectFit" class="bg-box"></image>
|
||||
<image src="@/static/images/examRanking/bg.png" mode="aspectFill" class="bg-box"></image>
|
||||
<view class="ranking-box">
|
||||
|
||||
<view class="nav-div">
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
</view>
|
||||
<view class="item" v-for="(item, index) in data_list">
|
||||
<view class="title">
|
||||
{{ item.mattrDesc }}
|
||||
{{ item.mattrDesc}}
|
||||
</view>
|
||||
<view class="time">
|
||||
{{ item.ctTime.substr(0, 16) }}
|
||||
@@ -58,13 +58,15 @@
|
||||
import { onLoad, onUnload } from '@dcloudio/uni-app';
|
||||
import useZpaging from '@/composables/useZpaging.js';
|
||||
import common from '@/common/common';
|
||||
import {getExtraHeight} from '@/common/common';
|
||||
const extra_height = ref(getExtraHeight());
|
||||
import { queryPointsDetail, queryCurrentStatus } from '@/api/pointsAndRank.js';
|
||||
|
||||
const startVal = ref(0);
|
||||
const endVal = ref(0);
|
||||
const countToRef = ref(null);
|
||||
const points_data = ref({});
|
||||
|
||||
|
||||
const fetchFunction = (params) => {
|
||||
queryCurrentStatus().then(({ body }) => {
|
||||
const { currentPoints } = body;
|
||||
@@ -172,11 +174,13 @@
|
||||
flex: 1;
|
||||
}
|
||||
.time {
|
||||
min-width: max(146rpx, 40%);
|
||||
width: 254rpx;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.value {
|
||||
text-align: right;
|
||||
min-width: max(80rpx, 20%);
|
||||
width: 128rpx;
|
||||
flex-shrink: 1;
|
||||
}
|
||||
}
|
||||
.item {
|
||||
@@ -202,16 +206,18 @@
|
||||
font-size: 30rpx;
|
||||
color: #000000;
|
||||
text-align: left;
|
||||
min-width: max(146rpx, 40%);
|
||||
width: 254rpx;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.value {
|
||||
font-family: Arial, Arial;
|
||||
font-weight: normal;
|
||||
font-size: 30rpx;
|
||||
|
||||
flex-shrink: 1;
|
||||
text-align: right;
|
||||
font-weight: 600;
|
||||
min-width: max(80rpx, 20%);
|
||||
width: 128rpx;
|
||||
// min-width: max(80rpx, 20%);
|
||||
}
|
||||
.up {
|
||||
color: #ff8a2d;
|
||||
@@ -233,14 +239,13 @@
|
||||
color: #ffffff;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
margin-top: var(--status-bar-height);
|
||||
margin-top: calc(var(--status-bar-height) + v-bind(extra_height));
|
||||
.delete_div {
|
||||
position: absolute;
|
||||
right: 20rpx;
|
||||
top: 17rpx;
|
||||
width: 50rpx;
|
||||
height: 50rpx;
|
||||
|
||||
.img {
|
||||
width: 34rpx;
|
||||
height: 34rpx;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
@query="queryList"
|
||||
class="scroll_div"
|
||||
:layout-only="true"
|
||||
empty-view-text="暂无积分记录"
|
||||
empty-view-text="暂无段位记录"
|
||||
paging-class="z-paging-class"
|
||||
>
|
||||
<template #top>
|
||||
@@ -61,6 +61,8 @@
|
||||
import useZpaging from '@/composables/useZpaging.js';
|
||||
import common from '@/common/common';
|
||||
import { queryRankDetail, queryCurrentStatus } from '@/api/pointsAndRank.js';
|
||||
import {getExtraHeight} from '@/common/common';
|
||||
const extra_height = ref(getExtraHeight());
|
||||
const dataInfo = reactive({
|
||||
countPoints: 0, // 累计积分 int
|
||||
currentPoints: 0, // 当前积分 int
|
||||
@@ -210,7 +212,8 @@
|
||||
color: #ffffff;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
margin-top: var(--status-bar-height);
|
||||
margin-top: calc(var(--status-bar-height) + v-bind(extra_height));
|
||||
// margin-top: var(--status-bar-height);
|
||||
.delete_div {
|
||||
position: absolute;
|
||||
right: 20rpx;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
@query="queryList"
|
||||
class="scroll_div"
|
||||
:loading-more-enabled="false"
|
||||
empty-view-text="暂无积分记录"
|
||||
empty-view-text="暂无兑换活动"
|
||||
paging-class="z-paging-class"
|
||||
>
|
||||
<template #top>
|
||||
@@ -72,6 +72,8 @@
|
||||
import useZpaging from '@/composables/useZpaging.js';
|
||||
import common from '@/common/common';
|
||||
import { queryPointsActivityDetail, addPointsExchange } from '@/api/pointsRedemption.js';
|
||||
import {getExtraHeight} from '@/common/common';
|
||||
const extra_height = ref(getExtraHeight());
|
||||
const customStyle = {
|
||||
borderRadius: '12rpx'
|
||||
};
|
||||
@@ -240,7 +242,7 @@
|
||||
color: #ffffff;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
margin-top: var(--status-bar-height);
|
||||
margin-top: calc(var(--status-bar-height) + v-bind(extra_height));
|
||||
.title {
|
||||
max-width: 70%;
|
||||
margin: 0 auto;
|
||||
|
||||
+116
-18
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<watermark></watermark>
|
||||
<!-- <watermark></watermark> -->
|
||||
<view class="max_page detail-main">
|
||||
<nav-bar :is_seat="false"></nav-bar>
|
||||
<view class="fixed_search_div">
|
||||
@@ -8,40 +8,138 @@
|
||||
</view>
|
||||
<view class="title font_pf">系统参数</view>
|
||||
</view>
|
||||
<view class="detail-title">打包信息</view>
|
||||
<view class="detail-body">
|
||||
<uv-cell-group :border="false">
|
||||
<uv-cell-group :border="false" title="">
|
||||
<uv-cell title="根域名" :value="url"></uv-cell>
|
||||
<uv-cell title="当前环境:" :value="ENV.MODE"></uv-cell>
|
||||
<uv-cell title="版本名称" :value="appBaseInfo.appVersion"></uv-cell>
|
||||
<uv-cell title="版本号" :value="appBaseInfo.appVersionCode"></uv-cell>
|
||||
<uv-cell title="点击1:" @click="aaaa"></uv-cell>
|
||||
<uv-cell title="点击2:" :border="false" @click="bbbb"></uv-cell>
|
||||
</uv-cell-group>
|
||||
</view>
|
||||
|
||||
<view class="detail-title">设备信息</view>
|
||||
<view class="detail-body">
|
||||
<uv-cell-group :border="false" title="">
|
||||
<uv-cell title="设备类型" :value="deviceInfo.deviceType"></uv-cell>
|
||||
<uv-cell title="设备品牌" :value="deviceInfo.deviceBrand"></uv-cell>
|
||||
<uv-cell title="设备型号" :value="deviceInfo.deviceModel"></uv-cell>
|
||||
<uv-cell title="设备方向" :value="deviceInfo.deviceOrientation"></uv-cell>
|
||||
<uv-cell title="设备像素比" :value="deviceInfo.devicePixelRatio"></uv-cell>
|
||||
<uv-cell title="系统名称" :value="deviceInfo.osName"></uv-cell>
|
||||
<uv-cell title="操作系统版本" :value="deviceInfo.osVersion"></uv-cell>
|
||||
</uv-cell-group>
|
||||
</view>
|
||||
<view class="detail-title">窗口信息</view>
|
||||
<view class="detail-body">
|
||||
<uv-cell-group :border="false" title="">
|
||||
<!-- 新增屏幕/窗口信息(带单位优化) -->
|
||||
<uv-cell title="设备像素比" :value="windowInfo.pixelRatio || '未知'"></uv-cell>
|
||||
<uv-cell title="屏幕宽度" :value="windowInfo.screenWidth ? `${windowInfo.screenWidth}` : '未知'"></uv-cell>
|
||||
<uv-cell title="屏幕高度" :value="windowInfo.screenHeight ? `${windowInfo.screenHeight}` : '未知'"></uv-cell>
|
||||
<uv-cell title="可使用窗口宽度" :value="windowInfo.windowWidth ? `${windowInfo.windowWidth}` : '未知'"></uv-cell>
|
||||
<uv-cell title="可使用窗口高度" :value="windowInfo.windowHeight ? `${windowInfo.windowHeight}` : '未知'"></uv-cell>
|
||||
<uv-cell title="窗口顶部位置" :value="windowInfo.windowTop ? `${windowInfo.windowTop}` : '未知'"></uv-cell>
|
||||
<uv-cell title="窗口底部位置" :value="windowInfo.windowBottom ? `${windowInfo.windowBottom}` : '未知'"></uv-cell>
|
||||
<uv-cell
|
||||
title="状态栏高度"
|
||||
:value="windowInfo.statusBarHeight ? `${windowInfo.statusBarHeight}` : '未知'"
|
||||
></uv-cell>
|
||||
<uv-cell
|
||||
title="设置状态栏高度"
|
||||
:value="extra_height"
|
||||
></uv-cell>
|
||||
|
||||
<uv-cell title="窗口上边缘Y值" :value="windowInfo.screenTop ? `${windowInfo.screenTop}` : '未知'"></uv-cell>
|
||||
</uv-cell-group>
|
||||
<uv-cell-group :border="false" title="safeArea">
|
||||
<!-- 严格对应safeArea字段定义,补充px单位+空值兜底 -->
|
||||
<uv-cell title="左上角横坐标" :value="windowInfo.safeArea.left ? `${windowInfo.safeArea.left}` : '未知'"></uv-cell>
|
||||
<uv-cell title="右下角横坐标" :value="windowInfo.safeArea.right ? `${windowInfo.safeArea.right}` : '未知'"></uv-cell>
|
||||
<uv-cell title="左上角纵坐标" :value="windowInfo.safeArea.top ? `${windowInfo.safeArea.top}` : '未知'"></uv-cell>
|
||||
<uv-cell title="右下角纵坐标" :value="windowInfo.safeArea.bottom ? `${windowInfo.safeArea.bottom}` : '未知'"></uv-cell>
|
||||
<uv-cell title="安全区宽度" :value="windowInfo.safeArea.width ? `${windowInfo.safeArea.width}` : '未知'"></uv-cell>
|
||||
<uv-cell title="安全区高度" :value="windowInfo.safeArea.height ? `${windowInfo.safeArea.height}` : '未知'"></uv-cell>
|
||||
</uv-cell-group>
|
||||
<uv-cell-group :border="false" title="safeAreaInsets">
|
||||
<!-- 严格对应safeArea字段定义,补充px单位+空值兜底 -->
|
||||
<uv-cell title="左上角横坐标" :value="windowInfo.safeArea.left ? `${windowInfo.safeArea.left}` : '未知'"></uv-cell>
|
||||
<uv-cell title="右下角横坐标" :value="windowInfo.safeArea.right ? `${windowInfo.safeArea.right}` : '未知'"></uv-cell>
|
||||
<uv-cell title="左上角纵坐标" :value="windowInfo.safeArea.top ? `${windowInfo.safeArea.top}` : '未知'"></uv-cell>
|
||||
<uv-cell title="右下角纵坐标" :value="windowInfo.safeArea.bottom ? `${windowInfo.safeArea.bottom}` : '未知'"></uv-cell>
|
||||
<uv-cell title="安全区宽度" :value="windowInfo.safeArea.width ? `${windowInfo.safeArea.width}` : '未知'"></uv-cell>
|
||||
<uv-cell title="安全区高度" :value="windowInfo.safeArea.height ? `${windowInfo.safeArea.height}` : '未知'"></uv-cell>
|
||||
</uv-cell-group>
|
||||
</view>
|
||||
<view class="detail-title"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import common from '@/common/common';
|
||||
import permision from '@/common/permission'
|
||||
import {
|
||||
get_base_url
|
||||
} from '../../api/request';
|
||||
import permision from '@/common/permission';
|
||||
import { get_base_url } from '../../api/request';
|
||||
const url = get_base_url();
|
||||
const ENV = import.meta.env
|
||||
const appBaseInfo = uni.getAppBaseInfo()
|
||||
import showDialog from '@/common/dialogMessage'
|
||||
const ENV = import.meta.env;
|
||||
const appBaseInfo = uni.getAppBaseInfo();
|
||||
import showDialog from '@/common/dialogMessage';
|
||||
import { reactive, ref } from 'vue';
|
||||
import { onLoad } from '@dcloudio/uni-app';
|
||||
import {getExtraHeight} from '@/common/common';
|
||||
|
||||
const extra_height = ref(getExtraHeight());
|
||||
const customStyle = {
|
||||
fontWeight:700
|
||||
}
|
||||
const deviceInfo = reactive({
|
||||
deviceType: '', // 设备类型
|
||||
deviceBrand: '', // 设备品牌
|
||||
deviceModel: '', // 设备型号
|
||||
deviceOrientation: '', // 设备方向
|
||||
devicePixelRatio: '', // 设备像素比
|
||||
osName: '', // 系统名称
|
||||
osVersion: '' // 操作系统版本
|
||||
});
|
||||
const windowInfo = reactive({
|
||||
pixelRatio: '', // 设备像素比(number → 转字符串展示)
|
||||
screenWidth: '', // 屏幕宽度
|
||||
screenHeight: '', // 屏幕高度
|
||||
windowWidth: '', // 可使用窗口宽度
|
||||
windowHeight: '', // 可使用窗口高度
|
||||
windowTop: '', // 可使用窗口的顶部位置
|
||||
windowBottom: '', // 可使用窗口的底部位置
|
||||
statusBarHeight: '', // 手机状态栏的高度
|
||||
screenTop: '', // 窗口上边缘的 y 值
|
||||
safeArea: {}, // 安全区域(对象)
|
||||
safeAreaInsets: {} // 安全区域插入位置(对象)
|
||||
});
|
||||
|
||||
const bbbb = () => {
|
||||
onLoad(() => {
|
||||
const _deviceInfo = uni.getDeviceInfo();
|
||||
Object.assign(deviceInfo, _deviceInfo);
|
||||
const _windowInfo = uni.getWindowInfo();
|
||||
Object.assign(windowInfo, _windowInfo);
|
||||
|
||||
}
|
||||
const aaaa = async() => {
|
||||
common.navigateTo('/pages/test/testChat')
|
||||
}
|
||||
});
|
||||
|
||||
// windowTop:'', // 窗口的顶部位置
|
||||
// statusBarHeight:'', // 手机状态栏的高度
|
||||
// safeArea:{}, // safeArea
|
||||
const bbbb = () => {};
|
||||
const aaaa = async () => {
|
||||
common.navigateTo('/pages/test/testChat');
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
$bg-margin-left: 50rpx;
|
||||
.detail-title {
|
||||
margin: 30rpx $bg-margin-left 0 calc($bg-margin-left + 15rpx);
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
z-index: 101;
|
||||
overflow: hidden;
|
||||
}
|
||||
.detail-body {
|
||||
margin: 30rpx $bg-margin-left 0 $bg-margin-left;
|
||||
background: #ffffff;
|
||||
@@ -65,7 +163,7 @@
|
||||
}
|
||||
|
||||
.detail-main {
|
||||
background-color: #F6F8FF;
|
||||
background-color: #f6f8ff;
|
||||
}
|
||||
|
||||
.title {
|
||||
@@ -113,4 +211,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user