123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458 |
- var winnerMatchTypeList = [
- {
- label: '项目名称/标的物',
- value: 'purchasing'
- },
- {
- label: '采购单位',
- value: 'buyer'
- },
- {
- label: '招标代理机构',
- value: 'agency'
- }
- ]
- var buyerMatchTypeList = [
- {
- label: '项目名称/标的物',
- value: 'purchasing'
- },
- {
- label: '中标企业',
- value: 'winner'
- },
- {
- label: '招标代理机构',
- value: 'agency'
- }
- ]
- var matchTypeList = []
- if (utils.getParam('header').indexOf('采购单位') > -1) {
- matchTypeList = buyerMatchTypeList
- } else {
- matchTypeList = winnerMatchTypeList
- }
- var highSet = new Vue({
- delimiters: ['${', '}'],
- el: '#high-set',
- components: {
- popupSelectComponent: popupSelectComponent,
- areaComponent: areaComponent,
- industryComponent: industryComponent,
- dateComponent: dateComponent,
- yearsComponent: yearsComponent
- },
- data () {
- return {
- conf: {
- keywords: '',
- scope: '项目名称/标的物',
- area: '全国',
- industry: '全部',
- start: new Date().getFullYear() - 2 + '年',
- end: new Date().getFullYear() + '年',
- match: 1
- },
- popInfo: {
- title: '',
- show: false,
- type: ''
- },
- entInfo: {
- eid: '',
- entName: ''
- },
- reqSign: 'bigmember',
- filterInitData: {
- areaArr: [],
- infoType: [],
- timeRange: [],
- industry: []
- },
- selectAreaList: ['全国'],
- selectIndustryList: [],
- selectScopeList: ['purchasing'],
- matchTypeList: matchTypeList,
- startRange: [],
- endRange: []
- }
- },
- computed: {
- disabledConfirm: function () {
- var key = this.conf.keywords
- var scope = this.conf.scope
- var area = this.conf.area
- var industry = this.conf.industry
- var start = this.conf.start
- var end = this.conf.end
- return !(key || scope || area || industry || start || end)
- },
- hasSpace () {
- var key = this.conf.keywords
- return key.length > 1 && key.replace(/^\s\s*/,'').indexOf(' ') > -1
- },
- filterInfoUrl: function () {
- var path = ''
- if (this.entInfo.eid) {
- path = 'winner/selects'
- } else if (this.entInfo.entName) {
- path = 'buyer/selects'
- }
- var urlMap = {
- bigmember: '/bigmember/portrait/' + path, // 大会员
- svip: '/bigmember/portrait/subVipPortrait/selects' // 超级订阅
- }
- var url = urlMap.bigmember
- if (urlMap[this.reqSign]) {
- url = urlMap[this.reqSign]
- }
- return url
- },
- },
- created () {
- var eid = utils.getParam('eid')
- var reqSign = utils.getParam('reqSign')
- var entName = decodeURIComponent(utils.getParam('entName'))
- var winnerStorage = JSON.parse(sessionStorage.getItem('winner_high_set'))
- var buyerStorage = JSON.parse(sessionStorage.getItem('buyer_high_set'))
- if (eid) {
- this.entInfo.eid = decodeURIComponent(eid)
- if (winnerStorage) {
- this.formatterStorage(winnerStorage)
- }
- }
- if (entName) {
- this.entInfo.entName = entName
- if (buyerStorage) {
- this.formatterStorage(buyerStorage)
- }
- }
- if (reqSign) {
- this.reqSign = reqSign
- }
- },
- mounted () {
- var header = decodeURIComponent(utils.getParam('header'))
- this.setHeaderTitle(header)
- this.getFilterApi()
- },
- methods: {
- // 设置title
- setHeaderTitle: function setHeaderTitle (header) {
- document.title = header || document.title
- },
- // 将缓存中的项目搜索范围英文字段转换为中文用于在输入框展示
- formatterLabel: function(data) {
- var arr = []
- var list = this.matchTypeList
- var sArr = data.split(',')
- list.forEach(function(item){
- sArr.forEach(function(v){
- if(item.value == v) {
- arr.push(item.label)
- }
- })
- })
- return arr.join(',')
- },
- // 回显缓存中的数据
- formatterStorage: function (data) {
- var timeRange = data.timeRange.split('_')
- this.conf.keywords = data.match
- this.conf.area = data.area ? data.area : '全国'
- this.conf.scope = this.formatterLabel(data.matchRange)
- this.conf.industry = data.scopeClass ? data.scopeClass : '全部'
- this.conf.start = timeRange[0]
- this.conf.end = timeRange[1]
- this.conf.match = data.exactMatch
- this.selectAreaList = data.area ? data.area.split(',') : ['全国']
- this.selectScopeList = data.matchRange.split(',')
- this.selectIndustryList = data.scopeClass.split(',')
- },
- // 取近四年的年份
- getCurFourYears: function () {
- var endYear = new Date().getFullYear()
- var startYear = endYear - 4
- var years = []
- for(var i = startYear ; i <= endYear; i ++) {
- years.push(i + '年')
- }
- return years
- },
- // 处理截止日期
- getEndRangeYears: function () {
- var endArr = []
- var years = this.getCurFourYears()
- var start = this.conf.start
- if (start) {
- endArr = years.filter(function (v) {
- return v.replace('年', '') >= start.replace('年', '')
- })
- } else {
- endArr =years
- }
- return endArr
- },
- showToast: function (message) {
- this.$toast({
- duration: 1500,
- forbidClick: true,
- message: message,
- })
- },
- showLoading: function () {
- var loading = this.$toast.loading({
- duration: 0,
- forbidClick: true,
- message: 'loading...',
- })
- return loading
- },
- // 获取筛选条件
- getFilterApi () {
- var _this = this
- var loading = this.showLoading()
- var data = this.entInfo.eid ? {
- entId: _this.entInfo.eid
- } : {
- buyer: _this.entInfo.entName
- }
- $.ajax({
- type: 'POST',
- url: this.filterInfoUrl,
- data: data,
- success: function (res) {
- if (res.error_code == 0) {
- loading.clear()
- _this.filterInitData = res.data
- // _this.initSelector(res.data)
- } else {
- _this.showToast(res.error_msg)
- }
- },
- error: function (error) {
- loading.clear()
- console.log(error)
- }
- })
- },
- // 选择器
- popClick: function (type) {
- this.popInfo.type = type
- switch (type) {
- case 'scope':
- this.popInfo.show = true
- this.initSelector()
- this.popInfo.title = '请选择项目搜索范围'
- break;
- case 'area':
- this.popInfo.show = true
- this.initSelector(this.filterInitData)
- this.popInfo.title = '请选择项目地区'
- break;
- case 'industry':
- this.popInfo.show = true
- this.initSelector(this.filterInitData)
- this.popInfo.title = '请选择行业'
- break;
- case 'start':
- this.popInfo.show = true
- this.initSelector()
- this.popInfo.title = '请选择开始年份'
- break;
- case 'end':
- this.popInfo.show = true
- this.initSelector()
- this.popInfo.title = '请选择结束年份'
- break;
- }
- },
- initSelector: function (data) {
- var _this = this
- this.$nextTick(function() {
- switch (_this.popInfo.type) {
- case 'scope':
- _this.initMatchTypeSelector()
- break;
- case 'area':
- _this.filterInitData.areaArr = data.areaArr
- _this.initProjectAreaSelector(data.areaArr)
- break;
- case 'industry':
- _this.filterInitData.industry = data.scopeArr
- _this.initProjectIndustrySelector(data.scopeArr)
- break;
- case 'start':
- _this.startRange = _this.getCurFourYears()
- break;
- case 'end':
- _this.endRange = _this.getEndRangeYears()
- break;
- }
- })
- },
- // 项目搜索范围
- initMatchTypeSelector: function () {
- this.$refs.matchTypeSelector.setState(this.selectScopeList)
- },
- // 过滤地区
- initProjectAreaSelector: function (areaArr) {
- if (!Array.isArray(areaArr)) return
- if (areaArr.indexOf('全国') === -1) {
- areaArr.unshift('全国')
- }
- var areaMap = this.$refs.projectAreaSelector.provinceListMap
- var map = {}
- for (var key in areaMap) {
- var arr = []
- areaMap[key].forEach(function (item) {
- if (areaArr.indexOf(item) !== -1) {
- arr.push(item)
- }
- })
- if (arr.length) {
- map[key] = arr
- }
- }
- this.$refs.projectAreaSelector.arrangeListMap(map)
- console.log(this.selectAreaList, '111')
- this.$refs.projectAreaSelector.setState(this.selectAreaList)
- },
- // 过滤行业数据
- initProjectIndustrySelector: function (data) {
- var arr = []
- data.forEach(function(s) {
- var key = s.substring(0, s.indexOf('_'))
- var value = s.substring(s.indexOf('_') + 1)
- arr.push({
- name: key,
- value: value
- })
- })
- var newArr = []
- arr.forEach(function(item, index) {
- let newItem = newArr.find(function(i) {
- return i.name == item.name
- })
- if (!newItem) {
- newArr.push({
- name: item.name,
- value: [item.value]
- })
- } else {
- newItem.value.push(item.value)
- }
- })
- var resArr = []
- newArr.forEach(function(s) {
- var obj = {}
- obj[s.name] = s.value
- resArr.push(obj)
- })
- console.log(resArr, '过滤好的行业数据')
- this.$refs.industryCom.formatIndustryData(resArr)
- this.$refs.industryCom.setState(this.selectIndustryList)
- },
- // 分析方式
- checkMatch: function (item) {
- this.conf.match = item
- },
- onKeywords: function (val) {
- // 过滤首个空格
- this.conf.keywords = val.replace(/^\s\s*/,'')
- },
- onCancel: function (data) {
- if (!data) {
- this.selectScopeList = ['purchasing']
- this.$refs.matchTypeSelector.setState(this.selectScopeList)
- } else if (data.name == 'areaItem') {
- this.$refs.projectAreaSelector.setState(this.selectAreaList)
- } else if (data.name == 'industryItem') {
- this.$refs.industryCom.setState(this.selectIndustryList)
- }
- },
- onConfirm: function (data) {
- console.log(data)
- if (data.name === 'areaItem') {
- if (data.data.length === 0) {
- this.conf.area = '全国'
- this.selectAreaList = ['全国']
- } else {
- this.conf.area = data.data.join(',')
- this.selectAreaList = data.data
- }
- } else if (data.name === 'scopeItem') {
- if (data.data.length === 0) {
- this.conf.scope = ''
- } else {
- this.conf.scope = data.checkedList.map(function(v) {
- return v.label
- }).join(',')
- this.selectScopeList = data.data
- }
- } else if (data.name === 'industryItem') {
- if (data.data.length === 0) {
- this.conf.industry = '全部'
- } else {
- this.conf.industry = data.data.join(',')
- this.selectIndustryList = data.data
- }
- } else if (data.name === 'yearsItem') {
- if (data.type === 'start') {
- this.conf.start = data.data
- } else if (data.type === 'end') {
- this.conf.end = data.data
- }
- } else {
- return console.log('暂无数据')
- }
- this.setToggle()
- },
- setToggle: function() {
- this.popInfo.show = false
- },
- // 开始分析
- startStatistic: function() {
- var conf = this.conf
- var list = this.matchTypeList
- var arr = []
- var sArr = conf.scope.split(',')
- list.forEach(function(item){
- sArr.forEach(function(v){
- if(item.label == v) {
- arr.push(item.value)
- }
- })
- })
- var obj = {
- match: conf.keywords,
- exactMatch: conf.match,
- matchRange: arr.join(','),
- area: conf.area.indexOf('全国') > -1 ? '' : conf.area,
- scopeClass: conf.industry.indexOf('全部') > -1 ? '' : conf.industry,
- timeRange: conf.start.replace('年', '') + '_' + conf.end.replace('年', '')
- }
- if (this.entInfo.entName) {
- window.sessionStorage.setItem('buyer_high_set', JSON.stringify(obj))
- window.sessionStorage.setItem('buyer_high_name', encodeURIComponent(this.entInfo.entName))
- } else if (this.entInfo.eid) {
- window.sessionStorage.setItem('winner_high_set', JSON.stringify(obj))
- window.sessionStorage.setItem('winner_high_eid', this.entInfo.eid)
- }
- window.history.back()
- },
- // 重置
- onReset: function () {
- this.conf.keywords = ''
- this.conf.scope = '项目名称/标的物'
- this.conf.area = '全国'
- this.conf.industry = '全部'
- this.conf.start = new Date().getFullYear() - 2 + '年'
- this.conf.end = new Date().getFullYear() + '年'
- this.conf.match = 1
- this.filterInitData.area = []
- this.selectIndustryList = []
- this.selectScopeList = ['purchasing']
- }
- }
- })
|