123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481 |
- import regeneratorRuntime, { async } from './runtime';
- import './polyfill'
- import api from './api.js'
- import extend from './util.js'
- import {
- md5
- } from './md5.js'
- let app = null;
- setTimeout(_ => app = getApp())
- const getcitycode = (province, city) => {
- let code = '',
- clist = citycode.find(x => x["省"] == province.replace(/.$/, ''))
- if (clist && clist["市"]) {
- let c = clist["市"].find(x => x["市名"] == city.replace(/.$/, ''))
- if (c) code = c['编码']
- }
- return code;
- }
- const pvw = doc => {
- wx.showLoading({
- title: '文件加载中...',
- mask: true
- })
- wx.downloadFile({
- url: doc,
- success: ({
- tempFilePath: filePath
- }) => {
- wx.openDocument({
- filePath
- })
- },
- fail: _ => showTip("文件下载失败"),
- complete: () => {
- wx.hideLoading()
- }
- })
- }
- function pvw_native({
- currentTarget: {
- dataset: {
- doc
- }
- }
- }) {
- pvw(doc)
- }
- const formatTime = date => {
- const year = date.getFullYear()
- const month = date.getMonth() + 1
- const day = date.getDate()
- const hour = date.getHours()
- const minute = date.getMinutes()
- const second = date.getSeconds()
- return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
- }
- const formatNumber = n => {
- n = n.toString()
- return n[1] ? n : '0' + n
- }
- function getHello() {
- let now = new Date(),
- hour = now.getHours(),
- hello;
- if (hour < 6) {
- hello = "凌晨好";
- } else if (hour < 9) {
- hello = "早上好!";
- } else if (hour < 12) {
- hello = "上午好!";
- } else if (hour < 14) {
- hello = "中午好!";
- } else if (hour < 17) {
- hello = "下午好!";
- } else if (hour < 19) {
- hello = "傍晚好!";
- } else if (hour < 22) {
- hello = "晚上好!";
- } else {
- hello = "夜里好!";
- }
- return hello;
- }
- function getCurrentDate() {
- var date = new Date();
- var year = date.getFullYear();
- var month = date.getMonth() + 1;
- var day = date.getDate();
- var hour = date.getHours();
- var minute = date.getMinutes();
- if (month >= 1 && month <= 9) {
- month = "0" + month;
- }
- if (day >= 0 && day <= 9) {
- day = "0" + day;
- }
- if (hour >= 0 && hour <= 9) {
- hour = "0" + hour;
- }
- if (minute >= 0 && minute <= 9) {
- minute = "0" + minute;
- }
- var data = {
- date: year + '-' + month + '-' + day,
- time: hour + ':' + minute
- }
- return data;
- }
- //时间判断
- function getApplyTime(time) {
- var timeStamp = time.replace('T', ' ');
- timeStamp = new Date(timeStamp.replace(/-/g, '/')).getTime();
- var timeStampNow = new Date().getTime();
- var str = (timeStampNow - timeStamp) / 1000 / 60;
- var applyTime = '';
- var newDate = new Date(time.replace('T', ' '));
- if (str <= 1) {
- applyTime = '1分钟前';
- }
- if (str > 1 && str < 60) {
- applyTime = parseInt(str) + '分钟前';
- }
- if (str >= 60 && str < 60 * 24) {
- applyTime = parseInt(str / 60) + '小时前';
- }
- if (str >= 60 * 24 && str <= 60 * 24 * 2) {
- applyTime = '昨天';
- }
- if (str > 60 * 24 * 2 && str <= 60 * 24 * 5) {
- applyTime = parseInt(str / 60 / 24) + '天前';
- }
- if (str > 60 * 24 * 5 && str <= 60 * 24 * 365) {
- applyTime = time.slice(5, 10);
- }
- if (str > 60 * 24 * 365) {
- applyTime = time.slice(0, 10);
- }
- return applyTime;
- }
- function navigate(url, t) {
- if (!url) return;
- app.globalData.url_param = param2Obj(url)
- return new Promise(success => {
- if (t) return wx[t]({
- url,
- success
- })
- wx.navigateTo({
- url,
- success,
- fail: _ => wx.redirectTo({
- url,
- success,
- fail: _ => wx.switchTab({
- url,
- success
- })
- })
- })
- })
- };
- function navigate_native({
- currentTarget: {
- dataset: {
- url,
- t
- }
- }
- }) {
- return navigate(url, t)
- }
- function navigate_auth_native({
- currentTarget: {
- dataset: {
- url,
- t
- }
- }
- }) {
- return _auth()._err || navigate(url, t)
- }
- function showTip(title) {
- wx.showToast({
- title,
- icon: 'none'
- })
- }
- function telephone_native({
- currentTarget: {
- dataset: {
- num: phoneNumber
- }
- }
- }) {
- wx.makePhoneCall({
- phoneNumber
- })
- }
- const login_err = {
- _err: {
- errmsg: '用户未登录',
- errno: 401,
- status: false
- }
- },
- _auth = ({ loginTip = true, realNameTip = false } = {}) => {
- if (realNameTip) {
- if (_auth()._err) return
- if (app.globalData.userInfo && app.globalData.userInfo.isRealname == "2") {
- wx.showModal({
- title: '您尚未实名认证',
- content: '是否立即前往用户信息进行认证',
- success: ({ confirm }) => confirm && navigate('/pages/user/myInfo/index')
- })
- return {
- _err: {
- errmsg: '用户未实名认证',
- errno: 401,//后台尚未验证实名 没有相对应的errno
- status: false
- }
- }
- }
- }
- if (app.globalData.userId) return app.globalData.userId
- loginTip && wx.showModal({
- title: '提示',
- content: '帐号未登录,是否跳转至登录页面',
- showCancel: true,
- success: ({
- confirm
- }) => confirm && goLogin()
- })
- wx.hideLoading()
- return login_err
- },
- goLogin = () => navigate('/pages/login/index'),
- goHome = () => navigate('/pages/home/index', 'switchTab'),
- goSuccess = (type, id) => navigate(`/pages/success/index?type=${type}&id=${id}`, 'reLaunch'),
- request = async ({
- url,
- data = {},
- method = "get",
- loading = false,
- loadingMsg = '',
- realNameTip = false,
- loadingHide = true
- }) => {
- wx.showNavigationBarLoading()
- loading && wx.showLoading({
- title: loadingMsg || '网络请求中...',
- mask: true
- })
- if (realNameTip) {
- let { _err } = _auth({ realNameTip })
- if (_err) return _err
- }
- return await new Promise((resolve, reject) => wx.request({
- url,
- data,
- method,
- success({
- data
- }) {
- let {
- errmsg,
- errno = 0,
- errcode = 0, //兼容第三方接口
- data: _data = data
- } = data
- if (errcode || errno)
- return reject({
- errmsg,
- errno: errno || errcode
- })
- return resolve(_data || { _err: null })
- },
- fail: reject,
- complete() {
- wx.hideNavigationBarLoading()
- loading && loadingHide && wx.hideLoading()
- }
- })).catch(({
- errmsg,
- errno = -100
- }) => {
- let status = false; //标记错误信息是否需要调用者处理
- switch (errno) {
- case -1:
- showTip('系统发生未知错误 请稍后重试')
- break
- case 401:
- goLogin()
- break
- case 402://缺少参数
- case 503://签名校验错误
- showTip('api接口请求失败')
- break
- case 501://验证码错误
- case 505://查询不到验证码
- showTip('短信验证码验证失败')
- break
- case -100:
- showTip('网络请求失败')
- break
- default:
- status = true
- }
- return {
- _err: {
- errmsg,
- errno,
- status
- }
- }
- })
- },
- get = async (url, data, options) => await request({ url, data, ...options }),
- post = async (url, data, options) => await get(url, data, { ...options, method: "post" }),
- get_auth = async (url, data, options = {}) => {
- let userId = _auth(options)
- if (userId._err) return userId
- return await get(url, Object.assign({}, data, { userId }), options)
- },
- post_auth = async (url, data, options) => await get_auth(url, data, { ...options, method: "post" }),
- getUserInfo = async ({ realNameTip, loading, loadingHide = true } = {}) => {
- if (!app.globalData.userInfo) {
- let { user, _err } = await get_auth(api.getUser, null, { loading, loadingHide, loadingMsg: '获取用户信息中...', })
- if (_err) {
- logout()
- return _err.status ? _auth() : { _err }
- }
- let { identity, userName, lUsername, lInstitutionName, pPhone, lPhone, isRealname, pDocumentNum, lInstitutionNum, pDocumentType, lInstitutionType } = app.globalData.userInfo = user,
- type = identity == '0'
- //用户中心显示 -- 主要区别在于法人身份下用户中心显示公司名称或未实名 其他情况下显示法人名称
- user.viewName = type ? userName : isRealname == "1" ? lInstitutionName : '未实名'
- // 其他页面显示
- user.name = type ? userName : lUsername
- user.phone = type ? pPhone : lPhone
- user.num = type ? pDocumentNum : lInstitutionNum
- user.phone = type ? pPhone : lPhone
- user.code_type = type ? pDocumentType : lInstitutionType
- }
- app.globalData.userInfo && realNameTip && _auth({ realNameTip })
- return app.globalData.userInfo || {}
- },
- param2Obj = url => {
- const [, search] = url.split('?')
- return search ?
- JSON.parse(`{"${decodeURIComponent(search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"')}"}`) : {}
- },
- get_global_param = () => {
- let t = app.globalData.url_param || {}
- app.globalData.url_param = {}
- return t;
- },
- isPhone = s => /^[1][3,4,5,6,7,8][0-9]{9}$/.test(s),
- isEmail = s => /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(s),
- form_verify = (data, verify = data.verify) => Object.keys(verify).map(k => {
- const v = data[k] || "", t = verify[k]
- if (t instanceof Function) return t(v, data)
- if (!v.length) return t
- }).filter(x => x)[0],
- getWeatherInfo = async () => {
- if (!app.globalData.weather) {
- let { wea, tem1, tem2, win, win_speed, wea_img, _err } = await get('https://www.tianqiapi.com/api/?version=v6&cityid=101180916&appid=37466447&appsecret=SjV4LAvH')
- if (_err) return _err.status && showTip('天气信息加载失败') // 免费的第三方接口 终归是靠不住的
- app.globalData.weather = {
- text: ` ${wea} ${tem2}℃~${tem1}℃ ${win}${win_speed}`,
- img: wea_img && `https://xuesax.com/tianqiapi/skin/pitaya/${wea_img}.png`
- }
- }
- return app.globalData.weather
- }, logout = () => {
- app.globalData.userId = 0
- app.globalData.userInfo = null
- // wx.clearStorage()
- wx.removeStorageSync("userId")
- };
- function inputChange({
- target: {
- dataset: {
- field
- }
- },
- detail: {
- value
- }
- }) {
- this.setData({
- [field]: value
- })
- }
- function pickerChange({ currentTarget: { dataset: { _index } }, detail: { value } }) {
- this._pickerChange(_index, value | 0)
- }
- function init(context) {
- const { data } = context
- let timer, t = {}
- context._setData = context.setData.bind(context)
- context.form_verify = value => form_verify(Object.assign(data, value))
- context.setData = x => {
- clearTimeout(timer)
- Object.assign(data, Object.assign(t, x))
- timer = setTimeout(() => t = context._setData({ ...t, _verify: !context.form_verify() }) || {}, 100)
- }
- return context
- }
- export default {
- regeneratorRuntime,
- api,
- getHello,
- formatTime,
- formatNumber,
- getCurrentDate,
- getApplyTime,
- navigate,
- navigateBack: (delta = 1) => wx.navigateBack({
- delta
- }),
- navigate_native,
- navigate_auth_native,
- goLogin,
- goHome,
- goSuccess,
- showTip,
- telephone_native,
- request: {
- get,
- post,
- get_auth,
- post_auth
- },
- getcitycode,
- pvw,
- pvw_native,
- getUserInfo,
- extend,
- inputChange,
- pickerChange,
- md5,
- get_global_param,
- verify: {
- isPhone,
- isEmail,
- form_verify
- },
- getWeatherInfo,
- logout,
- init,
- appKey: 'ZHLL_MiniPrograms'
- }
|