Merge branch 'develop' into 'sit'
Develop See merge request K17_AITS/tra-app!75
This commit is contained in:
+2
-3
@@ -9,7 +9,7 @@ ENV = 'development'
|
||||
# VITE_APP_BASE_API_Url = 'http://25.18.122.78:9786'
|
||||
|
||||
# DEV
|
||||
VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001'
|
||||
VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7003'
|
||||
|
||||
# app入口
|
||||
#VITE_APP_BASE_API_Url = 'http://25.16.122.65:7001'
|
||||
@@ -19,5 +19,4 @@ VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001'
|
||||
# h5专用地址
|
||||
|
||||
|
||||
VITE_APP_BASE_H5_API_Url = 'http://aitstest.jlbank.com.cn:7001'
|
||||
|
||||
VITE_APP_BASE_H5_API_Url = 'http://25.18.122.66:9786'
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,9 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnZcvmQypn5F6Hym4517K
|
||||
uTb5FKJXf4Z+QBqrA2YaAL3VDrHn9s1IpkRu7FwmqqEhYHs72BE3F41pbLkzg178
|
||||
d9grSFMJ8N3OtGc9D4/jt4seSyZ2fPWkSN38upQPetFEjYQGJQ3MeCqbhdXGXDQ+
|
||||
XRi/wLsVpT7Dp11u0H2r7uFEpD85kkJnooyFdJAptmbdqb/Oi5wCbJZRwO1BSV3h
|
||||
YOw5T9/4yexLRteSODiMmq7xjAaotfxSNe7OpOGlBBBe84nsmplyDR0mldqh9esC
|
||||
DcSlBywWIO2y9azWx8F4EyR/3PTJwi03meQFpSB2ioXQwZgQXXlV8Z0VcWx0JRqG
|
||||
LwIDAQAB
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
为什么没有 MD5?
|
||||
Java 8+ 默认禁用了 MD5(出于安全原因),keytool 默认只显示 SHA-1 和 SHA-256。
|
||||
|
||||
但 证书本身仍然可以计算 MD5,只是 keytool 默认不显示。
|
||||
|
||||
如何获取该 Keystore 的 MD5 指纹?
|
||||
方法 1:使用 openssl 计算证书的 MD5
|
||||
导出证书(.cer 或 .pem 格式):
|
||||
|
||||
bash
|
||||
keytool -exportcert -alias ai_jlyh_app -keystore ai_jlyh_app.keystore -file cert.cer
|
||||
(输入 keystore 密码)
|
||||
|
||||
用 openssl 计算 MD5 指纹:
|
||||
|
||||
bash
|
||||
openssl x509 -inform der -in cert.cer -noout -fingerprint -md5
|
||||
输出示例:
|
||||
|
||||
text
|
||||
MD5 Fingerprint=D5:DC:64:CD:DD:A5:25:FE:26:B8:EF:24:8A:2B:B3:89
|
||||
去掉冒号,转为小写,就是备案所需的 d5dc64cddda525fe26b8ef248a2bb389。
|
||||
@@ -6,4 +6,8 @@ keytool -v -importkeystore -srckeystore ai_jlyh_app.p12 -srcstoretype PKCS12 -de
|
||||
# 迁移到行业标准格式 PKCS12
|
||||
keytool -importkeystore -srckeystore ai_jlyh_app.keystore -destkeystore ai_jlyh_app.keystore -deststoretype pkcs12
|
||||
|
||||
keytool -v -list -keystore ai_jlyh_app.keystore
|
||||
keytool -v -list -keystore ai_jlyh_app.keystore
|
||||
|
||||
|
||||
# cer生成pem
|
||||
openssl x509 -inform der -in cert.cer -pubkey -noout > public_key.pem
|
||||
Binary file not shown.
@@ -0,0 +1,9 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAttdtX3bTzu/8jSHkGYd+
|
||||
VyaQO94lvu+movMufkT8Whg5X9dMjI4bZrQBXr6YWKi/QQZCruPQy740oD7mm0tq
|
||||
tSJVD6z+HaTaIIwyLGLzTIuMlkrTrXAtFjSKmAUewsbyIoU5H/THDW1Qic/U+iYH
|
||||
P75thAoVWKVHdfY8608lZOeeusThlNXz9hWTPvg4ynqR0f0xnBXVP0Aq16BgCE2F
|
||||
xGsEmZF6aEpMxd4l8+0qo7Qmoh8/UJC0pTEi6RpZZy6i5Tns1GVuq/3wU3uZoB9v
|
||||
uaf7uJdC8Wjv8IcFOa7VSqb5v2N9r8eYK0+7w9YPL04f0BJkK0e7nBowpO7avuMZ
|
||||
DwIDAQAB
|
||||
-----END PUBLIC KEY-----
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,8 +1,10 @@
|
||||
<template>
|
||||
<view class="course-item-box" @click="clickItem">
|
||||
<view class="img-box-view">
|
||||
<ImagePreview class="img-box" :imgId="itemInfo.imgId" :isCache="true" width="340" height="340"></ImagePreview>
|
||||
|
||||
<ImagePreview class="img-box" :imgId="itemInfo.imgId" :isCache="true" width="340" height="340" mode="aspectFill"></ImagePreview>
|
||||
<view class="item-grade">{{itemInfo.evalGrade}}</view>
|
||||
<!-- <image class="item-grade" mode="aspectFill"></view> -->
|
||||
</view>
|
||||
<view class="cont-box">
|
||||
<view class="item-title">{{itemInfo.crsName}}</view>
|
||||
@@ -78,6 +80,7 @@
|
||||
position: relative;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 0 10rpx #c3c3c3;
|
||||
.img-box{
|
||||
width: 170rpx;
|
||||
height: 170rpx;
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
const windowInfo = uni.getWindowInfo()
|
||||
|
||||
const props = defineProps({
|
||||
is_fixed: {
|
||||
type: Boolean,
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<view class="body-title">
|
||||
<!-- @click="test.testApi" -->
|
||||
<uv-icon class="arrow-icon" name="arrow-left" @click="common.switchTab('/pages/index/index')"/>
|
||||
课程中心
|
||||
AI学习
|
||||
</view>
|
||||
<view class="input-view" @click="toSearchPage">
|
||||
<uv-input shape="circle"
|
||||
@@ -160,7 +160,11 @@ import { onShow } from "@dcloudio/uni-app"
|
||||
const tagsTree = ref([])
|
||||
|
||||
const showFilterList = ref(false)
|
||||
const {
|
||||
statusBarHeight
|
||||
} = uni.getWindowInfo()
|
||||
|
||||
const pageTopPadding = computed(() => statusBarHeight + 'px')
|
||||
// 点击标签
|
||||
const chooseTag = (item)=>{
|
||||
activeTag.value = item.value
|
||||
@@ -187,6 +191,7 @@ import { onShow } from "@dcloudio/uni-app"
|
||||
let _reqListN = _arr.filter(t=>t.required === "N")
|
||||
return _reqList.concat(_reqListN)
|
||||
})
|
||||
|
||||
const courseListBase = ref([])
|
||||
const courseList = computed(()=>{
|
||||
return activeTag.value
|
||||
@@ -326,11 +331,14 @@ import { onShow } from "@dcloudio/uni-app"
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-top: v-bind(pageTopPadding);
|
||||
// padding-top: var(--status-bar-height);
|
||||
.body-title{
|
||||
height: 150rpx;
|
||||
height: 90rpx;
|
||||
// background-color: red;
|
||||
text-align: center;
|
||||
font-size: 33rpx;
|
||||
padding-top: 70rpx;
|
||||
padding-top: 10rpx;
|
||||
line-height: 46rpx;
|
||||
box-sizing: border-box;
|
||||
font-weight: 500;
|
||||
@@ -340,7 +348,7 @@ import { onShow } from "@dcloudio/uni-app"
|
||||
.arrow-icon{
|
||||
position: absolute;
|
||||
left:36rpx;
|
||||
top:80rpx;
|
||||
top:20rpx;
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
|
||||
+24
-11
@@ -40,7 +40,9 @@
|
||||
<view class="course-study-body" v-show="step === 2">
|
||||
<view class="seek-setting">
|
||||
<view class="inline-block" @click="showChangeSeekModelNow">{{chooseRate}}倍</view>
|
||||
<image src="@/static/images/course/setting.png" alt="" class="image-icon" @click.stop="showChangeBgModelNow"></image>
|
||||
<view class="image-icon" @click="showChangeBgModelNow">
|
||||
<image src="@/static/images/course/setting.png" alt="" class="image-icon-img"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="body-title" @click="scrollToBottomNow">
|
||||
<uv-icon class="arrow-icon" name="arrow-left" @click="backRouter()"/>
|
||||
@@ -176,6 +178,13 @@ const answerValue = ref('')
|
||||
const inputRef = ref('')
|
||||
const flagVal = ref('1')
|
||||
const isUploadingVoice = ref(false)
|
||||
|
||||
const {
|
||||
statusBarHeight
|
||||
} = uni.getWindowInfo()
|
||||
|
||||
const pageTopPadding = computed(() => statusBarHeight + 'px')
|
||||
|
||||
// 初始化数据
|
||||
const getData = async (flag) => {
|
||||
try{
|
||||
@@ -924,22 +933,26 @@ const chooseRateNow = (item) => {
|
||||
position: absolute;
|
||||
z-index: 3;
|
||||
right: 20rpx;
|
||||
top: 68rpx;
|
||||
top: calc(v-bind(pageTopPadding) - 12rpx);
|
||||
font-size: 26rpx;
|
||||
width: 140rpx;
|
||||
height: 52rpx;
|
||||
padding: 10rpx 0;
|
||||
height: 92rpx;
|
||||
padding: 30rpx 0;
|
||||
overflow: hidden;
|
||||
line-height: 32rpx;
|
||||
text-align: right;
|
||||
padding-right: 48rpx;
|
||||
padding-right: 68rpx;
|
||||
|
||||
.image-icon{
|
||||
width: 30rpx;
|
||||
height: 32rpx;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 10rpx;
|
||||
right: 10rpx;
|
||||
top: 30rpx;
|
||||
.image-icon-img{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
.course-study-body{
|
||||
@@ -953,12 +966,12 @@ const chooseRateNow = (item) => {
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-top: v-bind(pageTopPadding);
|
||||
.body-title{
|
||||
|
||||
height: 150rpx;
|
||||
height: 90rpx;
|
||||
text-align: center;
|
||||
font-size: 33rpx;
|
||||
padding-top: 70rpx;
|
||||
padding-top: 10rpx;
|
||||
line-height: 46rpx;
|
||||
box-sizing: border-box;
|
||||
font-weight: 500;
|
||||
@@ -968,7 +981,7 @@ const chooseRateNow = (item) => {
|
||||
.arrow-icon{
|
||||
position: absolute;
|
||||
left:21rpx;
|
||||
top:65rpx;
|
||||
top:5rpx;
|
||||
color: #000;
|
||||
padding: 15rpx;
|
||||
// background-color: red;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<view class="max_page ">
|
||||
<view class="max_page">
|
||||
<nav-bar :is_seat="false" :backgroundColor="bgOpacity"></nav-bar>
|
||||
<scroll-view :scroll-y="true" class="scroll detail-main" @scroll="scroll_fun" @scrolltolower="scrolltolower">
|
||||
<view class="bg_div">
|
||||
<image-preview class="img_100 " :imgId="form.imgId" mode="widthFix"></image-preview>
|
||||
<image-preview class="img_100" :imgId="form.imgId" mode="widthFix"></image-preview>
|
||||
</view>
|
||||
<view class="back_div" @click="common.navigateBack()">
|
||||
<view class="back-icon"></view>
|
||||
@@ -183,7 +183,7 @@
|
||||
margin-right: 10rpx;
|
||||
position: fixed;
|
||||
left: 25rpx;
|
||||
top: 45rpx;
|
||||
top: var(--status-bar-height) ;
|
||||
// background-color: red;
|
||||
// width: 60rpx;
|
||||
// height: 60rpx;
|
||||
|
||||
+20
-11
@@ -5,13 +5,14 @@
|
||||
<view class="bot-bg"></view>
|
||||
<scroll-view class="index-dialog-body" :scroll-y="true" upper-threshold="0" refresher-enabled="true"
|
||||
refresher-default-style="none" @refresherrefresh="scrolltolower">
|
||||
<view class="seek-setting">
|
||||
<image src="@/static/images/dialog/new-dialog.png" alt="" class="image-icon-new"></image>
|
||||
<image src="@/static/images/dialog/history.png" alt="" class="image-icon"></image>
|
||||
</view>
|
||||
|
||||
<view class="body-title">
|
||||
<!-- <uv-icon class="arrow-icon" name="arrow-left" @click="common.navigateBack()"/> -->
|
||||
AI问答
|
||||
<view class="seek-setting">
|
||||
<image src="@/static/images/dialog/new-dialog.png" alt="" class="image-icon-new"></image>
|
||||
<image src="@/static/images/dialog/history.png" alt="" class="image-icon"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="ai-info">
|
||||
<!-- <image src="@/static/images/dialog/pet-3.png" alt="" class="image-pet-bg"></image> -->
|
||||
@@ -126,6 +127,11 @@
|
||||
import {
|
||||
queryHotQuestionApi
|
||||
} from "@/api/dialog.js"
|
||||
const {
|
||||
statusBarHeight
|
||||
} = uni.getWindowInfo()
|
||||
|
||||
const pageTopPadding = computed(() => statusBarHeight + 'px')
|
||||
|
||||
const socketStore = useSocketStore()
|
||||
const {
|
||||
@@ -553,14 +559,17 @@
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
|
||||
padding-top: v-bind(pageTopPadding);
|
||||
// display: flex;
|
||||
// flex-direction: column;
|
||||
|
||||
|
||||
.body-title {
|
||||
height: 140rpx;
|
||||
height: 90rpx;
|
||||
text-align: center;
|
||||
font-size: 33rpx;
|
||||
padding-top: 70rpx;
|
||||
padding-top: 20rpx;
|
||||
|
||||
line-height: 46rpx;
|
||||
box-sizing: border-box;
|
||||
font-weight: 500;
|
||||
@@ -571,7 +580,7 @@
|
||||
.arrow-icon {
|
||||
position: absolute;
|
||||
left: 36rpx;
|
||||
top: 80rpx;
|
||||
top: 30rpx;
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
@@ -580,7 +589,7 @@
|
||||
position: absolute;
|
||||
z-index: 3;
|
||||
right: 45rpx;
|
||||
top: 68rpx;
|
||||
top: 8rpx;
|
||||
font-size: 26rpx;
|
||||
width: 140rpx;
|
||||
height: 52rpx;
|
||||
@@ -707,7 +716,7 @@
|
||||
}
|
||||
.router-list {
|
||||
height: 84rpx;
|
||||
padding: 22rpx 30rpx 0;
|
||||
padding: 20rpx 30rpx 0;
|
||||
background-color: #fff;
|
||||
border-radius: 15rpx 15rpx 0 0;
|
||||
white-space: nowrap;
|
||||
@@ -741,7 +750,7 @@
|
||||
}
|
||||
|
||||
.talking-list {
|
||||
height: calc(100% - 832rpx);
|
||||
height: calc(100% - 832rpx + v-bind(pageTopPadding));
|
||||
padding: 12rpx 24rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
<!-- 文字logo -->
|
||||
<view class="title_logo">
|
||||
<image src="@/static/images/index/logo_text.png" class="log_img"></image>
|
||||
<image src="@/static/images/index/logo_text.png" class="log_img" mode="heightFix"></image>
|
||||
<view class="fl1"></view>
|
||||
</view>
|
||||
<!-- 搜索框 -->
|
||||
@@ -81,7 +81,7 @@
|
||||
<view class="group">
|
||||
<view class="item" @click="common.switchTab('/pages/course/index')">
|
||||
<image class="icon" src="@/static/images/index/navigation_course.png"></image>
|
||||
<view class="title">课程中心</view>
|
||||
<view class="title">AI学习</view>
|
||||
</view>
|
||||
<view class="item"
|
||||
@click="common.navigateTo('/pages/index/dialog',{ animationType: 'slide-in-bottom'})">
|
||||
@@ -89,7 +89,7 @@
|
||||
<view class="title">AI问答</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<image class="icon" src="@/static/images/index/navigation_ai.png" @click="ai_test()"></image>
|
||||
<image class="icon" src="@/static/images/index/navigation_ai.png"></image>
|
||||
<view class="title">AI陪练</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
@@ -356,7 +356,7 @@
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
const index = ref(0)
|
||||
const ai_test = () => {
|
||||
index.value++
|
||||
@@ -372,6 +372,7 @@
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 进入搜索页
|
||||
const goto_search_page = () => {
|
||||
common.navigateTo('/pages/search/search')
|
||||
@@ -548,11 +549,10 @@
|
||||
display: flex;
|
||||
margin-top: 106rpx;
|
||||
margin-left: $bg-margin-left;
|
||||
|
||||
.log_img {
|
||||
margin-left: 10rpx;
|
||||
width: 300rpx;
|
||||
height: 46rpx;
|
||||
// width: 300rpx;
|
||||
height: 50rpx;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<image src="/static/images/login/profile.png" class="profile"></image>
|
||||
</view>
|
||||
<view class="title_logo">
|
||||
<image src="/static/images/login/logo_text.png" class="log_img" @click="goTest"></image>
|
||||
<image src="/static/images/login/logo_text.png" mode="heightFix" class="log_img" @click="goTest"></image>
|
||||
<view class="fl1"></view>
|
||||
</view>
|
||||
<view class="title_text_div">
|
||||
@@ -269,7 +269,7 @@ onBackPress(() => back_state.value);
|
||||
margin-top: 120rpx;
|
||||
|
||||
.log_img {
|
||||
width: 380rpx;
|
||||
// width: 380rpx;
|
||||
height: 70rpx;
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 2.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 4.5 KiB |
Reference in New Issue
Block a user