var vNode = { delimiters: ['${', '}'], el: '#myCollection', components: { tagsComponent: tagsComponent, dateComponent: dateComponent, cateComponent: cateComponent, phoneComponent: phoneComponent }, data: { sessStorageKey: '$data-collection', listState: { value: '', loading: false, finished: false, pageSize: 10, offset: 80, scrollTop: 0, total: 0, list: [] }, listInfo: { scrollTop: 0 }, // 筛选参数 limitlist: { pageNum: 1, label: '', selectTime: '', buyerclass: '', buyerPhone: 0, winnerPhone: 0 }, tagList: [], // 个人标签列表 selectTagList: [], //选择标签列表 selectCateList: [], // 选择的采购单位类型列表 // 下拉菜单参数 params: { value2: '', buyerData: { dataType: '1', option: [ { text: '有联系方式', value: 1, type: false }, { text: '无联系方式', value: -1, type: false }, ], }, winnerData: { dataType: '2', option: [ { text: '有联系方式', value: 1, type: false }, { text: '无联系方式', value: -1, type: false }, ] } }, // 收藏日期选择时间参数 selectDate: { startDate: '', endDate: '', exact: '' }, tagText: { timeText: '收藏时间', perText: '个人标签', cateText: '采购单位类型', }, limitshow: false, // 筛选框显示 condition: true, // 列表星星显示 personTagactive:0, //个人标签选择按钮下标 screenShow: false, // 筛选按钮是否显示 }, computed: { getParamsStatus () { return this.limitlist.label=='' && this.limitlist.selectTime=='' && this.limitlist.buyerclass=='' && this.limitlist.buyerPhone==0 && this.limitlist.winnerPhone==0 && this.limitlist.pageNum==1 } }, created () { var recover = this.recover() if (!recover) { this.getList() this.getUserRoot() this.getTagsList() } }, mounted() { if(this.limitlist.label !=='' || this.limitlist.selectTime != '' || this.limitlist.buyerclass != '' || this.limitlist.buyerPhone != 0 || this.limitlist.winnerPhone != 0) { this.limitshow = true } else { this.limitshow = false } }, mounted () { setTimeout(() => { $(this.$refs.jList).scrollTop(this.listState.scrollTop) }, 300) }, methods: { recover: function () { let _this = this var excludeKey = ['sessStorageKey'] var $data = sessionStorage.getItem(this.sessStorageKey) if ($data) { $data = JSON.parse($data) var listState = $data["listState"]; var list = listState["list"]; for (var i=0;i 0) { _this.screenShow = true } else { _this.screenShow = false } } }) }, // 列表跳转 linkRouter: function(id) { this.setrecover() location.href = '/article/content/' + id + '.html' }, // 筛选按钮 screenBtn() { this.limitshow = !this.limitshow setTimeout(()=>{ this.setToggle() }) }, getContainer: function() { return this.$refs.searchContainer }, // 获取列表数据 getList: function(isScreen) { let _this = this _this.listState.loading = true let params = _this.limitlist $.ajax({ url: '/publicapply/bidcoll/list', type: "POST", contentType: 'application/json;charset=utf-8', data: JSON.stringify(params), success: function(res){ console.log(res) if (res.error_code == 0) { if (res.data && res.data.res && $.isArray(res.data.res)) { // 当数组为空时,且不为第一页,底部显示没有更多数据 if(res.data.res.length == 0 && _this.limitlist.pageNum != 1){ if(isScreen) { _this.listState.list = res.data.res } else { _this.listState.list = _this.listState.list.concat(res.data.res) } _this.listState.loading = false if(!res.data.haveNextPage){ _this.listState.loading = true _this.listState.finished = true; }else{ _this.listState.loading = false _this.limitlist.pageNum++ } } else if(res.data.res.length == 0 && _this.limitlist.pageNum == 1){ // 当数组为空时,且为第一页,页面为暂无数据页面 _this.listState.loading = true _this.listState.finished = true; _this.listState.list = res.data.res } else { // 数据正常加载更多 for (let i = 0; i < res.data.res.length; i++) { res.data.res[i].bidamount = utils.moneyUnit(res.data.res[i].bidamount) res.data.res[i].publishtime = utils.dateFromNow(res.data.res[i].publishtime * 1000) } if(isScreen) { _this.listState.list = res.data.res } else { _this.listState.list = _this.listState.list.concat(res.data.res) } _this.listState.loading = false if(!res.data.haveNextPage){ _this.listState.loading = true _this.listState.finished = true; }else{ _this.listState.loading = false _this.limitlist.pageNum++ } } } else { _this.listState.loading = true _this.listState.finished = true; } } else { _this.$toast(res.error_msg) } }, error: function(err){ _this.listState.loading = true _this.listState.finished = true; } }) }, // 取消收藏 collecClick: function(e,id) { e.stopPropagation() let _this = this let params = { baction: 'R', binfo: [ { bid: id } ] } $.ajax({ url: '/publicapply/bidcoll/action', type: "POST", contentType: 'application/json;charset=utf-8', data:JSON.stringify(params), success: function(res){ console.log(res) if(res.error_code == 0) { if(res.data) { _this.$toast('取消收藏成功') if(_this.listState.list.length <= 1) { location.reload() }else { _this.reLoadList(true) } } else { _this.$toast('取消收藏失败') } } }, error: function(err){ _this.$toast('取消收藏失败') } }) }, // 确定按钮事件 confirm: function(data) { console.log(data) if(data.name == 'dateItem'){ const timeRange = { start: (data.data.start / 1000).toFixed(0), end: (data.data.end / 1000).toFixed(0) } // 开始时间未选择,则默认开始时间为2000年 if (!timeRange.start || timeRange.start == 0) { timeRange.start = +new Date('2000') / 1000 } // 结束时间未选择,则默认当天23点 if (!timeRange.end || timeRange.end == 0) { var today = new Date().pattern('yyyy/MM/dd') var day1 = 24 * 60 * 60 * 1000 var todayEnd = +new Date(today) + day1 - 1000 timeRange.end = Math.round(todayEnd / 1000) } if (timeRange.start == 0 && timeRange.end == 0) { this.limitlist.selectTime = '' this.tagText.timeText = '收藏时间' } else if(timeRange.start == 0 && timeRange.end != 0) { this.limitlist.selectTime = '_' + timeRange.end } else if(timeRange.start != 0 && timeRange.end == 0) { this.limitlist.selectTime = timeRange.start + '_' } else { this.limitlist.selectTime = timeRange.start + '_' + timeRange.end } this.selectDate.exact = data.data.exact switch (data.data.exact) { case 'all': { this.tagText.timeText = '收藏时间' break } case 'lately7': { this.tagText.timeText = '最近7天' break } case 'lately30': { this.tagText.timeText = '最近30天' break } case 'lastYear': { this.tagText.timeText = '去年' break } case 'exact': { if(timeRange.start == 0 && timeRange.end == 0) { this.limitlist.selectTime = '' this.tagText.timeText = '收藏时间' this.setToggle() return } else { this.tagText.timeText = new Date(timeRange.start*1000).pattern('yyyy.MM.dd') + '~' + new Date(timeRange.end*1000).pattern('yyyy.MM.dd') } break } } } else if (data.name == 'cateItem') { this.tagText.cateText = '采购单位类型' + data.t this.limitlist.buyerclass = data.data.join(',') } else if (data.name == 'tagsItem') { this.tagText.perText = data.t this.limitlist.label = data.data } else if (data.name == 'buyerItem') { this.limitlist.buyerPhone = parseInt(data.data) } else if (data.name == 'winnerItem') { this.limitlist.winnerPhone = parseInt(data.data) } this.limitlist.pageNum = 1 this.setToggle() this.reLoadList(true) }, // 取消按钮事件 cancel: function(data) { console.log(data) if(data.name == 'dateItem'){ this.limitlist.selectTime = '' this.tagText.timeText = '收藏时间' this.selectDate.exact = 'all' this.$refs.datecom.setState() } else if (data.name == 'cateItem') { this.tagText.cateText = '采购单位类型' this.limitlist.buyerclass = '' this.selectCateList = [] this.$refs.catecom.setState() } else if (data.name == 'tagsItem') { this.limitlist.label = '' this.tagText.perText = '个人标签' this.selectTagList = [] this.$refs.tagcom.setState() } else if (data.name == 'buyerItem') { this.limitlist.buyerPhone = 0 } else if (data.name == 'winnerItem') { this.limitlist.winnerPhone = 0 } this.reLoadList(true) this.setToggle() }, // 刷新列表 reLoadList: function(isScreen) { this.getList(isScreen) }, // 关闭菜单 setToggle: function() { this.$refs.dateItem.toggle(false) this.$refs.cateItem.toggle(false) this.$refs.tagItem.toggle(false) this.$refs.buyerItem.toggle(false) this.$refs.winnerItem.toggle(false) }, // 获取个人标签列表 getTagsList: function() { let _this = this $.ajax({ url: '/publicapply/bidcoll/getLabel', type: "POST", success: function(res){ console.log(res) if(res.error_code == 0 && res.data) { res.data.forEach(function(item, index){ item.type = false }) _this.tagList = res.data } else { _this.tagList = [] } }, error: function(err){ console.log(err) } }) }, // 数据导出 dataReport: function() { if(this.listState.list.length == 0) { this.$toast('暂无数据') } else { $.ajax({ url: '/publicapply/dataexpoet/bycollection', type: 'POST', data: { label: this.limitlist.label, selectTime: this.limitlist.selectTime, buyerclass: this.limitlist.buyerclass, buyerPhone: this.limitlist.buyerPhone, winnerPhone: this.limitlist.winnerPhone, }, success: function(res) { if(res.error_code == 0 && res.data) { location.href = '/front/wx_dataExport/submitOrder?id=' + res.data._id + '&source=d&dataspec=' } } }) } } } } var myCollection = new Vue(vNode)