From 6211bfda7c414050ec4838e35bde20fa4ae726ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=8B=E4=BA=8E=E5=88=9D=E8=A7=81?= <752204717@qq.com> Date: Mon, 4 Nov 2024 18:08:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .hbuilderx/launch.json | 4 +- common/appcomact.js | 37 + common/http.api.js | 58 + common/http.interceptor.js | 68 + common/md5.js | 695 ++++++++ components/battery.vue | 63 + components/myProgress.vue | 121 ++ components/virtualList.vue | 135 ++ manifest.json | 509 +++--- pages.json | 9 + pages/bookShop/commodityDetail copy.vue | 1 + pages/bookShop/commodityDetail.vue | 1 + pages/peanut/home.vue | 9 +- pages/read/localread.vue | 1955 +++++++++++++++++++++ pages/read/read.vue | 2055 +++++++++++++++++++++++ pages/talkBook/talkBookDetail.vue | 1978 ++++++++++++---------- static/background0.jpg | Bin 0 -> 7387 bytes static/background1.jpg | Bin 0 -> 2026 bytes utils/utils.js | 58 +- 19 files changed, 6559 insertions(+), 1197 deletions(-) create mode 100644 common/appcomact.js create mode 100644 common/http.api.js create mode 100644 common/http.interceptor.js create mode 100644 common/md5.js create mode 100644 components/battery.vue create mode 100644 components/myProgress.vue create mode 100644 components/virtualList.vue create mode 100644 pages/read/localread.vue create mode 100644 pages/read/read.vue create mode 100644 static/background0.jpg create mode 100644 static/background1.jpg diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json index 0d12f45..0852864 100644 --- a/.hbuilderx/launch.json +++ b/.hbuilderx/launch.json @@ -20,11 +20,11 @@ "type" : "uniCloud" }, { - "playground" : "custom", + "playground" : "standard", "type" : "uni-app:app-ios" }, { - "playground" : "custom", + "playground" : "standard", "type" : "uni-app:app-android" } ] diff --git a/common/appcomact.js b/common/appcomact.js new file mode 100644 index 0000000..1227ff0 --- /dev/null +++ b/common/appcomact.js @@ -0,0 +1,37 @@ + + +export function getItem(key){ + // #ifdef APP-PLUS + return plus.storage.getItem(key); + // #endif + // #ifdef APP-PLUS + return uni.getStorageSync(key); + // #endif + + }; +export function setItem(key,value){ + // #ifdef APP-PLUS + return plus.storage.setItem(key,value); + // #endif + // #ifdef APP-PLUS + return uni.setStorageSync(key,value); + // #endif + }; + +export function removeItem(key){ + // #ifdef APP-PLUS + return plus.storage.removeItem(key) + // #endif + // #ifdef APP-PLUS + return uni.removeStorageSync(key); + // #endif + }; + +export function setFullscreen(type){ + // #ifdef APP-PLUS + plus.navigator.setFullscreen(type); + // #endif + // #ifndef APP-PLUS + return false; + // #endif +} \ No newline at end of file diff --git a/common/http.api.js b/common/http.api.js new file mode 100644 index 0000000..eb589d2 --- /dev/null +++ b/common/http.api.js @@ -0,0 +1,58 @@ +// 如果没有通过拦截器配置域名的话,可以在这里写上完整的URL(加上域名部分) + +// 此处第二个参数vm,就是我们在页面使用的this,你可以通过vm获取vuex等操作,更多内容详见uView对拦截器的介绍部分: +// https://uviewui.com/js/http.html#%E4%BD%95%E8%B0%93%E8%AF%B7%E6%B1%82%E6%8B%A6%E6%88%AA%EF%BC%9F +const install = (Vue, vm) => { + // 此处没有使用传入的params参数 + + // 此处使用了传入的params参数,一切自定义即可 + let getByViews = (params = {}) => vm.$u.post('/api/getbooklistbyviews', params); + let getByTime = (params = {}) => vm.$u.post('/api/getbooklistbytime', params); + + // 图书详情和目录 + let getDetail = (params = {}) => vm.$u.post('/api/getbookinfo', params); + + // 首页banner + let getBanner = (params = {}) => vm.$u.post('/api/getbanner', params); + + // 获取分类信息 + let getCategorys = (params = {}) => vm.$u.post('/api/categorylist', params); + + // 根据分类名字获取图书 + let getByCname = (params = {}) => vm.$u.post('/api/getbooklistbycategory', params); + let getByCid = (params = {}) => vm.$u.post('/api/getbooklistbycid', params); + + let getRankList = (params = {}) => vm.$u.post('/api/getbooklistbyrank', params); + + let getText = (params = {}) => vm.$u.post('/api/getcontent', params); + + let getSearch = (params = {}) => vm.$u.post('/api/search', params); + // 更新阅读量 + let updateViews = (params = {}) => vm.$u.post('/api/updateviews', params); + // 注册or登录 + let loginto = (params = {}) => vm.$u.post('/member/login', params); + + // 修改密码 + let editpass = (params = {}) => vm.$u.post('/member/editpass', params); + + + vm.$u.api = { + getByViews, + getByTime, + getBanner, + getCategorys, + getByCname, + getByCid, + getRankList, + getDetail, + getText, + getSearch, + updateViews, + loginto, + editpass + }; +} + +export default { + install +} diff --git a/common/http.interceptor.js b/common/http.interceptor.js new file mode 100644 index 0000000..80a048a --- /dev/null +++ b/common/http.interceptor.js @@ -0,0 +1,68 @@ +import md5 from './md5.js' +// 这里的vm,就是我们在vue文件里面的this,所以我们能在这里获取vuex的变量,比如存放在里面的token +// 同时,我们也可以在此使用getApp().globalData,如果你把token放在getApp().globalData的话,也是可以使用的 +const install = (Vue, vm) => { + Vue.prototype.$u.http.setConfig({ + baseUrl: vm.apidomain, + // 如果将此值设置为true,拦截回调中将会返回服务端返回的所有数据response,而不是response.data + // 设置为true后,就需要在this.$u.http.interceptor.response进行多一次的判断,请打印查看具体值 + // originalData: true, + // 设置自定义头部content-type + header: { + 'content-type': 'application/x-www-form-urlencoded' + } + }); + // 请求拦截,配置Token等参数 + Vue.prototype.$u.http.interceptor.request = (config) => { + // config.header.Token = 'xxxxxx'; + + // 方式一,存放在vuex的token,假设使用了uView封装的vuex方式,见:https://uviewui.com/components/globalVariable.html + // config.header.token = vm.token; + + // 方式二,如果没有使用uView封装的vuex方法,那么需要使用$store.state获取 + // config.header.token = vm.$store.state.token; + + // 方式三,如果token放在了globalData,通过getApp().globalData获取 + // config.header.token = getApp().globalData.username; + + // 方式四,如果token放在了Storage本地存储中,拦截是每次请求都执行的,所以哪怕您重新登录修改了Storage,下一次的请求将会是最新值 + // const token = uni.getStorageSync('token'); + // config.header.token = token; + // const token = uni.getStorageSync('access_token'); + // if(token){ + // config.header.access_token = token; + // // config.header.Token = 'xxxxxx'; + // } + if (config.data) { + let tmp = uni.getStorageSync('lifeData'); + if(tmp['vuex_uid']){ + config.data['userid'] = tmp['vuex_uid'] + + } + if(tmp['vuex_token']){ + config.data['token'] = tmp['vuex_token'] + } + } + // console.log(config); + return config; + } + // 响应拦截,判断状态码是否通过 + Vue.prototype.$u.http.interceptor.response = (res) => { + if (typeof res.status !== 'undefined') { + // res为服务端返回值,可能有code,result等字段 + // 这里对res.result进行返回,将会在this.$u.post(url).then(res => {})的then回调中的res的到 + // 如果配置了originalData为true,请留意这里的返回值 + return res; + } else { + // vm.$u.toast('抱歉出错了:' + res) + // console.log('httpinert.js', res); + // 如果返回false,则会调用Promise的reject回调, + // 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中,res为服务端的返回值 + return false; + } + } +} + +export default { + install +} diff --git a/common/md5.js b/common/md5.js new file mode 100644 index 0000000..9cdd369 --- /dev/null +++ b/common/md5.js @@ -0,0 +1,695 @@ +/** + * [js-md5]{@link https://github.com/emn178/js-md5} + * + * @namespace md5 + * @version 0.7.3 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */ +(function() { + 'use strict'; + + var ERROR = 'input is invalid type'; + var WINDOW = typeof window === 'object'; + var root = WINDOW ? window : {}; + if (root.JS_MD5_NO_WINDOW) { + WINDOW = false; + } + var WEB_WORKER = !WINDOW && typeof self === 'object'; + var NODE_JS = !root.JS_MD5_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions + .node; + if (NODE_JS) { + root = global; + } else if (WEB_WORKER) { + root = self; + } + var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports; + var AMD = typeof define === 'function' && define.amd; + var ARRAY_BUFFER = !root.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined'; + var HEX_CHARS = '0123456789abcdef'.split(''); + var EXTRA = [128, 32768, 8388608, -2147483648]; + var SHIFT = [0, 8, 16, 24]; + var OUTPUT_TYPES = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer', 'base64']; + var BASE64_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + + var blocks = [], + buffer8; + if (ARRAY_BUFFER) { + var buffer = new ArrayBuffer(68); + buffer8 = new Uint8Array(buffer); + blocks = new Uint32Array(buffer); + } + + if (root.JS_MD5_NO_NODE_JS || !Array.isArray) { + Array.isArray = function(obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; + }; + } + + if (ARRAY_BUFFER && (root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) { + ArrayBuffer.isView = function(obj) { + return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer; + }; + } + + /** + * @method hex + * @memberof md5 + * @description Output hash as hex string + * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash + * @returns {String} Hex string + * @example + * md5.hex('The quick brown fox jumps over the lazy dog'); + * // equal to + * md5('The quick brown fox jumps over the lazy dog'); + */ + /** + * @method digest + * @memberof md5 + * @description Output hash as bytes array + * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash + * @returns {Array} Bytes array + * @example + * md5.digest('The quick brown fox jumps over the lazy dog'); + */ + /** + * @method array + * @memberof md5 + * @description Output hash as bytes array + * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash + * @returns {Array} Bytes array + * @example + * md5.array('The quick brown fox jumps over the lazy dog'); + */ + /** + * @method arrayBuffer + * @memberof md5 + * @description Output hash as ArrayBuffer + * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash + * @returns {ArrayBuffer} ArrayBuffer + * @example + * md5.arrayBuffer('The quick brown fox jumps over the lazy dog'); + */ + /** + * @method buffer + * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead. + * @memberof md5 + * @description Output hash as ArrayBuffer + * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash + * @returns {ArrayBuffer} ArrayBuffer + * @example + * md5.buffer('The quick brown fox jumps over the lazy dog'); + */ + /** + * @method base64 + * @memberof md5 + * @description Output hash as base64 string + * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash + * @returns {String} base64 string + * @example + * md5.base64('The quick brown fox jumps over the lazy dog'); + */ + var createOutputMethod = function(outputType) { + return function(message) { + return new Md5(true).update(message)[outputType](); + }; + }; + + /** + * @method create + * @memberof md5 + * @description Create Md5 object + * @returns {Md5} Md5 object. + * @example + * var hash = md5.create(); + */ + /** + * @method update + * @memberof md5 + * @description Create and update Md5 object + * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash + * @returns {Md5} Md5 object. + * @example + * var hash = md5.update('The quick brown fox jumps over the lazy dog'); + * // equal to + * var hash = md5.create(); + * hash.update('The quick brown fox jumps over the lazy dog'); + */ + var createMethod = function() { + var method = createOutputMethod('hex'); + if (NODE_JS) { + method = nodeWrap(method); + } + method.create = function() { + return new Md5(); + }; + method.update = function(message) { + return method.create().update(message); + }; + for (var i = 0; i < OUTPUT_TYPES.length; ++i) { + var type = OUTPUT_TYPES[i]; + method[type] = createOutputMethod(type); + } + return method; + }; + + var nodeWrap = function(method) { + var crypto = eval("require('crypto')"); + var Buffer = eval("require('buffer').Buffer"); + var nodeMethod = function(message) { + if (typeof message === 'string') { + return crypto.createHash('md5').update(message, 'utf8').digest('hex'); + } else { + if (message === null || message === undefined) { + throw ERROR; + } else if (message.constructor === ArrayBuffer) { + message = new Uint8Array(message); + } + } + if (Array.isArray(message) || ArrayBuffer.isView(message) || + message.constructor === Buffer) { + return crypto.createHash('md5').update(new Buffer(message)).digest('hex'); + } else { + return method(message); + } + }; + return nodeMethod; + }; + + /** + * Md5 class + * @class Md5 + * @description This is internal class. + * @see {@link md5.create} + */ + function Md5(sharedMemory) { + if (sharedMemory) { + blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = + blocks[4] = blocks[5] = blocks[6] = blocks[7] = + blocks[8] = blocks[9] = blocks[10] = blocks[11] = + blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + this.blocks = blocks; + this.buffer8 = buffer8; + } else { + if (ARRAY_BUFFER) { + var buffer = new ArrayBuffer(68); + this.buffer8 = new Uint8Array(buffer); + this.blocks = new Uint32Array(buffer); + } else { + this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + } + this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0; + this.finalized = this.hashed = false; + this.first = true; + } + + /** + * @method update + * @memberof Md5 + * @instance + * @description Update hash + * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash + * @returns {Md5} Md5 object. + * @see {@link md5.update} + */ + Md5.prototype.update = function(message) { + if (this.finalized) { + return; + } + + var notString, type = typeof message; + if (type !== 'string') { + if (type === 'object') { + if (message === null) { + throw ERROR; + } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) { + message = new Uint8Array(message); + } else if (!Array.isArray(message)) { + if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) { + throw ERROR; + } + } + } else { + throw ERROR; + } + notString = true; + } + var code, index = 0, + i, length = message.length, + blocks = this.blocks; + var buffer8 = this.buffer8; + + while (index < length) { + if (this.hashed) { + this.hashed = false; + blocks[0] = blocks[16]; + blocks[16] = blocks[1] = blocks[2] = blocks[3] = + blocks[4] = blocks[5] = blocks[6] = blocks[7] = + blocks[8] = blocks[9] = blocks[10] = blocks[11] = + blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + + if (notString) { + if (ARRAY_BUFFER) { + for (i = this.start; index < length && i < 64; ++index) { + buffer8[i++] = message[index]; + } + } else { + for (i = this.start; index < length && i < 64; ++index) { + blocks[i >> 2] |= message[index] << SHIFT[i++ & 3]; + } + } + } else { + if (ARRAY_BUFFER) { + for (i = this.start; index < length && i < 64; ++index) { + code = message.charCodeAt(index); + if (code < 0x80) { + buffer8[i++] = code; + } else if (code < 0x800) { + buffer8[i++] = 0xc0 | (code >> 6); + buffer8[i++] = 0x80 | (code & 0x3f); + } else if (code < 0xd800 || code >= 0xe000) { + buffer8[i++] = 0xe0 | (code >> 12); + buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); + buffer8[i++] = 0x80 | (code & 0x3f); + } else { + code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); + buffer8[i++] = 0xf0 | (code >> 18); + buffer8[i++] = 0x80 | ((code >> 12) & 0x3f); + buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); + buffer8[i++] = 0x80 | (code & 0x3f); + } + } + } else { + for (i = this.start; index < length && i < 64; ++index) { + code = message.charCodeAt(index); + if (code < 0x80) { + blocks[i >> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 0x800) { + blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else if (code < 0xd800 || code >= 0xe000) { + blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else { + code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); + blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } + } + } + } + this.lastByteIndex = i; + this.bytes += i - this.start; + if (i >= 64) { + this.start = i - 64; + this.hash(); + this.hashed = true; + } else { + this.start = i; + } + } + if (this.bytes > 4294967295) { + this.hBytes += this.bytes / 4294967296 << 0; + this.bytes = this.bytes % 4294967296; + } + return this; + }; + + Md5.prototype.finalize = function() { + if (this.finalized) { + return; + } + this.finalized = true; + var blocks = this.blocks, + i = this.lastByteIndex; + blocks[i >> 2] |= EXTRA[i & 3]; + if (i >= 56) { + if (!this.hashed) { + this.hash(); + } + blocks[0] = blocks[16]; + blocks[16] = blocks[1] = blocks[2] = blocks[3] = + blocks[4] = blocks[5] = blocks[6] = blocks[7] = + blocks[8] = blocks[9] = blocks[10] = blocks[11] = + blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + blocks[14] = this.bytes << 3; + blocks[15] = this.hBytes << 3 | this.bytes >>> 29; + this.hash(); + }; + + Md5.prototype.hash = function() { + var a, b, c, d, bc, da, blocks = this.blocks; + + if (this.first) { + a = blocks[0] - 680876937; + a = (a << 7 | a >>> 25) - 271733879 << 0; + d = (-1732584194 ^ a & 2004318071) + blocks[1] - 117830708; + d = (d << 12 | d >>> 20) + a << 0; + c = (-271733879 ^ (d & (a ^ -271733879))) + blocks[2] - 1126478375; + c = (c << 17 | c >>> 15) + d << 0; + b = (a ^ (c & (d ^ a))) + blocks[3] - 1316259209; + b = (b << 22 | b >>> 10) + c << 0; + } else { + a = this.h0; + b = this.h1; + c = this.h2; + d = this.h3; + a += (d ^ (b & (c ^ d))) + blocks[0] - 680876936; + a = (a << 7 | a >>> 25) + b << 0; + d += (c ^ (a & (b ^ c))) + blocks[1] - 389564586; + d = (d << 12 | d >>> 20) + a << 0; + c += (b ^ (d & (a ^ b))) + blocks[2] + 606105819; + c = (c << 17 | c >>> 15) + d << 0; + b += (a ^ (c & (d ^ a))) + blocks[3] - 1044525330; + b = (b << 22 | b >>> 10) + c << 0; + } + + a += (d ^ (b & (c ^ d))) + blocks[4] - 176418897; + a = (a << 7 | a >>> 25) + b << 0; + d += (c ^ (a & (b ^ c))) + blocks[5] + 1200080426; + d = (d << 12 | d >>> 20) + a << 0; + c += (b ^ (d & (a ^ b))) + blocks[6] - 1473231341; + c = (c << 17 | c >>> 15) + d << 0; + b += (a ^ (c & (d ^ a))) + blocks[7] - 45705983; + b = (b << 22 | b >>> 10) + c << 0; + a += (d ^ (b & (c ^ d))) + blocks[8] + 1770035416; + a = (a << 7 | a >>> 25) + b << 0; + d += (c ^ (a & (b ^ c))) + blocks[9] - 1958414417; + d = (d << 12 | d >>> 20) + a << 0; + c += (b ^ (d & (a ^ b))) + blocks[10] - 42063; + c = (c << 17 | c >>> 15) + d << 0; + b += (a ^ (c & (d ^ a))) + blocks[11] - 1990404162; + b = (b << 22 | b >>> 10) + c << 0; + a += (d ^ (b & (c ^ d))) + blocks[12] + 1804603682; + a = (a << 7 | a >>> 25) + b << 0; + d += (c ^ (a & (b ^ c))) + blocks[13] - 40341101; + d = (d << 12 | d >>> 20) + a << 0; + c += (b ^ (d & (a ^ b))) + blocks[14] - 1502002290; + c = (c << 17 | c >>> 15) + d << 0; + b += (a ^ (c & (d ^ a))) + blocks[15] + 1236535329; + b = (b << 22 | b >>> 10) + c << 0; + a += (c ^ (d & (b ^ c))) + blocks[1] - 165796510; + a = (a << 5 | a >>> 27) + b << 0; + d += (b ^ (c & (a ^ b))) + blocks[6] - 1069501632; + d = (d << 9 | d >>> 23) + a << 0; + c += (a ^ (b & (d ^ a))) + blocks[11] + 643717713; + c = (c << 14 | c >>> 18) + d << 0; + b += (d ^ (a & (c ^ d))) + blocks[0] - 373897302; + b = (b << 20 | b >>> 12) + c << 0; + a += (c ^ (d & (b ^ c))) + blocks[5] - 701558691; + a = (a << 5 | a >>> 27) + b << 0; + d += (b ^ (c & (a ^ b))) + blocks[10] + 38016083; + d = (d << 9 | d >>> 23) + a << 0; + c += (a ^ (b & (d ^ a))) + blocks[15] - 660478335; + c = (c << 14 | c >>> 18) + d << 0; + b += (d ^ (a & (c ^ d))) + blocks[4] - 405537848; + b = (b << 20 | b >>> 12) + c << 0; + a += (c ^ (d & (b ^ c))) + blocks[9] + 568446438; + a = (a << 5 | a >>> 27) + b << 0; + d += (b ^ (c & (a ^ b))) + blocks[14] - 1019803690; + d = (d << 9 | d >>> 23) + a << 0; + c += (a ^ (b & (d ^ a))) + blocks[3] - 187363961; + c = (c << 14 | c >>> 18) + d << 0; + b += (d ^ (a & (c ^ d))) + blocks[8] + 1163531501; + b = (b << 20 | b >>> 12) + c << 0; + a += (c ^ (d & (b ^ c))) + blocks[13] - 1444681467; + a = (a << 5 | a >>> 27) + b << 0; + d += (b ^ (c & (a ^ b))) + blocks[2] - 51403784; + d = (d << 9 | d >>> 23) + a << 0; + c += (a ^ (b & (d ^ a))) + blocks[7] + 1735328473; + c = (c << 14 | c >>> 18) + d << 0; + b += (d ^ (a & (c ^ d))) + blocks[12] - 1926607734; + b = (b << 20 | b >>> 12) + c << 0; + bc = b ^ c; + a += (bc ^ d) + blocks[5] - 378558; + a = (a << 4 | a >>> 28) + b << 0; + d += (bc ^ a) + blocks[8] - 2022574463; + d = (d << 11 | d >>> 21) + a << 0; + da = d ^ a; + c += (da ^ b) + blocks[11] + 1839030562; + c = (c << 16 | c >>> 16) + d << 0; + b += (da ^ c) + blocks[14] - 35309556; + b = (b << 23 | b >>> 9) + c << 0; + bc = b ^ c; + a += (bc ^ d) + blocks[1] - 1530992060; + a = (a << 4 | a >>> 28) + b << 0; + d += (bc ^ a) + blocks[4] + 1272893353; + d = (d << 11 | d >>> 21) + a << 0; + da = d ^ a; + c += (da ^ b) + blocks[7] - 155497632; + c = (c << 16 | c >>> 16) + d << 0; + b += (da ^ c) + blocks[10] - 1094730640; + b = (b << 23 | b >>> 9) + c << 0; + bc = b ^ c; + a += (bc ^ d) + blocks[13] + 681279174; + a = (a << 4 | a >>> 28) + b << 0; + d += (bc ^ a) + blocks[0] - 358537222; + d = (d << 11 | d >>> 21) + a << 0; + da = d ^ a; + c += (da ^ b) + blocks[3] - 722521979; + c = (c << 16 | c >>> 16) + d << 0; + b += (da ^ c) + blocks[6] + 76029189; + b = (b << 23 | b >>> 9) + c << 0; + bc = b ^ c; + a += (bc ^ d) + blocks[9] - 640364487; + a = (a << 4 | a >>> 28) + b << 0; + d += (bc ^ a) + blocks[12] - 421815835; + d = (d << 11 | d >>> 21) + a << 0; + da = d ^ a; + c += (da ^ b) + blocks[15] + 530742520; + c = (c << 16 | c >>> 16) + d << 0; + b += (da ^ c) + blocks[2] - 995338651; + b = (b << 23 | b >>> 9) + c << 0; + a += (c ^ (b | ~d)) + blocks[0] - 198630844; + a = (a << 6 | a >>> 26) + b << 0; + d += (b ^ (a | ~c)) + blocks[7] + 1126891415; + d = (d << 10 | d >>> 22) + a << 0; + c += (a ^ (d | ~b)) + blocks[14] - 1416354905; + c = (c << 15 | c >>> 17) + d << 0; + b += (d ^ (c | ~a)) + blocks[5] - 57434055; + b = (b << 21 | b >>> 11) + c << 0; + a += (c ^ (b | ~d)) + blocks[12] + 1700485571; + a = (a << 6 | a >>> 26) + b << 0; + d += (b ^ (a | ~c)) + blocks[3] - 1894986606; + d = (d << 10 | d >>> 22) + a << 0; + c += (a ^ (d | ~b)) + blocks[10] - 1051523; + c = (c << 15 | c >>> 17) + d << 0; + b += (d ^ (c | ~a)) + blocks[1] - 2054922799; + b = (b << 21 | b >>> 11) + c << 0; + a += (c ^ (b | ~d)) + blocks[8] + 1873313359; + a = (a << 6 | a >>> 26) + b << 0; + d += (b ^ (a | ~c)) + blocks[15] - 30611744; + d = (d << 10 | d >>> 22) + a << 0; + c += (a ^ (d | ~b)) + blocks[6] - 1560198380; + c = (c << 15 | c >>> 17) + d << 0; + b += (d ^ (c | ~a)) + blocks[13] + 1309151649; + b = (b << 21 | b >>> 11) + c << 0; + a += (c ^ (b | ~d)) + blocks[4] - 145523070; + a = (a << 6 | a >>> 26) + b << 0; + d += (b ^ (a | ~c)) + blocks[11] - 1120210379; + d = (d << 10 | d >>> 22) + a << 0; + c += (a ^ (d | ~b)) + blocks[2] + 718787259; + c = (c << 15 | c >>> 17) + d << 0; + b += (d ^ (c | ~a)) + blocks[9] - 343485551; + b = (b << 21 | b >>> 11) + c << 0; + + if (this.first) { + this.h0 = a + 1732584193 << 0; + this.h1 = b - 271733879 << 0; + this.h2 = c - 1732584194 << 0; + this.h3 = d + 271733878 << 0; + this.first = false; + } else { + this.h0 = this.h0 + a << 0; + this.h1 = this.h1 + b << 0; + this.h2 = this.h2 + c << 0; + this.h3 = this.h3 + d << 0; + } + }; + + /** + * @method hex + * @memberof Md5 + * @instance + * @description Output hash as hex string + * @returns {String} Hex string + * @see {@link md5.hex} + * @example + * hash.hex(); + */ + Md5.prototype.hex = function() { + this.finalize(); + + var h0 = this.h0, + h1 = this.h1, + h2 = this.h2, + h3 = this.h3; + + return HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] + + HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] + + HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] + + HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] + + HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] + + HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] + + HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] + + HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] + + HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] + + HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] + + HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] + + HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] + + HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] + + HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] + + HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] + + HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F]; + }; + + /** + * @method toString + * @memberof Md5 + * @instance + * @description Output hash as hex string + * @returns {String} Hex string + * @see {@link md5.hex} + * @example + * hash.toString(); + */ + Md5.prototype.toString = Md5.prototype.hex; + + /** + * @method digest + * @memberof Md5 + * @instance + * @description Output hash as bytes array + * @returns {Array} Bytes array + * @see {@link md5.digest} + * @example + * hash.digest(); + */ + Md5.prototype.digest = function() { + this.finalize(); + + var h0 = this.h0, + h1 = this.h1, + h2 = this.h2, + h3 = this.h3; + return [ + h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 24) & 0xFF, + h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 24) & 0xFF, + h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 24) & 0xFF, + h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 24) & 0xFF + ]; + }; + + /** + * @method array + * @memberof Md5 + * @instance + * @description Output hash as bytes array + * @returns {Array} Bytes array + * @see {@link md5.array} + * @example + * hash.array(); + */ + Md5.prototype.array = Md5.prototype.digest; + + /** + * @method arrayBuffer + * @memberof Md5 + * @instance + * @description Output hash as ArrayBuffer + * @returns {ArrayBuffer} ArrayBuffer + * @see {@link md5.arrayBuffer} + * @example + * hash.arrayBuffer(); + */ + Md5.prototype.arrayBuffer = function() { + this.finalize(); + + var buffer = new ArrayBuffer(16); + var blocks = new Uint32Array(buffer); + blocks[0] = this.h0; + blocks[1] = this.h1; + blocks[2] = this.h2; + blocks[3] = this.h3; + return buffer; + }; + + /** + * @method buffer + * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead. + * @memberof Md5 + * @instance + * @description Output hash as ArrayBuffer + * @returns {ArrayBuffer} ArrayBuffer + * @see {@link md5.buffer} + * @example + * hash.buffer(); + */ + Md5.prototype.buffer = Md5.prototype.arrayBuffer; + + /** + * @method base64 + * @memberof Md5 + * @instance + * @description Output hash as base64 string + * @returns {String} base64 string + * @see {@link md5.base64} + * @example + * hash.base64(); + */ + Md5.prototype.base64 = function() { + var v1, v2, v3, base64Str = '', + bytes = this.array(); + for (var i = 0; i < 15;) { + v1 = bytes[i++]; + v2 = bytes[i++]; + v3 = bytes[i++]; + base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + + BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] + + BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] + + BASE64_ENCODE_CHAR[v3 & 63]; + } + v1 = bytes[i]; + base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + + BASE64_ENCODE_CHAR[(v1 << 4) & 63] + + '=='; + return base64Str; + }; + + var exports = createMethod(); + + if (COMMON_JS) { + module.exports = exports; + } else { + /** + * @method md5 + * @description Md5 hash function, export to global in browsers. + * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash + * @returns {String} md5 hashes + * @example + * md5(''); // d41d8cd98f00b204e9800998ecf8427e + * md5('The quick brown fox jumps over the lazy dog'); // 9e107d9d372bb6826bd81d3542a419d6 + * md5('The quick brown fox jumps over the lazy dog.'); // e4d909c290d0fb1ca068ffaddf22cbd0 + * + * // It also supports UTF-8 encoding + * md5('中文'); // a7bac2239fcdcb3a067903d8077c4a07 + * + * // It also supports byte `Array`, `Uint8Array`, `ArrayBuffer` + * md5([]); // d41d8cd98f00b204e9800998ecf8427e + * md5(new Uint8Array([])); // d41d8cd98f00b204e9800998ecf8427e + */ + root.md5 = exports; + if (AMD) { + define(function() { + return exports; + }); + } + } +})(); diff --git a/components/battery.vue b/components/battery.vue new file mode 100644 index 0000000..beed2f6 --- /dev/null +++ b/components/battery.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/components/myProgress.vue b/components/myProgress.vue new file mode 100644 index 0000000..3110924 --- /dev/null +++ b/components/myProgress.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/components/virtualList.vue b/components/virtualList.vue new file mode 100644 index 0000000..cfd1e10 --- /dev/null +++ b/components/virtualList.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/manifest.json b/manifest.json index 0c696f7..fd5e4b1 100644 --- a/manifest.json +++ b/manifest.json @@ -1,258 +1,255 @@ { - "name" : "疯子读书", - "appid" : "__UNI__9788EB5", - "description" : "疯子读书", - "networkTimeout" : { - "request" : 30000 - }, - "transformPx" : false, - "icons" : [ - { - "sizes" : "分辨率,192x192", - "src" : "图片路径" - } - ], - "versionName" : "1.2.56", - "versionCode" : 1256, - "app-plus" : { - "compatible" : { - "ignoreVersion" : true - }, - "privacy" : { - "prompt" : "template", - "template" : { - "title" : "用户协议和隐私政策", - "message" : "请你务必审慎阅读、充分理解“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。
  你可阅读《用户协议》《隐私协议》了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。", - "buttonAccept" : "同意", - "buttonRefuse" : "暂不同意" - } - }, - "modules" : { - "Payment" : {}, - "Share" : {}, - "Camera" : {}, - "VideoPlayer" : {}, - "OAuth" : {} - }, - "distribute" : { - "apple" : { - "devices" : "universal" - }, - // "UIBackgroundModes" : [ "audio" ] - "android" : { - "permissionPhoneState" : { - "request" : "none", - "prompt" : "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。" - }, - "permissionExternalStorage" : { - "request" : "none", - "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。" - }, - "permissions" : [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ], - "minSdkVersion" : 21, - "targetSdkVersion" : 30, - "schemes" : "nuttyreading" - }, - "sdkConfigs" : { - "ad" : {}, - "maps" : {}, - "share" : { - "weixin" : { - "appid" : "wx47134a8f15083734", - "UniversalLinks" : "https://verification.nuttyreading.com/uni-universallinks/__UNI__9788EB5/" - } - }, - "payment" : { - "alipay" : { - "__platform__" : [ "ios", "android" ] - }, - "appleiap" : {}, - "weixin" : { - "__platform__" : [ "ios", "android" ], - "appid" : "wx47134a8f15083734", - "UniversalLinks" : "https://verification.nuttyreading.com/uni-universallinks/__UNI__9788EB5/" - } - }, - "oauth" : {}, - "push" : {} - }, - "splashscreen" : { - "iosStyle" : "common", - "androidStyle" : "default", - "useOriginalMsgbox" : true - }, - "ios" : { - "dSYMs" : false, - // "UIBackgroundModes" : [ "audio" ], // 背景播放音乐 - "capabilities" : { - "entitlements" : { - "com.apple.developer.associated-domains" : [ "applinks:verification.nuttyreading.com" ] - } - }, - "idfa" : false, - "urltypes" : "nuttyreading", - "urlschemewhitelist" : "everhealth,medicine,zmzm", - "privacyDescription" : { - "NSPhotoLibraryUsageDescription" : "为了给您提供修改头像、申诉反馈的图片上传", - "NSCameraUsageDescription" : "为了给您提供修改头像、申诉反馈的图片上传" - } - }, - "icons" : { - "android" : { - "hdpi" : "unpackage/res/icons/72x72.png", - "xhdpi" : "unpackage/res/icons/96x96.png", - "xxhdpi" : "unpackage/res/icons/144x144.png", - "xxxhdpi" : "unpackage/res/icons/192x192.png" - }, - "ios" : { - "appstore" : "unpackage/res/icons/1024x1024.png", - "ipad" : { - "app" : "unpackage/res/icons/76x76.png", - "app@2x" : "unpackage/res/icons/152x152.png", - "notification" : "unpackage/res/icons/20x20.png", - "notification@2x" : "unpackage/res/icons/40x40.png", - "proapp@2x" : "unpackage/res/icons/167x167.png", - "settings" : "unpackage/res/icons/29x29.png", - "settings@2x" : "unpackage/res/icons/58x58.png", - "spotlight" : "unpackage/res/icons/40x40.png", - "spotlight@2x" : "unpackage/res/icons/80x80.png" - }, - "iphone" : { - "app@2x" : "unpackage/res/icons/120x120.png", - "app@3x" : "unpackage/res/icons/180x180.png", - "notification@2x" : "unpackage/res/icons/40x40.png", - "notification@3x" : "unpackage/res/icons/60x60.png", - "settings@2x" : "unpackage/res/icons/58x58.png", - "settings@3x" : "unpackage/res/icons/87x87.png", - "spotlight@2x" : "unpackage/res/icons/80x80.png", - "spotlight@3x" : "unpackage/res/icons/120x120.png" - } - } - } - }, - "compilerVersion" : 3, - "nvueLaunchMode" : "fast", - "splashscreen" : { - "alwaysShowBeforeRender" : false - }, - "nativePlugins" : {}, - "uniStatistics" : { - "enable" : true - } - }, - // 5+App特有相关 - "quickapp" : {}, - // 快应用特有相关 - "mp-weixin" : { - "setting" : { - "urlCheck" : false, - "es6" : true, - "postcss" : true, - "minified" : true - }, - "usingComponents" : true, - "appid" : "wxd3ba52b7661b36be", - "permission" : { - "scope.userLocation" : { - "desc" : "你的位置信息将用于小程序位置接口的效果展示" - } - }, - "uniStatistics" : { - "enable" : true - } - }, - "h5" : { - "template" : "template.h5.html", - "router" : { - "mode" : "hash", - "base" : "/uniappDemo/" - }, - "optimization" : { - "treeShaking" : { - "enable" : true - } - }, - "uniStatistics" : { - "enable" : true - } - }, - "_spaceID" : "mp-3614b80b-2d75-4462-a481-4998f8187274", - "uniStatistics" : { - "version" : "2", - "enable" : true - }, - "mp-alipay" : { - "uniStatistics" : { - "enable" : true - } - }, - "mp-baidu" : { - "uniStatistics" : { - "enable" : true - } - }, - "mp-jd" : { - "uniStatistics" : { - "enable" : true - } - }, - "mp-kuaishou" : { - "uniStatistics" : { - "enable" : true - } - }, - "mp-lark" : { - "uniStatistics" : { - "enable" : true - } - }, - "mp-qq" : { - "uniStatistics" : { - "enable" : true - } - }, - "mp-toutiao" : { - "uniStatistics" : { - "enable" : true - } - }, - "quickapp-webview-huawei" : { - "uniStatistics" : { - "enable" : true - } - }, - "quickapp-webview-union" : { - "uniStatistics" : { - "enable" : true - } - } + "name": "疯子读书", + "appid": "__UNI__9788EB5", + "description": "疯子读书", + "networkTimeout": { + "request": 30000 + }, + "transformPx": false, + "icons": [{ + "sizes": "分辨率,192x192", + "src": "图片路径" + }], + "versionName": "1.2.59", + "versionCode": 1259, + "app-plus": { + "compatible": { + "ignoreVersion": true + }, + "privacy": { + "prompt": "template", + "template": { + "title": "用户协议和隐私政策", + "message": "请你务必审慎阅读、充分理解“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。
  你可阅读《用户协议》《隐私协议》了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。", + "buttonAccept": "同意", + "buttonRefuse": "暂不同意" + } + }, + "modules": { + "Payment": {}, + "Share": {}, + "Camera": {}, + "VideoPlayer": {}, + "OAuth": {} + }, + "distribute": { + "apple": { + "devices": "universal" + }, + // "UIBackgroundModes" : [ "audio" ] + "android": { + "permissionPhoneState": { + "request": "none", + "prompt": "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。" + }, + "permissionExternalStorage": { + "request": "none", + "prompt": "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。" + }, + "permissions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "abiFilters": ["armeabi-v7a", "arm64-v8a", "x86"], + "minSdkVersion": 21, + "targetSdkVersion": 30, + "schemes": "nuttyreading" + }, + "sdkConfigs": { + "ad": {}, + "maps": {}, + "share": { + "weixin": { + "appid": "wx47134a8f15083734", + "UniversalLinks": "https://verification.nuttyreading.com/uni-universallinks/__UNI__9788EB5/" + } + }, + "payment": { + "alipay": { + "__platform__": ["ios", "android"] + }, + "appleiap": {}, + "weixin": { + "__platform__": ["ios", "android"], + "appid": "wx47134a8f15083734", + "UniversalLinks": "https://verification.nuttyreading.com/uni-universallinks/__UNI__9788EB5/" + } + }, + "oauth": {}, + "push": {} + }, + "splashscreen": { + "iosStyle": "common", + "androidStyle": "default", + "useOriginalMsgbox": true + }, + "ios": { + "dSYMs": false, + // "UIBackgroundModes" : [ "audio" ], // 背景播放音乐 + "capabilities": { + "entitlements": { + "com.apple.developer.associated-domains": ["applinks:verification.nuttyreading.com"] + } + }, + "idfa": false, + "urltypes": "nuttyreading", + "urlschemewhitelist": "everhealth,medicine,zmzm", + "privacyDescription": { + "NSPhotoLibraryUsageDescription": "为了给您提供修改头像、申诉反馈的图片上传", + "NSCameraUsageDescription": "为了给您提供修改头像、申诉反馈的图片上传" + } + }, + "icons": { + "android": { + "hdpi": "unpackage/res/icons/72x72.png", + "xhdpi": "unpackage/res/icons/96x96.png", + "xxhdpi": "unpackage/res/icons/144x144.png", + "xxxhdpi": "unpackage/res/icons/192x192.png" + }, + "ios": { + "appstore": "unpackage/res/icons/1024x1024.png", + "ipad": { + "app": "unpackage/res/icons/76x76.png", + "app@2x": "unpackage/res/icons/152x152.png", + "notification": "unpackage/res/icons/20x20.png", + "notification@2x": "unpackage/res/icons/40x40.png", + "proapp@2x": "unpackage/res/icons/167x167.png", + "settings": "unpackage/res/icons/29x29.png", + "settings@2x": "unpackage/res/icons/58x58.png", + "spotlight": "unpackage/res/icons/40x40.png", + "spotlight@2x": "unpackage/res/icons/80x80.png" + }, + "iphone": { + "app@2x": "unpackage/res/icons/120x120.png", + "app@3x": "unpackage/res/icons/180x180.png", + "notification@2x": "unpackage/res/icons/40x40.png", + "notification@3x": "unpackage/res/icons/60x60.png", + "settings@2x": "unpackage/res/icons/58x58.png", + "settings@3x": "unpackage/res/icons/87x87.png", + "spotlight@2x": "unpackage/res/icons/80x80.png", + "spotlight@3x": "unpackage/res/icons/120x120.png" + } + } + } + }, + "compilerVersion": 3, + "nvueLaunchMode": "fast", + "splashscreen": { + "alwaysShowBeforeRender": false + }, + "nativePlugins": {}, + "uniStatistics": { + "enable": true + } + }, + // 5+App特有相关 + "quickapp": {}, + // 快应用特有相关 + "mp-weixin": { + "setting": { + "urlCheck": false, + "es6": true, + "postcss": true, + "minified": true + }, + "usingComponents": true, + "appid": "wxd3ba52b7661b36be", + "permission": { + "scope.userLocation": { + "desc": "你的位置信息将用于小程序位置接口的效果展示" + } + }, + "uniStatistics": { + "enable": true + } + }, + "h5": { + "template": "template.h5.html", + "router": { + "mode": "hash", + "base": "/uniappDemo/" + }, + "optimization": { + "treeShaking": { + "enable": true + } + }, + "uniStatistics": { + "enable": true + } + }, + "_spaceID": "mp-3614b80b-2d75-4462-a481-4998f8187274", + "uniStatistics": { + "version": "2", + "enable": true + }, + "mp-alipay": { + "uniStatistics": { + "enable": true + } + }, + "mp-baidu": { + "uniStatistics": { + "enable": true + } + }, + "mp-jd": { + "uniStatistics": { + "enable": true + } + }, + "mp-kuaishou": { + "uniStatistics": { + "enable": true + } + }, + "mp-lark": { + "uniStatistics": { + "enable": true + } + }, + "mp-qq": { + "uniStatistics": { + "enable": true + } + }, + "mp-toutiao": { + "uniStatistics": { + "enable": true + } + }, + "quickapp-webview-huawei": { + "uniStatistics": { + "enable": true + } + }, + "quickapp-webview-union": { + "uniStatistics": { + "enable": true + } + } } -// 小程序特有相关 - +// 小程序特有相关 \ No newline at end of file diff --git a/pages.json b/pages.json index 4659840..19755dc 100644 --- a/pages.json +++ b/pages.json @@ -49,6 +49,15 @@ "navigationBarTitleText": "小说1-1" } }, + { + "path": "pages/read/read", + "style": { + "navigationStyle": "custom", + "app-plus": { + "bounce": "none" + } + } + }, // { // "path": "pages/eBook/1/bookComent", // "style": { diff --git a/pages/bookShop/commodityDetail copy.vue b/pages/bookShop/commodityDetail copy.vue index ee206b2..1706320 100644 --- a/pages/bookShop/commodityDetail copy.vue +++ b/pages/bookShop/commodityDetail copy.vue @@ -14,6 +14,7 @@ + {{productInfo.price}} 原价¥{{productInfo.activityPrice}} diff --git a/pages/bookShop/commodityDetail.vue b/pages/bookShop/commodityDetail.vue index 1be896b..87deaf0 100644 --- a/pages/bookShop/commodityDetail.vue +++ b/pages/bookShop/commodityDetail.vue @@ -21,6 +21,7 @@ --> + {{ productInfo.activityPrice }} 原价{{ diff --git a/pages/peanut/home.vue b/pages/peanut/home.vue index 9ef9599..aa8179b 100644 --- a/pages/peanut/home.vue +++ b/pages/peanut/home.vue @@ -278,8 +278,9 @@ {{item.product_name}} + ¥{{item.activityPrice}} + v-if="item.activityPrice && item.activityPrice > 0">¥{{item.activity_price}} ¥{{item.price}} 已售:{{item.sum_sales}} 件 @@ -1214,8 +1215,9 @@ background-color: #eee; // max-width: 12.5%; background-color: #dfeae2; color: #0e583a; - font-size: 32rpx; - padding: 5px 3px; + font-size: 34rpx; + line-height: 42rpx; + padding: 5px 10px; font-weight: bold; display: block; width: 100%; @@ -1223,6 +1225,7 @@ background-color: #eee; border-radius: 10rpx; overflow: hidden; text-align: center; + letter-spacing: 10rpx; } text:last-child { diff --git a/pages/read/localread.vue b/pages/read/localread.vue new file mode 100644 index 0000000..f4262ac --- /dev/null +++ b/pages/read/localread.vue @@ -0,0 +1,1955 @@ + + + + + + + diff --git a/pages/read/read.vue b/pages/read/read.vue new file mode 100644 index 0000000..0edc0ac --- /dev/null +++ b/pages/read/read.vue @@ -0,0 +1,2055 @@ + + + + + + + diff --git a/pages/talkBook/talkBookDetail.vue b/pages/talkBook/talkBookDetail.vue index 5e5a004..0907505 100644 --- a/pages/talkBook/talkBookDetail.vue +++ b/pages/talkBook/talkBookDetail.vue @@ -1,110 +1,190 @@ \ No newline at end of file +.video { + text-align: center; + margin: 30rpx 0; + #myVideo { + width: 100%; + } +} + diff --git a/static/background0.jpg b/static/background0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f40f4914601ab8b490b8297608f6e0392468693 GIT binary patch literal 7387 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 literal 0 HcmV?d00001 diff --git a/static/background1.jpg b/static/background1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..81b5a02951cbd0fbcc9c3fb859fe117f15b6020b GIT binary patch literal 2026 zcmeHG%Wl&^6dlJ%jSxb3$8zMZiin?a9#%~-b}F(kiqc3$>>PXASgAdhJt0okd=0a?p*yPbdgSujsD_gpA=bm%#+&Pnf%rC*iZWf#Z(Ca+{Rj{%A8{q7z zH<<$l+@WC~fc%m@7!wlfq8O!u>*Em;JRFLd8;i0aiQur4#jZC&1dh;I5E=ZBckg)^ z_y&KXIg%4wXdFCWBx?wei0UVSf-GP z!J9=@_|oY^3nvI_f>iUQh6Ee3AglFev-ub*k}QdmBFailZtAL{OA=ffPpc*VsXnle zmbK{0;FpJ*&1S+(6>xGU%I$W$;82tr&8VgGh`3oTO7~X`HcGuDh)IAWSTMRHJS7HC zJNloB`cP|r4aiWh>w*G;qAZkkQ4rD>`xcb~Pa zmSU==U8mnsOR-j18++3bMP!BbH`vBjY$1d&rj>1!1h0{Ql;9AS2iAk_y{KFHmRNs# zFZHchkv1b1*LvleS0SpM!d;7&F4nR~5!HG^MV)^K_e-e)|AIaqCjSE70Os~q*%-UF zCA`8gbeI0?joUi;1>maSC-anLI8fmjmSge{z@d$8-hJuaElORF?NuNA5dnbvE0TW( f_gIE