You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
442 lines
12 KiB
442 lines
12 KiB
<template>
|
|
<view class="content">
|
|
<!-- <tn-avatar class="icon tn-icon-calendar" size="xl"></tn-avatar> -->
|
|
<tn-list-view :card="true" unlined="all" class="listView">
|
|
<tn-list-cell class="listItem-1">
|
|
<view>Subject: {{ calendarInfo.Theme }}</view>
|
|
<view>Start: {{ calendarInfo.startTime }}</view>
|
|
<view>End: {{ calendarInfo.closeTime }}</view>
|
|
<view>Note: {{ calendarInfo.AbstractInfo }}</view>
|
|
<view>Address: {{ calendarInfo.PlaceInfo }}</view>
|
|
</tn-list-cell>
|
|
<tn-list-cell class="listItem">
|
|
<tn-grid align="center" :col="col">
|
|
<block>
|
|
<tn-grid-item class="toolItem" @click="addActivity()">
|
|
<view class="tn-icon-calendar"></view>
|
|
<view class="toolText">Add to events</view>
|
|
</tn-grid-item>
|
|
<tn-grid-item class="toolItem" @click="share()">
|
|
<view class="tn-icon-share-triangle"></view>
|
|
<view class="toolText">Share</view>
|
|
</tn-grid-item>
|
|
<tn-grid-item class="toolItem" @click="copyValue()">
|
|
<view class="tn-icon-copy-fill"></view>
|
|
<view class="toolText">Copy</view>
|
|
</tn-grid-item>
|
|
</block>
|
|
</tn-grid>
|
|
</tn-list-cell>
|
|
<!-- <view class="cutline"></view>
|
|
<tn-list-cell class="listItem-ad">我是谷歌ad部分</tn-list-cell> -->
|
|
<tn-list-cell class="listItemBottom">
|
|
<image :src="textImgUrl" class="buttomImg"/>
|
|
</tn-list-cell>
|
|
</tn-list-view>
|
|
<text class="bottomText" @click="jumpToFeedback()">Feedback & Suggestion</text>
|
|
|
|
<tn-modal v-model="showStarTip" :custom="true" :backgroundColor="startTipColor">
|
|
<view class="startTipContent">
|
|
<view slot="left" class="tn-icon tn-icon-about-fill">
|
|
<view class="starTipText">Do you like this app?</view>
|
|
</view>
|
|
<view slot="center" class="tn-icon tn-icon-about-fill">
|
|
<tn-rate v-model="starRateValue" :size="80" :allowHalf="false" activeColor="#0186FF"></tn-rate>
|
|
</view>
|
|
<view slot="right" class="tn-icon tn-icon-about-fill">
|
|
<tn-button :fontSize="50" margin="80rpx" height="100rpx" backgroundColor="#0186FF" fontColor="tn-color-white" @click="starTipSubmit()">submit</tn-button>
|
|
</view>
|
|
</view>
|
|
</tn-modal>
|
|
<tn-toast ref="toast"></tn-toast>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
// var calanderURL = "content://com.android.calendar/calendars";
|
|
// var calanderEventURL = "content://com.android.calendar/events";
|
|
// var calanderRemiderURL = "content://com.android.calendar/reminders";
|
|
// var calId; //日历账户id
|
|
import { openSqlite,executeSql,closedb,isTable,addSql} from "@/utils/database";
|
|
import permision from "@/js_sdk/wa-permission/permission.js"
|
|
import {addSchedule} from '@/uni_modules/vv-schedule'
|
|
export default {
|
|
data() {
|
|
return {
|
|
col: 3,
|
|
calendarInfo:{},
|
|
tableName: 'scan_code',
|
|
textImgUrl: '',
|
|
|
|
starRateValue: 5, //评分星星数量
|
|
showStarTip: false, //评分展示开关
|
|
startTipColor: '#706F6F', //评分弹窗背景色
|
|
startTipFontColor: '#fff' //评分文字色
|
|
}
|
|
},
|
|
async onLoad(option) {
|
|
console.log('onLoadOption',option)
|
|
let that = this;
|
|
//打开db
|
|
await that.openSqlite();
|
|
//判断是否存在表
|
|
await that.createTable();
|
|
//scan为写入,history为历史页面
|
|
if(option.category === 'scan'){
|
|
//获取初始化数据并写入db
|
|
await that.initData(option.data);
|
|
}else{
|
|
//查看历史页面
|
|
await that.getHistoryData(option.data);
|
|
}
|
|
},
|
|
onHide() {
|
|
let that = this;
|
|
that.closedb();
|
|
},
|
|
onShow() {
|
|
//uni.clearStorageSync();
|
|
},
|
|
onBackPress(e){
|
|
let that = this;
|
|
//判断评分弹窗条件是否达到要求
|
|
let starTipStatus = that.getStarTipStatus();
|
|
console.log('starTipStatus',starTipStatus)
|
|
if(starTipStatus === null || starTipStatus === ""){
|
|
//达到要求
|
|
that.showStarTip = true;
|
|
that.setStarTipStatus(false);
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
},
|
|
methods: {
|
|
|
|
//获取弹窗状态结果
|
|
getStarTipStatus(){
|
|
return uni.getStorageSync('starTipStatus');
|
|
},
|
|
|
|
//设置弹窗状态结果
|
|
setStarTipStatus(value){
|
|
uni.setStorageSync('starTipStatus', value);
|
|
},
|
|
|
|
//提交反馈
|
|
starTipSubmit(){
|
|
let that = this;
|
|
that.$refs.toast.show({
|
|
title: 'Success',
|
|
content: 'Thanks for feedback!',
|
|
icon: 'success',
|
|
duration: 3000
|
|
})
|
|
that.showStarTip = false;
|
|
//更改starTipStatus状态
|
|
that.setStarTipStatus(false);
|
|
},
|
|
|
|
//跳转到反馈页面
|
|
jumpToFeedback(){
|
|
uni.navigateTo({
|
|
url: '/pages/feedback/Feedback'
|
|
});
|
|
},
|
|
|
|
//添加活动
|
|
async addActivity(){
|
|
let that = this;
|
|
await addSchedule({
|
|
title: that.calendarInfo.Theme,
|
|
description: that.calendarInfo.AbstractInfo,
|
|
dtstart: new Date(that.calendarInfo.startTime).getTime(),
|
|
dtend: new Date(that.calendarInfo.closeTime).getTime(),
|
|
})
|
|
that.$refs.toast.show({
|
|
title: 'Success',
|
|
content: 'Add calander success!',
|
|
icon: 'success',
|
|
duration: 1500
|
|
})
|
|
|
|
},
|
|
|
|
//分享
|
|
share(){
|
|
uni.shareWithSystem({
|
|
summary: this.calendarInfo,
|
|
success(){
|
|
// 分享完成,请注意此时不一定是成功分享
|
|
},
|
|
fail(){
|
|
// 分享失败
|
|
uni.showToast({
|
|
title: 'share fail!'
|
|
});
|
|
}
|
|
})
|
|
},
|
|
|
|
//copy结果值
|
|
copyValue(){
|
|
let that = this;
|
|
//console.log('点击复制关键词事件',that.calendarInfo)
|
|
uni.setClipboardData({
|
|
data: JSON.stringify(that.calendarInfo),
|
|
success() {
|
|
uni.showToast({
|
|
title: 'copy success!',
|
|
});
|
|
}
|
|
})
|
|
},
|
|
|
|
|
|
|
|
// 打开数据库
|
|
async openSqlite(){
|
|
try{
|
|
let b = await openSqlite()
|
|
console.log('db打开了');
|
|
}catch(e){
|
|
console.error("open db error",e)
|
|
}
|
|
},
|
|
|
|
// 关闭数据库
|
|
closedb(){
|
|
try{
|
|
closedb()
|
|
console.log('db关闭了');
|
|
}catch(e){
|
|
console.error("close db error",e)
|
|
}
|
|
|
|
},
|
|
|
|
// 创建表
|
|
async createTable(){
|
|
let sql = this.createTableSql_outbound()
|
|
try{
|
|
let exist = await isTable(this.tableName)
|
|
console.log("表是否存在",exist)
|
|
if(!exist){
|
|
let res = await executeSql(sql)
|
|
console.log("新增表scancode",res)
|
|
}else{
|
|
console.log("表scancode已存在")
|
|
}
|
|
}catch(e){
|
|
uni.showToast({
|
|
title:"insert table error",
|
|
icon:"none"
|
|
})
|
|
console.error("新增表报错scancode",e)
|
|
}
|
|
},
|
|
|
|
//写入扫描记录
|
|
async writeToDb(type,params){
|
|
try{
|
|
let data = {
|
|
category: type,
|
|
content: params
|
|
}
|
|
let b = await addSql(this.tableName,data)
|
|
console.log("数据添加成功!")
|
|
}catch(e){
|
|
console.error("insert data error!",e)
|
|
}
|
|
},
|
|
|
|
//创建表语句
|
|
createTableSql_outbound(){
|
|
return "CREATE TABLE IF NOT EXISTS `scan_code` (" +
|
|
" `id` INTEGER PRIMARY KEY AUTOINCREMENT," +
|
|
" `category` varchar(50) DEFAULT NULL ," +
|
|
" `content` text DEFAULT NULL ," +
|
|
" `createTime` datetime DEFAULT CURRENT_TIMESTAMP ," +
|
|
" `updateTime` datetime DEFAULT NULL default(datetime('now','localtime'))" +
|
|
"); "
|
|
},
|
|
|
|
//加载数据
|
|
async initData(option){
|
|
//console.log('initoption',option)
|
|
let that = this;
|
|
let data = JSON.parse(option);
|
|
let insertData = {
|
|
AbstractInfo : data.AbstractInfo,
|
|
PlaceInfo: data.PlaceInfo,
|
|
Sponsor: data.Sponsor,
|
|
Theme: data.Theme,
|
|
Condition: data.Condition,
|
|
closeTime: data.closeTime.Year +'-'+ data.closeTime.Month +'-'+ data.closeTime.Day
|
|
+' '+ data.closeTime.Hours +':'+ data.closeTime.Minutes +':'+ data.closeTime.Seconds,
|
|
startTime: data.startTime.Year +'-'+ data.startTime.Month +'-'+ data.startTime.Day
|
|
+' '+ data.startTime.Hours +':'+ data.startTime.Minutes +':'+ data.startTime.Seconds,
|
|
imgUrl: data.imgUrl
|
|
}
|
|
that.calendarInfo = insertData;
|
|
that.textImgUrl = 'file://'+that.calendarInfo.imgUrl;
|
|
//写入db
|
|
await that.writeToDb("Calendar",that.calendarInfo);
|
|
},
|
|
|
|
//获取历史信息
|
|
async getHistoryData(params){
|
|
//console.log('historyparams',params)
|
|
let that = this;
|
|
const data = JSON.parse(params);
|
|
that.calendarInfo = data;
|
|
that.textImgUrl = 'file://'+that.calendarInfo.imgUrl;
|
|
},
|
|
|
|
// * 获取日历权限 *
|
|
getCalendarJurisdiction() {
|
|
return new Promise((resolve, reject) => {
|
|
plus.android.requestPermissions(['android.permission.READ_CALENDAR',
|
|
'android.permission.WRITE_CALENDAR'
|
|
],
|
|
function(e) {
|
|
if (e.deniedAlways.length > 0) { //权限被永久拒绝
|
|
// 弹出提示框解释为何需要定位权限,引导用户打开设置页面开启
|
|
console.log('Always Denied!!! ' + e.deniedAlways.toString());
|
|
reject({
|
|
data: -1,
|
|
message: "权限被永久拒绝了"
|
|
})
|
|
}
|
|
if (e.deniedPresent.length > 0) { //权限被临时拒绝
|
|
reject({
|
|
data: 0,
|
|
message: "权限被临时拒绝了"
|
|
})
|
|
// 弹出提示框解释为何需要定位权限,可再次调用plus.android.requestPermissions申请权限
|
|
console.log('Present Denied!!! ' + e.deniedPresent.toString());
|
|
}
|
|
if (e.granted.length > 0) { //权限被允许
|
|
//调用依赖获取定位权限的代码
|
|
resolve({
|
|
data: 1,
|
|
message: "ok"
|
|
})
|
|
}
|
|
})
|
|
})
|
|
},
|
|
|
|
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background-color: #1F222B;
|
|
height:100vh;
|
|
|
|
.listView{
|
|
z-index: 0;
|
|
position: relative;
|
|
width: 660rpx;
|
|
height: 1300rpx;
|
|
margin-top: 100rpx;
|
|
background-color: #1F222B;
|
|
overflow: auto;
|
|
|
|
.listItem-1{
|
|
margin-top: 120rpx;
|
|
background-color: #1F222B;
|
|
color: #fff;
|
|
//border: 2px solid green;
|
|
height: auto;
|
|
text-align: start;
|
|
}
|
|
|
|
.listItem{
|
|
//border: 2px solid yellow;
|
|
height: 160rpx;
|
|
//margin-top: 30px;
|
|
//padding-top: 30px;
|
|
width: 660rpx;
|
|
background-color: #1F222B;
|
|
color: #fff;
|
|
|
|
.toolItem{
|
|
//border: 2px solid red;
|
|
background-color: #1F222B;
|
|
font-size: 60rpx;
|
|
color: #8f8f94;
|
|
height: 120rpx;
|
|
text-align: center;
|
|
|
|
|
|
.toolText{
|
|
font-size: 24rpx;
|
|
color: #8f8f94;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
.listItem-ad{
|
|
background-color: #1F222B;
|
|
text-align: center;
|
|
color: #fff;
|
|
//border: 2px solid red;
|
|
height: 160rpx;
|
|
}
|
|
|
|
.listItemBottom{
|
|
height: 400rpx;
|
|
margin-top: 20rpx;
|
|
background-color: #1F222B;
|
|
color: #fff;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
|
|
.buttomImg{
|
|
width: 300rpx;
|
|
height: 300rpx;
|
|
}
|
|
}
|
|
}
|
|
// .icon{
|
|
// z-index: 1;
|
|
// position: absolute;
|
|
// margin-top: -620rpx;
|
|
// background-color: #3e444d;
|
|
// font-size: 120rpx;
|
|
// color: #fff;
|
|
// text-align: center;
|
|
// }
|
|
|
|
.bottomText{
|
|
color: #fff;
|
|
text-align: center;
|
|
font-size: 24rpx;
|
|
//margin-top: 40rpx;
|
|
margin-bottom: 120rpx;
|
|
}
|
|
.cutline{
|
|
border: 1px solid #8f8f94;
|
|
}
|
|
|
|
.starTipText{
|
|
color: #fff;
|
|
font-size: 48rpx;
|
|
}
|
|
|
|
.startTipContent{
|
|
margin-bottom: 30rpx;
|
|
}
|
|
}
|
|
</style>
|
|
|