401 行
18 KiB
JavaScript
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;
|
|
}); |