1054 lines
30 KiB
JavaScript
1054 lines
30 KiB
JavaScript
|
|
import { ref } from "vue"
|
|||
|
|
import { get, post } from '../api/request.js'
|
|||
|
|
import api from "../api/index.js"
|
|||
|
|
import { Style } from '../utils/list.js'
|
|||
|
|
import { areaList } from './areaList.js'
|
|||
|
|
|
|||
|
|
|
|||
|
|
// 登录
|
|||
|
|
export function login() {
|
|||
|
|
return new Promise((resolve, reject) => {
|
|||
|
|
uni.login({
|
|||
|
|
provider: 'weixin',
|
|||
|
|
success: res => {
|
|||
|
|
let { code } = res
|
|||
|
|
uni.request({
|
|||
|
|
method: 'POST',
|
|||
|
|
url: api.url + '/api/v1/auth/login',
|
|||
|
|
data: {code, from: uni.getStorageSync('fromId') || 0},
|
|||
|
|
header: {
|
|||
|
|
Authorization: uni.getStorageSync('token') || '',
|
|||
|
|
accept: "application/json",
|
|||
|
|
appid: api.appId
|
|||
|
|
},
|
|||
|
|
success: (val) => {
|
|||
|
|
if(!Array.isArray(val.data)) {
|
|||
|
|
let token = val.data.token_type + ' ' + val.data.access_token
|
|||
|
|
uni.setStorageSync('token', token)
|
|||
|
|
uni.setStorageSync('subscribe', val.data.is_subscribe)
|
|||
|
|
uni.setStorageSync('avatar', val.data.avatar)
|
|||
|
|
uni.setStorageSync('nickname', val.data.nickname)
|
|||
|
|
uni.setStorageSync('role', 0)
|
|||
|
|
uni.setStorageSync('login_type', 'mini-app')
|
|||
|
|
uni.setStorageSync('is_vip', val.data.is_vip)
|
|||
|
|
uni.setStorageSync('is_new', val.data.is_new)
|
|||
|
|
uni.setStorageSync('is_authorized', val.data.is_authorized)
|
|||
|
|
uni.setStorageSync('is_default_avatar', val.data.is_default_avatar)
|
|||
|
|
uni.setStorageSync('sessionKey', val.data.session_key)
|
|||
|
|
uni.setStorageSync('saveTime', Date.now()) // 存储时间
|
|||
|
|
uni.setStorageSync('expires_in', val.data.expires_in * 1000) // 失效时间
|
|||
|
|
}
|
|||
|
|
resolve(val.data)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
fail(err) {
|
|||
|
|
reject(err)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 获取用户信息
|
|||
|
|
export function getUserInfo() {
|
|||
|
|
return new Promise((resolve, reject) => {
|
|||
|
|
uni.hideLoading();
|
|||
|
|
uni.getUserProfile ({
|
|||
|
|
desc: '展示用户信息',
|
|||
|
|
success: user=> {
|
|||
|
|
post('/api/v1/user', {
|
|||
|
|
nickname: user.userInfo.nickName,
|
|||
|
|
avatar: user.userInfo.avatarUrl,
|
|||
|
|
}, 'PUT').then( res => {
|
|||
|
|
uni.setStorageSync('nickname', user.userInfo.nickName)
|
|||
|
|
uni.setStorageSync('avatar', user.userInfo.avatarUrl)
|
|||
|
|
uni.setStorageSync('is_authorized', 1)
|
|||
|
|
uni.setStorageSync('is_default_avatar', false)
|
|||
|
|
resolve(res)
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
fail(err) {
|
|||
|
|
reject(err)
|
|||
|
|
},
|
|||
|
|
complete() {
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export function getUserPhone(detail) {
|
|||
|
|
return new Promise((resolve, reject) => {
|
|||
|
|
uni.showLoading({
|
|||
|
|
title: '获取中...',
|
|||
|
|
mask: true
|
|||
|
|
})
|
|||
|
|
// 如果有code直接调接口
|
|||
|
|
if(detail.code) {
|
|||
|
|
post('/api/v1/user/phone', { code: detail.code }).then((res) => {
|
|||
|
|
uni.setStorageSync('is_authorized', 1)
|
|||
|
|
uni.hideLoading()
|
|||
|
|
resolve(res)
|
|||
|
|
}).catch((err) => {
|
|||
|
|
reject(err)
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
// detail.encryptedData,detail.iv;根据code获取sessionkey,再根据sessionkey、encryptedData、iv获取手机号
|
|||
|
|
uni.checkSession({
|
|||
|
|
success: function (req) {
|
|||
|
|
post('/api/v1/user/phoneByEncrypted', { session_key: uni.getStorageSync('sessionKey'), encrypted_data: detail.encryptedData, iv: detail.iv }).then((res) => {
|
|||
|
|
uni.setStorageSync('is_authorized', 1)
|
|||
|
|
uni.hideLoading()
|
|||
|
|
resolve(res)
|
|||
|
|
}).catch((err) => {
|
|||
|
|
reject(err)
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
fail: async function (error) {
|
|||
|
|
uni.hideLoading()
|
|||
|
|
await login()
|
|||
|
|
getUserPhone(detail)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 绑定分享信息
|
|||
|
|
export async function userBind(params) {
|
|||
|
|
let from = params.from || 0,
|
|||
|
|
s = params.s || 0,
|
|||
|
|
u = params.u || 0,
|
|||
|
|
group_id = params.group_id || 0,
|
|||
|
|
company_id = params.company_id || '',
|
|||
|
|
scene = params.scene
|
|||
|
|
let has_sale = uni.getStorageSync('has_sale')
|
|||
|
|
let index = getCurrentPages().length - 1
|
|||
|
|
let link = getCurrentPages()[index].route
|
|||
|
|
if (from > 0 || company_id || !has_sale) {
|
|||
|
|
await post('/api/v1/user/bind', {from, s, u, group_id, scene, company_id, link}).then((res) => {
|
|||
|
|
uni.setStorageSync('has_sale', true)
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export async function judgePrivacy() {
|
|||
|
|
return new Promise((resolve, reject) => {
|
|||
|
|
if(uni.getPrivacySetting) {
|
|||
|
|
uni.getPrivacySetting({
|
|||
|
|
success: res => {
|
|||
|
|
console.log("是否需要授权:", res.needAuthorization)
|
|||
|
|
if (res.needAuthorization) {
|
|||
|
|
resolve(true)
|
|||
|
|
} else{
|
|||
|
|
resolve(false)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
// 低版本基础库不支持 wx.getPrivacySetting 接口,隐私接口可以直接调用
|
|||
|
|
resolve(false)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export async function uvRecord(id) {
|
|||
|
|
await get('/api/v1/banner/' + id + '/uv/record').then((res) => {
|
|||
|
|
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 消息提示框
|
|||
|
|
export function showToast(title = '', icon = 'none') {
|
|||
|
|
uni.showToast({
|
|||
|
|
title,
|
|||
|
|
icon
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export function goodsItem () {
|
|||
|
|
function toGoods (id) {
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: '/pages/groups/index?id=' + id
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
// 商品规格
|
|||
|
|
const showSku = ref(false)
|
|||
|
|
const groupId = ref(0)
|
|||
|
|
const sourceId = ref(0)
|
|||
|
|
const sourceType = ref('normal')
|
|||
|
|
const skuInfo = ref([])
|
|||
|
|
const skuId = ref(0)
|
|||
|
|
const sku = ref({})
|
|||
|
|
const showBtn = ref(true)
|
|||
|
|
async function getGoodsSku (item) {
|
|||
|
|
groupId.value = item.shop_group_goods_id
|
|||
|
|
// 判断用户授权状态
|
|||
|
|
await getgoodsgku(item)
|
|||
|
|
}
|
|||
|
|
// 获取商品规格
|
|||
|
|
async function getgoodsgku (item) {
|
|||
|
|
if (item.specs_type === 1) {
|
|||
|
|
skuInfo.value = await getGoodsSpecs(item.id)
|
|||
|
|
skuInfo.value.shop_group_goods_id = item.pivot.shop_group_goods_id
|
|||
|
|
showSku.value = true
|
|||
|
|
} else if (item.shop_goods_id){
|
|||
|
|
skuInfo.value = await getGoodsSpecs(item.shop_goods_id)
|
|||
|
|
skuId.value = item.shop_goods_sku_id || 0
|
|||
|
|
if (item.goods && item.goods.sku) {
|
|||
|
|
sku.value = {...item.goods.sku, num: item.num, cart_id: item.id || ''}
|
|||
|
|
}
|
|||
|
|
if(item.shop_group_goods_id !=0) {
|
|||
|
|
skuInfo.value.shop_group_goods_id = item.shop_group_goods_id || item.pivot.shop_group_goods_id
|
|||
|
|
} else {
|
|||
|
|
skuInfo.value.shop_group_goods_id = 0
|
|||
|
|
}
|
|||
|
|
showSku.value = true
|
|||
|
|
} else if (item.specs_type === 0) {
|
|||
|
|
if (item.stock > 0 || item.goods.stock > 0) {
|
|||
|
|
await addCart(item)
|
|||
|
|
} else {
|
|||
|
|
showToast('商品库存不足')
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
const skus_1 = ref(false)
|
|||
|
|
async function getGoodsSpecs (id) {
|
|||
|
|
let res = await get(`/api/v1/goods/spec/${id}`)
|
|||
|
|
if(res.data.skus.length == 1) {
|
|||
|
|
skus_1.value = true
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
skus_1.value = false
|
|||
|
|
}
|
|||
|
|
return res.data
|
|||
|
|
}
|
|||
|
|
// 添加到购物车
|
|||
|
|
async function addCart (item) {
|
|||
|
|
let res = await post('/api/v1/carts', {
|
|||
|
|
shop_goods_id: item.id,
|
|||
|
|
shop_goods_sku_id: 0,
|
|||
|
|
num:item.goods.limit_type==1 ? item.goods.start_sale_num : 1,
|
|||
|
|
shop_group_goods_id: item.pivot.shop_group_goods_id,
|
|||
|
|
source_id: sourceId.value,
|
|||
|
|
source_type: sourceType.value,
|
|||
|
|
})
|
|||
|
|
if (res.code === 0) {
|
|||
|
|
showToast('已加入购物车')
|
|||
|
|
getNum()
|
|||
|
|
showBtn.value = true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
let num = ref(uni.getStorageSync('cartNum') * 1)
|
|||
|
|
// 获取购物车数量
|
|||
|
|
async function getNum () {
|
|||
|
|
let res = await get('/api/v1/carts/num')
|
|||
|
|
num.value = Number(res.data.num)
|
|||
|
|
uni.setStorageSync('cartNum', num.value)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
return {
|
|||
|
|
sourceId,
|
|||
|
|
sourceType,
|
|||
|
|
toGoods,
|
|||
|
|
showSku, getGoodsSku, skuInfo, skuId, sku,skus_1,
|
|||
|
|
addCart,
|
|||
|
|
getNum, num,
|
|||
|
|
showBtn,
|
|||
|
|
getGoodsSpecs
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
let isclick = true
|
|||
|
|
// 重新支付
|
|||
|
|
export function payAgain (id, link_id = 0) {
|
|||
|
|
if(isclick){
|
|||
|
|
uni.showLoading({ mask: true, title: '加载中' })
|
|||
|
|
isclick = false
|
|||
|
|
get(`/api/v1/pay/${id}`, { pay_style: 'app_pay' }).then((res) => {
|
|||
|
|
uni.hideLoading()
|
|||
|
|
setTimeout(() => {
|
|||
|
|
isclick = true
|
|||
|
|
}, 1000)
|
|||
|
|
wxPay(res.data, id, 0, false, 0, link_id)
|
|||
|
|
}).catch(() => {
|
|||
|
|
isclick = true
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 微信支付
|
|||
|
|
export function wxPay(paymentData, id, type, flag = false, from = 0, link_id = 0) {
|
|||
|
|
console.log('paymentData', paymentData)
|
|||
|
|
if(paymentData.pay_style == 'normal') { // 普通微信支付
|
|||
|
|
uni.requestPayment({
|
|||
|
|
provider: 'wxpay',
|
|||
|
|
timeStamp: paymentData.timeStamp,
|
|||
|
|
nonceStr: paymentData.nonceStr,
|
|||
|
|
package: paymentData.package,
|
|||
|
|
signType: 'MD5',
|
|||
|
|
paySign: paymentData.paySign,
|
|||
|
|
success: (val) => {
|
|||
|
|
if (id) {
|
|||
|
|
if(link_id) {
|
|||
|
|
uni.redirectTo({
|
|||
|
|
url: '/pages/success/two?id=' + id + '&type=' + type + '&pay_id=' + paymentData.pay_id + '&from=' + from + '&link_id=' + link_id
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
uni.redirectTo({
|
|||
|
|
url: '/pages/success/index?id=' + id + '&type=' + type + '&pay_id=' + paymentData.pay_id + '&from=' + from
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
showToast('支付成功')
|
|||
|
|
uni.navigateBack({delta:1})
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
async fail(err) {
|
|||
|
|
showToast('支付失败')
|
|||
|
|
if(flag){
|
|||
|
|
await get(`/api/v1/order/close/${id}`).then((res) => {
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
if (type) {
|
|||
|
|
uni.redirectTo({ url: '/pages/order/list/index' })
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
} else if(paymentData.pay_style == 'jump_mini_half') { // 半屏支付
|
|||
|
|
uni.openEmbeddedMiniProgram({
|
|||
|
|
appId: paymentData.jump_mini_appid,
|
|||
|
|
path: paymentData.jump_mini_path,
|
|||
|
|
extraData: {
|
|||
|
|
'id': id,
|
|||
|
|
'type': type,
|
|||
|
|
'flag': flag
|
|||
|
|
},
|
|||
|
|
success(rea) {
|
|||
|
|
console.log('success', rea)
|
|||
|
|
let showNum = 0
|
|||
|
|
uni.onAppShow((res) => {
|
|||
|
|
showNum += 1
|
|||
|
|
if(showNum > 1) {
|
|||
|
|
return false
|
|||
|
|
}
|
|||
|
|
if(res.referrerInfo && res.referrerInfo.appId == paymentData.jump_mini_appid) {
|
|||
|
|
uni.offAppShow()
|
|||
|
|
uni.showLoading({
|
|||
|
|
title: '加载中...',
|
|||
|
|
mask: true
|
|||
|
|
})
|
|||
|
|
let i = 0
|
|||
|
|
let interval = setInterval(async() => {
|
|||
|
|
let ress = await get(`/api/v1/pay/check/${paymentData.pay_id}`)
|
|||
|
|
console.log('pay_id:', paymentData.pay_id, 'status:', ress.data.status)
|
|||
|
|
i += 1
|
|||
|
|
if(i == 5 || ress.data.status) {
|
|||
|
|
uni.hideLoading()
|
|||
|
|
console.log('status', ress.data.status)
|
|||
|
|
clearInterval(interval)
|
|||
|
|
if(ress.data.status) {
|
|||
|
|
if (id) {
|
|||
|
|
uni.redirectTo({
|
|||
|
|
url: '/pages/success/index?id=' + id + '&type=' + type + '&pay_id=' + paymentData.pay_id + '&from=' + from
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
showToast('支付成功')
|
|||
|
|
uni.navigateBack({delta:1})
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
showToast('支付失败')
|
|||
|
|
if(flag){
|
|||
|
|
await get(`/api/v1/order/close/${id}`).then((req) => {
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
if (type) {
|
|||
|
|
uni.redirectTo({ url: '/pages/order/list/index' })
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}, 300)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
fail(err) {
|
|||
|
|
console.log('err', err)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
} else if(paymentData.pay_style == 'plugin_pay') { // 易宝插件支付-plugin_pay
|
|||
|
|
const plugin = requirePlugin('yeepay-plugin')
|
|||
|
|
plugin.yeepayPlugin({
|
|||
|
|
fee: paymentData.orderAmount * 100, // 金额(单位:分)传1就是1分钱
|
|||
|
|
paymentArgs: paymentData,
|
|||
|
|
currencyType: 'CNY' // 货币符号的代码,默认为 CNY
|
|||
|
|
}).then(res => {
|
|||
|
|
if (id) {
|
|||
|
|
uni.redirectTo({
|
|||
|
|
url: '/pages/success/index?id=' + id + '&type=' + type + '&pay_id=' + paymentData.pay_id + '&from=' + from
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
showToast('支付成功')
|
|||
|
|
uni.navigateBack({delta:1})
|
|||
|
|
}
|
|||
|
|
}).catch(err => {
|
|||
|
|
console.log('支付失败', err)
|
|||
|
|
showToast('支付失败')
|
|||
|
|
if(flag){
|
|||
|
|
get(`/api/v1/order/close/${id}`).then((ress) => {
|
|||
|
|
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
if (type) {
|
|||
|
|
uni.redirectTo({ url: '/pages/order/list/index' })
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取本周、本季度、本月
|
|||
|
|
*/
|
|||
|
|
var now = new Date() //当前日期
|
|||
|
|
var nowDayOfWeek = now.getDay() //今天本周的第几天
|
|||
|
|
var nowDay = now.getDate() //当前日
|
|||
|
|
var nowMonth = now.getMonth() //当前月
|
|||
|
|
var nowYear = now.getYear() //当前年
|
|||
|
|
nowYear += (nowYear < 2000) ? 1900 : 0
|
|||
|
|
|
|||
|
|
// 获取当前日期前几天的日期
|
|||
|
|
export function getOldDay(str = 'y-m-d h:i:s', day = 0) {
|
|||
|
|
var dd = new Date()
|
|||
|
|
dd.setDate(dd.getDate() - day) //获取AddDayCount天后的日期
|
|||
|
|
return dateTimeStr(str, new Date(dd))
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 获取某个时间后几天的时间
|
|||
|
|
export function getRangeTime(date, day) {
|
|||
|
|
let odate = new Date(date.replace(/-/g, '/')).getTime()
|
|||
|
|
odate = odate + (day * 24 * 60 * 60 * 1000)
|
|||
|
|
odate = new Date(odate)
|
|||
|
|
// 当前时间年月日
|
|||
|
|
let month1 = (nowMonth + 1) >= 1 && (nowMonth + 1) <= 9 ? '0' + (nowMonth + 1) : (nowMonth + 1)
|
|||
|
|
let day1 = nowDay >= 1 && nowDay <= 9 ? '0' + nowDay : nowDay
|
|||
|
|
let nowTime = nowYear + '-' + month1 + '-' + day1
|
|||
|
|
// 计算的日期
|
|||
|
|
let month2 = (odate.getMonth() + 1) >= 1 && (odate.getMonth() + 1) <= 9 ? '0' + (odate.getMonth() + 1) : (odate.getMonth() + 1)
|
|||
|
|
let day2 = odate.getDate() >= 1 && odate.getDate() <= 9 ? '0' + odate.getDate() : odate.getDate()
|
|||
|
|
let time = odate.getFullYear() + '-' + month2 + '-' + day2
|
|||
|
|
console.log(nowTime, time)
|
|||
|
|
|
|||
|
|
let timeStr = (odate.getMonth() + 1) + '月' + odate.getDate() + '日'
|
|||
|
|
if(nowTime == time) {
|
|||
|
|
timeStr = '今天'
|
|||
|
|
} else if(getOldDay('y-m-d', -1) == time){
|
|||
|
|
timeStr = '明天'
|
|||
|
|
}
|
|||
|
|
return timeStr
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 获取某个时间后几天的时间
|
|||
|
|
// (2023-11-10 12:12:11, 3) => 2023-11-13 12:12:11
|
|||
|
|
export function getNextTime(date, day) {
|
|||
|
|
let odate = new Date(date.replace(/-/g, "/")).getTime()
|
|||
|
|
odate = odate + (day * 24 * 60 * 60 * 1000)
|
|||
|
|
odate = new Date(odate)
|
|||
|
|
|
|||
|
|
// 计算的日期
|
|||
|
|
let year2 = odate.getFullYear()
|
|||
|
|
let month2 = (odate.getMonth()+1) >= 1 && (odate.getMonth()+1) <= 9 ? '0' + (odate.getMonth()+1) : (odate.getMonth()+1)
|
|||
|
|
let day2 = odate.getDate() >= 1 && odate.getDate() <= 9 ? '0' + odate.getDate() : odate.getDate()
|
|||
|
|
let hour = odate.getHours() < 10 ? '0' + odate.getHours() : odate.getHours()
|
|||
|
|
let minute = odate.getMinutes() < 10 ? '0' + odate.getMinutes() : odate.getMinutes() //分
|
|||
|
|
let second = odate.getSeconds() < 10 ? '0' + odate.getSeconds() : odate.getSeconds() //秒
|
|||
|
|
|
|||
|
|
let time = year2 + '-' + month2 + '-' + day2 + ' ' + hour + ':' + minute + ':' + second
|
|||
|
|
return time
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export function compareDate(date1, date2) {
|
|||
|
|
let str1 = new Date(date1.replace(/-/g, "/")).getTime()
|
|||
|
|
let str2 = new Date(date2.replace(/-/g, "/")).getTime()
|
|||
|
|
return str2 - str1 >= 0
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 时间戳转日期
|
|||
|
|
export function dateTimeStr(str = "y-m-d h:i:s", day){
|
|||
|
|
var date = new Date(day),
|
|||
|
|
year = date.getFullYear(), //年
|
|||
|
|
month = date.getMonth() + 1, //月
|
|||
|
|
day = date.getDate(), //日
|
|||
|
|
hour = date.getHours(), //时
|
|||
|
|
minute = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(), //分
|
|||
|
|
second = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds(); //秒
|
|||
|
|
month >= 1 && month <= 9 ? (month = "0" + month) : "";
|
|||
|
|
day >= 0 && day <= 9 ? (day = "0" + day) : "";
|
|||
|
|
hour >= 0 && hour <= 9 ? (hour = "0" + hour) : "";
|
|||
|
|
|
|||
|
|
if(str.indexOf('y') != -1){
|
|||
|
|
str = str.replace('y', year)
|
|||
|
|
}
|
|||
|
|
if(str.indexOf('m') != -1){
|
|||
|
|
str = str.replace('m', month)
|
|||
|
|
}
|
|||
|
|
if(str.indexOf('d') != -1){
|
|||
|
|
str = str.replace('d', day)
|
|||
|
|
}
|
|||
|
|
if(str.indexOf('h') != -1){
|
|||
|
|
str = str.replace('h', hour)
|
|||
|
|
}
|
|||
|
|
if(str.indexOf('i') != -1){
|
|||
|
|
str = str.replace('i', minute)
|
|||
|
|
}
|
|||
|
|
if(str.indexOf('s') != -1){
|
|||
|
|
str = str.replace('s', second)
|
|||
|
|
}
|
|||
|
|
return str
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 获得本周的开始日期
|
|||
|
|
export function getWeekStartDate() {
|
|||
|
|
var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 1)
|
|||
|
|
return dateTimeStr("y-m-d", weekStartDate)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 获得本月的开始日期
|
|||
|
|
export function getMonthStartDate(){
|
|||
|
|
var monthStartDate = new Date(nowYear, nowMonth, 1)
|
|||
|
|
return dateTimeStr("y-m-d", monthStartDate)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 保存图片到相册
|
|||
|
|
export function saveImg (url, text) {
|
|||
|
|
uni.saveImageToPhotosAlbum({
|
|||
|
|
filePath: url,
|
|||
|
|
success(res) {
|
|||
|
|
showToast(text || '保存成功', 'success')
|
|||
|
|
},
|
|||
|
|
fail(err){
|
|||
|
|
if (err.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || err.errMsg === "saveImageToPhotosAlbum:fail auth deny" || err.errMsg === "saveImageToPhotosAlbum:fail authorize no response") {
|
|||
|
|
uni.showModal({
|
|||
|
|
title: '提示',
|
|||
|
|
content: '需要您授权保存相册',
|
|||
|
|
showCancel: false,
|
|||
|
|
success() {
|
|||
|
|
// 拉起授权
|
|||
|
|
uni.openSetting({
|
|||
|
|
success(settingdata) {
|
|||
|
|
if (settingdata.authSetting['scope.writePhotosAlbum']) {
|
|||
|
|
uni.showModal({
|
|||
|
|
title: '提示',
|
|||
|
|
content: '获取权限成功, 请重新保存图片',
|
|||
|
|
showCancel: false
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
uni.showModal({
|
|||
|
|
title: '提示',
|
|||
|
|
content: '获取权限失败,将无法保存到相册哦~',
|
|||
|
|
showCancel: false
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
fail(failData) {
|
|||
|
|
},
|
|||
|
|
complete(finishData) {
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 图片预览
|
|||
|
|
export async function getImg () {
|
|||
|
|
let imgsArray = [];
|
|||
|
|
let res = await get('/api/v1/user/qrCode')
|
|||
|
|
if (res.code === 0) {
|
|||
|
|
imgsArray.push(res.data.qr_code)
|
|||
|
|
}
|
|||
|
|
uni.previewImage({
|
|||
|
|
urls: imgsArray,
|
|||
|
|
current: 0
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 批量加购物车
|
|||
|
|
export function adddCartBatch (items) {
|
|||
|
|
const goods = items.map(item => {
|
|||
|
|
return {
|
|||
|
|
shop_goods_id: item.shop_goods_id,
|
|||
|
|
shop_goods_sku_id: item.shop_sku_id,
|
|||
|
|
num: item.number,
|
|||
|
|
shop_group_goods_id: item.shop_group_goods_id,
|
|||
|
|
source_id: 0,
|
|||
|
|
source_type: 'normal'
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
post('/api/v1/carts/batch', {goods}).then(res => {
|
|||
|
|
showToast('已添加到购物车')
|
|||
|
|
setTimeout(function() {
|
|||
|
|
uni.switchTab({
|
|||
|
|
url: '/pages/cart/index'
|
|||
|
|
})
|
|||
|
|
}, 1000)
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 去评论
|
|||
|
|
export function toWrite (id) {
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: `/pages/order/comment/write?id=${id}`
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 获取店铺信息
|
|||
|
|
export async function getShopInfo () {
|
|||
|
|
let res = await get('/api/app/shop')
|
|||
|
|
uni.setStorageSync('page_rule', res.data.home_page_rule)
|
|||
|
|
uni.setStorageSync('vip_on', res.data.vip_on)
|
|||
|
|
uni.setStorageSync('shop_id', res.data.id)
|
|||
|
|
uni.setStorageSync('official_link', res.data.official_link)
|
|||
|
|
uni.setStorageSync('vip_price_show', res.data.vip_price_show === 1)
|
|||
|
|
uni.setStorageSync('refund_mode', res.data.refund_mode)
|
|||
|
|
uni.setStorageSync('show_identity', res.data.show_identity)
|
|||
|
|
uni.setStorageSync('vip_detail_on', res.data.vip_detail_on)
|
|||
|
|
uni.setStorageSync('score_on', res.data.score_on)
|
|||
|
|
uni.setStorageSync('score_trade_share', res.data.score_trade_share)
|
|||
|
|
uni.setStorageSync('score_comment', res.data.score_comment)
|
|||
|
|
uni.setStorageSync('score_trade', res.data.score_trade)
|
|||
|
|
uni.setStorageSync('deduct_overtime_ship_on', res.data.deduct_overtime_ship_on)
|
|||
|
|
uni.setStorageSync('img_preview_suffix', res.data.img_preview_suffix)
|
|||
|
|
uni.setStorageSync('rule', res.data.home_special_rule)
|
|||
|
|
uni.setStorageSync('logo', res.data.logo)
|
|||
|
|
uni.setStorageSync('theme_index', res.data.show_style_type || 0)
|
|||
|
|
uni.setStorageSync('theme_color', Style[res.data.show_style_type || 0].color)
|
|||
|
|
uni.setStorageSync('show_explain_video', res.data.show_explain_video)
|
|||
|
|
uni.setStorageSync('user_bg', res.data.user_background_img)
|
|||
|
|
uni.setStorageSync('has_multi_group', res.data.has_multi_group)
|
|||
|
|
uni.setStorageSync('technical_support', res.data.extendInfo ? res.data.extendInfo.technical_support : 0)
|
|||
|
|
uni.setStorageSync('technical_support_title', res.data.extendInfo ? res.data.extendInfo.technical_support_title : '')
|
|||
|
|
return res.data
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @desc 格式化日期字符串
|
|||
|
|
* @param { Nubmer} - 时间戳
|
|||
|
|
* @returns { String } 格式化后的日期字符串
|
|||
|
|
*/
|
|||
|
|
export function formatDate(timestamp) {
|
|||
|
|
// 补全为13位
|
|||
|
|
let arrTimestamp = (timestamp + '').split('');
|
|||
|
|
for (let start = 0; start < 13; start++) {
|
|||
|
|
if (!arrTimestamp[start]) {
|
|||
|
|
arrTimestamp[start] = '0';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
timestamp = arrTimestamp.join('') * 1;
|
|||
|
|
let minute = 1000 * 60;
|
|||
|
|
let hour = minute * 60;
|
|||
|
|
let day = hour * 24;
|
|||
|
|
let month = day * 30;
|
|||
|
|
let now = new Date().getTime();
|
|||
|
|
let diffValue = now - timestamp;
|
|||
|
|
// 如果本地时间反而小于变量时间
|
|||
|
|
if (diffValue < 0) {
|
|||
|
|
return '不久前';
|
|||
|
|
}
|
|||
|
|
// 计算差异时间的量级
|
|||
|
|
let monthC = diffValue / month;
|
|||
|
|
let weekC = diffValue / (7 * day);
|
|||
|
|
let dayC = diffValue / day;
|
|||
|
|
let hourC = diffValue / hour;
|
|||
|
|
let minC = diffValue / minute;
|
|||
|
|
// 数值补0方法
|
|||
|
|
let zero = function (value) {
|
|||
|
|
if (value < 10) {
|
|||
|
|
return '0' + value;
|
|||
|
|
}
|
|||
|
|
return value;
|
|||
|
|
};
|
|||
|
|
// 使用
|
|||
|
|
if (monthC > 4) {
|
|||
|
|
// 超过1年,直接显示年月日
|
|||
|
|
return (function () {
|
|||
|
|
let date = new Date(timestamp);
|
|||
|
|
return date.getFullYear() + '年' + zero(date.getMonth() + 1) + '月' + zero(date.getDate()) + '日';
|
|||
|
|
})();
|
|||
|
|
} else if (monthC >= 1) {
|
|||
|
|
return parseInt(monthC) + '月前';
|
|||
|
|
} else if (weekC >= 1) {
|
|||
|
|
return parseInt(weekC) + '周前';
|
|||
|
|
} else if (dayC >= 1) {
|
|||
|
|
return parseInt(dayC) + '天前';
|
|||
|
|
} else if (hourC >= 1) {
|
|||
|
|
return parseInt(hourC) + '小时前';
|
|||
|
|
} else if (minC >= 1) {
|
|||
|
|
return parseInt(minC) + '分钟前';
|
|||
|
|
}
|
|||
|
|
return '刚刚';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 监听网络变化
|
|||
|
|
export function NetWork() {
|
|||
|
|
uni.getNetworkType({
|
|||
|
|
success: (res) => {
|
|||
|
|
if (res.networkType == 'none') {
|
|||
|
|
uni.showToast({
|
|||
|
|
icon: "none",
|
|||
|
|
title: '网络错误,请重试!'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
// 监听网络状态变化
|
|||
|
|
uni.onNetworkStatusChange((res) => {
|
|||
|
|
if (!res.isConnected) {
|
|||
|
|
uni.showToast({
|
|||
|
|
icon: "none",
|
|||
|
|
title: '网络错误,请重试!'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @desc 封装倒计时组件
|
|||
|
|
* @param endTime 结束时间
|
|||
|
|
* @param type 返回的类型
|
|||
|
|
* @return {*}
|
|||
|
|
*/
|
|||
|
|
export function DownTime( endTime, type) {
|
|||
|
|
let thisEndTime = new Date(endTime) // 获取截
|
|||
|
|
if(type == 3){
|
|||
|
|
var downFn = setInterval(() => {
|
|||
|
|
let newTime = new Date().getTime()//获取当前时间
|
|||
|
|
let backTime = thisEndTime - newTime//计算剩余时间
|
|||
|
|
var d = Math.floor(backTime / (1000 * 60 * 60 * 24)); //计算天数
|
|||
|
|
var h = Math.floor(backTime / (1000 * 60 * 60) % 24); //计算小时数
|
|||
|
|
var m = Math.floor(backTime / (1000 * 60) % 60); //计算分钟数
|
|||
|
|
var s = Math.floor(backTime / 1000 % 60); //计算秒数
|
|||
|
|
return {d: d, h: h, m: m, s: s}
|
|||
|
|
}, 1000)
|
|||
|
|
|
|||
|
|
}else if(type == 1 || type == 2) {
|
|||
|
|
var to = new Date(endTime.replace(/-/g, "/"))
|
|||
|
|
var now = new Date()
|
|||
|
|
var backTime = to.getTime() - now.getTime()
|
|||
|
|
var d = Math.floor(backTime / (1000 * 60 * 60 * 24)) //计算天数
|
|||
|
|
var h = Math.floor(backTime / (1000 * 60 * 60) % 24) //计算小时数
|
|||
|
|
var m = Math.floor(backTime / (1000 * 60) % 60) //计算分钟数
|
|||
|
|
var s = Math.floor(backTime / 1000 % 60); //计算秒数
|
|||
|
|
if( type == 1){
|
|||
|
|
if(d > 0){
|
|||
|
|
return '距结束<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">'+ d + '</span>天'
|
|||
|
|
}else if(h||m||s){
|
|||
|
|
let time1='距结束<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + h + '</span>时<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + m + '</span>分<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + s + '</span>秒'
|
|||
|
|
let time2='已结束'
|
|||
|
|
return backTime > 0 ? time1 : time2
|
|||
|
|
}else{
|
|||
|
|
return ''
|
|||
|
|
}
|
|||
|
|
}else if(type == 2) {
|
|||
|
|
d = d > 9 ? d : '0' + d
|
|||
|
|
h = h > 9 ? h : '0' + h
|
|||
|
|
m = m > 9 ? m : '0' + m
|
|||
|
|
let time1='距结束<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + d + '</span>天<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + h + '</span>时<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + m + '</span>分'
|
|||
|
|
if(d == 0) {
|
|||
|
|
time1='距结束<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + h + '</span>时<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + m + '</span>分'
|
|||
|
|
}
|
|||
|
|
let time2='已结束'
|
|||
|
|
return backTime > 0 ? time1 : time2
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export function UpTime( startTime, type) {
|
|||
|
|
let stTime = new Date(startTime.replace(/-/g, "/"))
|
|||
|
|
if(new Date().getTime() - stTime < 0) {
|
|||
|
|
if(type == 3){
|
|||
|
|
setInterval(() => {
|
|||
|
|
let newTime = new Date().getTime()//获取当前时间
|
|||
|
|
let backTime = stTime - newTime//计算剩余时间
|
|||
|
|
var d = Math.floor(backTime / (1000 * 60 * 60 * 24)); //计算天数
|
|||
|
|
var h = Math.floor(backTime / (1000 * 60 * 60) % 24); //计算小时数
|
|||
|
|
var m = Math.floor(backTime / (1000 * 60) % 60); //计算分钟数
|
|||
|
|
var s = Math.floor(backTime / 1000 % 60); //计算秒数
|
|||
|
|
return {d: d, h: h, m: m, s: s}
|
|||
|
|
}, 1000)
|
|||
|
|
}
|
|||
|
|
if(type == 1 || type == 2) {
|
|||
|
|
var to = new Date(startTime.replace(/-/g, "/"))
|
|||
|
|
var now = new Date()
|
|||
|
|
var backTime = to.getTime() - now.getTime()
|
|||
|
|
var d = Math.floor(backTime / (1000 * 60 * 60 * 24)) //计算天数
|
|||
|
|
var h = Math.floor(backTime / (1000 * 60 * 60) % 24) //计算小时数
|
|||
|
|
var m = Math.floor(backTime / (1000 * 60) % 60) //计算分钟数
|
|||
|
|
var s = Math.floor(backTime / 1000 % 60); //计算秒数
|
|||
|
|
if(type == 1){
|
|||
|
|
if(d > 0){
|
|||
|
|
return '距开始<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">'+ d + '</span>天'
|
|||
|
|
}else if(h || m || s){
|
|||
|
|
let time1 = '距开始<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + h + '</span>时<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + m + '</span>分<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + s + '</span>秒'
|
|||
|
|
return time1
|
|||
|
|
}
|
|||
|
|
} else if(type == 2) {
|
|||
|
|
d = d > 9 ? d : '0' + d
|
|||
|
|
h = h > 9 ? h : '0' + h
|
|||
|
|
m = m > 9 ? m : '0' + m
|
|||
|
|
let time1='距开始<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + d + '</span>天<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + h + '</span>时<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + m + '</span>分'
|
|||
|
|
if(d == 0) {
|
|||
|
|
time1='距开始<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + h + '</span>时<span style="color:#2C2C2C;font-weight:bold;margin:0 2px;">' + m + '</span>分'
|
|||
|
|
}
|
|||
|
|
let time2='已结束'
|
|||
|
|
return time1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
return ''
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export function gapTime(startTime) {
|
|||
|
|
let stTime = new Date(startTime.replace(/-/g, "/"))
|
|||
|
|
var to = new Date(startTime.replace(/-/g, "/"))
|
|||
|
|
var now = new Date()
|
|||
|
|
var backTime = to.getTime() - now.getTime()
|
|||
|
|
var d = Math.floor(backTime / (1000 * 60 * 60 * 24)) //计算天数
|
|||
|
|
var h = Math.floor(backTime / (1000 * 60 * 60) % 24) //计算小时数
|
|||
|
|
var m = Math.floor(backTime / (1000 * 60) % 60) //计算分钟数
|
|||
|
|
var s = Math.floor(backTime / 1000 % 60); //计算秒数
|
|||
|
|
if(d > 0){
|
|||
|
|
return d + '天'
|
|||
|
|
} else if(h > 0){
|
|||
|
|
return h + '小时'
|
|||
|
|
} else if(m > 0) {
|
|||
|
|
return m + '分钟'
|
|||
|
|
} else {
|
|||
|
|
return s + '秒'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export function parseTime(Time) {
|
|||
|
|
let date = Time.split(' ')[0]
|
|||
|
|
let start = Time.split(' ')[1].substr(0, 5)
|
|||
|
|
let today = new Date().setHours(0, 0, 0, 0)
|
|||
|
|
let dayStr = new Date(date.replace(/-/g, "/")).setHours(0, 0, 0, 0)
|
|||
|
|
let dateObj = {
|
|||
|
|
0: '今天',
|
|||
|
|
86400000: '明天',
|
|||
|
|
172800000: '后天'
|
|||
|
|
}
|
|||
|
|
return (dateObj[dayStr - today] || date) + ' ' + start
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export const writePhotosAlbum = (successFun, failFun) => {
|
|||
|
|
uni.getSetting({
|
|||
|
|
success(res) {
|
|||
|
|
if (!res.authSetting['scope.writePhotosAlbum']) {
|
|||
|
|
uni.authorize({
|
|||
|
|
scope: 'scope.writePhotosAlbum',
|
|||
|
|
success: function () {
|
|||
|
|
successFun && successFun()
|
|||
|
|
},
|
|||
|
|
fail: function (res) {
|
|||
|
|
uni.hideLoading()
|
|||
|
|
uni.showModal({
|
|||
|
|
title: '提示',
|
|||
|
|
content: "微信授权保存图片,是否重新授权?",
|
|||
|
|
showCancel: true,
|
|||
|
|
cancelText: "否",
|
|||
|
|
confirmText: "是",
|
|||
|
|
success: function (res2) {
|
|||
|
|
if (res2.confirm) {
|
|||
|
|
uni.openSetting({
|
|||
|
|
success: (res3) => {
|
|||
|
|
if (res3.authSetting['scope.writePhotosAlbum']) {
|
|||
|
|
successFun && successFun()
|
|||
|
|
} else {
|
|||
|
|
failFun && failFun()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
failFun && failFun()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
successFun && successFun()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export const getDayDiff = (date1, date2) => {
|
|||
|
|
const oneDay = 1000 * 60 * 60 * 24
|
|||
|
|
const timeDiff = Math.abs(new Date(date1.replace(/-/g, '/')).getTime() - new Date(date2.replace(/-/g, '/')).getTime())
|
|||
|
|
const dayDiff = Math.ceil(timeDiff / oneDay)
|
|||
|
|
let str = dayDiff == 0 ? '当天' : dayDiff + '天后'
|
|||
|
|
return str
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export const getIntervalDay = (date1, date2) => {
|
|||
|
|
const oneDay = 1000 * 60 * 60 * 24
|
|||
|
|
const timeDiff = Math.abs(new Date(date1.replace(/-/g, '/')).getTime() - new Date(date2.replace(/-/g, '/')).getTime())
|
|||
|
|
const dayDiff = Math.ceil(timeDiff / oneDay)
|
|||
|
|
let flag = dayDiff < 180 ? true : false
|
|||
|
|
return flag
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export const getAreaCode = (prov_name, city_name, area_name) => {
|
|||
|
|
return new Promise((resolve, reject) => {
|
|||
|
|
let list = []
|
|||
|
|
for(let a = 0; a < areaList.length; a++){
|
|||
|
|
let prov = areaList[a]
|
|||
|
|
if (prov.name == prov_name) {
|
|||
|
|
list.push({ code: prov.id, name: prov_name })
|
|||
|
|
for(let b = 0; b < prov.children.length; b++){
|
|||
|
|
let city = prov.children[b]
|
|||
|
|
if (city.name == city_name) {
|
|||
|
|
list.push({ code: city.id, name: city_name })
|
|||
|
|
for(let c = 0; c < city.children.length; c++){
|
|||
|
|
let area = city.children[c]
|
|||
|
|
if (area.name == area_name) {
|
|||
|
|
list.push({ code: area.id, name: area_name })
|
|||
|
|
break
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
resolve(list)
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export const downloadVideo = (url) => {
|
|||
|
|
uni.showLoading({
|
|||
|
|
mask: true,
|
|||
|
|
title: '加载中'
|
|||
|
|
})
|
|||
|
|
uni.downloadFile({
|
|||
|
|
url: url,
|
|||
|
|
success: (res) => {
|
|||
|
|
if (res.statusCode === 200) {
|
|||
|
|
uni.hideLoading()
|
|||
|
|
uni.saveVideoToPhotosAlbum({
|
|||
|
|
filePath: res.tempFilePath,
|
|||
|
|
success: () => {
|
|||
|
|
showToast('保存成功')
|
|||
|
|
},
|
|||
|
|
fail: (err) => {
|
|||
|
|
if (err.errMsg === 'saveVideoToPhotosAlbum:fail auth deny') {
|
|||
|
|
uni.showModal({
|
|||
|
|
title: '提示',
|
|||
|
|
content: '需要您授权保存相册',
|
|||
|
|
showCancel: false,
|
|||
|
|
success() {
|
|||
|
|
uni.openSetting({
|
|||
|
|
success(settingdata) {
|
|||
|
|
if (settingdata.authSetting['scope.writePhotosAlbum']) {
|
|||
|
|
uni.showModal({
|
|||
|
|
title: '提示',
|
|||
|
|
content: '获取权限成功, 请重新保存图片',
|
|||
|
|
showCancel: false
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
uni.showModal({
|
|||
|
|
title: '提示',
|
|||
|
|
content: '获取权限失败,将无法保存到相册哦~',
|
|||
|
|
showCancel: false
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
fail(failData) {
|
|||
|
|
},
|
|||
|
|
complete(finishData) {
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
fail: (err) => {
|
|||
|
|
uni.hideLoading()
|
|||
|
|
uni.showToast({
|
|||
|
|
title: err.errMsg,
|
|||
|
|
icon: 'none'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export const uniShare = (title, face_img, path) => {
|
|||
|
|
uni.share({
|
|||
|
|
provider: 'weixin',
|
|||
|
|
scene: "WXSceneSession",
|
|||
|
|
type: 5,
|
|||
|
|
title: title,
|
|||
|
|
imageUrl: face_img,
|
|||
|
|
miniProgram: {
|
|||
|
|
id: api.protoId,
|
|||
|
|
path: path,
|
|||
|
|
type: 0,
|
|||
|
|
webUrl: api.webUrl
|
|||
|
|
},
|
|||
|
|
success(res) {
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
fail(err) {
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export const toMiniProgram = (path) => {
|
|||
|
|
uni.showModal({
|
|||
|
|
title: '提示',
|
|||
|
|
content: '需要离开商城APP,跳转至妙选商城小程序,进行后续操作,确认跳转吗?',
|
|||
|
|
success(res) {
|
|||
|
|
if (res.confirm) {
|
|||
|
|
var pages = getCurrentPages()
|
|||
|
|
var page = pages[pages.length - 1]
|
|||
|
|
var shares = null, sweixin = null
|
|||
|
|
plus.share.getServices(function(s){
|
|||
|
|
shares = {}
|
|||
|
|
for(var i in s){
|
|||
|
|
var t = s[i]
|
|||
|
|
shares[t.id] = t
|
|||
|
|
}
|
|||
|
|
sweixin = shares['weixin']
|
|||
|
|
sweixin.launchMiniProgram({
|
|||
|
|
id: 'gh_ca74730c9f77',
|
|||
|
|
path: path
|
|||
|
|
})
|
|||
|
|
}, function(e) {
|
|||
|
|
console.log("获取分享服务列表失败:" + e.message)
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export const whetherLogin = () => {
|
|||
|
|
let flag = true
|
|||
|
|
let saveTime = uni.getStorageSync('saveTime')
|
|||
|
|
let expires_in = uni.getStorageSync('expires_in')
|
|||
|
|
let token = uni.getStorageSync('token')
|
|||
|
|
if((saveTime && expires_in && Date.now() > saveTime + expires_in) || !expires_in || !saveTime || !token) {
|
|||
|
|
flag = false
|
|||
|
|
}
|
|||
|
|
return flag
|
|||
|
|
}
|