Authored by 李进

初始化

Showing 76 changed files with 2204 additions and 0 deletions
<script>
export default {
onLaunch: function() {
console.log('App Launch')
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
<style>
/*每个页面公共css */
</style>
... ...
<template>
<view class="navigation" :style="{height: getNavigationHeight}">
<view class="back_btn" :style="{marginTop: statusHeight}" @click="backClick">
<image class="image" src="../static/navigation_back.png" mode="aspectFit"></image>
</view>
<view class="title" :style="{top: statusHeight}">{{title}}</view>
</view>
</template>
<script>
export default {
props: {
title: String
},
data() {
return {
}
},
computed: {
safeAreaInsets() {
return uni.getSystemInfoSync().safeAreaInsets.bottom
},
statusHeight() {
let device = uni.getSystemInfoSync();
return device.statusBarHeight + "px";
},
getNavigationHeight() {
var h = 0;
let device = uni.getSystemInfoSync();
let statusBarHeight = device.statusBarHeight;
h += 44;
return h + "px";
}
},
onLoad() {
},
methods: {
backClick() {
uni.navigateBack()
}
}
}
</script>
<style lang="scss" scoped>
.navigation {
display: flex;
flex-direction: row;
position: relative;
background: linear-gradient(to right, #D82222, #B81F1F);
// justify-content: center;
align-items: center;
.back_btn {
display: flex;
width: 44px;
height: 44px;
justify-content: center;
align-items: center;
.image {
width: 20px;
height: 20px;
}
}
.title {
display: flex;
// position: absolute;
top: 0;
left: 50%;
right: 50%;
height: 44px;
width: 100%;
margin-right: 44px;
justify-content: center;
align-items: center;
flex-direction: row;
color: #FFE8C3;
}
}
</style>
\ No newline at end of file
... ...
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<script>
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
CSS.supports('top: constant(a)'))
document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script>
<title></title>
<!--preload-links-->
<!--app-context-->
</head>
<body>
<div id="app"><!--app-html--></div>
<script type="module" src="/main.js"></script>
</body>
</html>
... ...
// const ApiRootUrl = 'http://camp.cultivationhit.com'; // 测试
// const ApiRootUrl = 'http://172.27.254.247:9928'; // 测试
// const ApiRootUrl = 'https://cetustalk.harbourmooc.com/api'; // 正式
// const ApiRootUrl = "http://39.99.131.18:9253"; // const ApiRootUrl = 'http://192.168.0.153:10087/zhongkehaobo/';
const ApiRootUrl = "https://app.dyguoxin.com/api";
// request get 请求
const getData = (url, param) => {
return new Promise((resolve, reject) => {
uni.request({
url: ApiRootUrl + url,
method: 'GET',
header: {
'content-type': 'application/json' // 默认值,返回的数据设置为json数组格式
/*'Authorization': wx.getStorageSync("tokenHead")+' '+wx.getStorageSync("token"),
'Source':'wx'*/
},
data: param,
success(res) {
/*if (res.data.code!=200){
wx.showToast({
title: res.data.message,
icon: 'none',
duration: 2000
})
}
resolve(res.data)*/
if (res && res.data && res.data.code && res.data.code == 200) {
resolve(res.data);
} else {
// uni.showToast({
// title: res.data.msg,
// icon: 'none',
// duration: 2000
// });
resolve(res.data);
}
},
fail(err) {
reject(err);
}
});
});
}; // request post 请求 Welcome1
const postData = (url, param) => {
return new Promise((resolve, reject) => {
uni.request({
url: ApiRootUrl + url,
method: 'POST',
header: {
'content-type': 'application/json' // 默认值,返回的数据设置为json数组格式
/* 'Authorization': wx.getStorageSync("tokenHead")+' '+wx.getStorageSync("token"),
'Source':'wx'*/
},
data: param,
success(res) {
//console.log(res)
resolve(res.data);
},
fail(err) {
console.log('fail',err)
reject(err);
}
});
});
}; //获取阿里OSS
const getAliOss = url => {
return new Promise((resolve, reject) => {
uni.request({
url: ApiRootUrl + url,
method: 'get',
success(res) {
resolve(res.data);
},
fail(err) {
reject(err);
}
});
});
}; // request post 请求 Welcome1
const getloninData = (url, param) => {
return new Promise((resolve, reject) => {
uni.request({
url: ApiRootUrl + url,
method: 'GET',
header: {
'content-type': 'application/json' // 默认值,返回的数据设置为json数组格式
},
data: param,
success(res) {
//console.log(res)
resolve(res.data);
},
fail(err) {
//console.log(err)
reject(err);
}
});
});
};
const postloninData = (url, param) => {
return new Promise((resolve, reject) => {
uni.request({
url: ApiRootUrl + url,
method: 'POST',
header: {
'content-type': 'application/json' // 默认值,返回的数据设置为json数组格式
},
data: param,
success(res) {
// console.log('success',res)
resolve(res.data);
},
fail(err) {
// console.log('fail',err)
reject(err);
}
});
});
}; // loading加载提示
const showLoading = () => {
return new Promise((resolve, reject) => {
uni.showLoading({
title: '加载中...',
mask: true,
success(res) {
uni.showLoading();
resolve(res);
},
fail(err) {
reject(err);
}
});
});
}; // 关闭loading
const hideLoading = () => {
return new Promise(resolve => {
uni.hideLoading();
resolve();
});
};
module.exports = {
ApiRootUrl,
getData,
postData,
showLoading,
hideLoading,
getloninData,
postloninData,
getAliOss
};
\ No newline at end of file
... ...
const app = getApp();
const api = app.globalData.api;
// 检查版本更新 2iOS 1安卓
export function checkVersion(type) {
return api.getData('/app/common/getVersion/' + type)
}
/// eula:用户协议 pp:隐私政策 help:使用帮助
export function getPrivacy(type) {
return api.getData('/app/common/getProtocol/' + type)
}
... ...
import deepMerge from '../vendors/deep-merge.js';
import deepClone from '../vendors/clone.js';
/**
* 格式化时间
* @param {Datetime} source 时间对象
* @param {String} format 格式
* @return {String} 格式化过后的时间
*/
const formatDate = (source, format) => {
const o = {
'M+': source.getMonth() + 1,
// 月份
'd+': source.getDate(),
// 日
'H+': source.getHours(),
// 小时
'm+': source.getMinutes(),
// 分
's+': source.getSeconds(),
// 秒
'q+': Math.floor((source.getMonth() + 3) / 3),
// 季度
'f+': source.getMilliseconds() // 毫秒
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (source.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for (let k in o) {
if (new RegExp('(' + k + ')').test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
}
}
return format;
};
const smartDate = originDate => {
let nowDate = new Date(),
isToday = false,
isYesterday = false,
isPastYear = false,
isPreviousYear = false,
originYear,
originMonth,
originDay,
diffMinute,
formatedDate;
originDate = new Date(originDate * 1000);
diffMinute = Math.round((nowDate.getTime() - originDate.getTime()) / (1000 * 60));
originYear = originDate.getFullYear();
originMonth = originDate.getMonth() + 1;
originDay = originDate.getDate();
if (diffMinute <= nowDate.getHours() * 60) {
isToday = true;
}
if (nowDate.getDate() - originDay == 1) {
isYesterday = true;
}
if (nowDate.getFullYear() - originYear == 1) {
isPreviousYear = true;
} else if (nowDate.getFullYear() - originYear > 1) {
isPastYear = true;
}
if (diffMinute < 30 && isToday) {
formatedDate = '刚刚';
} else if (diffMinute < 60 && isToday) {
formatedDate = `${diffMinute} 分钟前`;
} else if (diffMinute < 60 * 24 && isToday) {
formatedDate = `${Math.floor(diffMinute / 60)} 小时前`;
} else if (diffMinute < 60 * 24 * 2 && isYesterday) {
formatedDate = '昨天';
} else if (isPreviousYear) {
formatedDate = '去年';
} else if (isPastYear) {
formatedDate = `${originYear} 年`;
} else {
formatedDate = `${originMonth} ${originDay} 日`;
}
return formatedDate;
};
const isObject = val => {
return val != null && typeof val === 'object' && Array.isArray(val) === false;
};
const isEmptyObject = obj => {
return Object.keys(obj).length == 0 && obj.constructor == Object;
};
const assign = function (target) {
// We must check against these specific cases.
if (target === undefined || target === null) {
throw new TypeError('Cannot convert undefined or null to object');
}
var output = Object(target);
for (var index = 1; index < arguments.length; index++) {
var source = arguments[index];
if (source !== undefined && source !== null) {
for (var nextKey in source) {
if (source.hasOwnProperty(nextKey)) {
output[nextKey] = source[nextKey];
}
}
}
}
return output;
};
const merge = (oldObj, newObj, genre = 'override') => {
let arrayMerge = (destArr, srcArr) => {
switch (genre) {
case 'concat':
return destArr.concat(srcArr);
default:
return srcArr;
}
};
return deepMerge(oldObj, newObj, {
arrayMerge: arrayMerge
});
};
const clone = originData => deepClone(originData);
const updateItemInArray = (array, itemId, updateItemCallback) => {
const updatedArray = array.map(item => {
if (item.id !== itemId) {
return item;
}
return updateItemCallback(item);
});
return updatedArray;
};
const trim = s => {
return s.replace(/(^\s*)|(\s*$)/g, "");
};
const ArrayIndexOf = (arr, val) => {
for (let i = 0; i < arr.length; i++) {
if (arr[i] == val) return i;
}
return -1;
};
const ArrayRemove = (arr, val) => {
const index = ArrayIndexOf(arr, val);
if (index > -1) {
arr.splice(index, 1);
}
return arr;
}; //坐标系之间的转换
const coordinateChange = (lng, lat) => {
//定义一些常量
const x_PI = 3.14159265358979324 * 3000.0 / 180.0;
const PI = 3.1415926535897932384626;
const a = 6378245.0;
const ee = 0.00669342162296594323;
const transformlat = (lng, lat) => {
const lat1 = +lat;
const lng1 = +lng;
let ret = -100.0 + 2.0 * lng1 + 3.0 * lat1 + 0.2 * lat1 * lat1 + 0.1 * lng1 * lat1 + 0.2 * Math.sqrt(Math.abs(lng1));
ret += (20.0 * Math.sin(6.0 * lng1 * PI) + 20.0 * Math.sin(2.0 * lng1 * PI)) * 2.0 / 3.0;
ret += (20.0 * Math.sin(lat1 * PI) + 40.0 * Math.sin(lat1 / 3.0 * PI)) * 2.0 / 3.0;
ret += (160.0 * Math.sin(lat1 / 12.0 * PI) + 320 * Math.sin(lat1 * PI / 30.0)) * 2.0 / 3.0;
return ret;
};
const transformlng = (lng, lat) => {
const lat1 = +lat;
const lng1 = +lng;
let ret = 300.0 + lng1 + 2.0 * lat1 + 0.1 * lng1 * lng1 + 0.1 * lng1 * lat1 + 0.1 * Math.sqrt(Math.abs(lng1));
ret += (20.0 * Math.sin(6.0 * lng1 * PI) + 20.0 * Math.sin(2.0 * lng1 * PI)) * 2.0 / 3.0;
ret += (20.0 * Math.sin(lng1 * PI) + 40.0 * Math.sin(lng1 / 3.0 * PI)) * 2.0 / 3.0;
ret += (150.0 * Math.sin(lng1 / 12.0 * PI) + 300.0 * Math.sin(lng1 / 30.0 * PI)) * 2.0 / 3.0;
return ret;
};
const lat2 = +lat;
const lng2 = +lng;
let dlat = transformlat(lng2 - 105.0, lat2 - 35.0);
let dlng = transformlng(lng2 - 105.0, lat2 - 35.0);
let radlat = lat2 / 180.0 * PI;
let magic = Math.sin(radlat);
magic = 1 - ee * magic * magic;
const sqrtmagic = Math.sqrt(magic);
dlat = dlat * 180.0 / (a * (1 - ee) / (magic * sqrtmagic) * PI);
dlng = dlng * 180.0 / (a / sqrtmagic * Math.cos(radlat) * PI);
let mglat = lat2 + dlat;
let mglng = lng2 + dlng;
mglat = +mglat;
mglng = +mglng;
const z = Math.sqrt(mglng * mglng + mglat * mglat) + 0.00002 * Math.sin(mglat * x_PI);
const theta = Math.atan2(mglat, mglng) + 0.000003 * Math.cos(mglng * x_PI);
const bd_lng = Number((z * Math.cos(theta) + 0.0065).toString().match(/^\d+(?:\.\d{0,5})?/));
const bd_lat = Number((z * Math.sin(theta) + 0.0065).toString().match(/^\d+(?:\.\d{0,5})?/));
return [bd_lng, bd_lat];
};
module.exports = {
formatDate,
// 格式化时间
smartDate,
// 美化时间
isObject,
// 是不是对象
isEmptyObject,
// 是不是空对象
assign,
// 深复制
merge,
// 拼接 override 覆盖 concat 连接
clone,
// 克隆
updateItemInArray,
// 更新数组里某一项
trim,
// 去除前后空格
ArrayIndexOf,
// 数组里查找元素位置
ArrayRemove,
// 删除数组里的元素
coordinateChange //坐标系之间的转换
};
\ No newline at end of file
... ...
import App from './App'
// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
// #endif
// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
const app = createSSRApp(App)
return {
app
}
}
// #endif
\ No newline at end of file
... ...
{
"name" : "download",
"appid" : "__UNI__E60B92C",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
"transformPx" : false,
/* 5+App特有相关 */
"app-plus" : {
"usingComponents" : true,
"nvueStyleCompiler" : "uni-app",
"compilerVersion" : 3,
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"waiting" : true,
"autoclose" : true,
"delay" : 0
},
/* 模块配置 */
"modules" : {},
/* 应用发布信息 */
"distribute" : {
/* android打包配置 */
"android" : {
"permissions" : [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
/* ios打包配置 */
"ios" : {},
/* SDK配置 */
"sdkConfigs" : {}
}
},
/* 快应用特有相关 */
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
"appid" : "",
"setting" : {
"urlCheck" : false
},
"usingComponents" : true
},
"mp-alipay" : {
"usingComponents" : true
},
"mp-baidu" : {
"usingComponents" : true
},
"mp-toutiao" : {
"usingComponents" : true
},
"uniStatistics" : {
"enable" : false
},
"vueVersion" : "3"
}
... ...
{
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
{
"path": "pages/home",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "uni-app"
}
},
{
"path": "pages/function",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "产品功能"
}
},
{
"path": "pages/privacy",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "隐私政策"
}
},
{
"path": "pages/permission",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "应用权限"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
},
"uniIdRouter": {}
}
... ...
<template>
<view class="page-home">
<navigation-bar :title="'产品功能'"/>
<view class="content">
<view class="title">你写我记是一款基于传统书写的智能笔记类APP,用户可根据自己习惯自由书写,书写内容实时呈现在你写我记APP上,线下线上任务同步进行使得工作学习效率更高。</view>
<view class="list_item" v-for="(item,index) in list" :key="index">
<view class="image_wrapper">
<image class="image" :src="item.icon" mode="aspectFit"></image>
</view>
<view class="des_wrapper" :style="{ borderColor: index % 2 == 0 ? '#D65656' : '#A5A5A5' }">{{item.title}}</view>
</view>
</view>
</view>
</template>
<script>
import navigationBar from '../components/navigationBar.vue';
export default {
components: {
navigationBar
},
data() {
return {
list: [{title: "实体纸笔,传统书写", icon: "../static/function_list_1.png"},
{title: "蓝牙传输,一键连接", icon: "../static/function_list_2.png"},
{title: "线上线下,同步展示", icon: "../static/function_list_3.png"},
{title: "笔迹色彩,随心变换", icon: "../static/function_list_4.png"},
{title: "自由擦写,分类保存", icon: "../static/function_list_5.png"}
]
}
},
onLoad() {
},
methods: {
getClass(index) {
return index % 2 == 0 ? "" : "";
}
}
}
</script>
<style lang="scss" scoped>
.page-home {
display: flex;
position: relative;
flex-direction: column;
width: 100%;
height:100vh;
background-color: #F5F5F5;
.content {
display: flex;
flex-direction: column;
// align-items: center;
// justify-content: center;
position: relative;
width: 100%;
.title {
display: flex;
margin-top: 20px;
margin-left: 20px;
margin-right: 20px;
flex-wrap: wrap;
line-height: 24px;
font-size: 14px;
color: #1F2229;
}
.list_item {
display: flex;
position: relative;
flex-direction: column;
// justify-content: center;
align-items: center;
margin-top: 30px;
.image_wrapper {
display: flex;
position: absolute;
top: 0;
left: 50%;
right: 50%;
width: 32px;
height: 32px;
.image {
width: 32px;
height: 32px;
}
}
.des_wrapper {
display: flex;
justify-content: center;
align-items: center;
// border-color: #D65656;
border-radius: 8px;
border-style: solid;
border-width: 1px;
width: 80%;
height: 50px;
margin-top: 20px;
font-size: 16px;
color: #2D2D2D;
font-weight: 500;
}
}
}
}
</style>
\ No newline at end of file
... ...
<template>
<view class="page-home">
<view class="top_bg"></view>
<view class="content">
<view class="close_wrapper">
<image class="image" src="../static/download_close.png" mode="aspectFit"></image>
</view>
<view class="title">app下载</view>
<view class="logo_wrapper">
<image class="image" src="/static/logo.png" mode="aspectFit"></image>
</view>
<view class="appname_wrapper">
<image class="image" src="../static/download_title.png" mode="aspectFit"></image>
</view>
<view class="des_wrapper">开启智慧党建学习之旅</view>
<view class="download_type_item" @click="gotoDownloadIOS">
<view class="icon_wrapper">
<image class="image" src="/static/home_apple.png" mode="aspectFit"></image>
<view class="item_title">iOS版</view>
</view>
<view class="item_version">v1.0.1</view>
</view>
<view class="download_type_item" @click="gotoDownloadAndroid">
<view class="icon_wrapper">
<image class="image" src="/static/home_anzhuo.png" mode="aspectFit"></image>
<view class="item_title">Android版</view>
</view>
<view class="item_version">v1.0.1</view>
</view>
<!-- <view class="download_normal">
<view class="download_type_item" style="justify-content: center;">立即下载</view>
<view class="download_version">v1.0.1</view>
</view> -->
</view>
<view class="bottom_wrapper">
<view class="bottom_item_wrapper">
<view class="bottom_item" @click="goto(1)">应用权限</view>
<view class="line"></view>
<view class="bottom_item" @click="goto(2)">隐私政策</view>
<view class="line"></view>
<view class="bottom_item" @click="goto(3)">产品功能</view>
</view>
<view class="bottom_title">开发者:大有国信(北京)技术有限公司</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello',
apkUrl: "https://app.dyguoxin.com/android/smartPen.apk",
iosURl: "https://testflight.apple.com/join/2etMUNQS",
}
},
onLoad() {
},
methods: {
gotoDownloadAndroid() {
if (process.env.UNI_PLATFORM === 'h5') {
// 这里是H5环境下使用的代码
console.error('h5')
window.location.href = this.apkUrl;
} else {
// 这里是APP环境下使用的代码
this.redirectToStore()
}
},
gotoDownloadIOS() {
if (process.env.UNI_PLATFORM === 'h5') {
// 这里是H5环境下使用的代码
window.location.href = this.iosURl;
} else {
// 这里是APP环境下使用的代码
this.redirectToStore()
}
},
safeAreaInsets() {
return uni.getSystemInfoSync().safeAreaInsets.bottom
},
redirectToStore() {
let platform = plus.os.name.toLocaleLowerCase();
if (platform.toLowerCase() === 'android') {
if (this.apkUrl) {
// 如果有提供的APK链接,则尝试直接下载并安装
plus.runtime.openURL(this.apkUrl);
} else {
// 否则,打开Google Play或其他市场的链接
plus.runtime.openURL(`market://details?id=${appId}`);
}
} else if (platform.toLowerCase() === 'ios') {
plus.runtime.openURL(this.iosURl);
}
},
//全屏高
getCurrentHeight() {
var h = 0;
let device = uni.getSystemInfoSync();
let screenHeight = device.screenHeight;
let statusBarHeight = device.statusBarHeight;
let safeAreaInsets = device.safeAreaInsets.bottom
h = screenHeight - statusBarHeight;
h -= 44;
h -= 60;
if (isLoadMore.value) {
h -= 40;
}
return h - safeAreaInsets + "px";
},
goto(index) {
var url = ""
if (index == 1) {
url = "/pages/permission"
} else if (index == 2) {
url = "/pages/privacy"
} else {
url = "/pages/function"
}
uni.navigateTo({
url: url
})
}
}
}
</script>
<style lang="scss" scoped>
.page-home {
display: flex;
position: relative;
flex-direction: column;
justify-content: space-between;
width: 100%;
height:100vh;
background-color: #F5F5F5;
.top_bg {
display: flex;
position: absolute;
width: 100%;
height: 310px;
top: 0;
left: 0;
background: linear-gradient(to bottom, #BC1212, #f5f5f5);
z-index: 0;
}
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
position: relative;
flex-direction: column;
width: 100%;
.title {
margin-top: 54px;
color: #FFE8C3;
font-size: 17px;
}
.logo_wrapper {
margin-top: 60px;
display: flex;
justify-content: center;
align-items: center;
width: 72px;
height: 72px;
background: #ffffff;
border-radius: 10px;
.image {
width: 42px;
height: 47px;
}
}
.appname_wrapper {
display: flex;
justify-content: center;
align-items: center;
width: 88px;
height: 20px;
margin-top: 22px;
.image {
width: 88px;
height: 20px;
}
}
.des_wrapper {
margin-top: 21px;
font-size: 16px;
color: #757373;
}
.close_wrapper {
display: flex;
position: absolute;
top: 52px;
left: 10px;
width: 44px;
height: 44px;
.image {
width: 20px;
height: 20px;
}
}
.download_type_item {
display: flex;
flex-direction: row;
justify-content: space-between;
border-radius: 10px;
height: 60px;
width: 60%;
background: linear-gradient(to right, #D82222, #B81F1F);
margin-top: 20px;
align-items: center;
color: #ffffff;
.icon_wrapper {
display: flex;
flex-direction: row;
margin-left: 19px;
.image {
width: 20px;
height: 24px;
}
.item_title {
color: #ffffff;
margin-left: 14px;
}
}
.item_version {
color: #F3AFAF;
margin-right: 14px;
}
}
.download_normal {
display: flex;
flex-direction: column;
width: 100%;
align-items: center;
.download_version {
color: #D67C7C;
margin-top: 10px;
}
}
}
.bottom_wrapper {
display: flex;
width: 100%;
flex-direction: column;
margin-bottom: 30px;
.bottom_item_wrapper {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
margin-bottom: 11px;
.bottom_item {
color: #626B76;
font-size: 12px;
}
.line {
width: 1px;
height: 10px;
background-color: #626B76;
margin-left: 8px;
margin-right: 8px;
}
}
.bottom_title {
display: flex;
width: 100%;
flex-direction: column;
align-items: center;
color: #626B76;
font-size: 12px;
}
}
}
</style>
\ No newline at end of file
... ...
<template>
<view class="content">
<image class="logo" src="/static/logo.png"></image>
<view class="text-area">
<text class="title">{{title}}</text>
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
},
methods: {
}
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {
display: flex;
justify-content: center;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
</style>
... ...
<template>
<view class="page-home">
<navigation-bar :title="'应用权限'"/>
<view class="content">
<view class="list_item" v-for="(item,index) in list" :key="index">
<view class="image_wrapper">
<image class="image" :src="item.icon" mode="aspectFit"></image>
</view>
<view class="text_wrapper">
<view class="title">{{item.title}}</view>
<view class="des">{{item.des}}</view>
</view>
</view>
</view>
</view>
</template>
<script>
import navigationBar from '../components/navigationBar.vue';
export default {
data() {
return {
list: [{title: "网络权限", icon: "../static/permission_1.png", des: "允许查看、访问网络连接"},
{title: "蓝牙权限 ", icon: "../static/permission_2.png", des: "允许使用蓝牙,允许发现和配对新的蓝牙设备,允许程序连接配对过的蓝牙设备"},
{title: "储存权限", icon: "../static/permission_3.png", des: "允许查看、使用内部储存,上传/下载笔记相关的文字图片"},
{title: "相机权限", icon: "../static/permission_4.png", des: "允许使用摄像头,拍照设置用户头像"}
]
}
},
components: {
navigationBar
},
onLoad() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.page-home {
display: flex;
position: relative;
flex-direction: column;
width: 100%;
height:100vh;
background-color: #F5F5F5;
.content {
display: flex;
flex-direction: column;
position: relative;
width: 100%;
.list_item {
display: flex;
position: relative;
flex-direction: row;
justify-content: space-between;
margin-top: 30px;
.image_wrapper {
display: flex;
margin-left: 24px;
width: 56px;
height: 56px;
.image {
width: 56px;
height: 56px;
}
}
.text_wrapper {
display: flex;
flex: 1;
flex-direction: column;
margin-left: 16px;
margin-right: 26px;
.title {
display: flex;
height: 25px;
// justify-content: center;
font-size: 18px;
color: #2D2D2D;
font-weight: 500;
}
.des {
font-size: 14px;
color: #626B76;
flex-wrap: wrap;
margin-top: 8px;
line-height: 20px;
}
}
}
}
}
</style>
\ No newline at end of file
... ...
<template>
<view class="page-home">
<navigation-bar :title="'隐私政策'"/>
<view class="content">
</view>
</view>
</template>
<script>
import navigationBar from '../components/navigationBar.vue';
import * as API_download from "@/libs/download.js";
export default {
components: {
navigationBar
},
data() {
return {
}
},
onLoad() {
this.requestPrivacy()
},
methods: {
requestPrivacy() {
// API_download.getPrivacy("pp").then((res) => {
// console.log("getPrivacy", res)
// }).catch((error) => {
// console.log(error)
// })
}
}
}
</script>
<style lang="scss" scoped>
.page-home {
display: flex;
position: relative;
flex-direction: column;
justify-content: space-between;
width: 100%;
height:100vh;
background-color: #F5F5F5;
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
position: relative;
flex-direction: column;
width: 100%;
}
}
</style>
... ...
uni.addInterceptor({
returnValue (res) {
if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) {
return res;
}
return new Promise((resolve, reject) => {
res.then((res) => {
if (!res) return resolve(res)
return res[0] ? reject(res[0]) : resolve(res[1])
});
});
},
});
\ No newline at end of file
... ...
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
$uni-color-primary: #007aff;
$uni-color-success: #4cd964;
$uni-color-warning: #f0ad4e;
$uni-color-error: #dd524d;
/* 文字基本颜色 */
$uni-text-color:#333;//基本色
$uni-text-color-inverse:#fff;//反色
$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
$uni-text-color-placeholder: #808080;
$uni-text-color-disable:#c0c0c0;
/* 背景颜色 */
$uni-bg-color:#ffffff;
$uni-bg-color-grey:#f8f8f8;
$uni-bg-color-hover:#f1f1f1;//点击状态颜色
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
/* 边框颜色 */
$uni-border-color:#c8c7cc;
/* 尺寸变量 */
/* 文字尺寸 */
$uni-font-size-sm:12px;
$uni-font-size-base:14px;
$uni-font-size-lg:16px;
/* 图片尺寸 */
$uni-img-size-sm:20px;
$uni-img-size-base:26px;
$uni-img-size-lg:40px;
/* Border Radius */
$uni-border-radius-sm: 2px;
$uni-border-radius-base: 3px;
$uni-border-radius-lg: 6px;
$uni-border-radius-circle: 50%;
/* 水平间距 */
$uni-spacing-row-sm: 5px;
$uni-spacing-row-base: 10px;
$uni-spacing-row-lg: 15px;
/* 垂直间距 */
$uni-spacing-col-sm: 4px;
$uni-spacing-col-base: 8px;
$uni-spacing-col-lg: 12px;
/* 透明度 */
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
/* 文章场景相关 */
$uni-color-title: #2C405A; // 文章标题颜色
$uni-font-size-title:20px;
$uni-color-subtitle: #555555; // 二级标题颜色
$uni-font-size-subtitle:26px;
$uni-color-paragraph: #3F536E; // 文章段落颜色
$uni-font-size-paragraph:15px;
... ...
{
"hash": "05be0357",
"configHash": "19a5217b",
"lockfileHash": "218b67e7",
"browserHash": "b372db73",
"optimized": {},
"chunks": {}
}
\ No newline at end of file
... ...
"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const common_vendor = require("./common/vendor.js");
if (!Math) {
"./pages/home.js";
"./pages/function.js";
"./pages/privacy.js";
"./pages/permission.js";
}
const _sfc_main = {
onLaunch: function() {
console.log("App Launch");
},
onShow: function() {
console.log("App Show");
},
onHide: function() {
console.log("App Hide");
}
};
function createApp() {
const app = common_vendor.createSSRApp(_sfc_main);
return {
app
};
}
createApp().app.mount("#app");
exports.createApp = createApp;
... ...
{
"pages": [
"pages/home",
"pages/function",
"pages/privacy",
"pages/permission"
],
"window": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
},
"usingComponents": {}
}
\ No newline at end of file
... ...
/*每个页面公共css */
page{--status-bar-height:25px;--top-window-height:0px;--window-top:0px;--window-bottom:0px;--window-left:0px;--window-right:0px;--window-magin:0px}[data-c-h="true"]{display: none !important;}
\ No newline at end of file
... ...
"use strict";
const _imports_0$1 = "/static/download_close.png";
const _imports_1 = "/static/logo.png";
const _imports_2 = "/static/download_title.png";
const _imports_3 = "/static/home_apple.png";
const _imports_4 = "/static/home_anzhuo.png";
const _imports_0 = "/static/navigation_back.png";
exports._imports_0 = _imports_0$1;
exports._imports_0$1 = _imports_0;
exports._imports_1 = _imports_1;
exports._imports_2 = _imports_2;
exports._imports_3 = _imports_3;
exports._imports_4 = _imports_4;
... ...
This diff could not be displayed because it is too large.
"use strict";
const common_vendor = require("../common/vendor.js");
const common_assets = require("../common/assets.js");
const _sfc_main = {
props: {
title: String
},
data() {
return {};
},
computed: {
safeAreaInsets() {
return common_vendor.index.getSystemInfoSync().safeAreaInsets.bottom;
},
statusHeight() {
let device = common_vendor.index.getSystemInfoSync();
return device.statusBarHeight + "px";
},
getNavigationHeight() {
var h = 0;
let device = common_vendor.index.getSystemInfoSync();
device.statusBarHeight;
h += 44;
return h + "px";
}
},
onLoad() {
},
methods: {
backClick() {
common_vendor.index.navigateBack();
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_assets._imports_0$1,
b: $options.statusHeight,
c: common_vendor.o((...args) => $options.backClick && $options.backClick(...args)),
d: common_vendor.t($props.title),
e: $options.statusHeight,
f: $options.getNavigationHeight
};
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-d53d6386"]]);
wx.createComponent(Component);
... ...
{
"component": true,
"usingComponents": {}
}
\ No newline at end of file
... ...
<view class="navigation data-v-d53d6386" style="{{'height:' + f}}"><view class="back_btn data-v-d53d6386" style="{{'margin-top:' + b}}" bindtap="{{c}}"><image class="image data-v-d53d6386" src="{{a}}" mode="aspectFit"></image></view><view class="title data-v-d53d6386" style="{{'top:' + e}}">{{d}}</view></view>
\ No newline at end of file
... ...
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.navigation.data-v-d53d6386 {
display: flex;
flex-direction: row;
position: relative;
background: linear-gradient(to right, #D82222, #B81F1F);
align-items: center;
}
.navigation .back_btn.data-v-d53d6386 {
display: flex;
width: 44px;
height: 44px;
justify-content: center;
align-items: center;
}
.navigation .back_btn .image.data-v-d53d6386 {
width: 20px;
height: 20px;
}
.navigation .title.data-v-d53d6386 {
display: flex;
top: 0;
left: 50%;
right: 50%;
height: 44px;
width: 100%;
margin-right: 44px;
justify-content: center;
align-items: center;
flex-direction: row;
color: #FFE8C3;
}
\ No newline at end of file
... ...
"use strict";
const app = getApp();
app.globalData.api;
... ...
"use strict";
const common_vendor = require("../common/vendor.js");
const navigationBar = () => "../components/navigationBar.js";
const _sfc_main = {
components: {
navigationBar
},
data() {
return {
list: [
{ title: "实体纸笔,传统书写", icon: "../static/function_list_1.png" },
{ title: "蓝牙传输,一键连接", icon: "../static/function_list_2.png" },
{ title: "线上线下,同步展示", icon: "../static/function_list_3.png" },
{ title: "笔迹色彩,随心变换", icon: "../static/function_list_4.png" },
{ title: "自由擦写,分类保存", icon: "../static/function_list_5.png" }
]
};
},
onLoad() {
},
methods: {
getClass(index) {
return index % 2 == 0 ? "" : "";
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.f($data.list, (item, index, i0) => {
return {
a: item.icon,
b: common_vendor.t(item.title),
c: index % 2 == 0 ? "#D65656" : "#A5A5A5",
d: index
};
})
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-6d5a3fba"]]);
wx.createPage(MiniProgramPage);
... ...
{
"navigationStyle": "custom",
"navigationBarTitleText": "产品功能",
"usingComponents": {}
}
\ No newline at end of file
... ...
<view class="page-home data-v-6d5a3fba"><navigation-bar class="data-v-6d5a3fba" title="{{'产品功能'}}"/><view class="content data-v-6d5a3fba"><view class="title data-v-6d5a3fba">你写我记是一款基于传统书写的智能笔记类APP,用户可根据自己习惯自由书写,书写内容实时呈现在你写我记APP上,线下线上任务同步进行使得工作学习效率更高。</view><view wx:for="{{a}}" wx:for-item="item" wx:key="d" class="list_item data-v-6d5a3fba"><view class="image_wrapper data-v-6d5a3fba"><image class="image data-v-6d5a3fba" src="{{item.a}}" mode="aspectFit"></image></view><view class="des_wrapper data-v-6d5a3fba" style="{{'border-color:' + item.c}}">{{item.b}}</view></view></view></view>
\ No newline at end of file
... ...
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.page-home.data-v-6d5a3fba {
display: flex;
position: relative;
flex-direction: column;
width: 100%;
height: 100vh;
background-color: #F5F5F5;
}
.page-home .content.data-v-6d5a3fba {
display: flex;
flex-direction: column;
position: relative;
width: 100%;
}
.page-home .content .title.data-v-6d5a3fba {
display: flex;
margin-top: 20px;
margin-left: 20px;
margin-right: 20px;
flex-wrap: wrap;
line-height: 24px;
font-size: 14px;
color: #1F2229;
}
.page-home .content .list_item.data-v-6d5a3fba {
display: flex;
position: relative;
flex-direction: column;
align-items: center;
margin-top: 30px;
}
.page-home .content .list_item .image_wrapper.data-v-6d5a3fba {
display: flex;
position: absolute;
top: 0;
left: 50%;
right: 50%;
width: 32px;
height: 32px;
}
.page-home .content .list_item .image_wrapper .image.data-v-6d5a3fba {
width: 32px;
height: 32px;
}
.page-home .content .list_item .des_wrapper.data-v-6d5a3fba {
display: flex;
justify-content: center;
align-items: center;
border-radius: 8px;
border-style: solid;
border-width: 1px;
width: 80%;
height: 50px;
margin-top: 20px;
font-size: 16px;
color: #2D2D2D;
font-weight: 500;
}
\ No newline at end of file
... ...
"use strict";
const common_vendor = require("../common/vendor.js");
const common_assets = require("../common/assets.js");
const _sfc_main = {
data() {
return {
title: "Hello",
apkUrl: "https://app.dyguoxin.com/android/smartPen.apk",
iosURl: "https://testflight.apple.com/join/2etMUNQS"
};
},
onLoad() {
},
methods: {
gotoDownloadAndroid() {
this.redirectToStore();
},
gotoDownloadIOS() {
this.redirectToStore();
},
safeAreaInsets() {
return common_vendor.index.getSystemInfoSync().safeAreaInsets.bottom;
},
redirectToStore() {
let platform = plus.os.name.toLocaleLowerCase();
if (platform.toLowerCase() === "android") {
if (this.apkUrl) {
plus.runtime.openURL(this.apkUrl);
} else {
plus.runtime.openURL(`market://details?id=${appId}`);
}
} else if (platform.toLowerCase() === "ios") {
plus.runtime.openURL(this.iosURl);
}
},
//全屏高
getCurrentHeight() {
var h = 0;
let device = common_vendor.index.getSystemInfoSync();
let screenHeight = device.screenHeight;
let statusBarHeight = device.statusBarHeight;
let safeAreaInsets = device.safeAreaInsets.bottom;
h = screenHeight - statusBarHeight;
h -= 44;
h -= 60;
if (isLoadMore.value) {
h -= 40;
}
return h - safeAreaInsets + "px";
},
goto(index) {
var url = "";
if (index == 1) {
url = "/pages/permission";
} else if (index == 2) {
url = "/pages/privacy";
} else {
url = "/pages/function";
}
common_vendor.index.navigateTo({
url
});
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_assets._imports_0,
b: common_assets._imports_1,
c: common_assets._imports_2,
d: common_assets._imports_3,
e: common_vendor.o((...args) => $options.gotoDownloadIOS && $options.gotoDownloadIOS(...args)),
f: common_assets._imports_4,
g: common_vendor.o((...args) => $options.gotoDownloadAndroid && $options.gotoDownloadAndroid(...args)),
h: common_vendor.o(($event) => $options.goto(1)),
i: common_vendor.o(($event) => $options.goto(2)),
j: common_vendor.o(($event) => $options.goto(3))
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-41317691"]]);
wx.createPage(MiniProgramPage);
... ...
{
"navigationStyle": "custom",
"navigationBarTitleText": "uni-app",
"usingComponents": {}
}
\ No newline at end of file
... ...
<view class="page-home data-v-41317691"><view class="top_bg data-v-41317691"></view><view class="content data-v-41317691"><view class="close_wrapper data-v-41317691"><image class="image data-v-41317691" src="{{a}}" mode="aspectFit"></image></view><view class="title data-v-41317691">app下载</view><view class="logo_wrapper data-v-41317691"><image class="image data-v-41317691" src="{{b}}" mode="aspectFit"></image></view><view class="appname_wrapper data-v-41317691"><image class="image data-v-41317691" src="{{c}}" mode="aspectFit"></image></view><view class="des_wrapper data-v-41317691">开启智慧党建学习之旅</view><view class="download_type_item data-v-41317691" bindtap="{{e}}"><view class="icon_wrapper data-v-41317691"><image class="image data-v-41317691" src="{{d}}" mode="aspectFit"></image><view class="item_title data-v-41317691">iOS版</view></view><view class="item_version data-v-41317691">v1.0.1</view></view><view class="download_type_item data-v-41317691" bindtap="{{g}}"><view class="icon_wrapper data-v-41317691"><image class="image data-v-41317691" src="{{f}}" mode="aspectFit"></image><view class="item_title data-v-41317691">Android版</view></view><view class="item_version data-v-41317691">v1.0.1</view></view></view><view class="bottom_wrapper data-v-41317691"><view class="bottom_item_wrapper data-v-41317691"><view class="bottom_item data-v-41317691" bindtap="{{h}}">应用权限</view><view class="line data-v-41317691"></view><view class="bottom_item data-v-41317691" bindtap="{{i}}">隐私政策</view><view class="line data-v-41317691"></view><view class="bottom_item data-v-41317691" bindtap="{{j}}">产品功能</view></view><view class="bottom_title data-v-41317691">开发者:大有国信(北京)技术有限公司</view></view></view>
\ No newline at end of file
... ...
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.page-home.data-v-41317691 {
display: flex;
position: relative;
flex-direction: column;
justify-content: space-between;
width: 100%;
height: 100vh;
background-color: #F5F5F5;
}
.page-home .top_bg.data-v-41317691 {
display: flex;
position: absolute;
width: 100%;
height: 310px;
top: 0;
left: 0;
background: linear-gradient(to bottom, #BC1212, #f5f5f5);
z-index: 0;
}
.page-home .content.data-v-41317691 {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
position: relative;
flex-direction: column;
width: 100%;
}
.page-home .content .title.data-v-41317691 {
margin-top: 54px;
color: #FFE8C3;
font-size: 17px;
}
.page-home .content .logo_wrapper.data-v-41317691 {
margin-top: 60px;
display: flex;
justify-content: center;
align-items: center;
width: 72px;
height: 72px;
background: #ffffff;
border-radius: 10px;
}
.page-home .content .logo_wrapper .image.data-v-41317691 {
width: 42px;
height: 47px;
}
.page-home .content .appname_wrapper.data-v-41317691 {
display: flex;
justify-content: center;
align-items: center;
width: 88px;
height: 20px;
margin-top: 22px;
}
.page-home .content .appname_wrapper .image.data-v-41317691 {
width: 88px;
height: 20px;
}
.page-home .content .des_wrapper.data-v-41317691 {
margin-top: 21px;
font-size: 16px;
color: #757373;
}
.page-home .content .close_wrapper.data-v-41317691 {
display: flex;
position: absolute;
top: 52px;
left: 10px;
width: 44px;
height: 44px;
}
.page-home .content .close_wrapper .image.data-v-41317691 {
width: 20px;
height: 20px;
}
.page-home .content .download_type_item.data-v-41317691 {
display: flex;
flex-direction: row;
justify-content: space-between;
border-radius: 10px;
height: 60px;
width: 60%;
background: linear-gradient(to right, #D82222, #B81F1F);
margin-top: 20px;
align-items: center;
color: #ffffff;
}
.page-home .content .download_type_item .icon_wrapper.data-v-41317691 {
display: flex;
flex-direction: row;
margin-left: 19px;
}
.page-home .content .download_type_item .icon_wrapper .image.data-v-41317691 {
width: 20px;
height: 24px;
}
.page-home .content .download_type_item .icon_wrapper .item_title.data-v-41317691 {
color: #ffffff;
margin-left: 14px;
}
.page-home .content .download_type_item .item_version.data-v-41317691 {
color: #F3AFAF;
margin-right: 14px;
}
.page-home .content .download_normal.data-v-41317691 {
display: flex;
flex-direction: column;
width: 100%;
align-items: center;
}
.page-home .content .download_normal .download_version.data-v-41317691 {
color: #D67C7C;
margin-top: 10px;
}
.page-home .bottom_wrapper.data-v-41317691 {
display: flex;
width: 100%;
flex-direction: column;
margin-bottom: 30px;
}
.page-home .bottom_wrapper .bottom_item_wrapper.data-v-41317691 {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
margin-bottom: 11px;
}
.page-home .bottom_wrapper .bottom_item_wrapper .bottom_item.data-v-41317691 {
color: #626B76;
font-size: 12px;
}
.page-home .bottom_wrapper .bottom_item_wrapper .line.data-v-41317691 {
width: 1px;
height: 10px;
background-color: #626B76;
margin-left: 8px;
margin-right: 8px;
}
.page-home .bottom_wrapper .bottom_title.data-v-41317691 {
display: flex;
width: 100%;
flex-direction: column;
align-items: center;
color: #626B76;
font-size: 12px;
}
\ No newline at end of file
... ...
"use strict";
const common_vendor = require("../common/vendor.js");
const navigationBar = () => "../components/navigationBar.js";
const _sfc_main = {
data() {
return {
list: [
{ title: "网络权限", icon: "../static/permission_1.png", des: "允许查看、访问网络连接" },
{ title: "蓝牙权限 ", icon: "../static/permission_2.png", des: "允许使用蓝牙,允许发现和配对新的蓝牙设备,允许程序连接配对过的蓝牙设备" },
{ title: "储存权限", icon: "../static/permission_3.png", des: "允许查看、使用内部储存,上传/下载笔记相关的文字图片" },
{ title: "相机权限", icon: "../static/permission_4.png", des: "允许使用摄像头,拍照设置用户头像" }
]
};
},
components: {
navigationBar
},
onLoad() {
},
methods: {}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.f($data.list, (item, index, i0) => {
return {
a: item.icon,
b: common_vendor.t(item.title),
c: common_vendor.t(item.des),
d: index
};
})
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-8aa5a9a1"]]);
wx.createPage(MiniProgramPage);
... ...
{
"navigationStyle": "custom",
"navigationBarTitleText": "应用权限",
"usingComponents": {}
}
\ No newline at end of file
... ...
<view class="page-home data-v-8aa5a9a1"><navigation-bar class="data-v-8aa5a9a1" title="{{'应用权限'}}"/><view class="content data-v-8aa5a9a1"><view wx:for="{{a}}" wx:for-item="item" wx:key="d" class="list_item data-v-8aa5a9a1"><view class="image_wrapper data-v-8aa5a9a1"><image class="image data-v-8aa5a9a1" src="{{item.a}}" mode="aspectFit"></image></view><view class="text_wrapper data-v-8aa5a9a1"><view class="title data-v-8aa5a9a1">{{item.b}}</view><view class="des data-v-8aa5a9a1">{{item.c}}</view></view></view></view></view>
\ No newline at end of file
... ...
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.page-home.data-v-8aa5a9a1 {
display: flex;
position: relative;
flex-direction: column;
width: 100%;
height: 100vh;
background-color: #F5F5F5;
}
.page-home .content.data-v-8aa5a9a1 {
display: flex;
flex-direction: column;
position: relative;
width: 100%;
}
.page-home .content .list_item.data-v-8aa5a9a1 {
display: flex;
position: relative;
flex-direction: row;
justify-content: space-between;
margin-top: 30px;
}
.page-home .content .list_item .image_wrapper.data-v-8aa5a9a1 {
display: flex;
margin-left: 24px;
width: 56px;
height: 56px;
}
.page-home .content .list_item .image_wrapper .image.data-v-8aa5a9a1 {
width: 56px;
height: 56px;
}
.page-home .content .list_item .text_wrapper.data-v-8aa5a9a1 {
display: flex;
flex: 1;
flex-direction: column;
margin-left: 16px;
margin-right: 26px;
}
.page-home .content .list_item .text_wrapper .title.data-v-8aa5a9a1 {
display: flex;
height: 25px;
font-size: 18px;
color: #2D2D2D;
font-weight: 500;
}
.page-home .content .list_item .text_wrapper .des.data-v-8aa5a9a1 {
font-size: 14px;
color: #626B76;
flex-wrap: wrap;
margin-top: 8px;
line-height: 20px;
}
\ No newline at end of file
... ...
"use strict";
require("../libs/download.js");
const common_vendor = require("../common/vendor.js");
const navigationBar = () => "../components/navigationBar.js";
const _sfc_main = {
components: {
navigationBar
},
data() {
return {};
},
onLoad() {
this.requestPrivacy();
},
methods: {
requestPrivacy() {
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-82ab98bb"]]);
wx.createPage(MiniProgramPage);
... ...
{
"navigationStyle": "custom",
"navigationBarTitleText": "隐私政策",
"usingComponents": {}
}
\ No newline at end of file
... ...
<view class="page-home data-v-82ab98bb"><navigation-bar class="data-v-82ab98bb" title="{{'隐私政策'}}"/><view class="content data-v-82ab98bb"></view></view>
\ No newline at end of file
... ...
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.page-home.data-v-82ab98bb {
display: flex;
position: relative;
flex-direction: column;
justify-content: space-between;
width: 100%;
height: 100vh;
background-color: #F5F5F5;
}
.page-home .content.data-v-82ab98bb {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
position: relative;
flex-direction: column;
width: 100%;
}
\ No newline at end of file
... ...
{
"description": "项目配置文件。",
"packOptions": {
"ignore": [],
"include": []
},
"setting": {
"urlCheck": false,
"es6": true,
"postcss": false,
"minified": false,
"newFeature": true,
"bigPackageSizeSupport": true,
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
}
},
"compileType": "miniprogram",
"libVersion": "3.7.1",
"appid": "touristappid",
"projectname": "download",
"condition": {},
"editorSetting": {
"tabIndent": "insertSpaces",
"tabSize": 2
}
}
\ No newline at end of file
... ...
{
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
"projectname": "download",
"setting": {
"compileHotReLoad": true
}
}
\ No newline at end of file
... ...