文件
xionggeshop/public/assets/js/backend/shopro/activity/groupon.js

401 行
18 KiB
JavaScript

const moment = require("moment");
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
var Controller = {
index: function () {
var grouponIndex = new Vue({
el: "#groupon-index",
data() {
return {
grouponType: '',
grouponName: '',
grouponOptions: [],
statusType: 'all',
grouponData: [],
searchKey: '',
currentPage: 1,
totalPage: 0,
offset: 0,
limit: 10,
dialogTeamDetail: false,
grouponGoodsData: [],
grouponTeamList: [],
is_define_grouponTeamListLeng: '',
is_dialog_opt: false,
temp: null
}
},
mounted() {
this.getgrouponOptions()
},
methods: {
selectChange(val) {
this.grouponType = val;
this.grouponOptions.forEach(i => {
if (i.id == val) {
this.grouponName = i.label
}
})
this.offset = 0;
this.currentPage = 1;
this.getgrouponData()
},
getgrouponOptions() {
let that = this;
Fast.api.ajax({
url: 'shopro/activity/activity/all',
loading: true,
type: 'GET',
data: {
type: 'groupon'
}
}, function (ret, res) {
if (res.data.length) {
res.data.forEach(i => {
that.grouponOptions.push({
value: i.id,
label: i.title
})
})
that.grouponType = that.grouponOptions[0].value;
that.grouponName = that.grouponOptions[0].label;
that.getgrouponData();
}
return false;
})
},
getgrouponData() {
var that = this;
window.clearInterval(that.temp)
that.is_dialog_opt = false
Fast.api.ajax({
url: 'shopro/activity/groupon/index',
loading: true,
type: 'GET',
data: {
sort: 'id',
order: 'desc',
offset: that.offset,
limit: that.limit,
activity_id: that.grouponType,
status: that.statusType,
search: that.searchKey,
}
}, function (ret, res) {
let arrMsg = []
res.data.rows.forEach(i => {
arrMsg.push({
id: i.id,
goods_title: i.goods.title,
goods_image: i.goods.image,
createtime: i.createtime,
user_nickname: i.groupon_log[0].user_nickname,
arr: i.groupon_log,
expiretime: i.expiretime,
// expiretime: 1590810077,
countDown: '',
status: i.status,
status_text: i.status_text,
num: i.num,
current_num: i.current_num
})
})
that.totalPage = res.data.total
that.timer(arrMsg)
return false;
})
},
timer(arr) {
let that = this;
that.temp = setInterval(() => {
arr.forEach((item, index) => {
that.$set(arr[index], 'countDown', that.countDownFun(item.expiretime * 1000));
});
that.grouponData = arr
}, 1000);
},
countDownFun(time) {
time--;
let nowTime = new Date().getTime();
if (nowTime <= time) {
let timediff = Math.round((time - nowTime) / 1000);
let day = parseInt(timediff / 3600 / 24) > 9 ? parseInt(timediff / 3600 / 24) : '0' + parseInt(timediff / 3600 / 24);
let hour = parseInt((timediff / 3600) % 24) > 9 ? parseInt((timediff / 3600) % 24) : '0' + parseInt((timediff / 3600) % 24);
let minute = parseInt((timediff / 60) % 60) > 9 ? parseInt((timediff / 60) % 60) : '0' + parseInt((timediff / 60) % 60);
let second = timediff % 60 > 9 ? timediff % 60 : '0' + timediff % 60;
return day + "天" + hour + "时" + minute + "分" + second + "秒";
} else {
return "-";
}
},
goDetail(id, row) {
this.dialogTeamDetail = true
this.grouponGoodsData = []
this.grouponGoodsData.push(row)
this.grouponTeamList = JSON.parse(JSON.stringify(this.grouponGoodsData[0].arr));
},
handleSizeChange(val) {
this.offset = 0;
this.currentPage = 1;
this.limit = val
this.getgrouponData()
},
handleCurrentChange(val) {
this.currentPage = val;
this.offset = (val - 1) * this.limit
this.getgrouponData()
},
handleTeamDetailClose() {
this.dialogTeamDetail = false
if (this.is_dialog_opt) {
this.getgrouponData()
}
},
refreshTeamer(index) {
let that = this;
Fast.api.ajax({
url: 'shopro/user_fake/random_user',
loading: true,
type: 'GET',
data: {}
}, function (ret, res) {
if (index == null) {
that.grouponTeamList.push({
createtime: Date.parse(new Date()) / 1000,
user_nickname: res.data.nickname,
is_leader: false,
user_avatar: res.data.avatar,
is_fictitious: true,
id: res.data.id,
is_define: true
})
} else {
let arr = {
createtime: Date.parse(new Date()) / 1000,
user_nickname: res.data.nickname,
is_leader: false,
user_avatar: res.data.avatar,
is_fictitious: true,
id: res.data.id,
is_define: true
}
for (key in arr) {
that.grouponTeamList[index][key] = arr[key]
}
}
let leng = 0
that.grouponTeamList.forEach(i => {
if (!i.is_define) {
leng++
}
})
that.is_define_grouponTeamListLeng = leng
})
},
defineTeamer(index, row) {
let that = this;
Fast.api.ajax({
url: `shopro/activity/groupon/addFictitious/id/${that.grouponGoodsData[0].id}`,
loading: true,
type: 'POST',
data: {
avatar: row.user_avatar,
nickname: row.user_nickname
}
}, function (ret, res) {
that.is_dialog_opt = true
that.grouponGoodsData = []
res.data.goods_title = res.data.goods.title
res.data.goods_image = res.data.goods.image
that.grouponGoodsData.push(res.data)
that.grouponTeamList = JSON.parse(JSON.stringify(that.grouponGoodsData[0].groupon_log));
})
},
cancelTeamer(index) {
this.grouponTeamList.splice(index, 1)
},
dismissTeam() {
let that = this;
that.dialogTeamDetail = false
Fast.api.ajax({
url: `shopro/activity/groupon/invalidGroupon/id/${that.grouponGoodsData[0].id}`,
loading: true,
type: 'POST',
data: {}
}, function (ret, res) {
that.getgrouponData()
})
},
callSearch(e) {
var evt = window.event || e;
if (evt.keyCode == 13) {
this.offset = 0;
this.currentPage = 1;
this.getgrouponData();
}
}
},
beforeDestroy() {
window.clearInterval(this.temp)
},
watch: {
statusType(newVal, oldVal) {
if (newVal, oldVal) {
this.currentPage = 1;
this.offset = 0;
this.limit = 10;
this.getgrouponData()
}
}
},
})
},
detail: function () {
var vue = new Vue({
el: "#groupon-detail",
data() {
return {
grouponGoodsData: [],
grouponTeamList: [],
is_define_grouponTeamListLeng: '',
// is_dialog_opt:false,
temp: null
}
},
mounted() {
let id = Config.id
let that = this;
Fast.api.ajax({
url: `shopro/activity/groupon/detail/id/${id}`,
loading: true,
type: 'GET',
data: {}
}, function (ret, res) {
let arrMsg = []
let datas = []
datas.push(res.data)
datas.forEach(i => {
arrMsg.push({
id: i.id,
goods_title: i.goods?i.goods.title:"",
goods_image: i.goods?i.goods.image:"",
createtime: i.createtime,
user_nickname: i.groupon_log[0].user_nickname,
arr: i.groupon_log,
expiretime: i.expiretime,
status: i.status,
status_text: i.status_text,
num: i.num,
current_num: i.current_num
})
})
that.grouponGoodsData = arrMsg;
that.grouponTeamList = JSON.parse(JSON.stringify(that.grouponGoodsData[0].arr));
let leng = 0
that.grouponTeamList.forEach(i => {
if (!i.is_define) {
leng++
}
})
that.is_define_grouponTeamListLeng = leng
return false;
})
},
methods: {
refreshTeamer(index) {
let that = this;
Fast.api.ajax({
url: 'shopro/user_fake/random_user',
loading: true,
type: 'GET',
data: {}
}, function (ret, res) {
if (index == null) {
that.grouponTeamList.push({
createtime: Date.parse(new Date()) / 1000,
user_nickname: res.data.nickname,
is_leader: false,
user_avatar: res.data.avatar,
is_fictitious: true,
id: res.data.id,
is_define: true
})
} else {
let arr = {
createtime: Date.parse(new Date()) / 1000,
user_nickname: res.data.nickname,
is_leader: false,
user_avatar: res.data.avatar,
is_fictitious: true,
id: res.data.id,
is_define: true
}
for (key in arr) {
that.grouponTeamList[index][key] = arr[key]
}
}
let leng = 0
that.grouponTeamList.forEach(i => {
if (!i.is_define) {
leng++
}
})
that.is_define_grouponTeamListLeng = leng
})
},
defineTeamer(index, row) {
let that = this;
Fast.api.ajax({
url: `shopro/activity/groupon/addFictitious/id/${that.grouponGoodsData[0].id}`,
loading: true,
type: 'POST',
data: {
avatar: row.user_avatar,
nickname: row.user_nickname
}
}, function (ret, res) {
// that.is_dialog_opt=true
that.grouponGoodsData = []
res.data.goods_title = res.data.goods.title
res.data.goods_image = res.data.goods.image
that.grouponGoodsData.push(res.data)
that.grouponTeamList = JSON.parse(JSON.stringify(that.grouponGoodsData[0].groupon_log));
})
},
cancelTeamer(index) {
this.grouponTeamList.splice(index, 1)
},
dismissTeam() {
let that = this;
that.dialogTeamDetail = false
Fast.api.ajax({
url: `shopro/activity/groupon/invalidGroupon/id/${that.grouponGoodsData[0].id}`,
loading: true,
type: 'POST',
data: {}
}, function (ret, res) {
Fast.api.close({
data: 123
})
})
},
}
})
},
add: function () {
Controller.api.bindevent();
},
edit: function () {
Controller.api.bindevent();
},
api: {
bindevent: function () {
Form.api.bindevent($("form[role=form]"));
}
}
};
return Controller;
});