作者 韩昌

g

... ... @@ -41,7 +41,7 @@
<view class="TUI-message-input-functions" hover-class="none">
<image class="TUI-icon" @tap="handleEmoji" src="../../../../assets/icon/emoji.svg"></image>
<view @tap="handleExtensions">
<image class="TUI-icon" src="../../../../assets/icon/more.svg"></image>
<image class="TUI-icon" style="margin-right: 24rpx" src="../../../../assets/icon/more.svg"></image>
</view>
</view>
</view>
... ...
{
"version" : "1.0.0",
"prompt" : "template",
"title" : "服务协议和隐私政策",
"message" : "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"static\\html\\serviceText\\index.html?type=2\">《服务协议》</a>和<a href=\"static\\html\\userPrivacy\\index.html?type=3\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
"buttonAccept" : "同意并接受",
"buttonRefuse" : "暂不同意",
"second" : {
"title" : "确认提示",
"message" : "  进入应用前,你需先同意<a href=\"static/html/serviceText/index.html?type=2\">《服务协议》</a>和<a href=\"static\\html\\userPrivacy\\index.html?type=3\">《隐私政策》</a>,否则将退出应用。",
"buttonAccept" : "同意并继续",
"buttonRefuse" : "退出应用"
},
"styles" : {
"backgroundColor" : "#FFFFFF",
"borderRadius" : "5px",
"title" : {
"color" : "#333333"
},
"buttonAccept" : {
"color" : "#00a381"
},
"buttonRefuse" : {
"color" : "#c8161d"
}
}
}
... ...
... ... @@ -2,7 +2,7 @@
"version" : "1",
"prompt" : "template",
"title" : "服务协议和隐私政策",
"message" : "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"\">《服务协议》</a>和<a href=\"\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
"message" : "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"https://doctor.apple02.brofirst.cn/serviceText/\">《服务协议》</a>和<a href=\"https://doctor.apple02.brofirst.cn/userPrivacy/\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
"buttonAccept" : "同意并接受",
"buttonRefuse" : "暂不同意",
"hrefLoader" : "system|default",
... ... @@ -35,4 +35,4 @@
"color" : "##c6cdd4"
}
}
}
}
\ No newline at end of file
... ...
... ... @@ -51,6 +51,12 @@ const getRandomImageHandler = async () => {
}
const doctorLoginWithPwdHandler = async () => {
if (PwdLoginForm.value.username.length === 0 && !PwdLoginForm.value.username) return uni.$u.toast('请输入账号')
if (PwdLoginForm.value.password.length === 0 && !PwdLoginForm.value.password) return uni.$u.toast('请输入密码')
if (PwdLoginForm.value.captcha.length === 0 && !PwdLoginForm.value.captcha) return uni.$u.toast('请输入验证码')
try {
const { result }: any = await doctorLoginWithPwd({ ...PwdLoginForm.value, cid: uni.getStorageSync('cid') || '' })
... ...
... ... @@ -124,7 +124,7 @@ const oneClickLoginHandler = () => {
},
async success(res) {
// 登录成功
console.log(res, '成功') // {openid:'登录授权唯一标识',access_token:'接口返回的 token'}
console.log(res, '成功')
try {
const { result } = await doctorPhoneEasyLogin({ ...res.authResult, cid: uni.getStorageSync('cid') || '' })
... ... @@ -146,12 +146,14 @@ const oneClickLoginHandler = () => {
uni.reLaunch({ url: '/pages/index/index' })
// }, 800)
} catch (error) {
console.log(error, '一键登录err')
uni.$u.toast(error)
setTimeout(() => {
uni.closeAuthView()
}, 1000)
}
},
fail(res) {
uni.$u.toast('网络错误')
console.log(res, '失败')
console.log(res.errMsg)
}
... ...
... ... @@ -37,26 +37,32 @@ const params = reactive({
})
const loginHandler = async () => {
console.log(uni.getStorageSync('cid'), 'cid---------------------')
const { result }: { result: PhoneCodeLoginType } = await getMessageLogin({ ...params, cid: uni.getStorageSync('cid') })
if (!params.phoneNum && params.phoneNum.length === 0) return uni.$u.toast('请输入手机号')
uni.setStorageSync('token', result.token)
if (!params.code && params.code.length === 0) return uni.$u.toast('请输入验证码')
try {
const { result }: { result: PhoneCodeLoginType } = await getMessageLogin({ ...params, cid: uni.getStorageSync('cid') })
uni.setStorageSync('im_token', result.im_token)
uni.setStorageSync('token', result.token)
uni.setStorageSync('userId', result.userId)
uni.setStorageSync('im_token', result.im_token)
console.log(uni.getStorageSync('cid'), 'cid传值')
uni.setStorageSync('userId', result.userId)
// const { result: IndexData }: { result: IndexType } = await getIndex()
console.log(uni.getStorageSync('cid'), 'cid传值')
// if (IndexData?.isHavePwd == 1) return proxy.$h.jumpUrl()
// const { result: IndexData }: { result: IndexType } = await getIndex()
setTimeout(() => {
uni.$u.toast('登录成功')
}, 1000)
// if (IndexData?.isHavePwd == 1) return proxy.$h.jumpUrl()
uni.reLaunch({ url: '/pages/index/index' })
setTimeout(() => {
uni.$u.toast('登录成功')
}, 1000)
uni.reLaunch({ url: '/pages/index/index' })
} catch (error) {
uni.$u.toast(error)
}
}
const clickGetCodeHandler = async () => await getSendMessage({ phoneNum: params.phoneNum })
... ...
... ... @@ -37,15 +37,15 @@ import { MessageCountType, PageMessageListType } from '../../types'
const { proxy } = getCurrentInstance() as { proxy: ComponentPublicInstance }
const list = ref<PageMessageListType[]>([
{ title: '系统通知', text: '', numKey: 'sysCount', textkey: 'sysFirstContent', BadgeNum: 0, time: '暂无', type: '1', imgUrl: '/static/images/response.png' },
{ title: '用户反馈', text: '', numKey: 'userCount', textkey: 'userFirstContent', BadgeNum: 0, time: '暂无', type: '2', imgUrl: '/static/images/message.png' },
{ title: '续方通知', text: '', numKey: 'xufangCount', textkey: 'xufangContent', BadgeNum: 0, time: '暂无', type: '3', imgUrl: '/static/images/xftz.png', url: '/pages2/order/renew' }
{ title: '系统通知', text: '', numKey: 'sysCount', textkey: 'sysFirstContent', timeKey: 'sysFirstTime', BadgeNum: 0, time: '暂无', type: '1', imgUrl: '/static/images/response.png' },
{ title: '用户反馈', text: '', numKey: 'userCount', textkey: 'userFirstContent', timeKey: 'userFirstTime', BadgeNum: 0, time: '暂无', type: '2', imgUrl: '/static/images/message.png' },
{ title: '续方通知', text: '', numKey: 'xufangCount', textkey: 'xufangContent', timeKey: 'xufangTime', BadgeNum: 0, time: '暂无', type: '3', imgUrl: '/static/images/xftz.png', url: '/pages2/order/renew' }
])
const getDataHandler = async () => {
const { result }: { result: MessageCountType } = await getMsg_count()
list.value = list.value.map(_ => ({ ..._, BadgeNum: result[_.numKey] || 0, text: result[_.textkey] || '暂无消息' }))
list.value = list.value.map(_ => ({ ..._, BadgeNum: result[_.numKey] || 0, text: result[_.textkey] || '暂无消息', time: result[_.timeKey] || '暂无' }))
}
const jumpUrlHandler = (_: PageMessageListType) => (['1', '2'].includes(_.type) ? proxy.$h.jumpUrl(`/pages2/message/list?title=${_.title}&type=${_.type}`) : proxy.$h.jumpUrl(_.url))
... ... @@ -68,9 +68,10 @@ onShow(() => getDataHandler())
font-size: 36rpx;
font-weight: 700;
margin-bottom: 8rpx;
width: fit-content;
}
&-text {
width: 65vw;
width: 50vw;
color: #666666;
font-size: 26rpx;
@include oneLine(2);
... ... @@ -79,6 +80,7 @@ onShow(() => getDataHandler())
color: #999999;
font-size: 26rpx;
margin-bottom: 12rpx;
width: max-content;
}
.poBox {
position: relative;
... ...
... ... @@ -89,7 +89,7 @@ const getInfoHandler = async () => {
const { result: departmentList }: { result: { records: IndexListType[] } } = await getDepartment({ keyword: '' })
form.value.department = departmentList.records.flatMap(item => item.list).filter(item => result.department.includes(item.id))
form.value.department = departmentList.records.flatMap(item => item.list).filter(item => result.department ? result?.department.includes(item.id) : '')
mineinfo.value[1].disabled = !Boolean(result?.isCanUpdateNickName)
... ... @@ -107,7 +107,7 @@ const getInfoHandler = async () => {
form.value.nickName = result.realname
form.value.introduction = result.introduction
form.value.introduction = result.introduction ?? ''
}
const linechangeHandler = e => {
... ...
... ... @@ -36,6 +36,8 @@
<script>
import { getInvite, getPaper_basedata, updateChange_invite_paper } from '../../api'
import { baseURL } from '../../utils/http'
import { permision } from '../../utils/permission'
export default {
data: () => ({
picture: '',
... ... @@ -134,7 +136,16 @@ export default {
done(v) {
console.log('绘制完成:')
},
save() {
async save() {
// #ifdef APP-PLUS
if (uni.getStorageSync('deviceType') === 'android') {
const result = await permision.premissionCheck('EXTERNAL_STORAGE')
if (result != 1) {
console.log('拒绝')
return
}
}
// #endif
this.$refs.poster.canvasToTempFilePathSync({
fileType: 'jpg',
quality: 1,
... ...
... ... @@ -48,7 +48,7 @@
</view>
<view class="flexJ mb24" style="margin-top: 24rpx">
<view class="text">总金额</view>
<view class="blacktext">¥{{ amount || 0 }}</view>
<view class="blacktext">¥{{ props.PrescriptionDetail?.amount || '0.00' }}</view>
</view>
<!-- <view class="flexJ mb24">
... ...
<!DOCTYPE html>
<html lang="en">
<head>
<title>服务协议</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.container {
text-align: center;
}
</style>
</head>
<body>
<div class="container">
<h2>服务协议</h2>
</div>
<div>
欢迎使用我们的服务!在使用本服务之前,请仔细阅读并理解以下服务协议。通过访问或使用本服务,即表示您同意遵守以下条款和条件。如果您不同意这些条款和条件,请不要使用本服务。</div>
<div>&nbsp;</div>
<div>1. 服务内容</div>
<div>1.1 我们提供的服务包括但不限于宠物在线问诊和宠物商城。</div>
<div>1.2 在线问诊服务:我们提供宠物问诊平台,您可以通过平台与兽医进行在线咨询和沟通,获取宠物健康方面的建议和指导。</div>
<div>1.3 宠物商城服务:我们提供宠物用品和食品的购买渠道,您可以通过商城购买宠物所需的各类用品和食品。</div>
<div>&nbsp;</div>
<div>2. 用户责任</div>
<div>2.1 您应当按照平台规定的流程和要求使用服务,并承担使用服务所需的设备和网络费用。</div>
<div>2.2 您应当提供真实、准确、完整的个人信息,并及时更新相关信息。</div>
<div>2.3 您不得利用服务从事任何违法、违规或侵权行为,包括但不限于传播违禁信息、侵犯他人知识产权等。</div>
<div>&nbsp;</div>
<div>3. 付款和退款</div>
<div>3.1 在使用宠物商城服务时,您应按照平台规定的支付方式进行付款。</div>
<div>3.2 如因商品质量问题或其他原因需要退款,您应按照平台规定的退款流程进行操作。</div>
<div>&nbsp;</div>
<div>4. 隐私保护</div>
<div>4.1 我们将按照相关法律法规和隐私政策的规定保护您的个人信息安全。</div>
<div>4.2 您同意我们收集、使用、存储和披露您的个人信息,以提供服务并改进用户体验。</div>
<div>&nbsp;</div>
<div>5. 免责声明</div>
<div>5.1 您理解并同意,使用本服务的风险由您自行承担。我们不对服务的适用性、可靠性、安全性做任何明示或暗示的保证。</div>
<div>5.2 在法律允许的范围内,我们不对因使用或无法使用本服务而导致的任何直接或间接损失承担责任。</div>
<div>&nbsp;</div>
<div>6. 协议变更</div>
<div>我们保留随时修改本服务协议的权利。如有任何变更,我们将在平台上发布更新的协议版本。您继续使用服务即表示您接受修改后的协议。</div>
<div>&nbsp;</div>
<div>请您在使用本服务之前,认真阅读并理解本服务协议的所有条款。如您对协议内容有任何疑问,请与我们联系。感谢您的使用!</div>
<div>开发者:新彤雅(海南)宠物服务有限公司</div>
</body>
</html>
\ No newline at end of file
... ...
<!DOCTYPE html>
<html lang="en">
<head>
<title>隐私协议</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.container {
text-align: center;
}
</style>
</head>
<body>
<div class="container"><h2>隐私协议</h2></div>
<div>
感谢您使用我们的服务!我们非常重视保护您的个人信息的隐私和安全。本隐私政策将说明我们如何收集、使用、处理和保护您的个人信息。请在使用我们的服务之前仔细阅读并理解以下隐私政策。如果您不同意本政策的内容,请不要使用我们的服务。</div>
<div>&nbsp;</div>
<div>1. 信息的收集和使用</div>
<div>1.1 我们可能会收集您在使用服务过程中主动提供的个人信息,例如姓名、联系方式、电子邮件地址等。</div>
<div>1.2 我们会根据您的授权收集您的位置信息,用于提供相关服务功能。</div>
<div>1.3 我们会根据您的授权收集您的设备信息,用于优化服务体验和提供技术支持。</div>
<div>1.4 我们会根据您的授权收集您的支付信息,用于完成交易和退款等相关操作。</div>
<div>&nbsp;</div>
<div>2. 个人信息的处理和保护</div>
<div>2.1 我们承诺采取合理的安全措施,保护您的个人信息免遭未经授权的访问、使用、修改或泄露。</div>
<div>2.2 我们仅在为您提供服务或履行法律法规要求的情况下使用您的个人信息,除非获得您的同意或法律另有规定。</div>
<div>2.3 我们不会将您的个人信息转让或披露给任何未经授权的第三方,除非获得您的明确同意或法律另有规定。</div>
<div>&nbsp;</div>
<div>3. Cookie和技术信息</div>
<div>为提供更好的服务体验,我们可能会使用Cookie和类似技术收集和存储技术信息,例如您访问的页面、广告点击情况等。这些信息将帮助我们分析用户行为、改进服务和优化用户体验。</div>
<div>&nbsp;</div>
<div>4. 第三方服务</div>
<div>我们的服务可能包含来自第三方的服务或链接,例如社交媒体插件或广告。这些第三方服务可能会收集和使用您的个人信息,遵循其自己的隐私政策。我们不对第三方服务的隐私保护措施负责,您在使用这些服务时请自行查阅并了解其隐私政策。</div>
<div>&nbsp;</div>
<div>5. 未成年人的隐私保护</div>
<div>我们的服务主要面向成年人。如果您是未满法定年龄的未成年人,在使用我们的服务前应事先取得您的监护人的同意和指导。</div>
<div>&nbsp;</div>
<div>6. 协议变更</div>
<div>我们保留随时修改本隐私政策的权利。如有任何变更,我们将在适当的地方发布更新的隐私政策版本。您继续使用服务即表示您接受修改后的隐私政策。</div>
<div>&nbsp;</div>
<div>请您在使用我们的服务之前,认真阅读并理解本隐私政策的所有条款。如您对政策内容有任何疑问,请与我们联系。感谢您的理解和支持!</div>
<div>开发者:新彤雅(海南)宠物服务有限公司</div>
</body>
</html>
\ No newline at end of file
... ...
... ... @@ -186,6 +186,7 @@ export interface PageMessageListType {
type: string
imgUrl: string
url?: string
timeKey: string
}
... ...
... ... @@ -2,7 +2,7 @@
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('event : ', event, context, 'context')
let params = event.queryStringParameters
const res = await uniCloud.getPhoneNumber({
... ...
// export const baseURL = 'http://192.168.10.167:8080/jeecg-boot'
// export const baseURL = 'http://192.168.12.171:8881/jeecg-boot'
// export const baseURL = 'http://t5qnpc.natappfree.cc/jeecg-boot'
export const baseURL = 'https://doctor.apple02.brofirst.cn/jeecg-boot'
// export const baseURL = 'http://114.115.178.175:8799/jeecg-boot'
... ...