Merge branch 'develop' of http://25.13.9.101:9000/K17_AITS/tra-app into develop
This commit is contained in:
@@ -18,4 +18,6 @@ VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001'
|
||||
|
||||
# h5专用地址
|
||||
|
||||
|
||||
VITE_APP_BASE_H5_API_Url = 'http://aitstest.jlbank.com.cn:7001'
|
||||
|
||||
|
||||
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.
Executable → Regular
+58
-46
@@ -1,5 +1,6 @@
|
||||
// #ifdef APP-PLUS
|
||||
import showDialog from '@/common/dialogMessage'
|
||||
|
||||
// #endif
|
||||
function msg(title, duration = 1000) {
|
||||
uni.showToast({
|
||||
title: title,
|
||||
@@ -10,40 +11,49 @@ function msg(title, duration = 1000) {
|
||||
}
|
||||
|
||||
function show(title, msg, showCancel = true, cancelText = '取消', confirmText = '确定') {
|
||||
return new Promise((resolve, reject) => {
|
||||
// 创建通用参数对象
|
||||
const dialogOptions = {
|
||||
title,
|
||||
content: msg,
|
||||
showCancel,
|
||||
cancelText,
|
||||
confirmText,
|
||||
success: (res) => {
|
||||
// 统一处理成功回调,解析为布尔值
|
||||
console.log('res.confirm', res.confirm);
|
||||
resolve(!!res.confirm);
|
||||
}
|
||||
};
|
||||
|
||||
if (getPhoneEnvBool('AND')) {
|
||||
// 安卓环境使用showDialog,补充cancel回调
|
||||
showDialog({
|
||||
...dialogOptions,
|
||||
cancel: () => {
|
||||
console.log('用户点击取消');
|
||||
resolve(false); // 取消时也返回Promise结果
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 其他环境使用uni.showModal,补充fail回调
|
||||
uni.showModal({
|
||||
...dialogOptions,
|
||||
fail: (res) => {
|
||||
reject(res);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
return new Promise((resolve, reject) => {
|
||||
// 创建通用参数对象
|
||||
const dialogOptions = {
|
||||
title,
|
||||
content: msg,
|
||||
showCancel,
|
||||
cancelText,
|
||||
confirmText,
|
||||
success: (res) => {
|
||||
// 统一处理成功回调,解析为布尔值
|
||||
console.log('res.confirm', res.confirm);
|
||||
resolve(!!res.confirm);
|
||||
}
|
||||
};
|
||||
// #ifdef APP-PLUS
|
||||
if (getPhoneEnvBool('AND')) {
|
||||
// 安卓环境使用showDialog,补充cancel回调
|
||||
showDialog({
|
||||
...dialogOptions,
|
||||
cancel: () => {
|
||||
console.log('用户点击取消');
|
||||
resolve(false); // 取消时也返回Promise结果
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 其他环境使用uni.showModal,补充fail回调
|
||||
uni.showModal({
|
||||
...dialogOptions,
|
||||
fail: (res) => {
|
||||
reject(res);
|
||||
}
|
||||
});
|
||||
}
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
uni.showModal({
|
||||
...dialogOptions,
|
||||
fail: (res) => {
|
||||
reject(res);
|
||||
}
|
||||
});
|
||||
// #endif
|
||||
});
|
||||
}
|
||||
|
||||
const loading = (title = '加载中', mask = true) => uni.showLoading({
|
||||
@@ -140,18 +150,20 @@ export const getUserInfo = (key = '') => {
|
||||
* @returns {boolean} 如果当前平台匹配指定标识返回true,否则返回false
|
||||
*/
|
||||
export const getPhoneEnvBool = (flag) => {
|
||||
// 获取当前设备的平台信息
|
||||
|
||||
const { platform } = uni.getSystemInfoSync();
|
||||
|
||||
// 平台与标识的映射关系
|
||||
const platformMap = {
|
||||
ios: 'IOS',
|
||||
android: 'AND',
|
||||
};
|
||||
// 获取当前设备的平台信息
|
||||
|
||||
// 根据当前平台返回匹配结果
|
||||
return platformMap[platform] === flag;
|
||||
const {
|
||||
platform
|
||||
} = uni.getSystemInfoSync();
|
||||
|
||||
// 平台与标识的映射关系
|
||||
const platformMap = {
|
||||
ios: 'IOS',
|
||||
android: 'AND',
|
||||
};
|
||||
|
||||
// 根据当前平台返回匹配结果
|
||||
return platformMap[platform] === flag;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
export default function showDialog(options) {
|
||||
|
||||
const view = new plus.nativeObj.View('customModal', {
|
||||
top: '0',
|
||||
left: '0',
|
||||
@@ -7,7 +8,7 @@ export default function showDialog(options) {
|
||||
backgroundColor: 'rgba(0,0,0,0.1)',
|
||||
position: 'fixed'
|
||||
});
|
||||
|
||||
|
||||
const screenWidth = plus.screen.resolutionWidth;
|
||||
const screenHeight = plus.screen.resolutionHeight;
|
||||
const borderRadius = 10;
|
||||
@@ -212,7 +213,7 @@ export default function showDialog(options) {
|
||||
}
|
||||
}
|
||||
}, false);
|
||||
|
||||
|
||||
view.show();
|
||||
|
||||
return {
|
||||
@@ -220,4 +221,5 @@ export default function showDialog(options) {
|
||||
view.close();
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
@@ -134,9 +134,17 @@
|
||||
reply_data.parentBbsId = parentBbsId
|
||||
reply_data.bbsId = item.bbsId
|
||||
reply_data.index = index
|
||||
const systemInfo = uni.getSystemInfoSync();
|
||||
// 安全区域底部到屏幕底部的高度(即底部安全区域高度)
|
||||
const safeAreaBottomHeight = systemInfo.screenHeight - systemInfo.safeArea.bottom;
|
||||
nextTick(() => {
|
||||
uni.onKeyboardHeightChange(res => {
|
||||
popup_input_bottom.value = `${res.height}px`;
|
||||
let keyboardHeight = res.height;
|
||||
// 仅在iOS端补偿安全区域高度
|
||||
if (systemInfo.platform === 'ios') {
|
||||
keyboardHeight = Math.max(0, keyboardHeight - safeAreaBottomHeight); // 避免负数
|
||||
}
|
||||
popup_input_bottom.value = `${keyboardHeight}px`;
|
||||
console.log(res);
|
||||
});
|
||||
})
|
||||
@@ -167,10 +175,18 @@
|
||||
}
|
||||
}
|
||||
|
||||
const getData = () => {
|
||||
if (status.value !== 'loadmore' && status.value !== '') return
|
||||
status.value = 'loading'
|
||||
page.value++
|
||||
const getData = (from = '') => {
|
||||
if (from == 'submit') {
|
||||
status.value = ''
|
||||
total.value = -1
|
||||
page.value = 1
|
||||
message_list.length = 0
|
||||
} else {
|
||||
if (status.value !== 'loadmore' && status.value !== '') return
|
||||
status.value = 'loading'
|
||||
page.value++
|
||||
}
|
||||
|
||||
queryTraCrsBbsInfoByCrsId({
|
||||
crsId: props.crsId,
|
||||
page: page.value,
|
||||
@@ -222,7 +238,7 @@
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.popup {
|
||||
z-index: 1200;
|
||||
z-index: 18000;
|
||||
}
|
||||
|
||||
.empty_message_div {
|
||||
|
||||
@@ -37,30 +37,22 @@
|
||||
:inactive-style="{ color: '#666666', 'font-size': '30rpx' }"></uv-tabs>
|
||||
</view>
|
||||
</uv-sticky>
|
||||
|
||||
<!-- <swiper class="body-swiper" @change="swiper_change" :current="tabAct">
|
||||
<swiper-item> -->
|
||||
|
||||
<!-- <swiper class="body-swiper" @change="swiper_change" :current="tabAct"><swiper-item> -->
|
||||
<view class="course-info" v-if="tabAct == 0">
|
||||
<introduceVue v-model="form"></introduceVue>
|
||||
</view>
|
||||
<!-- </swiper-item>
|
||||
<swiper-item> -->
|
||||
<!--</swiper-item><swiper-item>-->
|
||||
<view class="point" v-if="tabAct == 1">
|
||||
<knowledge v-model="form" @toStudyPrgh="toStudyPrgh"></knowledge>
|
||||
</view>
|
||||
<!-- </swiper-item>
|
||||
<swiper-item> -->
|
||||
<!--</swiper-item><swiper-item>-->
|
||||
<view class="evaluate" v-if="tabAct == 2 && form">
|
||||
<comment ref="commentRef" :crsNum="form.crsNum" :crsId="form.crsId" :imgId="form.imgId">
|
||||
</comment>
|
||||
</view>
|
||||
<!-- </swiper-item>
|
||||
</swiper> -->
|
||||
|
||||
<!--</swiper-item></swiper>-->
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</scroll-view>
|
||||
<view class="btn-box btn-box-height font_pf">
|
||||
<template v-if="[0,1].includes(tabAct)">
|
||||
@@ -74,9 +66,8 @@
|
||||
@click="common.navigateTo('/pages/courseDetail/submit?crsNum='+crsNum+'&imgId='+form.imgId)">发布评价</uv-button>
|
||||
</template>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
@@ -171,7 +162,8 @@
|
||||
|
||||
onMounted(async () => {
|
||||
uni.$on('refresh_comment_data', () => {
|
||||
commentRef.value?.getData();
|
||||
console.log('发评论了刷新');
|
||||
commentRef.value?.getData('submit');
|
||||
tabAct.value = 2
|
||||
})
|
||||
})
|
||||
@@ -315,7 +307,7 @@
|
||||
.evaluate {
|
||||
min-height: calc(100vh - 92rpx - 22rpx - 245rpx - var(--status-bar-height));
|
||||
}
|
||||
|
||||
|
||||
.btn-box-height {
|
||||
height: 187rpx;
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
publishCrsEvaluation(formData).then(res => {
|
||||
common.msg('发表成功')
|
||||
setTimeout(() => {
|
||||
uni.$emit('setMascot')
|
||||
uni.$emit('refresh_comment_data')
|
||||
if(from.value === 'study'){
|
||||
} else {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user