Showing
76 changed files
with
2204 additions
and
0 deletions
App.vue
0 → 100644
components/navigationBar.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <view class="navigation" :style="{height: getNavigationHeight}"> | ||
| 3 | + <view class="back_btn" :style="{marginTop: statusHeight}" @click="backClick"> | ||
| 4 | + <image class="image" src="../static/navigation_back.png" mode="aspectFit"></image> | ||
| 5 | + </view> | ||
| 6 | + <view class="title" :style="{top: statusHeight}">{{title}}</view> | ||
| 7 | + </view> | ||
| 8 | +</template> | ||
| 9 | + | ||
| 10 | +<script> | ||
| 11 | + | ||
| 12 | + export default { | ||
| 13 | + props: { | ||
| 14 | + title: String | ||
| 15 | + }, | ||
| 16 | + data() { | ||
| 17 | + return { | ||
| 18 | + } | ||
| 19 | + }, | ||
| 20 | + | ||
| 21 | + computed: { | ||
| 22 | + safeAreaInsets() { | ||
| 23 | + return uni.getSystemInfoSync().safeAreaInsets.bottom | ||
| 24 | + }, | ||
| 25 | + statusHeight() { | ||
| 26 | + let device = uni.getSystemInfoSync(); | ||
| 27 | + return device.statusBarHeight + "px"; | ||
| 28 | + }, | ||
| 29 | + getNavigationHeight() { | ||
| 30 | + var h = 0; | ||
| 31 | + let device = uni.getSystemInfoSync(); | ||
| 32 | + let statusBarHeight = device.statusBarHeight; | ||
| 33 | + h += 44; | ||
| 34 | + return h + "px"; | ||
| 35 | + } | ||
| 36 | + }, | ||
| 37 | + onLoad() { | ||
| 38 | + | ||
| 39 | + }, | ||
| 40 | + methods: { | ||
| 41 | + backClick() { | ||
| 42 | + uni.navigateBack() | ||
| 43 | + } | ||
| 44 | + } | ||
| 45 | + } | ||
| 46 | +</script> | ||
| 47 | + | ||
| 48 | +<style lang="scss" scoped> | ||
| 49 | + .navigation { | ||
| 50 | + display: flex; | ||
| 51 | + flex-direction: row; | ||
| 52 | + position: relative; | ||
| 53 | + background: linear-gradient(to right, #D82222, #B81F1F); | ||
| 54 | + // justify-content: center; | ||
| 55 | + align-items: center; | ||
| 56 | + .back_btn { | ||
| 57 | + display: flex; | ||
| 58 | + width: 44px; | ||
| 59 | + height: 44px; | ||
| 60 | + justify-content: center; | ||
| 61 | + align-items: center; | ||
| 62 | + .image { | ||
| 63 | + width: 20px; | ||
| 64 | + height: 20px; | ||
| 65 | + } | ||
| 66 | + } | ||
| 67 | + .title { | ||
| 68 | + display: flex; | ||
| 69 | + // position: absolute; | ||
| 70 | + top: 0; | ||
| 71 | + left: 50%; | ||
| 72 | + right: 50%; | ||
| 73 | + height: 44px; | ||
| 74 | + width: 100%; | ||
| 75 | + margin-right: 44px; | ||
| 76 | + justify-content: center; | ||
| 77 | + align-items: center; | ||
| 78 | + flex-direction: row; | ||
| 79 | + color: #FFE8C3; | ||
| 80 | + } | ||
| 81 | + } | ||
| 82 | +</style> |
index.html
0 → 100644
| 1 | +<!DOCTYPE html> | ||
| 2 | +<html lang="en"> | ||
| 3 | + <head> | ||
| 4 | + <meta charset="UTF-8" /> | ||
| 5 | + <script> | ||
| 6 | + var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || | ||
| 7 | + CSS.supports('top: constant(a)')) | ||
| 8 | + document.write( | ||
| 9 | + '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + | ||
| 10 | + (coverSupport ? ', viewport-fit=cover' : '') + '" />') | ||
| 11 | + </script> | ||
| 12 | + <title></title> | ||
| 13 | + <!--preload-links--> | ||
| 14 | + <!--app-context--> | ||
| 15 | + </head> | ||
| 16 | + <body> | ||
| 17 | + <div id="app"><!--app-html--></div> | ||
| 18 | + <script type="module" src="/main.js"></script> | ||
| 19 | + </body> | ||
| 20 | +</html> |
libs/api.js
0 → 100644
| 1 | +// const ApiRootUrl = 'http://camp.cultivationhit.com'; // 测试 | ||
| 2 | +// const ApiRootUrl = 'http://172.27.254.247:9928'; // 测试 | ||
| 3 | +// const ApiRootUrl = 'https://cetustalk.harbourmooc.com/api'; // 正式 | ||
| 4 | +// const ApiRootUrl = "http://39.99.131.18:9253"; // const ApiRootUrl = 'http://192.168.0.153:10087/zhongkehaobo/'; | ||
| 5 | +const ApiRootUrl = "https://app.dyguoxin.com/api"; | ||
| 6 | +// request get 请求 | ||
| 7 | + | ||
| 8 | +const getData = (url, param) => { | ||
| 9 | + return new Promise((resolve, reject) => { | ||
| 10 | + uni.request({ | ||
| 11 | + url: ApiRootUrl + url, | ||
| 12 | + method: 'GET', | ||
| 13 | + header: { | ||
| 14 | + 'content-type': 'application/json' // 默认值,返回的数据设置为json数组格式 | ||
| 15 | + | ||
| 16 | + /*'Authorization': wx.getStorageSync("tokenHead")+' '+wx.getStorageSync("token"), | ||
| 17 | + 'Source':'wx'*/ | ||
| 18 | + | ||
| 19 | + }, | ||
| 20 | + data: param, | ||
| 21 | + success(res) { | ||
| 22 | + /*if (res.data.code!=200){ | ||
| 23 | + wx.showToast({ | ||
| 24 | + title: res.data.message, | ||
| 25 | + icon: 'none', | ||
| 26 | + duration: 2000 | ||
| 27 | + }) | ||
| 28 | + } | ||
| 29 | + resolve(res.data)*/ | ||
| 30 | + if (res && res.data && res.data.code && res.data.code == 200) { | ||
| 31 | + resolve(res.data); | ||
| 32 | + } else { | ||
| 33 | + // uni.showToast({ | ||
| 34 | + // title: res.data.msg, | ||
| 35 | + // icon: 'none', | ||
| 36 | + // duration: 2000 | ||
| 37 | + // }); | ||
| 38 | + resolve(res.data); | ||
| 39 | + } | ||
| 40 | + }, | ||
| 41 | + | ||
| 42 | + fail(err) { | ||
| 43 | + reject(err); | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + }); | ||
| 47 | + }); | ||
| 48 | +}; // request post 请求 Welcome1 | ||
| 49 | + | ||
| 50 | + | ||
| 51 | +const postData = (url, param) => { | ||
| 52 | + return new Promise((resolve, reject) => { | ||
| 53 | + uni.request({ | ||
| 54 | + url: ApiRootUrl + url, | ||
| 55 | + method: 'POST', | ||
| 56 | + header: { | ||
| 57 | + 'content-type': 'application/json' // 默认值,返回的数据设置为json数组格式 | ||
| 58 | + | ||
| 59 | + /* 'Authorization': wx.getStorageSync("tokenHead")+' '+wx.getStorageSync("token"), | ||
| 60 | + 'Source':'wx'*/ | ||
| 61 | + | ||
| 62 | + }, | ||
| 63 | + data: param, | ||
| 64 | + | ||
| 65 | + success(res) { | ||
| 66 | + //console.log(res) | ||
| 67 | + resolve(res.data); | ||
| 68 | + }, | ||
| 69 | + | ||
| 70 | + fail(err) { | ||
| 71 | + console.log('fail',err) | ||
| 72 | + reject(err); | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + }); | ||
| 76 | + }); | ||
| 77 | +}; //获取阿里OSS | ||
| 78 | + | ||
| 79 | + | ||
| 80 | +const getAliOss = url => { | ||
| 81 | + return new Promise((resolve, reject) => { | ||
| 82 | + uni.request({ | ||
| 83 | + url: ApiRootUrl + url, | ||
| 84 | + method: 'get', | ||
| 85 | + | ||
| 86 | + success(res) { | ||
| 87 | + resolve(res.data); | ||
| 88 | + }, | ||
| 89 | + | ||
| 90 | + fail(err) { | ||
| 91 | + reject(err); | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + }); | ||
| 95 | + }); | ||
| 96 | +}; // request post 请求 Welcome1 | ||
| 97 | + | ||
| 98 | + | ||
| 99 | +const getloninData = (url, param) => { | ||
| 100 | + return new Promise((resolve, reject) => { | ||
| 101 | + uni.request({ | ||
| 102 | + url: ApiRootUrl + url, | ||
| 103 | + method: 'GET', | ||
| 104 | + header: { | ||
| 105 | + 'content-type': 'application/json' // 默认值,返回的数据设置为json数组格式 | ||
| 106 | + | ||
| 107 | + }, | ||
| 108 | + data: param, | ||
| 109 | + | ||
| 110 | + success(res) { | ||
| 111 | + //console.log(res) | ||
| 112 | + resolve(res.data); | ||
| 113 | + }, | ||
| 114 | + | ||
| 115 | + fail(err) { | ||
| 116 | + //console.log(err) | ||
| 117 | + reject(err); | ||
| 118 | + } | ||
| 119 | + | ||
| 120 | + }); | ||
| 121 | + }); | ||
| 122 | +}; | ||
| 123 | + | ||
| 124 | +const postloninData = (url, param) => { | ||
| 125 | + return new Promise((resolve, reject) => { | ||
| 126 | + uni.request({ | ||
| 127 | + url: ApiRootUrl + url, | ||
| 128 | + method: 'POST', | ||
| 129 | + header: { | ||
| 130 | + 'content-type': 'application/json' // 默认值,返回的数据设置为json数组格式 | ||
| 131 | + | ||
| 132 | + }, | ||
| 133 | + data: param, | ||
| 134 | + | ||
| 135 | + success(res) { | ||
| 136 | + // console.log('success',res) | ||
| 137 | + resolve(res.data); | ||
| 138 | + }, | ||
| 139 | + | ||
| 140 | + fail(err) { | ||
| 141 | + // console.log('fail',err) | ||
| 142 | + reject(err); | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + }); | ||
| 146 | + }); | ||
| 147 | +}; // loading加载提示 | ||
| 148 | + | ||
| 149 | + | ||
| 150 | +const showLoading = () => { | ||
| 151 | + return new Promise((resolve, reject) => { | ||
| 152 | + uni.showLoading({ | ||
| 153 | + title: '加载中...', | ||
| 154 | + mask: true, | ||
| 155 | + | ||
| 156 | + success(res) { | ||
| 157 | + uni.showLoading(); | ||
| 158 | + resolve(res); | ||
| 159 | + }, | ||
| 160 | + | ||
| 161 | + fail(err) { | ||
| 162 | + reject(err); | ||
| 163 | + } | ||
| 164 | + | ||
| 165 | + }); | ||
| 166 | + }); | ||
| 167 | +}; // 关闭loading | ||
| 168 | + | ||
| 169 | + | ||
| 170 | +const hideLoading = () => { | ||
| 171 | + return new Promise(resolve => { | ||
| 172 | + uni.hideLoading(); | ||
| 173 | + resolve(); | ||
| 174 | + }); | ||
| 175 | +}; | ||
| 176 | + | ||
| 177 | +module.exports = { | ||
| 178 | + ApiRootUrl, | ||
| 179 | + getData, | ||
| 180 | + postData, | ||
| 181 | + showLoading, | ||
| 182 | + hideLoading, | ||
| 183 | + getloninData, | ||
| 184 | + postloninData, | ||
| 185 | + getAliOss | ||
| 186 | +}; |
libs/download.js
0 → 100644
| 1 | +const app = getApp(); | ||
| 2 | +const api = app.globalData.api; | ||
| 3 | + | ||
| 4 | +// 检查版本更新 2iOS 1安卓 | ||
| 5 | +export function checkVersion(type) { | ||
| 6 | + return api.getData('/app/common/getVersion/' + type) | ||
| 7 | +} | ||
| 8 | +/// eula:用户协议 pp:隐私政策 help:使用帮助 | ||
| 9 | +export function getPrivacy(type) { | ||
| 10 | + return api.getData('/app/common/getProtocol/' + type) | ||
| 11 | +} |
libs/util.js
0 → 100644
| 1 | +import deepMerge from '../vendors/deep-merge.js'; | ||
| 2 | +import deepClone from '../vendors/clone.js'; | ||
| 3 | +/** | ||
| 4 | + * 格式化时间 | ||
| 5 | + * @param {Datetime} source 时间对象 | ||
| 6 | + * @param {String} format 格式 | ||
| 7 | + * @return {String} 格式化过后的时间 | ||
| 8 | + */ | ||
| 9 | + | ||
| 10 | +const formatDate = (source, format) => { | ||
| 11 | + const o = { | ||
| 12 | + 'M+': source.getMonth() + 1, | ||
| 13 | + // 月份 | ||
| 14 | + 'd+': source.getDate(), | ||
| 15 | + // 日 | ||
| 16 | + 'H+': source.getHours(), | ||
| 17 | + // 小时 | ||
| 18 | + 'm+': source.getMinutes(), | ||
| 19 | + // 分 | ||
| 20 | + 's+': source.getSeconds(), | ||
| 21 | + // 秒 | ||
| 22 | + 'q+': Math.floor((source.getMonth() + 3) / 3), | ||
| 23 | + // 季度 | ||
| 24 | + 'f+': source.getMilliseconds() // 毫秒 | ||
| 25 | + | ||
| 26 | + }; | ||
| 27 | + | ||
| 28 | + if (/(y+)/.test(format)) { | ||
| 29 | + format = format.replace(RegExp.$1, (source.getFullYear() + '').substr(4 - RegExp.$1.length)); | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | + for (let k in o) { | ||
| 33 | + if (new RegExp('(' + k + ')').test(format)) { | ||
| 34 | + format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)); | ||
| 35 | + } | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + return format; | ||
| 39 | +}; | ||
| 40 | + | ||
| 41 | +const smartDate = originDate => { | ||
| 42 | + let nowDate = new Date(), | ||
| 43 | + isToday = false, | ||
| 44 | + isYesterday = false, | ||
| 45 | + isPastYear = false, | ||
| 46 | + isPreviousYear = false, | ||
| 47 | + originYear, | ||
| 48 | + originMonth, | ||
| 49 | + originDay, | ||
| 50 | + diffMinute, | ||
| 51 | + formatedDate; | ||
| 52 | + originDate = new Date(originDate * 1000); | ||
| 53 | + diffMinute = Math.round((nowDate.getTime() - originDate.getTime()) / (1000 * 60)); | ||
| 54 | + originYear = originDate.getFullYear(); | ||
| 55 | + originMonth = originDate.getMonth() + 1; | ||
| 56 | + originDay = originDate.getDate(); | ||
| 57 | + | ||
| 58 | + if (diffMinute <= nowDate.getHours() * 60) { | ||
| 59 | + isToday = true; | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + if (nowDate.getDate() - originDay == 1) { | ||
| 63 | + isYesterday = true; | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + if (nowDate.getFullYear() - originYear == 1) { | ||
| 67 | + isPreviousYear = true; | ||
| 68 | + } else if (nowDate.getFullYear() - originYear > 1) { | ||
| 69 | + isPastYear = true; | ||
| 70 | + } | ||
| 71 | + | ||
| 72 | + if (diffMinute < 30 && isToday) { | ||
| 73 | + formatedDate = '刚刚'; | ||
| 74 | + } else if (diffMinute < 60 && isToday) { | ||
| 75 | + formatedDate = `${diffMinute} 分钟前`; | ||
| 76 | + } else if (diffMinute < 60 * 24 && isToday) { | ||
| 77 | + formatedDate = `${Math.floor(diffMinute / 60)} 小时前`; | ||
| 78 | + } else if (diffMinute < 60 * 24 * 2 && isYesterday) { | ||
| 79 | + formatedDate = '昨天'; | ||
| 80 | + } else if (isPreviousYear) { | ||
| 81 | + formatedDate = '去年'; | ||
| 82 | + } else if (isPastYear) { | ||
| 83 | + formatedDate = `${originYear} 年`; | ||
| 84 | + } else { | ||
| 85 | + formatedDate = `${originMonth} 月 ${originDay} 日`; | ||
| 86 | + } | ||
| 87 | + | ||
| 88 | + return formatedDate; | ||
| 89 | +}; | ||
| 90 | + | ||
| 91 | +const isObject = val => { | ||
| 92 | + return val != null && typeof val === 'object' && Array.isArray(val) === false; | ||
| 93 | +}; | ||
| 94 | + | ||
| 95 | +const isEmptyObject = obj => { | ||
| 96 | + return Object.keys(obj).length == 0 && obj.constructor == Object; | ||
| 97 | +}; | ||
| 98 | + | ||
| 99 | +const assign = function (target) { | ||
| 100 | + // We must check against these specific cases. | ||
| 101 | + if (target === undefined || target === null) { | ||
| 102 | + throw new TypeError('Cannot convert undefined or null to object'); | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + var output = Object(target); | ||
| 106 | + | ||
| 107 | + for (var index = 1; index < arguments.length; index++) { | ||
| 108 | + var source = arguments[index]; | ||
| 109 | + | ||
| 110 | + if (source !== undefined && source !== null) { | ||
| 111 | + for (var nextKey in source) { | ||
| 112 | + if (source.hasOwnProperty(nextKey)) { | ||
| 113 | + output[nextKey] = source[nextKey]; | ||
| 114 | + } | ||
| 115 | + } | ||
| 116 | + } | ||
| 117 | + } | ||
| 118 | + | ||
| 119 | + return output; | ||
| 120 | +}; | ||
| 121 | + | ||
| 122 | +const merge = (oldObj, newObj, genre = 'override') => { | ||
| 123 | + let arrayMerge = (destArr, srcArr) => { | ||
| 124 | + switch (genre) { | ||
| 125 | + case 'concat': | ||
| 126 | + return destArr.concat(srcArr); | ||
| 127 | + | ||
| 128 | + default: | ||
| 129 | + return srcArr; | ||
| 130 | + } | ||
| 131 | + }; | ||
| 132 | + | ||
| 133 | + return deepMerge(oldObj, newObj, { | ||
| 134 | + arrayMerge: arrayMerge | ||
| 135 | + }); | ||
| 136 | +}; | ||
| 137 | + | ||
| 138 | +const clone = originData => deepClone(originData); | ||
| 139 | + | ||
| 140 | +const updateItemInArray = (array, itemId, updateItemCallback) => { | ||
| 141 | + const updatedArray = array.map(item => { | ||
| 142 | + if (item.id !== itemId) { | ||
| 143 | + return item; | ||
| 144 | + } | ||
| 145 | + | ||
| 146 | + return updateItemCallback(item); | ||
| 147 | + }); | ||
| 148 | + return updatedArray; | ||
| 149 | +}; | ||
| 150 | + | ||
| 151 | +const trim = s => { | ||
| 152 | + return s.replace(/(^\s*)|(\s*$)/g, ""); | ||
| 153 | +}; | ||
| 154 | + | ||
| 155 | +const ArrayIndexOf = (arr, val) => { | ||
| 156 | + for (let i = 0; i < arr.length; i++) { | ||
| 157 | + if (arr[i] == val) return i; | ||
| 158 | + } | ||
| 159 | + | ||
| 160 | + return -1; | ||
| 161 | +}; | ||
| 162 | + | ||
| 163 | +const ArrayRemove = (arr, val) => { | ||
| 164 | + const index = ArrayIndexOf(arr, val); | ||
| 165 | + | ||
| 166 | + if (index > -1) { | ||
| 167 | + arr.splice(index, 1); | ||
| 168 | + } | ||
| 169 | + | ||
| 170 | + return arr; | ||
| 171 | +}; //坐标系之间的转换 | ||
| 172 | + | ||
| 173 | + | ||
| 174 | +const coordinateChange = (lng, lat) => { | ||
| 175 | + //定义一些常量 | ||
| 176 | + const x_PI = 3.14159265358979324 * 3000.0 / 180.0; | ||
| 177 | + const PI = 3.1415926535897932384626; | ||
| 178 | + const a = 6378245.0; | ||
| 179 | + const ee = 0.00669342162296594323; | ||
| 180 | + | ||
| 181 | + const transformlat = (lng, lat) => { | ||
| 182 | + const lat1 = +lat; | ||
| 183 | + const lng1 = +lng; | ||
| 184 | + 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)); | ||
| 185 | + ret += (20.0 * Math.sin(6.0 * lng1 * PI) + 20.0 * Math.sin(2.0 * lng1 * PI)) * 2.0 / 3.0; | ||
| 186 | + ret += (20.0 * Math.sin(lat1 * PI) + 40.0 * Math.sin(lat1 / 3.0 * PI)) * 2.0 / 3.0; | ||
| 187 | + ret += (160.0 * Math.sin(lat1 / 12.0 * PI) + 320 * Math.sin(lat1 * PI / 30.0)) * 2.0 / 3.0; | ||
| 188 | + return ret; | ||
| 189 | + }; | ||
| 190 | + | ||
| 191 | + const transformlng = (lng, lat) => { | ||
| 192 | + const lat1 = +lat; | ||
| 193 | + const lng1 = +lng; | ||
| 194 | + let ret = 300.0 + lng1 + 2.0 * lat1 + 0.1 * lng1 * lng1 + 0.1 * lng1 * lat1 + 0.1 * Math.sqrt(Math.abs(lng1)); | ||
| 195 | + ret += (20.0 * Math.sin(6.0 * lng1 * PI) + 20.0 * Math.sin(2.0 * lng1 * PI)) * 2.0 / 3.0; | ||
| 196 | + ret += (20.0 * Math.sin(lng1 * PI) + 40.0 * Math.sin(lng1 / 3.0 * PI)) * 2.0 / 3.0; | ||
| 197 | + ret += (150.0 * Math.sin(lng1 / 12.0 * PI) + 300.0 * Math.sin(lng1 / 30.0 * PI)) * 2.0 / 3.0; | ||
| 198 | + return ret; | ||
| 199 | + }; | ||
| 200 | + | ||
| 201 | + const lat2 = +lat; | ||
| 202 | + const lng2 = +lng; | ||
| 203 | + let dlat = transformlat(lng2 - 105.0, lat2 - 35.0); | ||
| 204 | + let dlng = transformlng(lng2 - 105.0, lat2 - 35.0); | ||
| 205 | + let radlat = lat2 / 180.0 * PI; | ||
| 206 | + let magic = Math.sin(radlat); | ||
| 207 | + magic = 1 - ee * magic * magic; | ||
| 208 | + const sqrtmagic = Math.sqrt(magic); | ||
| 209 | + dlat = dlat * 180.0 / (a * (1 - ee) / (magic * sqrtmagic) * PI); | ||
| 210 | + dlng = dlng * 180.0 / (a / sqrtmagic * Math.cos(radlat) * PI); | ||
| 211 | + let mglat = lat2 + dlat; | ||
| 212 | + let mglng = lng2 + dlng; | ||
| 213 | + mglat = +mglat; | ||
| 214 | + mglng = +mglng; | ||
| 215 | + const z = Math.sqrt(mglng * mglng + mglat * mglat) + 0.00002 * Math.sin(mglat * x_PI); | ||
| 216 | + const theta = Math.atan2(mglat, mglng) + 0.000003 * Math.cos(mglng * x_PI); | ||
| 217 | + const bd_lng = Number((z * Math.cos(theta) + 0.0065).toString().match(/^\d+(?:\.\d{0,5})?/)); | ||
| 218 | + const bd_lat = Number((z * Math.sin(theta) + 0.0065).toString().match(/^\d+(?:\.\d{0,5})?/)); | ||
| 219 | + return [bd_lng, bd_lat]; | ||
| 220 | +}; | ||
| 221 | + | ||
| 222 | +module.exports = { | ||
| 223 | + formatDate, | ||
| 224 | + // 格式化时间 | ||
| 225 | + smartDate, | ||
| 226 | + // 美化时间 | ||
| 227 | + isObject, | ||
| 228 | + // 是不是对象 | ||
| 229 | + isEmptyObject, | ||
| 230 | + // 是不是空对象 | ||
| 231 | + assign, | ||
| 232 | + // 深复制 | ||
| 233 | + merge, | ||
| 234 | + // 拼接 override 覆盖 concat 连接 | ||
| 235 | + clone, | ||
| 236 | + // 克隆 | ||
| 237 | + updateItemInArray, | ||
| 238 | + // 更新数组里某一项 | ||
| 239 | + trim, | ||
| 240 | + // 去除前后空格 | ||
| 241 | + ArrayIndexOf, | ||
| 242 | + // 数组里查找元素位置 | ||
| 243 | + ArrayRemove, | ||
| 244 | + // 删除数组里的元素 | ||
| 245 | + coordinateChange //坐标系之间的转换 | ||
| 246 | + | ||
| 247 | +}; |
main.js
0 → 100644
| 1 | +import App from './App' | ||
| 2 | + | ||
| 3 | +// #ifndef VUE3 | ||
| 4 | +import Vue from 'vue' | ||
| 5 | +import './uni.promisify.adaptor' | ||
| 6 | +Vue.config.productionTip = false | ||
| 7 | +App.mpType = 'app' | ||
| 8 | +const app = new Vue({ | ||
| 9 | + ...App | ||
| 10 | +}) | ||
| 11 | +app.$mount() | ||
| 12 | +// #endif | ||
| 13 | + | ||
| 14 | +// #ifdef VUE3 | ||
| 15 | +import { createSSRApp } from 'vue' | ||
| 16 | +export function createApp() { | ||
| 17 | + const app = createSSRApp(App) | ||
| 18 | + return { | ||
| 19 | + app | ||
| 20 | + } | ||
| 21 | +} | ||
| 22 | +// #endif |
manifest.json
0 → 100644
| 1 | +{ | ||
| 2 | + "name" : "download", | ||
| 3 | + "appid" : "__UNI__E60B92C", | ||
| 4 | + "description" : "", | ||
| 5 | + "versionName" : "1.0.0", | ||
| 6 | + "versionCode" : "100", | ||
| 7 | + "transformPx" : false, | ||
| 8 | + /* 5+App特有相关 */ | ||
| 9 | + "app-plus" : { | ||
| 10 | + "usingComponents" : true, | ||
| 11 | + "nvueStyleCompiler" : "uni-app", | ||
| 12 | + "compilerVersion" : 3, | ||
| 13 | + "splashscreen" : { | ||
| 14 | + "alwaysShowBeforeRender" : true, | ||
| 15 | + "waiting" : true, | ||
| 16 | + "autoclose" : true, | ||
| 17 | + "delay" : 0 | ||
| 18 | + }, | ||
| 19 | + /* 模块配置 */ | ||
| 20 | + "modules" : {}, | ||
| 21 | + /* 应用发布信息 */ | ||
| 22 | + "distribute" : { | ||
| 23 | + /* android打包配置 */ | ||
| 24 | + "android" : { | ||
| 25 | + "permissions" : [ | ||
| 26 | + "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", | ||
| 27 | + "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", | ||
| 28 | + "<uses-permission android:name=\"android.permission.VIBRATE\"/>", | ||
| 29 | + "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", | ||
| 30 | + "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", | ||
| 31 | + "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", | ||
| 32 | + "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", | ||
| 33 | + "<uses-permission android:name=\"android.permission.CAMERA\"/>", | ||
| 34 | + "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", | ||
| 35 | + "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", | ||
| 36 | + "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", | ||
| 37 | + "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", | ||
| 38 | + "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", | ||
| 39 | + "<uses-feature android:name=\"android.hardware.camera\"/>", | ||
| 40 | + "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" | ||
| 41 | + ] | ||
| 42 | + }, | ||
| 43 | + /* ios打包配置 */ | ||
| 44 | + "ios" : {}, | ||
| 45 | + /* SDK配置 */ | ||
| 46 | + "sdkConfigs" : {} | ||
| 47 | + } | ||
| 48 | + }, | ||
| 49 | + /* 快应用特有相关 */ | ||
| 50 | + "quickapp" : {}, | ||
| 51 | + /* 小程序特有相关 */ | ||
| 52 | + "mp-weixin" : { | ||
| 53 | + "appid" : "", | ||
| 54 | + "setting" : { | ||
| 55 | + "urlCheck" : false | ||
| 56 | + }, | ||
| 57 | + "usingComponents" : true | ||
| 58 | + }, | ||
| 59 | + "mp-alipay" : { | ||
| 60 | + "usingComponents" : true | ||
| 61 | + }, | ||
| 62 | + "mp-baidu" : { | ||
| 63 | + "usingComponents" : true | ||
| 64 | + }, | ||
| 65 | + "mp-toutiao" : { | ||
| 66 | + "usingComponents" : true | ||
| 67 | + }, | ||
| 68 | + "uniStatistics" : { | ||
| 69 | + "enable" : false | ||
| 70 | + }, | ||
| 71 | + "vueVersion" : "3" | ||
| 72 | +} |
pages.json
0 → 100644
| 1 | +{ | ||
| 2 | + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages | ||
| 3 | + { | ||
| 4 | + "path": "pages/home", | ||
| 5 | + "style": { | ||
| 6 | + "navigationStyle": "custom", | ||
| 7 | + "navigationBarTitleText": "uni-app" | ||
| 8 | + } | ||
| 9 | + }, | ||
| 10 | + { | ||
| 11 | + "path": "pages/function", | ||
| 12 | + "style": { | ||
| 13 | + "navigationStyle": "custom", | ||
| 14 | + "navigationBarTitleText": "产品功能" | ||
| 15 | + } | ||
| 16 | + }, | ||
| 17 | + { | ||
| 18 | + "path": "pages/privacy", | ||
| 19 | + "style": { | ||
| 20 | + "navigationStyle": "custom", | ||
| 21 | + "navigationBarTitleText": "隐私政策" | ||
| 22 | + } | ||
| 23 | + }, | ||
| 24 | + { | ||
| 25 | + "path": "pages/permission", | ||
| 26 | + "style": { | ||
| 27 | + "navigationStyle": "custom", | ||
| 28 | + "navigationBarTitleText": "应用权限" | ||
| 29 | + } | ||
| 30 | + } | ||
| 31 | + ], | ||
| 32 | + "globalStyle": { | ||
| 33 | + "navigationBarTextStyle": "black", | ||
| 34 | + "navigationBarTitleText": "uni-app", | ||
| 35 | + "navigationBarBackgroundColor": "#F8F8F8", | ||
| 36 | + "backgroundColor": "#F8F8F8" | ||
| 37 | + }, | ||
| 38 | + "uniIdRouter": {} | ||
| 39 | +} |
pages/function.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <view class="page-home"> | ||
| 3 | + <navigation-bar :title="'产品功能'"/> | ||
| 4 | + <view class="content"> | ||
| 5 | + <view class="title">你写我记是一款基于传统书写的智能笔记类APP,用户可根据自己习惯自由书写,书写内容实时呈现在你写我记APP上,线下线上任务同步进行使得工作学习效率更高。</view> | ||
| 6 | + <view class="list_item" v-for="(item,index) in list" :key="index"> | ||
| 7 | + <view class="image_wrapper"> | ||
| 8 | + <image class="image" :src="item.icon" mode="aspectFit"></image> | ||
| 9 | + </view> | ||
| 10 | + <view class="des_wrapper" :style="{ borderColor: index % 2 == 0 ? '#D65656' : '#A5A5A5' }">{{item.title}}</view> | ||
| 11 | + </view> | ||
| 12 | + </view> | ||
| 13 | + </view> | ||
| 14 | +</template> | ||
| 15 | + | ||
| 16 | +<script> | ||
| 17 | + import navigationBar from '../components/navigationBar.vue'; | ||
| 18 | + export default { | ||
| 19 | + components: { | ||
| 20 | + navigationBar | ||
| 21 | + }, | ||
| 22 | + data() { | ||
| 23 | + return { | ||
| 24 | + list: [{title: "实体纸笔,传统书写", icon: "../static/function_list_1.png"}, | ||
| 25 | + {title: "蓝牙传输,一键连接", icon: "../static/function_list_2.png"}, | ||
| 26 | + {title: "线上线下,同步展示", icon: "../static/function_list_3.png"}, | ||
| 27 | + {title: "笔迹色彩,随心变换", icon: "../static/function_list_4.png"}, | ||
| 28 | + {title: "自由擦写,分类保存", icon: "../static/function_list_5.png"} | ||
| 29 | + ] | ||
| 30 | + } | ||
| 31 | + }, | ||
| 32 | + onLoad() { | ||
| 33 | + | ||
| 34 | + }, | ||
| 35 | + methods: { | ||
| 36 | + | ||
| 37 | + getClass(index) { | ||
| 38 | + return index % 2 == 0 ? "" : ""; | ||
| 39 | + } | ||
| 40 | + } | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | +</script> | ||
| 44 | + | ||
| 45 | +<style lang="scss" scoped> | ||
| 46 | + .page-home { | ||
| 47 | + display: flex; | ||
| 48 | + position: relative; | ||
| 49 | + flex-direction: column; | ||
| 50 | + width: 100%; | ||
| 51 | + height:100vh; | ||
| 52 | + background-color: #F5F5F5; | ||
| 53 | + .content { | ||
| 54 | + display: flex; | ||
| 55 | + flex-direction: column; | ||
| 56 | + // align-items: center; | ||
| 57 | + // justify-content: center; | ||
| 58 | + position: relative; | ||
| 59 | + width: 100%; | ||
| 60 | + .title { | ||
| 61 | + display: flex; | ||
| 62 | + margin-top: 20px; | ||
| 63 | + margin-left: 20px; | ||
| 64 | + margin-right: 20px; | ||
| 65 | + flex-wrap: wrap; | ||
| 66 | + line-height: 24px; | ||
| 67 | + font-size: 14px; | ||
| 68 | + color: #1F2229; | ||
| 69 | + } | ||
| 70 | + .list_item { | ||
| 71 | + display: flex; | ||
| 72 | + position: relative; | ||
| 73 | + flex-direction: column; | ||
| 74 | + // justify-content: center; | ||
| 75 | + align-items: center; | ||
| 76 | + margin-top: 30px; | ||
| 77 | + .image_wrapper { | ||
| 78 | + display: flex; | ||
| 79 | + position: absolute; | ||
| 80 | + top: 0; | ||
| 81 | + left: 50%; | ||
| 82 | + right: 50%; | ||
| 83 | + width: 32px; | ||
| 84 | + height: 32px; | ||
| 85 | + .image { | ||
| 86 | + width: 32px; | ||
| 87 | + height: 32px; | ||
| 88 | + } | ||
| 89 | + } | ||
| 90 | + .des_wrapper { | ||
| 91 | + display: flex; | ||
| 92 | + justify-content: center; | ||
| 93 | + align-items: center; | ||
| 94 | + // border-color: #D65656; | ||
| 95 | + border-radius: 8px; | ||
| 96 | + border-style: solid; | ||
| 97 | + border-width: 1px; | ||
| 98 | + width: 80%; | ||
| 99 | + height: 50px; | ||
| 100 | + margin-top: 20px; | ||
| 101 | + font-size: 16px; | ||
| 102 | + color: #2D2D2D; | ||
| 103 | + font-weight: 500; | ||
| 104 | + } | ||
| 105 | + } | ||
| 106 | + } | ||
| 107 | + } | ||
| 108 | +</style> |
pages/home.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <view class="page-home"> | ||
| 3 | + <view class="top_bg"></view> | ||
| 4 | + <view class="content"> | ||
| 5 | + | ||
| 6 | + <view class="close_wrapper"> | ||
| 7 | + <image class="image" src="../static/download_close.png" mode="aspectFit"></image> | ||
| 8 | + </view> | ||
| 9 | + <view class="title">app下载</view> | ||
| 10 | + <view class="logo_wrapper"> | ||
| 11 | + <image class="image" src="/static/logo.png" mode="aspectFit"></image> | ||
| 12 | + </view> | ||
| 13 | + <view class="appname_wrapper"> | ||
| 14 | + <image class="image" src="../static/download_title.png" mode="aspectFit"></image> | ||
| 15 | + </view> | ||
| 16 | + <view class="des_wrapper">开启智慧党建学习之旅</view> | ||
| 17 | + <view class="download_type_item" @click="gotoDownloadIOS"> | ||
| 18 | + <view class="icon_wrapper"> | ||
| 19 | + <image class="image" src="/static/home_apple.png" mode="aspectFit"></image> | ||
| 20 | + <view class="item_title">iOS版</view> | ||
| 21 | + </view> | ||
| 22 | + <view class="item_version">v1.0.1</view> | ||
| 23 | + </view> | ||
| 24 | + <view class="download_type_item" @click="gotoDownloadAndroid"> | ||
| 25 | + <view class="icon_wrapper"> | ||
| 26 | + <image class="image" src="/static/home_anzhuo.png" mode="aspectFit"></image> | ||
| 27 | + <view class="item_title">Android版</view> | ||
| 28 | + </view> | ||
| 29 | + <view class="item_version">v1.0.1</view> | ||
| 30 | + </view> | ||
| 31 | + <!-- <view class="download_normal"> | ||
| 32 | + <view class="download_type_item" style="justify-content: center;">立即下载</view> | ||
| 33 | + <view class="download_version">v1.0.1</view> | ||
| 34 | + </view> --> | ||
| 35 | + </view> | ||
| 36 | + <view class="bottom_wrapper"> | ||
| 37 | + <view class="bottom_item_wrapper"> | ||
| 38 | + <view class="bottom_item" @click="goto(1)">应用权限</view> | ||
| 39 | + <view class="line"></view> | ||
| 40 | + <view class="bottom_item" @click="goto(2)">隐私政策</view> | ||
| 41 | + <view class="line"></view> | ||
| 42 | + <view class="bottom_item" @click="goto(3)">产品功能</view> | ||
| 43 | + </view> | ||
| 44 | + <view class="bottom_title">开发者:大有国信(北京)技术有限公司</view> | ||
| 45 | + </view> | ||
| 46 | + </view> | ||
| 47 | +</template> | ||
| 48 | + | ||
| 49 | +<script> | ||
| 50 | + export default { | ||
| 51 | + data() { | ||
| 52 | + return { | ||
| 53 | + title: 'Hello', | ||
| 54 | + apkUrl: "https://app.dyguoxin.com/android/smartPen.apk", | ||
| 55 | + iosURl: "https://testflight.apple.com/join/2etMUNQS", | ||
| 56 | + } | ||
| 57 | + }, | ||
| 58 | + onLoad() { | ||
| 59 | + | ||
| 60 | + }, | ||
| 61 | + methods: { | ||
| 62 | + gotoDownloadAndroid() { | ||
| 63 | + | ||
| 64 | + if (process.env.UNI_PLATFORM === 'h5') { | ||
| 65 | + // 这里是H5环境下使用的代码 | ||
| 66 | + console.error('h5') | ||
| 67 | + window.location.href = this.apkUrl; | ||
| 68 | + } else { | ||
| 69 | + // 这里是APP环境下使用的代码 | ||
| 70 | + this.redirectToStore() | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + }, | ||
| 74 | + gotoDownloadIOS() { | ||
| 75 | + if (process.env.UNI_PLATFORM === 'h5') { | ||
| 76 | + // 这里是H5环境下使用的代码 | ||
| 77 | + window.location.href = this.iosURl; | ||
| 78 | + } else { | ||
| 79 | + // 这里是APP环境下使用的代码 | ||
| 80 | + this.redirectToStore() | ||
| 81 | + } | ||
| 82 | + }, | ||
| 83 | + safeAreaInsets() { | ||
| 84 | + return uni.getSystemInfoSync().safeAreaInsets.bottom | ||
| 85 | + }, | ||
| 86 | + redirectToStore() { | ||
| 87 | + | ||
| 88 | + let platform = plus.os.name.toLocaleLowerCase(); | ||
| 89 | + if (platform.toLowerCase() === 'android') { | ||
| 90 | + if (this.apkUrl) { | ||
| 91 | + // 如果有提供的APK链接,则尝试直接下载并安装 | ||
| 92 | + plus.runtime.openURL(this.apkUrl); | ||
| 93 | + } else { | ||
| 94 | + // 否则,打开Google Play或其他市场的链接 | ||
| 95 | + plus.runtime.openURL(`market://details?id=${appId}`); | ||
| 96 | + } | ||
| 97 | + } else if (platform.toLowerCase() === 'ios') { | ||
| 98 | + plus.runtime.openURL(this.iosURl); | ||
| 99 | + } | ||
| 100 | + }, | ||
| 101 | + //全屏高 | ||
| 102 | + getCurrentHeight() { | ||
| 103 | + var h = 0; | ||
| 104 | + let device = uni.getSystemInfoSync(); | ||
| 105 | + let screenHeight = device.screenHeight; | ||
| 106 | + let statusBarHeight = device.statusBarHeight; | ||
| 107 | + let safeAreaInsets = device.safeAreaInsets.bottom | ||
| 108 | + h = screenHeight - statusBarHeight; | ||
| 109 | + h -= 44; | ||
| 110 | + h -= 60; | ||
| 111 | + if (isLoadMore.value) { | ||
| 112 | + h -= 40; | ||
| 113 | + } | ||
| 114 | + return h - safeAreaInsets + "px"; | ||
| 115 | + }, | ||
| 116 | + goto(index) { | ||
| 117 | + | ||
| 118 | + var url = "" | ||
| 119 | + if (index == 1) { | ||
| 120 | + url = "/pages/permission" | ||
| 121 | + | ||
| 122 | + } else if (index == 2) { | ||
| 123 | + url = "/pages/privacy" | ||
| 124 | + } else { | ||
| 125 | + url = "/pages/function" | ||
| 126 | + } | ||
| 127 | + uni.navigateTo({ | ||
| 128 | + url: url | ||
| 129 | + }) | ||
| 130 | + } | ||
| 131 | + } | ||
| 132 | + } | ||
| 133 | +</script> | ||
| 134 | + | ||
| 135 | +<style lang="scss" scoped> | ||
| 136 | + .page-home { | ||
| 137 | + display: flex; | ||
| 138 | + position: relative; | ||
| 139 | + flex-direction: column; | ||
| 140 | + justify-content: space-between; | ||
| 141 | + width: 100%; | ||
| 142 | + height:100vh; | ||
| 143 | + background-color: #F5F5F5; | ||
| 144 | + .top_bg { | ||
| 145 | + display: flex; | ||
| 146 | + position: absolute; | ||
| 147 | + width: 100%; | ||
| 148 | + height: 310px; | ||
| 149 | + top: 0; | ||
| 150 | + left: 0; | ||
| 151 | + background: linear-gradient(to bottom, #BC1212, #f5f5f5); | ||
| 152 | + z-index: 0; | ||
| 153 | + } | ||
| 154 | + .content { | ||
| 155 | + display: flex; | ||
| 156 | + flex-direction: column; | ||
| 157 | + align-items: center; | ||
| 158 | + justify-content: center; | ||
| 159 | + position: relative; | ||
| 160 | + flex-direction: column; | ||
| 161 | + width: 100%; | ||
| 162 | + | ||
| 163 | + .title { | ||
| 164 | + margin-top: 54px; | ||
| 165 | + color: #FFE8C3; | ||
| 166 | + font-size: 17px; | ||
| 167 | + } | ||
| 168 | + | ||
| 169 | + .logo_wrapper { | ||
| 170 | + margin-top: 60px; | ||
| 171 | + display: flex; | ||
| 172 | + justify-content: center; | ||
| 173 | + align-items: center; | ||
| 174 | + width: 72px; | ||
| 175 | + height: 72px; | ||
| 176 | + background: #ffffff; | ||
| 177 | + border-radius: 10px; | ||
| 178 | + | ||
| 179 | + .image { | ||
| 180 | + width: 42px; | ||
| 181 | + height: 47px; | ||
| 182 | + } | ||
| 183 | + } | ||
| 184 | + | ||
| 185 | + .appname_wrapper { | ||
| 186 | + display: flex; | ||
| 187 | + justify-content: center; | ||
| 188 | + align-items: center; | ||
| 189 | + width: 88px; | ||
| 190 | + height: 20px; | ||
| 191 | + margin-top: 22px; | ||
| 192 | + .image { | ||
| 193 | + width: 88px; | ||
| 194 | + height: 20px; | ||
| 195 | + } | ||
| 196 | + } | ||
| 197 | + .des_wrapper { | ||
| 198 | + margin-top: 21px; | ||
| 199 | + font-size: 16px; | ||
| 200 | + color: #757373; | ||
| 201 | + } | ||
| 202 | + | ||
| 203 | + | ||
| 204 | + | ||
| 205 | + .close_wrapper { | ||
| 206 | + display: flex; | ||
| 207 | + position: absolute; | ||
| 208 | + top: 52px; | ||
| 209 | + left: 10px; | ||
| 210 | + width: 44px; | ||
| 211 | + height: 44px; | ||
| 212 | + | ||
| 213 | + .image { | ||
| 214 | + width: 20px; | ||
| 215 | + height: 20px; | ||
| 216 | + } | ||
| 217 | + } | ||
| 218 | + | ||
| 219 | + .download_type_item { | ||
| 220 | + display: flex; | ||
| 221 | + flex-direction: row; | ||
| 222 | + justify-content: space-between; | ||
| 223 | + border-radius: 10px; | ||
| 224 | + height: 60px; | ||
| 225 | + width: 60%; | ||
| 226 | + background: linear-gradient(to right, #D82222, #B81F1F); | ||
| 227 | + margin-top: 20px; | ||
| 228 | + align-items: center; | ||
| 229 | + color: #ffffff; | ||
| 230 | + | ||
| 231 | + .icon_wrapper { | ||
| 232 | + display: flex; | ||
| 233 | + flex-direction: row; | ||
| 234 | + margin-left: 19px; | ||
| 235 | + | ||
| 236 | + .image { | ||
| 237 | + width: 20px; | ||
| 238 | + height: 24px; | ||
| 239 | + } | ||
| 240 | + | ||
| 241 | + .item_title { | ||
| 242 | + color: #ffffff; | ||
| 243 | + margin-left: 14px; | ||
| 244 | + } | ||
| 245 | + } | ||
| 246 | + | ||
| 247 | + .item_version { | ||
| 248 | + color: #F3AFAF; | ||
| 249 | + margin-right: 14px; | ||
| 250 | + } | ||
| 251 | + } | ||
| 252 | + | ||
| 253 | + .download_normal { | ||
| 254 | + display: flex; | ||
| 255 | + flex-direction: column; | ||
| 256 | + width: 100%; | ||
| 257 | + align-items: center; | ||
| 258 | + | ||
| 259 | + .download_version { | ||
| 260 | + color: #D67C7C; | ||
| 261 | + margin-top: 10px; | ||
| 262 | + } | ||
| 263 | + } | ||
| 264 | + | ||
| 265 | + | ||
| 266 | + } | ||
| 267 | + | ||
| 268 | + .bottom_wrapper { | ||
| 269 | + display: flex; | ||
| 270 | + width: 100%; | ||
| 271 | + flex-direction: column; | ||
| 272 | + margin-bottom: 30px; | ||
| 273 | + .bottom_item_wrapper { | ||
| 274 | + display: flex; | ||
| 275 | + flex-direction: row; | ||
| 276 | + justify-content: center; | ||
| 277 | + align-items: center; | ||
| 278 | + margin-bottom: 11px; | ||
| 279 | + | ||
| 280 | + .bottom_item { | ||
| 281 | + color: #626B76; | ||
| 282 | + font-size: 12px; | ||
| 283 | + } | ||
| 284 | + | ||
| 285 | + .line { | ||
| 286 | + width: 1px; | ||
| 287 | + height: 10px; | ||
| 288 | + background-color: #626B76; | ||
| 289 | + margin-left: 8px; | ||
| 290 | + margin-right: 8px; | ||
| 291 | + } | ||
| 292 | + | ||
| 293 | + } | ||
| 294 | + | ||
| 295 | + .bottom_title { | ||
| 296 | + display: flex; | ||
| 297 | + width: 100%; | ||
| 298 | + flex-direction: column; | ||
| 299 | + align-items: center; | ||
| 300 | + color: #626B76; | ||
| 301 | + font-size: 12px; | ||
| 302 | + } | ||
| 303 | + } | ||
| 304 | + } | ||
| 305 | +</style> |
pages/index/index.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <view class="content"> | ||
| 3 | + <image class="logo" src="/static/logo.png"></image> | ||
| 4 | + <view class="text-area"> | ||
| 5 | + <text class="title">{{title}}</text> | ||
| 6 | + </view> | ||
| 7 | + </view> | ||
| 8 | +</template> | ||
| 9 | + | ||
| 10 | +<script> | ||
| 11 | + export default { | ||
| 12 | + data() { | ||
| 13 | + return { | ||
| 14 | + title: 'Hello' | ||
| 15 | + } | ||
| 16 | + }, | ||
| 17 | + onLoad() { | ||
| 18 | + | ||
| 19 | + }, | ||
| 20 | + methods: { | ||
| 21 | + | ||
| 22 | + } | ||
| 23 | + } | ||
| 24 | +</script> | ||
| 25 | + | ||
| 26 | +<style> | ||
| 27 | + .content { | ||
| 28 | + display: flex; | ||
| 29 | + flex-direction: column; | ||
| 30 | + align-items: center; | ||
| 31 | + justify-content: center; | ||
| 32 | + } | ||
| 33 | + | ||
| 34 | + .logo { | ||
| 35 | + height: 200rpx; | ||
| 36 | + width: 200rpx; | ||
| 37 | + margin-top: 200rpx; | ||
| 38 | + margin-left: auto; | ||
| 39 | + margin-right: auto; | ||
| 40 | + margin-bottom: 50rpx; | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + .text-area { | ||
| 44 | + display: flex; | ||
| 45 | + justify-content: center; | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + .title { | ||
| 49 | + font-size: 36rpx; | ||
| 50 | + color: #8f8f94; | ||
| 51 | + } | ||
| 52 | +</style> |
pages/permission.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <view class="page-home"> | ||
| 3 | + <navigation-bar :title="'应用权限'"/> | ||
| 4 | + <view class="content"> | ||
| 5 | + <view class="list_item" v-for="(item,index) in list" :key="index"> | ||
| 6 | + <view class="image_wrapper"> | ||
| 7 | + <image class="image" :src="item.icon" mode="aspectFit"></image> | ||
| 8 | + </view> | ||
| 9 | + <view class="text_wrapper"> | ||
| 10 | + <view class="title">{{item.title}}</view> | ||
| 11 | + <view class="des">{{item.des}}</view> | ||
| 12 | + </view> | ||
| 13 | + </view> | ||
| 14 | + </view> | ||
| 15 | + </view> | ||
| 16 | +</template> | ||
| 17 | + | ||
| 18 | +<script> | ||
| 19 | + import navigationBar from '../components/navigationBar.vue'; | ||
| 20 | + export default { | ||
| 21 | + data() { | ||
| 22 | + return { | ||
| 23 | + list: [{title: "网络权限", icon: "../static/permission_1.png", des: "允许查看、访问网络连接"}, | ||
| 24 | + {title: "蓝牙权限 ", icon: "../static/permission_2.png", des: "允许使用蓝牙,允许发现和配对新的蓝牙设备,允许程序连接配对过的蓝牙设备"}, | ||
| 25 | + {title: "储存权限", icon: "../static/permission_3.png", des: "允许查看、使用内部储存,上传/下载笔记相关的文字图片"}, | ||
| 26 | + {title: "相机权限", icon: "../static/permission_4.png", des: "允许使用摄像头,拍照设置用户头像"} | ||
| 27 | + ] | ||
| 28 | + } | ||
| 29 | + }, | ||
| 30 | + components: { | ||
| 31 | + navigationBar | ||
| 32 | + }, | ||
| 33 | + onLoad() { | ||
| 34 | + | ||
| 35 | + }, | ||
| 36 | + methods: { | ||
| 37 | + | ||
| 38 | + } | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | +</script> | ||
| 42 | + | ||
| 43 | +<style lang="scss" scoped> | ||
| 44 | + .page-home { | ||
| 45 | + display: flex; | ||
| 46 | + position: relative; | ||
| 47 | + flex-direction: column; | ||
| 48 | + width: 100%; | ||
| 49 | + height:100vh; | ||
| 50 | + background-color: #F5F5F5; | ||
| 51 | + .content { | ||
| 52 | + display: flex; | ||
| 53 | + flex-direction: column; | ||
| 54 | + position: relative; | ||
| 55 | + width: 100%; | ||
| 56 | + .list_item { | ||
| 57 | + display: flex; | ||
| 58 | + position: relative; | ||
| 59 | + flex-direction: row; | ||
| 60 | + justify-content: space-between; | ||
| 61 | + margin-top: 30px; | ||
| 62 | + | ||
| 63 | + .image_wrapper { | ||
| 64 | + display: flex; | ||
| 65 | + margin-left: 24px; | ||
| 66 | + width: 56px; | ||
| 67 | + height: 56px; | ||
| 68 | + .image { | ||
| 69 | + width: 56px; | ||
| 70 | + height: 56px; | ||
| 71 | + } | ||
| 72 | + } | ||
| 73 | + .text_wrapper { | ||
| 74 | + display: flex; | ||
| 75 | + flex: 1; | ||
| 76 | + flex-direction: column; | ||
| 77 | + margin-left: 16px; | ||
| 78 | + margin-right: 26px; | ||
| 79 | + .title { | ||
| 80 | + display: flex; | ||
| 81 | + height: 25px; | ||
| 82 | + // justify-content: center; | ||
| 83 | + font-size: 18px; | ||
| 84 | + color: #2D2D2D; | ||
| 85 | + font-weight: 500; | ||
| 86 | + } | ||
| 87 | + .des { | ||
| 88 | + font-size: 14px; | ||
| 89 | + color: #626B76; | ||
| 90 | + flex-wrap: wrap; | ||
| 91 | + margin-top: 8px; | ||
| 92 | + line-height: 20px; | ||
| 93 | + } | ||
| 94 | + } | ||
| 95 | + | ||
| 96 | + } | ||
| 97 | + } | ||
| 98 | + } | ||
| 99 | +</style> |
pages/privacy.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <view class="page-home"> | ||
| 3 | + <navigation-bar :title="'隐私政策'"/> | ||
| 4 | + <view class="content"> | ||
| 5 | + | ||
| 6 | + | ||
| 7 | + </view> | ||
| 8 | + </view> | ||
| 9 | +</template> | ||
| 10 | + | ||
| 11 | +<script> | ||
| 12 | + import navigationBar from '../components/navigationBar.vue'; | ||
| 13 | + import * as API_download from "@/libs/download.js"; | ||
| 14 | + | ||
| 15 | + export default { | ||
| 16 | + components: { | ||
| 17 | + navigationBar | ||
| 18 | + }, | ||
| 19 | + data() { | ||
| 20 | + return { | ||
| 21 | + | ||
| 22 | + } | ||
| 23 | + }, | ||
| 24 | + onLoad() { | ||
| 25 | + this.requestPrivacy() | ||
| 26 | + }, | ||
| 27 | + methods: { | ||
| 28 | + requestPrivacy() { | ||
| 29 | + // API_download.getPrivacy("pp").then((res) => { | ||
| 30 | + // console.log("getPrivacy", res) | ||
| 31 | + // }).catch((error) => { | ||
| 32 | + // console.log(error) | ||
| 33 | + // }) | ||
| 34 | + } | ||
| 35 | + } | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | +</script> | ||
| 39 | + | ||
| 40 | +<style lang="scss" scoped> | ||
| 41 | + .page-home { | ||
| 42 | + display: flex; | ||
| 43 | + position: relative; | ||
| 44 | + flex-direction: column; | ||
| 45 | + justify-content: space-between; | ||
| 46 | + width: 100%; | ||
| 47 | + height:100vh; | ||
| 48 | + background-color: #F5F5F5; | ||
| 49 | + .content { | ||
| 50 | + display: flex; | ||
| 51 | + flex-direction: column; | ||
| 52 | + align-items: center; | ||
| 53 | + justify-content: center; | ||
| 54 | + position: relative; | ||
| 55 | + flex-direction: column; | ||
| 56 | + width: 100%; | ||
| 57 | + | ||
| 58 | + } | ||
| 59 | + } | ||
| 60 | +</style> |
static/download_close.png
0 → 100644
303 Bytes
static/download_title.png
0 → 100644
1.9 KB
static/function_list_1.png
0 → 100644
1.22 KB
static/function_list_2.png
0 → 100644
926 Bytes
static/function_list_3.png
0 → 100644
1.45 KB
static/function_list_4.png
0 → 100644
1.02 KB
static/function_list_5.png
0 → 100644
1.32 KB
static/home_anzhuo.png
0 → 100644
549 Bytes
static/home_apple.png
0 → 100644
525 Bytes
static/logo.png
0 → 100644
2.36 KB
static/navigation_back.png
0 → 100644
669 Bytes
static/permission_1.png
0 → 100644
2.31 KB
static/permission_2.png
0 → 100644
1.24 KB
static/permission_3.png
0 → 100644
1.06 KB
static/permission_4.png
0 → 100644
1.07 KB
uni.promisify.adaptor.js
0 → 100644
| 1 | +uni.addInterceptor({ | ||
| 2 | + returnValue (res) { | ||
| 3 | + if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) { | ||
| 4 | + return res; | ||
| 5 | + } | ||
| 6 | + return new Promise((resolve, reject) => { | ||
| 7 | + res.then((res) => { | ||
| 8 | + if (!res) return resolve(res) | ||
| 9 | + return res[0] ? reject(res[0]) : resolve(res[1]) | ||
| 10 | + }); | ||
| 11 | + }); | ||
| 12 | + }, | ||
| 13 | +}); |
uni.scss
0 → 100644
| 1 | +/** | ||
| 2 | + * 这里是uni-app内置的常用样式变量 | ||
| 3 | + * | ||
| 4 | + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 | ||
| 5 | + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App | ||
| 6 | + * | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 | ||
| 11 | + * | ||
| 12 | + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 | ||
| 13 | + */ | ||
| 14 | + | ||
| 15 | +/* 颜色变量 */ | ||
| 16 | + | ||
| 17 | +/* 行为相关颜色 */ | ||
| 18 | +$uni-color-primary: #007aff; | ||
| 19 | +$uni-color-success: #4cd964; | ||
| 20 | +$uni-color-warning: #f0ad4e; | ||
| 21 | +$uni-color-error: #dd524d; | ||
| 22 | + | ||
| 23 | +/* 文字基本颜色 */ | ||
| 24 | +$uni-text-color:#333;//基本色 | ||
| 25 | +$uni-text-color-inverse:#fff;//反色 | ||
| 26 | +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 | ||
| 27 | +$uni-text-color-placeholder: #808080; | ||
| 28 | +$uni-text-color-disable:#c0c0c0; | ||
| 29 | + | ||
| 30 | +/* 背景颜色 */ | ||
| 31 | +$uni-bg-color:#ffffff; | ||
| 32 | +$uni-bg-color-grey:#f8f8f8; | ||
| 33 | +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 | ||
| 34 | +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 | ||
| 35 | + | ||
| 36 | +/* 边框颜色 */ | ||
| 37 | +$uni-border-color:#c8c7cc; | ||
| 38 | + | ||
| 39 | +/* 尺寸变量 */ | ||
| 40 | + | ||
| 41 | +/* 文字尺寸 */ | ||
| 42 | +$uni-font-size-sm:12px; | ||
| 43 | +$uni-font-size-base:14px; | ||
| 44 | +$uni-font-size-lg:16px; | ||
| 45 | + | ||
| 46 | +/* 图片尺寸 */ | ||
| 47 | +$uni-img-size-sm:20px; | ||
| 48 | +$uni-img-size-base:26px; | ||
| 49 | +$uni-img-size-lg:40px; | ||
| 50 | + | ||
| 51 | +/* Border Radius */ | ||
| 52 | +$uni-border-radius-sm: 2px; | ||
| 53 | +$uni-border-radius-base: 3px; | ||
| 54 | +$uni-border-radius-lg: 6px; | ||
| 55 | +$uni-border-radius-circle: 50%; | ||
| 56 | + | ||
| 57 | +/* 水平间距 */ | ||
| 58 | +$uni-spacing-row-sm: 5px; | ||
| 59 | +$uni-spacing-row-base: 10px; | ||
| 60 | +$uni-spacing-row-lg: 15px; | ||
| 61 | + | ||
| 62 | +/* 垂直间距 */ | ||
| 63 | +$uni-spacing-col-sm: 4px; | ||
| 64 | +$uni-spacing-col-base: 8px; | ||
| 65 | +$uni-spacing-col-lg: 12px; | ||
| 66 | + | ||
| 67 | +/* 透明度 */ | ||
| 68 | +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 | ||
| 69 | + | ||
| 70 | +/* 文章场景相关 */ | ||
| 71 | +$uni-color-title: #2C405A; // 文章标题颜色 | ||
| 72 | +$uni-font-size-title:20px; | ||
| 73 | +$uni-color-subtitle: #555555; // 二级标题颜色 | ||
| 74 | +$uni-font-size-subtitle:26px; | ||
| 75 | +$uni-color-paragraph: #3F536E; // 文章段落颜色 | ||
| 76 | +$uni-font-size-paragraph:15px; |
unpackage/dist/cache/.vite/deps/package.json
0 → 100644
unpackage/dist/dev/mp-weixin/app.js
0 → 100644
| 1 | +"use strict"; | ||
| 2 | +Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); | ||
| 3 | +const common_vendor = require("./common/vendor.js"); | ||
| 4 | +if (!Math) { | ||
| 5 | + "./pages/home.js"; | ||
| 6 | + "./pages/function.js"; | ||
| 7 | + "./pages/privacy.js"; | ||
| 8 | + "./pages/permission.js"; | ||
| 9 | +} | ||
| 10 | +const _sfc_main = { | ||
| 11 | + onLaunch: function() { | ||
| 12 | + console.log("App Launch"); | ||
| 13 | + }, | ||
| 14 | + onShow: function() { | ||
| 15 | + console.log("App Show"); | ||
| 16 | + }, | ||
| 17 | + onHide: function() { | ||
| 18 | + console.log("App Hide"); | ||
| 19 | + } | ||
| 20 | +}; | ||
| 21 | +function createApp() { | ||
| 22 | + const app = common_vendor.createSSRApp(_sfc_main); | ||
| 23 | + return { | ||
| 24 | + app | ||
| 25 | + }; | ||
| 26 | +} | ||
| 27 | +createApp().app.mount("#app"); | ||
| 28 | +exports.createApp = createApp; |
unpackage/dist/dev/mp-weixin/app.json
0 → 100644
| 1 | +{ | ||
| 2 | + "pages": [ | ||
| 3 | + "pages/home", | ||
| 4 | + "pages/function", | ||
| 5 | + "pages/privacy", | ||
| 6 | + "pages/permission" | ||
| 7 | + ], | ||
| 8 | + "window": { | ||
| 9 | + "navigationBarTextStyle": "black", | ||
| 10 | + "navigationBarTitleText": "uni-app", | ||
| 11 | + "navigationBarBackgroundColor": "#F8F8F8", | ||
| 12 | + "backgroundColor": "#F8F8F8" | ||
| 13 | + }, | ||
| 14 | + "usingComponents": {} | ||
| 15 | +} |
unpackage/dist/dev/mp-weixin/app.wxss
0 → 100644
| 1 | +"use strict"; | ||
| 2 | +const _imports_0$1 = "/static/download_close.png"; | ||
| 3 | +const _imports_1 = "/static/logo.png"; | ||
| 4 | +const _imports_2 = "/static/download_title.png"; | ||
| 5 | +const _imports_3 = "/static/home_apple.png"; | ||
| 6 | +const _imports_4 = "/static/home_anzhuo.png"; | ||
| 7 | +const _imports_0 = "/static/navigation_back.png"; | ||
| 8 | +exports._imports_0 = _imports_0$1; | ||
| 9 | +exports._imports_0$1 = _imports_0; | ||
| 10 | +exports._imports_1 = _imports_1; | ||
| 11 | +exports._imports_2 = _imports_2; | ||
| 12 | +exports._imports_3 = _imports_3; | ||
| 13 | +exports._imports_4 = _imports_4; |
This diff could not be displayed because it is too large.
| 1 | +"use strict"; | ||
| 2 | +const common_vendor = require("../common/vendor.js"); | ||
| 3 | +const common_assets = require("../common/assets.js"); | ||
| 4 | +const _sfc_main = { | ||
| 5 | + props: { | ||
| 6 | + title: String | ||
| 7 | + }, | ||
| 8 | + data() { | ||
| 9 | + return {}; | ||
| 10 | + }, | ||
| 11 | + computed: { | ||
| 12 | + safeAreaInsets() { | ||
| 13 | + return common_vendor.index.getSystemInfoSync().safeAreaInsets.bottom; | ||
| 14 | + }, | ||
| 15 | + statusHeight() { | ||
| 16 | + let device = common_vendor.index.getSystemInfoSync(); | ||
| 17 | + return device.statusBarHeight + "px"; | ||
| 18 | + }, | ||
| 19 | + getNavigationHeight() { | ||
| 20 | + var h = 0; | ||
| 21 | + let device = common_vendor.index.getSystemInfoSync(); | ||
| 22 | + device.statusBarHeight; | ||
| 23 | + h += 44; | ||
| 24 | + return h + "px"; | ||
| 25 | + } | ||
| 26 | + }, | ||
| 27 | + onLoad() { | ||
| 28 | + }, | ||
| 29 | + methods: { | ||
| 30 | + backClick() { | ||
| 31 | + common_vendor.index.navigateBack(); | ||
| 32 | + } | ||
| 33 | + } | ||
| 34 | +}; | ||
| 35 | +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { | ||
| 36 | + return { | ||
| 37 | + a: common_assets._imports_0$1, | ||
| 38 | + b: $options.statusHeight, | ||
| 39 | + c: common_vendor.o((...args) => $options.backClick && $options.backClick(...args)), | ||
| 40 | + d: common_vendor.t($props.title), | ||
| 41 | + e: $options.statusHeight, | ||
| 42 | + f: $options.getNavigationHeight | ||
| 43 | + }; | ||
| 44 | +} | ||
| 45 | +const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-d53d6386"]]); | ||
| 46 | +wx.createComponent(Component); |
| 1 | +<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> |
| 1 | +/** | ||
| 2 | + * 这里是uni-app内置的常用样式变量 | ||
| 3 | + * | ||
| 4 | + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 | ||
| 5 | + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App | ||
| 6 | + * | ||
| 7 | + */ | ||
| 8 | +/** | ||
| 9 | + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 | ||
| 10 | + * | ||
| 11 | + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 | ||
| 12 | + */ | ||
| 13 | +/* 颜色变量 */ | ||
| 14 | +/* 行为相关颜色 */ | ||
| 15 | +/* 文字基本颜色 */ | ||
| 16 | +/* 背景颜色 */ | ||
| 17 | +/* 边框颜色 */ | ||
| 18 | +/* 尺寸变量 */ | ||
| 19 | +/* 文字尺寸 */ | ||
| 20 | +/* 图片尺寸 */ | ||
| 21 | +/* Border Radius */ | ||
| 22 | +/* 水平间距 */ | ||
| 23 | +/* 垂直间距 */ | ||
| 24 | +/* 透明度 */ | ||
| 25 | +/* 文章场景相关 */ | ||
| 26 | +.navigation.data-v-d53d6386 { | ||
| 27 | + display: flex; | ||
| 28 | + flex-direction: row; | ||
| 29 | + position: relative; | ||
| 30 | + background: linear-gradient(to right, #D82222, #B81F1F); | ||
| 31 | + align-items: center; | ||
| 32 | +} | ||
| 33 | +.navigation .back_btn.data-v-d53d6386 { | ||
| 34 | + display: flex; | ||
| 35 | + width: 44px; | ||
| 36 | + height: 44px; | ||
| 37 | + justify-content: center; | ||
| 38 | + align-items: center; | ||
| 39 | +} | ||
| 40 | +.navigation .back_btn .image.data-v-d53d6386 { | ||
| 41 | + width: 20px; | ||
| 42 | + height: 20px; | ||
| 43 | +} | ||
| 44 | +.navigation .title.data-v-d53d6386 { | ||
| 45 | + display: flex; | ||
| 46 | + top: 0; | ||
| 47 | + left: 50%; | ||
| 48 | + right: 50%; | ||
| 49 | + height: 44px; | ||
| 50 | + width: 100%; | ||
| 51 | + margin-right: 44px; | ||
| 52 | + justify-content: center; | ||
| 53 | + align-items: center; | ||
| 54 | + flex-direction: row; | ||
| 55 | + color: #FFE8C3; | ||
| 56 | +} |
| 1 | +"use strict"; | ||
| 2 | +const common_vendor = require("../common/vendor.js"); | ||
| 3 | +const navigationBar = () => "../components/navigationBar.js"; | ||
| 4 | +const _sfc_main = { | ||
| 5 | + components: { | ||
| 6 | + navigationBar | ||
| 7 | + }, | ||
| 8 | + data() { | ||
| 9 | + return { | ||
| 10 | + list: [ | ||
| 11 | + { title: "实体纸笔,传统书写", icon: "../static/function_list_1.png" }, | ||
| 12 | + { title: "蓝牙传输,一键连接", icon: "../static/function_list_2.png" }, | ||
| 13 | + { title: "线上线下,同步展示", icon: "../static/function_list_3.png" }, | ||
| 14 | + { title: "笔迹色彩,随心变换", icon: "../static/function_list_4.png" }, | ||
| 15 | + { title: "自由擦写,分类保存", icon: "../static/function_list_5.png" } | ||
| 16 | + ] | ||
| 17 | + }; | ||
| 18 | + }, | ||
| 19 | + onLoad() { | ||
| 20 | + }, | ||
| 21 | + methods: { | ||
| 22 | + getClass(index) { | ||
| 23 | + return index % 2 == 0 ? "" : ""; | ||
| 24 | + } | ||
| 25 | + } | ||
| 26 | +}; | ||
| 27 | +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { | ||
| 28 | + return { | ||
| 29 | + a: common_vendor.f($data.list, (item, index, i0) => { | ||
| 30 | + return { | ||
| 31 | + a: item.icon, | ||
| 32 | + b: common_vendor.t(item.title), | ||
| 33 | + c: index % 2 == 0 ? "#D65656" : "#A5A5A5", | ||
| 34 | + d: index | ||
| 35 | + }; | ||
| 36 | + }) | ||
| 37 | + }; | ||
| 38 | +} | ||
| 39 | +const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-6d5a3fba"]]); | ||
| 40 | +wx.createPage(MiniProgramPage); |
| 1 | +<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> |
| 1 | +/** | ||
| 2 | + * 这里是uni-app内置的常用样式变量 | ||
| 3 | + * | ||
| 4 | + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 | ||
| 5 | + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App | ||
| 6 | + * | ||
| 7 | + */ | ||
| 8 | +/** | ||
| 9 | + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 | ||
| 10 | + * | ||
| 11 | + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 | ||
| 12 | + */ | ||
| 13 | +/* 颜色变量 */ | ||
| 14 | +/* 行为相关颜色 */ | ||
| 15 | +/* 文字基本颜色 */ | ||
| 16 | +/* 背景颜色 */ | ||
| 17 | +/* 边框颜色 */ | ||
| 18 | +/* 尺寸变量 */ | ||
| 19 | +/* 文字尺寸 */ | ||
| 20 | +/* 图片尺寸 */ | ||
| 21 | +/* Border Radius */ | ||
| 22 | +/* 水平间距 */ | ||
| 23 | +/* 垂直间距 */ | ||
| 24 | +/* 透明度 */ | ||
| 25 | +/* 文章场景相关 */ | ||
| 26 | +.page-home.data-v-6d5a3fba { | ||
| 27 | + display: flex; | ||
| 28 | + position: relative; | ||
| 29 | + flex-direction: column; | ||
| 30 | + width: 100%; | ||
| 31 | + height: 100vh; | ||
| 32 | + background-color: #F5F5F5; | ||
| 33 | +} | ||
| 34 | +.page-home .content.data-v-6d5a3fba { | ||
| 35 | + display: flex; | ||
| 36 | + flex-direction: column; | ||
| 37 | + position: relative; | ||
| 38 | + width: 100%; | ||
| 39 | +} | ||
| 40 | +.page-home .content .title.data-v-6d5a3fba { | ||
| 41 | + display: flex; | ||
| 42 | + margin-top: 20px; | ||
| 43 | + margin-left: 20px; | ||
| 44 | + margin-right: 20px; | ||
| 45 | + flex-wrap: wrap; | ||
| 46 | + line-height: 24px; | ||
| 47 | + font-size: 14px; | ||
| 48 | + color: #1F2229; | ||
| 49 | +} | ||
| 50 | +.page-home .content .list_item.data-v-6d5a3fba { | ||
| 51 | + display: flex; | ||
| 52 | + position: relative; | ||
| 53 | + flex-direction: column; | ||
| 54 | + align-items: center; | ||
| 55 | + margin-top: 30px; | ||
| 56 | +} | ||
| 57 | +.page-home .content .list_item .image_wrapper.data-v-6d5a3fba { | ||
| 58 | + display: flex; | ||
| 59 | + position: absolute; | ||
| 60 | + top: 0; | ||
| 61 | + left: 50%; | ||
| 62 | + right: 50%; | ||
| 63 | + width: 32px; | ||
| 64 | + height: 32px; | ||
| 65 | +} | ||
| 66 | +.page-home .content .list_item .image_wrapper .image.data-v-6d5a3fba { | ||
| 67 | + width: 32px; | ||
| 68 | + height: 32px; | ||
| 69 | +} | ||
| 70 | +.page-home .content .list_item .des_wrapper.data-v-6d5a3fba { | ||
| 71 | + display: flex; | ||
| 72 | + justify-content: center; | ||
| 73 | + align-items: center; | ||
| 74 | + border-radius: 8px; | ||
| 75 | + border-style: solid; | ||
| 76 | + border-width: 1px; | ||
| 77 | + width: 80%; | ||
| 78 | + height: 50px; | ||
| 79 | + margin-top: 20px; | ||
| 80 | + font-size: 16px; | ||
| 81 | + color: #2D2D2D; | ||
| 82 | + font-weight: 500; | ||
| 83 | +} |
unpackage/dist/dev/mp-weixin/pages/home.js
0 → 100644
| 1 | +"use strict"; | ||
| 2 | +const common_vendor = require("../common/vendor.js"); | ||
| 3 | +const common_assets = require("../common/assets.js"); | ||
| 4 | +const _sfc_main = { | ||
| 5 | + data() { | ||
| 6 | + return { | ||
| 7 | + title: "Hello", | ||
| 8 | + apkUrl: "https://app.dyguoxin.com/android/smartPen.apk", | ||
| 9 | + iosURl: "https://testflight.apple.com/join/2etMUNQS" | ||
| 10 | + }; | ||
| 11 | + }, | ||
| 12 | + onLoad() { | ||
| 13 | + }, | ||
| 14 | + methods: { | ||
| 15 | + gotoDownloadAndroid() { | ||
| 16 | + this.redirectToStore(); | ||
| 17 | + }, | ||
| 18 | + gotoDownloadIOS() { | ||
| 19 | + this.redirectToStore(); | ||
| 20 | + }, | ||
| 21 | + safeAreaInsets() { | ||
| 22 | + return common_vendor.index.getSystemInfoSync().safeAreaInsets.bottom; | ||
| 23 | + }, | ||
| 24 | + redirectToStore() { | ||
| 25 | + let platform = plus.os.name.toLocaleLowerCase(); | ||
| 26 | + if (platform.toLowerCase() === "android") { | ||
| 27 | + if (this.apkUrl) { | ||
| 28 | + plus.runtime.openURL(this.apkUrl); | ||
| 29 | + } else { | ||
| 30 | + plus.runtime.openURL(`market://details?id=${appId}`); | ||
| 31 | + } | ||
| 32 | + } else if (platform.toLowerCase() === "ios") { | ||
| 33 | + plus.runtime.openURL(this.iosURl); | ||
| 34 | + } | ||
| 35 | + }, | ||
| 36 | + //全屏高 | ||
| 37 | + getCurrentHeight() { | ||
| 38 | + var h = 0; | ||
| 39 | + let device = common_vendor.index.getSystemInfoSync(); | ||
| 40 | + let screenHeight = device.screenHeight; | ||
| 41 | + let statusBarHeight = device.statusBarHeight; | ||
| 42 | + let safeAreaInsets = device.safeAreaInsets.bottom; | ||
| 43 | + h = screenHeight - statusBarHeight; | ||
| 44 | + h -= 44; | ||
| 45 | + h -= 60; | ||
| 46 | + if (isLoadMore.value) { | ||
| 47 | + h -= 40; | ||
| 48 | + } | ||
| 49 | + return h - safeAreaInsets + "px"; | ||
| 50 | + }, | ||
| 51 | + goto(index) { | ||
| 52 | + var url = ""; | ||
| 53 | + if (index == 1) { | ||
| 54 | + url = "/pages/permission"; | ||
| 55 | + } else if (index == 2) { | ||
| 56 | + url = "/pages/privacy"; | ||
| 57 | + } else { | ||
| 58 | + url = "/pages/function"; | ||
| 59 | + } | ||
| 60 | + common_vendor.index.navigateTo({ | ||
| 61 | + url | ||
| 62 | + }); | ||
| 63 | + } | ||
| 64 | + } | ||
| 65 | +}; | ||
| 66 | +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { | ||
| 67 | + return { | ||
| 68 | + a: common_assets._imports_0, | ||
| 69 | + b: common_assets._imports_1, | ||
| 70 | + c: common_assets._imports_2, | ||
| 71 | + d: common_assets._imports_3, | ||
| 72 | + e: common_vendor.o((...args) => $options.gotoDownloadIOS && $options.gotoDownloadIOS(...args)), | ||
| 73 | + f: common_assets._imports_4, | ||
| 74 | + g: common_vendor.o((...args) => $options.gotoDownloadAndroid && $options.gotoDownloadAndroid(...args)), | ||
| 75 | + h: common_vendor.o(($event) => $options.goto(1)), | ||
| 76 | + i: common_vendor.o(($event) => $options.goto(2)), | ||
| 77 | + j: common_vendor.o(($event) => $options.goto(3)) | ||
| 78 | + }; | ||
| 79 | +} | ||
| 80 | +const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-41317691"]]); | ||
| 81 | +wx.createPage(MiniProgramPage); |
unpackage/dist/dev/mp-weixin/pages/home.json
0 → 100644
unpackage/dist/dev/mp-weixin/pages/home.wxml
0 → 100644
| 1 | +<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> |
unpackage/dist/dev/mp-weixin/pages/home.wxss
0 → 100644
| 1 | +/** | ||
| 2 | + * 这里是uni-app内置的常用样式变量 | ||
| 3 | + * | ||
| 4 | + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 | ||
| 5 | + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App | ||
| 6 | + * | ||
| 7 | + */ | ||
| 8 | +/** | ||
| 9 | + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 | ||
| 10 | + * | ||
| 11 | + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 | ||
| 12 | + */ | ||
| 13 | +/* 颜色变量 */ | ||
| 14 | +/* 行为相关颜色 */ | ||
| 15 | +/* 文字基本颜色 */ | ||
| 16 | +/* 背景颜色 */ | ||
| 17 | +/* 边框颜色 */ | ||
| 18 | +/* 尺寸变量 */ | ||
| 19 | +/* 文字尺寸 */ | ||
| 20 | +/* 图片尺寸 */ | ||
| 21 | +/* Border Radius */ | ||
| 22 | +/* 水平间距 */ | ||
| 23 | +/* 垂直间距 */ | ||
| 24 | +/* 透明度 */ | ||
| 25 | +/* 文章场景相关 */ | ||
| 26 | +.page-home.data-v-41317691 { | ||
| 27 | + display: flex; | ||
| 28 | + position: relative; | ||
| 29 | + flex-direction: column; | ||
| 30 | + justify-content: space-between; | ||
| 31 | + width: 100%; | ||
| 32 | + height: 100vh; | ||
| 33 | + background-color: #F5F5F5; | ||
| 34 | +} | ||
| 35 | +.page-home .top_bg.data-v-41317691 { | ||
| 36 | + display: flex; | ||
| 37 | + position: absolute; | ||
| 38 | + width: 100%; | ||
| 39 | + height: 310px; | ||
| 40 | + top: 0; | ||
| 41 | + left: 0; | ||
| 42 | + background: linear-gradient(to bottom, #BC1212, #f5f5f5); | ||
| 43 | + z-index: 0; | ||
| 44 | +} | ||
| 45 | +.page-home .content.data-v-41317691 { | ||
| 46 | + display: flex; | ||
| 47 | + flex-direction: column; | ||
| 48 | + align-items: center; | ||
| 49 | + justify-content: center; | ||
| 50 | + position: relative; | ||
| 51 | + flex-direction: column; | ||
| 52 | + width: 100%; | ||
| 53 | +} | ||
| 54 | +.page-home .content .title.data-v-41317691 { | ||
| 55 | + margin-top: 54px; | ||
| 56 | + color: #FFE8C3; | ||
| 57 | + font-size: 17px; | ||
| 58 | +} | ||
| 59 | +.page-home .content .logo_wrapper.data-v-41317691 { | ||
| 60 | + margin-top: 60px; | ||
| 61 | + display: flex; | ||
| 62 | + justify-content: center; | ||
| 63 | + align-items: center; | ||
| 64 | + width: 72px; | ||
| 65 | + height: 72px; | ||
| 66 | + background: #ffffff; | ||
| 67 | + border-radius: 10px; | ||
| 68 | +} | ||
| 69 | +.page-home .content .logo_wrapper .image.data-v-41317691 { | ||
| 70 | + width: 42px; | ||
| 71 | + height: 47px; | ||
| 72 | +} | ||
| 73 | +.page-home .content .appname_wrapper.data-v-41317691 { | ||
| 74 | + display: flex; | ||
| 75 | + justify-content: center; | ||
| 76 | + align-items: center; | ||
| 77 | + width: 88px; | ||
| 78 | + height: 20px; | ||
| 79 | + margin-top: 22px; | ||
| 80 | +} | ||
| 81 | +.page-home .content .appname_wrapper .image.data-v-41317691 { | ||
| 82 | + width: 88px; | ||
| 83 | + height: 20px; | ||
| 84 | +} | ||
| 85 | +.page-home .content .des_wrapper.data-v-41317691 { | ||
| 86 | + margin-top: 21px; | ||
| 87 | + font-size: 16px; | ||
| 88 | + color: #757373; | ||
| 89 | +} | ||
| 90 | +.page-home .content .close_wrapper.data-v-41317691 { | ||
| 91 | + display: flex; | ||
| 92 | + position: absolute; | ||
| 93 | + top: 52px; | ||
| 94 | + left: 10px; | ||
| 95 | + width: 44px; | ||
| 96 | + height: 44px; | ||
| 97 | +} | ||
| 98 | +.page-home .content .close_wrapper .image.data-v-41317691 { | ||
| 99 | + width: 20px; | ||
| 100 | + height: 20px; | ||
| 101 | +} | ||
| 102 | +.page-home .content .download_type_item.data-v-41317691 { | ||
| 103 | + display: flex; | ||
| 104 | + flex-direction: row; | ||
| 105 | + justify-content: space-between; | ||
| 106 | + border-radius: 10px; | ||
| 107 | + height: 60px; | ||
| 108 | + width: 60%; | ||
| 109 | + background: linear-gradient(to right, #D82222, #B81F1F); | ||
| 110 | + margin-top: 20px; | ||
| 111 | + align-items: center; | ||
| 112 | + color: #ffffff; | ||
| 113 | +} | ||
| 114 | +.page-home .content .download_type_item .icon_wrapper.data-v-41317691 { | ||
| 115 | + display: flex; | ||
| 116 | + flex-direction: row; | ||
| 117 | + margin-left: 19px; | ||
| 118 | +} | ||
| 119 | +.page-home .content .download_type_item .icon_wrapper .image.data-v-41317691 { | ||
| 120 | + width: 20px; | ||
| 121 | + height: 24px; | ||
| 122 | +} | ||
| 123 | +.page-home .content .download_type_item .icon_wrapper .item_title.data-v-41317691 { | ||
| 124 | + color: #ffffff; | ||
| 125 | + margin-left: 14px; | ||
| 126 | +} | ||
| 127 | +.page-home .content .download_type_item .item_version.data-v-41317691 { | ||
| 128 | + color: #F3AFAF; | ||
| 129 | + margin-right: 14px; | ||
| 130 | +} | ||
| 131 | +.page-home .content .download_normal.data-v-41317691 { | ||
| 132 | + display: flex; | ||
| 133 | + flex-direction: column; | ||
| 134 | + width: 100%; | ||
| 135 | + align-items: center; | ||
| 136 | +} | ||
| 137 | +.page-home .content .download_normal .download_version.data-v-41317691 { | ||
| 138 | + color: #D67C7C; | ||
| 139 | + margin-top: 10px; | ||
| 140 | +} | ||
| 141 | +.page-home .bottom_wrapper.data-v-41317691 { | ||
| 142 | + display: flex; | ||
| 143 | + width: 100%; | ||
| 144 | + flex-direction: column; | ||
| 145 | + margin-bottom: 30px; | ||
| 146 | +} | ||
| 147 | +.page-home .bottom_wrapper .bottom_item_wrapper.data-v-41317691 { | ||
| 148 | + display: flex; | ||
| 149 | + flex-direction: row; | ||
| 150 | + justify-content: center; | ||
| 151 | + align-items: center; | ||
| 152 | + margin-bottom: 11px; | ||
| 153 | +} | ||
| 154 | +.page-home .bottom_wrapper .bottom_item_wrapper .bottom_item.data-v-41317691 { | ||
| 155 | + color: #626B76; | ||
| 156 | + font-size: 12px; | ||
| 157 | +} | ||
| 158 | +.page-home .bottom_wrapper .bottom_item_wrapper .line.data-v-41317691 { | ||
| 159 | + width: 1px; | ||
| 160 | + height: 10px; | ||
| 161 | + background-color: #626B76; | ||
| 162 | + margin-left: 8px; | ||
| 163 | + margin-right: 8px; | ||
| 164 | +} | ||
| 165 | +.page-home .bottom_wrapper .bottom_title.data-v-41317691 { | ||
| 166 | + display: flex; | ||
| 167 | + width: 100%; | ||
| 168 | + flex-direction: column; | ||
| 169 | + align-items: center; | ||
| 170 | + color: #626B76; | ||
| 171 | + font-size: 12px; | ||
| 172 | +} |
| 1 | +"use strict"; | ||
| 2 | +const common_vendor = require("../common/vendor.js"); | ||
| 3 | +const navigationBar = () => "../components/navigationBar.js"; | ||
| 4 | +const _sfc_main = { | ||
| 5 | + data() { | ||
| 6 | + return { | ||
| 7 | + list: [ | ||
| 8 | + { title: "网络权限", icon: "../static/permission_1.png", des: "允许查看、访问网络连接" }, | ||
| 9 | + { title: "蓝牙权限 ", icon: "../static/permission_2.png", des: "允许使用蓝牙,允许发现和配对新的蓝牙设备,允许程序连接配对过的蓝牙设备" }, | ||
| 10 | + { title: "储存权限", icon: "../static/permission_3.png", des: "允许查看、使用内部储存,上传/下载笔记相关的文字图片" }, | ||
| 11 | + { title: "相机权限", icon: "../static/permission_4.png", des: "允许使用摄像头,拍照设置用户头像" } | ||
| 12 | + ] | ||
| 13 | + }; | ||
| 14 | + }, | ||
| 15 | + components: { | ||
| 16 | + navigationBar | ||
| 17 | + }, | ||
| 18 | + onLoad() { | ||
| 19 | + }, | ||
| 20 | + methods: {} | ||
| 21 | +}; | ||
| 22 | +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { | ||
| 23 | + return { | ||
| 24 | + a: common_vendor.f($data.list, (item, index, i0) => { | ||
| 25 | + return { | ||
| 26 | + a: item.icon, | ||
| 27 | + b: common_vendor.t(item.title), | ||
| 28 | + c: common_vendor.t(item.des), | ||
| 29 | + d: index | ||
| 30 | + }; | ||
| 31 | + }) | ||
| 32 | + }; | ||
| 33 | +} | ||
| 34 | +const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-8aa5a9a1"]]); | ||
| 35 | +wx.createPage(MiniProgramPage); |
| 1 | +<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> |
| 1 | +/** | ||
| 2 | + * 这里是uni-app内置的常用样式变量 | ||
| 3 | + * | ||
| 4 | + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 | ||
| 5 | + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App | ||
| 6 | + * | ||
| 7 | + */ | ||
| 8 | +/** | ||
| 9 | + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 | ||
| 10 | + * | ||
| 11 | + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 | ||
| 12 | + */ | ||
| 13 | +/* 颜色变量 */ | ||
| 14 | +/* 行为相关颜色 */ | ||
| 15 | +/* 文字基本颜色 */ | ||
| 16 | +/* 背景颜色 */ | ||
| 17 | +/* 边框颜色 */ | ||
| 18 | +/* 尺寸变量 */ | ||
| 19 | +/* 文字尺寸 */ | ||
| 20 | +/* 图片尺寸 */ | ||
| 21 | +/* Border Radius */ | ||
| 22 | +/* 水平间距 */ | ||
| 23 | +/* 垂直间距 */ | ||
| 24 | +/* 透明度 */ | ||
| 25 | +/* 文章场景相关 */ | ||
| 26 | +.page-home.data-v-8aa5a9a1 { | ||
| 27 | + display: flex; | ||
| 28 | + position: relative; | ||
| 29 | + flex-direction: column; | ||
| 30 | + width: 100%; | ||
| 31 | + height: 100vh; | ||
| 32 | + background-color: #F5F5F5; | ||
| 33 | +} | ||
| 34 | +.page-home .content.data-v-8aa5a9a1 { | ||
| 35 | + display: flex; | ||
| 36 | + flex-direction: column; | ||
| 37 | + position: relative; | ||
| 38 | + width: 100%; | ||
| 39 | +} | ||
| 40 | +.page-home .content .list_item.data-v-8aa5a9a1 { | ||
| 41 | + display: flex; | ||
| 42 | + position: relative; | ||
| 43 | + flex-direction: row; | ||
| 44 | + justify-content: space-between; | ||
| 45 | + margin-top: 30px; | ||
| 46 | +} | ||
| 47 | +.page-home .content .list_item .image_wrapper.data-v-8aa5a9a1 { | ||
| 48 | + display: flex; | ||
| 49 | + margin-left: 24px; | ||
| 50 | + width: 56px; | ||
| 51 | + height: 56px; | ||
| 52 | +} | ||
| 53 | +.page-home .content .list_item .image_wrapper .image.data-v-8aa5a9a1 { | ||
| 54 | + width: 56px; | ||
| 55 | + height: 56px; | ||
| 56 | +} | ||
| 57 | +.page-home .content .list_item .text_wrapper.data-v-8aa5a9a1 { | ||
| 58 | + display: flex; | ||
| 59 | + flex: 1; | ||
| 60 | + flex-direction: column; | ||
| 61 | + margin-left: 16px; | ||
| 62 | + margin-right: 26px; | ||
| 63 | +} | ||
| 64 | +.page-home .content .list_item .text_wrapper .title.data-v-8aa5a9a1 { | ||
| 65 | + display: flex; | ||
| 66 | + height: 25px; | ||
| 67 | + font-size: 18px; | ||
| 68 | + color: #2D2D2D; | ||
| 69 | + font-weight: 500; | ||
| 70 | +} | ||
| 71 | +.page-home .content .list_item .text_wrapper .des.data-v-8aa5a9a1 { | ||
| 72 | + font-size: 14px; | ||
| 73 | + color: #626B76; | ||
| 74 | + flex-wrap: wrap; | ||
| 75 | + margin-top: 8px; | ||
| 76 | + line-height: 20px; | ||
| 77 | +} |
| 1 | +"use strict"; | ||
| 2 | +require("../libs/download.js"); | ||
| 3 | +const common_vendor = require("../common/vendor.js"); | ||
| 4 | +const navigationBar = () => "../components/navigationBar.js"; | ||
| 5 | +const _sfc_main = { | ||
| 6 | + components: { | ||
| 7 | + navigationBar | ||
| 8 | + }, | ||
| 9 | + data() { | ||
| 10 | + return {}; | ||
| 11 | + }, | ||
| 12 | + onLoad() { | ||
| 13 | + this.requestPrivacy(); | ||
| 14 | + }, | ||
| 15 | + methods: { | ||
| 16 | + requestPrivacy() { | ||
| 17 | + } | ||
| 18 | + } | ||
| 19 | +}; | ||
| 20 | +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { | ||
| 21 | + return {}; | ||
| 22 | +} | ||
| 23 | +const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-82ab98bb"]]); | ||
| 24 | +wx.createPage(MiniProgramPage); |
| 1 | +<view class="page-home data-v-82ab98bb"><navigation-bar class="data-v-82ab98bb" title="{{'隐私政策'}}"/><view class="content data-v-82ab98bb"></view></view> |
| 1 | +/** | ||
| 2 | + * 这里是uni-app内置的常用样式变量 | ||
| 3 | + * | ||
| 4 | + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 | ||
| 5 | + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App | ||
| 6 | + * | ||
| 7 | + */ | ||
| 8 | +/** | ||
| 9 | + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 | ||
| 10 | + * | ||
| 11 | + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 | ||
| 12 | + */ | ||
| 13 | +/* 颜色变量 */ | ||
| 14 | +/* 行为相关颜色 */ | ||
| 15 | +/* 文字基本颜色 */ | ||
| 16 | +/* 背景颜色 */ | ||
| 17 | +/* 边框颜色 */ | ||
| 18 | +/* 尺寸变量 */ | ||
| 19 | +/* 文字尺寸 */ | ||
| 20 | +/* 图片尺寸 */ | ||
| 21 | +/* Border Radius */ | ||
| 22 | +/* 水平间距 */ | ||
| 23 | +/* 垂直间距 */ | ||
| 24 | +/* 透明度 */ | ||
| 25 | +/* 文章场景相关 */ | ||
| 26 | +.page-home.data-v-82ab98bb { | ||
| 27 | + display: flex; | ||
| 28 | + position: relative; | ||
| 29 | + flex-direction: column; | ||
| 30 | + justify-content: space-between; | ||
| 31 | + width: 100%; | ||
| 32 | + height: 100vh; | ||
| 33 | + background-color: #F5F5F5; | ||
| 34 | +} | ||
| 35 | +.page-home .content.data-v-82ab98bb { | ||
| 36 | + display: flex; | ||
| 37 | + flex-direction: column; | ||
| 38 | + align-items: center; | ||
| 39 | + justify-content: center; | ||
| 40 | + position: relative; | ||
| 41 | + flex-direction: column; | ||
| 42 | + width: 100%; | ||
| 43 | +} |
| 1 | +{ | ||
| 2 | + "description": "项目配置文件。", | ||
| 3 | + "packOptions": { | ||
| 4 | + "ignore": [], | ||
| 5 | + "include": [] | ||
| 6 | + }, | ||
| 7 | + "setting": { | ||
| 8 | + "urlCheck": false, | ||
| 9 | + "es6": true, | ||
| 10 | + "postcss": false, | ||
| 11 | + "minified": false, | ||
| 12 | + "newFeature": true, | ||
| 13 | + "bigPackageSizeSupport": true, | ||
| 14 | + "babelSetting": { | ||
| 15 | + "ignore": [], | ||
| 16 | + "disablePlugins": [], | ||
| 17 | + "outputPath": "" | ||
| 18 | + } | ||
| 19 | + }, | ||
| 20 | + "compileType": "miniprogram", | ||
| 21 | + "libVersion": "3.7.1", | ||
| 22 | + "appid": "touristappid", | ||
| 23 | + "projectname": "download", | ||
| 24 | + "condition": {}, | ||
| 25 | + "editorSetting": { | ||
| 26 | + "tabIndent": "insertSpaces", | ||
| 27 | + "tabSize": 2 | ||
| 28 | + } | ||
| 29 | +} |
303 Bytes
1.9 KB
1.22 KB
926 Bytes
1.45 KB
1.02 KB
1.32 KB
549 Bytes
525 Bytes
unpackage/dist/dev/mp-weixin/static/logo.png
0 → 100644
2.36 KB
669 Bytes
2.31 KB
1.24 KB
1.06 KB
1.07 KB
-
Please register or login to post a comment