xiaoyuhao 4 年之前
當前提交
f8f89c6928
共有 100 個文件被更改,包括 785 次插入0 次删除
  1. 0 0
      .tea/entryFiles-development/config$.js
  2. 0 0
      .tea/entryFiles-development/importScripts$.js
  3. 0 0
      .tea/entryFiles-development/index$.remote.worker.js
  4. 0 0
      .tea/entryFiles-development/index$.web.js
  5. 0 0
      .tea/entryFiles-development/index$.worker.js
  6. 621 0
      app.js
  7. 42 0
      app.json
  8. 122 0
      app.wxss
  9. 二進制
      image/action.png
  10. 二進制
      image/age_kai_shi.png
  11. 二進制
      image/block.png
  12. 二進制
      image/ce_shi_kuang.png
  13. 二進制
      image/ce_yi_ce.png
  14. 二進制
      image/cha_kan_pai_ming.png
  15. 二進制
      image/cuo_wu.png
  16. 二進制
      image/default_headicon4.png
  17. 二進制
      image/gljy.png
  18. 二進制
      image/gzjy.png
  19. 二進制
      image/history.png
  20. 二進制
      image/kai_shi_bg.png
  21. 二進制
      image/kjxx.png
  22. 二進制
      image/lianxi_five_as_a.png
  23. 二進制
      image/lianxi_five_as_b.png
  24. 二進制
      image/lianxi_five_as_c.png
  25. 二進制
      image/lianxi_five_as_d.png
  26. 二進制
      image/lianxi_four_as_a.png
  27. 二進制
      image/lianxi_four_as_b.png
  28. 二進制
      image/lianxi_four_as_c.png
  29. 二進制
      image/lianxi_four_as_d.png
  30. 二進制
      image/lianxi_one_as_a.png
  31. 二進制
      image/lianxi_one_as_b.png
  32. 二進制
      image/lianxi_one_as_c.png
  33. 二進制
      image/lianxi_one_as_d.png
  34. 二進制
      image/lianxi_one_as_e.png
  35. 二進制
      image/lianxi_one_as_f.png
  36. 二進制
      image/lianxi_three_as_a.png
  37. 二進制
      image/lianxi_three_as_b.png
  38. 二進制
      image/lianxi_three_as_c.png
  39. 二進制
      image/lianxi_three_as_d.png
  40. 二進制
      image/lianxi_title_four.png
  41. 二進制
      image/lianxi_title_one.png
  42. 二進制
      image/lianxi_title_two.png
  43. 二進制
      image/lianxi_two_as_a.png
  44. 二進制
      image/lianxi_two_as_b.png
  45. 二進制
      image/lianxi_two_as_c.png
  46. 二進制
      image/lianxi_two_as_d.png
  47. 二進制
      image/lianxi_wan.png
  48. 二進制
      image/ling_dai1.png
  49. 二進制
      image/ling_dai2.png
  50. 二進制
      image/ling_dai3.png
  51. 二進制
      image/loading_logo.png
  52. 二進制
      image/man.png
  53. 二進制
      image/nian_ling_bg.png
  54. 二進制
      image/no.png
  55. 二進制
      image/no_data.png
  56. 二進制
      image/no_test.png
  57. 二進制
      image/one.png
  58. 二進制
      image/one_memory_title2.png
  59. 二進制
      image/pai_hang_bang.png
  60. 二進制
      image/pai_ming.png
  61. 二進制
      image/pencil_loading.png
  62. 二進制
      image/qu_ce_shi.png
  63. 二進制
      image/ren_wu1.png
  64. 二進制
      image/right.png
  65. 二進制
      image/si_shu_jia_logo.png
  66. 二進制
      image/sjss.png
  67. 二進制
      image/sjss_two1_title1.png
  68. 二進制
      image/sjss_two1_title2.png
  69. 二進制
      image/the_fifth_pass_five1_as_a.png
  70. 二進制
      image/the_fifth_pass_five1_as_b.png
  71. 二進制
      image/the_fifth_pass_five1_as_c.png
  72. 二進制
      image/the_fifth_pass_five1_as_d.png
  73. 二進制
      image/the_fifth_pass_five1_as_e.png
  74. 二進制
      image/the_fifth_pass_five1_as_f.png
  75. 二進制
      image/the_fifth_pass_five1_as_g.png
  76. 二進制
      image/the_fifth_pass_five1_as_h.png
  77. 二進制
      image/the_fifth_pass_five_as_a.png
  78. 二進制
      image/the_fifth_pass_five_as_b.png
  79. 二進制
      image/the_fifth_pass_five_as_c.png
  80. 二進制
      image/the_fifth_pass_five_as_d.png
  81. 二進制
      image/the_fifth_pass_five_as_e.png
  82. 二進制
      image/the_fifth_pass_five_as_f.png
  83. 二進制
      image/the_fifth_pass_five_as_g.png
  84. 二進制
      image/the_fifth_pass_five_as_h.png
  85. 二進制
      image/the_fifth_pass_one1_as_a.png
  86. 二進制
      image/the_fifth_pass_one1_as_b.png
  87. 二進制
      image/the_fifth_pass_one1_as_c.png
  88. 二進制
      image/the_fifth_pass_one1_as_d.png
  89. 二進制
      image/the_fifth_pass_one1_as_e.png
  90. 二進制
      image/the_fifth_pass_one1_as_f.png
  91. 二進制
      image/the_fifth_pass_one1_as_g.png
  92. 二進制
      image/the_fifth_pass_one1_as_h.png
  93. 二進制
      image/the_fifth_pass_one_as_a.png
  94. 二進制
      image/the_fifth_pass_one_as_b.png
  95. 二進制
      image/the_fifth_pass_one_as_c.png
  96. 二進制
      image/the_fifth_pass_one_as_d.png
  97. 二進制
      image/the_fifth_pass_one_as_e.png
  98. 二進制
      image/the_fifth_pass_one_as_f.png
  99. 二進制
      image/the_fifth_pass_one_as_g.png
  100. 0 0
      image/the_fifth_pass_one_as_h.png

+ 0 - 0
.tea/entryFiles-development/config$.js


+ 0 - 0
.tea/entryFiles-development/importScripts$.js


+ 0 - 0
.tea/entryFiles-development/index$.remote.worker.js


+ 0 - 0
.tea/entryFiles-development/index$.web.js


+ 0 - 0
.tea/entryFiles-development/index$.worker.js


+ 621 - 0
app.js

@@ -0,0 +1,621 @@
+//app.js
+const { formatUrl, throttle } = require('utils/util.js')
+const sys = wx.getSystemInfoSync()
+App({
+  onLaunch: function (options) {
+    this.globalData.options = options
+    wx.getSystemInfo({
+      success: e => {
+        this.globalData.statusBar = e.statusBarHeight; //状态栏高度
+        // let custom = wx.getMenuButtonBoundingClientRect();//菜单按钮
+        // this.globalData.custom = custom;
+        // this.globalData.customBar = custom.bottom + custom.top - e.statusBarHeight;
+        //计算得到定义的状态栏高度
+      }
+    })
+  },
+
+  onShow: function (options) {
+    this.globalData.options = options
+  },
+
+  onHide: function (e) {
+
+  },
+
+  onError: function (e) {
+    wx.showToast({
+      title: '程序执行失败',
+      icon: 'none'
+    })
+  },
+
+  onPageNotFound: function (res) {
+    wx.showToast({
+      title: '没有找到页面',
+      icon: 'none'
+    })
+  },
+
+  /**
+   * 初始化 
+   */
+  init: function () {
+    const accessToken = this.getGlobalAttributeValue('accessToken')
+    const userInfo = this.getGlobalAttributeValue('userInfo')
+    this.getWxUserInfoSetting((type, res) => {
+      // if (type != 1 || !userInfo) {
+      //   this.redirectCtl({ url: 'wx_authority' }, 1)
+      //   return
+      // }
+      this.globalData.userInfo = userInfo
+      wx.checkSession({
+        success: res => {
+          this.globalData.accessToken = accessToken
+          this.navigatePermissionsCtl()
+        },
+        fail: res => {
+          this.login()
+        }
+      })
+    })
+    // this.post('/api/user/checkToken').then(res => {
+    //   if (accessToken) {
+    //     this.globalData.accessToken = accessToken
+    //   }
+
+    //   if (userInfo) {
+    //     this.globalData.userInfo = userInfo
+    //   } else {
+    //     this.redirectCtl({ url: 'wx_authority' }, 1)
+    //     return
+    //   }
+
+    //   this.navigatePermissionsCtl()
+    // }).catch(res => {
+    //   this.login()
+    // })
+  },
+
+  /**
+   * 获取微信code 
+   */
+  getWxloginCode: function (cb) {
+    wx.login({
+      success: res => {
+        if (cb) cb(res.code)
+      },
+      fail: res => {
+        wx.showToast({
+          title: '获取微信code失败',
+          icon: 'none'
+        })
+      }
+    })
+  },
+
+  /**
+   * 获取微信用户信息
+   */
+  login: function () {
+    const { appType } = this.globalData
+    this.getWxloginCode(code => {
+      this.post('/api/user/tlogin', { code, appType }).then(this.handleLogin).catch(e => {
+        if (e.data.code == '888') {
+          this.redirectCtl({ url: 'wx_authority' }, 1)
+        }
+      })
+    })
+  },
+
+  /**
+   * 获取登录数据
+   */
+  handleLogin: function (res) {
+    const { postData } = this.globalData
+    const { accessToken } = res.data
+    if (accessToken) {
+      this.globalData.accessToken = accessToken
+      wx.setStorageSync('accessToken', accessToken)
+
+      // 判断当前是否有接口报登录失效,存在失效的情况下 接着执行        
+      if (postData) {
+        const { fn, param } = postData
+        fn(...param)
+        this.globalData.postData = null
+        return
+      }
+
+      this.navigatePermissionsCtl()
+    }
+  },
+
+  /**
+   * 权限判断跳转
+   */
+  navigatePermissionsCtl: function () {
+    const { options, tempOptions } = this.globalData
+    const { query = {}, scene, path } = options || tempOptions
+    let url = ''
+    if (query && query.type > 1) {
+      url = path ? path.split('/')[1] : 'me'
+      const method = { ...query, url, scene }
+      this.reLaunchCtl && this.reLaunchCtl({ url, method }, true)
+      this.globalData.options = tempOptions
+    } else {
+      // this.getVipList()
+      this.redirectCtl && this.redirectCtl({ url: 'me' }, true)
+    }
+  },
+
+  /**
+   * 保存微信用户数据
+   * */
+  saveUserInfo: function (res, code) {
+    const { appType } = this.globalData
+    const { encryptedData, iv, signature, userInfo } = res
+    const user = Object.assign(userInfo, { encryptedData, iv, signature })
+    this.post('/api/user/newlogin', { code, appType, ...user }).then(res => {
+      this.globalData.userInfo = user
+      wx.setStorageSync('userInfo', user)
+      this.handleLogin(res)
+    })
+  },
+
+  /**
+   * 微信授权接口封装
+   */
+  wxSetting: function ({ scope, text }) {
+    const isEmptyObject = function (e) {
+      var temp;
+      for (temp in e)
+        return !1;
+      return !0
+    }
+    return new Promise((resolve, reject) => {
+      wx.getSetting({
+        success: res => {
+          if (isEmptyObject(res.authSetting)) {
+            resolve(Object.assign(res, { type: 1, text: `请手动点击${text}` }))
+          } else if (res.authSetting[scope] === true) {
+            resolve(Object.assign(res, { type: 2, text: `默认${text}成功` }))
+          } else if (res.authSetting[scope] === false) {
+            wx.showModal({
+              content: `检测到您没打开${text},是否去设置打开?`,
+              confirmText: "确认",
+              cancelText: "取消",
+              success: res => {
+                if (res.confirm) {
+                  wx.openSetting({
+                    success: res => {
+                      if (res.authSetting[scope]) {
+                        resolve(Object.assign(res, { type: 3, text: `手动设置${text}成功` }))
+                      } else {
+                        reject(Object.assign(res, { type: 5, text: `没有手动设置${text}` }))
+                      }
+                    },
+                    fail: res => {
+                      reject(Object.assign(res, { type: 4, text: `打开手动设置${text}失败` }))
+                    }
+                  })
+                } else {
+                  reject(Object.assign(res, { type: 3, text: `拒绝打开手动设置${text}` }))
+                }
+              },
+              fail: res => {
+                reject(Object.assign(res, { type: 2, text: `弹出${text}提示框失败` }))
+              }
+            })
+          } else {
+            wx.authorize({
+              scope,
+              success: res => {
+                resolve(Object.assign(res, { type: 4, text: `自动获取${text}成功` }))
+              },
+              fail: res => {
+                reject(Object.assign(res, { type: 6, text: `自动获取${text}失败` }))
+              }
+            })
+          }
+        },
+        fail: res => {
+          reject(res, { type: 1, text: `获取${text}失败` })
+        }
+      })
+    })
+  },
+
+  /**
+ * 获取微信用户信息授权
+ */
+  getWxUserInfoSetting: function (cb) {
+    this.wxSetting({ scope: 'scope.userInfo', text: '微信用户信息授权' }).then((res) => {
+      wx.setStorageSync('hasUserInfo', 1)
+      if (typeof cb === 'function') cb(1, res)
+    }).catch((res) => {
+      wx.setStorageSync('hasUserInfo', 0)
+      if (res.type != 6) {
+        wx.showToast({
+          title: res.text,
+          icon: 'none'
+        })
+      }
+      if (typeof cb === 'function') cb(0, res)
+      setTimeout(() => {
+        wx.navigateBack({
+          delta: 1
+        })
+      }, 2000)
+    })
+  },
+
+  /**
+  * 获取微信定位授权
+  */
+  getWxUserLocationSetting: function (cb) {
+    this.wxSetting({ scope: 'scope.userLocation', text: '微信用户定位授权' }).then((res) => {
+      wx.setStorageSync('isPosition', 1)
+      if (typeof cb === 'function') {
+        cb(res)
+      }
+    }).catch((res) => {
+      wx.setStorageSync('isPosition', 0)
+      wx.showToast({
+        title: res.text,
+        icon: 'none'
+      })
+      setTimeout(() => {
+        wx.navigateBack({
+          delta: 1
+        })
+      }, 1200)
+    })
+  },
+
+  /**
+   * 获取全局属性值
+   */
+  getGlobalAttributeValue: function (e1, e2 = e1) {
+    return typeof this.globalData[e1] !== 'undefined' && this.globalData[e1] !== null ? this.globalData[e1] : typeof wx.getStorageSync(e2) !== 'undefined' && wx.getStorageSync(e2) !== null ? wx.getStorageSync(e2) : null
+  },
+
+  /**
+   * POST 封装
+   * @param obj{Object} {src【请求后台路径】, method【拼接在路径的参数对象】, type【判断是否需要把参数拼接在路径后面】} = obj
+   * @param data{Object} data【自定义传的参数数据】
+   * @param head{Boolean} head[true【data参数类型为json对象】,false【data参数类型为json字符串】]
+   */
+  post: function (obj, data = {}, head, postData) {
+    const { host, loginTime, wechatsys, phoneimei, phonesys, phonetype, version, platform, build } = this.globalData
+    const accessToken = this.globalData.accessToken || wx.getStorageSync('accessToken')
+    let url
+    if (typeof obj === 'object') {
+      const { src, method = {}, type } = obj
+      url = formatUrl(host + src, type == 1 ? method : Object.assign({}, method, { accessToken }))
+    } else if (typeof obj === 'string') {
+      url = formatUrl(host + obj, { accessToken })
+    } else {
+      throw new Error('请正确填写访问后台接口路径')
+      return
+    }
+    return new Promise((resolve, reject) => {
+      wx.request({
+        url,
+        data,
+        method: 'POST',
+        header: head ? {
+          wechatsys, phoneimei, phonesys, phonetype, version, platform, build,
+          "Content-Type": "application/x-www-form-urlencoded"
+        } : {
+            wechatsys, phoneimei, phonesys, phonetype, version, platform, build,
+            "Content-Type": "application/json"
+          },
+        success: e => {
+          if (e.statusCode == 200 && e.errMsg == 'request:ok') {
+            if (e.data.code == '999') {
+              resolve(e.data)
+            } else {
+              if (url.indexOf('/api/user/checkToken') == -1) {
+                wx.showToast({
+                  title: e.data.msg,
+                  icon: 'none'
+                })
+              }
+              reject(e.data)
+            }
+            if (loginTime > 0) {
+              this.globalData.loginTime = 0
+            }
+          } else if (e.statusCode == 401) {
+            this.globalData.loginTime = loginTime + 1
+            if (loginTime < 2) {
+              this.globalData.postData = postData || null
+              this.login()
+            }
+          } else {
+            reject(e)
+            wx.showToast({
+              title: '加载失败',
+              icon: 'none'
+            })
+          }
+        },
+        fail: e => {
+          reject(e)
+          wx.showToast({
+            title: '加载失败',
+            icon: 'none'
+          })
+        },
+        complete: e => {
+          console.log({ url, data })
+          console.log(e.data)
+        }
+      })
+    })
+  },
+
+  /**
+   * uploadFile 封装
+   * @param obj{Object} {src【请求后台路径】, method【拼接在路径的参数对象】, type【判断是否需要把参数拼接在路径后面】} = obj
+   * @param file{String} file【微信小程序生成的临时文件资源路径】
+   * @param data{Object} data【自定义传的参数数据】
+   * @param head{Boolean} head[true【data参数类型为json对象】,false【data参数类型为json字符串】]
+   * @param progress{Function} progress【上传文件进度条回调函数方法】
+   */
+  uploadFile: function (obj, file, data = {}, head, progress, postData) {
+    const { host, loginTime, wechatsys, phoneimei, phonesys, phonetype, version, platform, build } = this.globalData
+    const accessToken = this.globalData.accessToken || wx.getStorageSync('accessToken')
+    let url
+    if (typeof obj === 'object') {
+      const { src, method, type } = obj
+      url = formatUrl(host + src, type == 1 ? method : Object.assign(method || {}, { accessToken }))
+    } else if (typeof obj === 'string') {
+      url = formatUrl(host + obj, { accessToken })
+    } else {
+      throw new Error('请正确填写访问后台接口路径')
+      return
+    }
+    wx.showLoading({
+      title: '上传中...',
+    })
+    let uploadTask
+    return new Promise((resolve, reject) => {
+      uploadTask = wx.uploadFile({
+        url,
+        filePath: file,
+        name: 'files',
+        formData: data,
+        header: head ? {
+          wechatsys, phoneimei, phonesys, phonetype, version, platform, build,
+          "Content-Type": "application/x-www-form-urlencoded"
+        } : {
+            wechatsys, phoneimei, phonesys, phonetype, version, platform, build,
+            "Content-Type": "application/json"
+          },
+        success: e => {
+          if (e.statusCode == 200 && e.errMsg == 'uploadFile:ok') {
+            resolve(e.data)
+            if (loginTime > 0) {
+              this.globalData.loginTime = 0
+            }
+          } else if (e.statusCode == 401) {
+            this.globalData.loginTime = loginTime + 1
+            if (loginTime < 2) {
+              this.globalData.postData = postData || null
+              this.login()
+            }
+          } else {
+            reject(e)
+            wx.showToast({
+              title: '加载失败',
+              icon: 'none'
+            })
+          }
+        },
+        fail(e) {
+          reject(e)
+          wx.showToast({
+            title: '加载失败',
+            icon: 'none'
+          })
+        },
+        complete(e) {
+          console.log({ url, data })
+          console.log(e.data)
+          wx.hideLoading()
+        }
+      })
+    })
+    uploadTask.onProgressUpdate((res) => {
+      progress && progress(res)
+      wx.showLoading({
+        title: ` 已上传(${res.progress}%)`
+      })
+      if (res.progress == 100) {
+        wx.hideLoading()
+      }
+    })
+  },
+
+  /**
+   * reLaunch路由跳转
+   */
+  reLaunchCtl: function (e, type) {
+    const { method, url, msg } = type ? e : e.currentTarget.dataset
+    if (!url) {
+      wx.showToast({
+        title: msg || '暂未开放',
+        icon: 'none'
+      })
+      return
+    }
+    let array = []
+    if (method) {
+      for (let i in method) {
+        if (typeof data === 'object') {
+          array.push(`${i}=${JSON.stringify(method[i])}`)
+        } else {
+          array.push(`${i}=${method[i]}`)
+        }
+      }
+    }
+    wx.reLaunch({
+      url: `${getCurrentPages().length == 0 ? 'pages' : '..'}/${url}/${url}${array.length > 0 ? '?' + array.join('&') : ''}`,
+      success: res => { },
+      fail: res => {
+        wx.showToast({
+          title: '跳转失败',
+          icon: 'none'
+        })
+      }
+    })
+  },
+
+  /**
+   * navigate路由跳转
+   */
+  navigateCtl: throttle(function (e, type) {
+    const { method, url, msg } = type ? e : e.currentTarget.dataset
+    if (!url) {
+      wx.showToast({
+        title: msg || '暂未开放',
+        icon: 'none'
+      })
+      return
+    }
+    let array = []
+    if (method) {
+      for (let i in method) {
+        if (typeof data === 'object') {
+          array.push(`${i}=${JSON.stringify(method[i])}`)
+        } else {
+          array.push(`${i}=${method[i]}`)
+        }
+      }
+    }
+    wx.navigateTo({
+      url: `${getCurrentPages().length == 0 ? 'pages' : '..'}/${url}/${url}${array.length > 0 ? '?' + array.join('&') : ''}`,
+      success: res => { },
+      fail: res => {
+        console.log(res)
+        wx.showToast({
+          title: '跳转失败',
+          icon: 'none'
+        })
+      }
+    })
+  }, 500),
+  /**
+   * blockCtl返回上一级页面
+   */
+  blockCtl:function(){
+    wx.navigateBack({
+      success: function (res) {
+        // beforePage.onLoad(); // 执行前一个页面的onLoad方法
+        console.log(res)
+      }
+    });
+  },
+
+  /**
+   * redirect路由跳转
+   */
+  redirectCtl: function (e, type) {
+    const { method, url, msg } = type ? e : e.currentTarget.dataset
+    if (!url) {
+      wx.showToast({
+        title: msg || '暂未开放',
+        icon: 'none'
+      })
+      return
+    }
+    let array = []
+    if (method) {
+      for (let i in method) {
+        if (typeof data === 'object') {
+          array.push(`${i}=${JSON.stringify(method[i])}`)
+        } else {
+          array.push(`${i}=${method[i]}`)
+        }
+      }
+    }
+    wx.redirectTo({
+      url: `${getCurrentPages().length == 0 ? 'pages' : '..'}/${url}/${url}${array.length > 0 ? '?' + array.join('&') : ''}`,
+      success: res => { },
+      fail: res => {
+        wx.showToast({
+          title: '跳转失败',
+          icon: 'none'
+        })
+      }
+    })
+  },
+
+  /**
+   * 查看图片
+   */
+  viewImageCtl: function (e) {
+    let { images, index, baseurl, url = 'img' } = e.currentTarget.dataset
+    let array = images.map((val, key) => {
+      return baseurl + val[url]
+    })
+    wx.previewImage({
+      current: baseurl + images[index][url], // 当前显示图片的http链接
+      urls: array // 需要预览的图片http链接列表
+    })
+  },
+
+  /**
+   * 分享控制层
+   */
+  sharePageDefaultCtl: function () {
+    return {
+      title: '探知脑力',
+      path: 'pages/index/index?type=1',
+      success: res => {
+        wx.showToast({
+          title: '转发成功',
+          icon: 'success'
+        })
+      },
+      fail: res => {
+        wx.showToast({
+          title: '转发失败',
+          icon: 'none'
+        })
+      }
+    }
+  },
+
+  /**
+   * 全局变量
+   */
+  globalData: {
+    wechatsys: sys.version + ' ' + sys.SDKVersion,
+    phoneimei: '',
+    phonesys: sys.system,
+    phonetype: sys.brand + ' ' + sys.model,
+    version: '1.0.4',
+    platform: '3',
+    build: '1.0.4',
+    appType: 22,
+    initStatus: 0,
+    loginTime: 0,
+    // host: 'https://api.sharingschool.com/sz',
+    // baseImgUrl: 'https://api.sharingschool.com/upload',
+    host: 'https://xt.sharingschool.com/sz',
+    baseImgUrl: 'https://xt.sharingschool.com/upload',
+    thumbnail: '!m300x200.png',
+    accessToken: null,
+    parentVipList: null,
+    parentVipLiIdx: null,
+    parentVipId: null,
+    parentInfo: null,
+    appid: 'wxb85618936c73086b',
+    userInfo: null,
+    options: null,
+    postData: null,
+    tempOptions: { query: {}, path: 'pages/index/index', scene: 1001 }
+  }
+})

+ 42 - 0
app.json

@@ -0,0 +1,42 @@
+{
+  "pages": [
+    "pages/index/index",
+    "pages/me/me",
+    "pages/info/info",
+    "pages/lian_xi/lian_xi",
+    "pages/tu_xing_tui_li/tu_xing_tui_li",
+    "pages/xin_li_xuan_zhuan/xin_li_xuan_zhuan",
+    "pages/kong_jian_xiang_xiang/kong_jian_xiang_xiang",
+    "pages/shi_jue_suo_sou/shi_jue_suo_sou",
+    "pages/gong_zuo_ji_yi/gong_zuo_ji_yi",
+    "pages/zhi_xing_gong_neng/zhi_xing_gong_neng",
+    "pages/result/result",
+    "pages/history/history",
+    "pages/ranking/ranking",
+    "pages/set_info/set_info",
+    "templates/picker/picker",
+    "templates/header/header",
+    "templates/loading/loading",
+    "templates/nodata/nodata",
+    "pages/wx_authority/wx_authority"
+  ],
+  "window": {
+    "backgroundTextStyle": "light",
+    "navigationBarBackgroundColor": "#FFC674",
+    "navigationBarTitleText": "",
+    "navigationBarTextStyle": "white",
+    "backgroundColor": "#FFC674",
+    "navigationStyle": "custom"
+  },
+  "permission": {
+    "scope.userLocation": {
+      "desc": "你的位置信息将用于小程序位置接口的效果展示"
+    }
+  },
+  "networkTimeout": {
+    "request": 60000,
+    "downloadFile": 60000
+  },
+  "debug": false,
+  "sitemapLocation": "sitemap.json"
+}

+ 122 - 0
app.wxss

@@ -0,0 +1,122 @@
+/**app.wxss**/
+page{
+  background: #FFC674;
+}
+.li{
+  margin: 0 24rpx;
+  background: #fff;
+  border-radius:24rpx;
+  text-align: center;
+  position: relative;
+}
+.li-title{
+  color: #393939;
+  font-size: 34rpx;
+  /* text-align: center; */
+  padding: 68rpx 0 32rpx 24rpx;
+}
+.answer{
+  color: #7C819D;
+  font-size: 30rpx;
+  padding: 60rpx 0 50rpx 58rpx;
+  border-top: 1rpx solid #DADCE6;
+  text-align: left;
+}
+.li-img-answer-yes{
+  width:78rpx;
+  height:78rpx;
+}
+.container {
+  padding: 0rpx;
+}
+.wrapper{
+ padding-top: 120rpx;
+}
+.block{
+  position: fixed;
+  top: 0rpx;
+  left: 24rpx;
+  width: 40rpx;
+  height: 34rpx;
+  z-index: 10000;
+}
+.guide-img{
+  width: 100%;
+  height: 1158rpx;
+}
+.li-red-title{
+  color: #E19220;
+  font-size: 34rpx;
+  font-weight: 600;
+  text-align: left;
+  padding-top: 30rpx;
+  padding-left: 24rpx;
+}
+.guide-btn{
+  color: #000000;
+  font-size: 36rpx;
+  margin: 0 auto;
+  width:314rpx;
+  height:88rpx;
+  background:rgba(235,129,2,1);
+  border-radius:44rpx;
+  line-height: 88rpx;
+  text-align: center;
+  position: absolute;
+  bottom: 10%;
+  left: 29%;
+}
+button,
+button::after {
+  border: none;
+  border-radius: 0;
+  padding: 0;
+  margin: 0;
+  transition: all .3s;
+  background: none;
+}
+.showModel{
+  width: 100%;
+  height: 100%;
+  position: fixed;
+  top: 0;
+  left: 0;
+  background: #000;
+  opacity: 0.5;
+  overflow: hidden;
+  z-index: 1000;
+  color: #fff;
+  
+}
+.model{
+  z-index: 1001;
+  position: fixed;
+  top: 30%;
+  margin: 0 50rpx;
+  background: #FFC674;
+  border-radius:30rpx;
+  text-align: center;
+  border: 6rpx solid #000;
+}
+.white{
+  position:absolute;
+  top:0;
+  left:0;
+  z-index: 10000;
+  width:93.6%;
+  height:1158rpx;
+  padding:0;
+  background: #fff;
+  margin:177rpx 3.2%;
+  transition: all .5s;
+  border-radius:24rpx;
+  /* animation: line 0.5s infinite ease-in-out; */
+}
+/* @keyframes line {
+  10% {
+    width: 100%;
+  }
+  100% {
+    width: 10%;
+  }
+}  */

二進制
image/action.png


二進制
image/age_kai_shi.png


二進制
image/block.png


二進制
image/ce_shi_kuang.png


二進制
image/ce_yi_ce.png


二進制
image/cha_kan_pai_ming.png


二進制
image/cuo_wu.png


二進制
image/default_headicon4.png


二進制
image/gljy.png


二進制
image/gzjy.png


二進制
image/history.png


二進制
image/kai_shi_bg.png


二進制
image/kjxx.png


二進制
image/lianxi_five_as_a.png


二進制
image/lianxi_five_as_b.png


二進制
image/lianxi_five_as_c.png


二進制
image/lianxi_five_as_d.png


二進制
image/lianxi_four_as_a.png


二進制
image/lianxi_four_as_b.png


二進制
image/lianxi_four_as_c.png


二進制
image/lianxi_four_as_d.png


二進制
image/lianxi_one_as_a.png


二進制
image/lianxi_one_as_b.png


二進制
image/lianxi_one_as_c.png


二進制
image/lianxi_one_as_d.png


二進制
image/lianxi_one_as_e.png


二進制
image/lianxi_one_as_f.png


二進制
image/lianxi_three_as_a.png


二進制
image/lianxi_three_as_b.png


二進制
image/lianxi_three_as_c.png


二進制
image/lianxi_three_as_d.png


二進制
image/lianxi_title_four.png


二進制
image/lianxi_title_one.png


二進制
image/lianxi_title_two.png


二進制
image/lianxi_two_as_a.png


二進制
image/lianxi_two_as_b.png


二進制
image/lianxi_two_as_c.png


二進制
image/lianxi_two_as_d.png


二進制
image/lianxi_wan.png


二進制
image/ling_dai1.png


二進制
image/ling_dai2.png


二進制
image/ling_dai3.png


二進制
image/loading_logo.png


二進制
image/man.png


二進制
image/nian_ling_bg.png


二進制
image/no.png


二進制
image/no_data.png


二進制
image/no_test.png


二進制
image/one.png


二進制
image/one_memory_title2.png


二進制
image/pai_hang_bang.png


二進制
image/pai_ming.png


二進制
image/pencil_loading.png


二進制
image/qu_ce_shi.png


二進制
image/ren_wu1.png


二進制
image/right.png


二進制
image/si_shu_jia_logo.png


二進制
image/sjss.png


二進制
image/sjss_two1_title1.png


二進制
image/sjss_two1_title2.png


二進制
image/the_fifth_pass_five1_as_a.png


二進制
image/the_fifth_pass_five1_as_b.png


二進制
image/the_fifth_pass_five1_as_c.png


二進制
image/the_fifth_pass_five1_as_d.png


二進制
image/the_fifth_pass_five1_as_e.png


二進制
image/the_fifth_pass_five1_as_f.png


二進制
image/the_fifth_pass_five1_as_g.png


二進制
image/the_fifth_pass_five1_as_h.png


二進制
image/the_fifth_pass_five_as_a.png


二進制
image/the_fifth_pass_five_as_b.png


二進制
image/the_fifth_pass_five_as_c.png


二進制
image/the_fifth_pass_five_as_d.png


二進制
image/the_fifth_pass_five_as_e.png


二進制
image/the_fifth_pass_five_as_f.png


二進制
image/the_fifth_pass_five_as_g.png


二進制
image/the_fifth_pass_five_as_h.png


二進制
image/the_fifth_pass_one1_as_a.png


二進制
image/the_fifth_pass_one1_as_b.png


二進制
image/the_fifth_pass_one1_as_c.png


二進制
image/the_fifth_pass_one1_as_d.png


二進制
image/the_fifth_pass_one1_as_e.png


二進制
image/the_fifth_pass_one1_as_f.png


二進制
image/the_fifth_pass_one1_as_g.png


二進制
image/the_fifth_pass_one1_as_h.png


二進制
image/the_fifth_pass_one_as_a.png


二進制
image/the_fifth_pass_one_as_b.png


二進制
image/the_fifth_pass_one_as_c.png


二進制
image/the_fifth_pass_one_as_d.png


二進制
image/the_fifth_pass_one_as_e.png


二進制
image/the_fifth_pass_one_as_f.png


二進制
image/the_fifth_pass_one_as_g.png


+ 0 - 0
image/the_fifth_pass_one_as_h.png


部分文件因文件數量過多而無法顯示