105 lines
2.4 KiB
JavaScript
105 lines
2.4 KiB
JavaScript
import api from '../../config/api'
|
|
import { funMixin } from '../../config/mixin'
|
|
import { ref, onMounted, onBeforeUnmount } from 'vue';
|
|
|
|
export default function (componentContent, typeId, shopId) {
|
|
const { sendReq, beforeGetData, afterGetData, jumpProductDetail, jumpSeckills } = funMixin()
|
|
const activityData = ref({})
|
|
const productList = ref([])
|
|
const count = ref([])
|
|
const timer = ref(null)
|
|
|
|
onMounted(() => {
|
|
if (componentContent.value.id) {
|
|
getProList()
|
|
getActivit()
|
|
} else {
|
|
productList.value = []
|
|
}
|
|
})
|
|
|
|
onBeforeUnmount(() => {
|
|
clearInterval(timer.value)
|
|
})
|
|
|
|
function getProList () {
|
|
beforeGetData()
|
|
const params = {
|
|
method: 'POST',
|
|
url: api.getActivityProduct,
|
|
data: {
|
|
isPage: 2,
|
|
ids: [componentContent.value.id]
|
|
}
|
|
}
|
|
sendReq(
|
|
params,
|
|
(res) => {
|
|
afterGetData()
|
|
productList.value = res.data.list
|
|
},
|
|
() => {
|
|
afterGetData()
|
|
}
|
|
)
|
|
}
|
|
|
|
function getActivit () {
|
|
beforeGetData()
|
|
const params = {
|
|
method: 'GET',
|
|
url: `${api.getActivity}?id=${componentContent.value.id}`,
|
|
}
|
|
sendReq(
|
|
params,
|
|
(res) => {
|
|
afterGetData()
|
|
activityData.value = res.data
|
|
if(res.data){
|
|
getTime()
|
|
}
|
|
},
|
|
() => {
|
|
afterGetData()
|
|
}
|
|
)
|
|
}
|
|
|
|
function getTime () {
|
|
const date = new Date().getTime()
|
|
let startTime = activityData.value.startTime
|
|
let endTime = activityData.value.endTime
|
|
let time = 0
|
|
if (activityData.value.state === 0) {
|
|
time = startTime - date // 未开始
|
|
} else if(activityData.value.state === 1) {
|
|
time = endTime - date // 进行中
|
|
}
|
|
let countDownInterval = setInterval(()=>{
|
|
countDown(time)
|
|
time -= 1000
|
|
if(time <= 0){
|
|
clearInterval(countDownInterval)
|
|
activityData.value.state ++
|
|
}
|
|
},1000)
|
|
}
|
|
function countDown (time) {
|
|
const fn = (v) => (v < 10 ? `0${v}` : v)
|
|
const t = parseInt(time / 1000)
|
|
const text = activityData.value.state === 0 ? '开始' : '结束'
|
|
const hour = parseInt(t / 3600)
|
|
const min = parseInt((t % 3600) / 60)
|
|
const s = t % 60
|
|
count.value = [text, fn(hour), fn(min), fn(s)]
|
|
}
|
|
|
|
return {
|
|
activityData,
|
|
productList,
|
|
count,
|
|
jumpProductDetail,
|
|
jumpSeckills
|
|
}
|
|
}
|