Files
wxProject-w4w/miniprogram/pages/index/index.ts
T

1189 lines
40 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// index.ts
// 获取应用实例
const app = getApp<IAppOption>()
const serverAddr = "127.0.0.1:5000"
Page({
data: {
// motto: 'Hello World',
text_startPage1: "知识库",
imgUrl_startPage1: "./static/icons/lib.svg",
function_startPage1: "popup_lib",
imgUrl_startPage2: "./static/icons/history.svg",
function_startPage2: "popup_history",
imgUrl_startPage3: "./static/icons/heart.svg",
function_startPage3: "popup_collect",
text_startPage4: "个性化",
imgUrl_startPage4: "./static/icons/self.svg",
function_startPage4: "popup_style",
tip_content: "不吃饭会饿死",
tip_hidden: false,
active_Page: "startPage",
currentDate: '',
remarkTemp: '',
resultTitle: "查询结果",
pageStack: [],
curtain_hidden: true,
curtain2_hidden: true,
imgUrl_test: "https://tse4-mm.cn.bing.net/th/id/OIP-C.2MyVJAPY4CWrMUIKfruz9AHaHa?w=199&h=199&c=7&r=0&o=5&dpr=1.3&pid=1.7",
// 有点误导性
// 瞬间开启摄像头会导致卡顿,所以还是注释掉吧
// camera_hidden:true,
// 历史记录data
data_history: {
// "2023.2.30": [
// {
// // 时间复杂度需求哪有那么高。。。
// id: 1,
// imgUrl: "https://tse3-mm.cn.bing.net/th/id/OIP-C.qM9D7c-Ow-C-xLARJdSwQwHaIO?pid=ImgDet&rs=1", res: { scores: 1, arr: ["山梨酸钾", "山梨酸钾", "山梨酸钾", "山梨酸钾", "山梨酸钾", "山梨酸钾", "山梨酸钾", "山梨酸钾", "山梨酸钾", "山梨酸钾", "山梨酸钾", "山梨酸钾", "山梨酸钾", "山梨酸钾", "山梨酸钾", "山梨酸钾",] },
// hasCollect: false,//目前全是false。。。
// }, {
// id: 2,
// imgUrl: "https://tse3-mm.cn.bing.net/th/id/OIP-C.qM9D7c-Ow-C-xLARJdSwQwHaIO?pid=ImgDet&rs=1", res: { scores: 75, arr: [] },
// hasCollect: false,
// }, {
// id: 3,
// imgUrl: "https://tse3-mm.cn.bing.net/th/id/OIP-C.qM9D7c-Ow-C-xLARJdSwQwHaIO?pid=ImgDet&rs=1", res: { scores: 1, arr: [] },
// hasCollect: false,
// }, {
// id: 4,
// imgUrl: "https://tse3-mm.cn.bing.net/th/id/OIP-C.qM9D7c-Ow-C-xLARJdSwQwHaIO?pid=ImgDet&rs=1", res: { scores: 1, arr: [] },
// hasCollect: false,
// }, {
// id: 5,
// imgUrl: "https://tse3-mm.cn.bing.net/th/id/OIP-C.qM9D7c-Ow-C-xLARJdSwQwHaIO?pid=ImgDet&rs=1", res: { scores: 1, arr: [] },
// hasCollect: false,
// }, {
// id: 6,
// imgUrl: "https://tse3-mm.cn.bing.net/th/id/OIP-C.qM9D7c-Ow-C-xLARJdSwQwHaIO?pid=ImgDet&rs=1", res: { scores: 1, arr: [] },
// hasCollect: false,
// },
// ], "2023.2.10": [
// {
// id: 7,
// imgUrl: "https://tse3-mm.cn.bing.net/th/id/OIP-C.qM9D7c-Ow-C-xLARJdSwQwHaIO?pid=ImgDet&rs=1", res: { scores: 1, arr: [] },
// hasCollect: false,
// }
// ], "2023.2.11": [
// {
// id: 8,
// imgUrl: "https://tse3-mm.cn.bing.net/th/id/OIP-C.qM9D7c-Ow-C-xLARJdSwQwHaIO?pid=ImgDet&rs=1", res: { scores: 1, arr: [] },
// hasCollect: false,
// }
// ], "2023.2.12": [
// {
// id: 9,
// imgUrl: "https://tse3-mm.cn.bing.net/th/id/OIP-C.qM9D7c-Ow-C-xLARJdSwQwHaIO?pid=ImgDet&rs=1", res: { scores: 1, arr: [] },
// hasCollect: false,
// }
// ], "2023.2.13": [
// {
// id: 10,
// imgUrl: "https://tse3-mm.cn.bing.net/th/id/OIP-C.qM9D7c-Ow-C-xLARJdSwQwHaIO?pid=ImgDet&rs=1", res: { scores: 1, arr: [] },
// hasCollect: false,
// }
// ],
},
//收藏夹data
data_collect: [
// {
// "id":1,
// "date": "2023.15.16",
// "res":{scores: 99, arr: []} ,
// "imgUrl": "./static/icons/history.svg",
// "remark": "方师傅康便面",
// "riskBgColor": "springgreen",
// "riskStr": "低风险",
// },
],
// 存储所有成分的信息, hidden: false, "riskBgColor": "springgreen", "riskStr": "低风险"由前端实现
data_lib: [
{
name: {
zh: "山梨酸钾",
en: "Potassium sorbate"
},
scores: 73,
info: "山梨酸钾,又名2,4-己二烯酸钾,是山梨酸的钾盐,分子式为C6H7O2K,无色或白色鳞片状结晶或结晶性粉末。 [1] 无臭或微有臭味,长期暴露在空气中易吸潮、被氧化分解而变色。易溶于水(67.6g/100mL 20℃),溶于丙二醇(5.8g/100mL)和乙醇(0.3g/10 mL)。山梨酸钾和山梨酸是常用的有机防腐剂,广泛用于食品、化状品、饲料的防腐。易于被人体吸收代谢,在体内无残留,无毒性。",
extra: [],
ADI: "",
// 搜索用,前端赋值
hidden: false,
//前端赋值
"riskBgColor": "springgreen",
"riskStr": "低风险"
}, {
name: {
zh: "李宁",
en: "L.N.G.N.M.S.L."
},
scores: 45,
info: "HAHA",
extra: [
{ type: "safe", name: "LPL" },
{ type: "unsafe", name: "飞舞" },
{ type: "unsafe", name: "精忠报国" },
],
ADI: "",
hidden: false,
riskBgColor: "sandybrown",
riskStr: "中风险"
}, {
name: {
zh: "丁基羟基茴香醚",
en: "Butyl hydroxyanisole(BHA)"
},
scores: 21,
info: "丁基羟基茴香醚(BHA),又名叔丁基-4-羟基茴香醚,化学式为C11H16O2,有两种异构体:3-BHA和2-BHA,一般指二者的混合物。2017年10月27日,世界卫生组织国际癌症研究机构公布的致癌物清单初步整理参考,叔丁基对羟基茴香醚(BHA)在2B类致癌物清单中。",
extra: [
{ type: "unsafe", name: "2B类致癌物" }
],
ADI: "0~0.5mg/kg bw",
hidden: false,
riskBgColor: "tomato",
riskStr: "高风险"
}
],
// 知识库搜索用
hidden_lib: {},
// 查询结果搜索用
hidden_result: {},
data_lib_map: {},
//查询展示用
data_resultPage: {
scores: 65,
circleClip: "",
circleColor: "",
arr: [],
tr: null,//top right
},
//收藏/取消收藏用
resultId: -1,
// 收到的查询结果信息
data_rcv: {
scores: 1,
arr: ["山梨酸钾"],
},
session_key: "",
userInfo: {},
hasUserInfo: false,
canIUse: wx.canIUse('button.open-type.getUserInfo'),
canIUseGetUserProfile: false,
canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName') // 如需尝试获取用户信息可改为false
},
// 启动时获取session
async onLoad() {
await this.updateSession()
setInterval(()=>{
this.updateSession()
},60*1000*5)
this.readStorageData()
this.updateLib()
this.updateHistory()
},
//开始界面的按钮相关动画
startPage_Bottons_leave() {
// var fd = wx.createSelectorQuery()
var time = 700;
var time1 = () => {
return Math.random() * 200;
}
this.animate('#gotoSearch', [
{ opacity: 1, translateY: 0, ease: 'ease-in' }, { opacity: 0, translateY: -300, ease: 'ease-in' },
], time)
this.animate('#tips_startPage', [
{ opacity: 1, ease: 'ease-in' }, { opacity: 0, ease: 'ease-in' },
], time, () => {
// this.setData({ tip_hidden: true })
})
setTimeout(() => {
this.animate('#buttom_startPage1', [
{ opacity: 1, translateX: 0, ease: 'ease-in' }, { opacity: 0, translateX: -300, ease: 'ease-in' },
], time)
}, time1())
setTimeout(() => {
this.animate('#buttom_startPage3', [
{ opacity: 1, translateX: 0, ease: 'ease-in' }, { opacity: 0, translateX: -300, ease: 'ease-in' },
], time)
}, time1())
setTimeout(() => {
this.animate('#buttom_startPage4', [
{ opacity: 1, translateX: 0, ease: 'ease-in' }, { opacity: 0, translateX: 300, ease: 'ease-in' },
], time)
}, time1())
setTimeout(() => {
this.animate('#buttom_startPage2', [
{ opacity: 1, translateX: 0, ease: 'ease-in' }, { opacity: 0, translateX: 300, ease: 'ease-in' },
], time)
}, time1())
},
startPage_Bottons_in() {
// var fd = wx.createSelectorQuery()
var time = 700;
var time1 = () => {
return Math.random() * 200;
}
this.animate('#gotoSearch', [
{ opacity: 0, translateY: -300, ease: 'ease-in' }, { opacity: 1, translateY: 0, ease: 'ease-out' },
], time)
// this.setData({ tip_hidden: false })
this.animate('#tips_startPage', [
{ opacity: 0, ease: 'ease-in' }, { opacity: 1, ease: 'ease-out' },
], time)
setTimeout(() => {
this.animate('#buttom_startPage1', [
{ opacity: 0, translateX: -300, ease: 'ease-in' }, { opacity: 1, translateX: 0, ease: 'ease-out' },
], time)
}, time1())
setTimeout(() => {
this.animate('#buttom_startPage3', [
{ opacity: 0, translateX: -300, ease: 'ease-in' }, { opacity: 1, translateX: 0, ease: 'ease-out' },
], time)
}, time1())
setTimeout(() => {
this.animate('#buttom_startPage4', [
{ opacity: 0, translateX: 300, ease: 'ease-in' }, { opacity: 1, translateX: 0, ease: 'ease-out' },
], time)
}, time1())
setTimeout(() => {
this.animate('#buttom_startPage2', [
{ opacity: 0, translateX: 300, ease: 'ease-in' }, { opacity: 1, translateX: 0, ease: 'ease-out' },
], time)
}, time1())
},
popup_camera() {
// this.setData({
// camera_hidden:false,
// })
this.data.pageStack.push("camera")
this.startPage_Bottons_leave()
this.animate('#page_camera', [
{ opacity: 0, translateY: 0 }, { opacity: 1, translateY: "-100%", ease: 'ease-in-out', },
], 1000, () => {
this.selectComponent('#page_camera')
})
},
exit_camera() {
this.data.pageStack.pop()
this.startPage_Bottons_in()
this.animate('#page_camera', [
{ opacity: 1, translateY: "-100%" }, { opacity: 0, translateY: "0", ease: 'ease-in-out' },
], 1000, () => {
// this.setData({
// camera_hidden:false,
// })
})
},
popup_history() {
this.data.pageStack.push("history")
this.startPage_Bottons_leave()
this.animate('#page_history', [
{ opacity: 0, translateY: 0 }, { opacity: 1, translateY: "-100%", ease: 'ease-in-out', },
], 1000, () => {
this.selectComponent('#page_history')
})
},
exit_history() {
this.data.pageStack.pop()
this.startPage_Bottons_in()
this.animate('#page_history', [
{ opacity: 1, translateY: "-100%" }, { opacity: 0, translateY: "0", ease: 'ease-in-out' },
], 1000)
},
popup_collect() {
this.data.pageStack.push("collect")
this.startPage_Bottons_leave()
this.animate('#page_collect', [
{ opacity: 0, translateY: 0 }, { opacity: 1, translateY: "-100%", ease: 'ease-in-out', },
], 1000, () => {
this.selectComponent('#page_collect')
})
},
exit_collect() {
this.data.pageStack.pop()
this.startPage_Bottons_in()
this.animate('#page_collect', [
{ opacity: 1, translateY: "-100%" }, { opacity: 0, translateY: "0", ease: 'ease-in-out' },
], 1000)
},
popup_lib() {
this.data.pageStack.push("lib")
this.startPage_Bottons_leave()
this.animate('#page_lib', [
{ opacity: 0, translateY: 0 }, { opacity: 1, translateY: "-100%", ease: 'ease-in-out', },
], 1000, () => {
this.selectComponent('#page_collect')
})
},
exit_lib() {
this.data.pageStack.pop()
this.startPage_Bottons_in()
this.animate('#page_lib', [
{ opacity: 1, translateY: "-100%" }, { opacity: 0, translateY: "0", ease: 'ease-in-out' },
], 1000, () => {
// for(var n of this.data.data_lib){
// n.hidden=false
// }
// this.setData(
// {"data.data_lib":this.data.data_lib}
// )
})
},
popup_style() {
this.data.pageStack.push("style")
this.startPage_Bottons_leave()
this.animate('#page_style', [
{ opacity: 0, translateY: 0 }, { opacity: 1, translateY: "-100%", ease: 'ease-in-out', },
], 1000, () => {
this.selectComponent('#page_style')
})
},
exit_style() {
this.data.pageStack.pop()
this.startPage_Bottons_in()
this.animate('#page_style', [
{ opacity: 1, translateY: "-100%" }, { opacity: 0, translateY: "0", ease: 'ease-in-out' },
], 1000)
},
//遮罩动画
show_curtain() {
this.setData({
curtain_hidden: false
})
this.animate('#page_curtain', [
{ opacity: 0 }, { opacity: 1, ease: 'ease-in-out' },
], 1000)
},
hide_curtain() {
this.animate('#page_curtain', [
{ opacity: 1 }, { opacity: 0, ease: 'ease-in-out' },
], 1000, () => {
this.setData({
curtain_hidden: true
})
console.log('suc')
})
this.setData({
curtain_hidden: true
})
},
//查询结果页面相关
popup_result() {
this.data.data_resultPage.circleClip = this.calculate_clip_path(this.data.data_resultPage.scores * 3.6)
this.data.data_resultPage.circleColor = this.scores2map(this.data.data_resultPage.scores).color
this.setData({
data_resultPage: this.data.data_resultPage
})
this.show_curtain()
this.animate('#page_result', [
{ opacity: 0, translateY: 0 }, { opacity: 1, translateY: "-100%", ease: 'ease-in-out', },
], 600)
},
exit_result() {
this.hide_curtain()
this.animate('#page_result', [
{ opacity: 1, translateY: "-100%" }, { opacity: 0, translateY: "0", ease: 'ease-in-out' },
], 600)
},
//遮罩动画2
show_curtain2() {
this.setData({
curtain2_hidden: false
})
this.animate('#page_curtain2', [
{ opacity: 0 }, { opacity: 1, ease: 'ease-in-out' },
], 1000)
},
hide_curtain2() {
this.animate('#page_curtain2', [
{ opacity: 1 }, { opacity: 0, ease: 'ease-in-out' },
], 1000)
this.setData({
curtain2_hidden: true
})
},
// 设置备注
popup_setRemark() {
this.show_curtain2()
this.animate('#star_setRemark', [
{ opacity: 0, translateY: 0 }, { opacity: 1, translateY: "-1300rpx", ease: 'ease-in-out', },
], 600)
},
exit_setRemark() {
this.animate('#star_setRemark', [
{ opacity: 1, translateY: "-1300rpx" }, { opacity: 0, translateY: "0", ease: 'ease-in-out' },
], 600)
this.hide_curtain2()
},
popup_editRemark() {
this.show_curtain2()
this.animate('#editRemark', [
{ opacity: 0, translateY: 0 }, { opacity: 1, translateY: "-1300rpx", ease: 'ease-in-out', },
], 600)
},
exit_editRemark() {
this.animate('#editRemark', [
{ opacity: 1, translateY: "-1300rpx" }, { opacity: 0, translateY: "0", ease: 'ease-in-out' },
], 600)
this.hide_curtain2()
},
popup_removeCollectionVerify() {
this.show_curtain2()
this.animate('#removeCollectionVerify', [
{ opacity: 0, translateY: 0 }, { opacity: 1, translateY: "-1300rpx", ease: 'ease-in-out', },
], 600)
},
exit_removeCollectionVerify() {
this.animate('#removeCollectionVerify', [
{ opacity: 1, translateY: "-1300rpx" }, { opacity: 0, translateY: "0", ease: 'ease-in-out' },
], 600)
this.hide_curtain2()
},
// 根据传入的包含scores和arr的object更新this.data.data_resultPage并popup_result
show_result(res: { scores: any, arr: Array<any> }, tr: string) {
// console.log(res)
var data_resultPage = {
scores: res.scores,
arr: [],
tr: tr,
}
console.log(tr)
for (var name of res.arr) {
// 有时间去写个时间复杂度更低的,不过感觉也够用了
for (var n of this.data.data_lib) {
if (n.name.zh.includes(name) || n.name.en.includes(name)) {
data_resultPage.arr.push(n)
break
}
}
}
this.setData({
"data_resultPage": data_resultPage
})
// console.log(data_resultPage)
this.popup_result()
},
show_result_wxml(e: any) {
var res = e.currentTarget.dataset.index;
console.log(res)
this.data.resultId = res.id
// console.log(this.data.resultId)
var tr = ""
// 不太好吧
switch (this.data.pageStack[this.data.pageStack.length - 1]) {
case "collect": {
tr = "delete"
break;
}
case "history": {
if (res.hasCollect)
tr = "delete"
else
tr = "heart"
break;
}
}
res = res.res
this.show_result(res, tr)
},
show_result_byId(id: any) {
for (var date in this.data.data_history) {
for (var n of this.data.data_history[date]) {
if (n.id == id) {
this.data.resultId = id
this.show_result(n.res, "heart")
}
}
}
},
getInputRemark(e: any) {
this.data.remarkTemp = e.detail.value
},
// 收藏当前页面
add_collection() {
var r = this.id2resultAndDate(this.data.resultId)
if (r == null) return
var result = r.result
var date = r.date
var remark = this.data.remarkTemp
console.log(result, date, remark)
this.data.data_collect.push({
"id": this.data.resultId,
"date": date,
"res": result.res,
"imgUrl": result.imgUrl,
"remark": this.data.remarkTemp,
"riskBgColor": this.scores2map(result.res.scores).color,
"riskStr": this.scores2map(result.res.scores).content,
})
result.hasCollect = true
this.data.data_resultPage.tr = "delete"
this.setData(
{
data_collect: this.data.data_collect,
data_history: this.data.data_history,
data_resultPage: this.data.data_resultPage
}
)
this.save2storage()
this.uploadHistoryAndCollection()
this.exit_setRemark()
},
editRemark() {
var r = this.id2resultAndDate(this.data.resultId)
if (r == null) return
var result = r.result
var date = r.date
var remark = this.data.remarkTemp
for (var i in this.data.data_collect) {
if (this.data.data_collect[i].id == this.data.resultId) {
this.data.data_collect[i].remark = remark
}
}
this.setData(
{
data_collect: this.data.data_collect,
data_history: this.data.data_history,
data_resultPage: this.data.data_resultPage
}
)
this.save2storage()
this.uploadHistoryAndCollection()
this.exit_editRemark()
},
//取消收藏。。。。
remove_collection() {
var flag = true
var r = this.id2resultAndDate(this.data.resultId)
if (r == null) flag = false
if (flag) {
var result = r.result
result.hasCollect = false
}
for (var i in this.data.data_collect) {
if (this.data.data_collect[i].id == this.data.resultId) {
this.data.data_collect.splice(i, 1)
}
}
this.data.data_resultPage.tr = "heart"
this.setData(
{
data_collect: this.data.data_collect,
data_history: this.data.data_history,
data_resultPage: this.data.data_resultPage
}
)
this.save2storage()
this.uploadHistoryAndCollection()
this.exit_removeCollectionVerify()
},
// 根据角度计算剪切路径,错了不怪我。。
calculate_clip_path(deg: number) {
var res = "polygon(50% 50%,0 0"
deg = deg % 360
if (deg < 90) {
var x = -Math.cos(deg * Math.PI / 90) * 50 + 50;
res = res + "," + x + "% 0"
} else if (deg < 180) {
deg -= 90
var y = -Math.cos(deg * Math.PI / 90) * 50 + 50;
res = res + ",100% 0" + ",100% " + y + "%"
} else if (deg < 270) {
deg = 270 - deg
var x = -Math.cos(deg * Math.PI / 90) * 50 + 50;
res = res + ",100% 0" + ",100% 100%" + "," + x + "% 100%"
} else {
deg = 360 - deg
var y = -Math.cos(deg * Math.PI / 90) * 50 + 50;
res = res + ",100% 0" + ",100% 100%" + ",0 100%" + ",0 " + y + "%"
}
res = res + ");"
return res
},
//收到搜索结果处理(并没有写)
receive_result() {
},
//收到成分数据更新处理(并没有写)
receive_lib() {
},
//更新成分数据
updateLib() {
wx.request({
url: 'http://' + serverAddr + '/getLib', //仅为示例,并非真实的接口地址
data: {
session_key:this.data.session_key
},
method: "GET",
header: {
'content-type': 'application/json' // 默认值
},
success: res => {
// console.log(res)
var data = res.data
// console.log(data)
// 能跑
// name: {
// zh: "山梨酸钾",
// en: "Potassium sorbate"
// },
// scores: 73,
// info: "山梨酸钾,又名2,4-己二烯酸钾,是山梨酸的钾盐,分子式为C6H7O2K,无色或白色鳞片状结晶或结晶性粉末。 [1] 无臭或微有臭味,长期暴露在空气中易吸潮、被氧化分解而变色。易溶于水(67.6g/100mL 20℃),溶于丙二醇(5.8g/100mL)和乙醇(0.3g/10 mL)。山梨酸钾和山梨酸是常用的有机防腐剂,广泛用于食品、化状品、饲料的防腐。易于被人体吸收代谢,在体内无残留,无毒性。",
// extra: [],
// ADI: "",
// 适配后端返回数据
for(var n of data){
n.name = {}
n.name.zh = n.chinese_name
n.name.en = n.english_name
n.scores = n.rating
n.extra = []
for(var i of n.effects){
n.extra.push({ 'type': "safe", 'name': i },)
}
for(var i of n.potential_risk_people){
n.extra.push({ 'type': "unsafe", 'name': "风险人群:" + i })
}
n.ADI = n.daily_intake_recommendation
}
for (var n of data) {
var scores = n.scores;
var map = this.scores2map(scores)
n.hidden = false
n.riskBgColor = map.color
n.riskStr = map.content
}
this.data.data_lib = data
this.setData(
{ "data_lib": data }
)
this.save2storage()
},
fail(res) {
console.log(res)
}
})
},
//更新历史记录
updateHistory() {
wx.request({
url: 'http://' + serverAddr + '/getHistory', //仅为示例,并非真实的接口地址
data: {
session_key:this.data.session_key
},
method: "POST",
header: {
'content-type': 'application/json' // 默认值
},
success: res => {
console.log(res)
var data = res.data
this.setData(
{ "data_history": data }
)
this.sortHistory()
this.save2storage()
},
fail(res) {
console.log(res)
}
})
},
// 更新session
updateSession() {
return new Promise((resolve, reject) => {
this.getCode().then(code => {
wx.request({
url: 'http://' + serverAddr + '/updateSession',
data: {
userCode: code
},
method: "POST",
header: {
'content-type': 'application/json'
},
success: res => {
console.log(res)
var data = res.data
this.setData(
{ "session_key": data }
)
resolve()
// setTimeout(this.updateSession,1000*60*5)
},
fail: res => {
console.log(res)
// setTimeout(this.updateSession,1000)
reject()
}
})
})
})
},
// 上传照片并展示收到的结果
uploadImg(tempImagePath: any) {
wx.getFileSystemManager().readFile({
filePath: tempImagePath,
encoding: 'base64',
success: res => {
// console.log('data:image/png;base64,' + res.data)
const imgBase64 = res.data
wx.request({
url: 'http://' + serverAddr + '/rcvImg', //仅为示例,并非真实的接口地址
data: {
imgBase64: imgBase64,
session_key:this.data.session_key
},
method: "POST",
header: {
'content-type': 'application/json' // 默认值
},
success: res => {
var data = res.data
console.log(res.data)
var nowdate = new Date();
var nowyear = nowdate.getFullYear();
var nowmonth = nowdate.getMonth() + 1;
var nowday = nowdate.getDate();
var dateStr = nowyear + '.' + nowmonth + '.' + nowday
if (!this.data.data_history[dateStr]) {
this.data.data_history[dateStr] = []
}
var historyTemp =
{
id: data.id,
imgUrl: data.imgUrl,
res: data.res,
hasCollect: false,//目前全是false。。。
}
this.data.data_history[dateStr].push(historyTemp)
this.setData({
data_history: this.data.data_history
})
this.sortHistory()
this.show_result_byId(data.id)
this.save2storage()
},
fail: res => {
console.log(res)
}
})
}
})
},
// 向云发送历史记录和收藏记录数据
uploadHistoryAndCollection(){
wx.request({
url: 'http://' + serverAddr + '/uploadHistoryAndCollection', //仅为示例,并非真实的接口地址
data: {
history : this.data.data_history,
collection:this.data.data_collect,
session_key:this.data.session_key
},
method: "POST",
header: {
'content-type': 'application/json' // 默认值
},
success: res => {
console.log(res)
},
fail: res => {
console.log(res)
}
})
},
//拍照
takePhoto() {
const ctx = wx.createCameraContext()
console.log('takePhoto..')
ctx.takePhoto({
quality: 'normal',
//找时间把这里和choosePhoto的success合并一下(算了)
success: res => {
const tempImagePath = res.tempImagePath
console.log(tempImagePath)
console.log(res)
this.uploadImg(tempImagePath)
}
})
},
//选择照片
choosePhoto() {
wx.chooseMedia({
mediaType: ['image'],
sourceType: ['album'],
sizeType: ["compressed"],
count: 1,
success: res => {
const tempImagePath = res.tempFiles[0].tempFilePath
console.log(tempImagePath)
console.log(res)
this.uploadImg(tempImagePath)
}
})
},
scores2risk(scores: Number) {
if (scores < 33) {
return "high";
} else if (scores < 66) {
return "middle";
} else {
return "low";
}
},
readInput_lib(e: any) {
//其他搜索内容
var exf = (o: any, keyw: string) => {
//搜索额外信息
for (var i of o.extra) {
if (i.name.includes(keyw)) {
return true
}
}
//搜索风险
if (o.riskStr.includes(keyw)) {
return true
}
return false
}
var key = e.detail.value
for (var n of this.data.data_lib) {
// console.log(n)
if (n.name.zh.includes(key) || n.name.en.toLowerCase().includes(key.toLowerCase()) || exf(n, key)) {
// n.hidden = false;
this.data.hidden_lib[n.name.zh] = false
// console.log(n.name.zh)
} else {
// n.hidden = true;
this.data.hidden_lib[n.name.zh] = true
}
}
this.setData({ hidden_lib: this.data.hidden_lib })
// console.log(this.data.data_lib)
},
readInput_result(e: any) {
//其他搜索内容
var exf = (o: any, keyw: string) => {
//搜索额外信息
for (var i of o.extra) {
if (i.name.includes(keyw)) {
return true
}
}
//搜索风险
if (o.riskStr.includes(keyw)) {
return true
}
return false
}
var key = e.detail.value
for (var n of this.data.data_lib) {
// console.log(n)
if (n.name.zh.includes(key) || n.name.en.toLowerCase().includes(key.toLowerCase()) || exf(n, key)) {
// n.hidden = false;
this.data.hidden_result[n.name.zh] = false
// console.log(n.name.zh)
} else {
// n.hidden = true;
this.data.hidden_result[n.name.zh] = true
}
}
this.setData({ hidden_result: this.data.hidden_result })
// console.log(this.data.data_lib)
},
//将risk转为存储color和content的map
scores2map(scores: Number) {
var risk = this.scores2risk(scores)
switch (risk) {
case "low": {
return { "color": "springgreen", "content": "低风险" };
}
case "middle": {
return { "color": "sandybrown", "content": "中风险" };
}
case "high": {
return { "color": "tomato", "content": "高风险" };
}
}
return { "color": "tomato", "content": "高风险" };
},
//..
id2resultAndDate(id: number) {
for (var i in this.data.data_history) {
for (var n of this.data.data_history[i])
if (n.id == id) {
return { result: n, date: i }
}
}
return null;
},
// 将各种数据存入本地
save2storage() {
var list = ['data_history', 'data_collect', 'data_lib']
for (var k of list) {
wx.setStorage({
key: k,
data: this.data[k],
})
}
},
// 从本地读取各种数据
readStorageData(){
var list = ['data_history', 'data_collect', 'data_lib']
for (var k of list) {
this.data[k]=wx.getStorageSync(k)
// console.log(wx.getStorageSync(k))
}
this.setData(
{
data_history:this.data["data_history"],
data_collect:this.data["data_collect"],
data_lib:this.data["data_lib"],
}
)
},
// 清空收藏,可以放在个性化里面,最好加个确认的选项
clearCollection(){
this.data.data_collect=[]
this.setData({
data_collect:this.data.data_collect,
})
this.save2storage()
},
//清空历史记录,可以放在个性化里面,最好加个确认的选项
clearHistory(){
this.data.data_history=[]
this.setData({
data_history:this.data.data_history,
})
this.save2storage()
},
// 事件处理函数
bindViewTap() {
wx.navigateTo({
url: '../logs/logs',
})
},
getUserProfile() {
// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
wx.getUserProfile({
desc: '存储历史记录', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
success: (res) => {
console.log(res, 666)
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
})
},
getUserInfo(e: any) {
// 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息
console.log(e)
this.setData({
userInfo: e.detail.userInfo,
hasUserInfo: true
})
},
getDate: function () {
var nowdate = new Date();
var nowyear = nowdate.getFullYear();
var nowmonth = nowdate.getMonth() + 1;
var nowday = nowdate.getDate();
var nowdata1 = nowyear + '年' + nowmonth + '月' + nowday + '日'
this.setData({
currentDate: nowdata1
});
},
// 根据日期排序历史记录
sortHistory: function () {
let keysSorted = Object.keys(this.data.data_history).sort((a, b) => { return this.cmpDate(a, b) })
// console.log(keysSorted)
var data_history_new = {}
for (var i of keysSorted) {
data_history_new[i] = this.data.data_history[i]
}
// console.log(data_history_new)
// console.log(arrayObj)
// var data_history_new = new Map(arrayObj.map(i => [i[0], i[1]]));
this.setData({
data_history: data_history_new
})
// console.log(this.data.data_history)
// this.data.data_history.sort()
},
cmpDate: function (date0: string, date1: string) {
// console.log(date0,date1)
date0 = date0.split('.')
date1 = date1.split('.')
var y0 = parseInt(date0[0]),
y1 = parseInt(date1[0]),
m0 = parseInt(date0[1]),
m1 = parseInt(date1[1]),
d0 = parseInt(date0[2]),
d1 = parseInt(date1[2])
// console.log(date0, date1, y0, y1, m0, m1, d0, d1)
var res = 0
if (y1 != y0) {
if (y1 > y0) {
res = -1
} else if (y1 < y0) {
res = 1
}
} else if (m1 != m0) {
if (m1 > m0) {
res = -1
} else if (m1 < m0) {
res = 1
}
} else if (d1 != d0) {
if (d1 > d0) {
res = -1
} else if (d1 < d0) {
res = 1
}
}
res = -res
// console.log(res)
return res
},
// 获取用户code,以给服务端换取openId
getCode: async function () {
var code
await new Promise(function (res, rej) {
wx.login({
success: rcv => {
res(rcv.code)
}, fail: rcv => {
rej(rcv)
}
})
}).then(function (input: unknown) {
code = input
}).catch(function () {
code = ""
})
// console.log(code)
return code
},
testfunction: async function () {
await this.getCode().then(code => {
// code == "" => failed
if (code == "") {
this.testfunction()
} else {
console.log(code)
wx.chooseImage({
success(res) {
const tempFilePaths = res.tempFilePaths
console.log(tempFilePaths)
wx.uploadFile({
url: 'http://' + serverAddr + '/rcvImg', //仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'Img',
formData: {
'user': code
},
success(res) {
const data = res.data
console.log(data)
}
})
}
})
}
})
}
})