瀏覽代碼

提交代码

wangxiaogang 3 年之前
父節點
當前提交
a7638d282f

+ 18 - 0
src/jfw/modules/publicapply/src/userbase/commonfunctions.json

@@ -36,6 +36,24 @@
 				"img":"/commonFunctions/pc_entsearch.png"
 			}
 		},
+		{
+			"name":"采购单位搜索",
+			"charge":false,
+			"isbase":true,
+			"pc":{
+				"url":"/jylab/purSearch/index.html",
+				"img":"/commonFunctions/pc_entsearch.png"
+			}
+		},
+		{
+			"name":"业务范围设置",
+			"charge":false,
+			"isbase":true,
+			"pc":{
+				"url":"/jylab/purScopebusniess/index.html",
+				"img":"/commonFunctions/pc_entsearch.png"
+			}
+		},
 		{
 			"name":"企业情报监控",
 			"charge":false,

二進制
src/web/staticres/images/icon-company.png


二進制
src/web/staticres/images/renling.png


二進制
src/web/staticres/images/renling_active.png


+ 55 - 0
src/web/staticres/js/config.json

@@ -0,0 +1,55 @@
+{
+	"webPort": "813",
+    "userInEntLimit":9999,
+    "associationLimit":5,
+    "followProject": {
+        "normal": 10,
+        "bigVip": 500
+    },
+    "followCustomer": {
+        "customerNumb": 500
+    },
+    "claimCustomer": {
+        "customerNumb": 500
+    },
+    "customerNumb": {
+        "enterpriseNumb": 500,
+        "personalNumb": 3
+    },
+    "itemsNumber": 10000000,
+    "followPushRpc": "127.0.0.1:8759",
+    "portraitTestData":1574524800,
+    "portraitPool": 5,
+    "portraitCacheDay": 1,
+    "oneAreaTimesBuyer": 20,
+    "recommendThreshold": 0.5,
+    "customers":[
+    	{
+			"name":"赵秀臻",
+			"wxer":"/big-member/image/customer/customer-wx-new.png"
+		}
+    ],
+    "entcustomer": [
+    "吉林省农村信用社联合社",
+    "包头职业技术学院",
+    "中国民生银行股份有限公司",
+    "广东烟草梅州市有限公司",
+    "宁波市自然资源和规划局",
+    "正数网络技术有限公司",
+    "浙江创联信息技术股份有限公司",
+    "甘肃省农村信用社联合社",
+    "广西壮族自治区自然资源厅",
+    "华数传媒网络有限公司",
+    "无锡地铁集团有限公司",
+    "天津银行股份有限公司",
+    "广州信息投资有限公司",
+    "国联证券股份有限公司",
+    "北京航空航天大学宁波创新研究院",
+    "湖北省卫生健康委员会",
+    "上海浦东发展银行股份有限公司信用卡中心",
+    "上海市房屋管理局",
+    "长三角金融科技有限公司",
+    "华能信息技术有限公司",
+    "浙江华数广电网络股份有限公司"
+  ]
+}

+ 29 - 0
src/web/staticres/js/ent-search-index-pc.js

@@ -213,6 +213,7 @@ var vm = new Vue({
             endDate:'',
             thisStartTime:'',
             thisEndTime:'',
+            industryShow: false
         }
     },
     watch: {
@@ -223,6 +224,12 @@ var vm = new Vue({
                 } else {
                     location.href = '/jylab/supsearch/index.html'
                 }
+            } else if (newVal === 'cgdw') {
+                if (this.searchContent) {
+                    location.href = '/jylab/purSearch/index.html?keywords=' + this.searchContent
+                } else {
+                    location.href = '/jylab/purSearch/index.html'
+                }
             }
         }
     },
@@ -263,6 +270,7 @@ var vm = new Vue({
         },
     },
     created: function () {
+        this.industryTab()
         this.getPower()
         this.initPageData()
         this.initProvinceMapList()
@@ -275,6 +283,20 @@ var vm = new Vue({
         // this.searchTypeChange([], true)
     },
     methods: {
+        industryTab() {
+            const _this = this
+            $.ajax({
+                type:'POST',
+                url:'/entnichenew/buy/whetherbuy',
+                success:function (res) {
+                  if (res.isNew) {
+                    _this.industryShow = true
+                  } else {
+                    _this.industryShow = false
+                  }
+                }
+            })
+        },
         getSearchForValues: function () {
             return this.searchTypeList.map(function (v) {
                 return v.value
@@ -867,6 +889,13 @@ function tabHover () {
     }).on('mouseout', function () {
         $(this).siblings('.el-tabs__active-bar').css({transform: 'translateX(96px)'})
     })
+    $('#tab-cgdw').on('mouseover', function () {
+        $(this).siblings('.el-tabs__active-bar').css({transform: 'translateX(192px)'})
+        $(this).siblings('.el-tabs__active-bar').css({width: '84px'})
+    }).on('mouseout', function () {
+        $(this).siblings('.el-tabs__active-bar').css({transform: 'translateX(96px)'})
+        $(this).siblings('.el-tabs__active-bar').css({width: '56px'})
+    })
 }
 function refreshEwmText (text) {
     if (text && text.trim().length > 0) {

+ 11 - 5
src/web/staticres/js/login.js

@@ -327,13 +327,19 @@ function checkMenuForEnt () {
                     var tempHtml = ''
                     if(r.myEntMenu){
                         tempHtml += "<div class=\"myorderDiv\" onclick=\"window.location.href='/entpc/myent'\">"
-                            +"<span>我的企业</span>"
-                            +"</div>"
+                        +"<span>我的企业</span>"
+                        +"</div>" 
                     }
                     if(r.entnicheMenu){
-                        tempHtml+= "<div class=\"myorderDiv\" onclick=\"window.location.href='/entpc/bus'\">"
-                            +"<span>商机管理</span>"
-                            +"</div>"
+                        if (r.isNew) {
+                            tempHtml+= "<div class=\"myorderDiv\" onclick=\"window.location.href='/entpc/newBus'\">"
+                                +"<span>商机管理</span>"
+                                +"</div>"
+                        } else {
+                            tempHtml+= "<div class=\"myorderDiv\" onclick=\"window.location.href='/entpc/bus'\">"
+                                +"<span>商机管理</span>"
+                                +"</div>"
+                        }
                     }
                     $(".infoList .lastBox").before(tempHtml)
                 }

+ 613 - 0
src/web/staticres/js/pur-search-index-pc.js

@@ -0,0 +1,613 @@
+function getRandomString (len) {
+    let randomString = ''
+    if (len) {
+      const $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
+      const maxPos = $chars.length
+      for (let i = 0; i < len; i++) {
+        randomString += $chars.charAt(Math.floor(Math.random() * maxPos))
+      }
+    } else {
+      randomString = Math.random().toString(36).substring(2)
+    }
+    return randomString
+}
+var vm = new Vue({
+    el: '#pur-search-container',
+    delimiters: ['${', '}'],
+    components: {
+        areaCityComponent: areaCityComponent,
+        selectListComponent: selectListComponent,
+        priceComponent: priceComponent,
+        noData: noDataComponent
+    },
+    data: function () {
+        return {
+            searchContent: '',
+            tabActive: 'cgdw',
+            filterShow: true,
+            indusData: ['财政', '传媒', '城管', '采矿业', '出版广电', '档案', '党委办', '电信行业', '法院',
+                '发改', '工信', '公安', '国资委', '公共资源交易',
+                '海关', '教育', '军队', '交通', '纪委', '金融业', '建筑业', '检察院', '机关事务',
+                '科技', '民政', '民宗', '农业', '能源化工', '农林牧渔', '批发零售', '气象', '人行', '人社', '人大',
+                '税务', '水利', '市政', '审计', '商务', '司法', '社会团体', '市场监管', '生态环境',
+                '统计', '统战', '体育', '文旅', '卫健委', '学校', '宣传', '信息技术',
+                '医疗', '银保监', '运输物流', '应急管理',
+                '组织', '政协', '住建', '证监', '政府办', '制造业', '政务中心', '住宿餐饮', '自然资源'
+            ],
+            indusList:[],
+            caiIndex: [],
+            qutive: true,
+            indusList1:[],
+            caiIndex1: [],
+            qutive1: true,
+            qyCheck: [],
+            qyData: [],
+            allChecked: false,
+            singleChecked: false,
+            follow: false,
+            claim: false,
+            jobData: [],
+            entArea: {},
+            arrs6: [],
+            listState: {
+                loaded: false, // 是否已经搜索过
+                loading: false,
+                pageNum: 1, // 当前页, 从0开始
+                pageSize: 50, // 每页多少条数据
+                total: 0, // 一共多少条数据
+                list: [] // 查询请求返回的数据
+            },
+            preSearch: {
+                hover: false,
+                focus: false,
+                list: []
+            },
+            showMore: true,
+            industryExp: {
+                name: '全部行业',
+                selected: false,
+                level: 0,
+                children: [],
+                id: ''
+            },
+            showmoreBtn: true,
+            industryListMap: [],
+            getIndustryListMap: [],
+            industryListMapExp: {
+                '建筑工程': ['勘察设计', '工程施工', '监理咨询', '材料设备', '机电安装'],
+                '水利水电': ['水利工程', '发电工程', '航运工程', '其他工程'],
+                '能源化工': ['原材料', '仪器仪表', '新能源', '设备物资', '化工产品', '设备'],
+                '弱电安防': ['综合布线', '智能系统', '智能家居'],
+                '信息技术': ['系统集成及安全', '软件开发', '运维服务', '其他'],
+                '行政办公': ['办公家具', '通用办公设备', '专业设备', '办公用品', '生活用品'],
+                '机械设备': ['矿山机械', '工程机械', '机械零部件', '机床相关', '车辆', '其他机械设备'],
+                '交通工程': ['道路','轨道','桥梁','隧道','其他'],
+                '医疗卫生': ['设备','耗材','药品'],
+                '市政设施': ['道路','绿化','线路管网','综合项目'],
+                '服务采购': ['法律咨询','会计','物业','审计','安保','仓储物流','广告宣传印刷','其他'],
+                '农林牧渔': ['生产物资','生产设备','相关服务']
+            },
+            getInfoTypeList: []
+        }
+    },
+    watch: {
+        tabActive: function (newVal, oldVal) {
+            if (newVal === 'zb') {
+                if (this.searchContent) {
+                    location.href = '/jylab/supsearch/index.html?keywords=' + this.searchContent + '&publishtime=thisyear'
+                } else {
+                    location.href = '/jylab/supsearch/index.html'
+                }
+            } else if (newVal === 'qy') {
+                if (this.searchContent) {
+                    location.href = '/jylab/entSearch/index.html?keywords=' + this.searchContent
+                } else {
+                    location.href = '/jylab/entSearch/index.html'
+                }
+            }
+        }
+    },
+    created: function () {
+        this.initIndustryMap()
+        this.qyCustmer()
+        this.jobRange()
+        this.getList(1)
+    },
+    mounted: function () {
+        this.initDOMEvents()
+    },
+    methods: {
+        // 整理数据列表
+        initIndustryMap () {
+            const industryListMap = []
+            // 全部
+            const all = JSON.parse(JSON.stringify(this.industryExp))
+            all.selected = true
+            all.id = `lv0-${getRandomString(8).toLowerCase()}`
+            industryListMap.push(all)
+            for (const key in this.industryListMapExp) {
+                const level1 = JSON.parse(JSON.stringify(this.industryExp))
+                level1.name = key
+                level1.level = 1
+                level1.id = `lv1-${getRandomString(8).toLowerCase()}`
+        
+                const level2Arr = []
+                this.industryListMapExp[key].forEach(item => {
+                    const level2 = JSON.parse(JSON.stringify(this.industryExp))
+                    level2.name = item
+                    level2.level = 2
+                    level2.id = `lv2-${getRandomString(8).toLowerCase()}`
+                    level2Arr.push(level2)
+                })
+        
+                level1.children = level2Arr
+                industryListMap.push(level1)
+            }
+    
+            this.industryListMap = industryListMap
+            const tempArr = []
+            this.industryListMap.forEach(v => {
+                const tempNode = v
+                tempNode.zindex = 1
+                tempArr.push(tempNode)
+                tempNode?.children.forEach(s => {
+                    const tempS = s
+                    tempS.zindex = 2
+                    tempArr.push(tempS)
+                })
+            })
+            this.getIndustryListMap = tempArr
+        },
+        // 按钮点击事件
+        changeIndustryState (item) {
+          // 循环所有数据,判断并改变状态
+          switch (item.level) {
+            case 0: {
+              this.setIndustryState()
+              break
+            }
+            case 1: {
+              item.selected = !item.selected
+    
+              this.industryListMap[0].selected = false
+              // 二级子按钮状态跟随一级按钮
+              item.children.forEach(level2 => {
+                level2.selected = item.selected
+              })
+              break
+            }
+            case 2: {
+              item.selected = !item.selected
+    
+              // 找到当前点击的父级元素
+              this.industryListMap.forEach(level1 => {
+                const selectedStateArr = []
+                if (item.level !== 0) {
+                  level1.children.forEach(level2 => {
+                    selectedStateArr.push(level2.selected)
+                  })
+                  if (selectedStateArr.indexOf(false) === -1) {
+                    level1.selected = true
+                  } else {
+                    level1.selected = false
+                  }
+                }
+              })
+    
+              this.industryListMap[0].selected = false
+              break
+            }
+            default: {
+              console.log('未知level')
+            }
+          }
+    
+          if (item.level !== 0) {
+            const allSelected = this.checkAllSelectedState()
+            if (allSelected.allSelected || allSelected.allNotSelected) {
+              this.setIndustryState()
+            }
+          }
+    
+          if (this.selectorType === 'line') {
+            this.onChange()
+          }
+          this.doSearch()
+        },
+        // 检查是否全部选中了/全部不选中
+        checkAllSelectedState () {
+          // 一级标签选中状态(如果一级标签全部被选中,则说明,全部按钮被选中)
+          const level1StateArr = []
+          // 所有标签选中状态
+          const allSelectedArr = []
+    
+          this.industryListMap.forEach(level1 => {
+            if (level1.level !== 0) {
+              level1StateArr.push(level1.selected)
+              allSelectedArr.push(level1.selected)
+              level1.children.forEach(level2 => {
+                allSelectedArr.push(level2.selected)
+              })
+            }
+          })
+    
+          return {
+            // 找不到false,就说明全部被选中
+            allSelected: level1StateArr.indexOf(false) === -1,
+            // 找不到true,就说明没有一个被选中
+            allNotSelected: allSelectedArr.indexOf(true) === -1
+          }
+        },
+        /**
+         * 初始化页面选中状态
+         * @param { Array | undefined } data 要恢复的数据
+         */
+        setIndustryState (data) {
+            // 设置全部按钮
+            if (!data || Object.keys(data).length === 0) {
+            // 其他全部设置不选中,全部按钮设置选中
+            this.industryListMap.forEach(item => {
+                item.selected = false
+                item.children.forEach(iitem => {
+                iitem.selected = false
+                })
+            })
+    
+            this.industryListMap[0].selected = true
+            } else {
+            this.setIndustryState()
+            this.industryListMap[0].selected = false
+    
+            this.industryListMap.forEach(item => {
+                if (data[item.name]) {
+                // 如果恢复数组长度等于页面二级标签长度,则一级标签点亮
+                if (data[item.name].length === item.children.length) {
+                    item.selected = true
+                }
+                item.children.forEach(function (iitem) {
+                    if (data[item.name].indexOf(iitem.name) !== -1) {
+                    iitem.selected = true
+                    }
+                })
+                }
+            })
+            }
+        },
+        // 获取选中的数据
+        getSelected () {
+            const map = {}
+            this.industryListMap.forEach(item => {
+                const mapArr = []
+                if (item.level !== 0) {
+                    item.children.forEach(iitem => {
+                    if (iitem.selected) {
+                        mapArr.push(iitem.name)
+                    }
+                    })
+                }
+                if (mapArr.length !== 0) {
+                    map[item.name] = mapArr
+                }
+            })
+            const tempArr = []
+            Object.keys(map).forEach(v => {
+                const tempItem = map[v]
+                if (Array.isArray(tempItem)) {
+                tempItem.forEach(vv => {
+                    tempArr.push(`${v}_${vv}`)
+                })
+                }
+            })
+            return tempArr
+        },
+        doSearch: function () {
+            this.listState.pageNum = 1
+            this.getList(1, 'search')
+        },
+        getPreSearchList: utils.debounce(function () {
+            var name = this.searchContent.trim()
+            if (name.length < 2) return
+            // this.getList(1, 'search')
+        }, 200),
+        getList: function (p, str) {
+            let obj = {
+                entName: this.searchContent.trim(),
+                area: this.entArea,
+                buyerclass: this.indusList,
+                business_scope: this.indusList1,
+                industry: this.getSelected(),
+                entcustomer: this.qyCheck,
+                pageSize: this.listState.pageSize,
+                pageNum: this.listState.pageNum - 1,
+            }
+            console.info(obj)
+            this.listState.loading = true
+            this.listState.loaded = false
+            const _this = this
+            let arrs = [], arr1 = []
+            $.ajax({
+                url: '/entnichenew/customer/corList',
+                method: 'POST',
+                data: JSON.stringify(obj),
+                contentType:'application/json;charset=utf-8',
+                success: function (res) {
+                    if (res.error_code === 0) {
+                        if (res.data.list.length > this.listState.pageSize) {
+                            arrs = res.data.list.slice((p - 1) * this.listState.pageSize, (p - 1) * this.listState.pageSize + this.listState.pageSize) || []
+                        } else {
+                            arrs = res.data.list
+                        }
+                        arrs.forEach(v => {
+                            arr1.push(v.Buyer)
+                        })
+                        _this.attentionCheck(arrs, String(arr1))
+                        this.listState.total = res.data.list.length
+                        this.listState.loading = false
+                    }
+                }.bind(this),
+                complete: function () {
+                    this.listState.loading = false
+                    this.listState.loaded = true
+                }.bind(this)
+            })
+        },
+        onPageChange: function (p) {
+            this.listState.pageNum = p
+            this.getList(p)
+        },
+        allChange() {
+
+        },
+        singleChange () {
+            var len = $('.custom-checkbox:not(".check-all"):checked')
+            console.info(len)
+        },
+        // 是否关注企业
+        attentionCheck(arrs, item) {
+            const _this = this
+            $.ajax({
+                url: '/entnichenew/customer/check',
+                method: 'POST',
+                data: JSON.stringify({names: item}),
+                contentType:'application/json;charset=utf-8',
+                success: function (res) {
+                    arrs.forEach(v => {
+                        if (res.data.names.indexOf(v.Buyer) > -1) {
+                            v.follow1 = true
+                        } else {
+                            v.follow1 = false
+                        }
+                    })
+                    _this.claimcheck(arrs, item)
+                }.bind(this)
+            })
+        },
+        // 是否认领企业
+        claimcheck(arrs, item) {
+            $.ajax({
+                url: '/entnichenew/customer/claimcheck',
+                method: 'POST',
+                data: JSON.stringify({names: item}),
+                contentType:'application/json;charset=utf-8',
+                success: function (res) {
+                    arrs.forEach(v => {
+                        if (res.data.names.indexOf(v.Buyer) > -1) {
+                            v.claim1 = true
+                        } else {
+                            v.claim1 = false
+                        }
+                    })
+                    this.listState.list = arrs
+                }.bind(this)
+            })
+        },
+        // 关注、认领接口
+        attention(item, type, str) {
+            let obj = {}, _this = this
+            if (type == 0) {
+                obj = {
+                    name: str ? item : item.Buyer,
+                    province: str ? '' : item.WProvince,
+                    city: str ? '' : item.WCity,
+                    mold: type,
+                    B: str ? !this.follow : item.follow1,
+                }
+            } else {
+                obj = {
+                    name: str ? item : item.Buyer,
+                    province: str ? '' : item.WProvince,
+                    city: str ? '' : item.WCity,
+                    mold: type,
+                    D: str ? !this.claim : item.claim1
+                }
+            }
+            console.info(obj)
+            // $.ajax({
+            //     url: '/entnichenew/customer/attention',
+            //     method: 'POST',
+            //     data: JSON.stringify(obj),
+            //     contentType:'application/json;charset=utf-8',
+            //     success: function (res) {
+            //         if (res.data == false) {
+            //             _this.$message({
+            //                 message: res.error_msg,
+            //                 type: 'warning'
+            //             })
+            //         } else {
+            //             _this.getList(_this.listState.pageNum)
+            //         }
+            //     }.bind(this)
+            // })
+        },
+        allGuanren (type) {
+            if (type == 0) {
+                this.follow = !this.follow
+            } else {
+                this.claim = !this.claim
+            }
+            const arr1 = []
+            console.info(this.listState.list)
+            this.listState.list.forEach(v => {
+                if (v.follow1 == false) {
+                    arr1.push(v.Buyer)
+                }
+            })
+            this.attention(String(arr1), type, 'all')
+        },
+        guanAndren(item, type) {
+            this.attention(item, type)
+        },
+        caiIndus(val, index) {
+            let arrIndex = this.caiIndex.indexOf(index);
+            if(arrIndex>-1){
+                this.caiIndex.splice(arrIndex,1);
+                this.indusList.splice(arrIndex,1);
+            }else{
+                this.caiIndex.push(index);
+                this.indusList.push(val);
+            }
+            if (this.caiIndex.length < this.indusData.length) {
+                this.qutive = false;
+            }
+            if (this.indusList.length == 0) {
+                this.qutive = true;
+            }
+            if (this.caiIndex.length == this.indusData.length) {
+                this.qutive = true;
+                this.caiIndex = ["-2"];
+            }
+            this.doSearch()
+        },
+        quanBu() {
+            this.caiIndex = [];
+            this.qutive = true;
+            this.indusList = [""];
+            this.doSearch()
+        },
+        caiIndus1(val, index) {
+            let arrIndex = this.caiIndex1.indexOf(index);
+            if(arrIndex>-1){
+                this.caiIndex1.splice(arrIndex,1);
+                this.indusList1.splice(arrIndex,1);
+            }else{
+                this.caiIndex1.push(index);
+                this.indusList1 = this.indusList1.concat(val);
+            }
+            if (this.caiIndex1.length < this.jobData.length) {
+                this.qutive1 = false;
+            }
+            if (this.indusList1.length == 0) {
+                this.qutive1 = true;
+            }
+            if (this.caiIndex1.length == this.jobData.length) {
+                this.qutive1 = true;
+                this.caiIndex1 = ["-2"];
+            }
+            this.doSearch()
+        },
+        quanBu1() {
+            this.caiIndex1 = [];
+            this.qutive1 = true;
+            this.indusList1 = [""];
+            this.doSearch()
+        },
+        cusMore() {
+            console.log('1212')
+        },
+        qyCustmer() {
+            $.ajax({
+                url: '/entnichenew/customer/history',
+                method: 'GET',
+                success: function (res) {
+                    if (res.error_code == 0) {
+                        this.qyData = res.data.list
+                    }
+                }.bind(this)
+            })  
+        },
+        qyChange() {
+            this.doSearch()
+        },
+        jobRange() {
+            $.ajax({
+                url: '/entnichenew/subscribe/key/get',
+                method: 'POST',
+                success: function (res) {
+                    if (res.error_code == 0) {
+                        this.jobData = res.data.data
+                    }
+                }.bind(this)
+            })  
+        },
+        keyChange(appendkey, key, notkey) {
+            let str = String(appendkey.concat(key).concat(notkey)).replace(/,/g, ' ')
+            return str
+        },
+        initDOMEvents: function () {
+            setTimeout(function () {
+                // tabHover()
+            }, 300)
+        },
+        areaCityChange: function (area) {
+            var city = []
+            for (var key in area) {
+                city = city.concat(area[key])
+            }
+            this.entArea = area
+            this.doSearch()
+        },
+        isFilterShow: function () {
+            if (this.filterShow) {
+                $('.search-filters').slideUp()
+            } else {
+                $('.search-filters').slideDown()
+            }
+            this.filterShow = !this.filterShow
+        },
+        moneyUnit (m, type = 'string', lv = 0) {
+            const mUnit = {
+              levelArr: ['元', '万元', '亿元', '万亿元'],
+              test (num, type, lv) {
+                if (num === 0) {
+                  if (type === 'string') {
+                    return '0元'
+                  }
+                  if (type === 'lv') {
+                    return this.levelArr[lv]
+                  }
+                  if (type === 'number') {
+                    return 0
+                  }
+                  if (type === 'index') {
+                    return lv
+                  }
+                }
+          
+                var result = num / Math.pow(10000, lv)
+          
+                if (result > 10000 && lv < 2) {
+                  return this.test(num, type, lv + 1)
+                } else {
+                  if (type === 'string') {
+                    return String(Math.floor(result * 100) / 100).replace('.00', '') + this.levelArr[lv]
+                  }
+                  if (type === 'lv') {
+                    return this.levelArr[lv]
+                  }
+                  if (type === 'number') {
+                    return String(Math.floor(result * 100) / 100).replace('.00', '')
+                  }
+                  if (type === 'index') {
+                    return lv
+                  }
+                }
+              }
+            }
+            if (m === undefined || m === null) {
+              return ''
+            } else {
+              return mUnit.test(m, type, lv)
+            }
+        }
+    }
+})

+ 94 - 0
src/web/staticres/js/purSearch.js

@@ -0,0 +1,94 @@
+// $(function() {
+//   //行业
+//   function doIndustry() {
+//     var selectIndustrys = "";
+//     var thisText = "";
+//     $(".industry-content .active").each(function(){
+//       if($(this).attr("id") == "purAll"){
+//           return true;
+//       }else if($(this).hasClass("active")&&$(this).hasClass("parent-node")){
+//           $(this).nextUntil(".diver").each(function(){
+//             thisText = $(this).attr("data-value");
+//             if(selectIndustrys != ""){
+//                 selectIndustrys += ",";
+//             }
+//             selectIndustrys += thisText;
+//           });
+//       }else{
+//           thisText = $(this).attr("data-value");
+//           if(selectIndustrys != ""){
+//               selectIndustrys += ",";
+//           }
+//           selectIndustrys += thisText;
+//       }
+//       console.info(selectIndustrys)
+//     });
+//   }
+//   	/*行业筛选*/
+// 	industryScreen($(".industry  .industry-content"), $(".industry-content .parent-node"), $("#purAll"), $(".industry .stop"))
+	
+// 	function industryScreen(warpContent, parentNode, allBtn, moreBtn) {
+// 		var $content = warpContent,
+// 			$moreBtn = moreBtn || "",
+// 			$parentNode = parentNode,
+// 			$purAll = allBtn;
+// 		/*更多显示 隐藏*/
+// 		if($moreBtn !== "") {
+// 			$content.children().not(".parent-node").not("#purAll").show();
+//       $($moreBtn).addClass("up")
+// 			$moreBtn.on('click', function() {
+// 				$(this).toggleClass("up");
+// 				if($(this).hasClass("up")) {
+// 					$(this).text("收起");
+// 					$content.children().show();
+// 				} else {
+// 					$(this).text("更多");
+// 					$content.children().not(".parent-node").not("#purAll").hide();
+// 				}
+// 			});
+// 		}
+// 		/*行业二级分类点击事件*/
+// 		$content.on('click', 'font:not(".parent-node")' ,function() {
+//       var $prevNode = $(this).prevAll(".parent-node:eq(0)");
+//       $(this).toggleClass("active");
+//       var curActiveLen = $prevNode.nextUntil(".diver").filter(".active").length; // 当前一级分类下二级分类选中的个数
+//       var curTotalLen = $prevNode.nextUntil(".diver").filter('font').length; // 当前一级分类下二级分类的总个数
+//       console.log(curActiveLen,curTotalLen)
+// 			if(curActiveLen === 0) {
+// 				$prevNode.removeClass("active").removeClass("secondActice");
+// 			} else {
+//         if (curActiveLen == curTotalLen) {
+//           $prevNode.addClass("active").removeClass("secondActice")
+//           var $prevDriver = $(this).prev($('.driver'))
+//           var $nextDriver = $(this).next($('.driver'))
+//           $prevNode.nextUntil($prevNode, $nextDriver).not('.parent-node').removeClass('active')
+//         } else {
+//           $prevNode.removeClass("active").addClass("secondActice");
+//         }
+// 			}
+// 			doIndustry()		
+//     });
+//     // 行业一级分类点击事件
+// 		$parentNode.on('click', function() {
+//       $(this).toggleClass("active")
+//       if ($(this).hasClass('active')) {
+//         $(this).removeClass('secondActice').nextUntil(".diver").filter('font').removeClass('active');
+//       }
+//       doIndustry()
+// 		});
+// 		/*如果点击没有内容给全部添加类名*/
+// 		$content.on("click", "font", function() {
+// 			if($content.children().hasClass("active")) {
+// 				$purAll.removeClass("active");
+// 			} else {
+// 				$purAll.addClass("active");
+// 			}	
+// 		})
+// 		/*全部点击*/
+// 		$purAll.on("click", function() {
+// 			$(this).addClass("active");
+// 			$content.children().not($(this)).removeClass("active secondActice");
+// 			doIndustry()
+// 		})
+// 	};
+// })

文件差異過大導致無法顯示
+ 4 - 0
src/web/staticres/pccss/pur-search-index-pc.css


+ 1 - 1
src/web/templates/frontRouter/pc/page_big_pc/sess/index.html

@@ -36,7 +36,7 @@
     <script type="systemjs-importmap" crossorigin="anonymous">
       {
         "imports": {
-          "app": "/page_big_pc/js/app.js?v={{Msg "seo" "big_pc_v"}}",
+          "app": "http://127.0.0.1:8080/js/app.js?v={{Msg "seo" "big_pc_v"}}",
           "single-spa": "https://cdn-common.jianyu360.com/cdn/lib/single-spa/4.3.7/lib/system/single-spa.min.js",
           "vue": "https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js",
           "vue-router": "https://cdn-common.jianyu360.com/cdn/lib/vue-router/3.1.5/vue-router.min.js",

+ 1 - 1
src/web/templates/pc/entsearchindex.html

@@ -181,7 +181,7 @@
                         <el-tabs v-model="tabActive">
                             <el-tab-pane label="招标搜索" name="zb"></el-tab-pane>
                             <el-tab-pane label="企业搜索" name="qy"></el-tab-pane>
-                            <el-tab-pane label="采购单位搜索" name="cgdw"></el-tab-pane>
+                            <el-tab-pane label="采购单位搜索" name="cgdw" v-if="industryShow"></el-tab-pane>
                         </el-tabs>
                     </div>
                 </div>

+ 604 - 0
src/web/templates/pc/purScopebusniess.html

@@ -0,0 +1,604 @@
+
+<html lang="zh-cn">
+	<head>
+		<title>采购单位搜索结果_{{Msg "seo" "qfw.swordfishsl.title"}}</title>
+		<meta name="Keywords" content="{{Msg "seo" "qfw.swordfishsl.key"}}"/>
+		<meta name="Description" content="{{Msg "seo" "qfw.swordfishsl.description"}}"/>
+		<meta name="renderer" content="webkit">
+		<meta content="telephone=no" name="format-detection"/>
+        <meta content="采购单位搜索" theme="light" name="enable-header"/>
+		{{include "/common/pnc.html"}}
+		<link href="{{Msg "seo" "cdn"}}/css/pc.css?v={{Msg "seo" "version"}}" rel="stylesheet" />
+		<link href="{{Msg "seo" "cdn"}}/css/dev2/reset_pc.css?v={{Msg "seo" "version"}}" rel="stylesheet" />
+		<link href="{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}" rel="stylesheet" />
+
+        <script src="{{Msg "seo" "cdn"}}/js/jquery.cookie.js"></script>
+		<script src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}"></script>
+
+        <link href="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/theme-chalk/index.css" rel="stylesheet" />
+        <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/css/ele-reset.css?v={{Msg "seo" "version"}}'>
+        <!-- <link href='{{Msg "seo" "cdn"}}/css/dev2/newBidSearch.css?v={{Msg "seo" "version"}}' rel="stylesheet"> -->
+        <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/css/selector/selector.css?v={{Msg "seo" "version"}}'>
+        <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/pccss/pur-search-index-pc.css?v={{Msg "seo" "version"}}'>
+        <style>
+            .search-container {
+                line-height: 1;
+                padding-top: 64px;
+                min-height: calc(100vh - 364px);
+            }
+        </style>
+	</head>
+
+	<body>
+	{{include "/common/pchead.html"}}
+	<section class="search-container">
+        <div class="vue-search-container" id="pur-search-container" v-cloak>
+            <div class="search-header">
+                <div class="search-header-content w">
+                    <div class="search-header-top">
+                        <div class="input-container flex">
+                            <el-input
+                                placeholder="输入采购单位名称"
+                                v-model.trim="searchContent"
+                                clearable
+                                @focus="preSearch.focus=true"
+                                @blur="preSearch.focus=false"
+                                @input="getPreSearchList"
+                                @keyup.enter.native="doSearch">
+                                <template slot="prefix">
+                                    <div class="input-prefix-icon">
+                                        <img src="/images/biddingSearch/search-icon1.png">
+                                    </div>
+                                </template>
+                                <template slot="append">
+                                    <div class="search-button no-select" @click="doSearch">搜 索</div>
+                                </template>
+                            </el-input>
+                            <div class="filter-button no-select" @click="isFilterShow">
+                                <span>筛选</span>
+                                <span class="el-icon-arrow-up" :class="filterShow ? '' : 'rotate180'"></span>
+                            </div>
+                        </div>
+                        <div class="search-right-wx">
+                            <img src="{{Msg "seo" "cdn"}}/images/biddingSearch/sea-right-wx.png" />
+                            <div class="search-right-wx-inner">
+                                <div class="wx-inner-title">扫码关注剑鱼标讯</div>
+                                <div class="wx-inner-ewm">
+                                    <img id="keyImg" src="/front/share/{{.T.shareid}}"/>
+                                </div>
+                                <div class="wx-inner-bottom">微信扫一扫<br>随时随地掌握招标信息</div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="search-header-bottom">
+                        <el-tabs v-model="tabActive">
+                            <el-tab-pane label="招标搜索" name="zb"></el-tab-pane>
+                            <el-tab-pane label="企业搜索" name="qy"></el-tab-pane>
+                            <el-tab-pane label="采购单位搜索" name="cgdw"></el-tab-pane>
+                        </el-tabs>
+                    </div>
+                </div>
+            </div>
+            <div class="search-content w">
+                <div class="tit-r">
+                    <div class="mesg-box">
+                        <i class="el-icon-jy-top-mesg"></i>
+                        <span>业务范围设置</span>
+                    </div>
+                </div>
+                <div class="selector-card-container search-filters">
+                    <div class="selector-card">
+                        <div class="selector-card-header">选择区域:</div>
+                        <div class="selector-card-content">
+                            <area-city-component @change="areaCityChange"></area-city-component>
+                        </div>
+                    </div>
+                    <!--行业分类-->
+                    <div class="industry-lis-t">
+                        <div class="indus-tit">行业分类:</div>
+                        <div class="selector-content" :class="{ 'no-more': !showMore }">
+                            <div class="select-group-container" >
+                            <div class="select-group-header"
+                                v-show="!showMore"
+                                v-for="(item, index) in industryListMap"
+                                :key="index+'A'"
+                                :class="{
+                                    'right-line': showMore
+                                }">
+                                <button
+                                class="j-button-item"
+                                :class="{
+                                    active: item.selected,
+                                    [item.id]: true,
+                                    'button-level-0': item.level === 0,
+                                    'button-level-1': item.level === 1,
+                                    'all': item.level === 0,
+                                    'bgc': item.level === 1
+                                }"
+                                @click="changeIndustryState(item)"
+                                >${ item.name }</button>
+                            </div>
+                            <div class="select-group-header"
+                                v-show="showMore"
+                                v-for="(item, index) in getIndustryListMap"
+                                :key="index+'B'"
+                                :class="{
+                                    'right-line': showMore
+                                }">
+                                <button
+                                class="j-button-item"
+                                :class="{
+                                    active: item.selected,
+                                    [item.id]: true,
+                                    'button-level-0': item.level === 0,
+                                    'button-level-1': item.level === 1,
+                                    'all': item.level === 0,
+                                    'bgc': item.level === 1
+                                }"
+                                @click="changeIndustryState(item)"
+                                >${ item.name }</button>
+                            </div>
+                            </div>
+                        </div>
+                        <span class="action-button show-more" v-if="showmoreBtn" @click="showMore = !showMore">
+                            <span class="action-text">${ showMore ? '收起' : '更多' }</span>
+                            <span class="el-icon-arrow-down" :class="showMore ? 'rotate180' : ''"></span>
+                        </span>
+                    </div>
+                    <!-- 客户分类 -->
+                    <div class="customer-card industry bus-card">
+                        <div class="leftTitle r-industry">客户分类:</div>
+                        <div class="right_msg">
+                            <span class="spa" :class="{g_active:qutive}" @click="quanBu('全部')">全部</span>
+                            <span 
+                                v-for="(item,index) in indusData" 
+                                :key="item" 
+                                class="spa" 
+                                :class="{'g_active':caiIndex.indexOf(index)>-1}"
+                                @click="caiIndus(item,index)"
+                            >${item}</span>
+                        </div>
+                        <div class="stops cus-more">更多</div>
+                    </div>
+                    <!-- 业务范围 -->
+                    <div class="customer-card industry job-card">
+                        <div class="leftTitle r-industry">业务范围:</div>
+                        <div class="right_msg">
+                            <span class="spa" :class="{g_active:qutive1}" @click="quanBu1('全部')">全部</span>
+                            <span 
+                                v-for="(item,index) in jobData" 
+                                :key="index" 
+                                class="spa" 
+                                :class="{'g_active':caiIndex1.indexOf(index)>-1}"
+                                @click="caiIndus1(item.a_key,index)"
+                            >
+                                <i v-for="(ite,indx) in item.a_key" :key="indx">${keyChange(ite.appendkey,ite.key,ite.notkey)}</i>
+                            </span>
+                        </div>
+                        <!-- <div class="stops job-more">更多</div> -->
+                    </div>
+                    <!-- 企业历史客户 -->
+                    <div class="qy-card">
+                        <div class="leftTitle r-industry">企业历史客户:</div>
+                        <el-checkbox-group v-model="qyCheck" @change="qyChange">
+                            <el-checkbox v-for="(item, index) in qyData" :label="item">${item}</el-checkbox>
+                        </el-checkbox-group>
+                        <!-- <div class="stops qy-more">更多</div> -->
+                    </div>
+                </div>
+                <div class="search-pur-container">
+                    <div class="list-header">
+                        <el-checkbox v-model="allChecked" @change="allChange">客户列表</el-checkbox>
+                        <div class="r-cont">
+                            <div class="img-c" @click="allGuanren(0)">
+                                <img src='{{Msg "seo" "cdn"}}/images/focused.png' v-if="follow">
+                                <img src='{{Msg "seo" "cdn"}}/images/focus.png' v-else>
+                                <i v-if="follow">已关注</i>
+                                <i v-else>关注</i>
+                            </div>
+                            <div class="img-c" @click="allGuanren(1)">
+                                <img src='{{Msg "seo" "cdn"}}/images/renling_active.png' v-if="claim" style="margin-left: 16px;">
+                                <img src='{{Msg "seo" "cdn"}}/images/renling.png' v-else style="margin-left: 16px;">
+                                <i v-if="claim">已认领</i>
+                                <i v-else>认领</i>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="pur-info-list" v-loading="listState.loading">
+                        <div class="list-item" v-for="(item, index) in listState.list" :key="index">
+                            <div class="list-header pur-top">
+                                <div class="tit">
+                                    <!-- <el-checkbox v-model="singleChecked" @change="singleChange"></el-checkbox> -->
+                                    <input class="custom-checkbox title-text-checkbox" name="bus-list" type="checkbox" dataid="" />
+                                    <div class="img-tit">${item.Buyer}</div>
+                                </div>
+                                <div class="r-cont">
+                                    <div class="img-c" @click="guanAndren(item, 0)">
+                                        <img src='{{Msg "seo" "cdn"}}/images/focused.png' v-if="item.follow1">
+                                        <img src='{{Msg "seo" "cdn"}}/images/focus.png' v-else>
+                                        <i v-if="item.follow1">已关注</i>
+                                        <i v-else>关注</i>
+                                    </div>
+                                    <div class="img-c" @click="guanAndren(item, 1)">
+                                        <img src='{{Msg "seo" "cdn"}}/images/renling_active.png' v-if="item.claim1" style="margin-left: 16px;">
+                                        <img src='{{Msg "seo" "cdn"}}/images/renling.png' v-else style="margin-left: 16px;">
+                                        <i v-if="item.claim1">已认领</i>
+                                        <i v-else>认领</i>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="pur-bot">
+                                <span>项目数量:<i>${item.PNCount || '-'}</i></span>
+                                <span>项目总金额:<i>${moneyUnit(item.Budget) || '-'}</i></span>
+                                <span>所在地:<i>${item.WProvince || '-'} ${item.WCity || ''}</i></span>
+                            </div>
+                        </div>
+                        <!-- 自定义标签弹框 -->
+                        <div class="tags-box">
+                            <div class="tags-inputs">
+                                <div class="tag-input">
+                                    <div class="tag-labels"></div>
+                                    <input type="text" class="clear-input" maxlength="5" oninput="this.value=this.value.replace(/\s+/g,'')">
+                                    <div class="tag-placeholder">新增标签回车保存</div>
+                                </div>
+                                <div class="add-tag-button">添加并使用</div>
+                            </div>
+                            <div class="tags-list clearfix"></div>
+                            <div class="tags-footer">
+                                <div class="tags-button button-confirm">确认添加</div>
+                                <div class="tags-button button-cancel">暂不添加</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="el-pagination-container">
+                    <el-pagination
+                        background
+                        layout="prev, pager, next, ->"
+                        :hide-on-single-page="true"
+                        :current-page="listState.pageNum"
+                        :page-size="listState.pageSize"
+                        :total="listState.total"
+                        @current-change="onPageChange"
+                    ></el-pagination>
+                </div>
+            </div>
+            <div class="search-footer w"></div>
+        </div>
+    </section>
+
+    {{include "/common/pcbottom.html"}}
+    {{include "/common/baiducc.html"}}
+
+    <script src="https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js"></script>
+    <script src="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/index.js"></script>
+    <script src='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></script>
+    <script>
+        var dataId = '';
+        var pageInfo = {
+            searchContent: {{.T.searchvalue}},
+        }
+        haslogin({{.T.logid}})
+	</script>
+    <script src='{{Msg "seo" "cdn"}}/common-module/public/js/china-map-data.js'></script>
+    <script src='{{Msg "seo" "cdn"}}/common-module/selector/js/provinceMap.js'></script>
+    <script src='{{Msg "seo" "cdn"}}/js/selector/select-list-pc.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/js/selector/area-city-pc.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/js/selector/price-pc.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/js/selector/no-data-pc.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/js/purSearch.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/js/pur-search-index-pc.js?v={{Msg "seo" "version"}}1'></script>
+    <script type="text/javascript">
+        var industry = {{.T.industry}}!=null?{{.T.industry}}:"";
+        var industrylist = {{.T.industrylist}}!=null?{{.T.industrylist}}:"";
+        var sortArray = {{.T.sortArray}}!=null?{{.T.sortArray}}:"";
+        var selectPublishtime = {{.T.publishtime}}?{{.T.publishtime}}:"thisyear";
+        $(function() {
+            // 客户分类
+            $('.bus-card').find('.right_msg').css('height','22px')
+            $('.bus-card').find('.cus-more').click(function() {
+                var txts = $(this).html()
+                if (txts == '更多') {
+                    $(this).html('收起')
+                    $('.bus-card').find('.right_msg').css('height','auto')
+                } else {
+                    $(this).html('更多')
+                    $('.bus-card').find('.right_msg').css('height','22px')
+                }
+            })
+            // 自定义标签
+            // 标签输入框事件
+            $('.tags-box').click(function(e) {
+                e.stopPropagation()
+            })
+
+            $('.tag-input').click(function(e) {
+                e.stopPropagation()
+                $(this).children('.tag-placeholder').hide()
+                $(this).children('input').focus()
+            })
+            // 标签输入框回车事件
+            $('.tag-input .clear-input').keydown(function(event){
+                event.stopPropagation()
+                if (event.keyCode == 13) {
+                    if (!$('.tags-box').is(':hidden')) {
+                        $('.tags-inputs .add-tag-button').trigger('click')
+                    }
+                }
+            })
+            // 标签输入框失去焦点事件
+            $('.tag-input .clear-input').blur(function() {
+                if($('.tag-labels').children().length == 0 && $(this).val() == '') {
+                    $('.tag-placeholder').show()
+                }
+            })
+            // 添加标签按钮事件
+            $('.tags-inputs .add-tag-button').on('click', function () {
+                var input = $('.tag-input .clear-input')
+                if(input.val().length >= 2 && input.val().length < 6) {
+                    // ajax提交自定义标签
+                    addTagsAjax(input.val())
+                }
+            })
+            // 点击确定按钮,绑定标签
+            $('.tags-footer .button-confirm').on('click', function () {
+                if (!$('.tags-box').is(':hidden')){
+                var lids = ""
+                var lname = ""
+                $('.tags-item.tags-active').each(function() {
+                    if ($(this).attr('data-id')){
+                        if(lids != ""){
+                            lids += ",";
+                        }
+                        if(lname != "") {
+                            lname+= ",";
+                        }
+                        lids += $(this).attr('data-id');
+                        lname += $(this).text()
+                    }
+                })
+                var params = {
+                    lids: lids,
+                    laction: 'S',
+                    binfo: JSON.parse(sessionStorage.getItem('$save-tags-binfo'))
+                }
+
+                // 执行保存绑定标签操作
+                if (params.lids !== '') {
+                    saveChooseTags(params, function () {
+                    $('.tags-footer .button-cancel').trigger('click')
+                    })
+                }
+                }
+            })
+
+            $('.tags-footer .button-cancel').on('click', function () {
+                $('.tags-box').hide(function() {
+                // 标签弹框消失时 清除上次选择的标签分类
+                activeTags = []
+                $('.tag-labels').empty()
+                $('.clear-input').val('')
+                $('.tags-list').find('.tags-item').removeClass('tags-active')
+                $('.tag-placeholder').show()
+                })
+            })
+            var activeTags = []; //选中的自定义标签 作为全局变量使用
+            // 解绑自定义标签
+            function deleteInputTag(item) {
+                var index = $(item).parent().attr('data-index')
+                var id = $(item).parent().attr('data-id')
+                activeTags.splice(index, 1)
+                inputTagList()
+                $('.tags-item[data-id="' + id + '"]').removeClass('tags-active')
+            }
+
+            function inputTagList () {
+                var ht = '';
+                $('.tag-labels').html(ht)
+                activeTags.forEach(function(v,i) {
+                    ht+='<span class="tag-label" data-index=' + i + ' data-id="' + v.lid + '">'
+                    ht+='<em>'+ v.lname + '</em>'
+                    ht+='<i class="tag-close" onclick="deleteInputTag(this)"></i>'
+                    ht+='</span>'
+                });
+                $('.tag-labels').html(ht)
+                if ($('.tag-labels').children('.tag-label').length > 0) {
+                    $('.tag-placeholder').hide()
+                }
+                checkTagDisabled()
+            }
+            // 渲染标签列表数据
+            function renderTagsList (data) {
+                if (data && data.length > 0) {
+                    var ht = '';
+                    data.forEach(function(v,i) {
+                        ht+='<span class="tags-item" data-count=' + v.count + ' data-id=' + v.lid + '>'+ v.lanme +'</span>'
+                    });
+                    $(".tags-list").html(ht)
+                    activeTags.forEach(function(s,j){
+                        $('.tags-list .tags-item[data-id="' + s.lid +  '"]').addClass('tags-active')
+                    })
+                    $('.tags-item').click(function(e) {
+                        e.stopPropagation()
+                        if ($(this).hasClass('disabled')) return
+                        var id = $(this).attr('data-id');
+                        var name = $(this).text()
+                        $(this).toggleClass('tags-active')
+                        if ($(this).hasClass('tags-active')) {
+                            activeTags.push({
+                                lid: id,
+                                lname: name
+                            })
+                            inputTagList ()
+                        } else {
+                            var newArr = activeTags.filter(function(item) {
+                                return item.lid != id
+                            })
+                            activeTags = newArr
+                            // console.log(activeTags,newArr, 'quxiao')
+                            inputTagList ()
+                        }
+
+                    })
+                }
+                inputTagList()
+            }
+            // 获取用户自定义标签
+            function getUserTags () {
+                $.ajax({
+                    type:'post',
+                    url:'/publicapply/bidcoll/getLabel?t=' + Date.now(),
+                    success: function(r){
+                    if (r.error_code == 0 && $.isArray(r.data)) {
+                        renderTagsList(r.data.reverse())
+                    }
+                    }
+                })
+            }
+            /*
+            保存或清除标签 ajax
+            params: {
+                lids: String 标签id(加密后),  非必传
+                lname: String 标签名称,  非必传
+                laction: String  用户行为:S添加或绑定标签;D删除标签  非必传
+                binfo: Array 招标信息数组(已收藏的招标信息) 非必传
+                bid: String 招标信息加密后id  必传
+            }
+            1:lids为空;lname不为空;laction=”S”;binfo数组不为空->新增标签并且绑定收藏信息
+            2:lids不为空;laction=”S”;binfo数组不为空->收藏信息绑定标签
+            3:lids不为空;laction=”D”;->删除标签 并解绑收藏的信息
+            */
+            function saveChooseTags(params, callback) {
+                $.ajax({
+                    type:'post',
+                    url:'/publicapply/bidcoll/label',
+                    contentType: "application/json",
+                    data: JSON.stringify(params),
+                    dataType:'json',
+                    success: function(r){
+                    if (r.data) {
+                        toastFn("标签绑定成功", 1000)
+                        callback && callback()
+                    }
+                    }
+                })
+            }
+            // 新增标签
+            function addTagsAjax (name) {
+                console.info('66666666')
+                $.ajax({
+                    type:'post',
+                    url:'/publicapply/bidcoll/addLabel',
+                    data: {
+                    name: name
+                    },
+                    dataType:'json',
+                    success: function(r){
+                    if (r.data) {
+                        $('.tag-input .clear-input').val('')
+                        // 添加标签成功后 绑定标签
+                        if (activeTags.length < 3) {
+                        activeTags.push({
+                            lid: r.data,
+                            lname: name
+                        })
+                        }
+                        getUserTags()
+                    } else {
+                        // toastFn(r.error_msg, 1000)
+                        toastFn('标签已经存在,无需添加', 1000)
+                    }
+                    }
+                })
+            }
+            function checkTagDisabled () {
+                if (activeTags.length >= 3) {
+                    // 禁用标签
+                    $('.tags-list').find('.tags-item:not(.tags-active)').addClass('disabled')
+                } else {
+                    // 解除禁用
+                    $('.tags-list').find('.disabled').removeClass('disabled')
+                }
+            }
+        })
+    </script>
+    <script type="text/javascript">
+        setTimeout(() => {
+            if(!vm.powerInfo.entniche && !vm.powerInfo.member && vm.powerInfo.vip <= 0) {
+                (window.slotbydup = window.slotbydup || []).push({
+                    id: "u6603900",
+                    container: "_u4m8od8j3s",
+                    async: true
+                });
+                getAjaxAdv()
+                var frames = document.getElementById("iframeu6603900_0");
+                console.log(frames, 'frames')
+    
+                IframeOnClick.track(frames, function() {
+                        jQuery(document).click();
+                });
+            }
+        }, 1000);
+            function getAjaxAdv () {
+                $.ajax({
+                  type: 'POST',
+                  url: '/publicapply/adLeague/exposure',
+                  data: {
+                    client: 'PC',
+                    id: 'ad2',
+                    position: '企业搜索列表页底部'
+                  },
+                  success: function(res) {
+                    console.log(res)
+                  }
+                })
+            }
+            var IframeOnClick = {
+                resolution: 200,
+                iframes: [],
+                interval: null,
+                Iframe: function() {
+                    this.element = arguments[0];
+                    this.cb = arguments[1];
+                    this.hasTracked = false;
+                },
+                track: function(element, cb) {
+                    this.iframes.push(new this.Iframe(element, cb));
+                    var _this = this;
+                        this.interval = setInterval(function() { _this.checkClick(); }, this.resolution);
+                },
+                checkClick: function() {
+                    if (document.activeElement) {
+                        var activeElement = document.activeElement;
+                        for (var i in this.iframes) {
+                            if (activeElement === this.iframes[i].element) { // user is in this Iframe
+                                if (this.iframes[i].hasTracked == false) {
+                                    this.iframes[i].cb.apply(window, []);
+                                    this.iframes[i].hasTracked = true;
+                                    $.ajax({
+                                        type: 'POST',
+                                        url: '/publicapply/adLeague/click',
+                                        data: {
+                                            client: 'PC',
+                                            id: 'ad2',
+                                            position: '企业搜索列表页底部'
+                                        },
+                                        success: function(res) {
+                                            console.log(res)
+                                        }
+                                    })
+                                }
+                            } else {
+                                this.iframes[i].hasTracked = false;
+                            }
+                        }
+                    }
+                }
+                };
+        </script>
+        <!-- 多条广告如下脚本只需引入一次 -->
+        <script type="text/javascript" src="//cpro.baidustatic.com/cpro/ui/cm.js" async="async" defer="defer"></script>
+</body>
+
+</html>
+

+ 458 - 389
src/web/templates/pc/pursearchindex.html

@@ -6,7 +6,7 @@
 		<meta name="Description" content="{{Msg "seo" "qfw.swordfishsl.description"}}"/>
 		<meta name="renderer" content="webkit">
 		<meta content="telephone=no" name="format-detection"/>
-        <meta content="采购单位搜索" theme="light" name="enable-header"/>
+        <meta content="招标搜索" theme="light" name="enable-header"/>
 		{{include "/common/pnc.html"}}
 		<link href="{{Msg "seo" "cdn"}}/css/pc.css?v={{Msg "seo" "version"}}" rel="stylesheet" />
 		<link href="{{Msg "seo" "cdn"}}/css/dev2/reset_pc.css?v={{Msg "seo" "version"}}" rel="stylesheet" />
@@ -15,129 +15,30 @@
         <script src="{{Msg "seo" "cdn"}}/js/jquery.cookie.js"></script>
 		<script src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}"></script>
 
-        <link href="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/theme-chalk/index.css" rel="stylesheet" />
+        <link href="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/theme-chalk/index.css" rel="stylesheet" />
         <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/css/ele-reset.css?v={{Msg "seo" "version"}}'>
+        <!-- <link href='{{Msg "seo" "cdn"}}/css/dev2/newBidSearch.css?v={{Msg "seo" "version"}}' rel="stylesheet"> -->
         <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/css/selector/selector.css?v={{Msg "seo" "version"}}'>
-        <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/pccss/ent-search-index-pc.css?v={{Msg "seo" "version"}}'>
+        <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/pccss/pur-search-index-pc.css?v={{Msg "seo" "version"}}'>
         <style>
             .search-container {
                 line-height: 1;
                 padding-top: 64px;
                 min-height: calc(100vh - 364px);
             }
-            .diy-for-register-group .select-group-container {
-                flex-wrap: nowrap;
-            }
-            .diy-for-register-group .el-checkbox {
-                margin-right: 16px;
-            }
-            .diy-for-register-group .selector-content.select-list-content {
-                padding-right: 0;
-            }
-            .diy-for-register-group .section-d .section-d-item.left::after {
-                right: -7px;
-                background-color: #e0e0e0;
-            }
-            .diy-for-register-group .section-d .section-d-item.left {
-                margin-right: 20px;
-            }
-            .diy-for-register-group .select-group-content.price-container:focus-within + button {
-                opacity: 1;
-            }
-            .diy-for-register-group .parent-input-group.focus-within .select-group-content.price-container,
-            .diy-for-register-group .select-group-content.price-container:focus-within {
-                background: #2abed1;
-            }
-            .diy-for-register-group .select-group-content.price-container + button {
-                opacity: 0;
-                margin-left: 6px !important;
-            }
-            .diy-for-register-group .select-group-content.price-container {
-                padding: 6px;
-                background: #f5f6f7;
-                border-radius: 2px;
-            }
-            .founding-div .selector-content{
-                flex: none;
-            }
-
-
-            .timerInput {
-                /* margin-top: -9px; */
-                /* margin-left: 40px; */
-                /* border: 1px solid #fff; */
-                background-color: #F5F6F7;
-                padding: 5px 5px;
-                position: relative;
-            }
-            .timerInput.active{
-                background-color: #2cb7ca;
-            }
-
-            .timerInput input[type="text"] {
-                float: left;
-                width: 160px;
-                height: 28px;
-                padding: 0 15px;
-                box-sizing: border-box;
-                border: 1px solid #e0e0e0;
-                border-radius: 2px;
-            }
-
-            .timerInput span {
-                float: left;
-                width: 15px;
-                height: 2px;
-                line-height: 15px;
-                background-color: #E0E0E0;
-                padding: 0;
-                margin: 12px 6px 0;
-            }
-
-            .timerInput button {
-                float: left;
-                width: 58px;
-                height: 28px;
-                margin: 0 0 0 8px;
-                background-color: #2cb7ca;
-                color: #ffffff;
-                cursor: pointer;
-                border-radius:2px;
-            }
-            .this_opacity0{
-                position: absolute;
-                top: 0;
-                left: 0;
-                opacity: 0;
-            }
-            .focus_color{
-                background-color: #2cb7ca;
-            }
-            .this_opacity_end{
-                position: absolute;
-                right: -55px;
-                top: 5px;
-                opacity: 0;
-            }
-            .this_opacity_start{
-                position: absolute;
-                left: 5px;
-                top: 5px;
-                opacity: 0;
-            }
         </style>
 	</head>
 
 	<body>
 	{{include "/common/pchead.html"}}
 	<section class="search-container">
-        <div class="vue-search-container" v-cloak>
+        <div class="vue-search-container" id="pur-search-container" v-cloak>
             <div class="search-header">
                 <div class="search-header-content w">
                     <div class="search-header-top">
                         <div class="input-container flex">
                             <el-input
-                                placeholder="输入企业名称"
+                                placeholder="输入采购单位名称"
                                 v-model.trim="searchContent"
                                 clearable
                                 @focus="preSearch.focus=true"
@@ -157,14 +58,6 @@
                                 <span>筛选</span>
                                 <span class="el-icon-arrow-up" :class="filterShow ? '' : 'rotate180'"></span>
                             </div>
-                            <div class="pre-search-list" style="display: none;" v-show="preSearchListShow" @mouseout="preSearch.hover=false" @mouseover="preSearch.hover=true">
-                                <div
-                                    class="pre-search-item ellipsis"
-                                    v-for="(item,index) in preSearch.list"
-                                    :key="index"
-                                    @click="toDetail(item.entId)"
-                                    >${ item.name }</div>
-                            </div>
                         </div>
                         <div class="search-right-wx">
                             <img src="{{Msg "seo" "cdn"}}/images/biddingSearch/sea-right-wx.png" />
@@ -187,222 +80,177 @@
                 </div>
             </div>
             <div class="search-content w">
+                <div class="tit-r">
+                    <a class="mesg-box" href="/jylab/purScopebusniess/index.html" target="_blank">
+                        <i class="el-icon-jy-top-mesg"></i>
+                        <span>业务范围设置</span>
+                    </a>
+                </div>
                 <div class="selector-card-container search-filters">
-                    <div class="selector-card search-type">
-                        <div class="selector-card-header">搜索范围:</div>
-                        <div class="selector-card-content">
-                            <select-list-component
-                                ref="searchType"
-                                :list="searchTypeList"
-                                select-button-type="checkbox"
-                                :show-all-button="false"
-                                @change="searchTypeChange"
-                            ></select-list-component>
-                        </div>
-                        <div class="selector-card-footer" v-if="showEntUsage">
-                            <el-popover
-                                placement="top"
-                                width="292"
-                                trigger="hover">
-                                <div class="popover-content" v-if="entUseInfo.used < entUseInfo.total" key="popover-content">
-                                    <p>超级订阅用户,每购买一个省,每月可看50个画像。</p>
-                                    <p v-show="false">您当前订阅了${getVipSubText},如需查看更多,请前往订阅更多省份。<span class="popover-link" @click="openVipPage('popover-link')">前往</span></p>
-                                </div>
-                                <div class="popover-content" v-else key="popover-content">
-                                    <p>超级订阅用户,每购买一个省,每月可看50个画像。</p>
-                                    <p v-if="entUseInfo.province == -1">您当前订阅了${getVipSubText},查看机会已经消耗完毕。如需要更多服务,请前往<span class="popover-link" @click="openCustomerService">联系客服</span></p>
-                                    <p v-else>您当前订阅了${getVipSubText},如需查看更多,请前往订阅更多省份。<span class="popover-link" @click="openVipPage('popover-link')">前往</span></p>
-                                </div>
-                                <div class="used-counter" slot="reference">
-                                    <span>当月已使用:</span>
-                                    <span class="u-c-label">
-                                        <span class="count-used highlight-text">${entUseInfo.used}</span><span class="count-total">/${entUseInfo.total}</span>
-                                    </span>
-                                </div>
-                            </el-popover>
-                            <div class="to-ent-history" @click="openEntHistory" id="to-ent-history">历史记录查看</div>
-                        </div>
-                    </div>
                     <div class="selector-card">
-                        <div class="selector-card-header">注册地:</div>
+                        <div class="selector-card-header">选择区域:</div>
                         <div class="selector-card-content">
                             <area-city-component @change="areaCityChange"></area-city-component>
                         </div>
                     </div>
-                    <div class="selector-card price">
-                        <div class="selector-card-header">注册资本:</div>
-                        <div class="selector-card-content diy-for-register-group">
-                            <select-list-component
-                                ref="entCapital"
-                                select-button-type="checkbox"
-                                :list="priceList"
-                                @change="inexactPriceChange"
-                            ></select-list-component>
-                            <price-component class="parent-input-group" :class="{'focus-within': getInputStatus}" @confirm="exactPriceChange"></price-component>
+                    <!--行业分类-->
+                    <div class="industry-lis-t">
+                        <div class="indus-tit">行业分类:</div>
+                        <div class="selector-content" :class="{ 'no-more': !showMore }">
+                            <div class="select-group-container" >
+                            <div class="select-group-header"
+                                v-show="!showMore"
+                                v-for="(item, index) in industryListMap"
+                                :key="index+'A'"
+                                :class="{
+                                    'right-line': showMore
+                                }">
+                                <button
+                                class="j-button-item"
+                                :class="{
+                                    active: item.selected,
+                                    [item.id]: true,
+                                    'button-level-0': item.level === 0,
+                                    'button-level-1': item.level === 1,
+                                    'all': item.level === 0,
+                                    'bgc': item.level === 1
+                                }"
+                                @click="changeIndustryState(item)"
+                                >${ item.name }</button>
+                            </div>
+                            <div class="select-group-header"
+                                v-show="showMore"
+                                v-for="(item, index) in getIndustryListMap"
+                                :key="index+'B'"
+                                :class="{
+                                    'right-line': showMore
+                                }">
+                                <button
+                                class="j-button-item"
+                                :class="{
+                                    active: item.selected,
+                                    [item.id]: true,
+                                    'button-level-0': item.level === 0,
+                                    'button-level-1': item.level === 1,
+                                    'all': item.level === 0,
+                                    'bgc': item.level === 1
+                                }"
+                                @click="changeIndustryState(item)"
+                                >${ item.name }</button>
+                            </div>
+                            </div>
                         </div>
+                        <span class="action-button show-more" v-if="showmoreBtn" @click="showMore = !showMore">
+                            <span class="action-text">${ showMore ? '收起' : '更多' }</span>
+                            <span class="el-icon-arrow-down" :class="showMore ? 'rotate180' : ''"></span>
+                        </span>
                     </div>
-                    <div class="selector-card">
-                        <div class="selector-card-header">企业类型:</div>
-                        <div class="selector-card-content">
-                            <select-list-component
-                                ref="entType"
-                                select-button-type="checkbox"
-                                :list="entTypeList"
-                                @change="entTypeChange"
-                            ></select-list-component>
+                    <!-- 客户分类 -->
+                    <div class="customer-card industry bus-card">
+                        <div class="leftTitle r-industry">客户分类:</div>
+                        <div class="right_msg">
+                            <span class="spa" :class="{g_active:qutive}" @click="quanBu('全部')">全部</span>
+                            <span 
+                                v-for="(item,index) in indusData" 
+                                :key="item" 
+                                class="spa" 
+                                :class="{'g_active':caiIndex.indexOf(index)>-1}"
+                                @click="caiIndus(item,index)"
+                            >${item}</span>
                         </div>
+                        <div class="stops cus-more">更多</div>
                     </div>
-                    <div class="selector-card">
-                        <div class="selector-card-header">企业状态:</div>
-                        <div class="selector-card-content">
-                            <select-list-component
-                                ref="entState"
-                                select-button-type="checkbox"
-                                :list="entStateList"
-                                @change="entStateChange"
-                            ></select-list-component>
+                    <!-- 业务范围 -->
+                    <div class="customer-card industry job-card">
+                        <div class="leftTitle r-industry">业务范围:</div>
+                        <div class="right_msg">
+                            <span class="spa" :class="{g_active:qutive1}" @click="quanBu1('全部')">全部</span>
+                            <span 
+                                v-for="(item,index) in jobData" 
+                                :key="index" 
+                                class="spa" 
+                                :class="{'g_active':caiIndex1.indexOf(index)>-1}"
+                                @click="caiIndus1(item.a_key,index)"
+                            >
+                                <i v-for="(ite,indx) in item.a_key" :key="indx">${keyChange(ite.appendkey,ite.key,ite.notkey)}</i>
+                            </span>
                         </div>
+                        <!-- <div class="stops job-more">更多</div> -->
                     </div>
-                    <div class="selector-card">
-                        <div class="selector-card-header">成立时间:</div>
-                        <div class="selector-card-content founding-div">
-                            <select-list-component
-                                ref="entTime"
-                                select-button-type="checkbox"
-                                :list="entTimeList"
-                                @change="entTimeChange"
-                            ></select-list-component>
-                            <div class="timerInput fl" @click="changeColor()" :class="focusColor?'focus_color':''">
-                                <input type="text" id="starttime" readonly="true" placeholder="" :value="startDate"/>
-                                <span></span>
-                                <input type="text" name="maxtime" id="endtime" readonly="true" placeholder="" :value="endDate" />
-
-                                <!-- <el-date-picker
-                                    class="this_opacity0"
-                                    v-model="foundingTime"
-                                    type="daterange"
-                                    range-separator="-"
-                                    start-placeholder="开始日期"
-                                    end-placeholder="结束日期"
-                                    value-format="timestamp"
-                                    @change="foundingTimeChange"
-                                    @focus="showButton"
-                                    @blur="hiddenButton"
-                                    >
-                                </el-date-picker> -->
-                                <el-date-picker
-                                    class="this_opacity_start"
-                                    v-model="thisStartTime"
-                                    type="date"
-                                    value-format="timestamp"
-                                    @change="startTimeChange"
-                                    @focus="showButton"
-                                    @blur="hiddenButton"
-                                    placeholder="">
-                                </el-date-picker>
-                                <el-date-picker
-                                    class="this_opacity_end"
-                                    v-model="thisEndTime"
-                                    type="date"
-                                    value-format="timestamp"
-                                    @change="endTimeChange"
-                                    @focus="showButton"
-                                    @blur="hiddenButton"
-                                    placeholder="">
-                                </el-date-picker>
-                            </div>
-                            <button class="j-button-item active bgc" style="min-width: 60px; margin-left: 10px; color: #fff;
-                            background-color: #2abed1;position: relative;z-index: 99;" @click="establishSearch" v-show="buttonType">确定</button>
-                        </div>
+                    <!-- 企业历史客户 -->
+                    <div class="qy-card">
+                        <div class="leftTitle r-industry">企业历史客户:</div>
+                        <el-checkbox-group v-model="qyCheck" @change="qyChange">
+                            <el-checkbox v-for="(item, index) in qyData" :label="item">${item}</el-checkbox>
+                        </el-checkbox-group>
+                        <!-- <div class="stops qy-more">更多</div> -->
                     </div>
-                    <div class="selector-card vip filter-zbly">
-                        <div class="selector-card-header">
-                            <span>招标领域筛选条件</span>
-                            <span class="icon-hot-vip"></span>
+                </div>
+                <div class="search-pur-container">
+                    <div class="list-header">
+                        <div class="r-head">
+                            <input class="custom-checkbox check-all" @click="allChange" name="bus-list" type="checkbox" dataid="" />
+                            <span>客户列表</span>
                         </div>
-                        <div class="selector-card-content flex mini-select">
-                            <div class="select-title">中标区域</div>
-                            <el-select v-model="filterState.biddingArea" @change="zbFilterChange('中标区域')" clearable placeholder="中标区域">
-                                <el-option
-                                    v-for="item in zblyFilterOption.zbAreaOptions"
-                                    :key="item.value"
-                                    :label="item.label"
-                                    :value="item.value">
-                                </el-option>
-                            </el-select>
-                            <div class="select-title">单位类型</div>
-                            <el-select v-model="filterState.entClass" @change="zbFilterChange('单位类型')" clearable placeholder="单位类型">
-                                <el-option
-                                    v-for="item in zblyFilterOption.dwlxOptions"
-                                    :key="item.value"
-                                    :label="item.label"
-                                    :value="item.value">
-                                </el-option>
-                            </el-select>
-                            <div class="select-title">联系方式</div>
-                            <el-select v-model="filterState.entContact" @change="zbFilterChange('联系方式')" clearable placeholder="联系方式">
-                                <el-option
-                                    v-for="item in zblyFilterOption.lxfsOptions"
-                                    :key="item.value"
-                                    :label="item.label"
-                                    :value="item.value">
-                                </el-option>
-                            </el-select>
+                        <div class="r-cont">
+                            <div class="img-c" @click="allGuanren(0)">
+                                <img src='{{Msg "seo" "cdn"}}/images/focused.png' v-if="follow">
+                                <img src='{{Msg "seo" "cdn"}}/images/focus.png' v-else>
+                                <i v-if="follow">已关注</i>
+                                <i v-else>关注</i>
+                            </div>
+                            <div class="img-c" @click="allGuanren(1)">
+                                <img src='{{Msg "seo" "cdn"}}/images/renling_active.png' v-if="claim" style="margin-left: 16px;">
+                                <img src='{{Msg "seo" "cdn"}}/images/renling.png' v-else style="margin-left: 16px;">
+                                <i v-if="claim">已认领</i>
+                                <i v-else>认领</i>
+                            </div>
                         </div>
                     </div>
-                </div>
-                <div class="search-result-container">
-                    <div class="ent-info-list" v-loading="listState.loading">
-                        <div
-                            class="ent-info-item"
-                            :class="{
-                                hover: !item.showMask
-                            }"
-                            v-for="(item,index) in listState.list"
-                            @click="toDetail(item.id)"
-                            :key="item.id">
-                            <div class="ei-i-left">
-                                <div class="ei-i-l-container" :class="item.randomBgc">${ item.company_shortname ? item.company_shortname.slice(0,4) : item.company_name.slice(0,4) }</div>
-                            </div>
-                            <div class="ei-i-right">
-                                <div class="ei-r-title-container flex">
-                                    <div class="ei-r-title">${ item.company_name }</div>
-                                    <div class="ei-r-tag" :class="getEntStatus(item.company_status)" v-if="item.company_status">${ item.company_status }</div>
+                    <div class="pur-info-list" v-loading="listState.loading">
+                        <div class="list-item" v-for="(item, index) in listState.list" :key="index">
+                            <div class="list-header pur-top">
+                                <div class="tit">
+                                    <input class="custom-checkbox title-text-checkbox" @click="singleChange" name="bus-list" type="checkbox" :dataname="item.Buyer" />
+                                    <div class="img-tit">${item.Buyer}</div>
                                 </div>
-                                <div class="ei-r-info-container">
-                                    <div class="ei-r-info-item">
-                                        <div class="i-label">法定代表人:</div>
-                                        <div class="i-text">${ item.legal_person ? item.legal_person : '-' }</div>
+                                <div class="r-cont">
+                                    <div class="img-c" @click="guanAndren(item, 0)">
+                                        <img src='{{Msg "seo" "cdn"}}/images/focused.png' v-if="item.follow1">
+                                        <img src='{{Msg "seo" "cdn"}}/images/focus.png' v-else>
+                                        <i v-if="item.follow1">已关注</i>
+                                        <i v-else>关注</i>
                                     </div>
-                                    <div class="ei-r-info-item">
-                                        <div class="i-label">注册资本:</div>
-                                        <div class="i-text">${ calcListItemForCap(item.capital) }</div>
-                                    </div>
-                                    <div class="ei-r-info-item">
-                                        <div class="i-label">成立日期:</div>
-                                        <div class="i-text">${ item.establishStamp ? new Date(item.establishStamp * 1000).pattern('yyyy-MM-dd') : '-' }</div>
-                                    </div>
-                                    <div class="ei-r-info-item">
-                                        <div class="i-label">联系方式:</div>
-                                        <div class="i-text">${ item.company_phone ? item.company_phone : '-' }</div>
+                                    <div class="img-c" @click="guanAndren(item, 1)">
+                                        <img src='{{Msg "seo" "cdn"}}/images/renling_active.png' v-if="item.claim1" style="margin-left: 16px;">
+                                        <img src='{{Msg "seo" "cdn"}}/images/renling.png' v-else style="margin-left: 16px;">
+                                        <i v-if="item.claim1">已认领</i>
+                                        <i v-else>认领</i>
                                     </div>
                                 </div>
-                                <div class="ei-r-info-container">
-                                    <div class="ei-r-info-item">
-                                        <div class="i-label">地址:</div>
-                                        <div class="i-text">${ item.company_address ? item.company_address : '-' }</div>
-                                    </div>
+                            </div>
+                            <div class="pur-bot">
+                                <span>项目数量:<i>${item.PNCount || '-'}</i></span>
+                                <span>项目总金额:<i>${moneyUnit(item.Budget) || '-'}</i></span>
+                                <span>所在地:<i>${item.WProvince || '-'} ${item.WCity || ''}</i></span>
+                            </div>
+                        </div>
+                        <!-- 自定义标签弹框 -->
+                        <div class="tags-box">
+                            <div class="tags-inputs">
+                                <div class="tag-input">
+                                    <div class="tag-labels"></div>
+                                    <input type="text" class="clear-input" maxlength="5" oninput="this.value=this.value.replace(/\s+/g,'')">
+                                    <div class="tag-placeholder">新增标签回车保存</div>
                                 </div>
+                                <div class="add-tag-button">添加并使用</div>
                             </div>
-                            <div @click.stop.prevent class="list-item-mask" v-if="item.showMask">
-                                <p>${ buttonText }会员,查看更多搜索结果</p>
-                                <button class="j-t-button confirm active" @click="openVipPage('more')">
-                                    去${ buttonText }
-                                </button>
+                            <div class="tags-list clearfix"></div>
+                            <div class="tags-footer">
+                                <div class="tags-button button-confirm">确认添加</div>
+                                <div class="tags-button button-cancel">暂不添加</div>
                             </div>
                         </div>
-                        <div class="_u4m8od8j3s"></div>
-                        <no-data style="display: none;" v-show="listState.list.length === 0 && listState.loaded" tip-text="没有找到符合条件的企业"></no-data>
                     </div>
                 </div>
                 <div class="el-pagination-container">
@@ -418,19 +266,6 @@
                 </div>
             </div>
             <div class="search-footer w"></div>
-            <el-dialog
-                title="开通超级订阅"
-                :visible.sync="powerDialogShow"
-                custom-class="j-el-confirm"
-                :show-close="false"
-                top="25vh"
-                width="30%">
-                <span>立享更多搜索权限,寻找商机更精准</span>
-                <span slot="footer" class="dialog-footer">
-                    <button class="j-t-button confirm active" @click="openVipPage">去开通</el-button>
-                    <button class="j-t-button cancel" @click="powerDialogShow=false">取 消</button>
-                </span>
-            </el-dialog>
         </div>
     </section>
 
@@ -438,8 +273,8 @@
     {{include "/common/baiducc.html"}}
 
     <script src="https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js"></script>
-    <script src="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/index.js"></script>
-    <script src="{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}"></script>
+    <script src="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/index.js"></script>
+    <script src='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></script>
     <script>
         var dataId = '';
         var pageInfo = {
@@ -453,84 +288,318 @@
     <script src='{{Msg "seo" "cdn"}}/js/selector/area-city-pc.js?v={{Msg "seo" "version"}}'></script>
     <script src='{{Msg "seo" "cdn"}}/js/selector/price-pc.js?v={{Msg "seo" "version"}}'></script>
     <script src='{{Msg "seo" "cdn"}}/js/selector/no-data-pc.js?v={{Msg "seo" "version"}}'></script>
-    <script src='{{Msg "seo" "cdn"}}/js/ent-search-index-pc.js?v={{Msg "seo" "version"}}1'></script>
+    <script src='{{Msg "seo" "cdn"}}/js/purSearch.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/js/pur-search-index-pc.js?v={{Msg "seo" "version"}}1'></script>
     <script type="text/javascript">
-    setTimeout(() => {
-        if(!vm.powerInfo.entniche && !vm.powerInfo.member && vm.powerInfo.vip <= 0) {
-            (window.slotbydup = window.slotbydup || []).push({
-                id: "u6603900",
-                container: "_u4m8od8j3s",
-                async: true
-            });
-            getAjaxAdv()
-            var frames = document.getElementById("iframeu6603900_0");
-            console.log(frames, 'frames')
+        var industry = {{.T.industry}}!=null?{{.T.industry}}:"";
+        var industrylist = {{.T.industrylist}}!=null?{{.T.industrylist}}:"";
+        var sortArray = {{.T.sortArray}}!=null?{{.T.sortArray}}:"";
+        var selectPublishtime = {{.T.publishtime}}?{{.T.publishtime}}:"thisyear";
+        $(function() {
+            // 客户分类
+            $('.bus-card').find('.right_msg').css('height','22px')
+            $('.bus-card').find('.cus-more').click(function() {
+                var txts = $(this).html()
+                if (txts == '更多') {
+                    $(this).html('收起')
+                    $('.bus-card').find('.right_msg').css('height','auto')
+                } else {
+                    $(this).html('更多')
+                    $('.bus-card').find('.right_msg').css('height','22px')
+                }
+            })
+            // 自定义标签
+            // 标签输入框事件
+            $('.tags-box').click(function(e) {
+                e.stopPropagation()
+            })
 
-            IframeOnClick.track(frames, function() {
-                    jQuery(document).click();
-            });
-        }
-    }, 1000);
-        function getAjaxAdv () {
-            $.ajax({
-              type: 'POST',
-              url: '/publicapply/adLeague/exposure',
-              data: {
-                client: 'PC',
-                id: 'ad2',
-                position: '企业搜索列表页底部'
-              },
-              success: function(res) {
-                console.log(res)
-              }
+            $('.tag-input').click(function(e) {
+                e.stopPropagation()
+                $(this).children('.tag-placeholder').hide()
+                $(this).children('input').focus()
             })
-        }
-        var IframeOnClick = {
-            resolution: 200,
-            iframes: [],
-            interval: null,
-            Iframe: function() {
-                this.element = arguments[0];
-                this.cb = arguments[1];
-                this.hasTracked = false;
-            },
-            track: function(element, cb) {
-                this.iframes.push(new this.Iframe(element, cb));
-                var _this = this;
-                    this.interval = setInterval(function() { _this.checkClick(); }, this.resolution);
-            },
-            checkClick: function() {
-                if (document.activeElement) {
-                    var activeElement = document.activeElement;
-                    for (var i in this.iframes) {
-                        if (activeElement === this.iframes[i].element) { // user is in this Iframe
-                            if (this.iframes[i].hasTracked == false) {
-                                this.iframes[i].cb.apply(window, []);
-                                this.iframes[i].hasTracked = true;
-                                $.ajax({
-                                    type: 'POST',
-                                    url: '/publicapply/adLeague/click',
-                                    data: {
-                                        client: 'PC',
-                                        id: 'ad2',
-                                        position: '企业搜索列表页底部'
-                                    },
-                                    success: function(res) {
-                                        console.log(res)
-                                    }
-                                })
-                            }
+            // 标签输入框回车事件
+            $('.tag-input .clear-input').keydown(function(event){
+                event.stopPropagation()
+                if (event.keyCode == 13) {
+                    if (!$('.tags-box').is(':hidden')) {
+                        $('.tags-inputs .add-tag-button').trigger('click')
+                    }
+                }
+            })
+            // 标签输入框失去焦点事件
+            $('.tag-input .clear-input').blur(function() {
+                if($('.tag-labels').children().length == 0 && $(this).val() == '') {
+                    $('.tag-placeholder').show()
+                }
+            })
+            // 添加标签按钮事件
+            $('.tags-inputs .add-tag-button').on('click', function () {
+                var input = $('.tag-input .clear-input')
+                if(input.val().length >= 2 && input.val().length < 6) {
+                    // ajax提交自定义标签
+                    addTagsAjax(input.val())
+                }
+            })
+            // 点击确定按钮,绑定标签
+            $('.tags-footer .button-confirm').on('click', function () {
+                if (!$('.tags-box').is(':hidden')){
+                var lids = ""
+                var lname = ""
+                $('.tags-item.tags-active').each(function() {
+                    if ($(this).attr('data-id')){
+                        if(lids != ""){
+                            lids += ",";
+                        }
+                        if(lname != "") {
+                            lname+= ",";
+                        }
+                        lids += $(this).attr('data-id');
+                        lname += $(this).text()
+                    }
+                })
+                var params = {
+                    lids: lids,
+                    laction: 'S',
+                    binfo: JSON.parse(sessionStorage.getItem('$save-tags-binfo'))
+                }
+
+                // 执行保存绑定标签操作
+                if (params.lids !== '') {
+                    saveChooseTags(params, function () {
+                    $('.tags-footer .button-cancel').trigger('click')
+                    })
+                }
+                }
+            })
+
+            $('.tags-footer .button-cancel').on('click', function () {
+                $('.tags-box').hide(function() {
+                // 标签弹框消失时 清除上次选择的标签分类
+                activeTags = []
+                $('.tag-labels').empty()
+                $('.clear-input').val('')
+                $('.tags-list').find('.tags-item').removeClass('tags-active')
+                $('.tag-placeholder').show()
+                })
+            })
+            var activeTags = []; //选中的自定义标签 作为全局变量使用
+            // 解绑自定义标签
+            function deleteInputTag(item) {
+                var index = $(item).parent().attr('data-index')
+                var id = $(item).parent().attr('data-id')
+                activeTags.splice(index, 1)
+                inputTagList()
+                $('.tags-item[data-id="' + id + '"]').removeClass('tags-active')
+            }
+
+            function inputTagList () {
+                var ht = '';
+                $('.tag-labels').html(ht)
+                activeTags.forEach(function(v,i) {
+                    ht+='<span class="tag-label" data-index=' + i + ' data-id="' + v.lid + '">'
+                    ht+='<em>'+ v.lname + '</em>'
+                    ht+='<i class="tag-close" onclick="deleteInputTag(this)"></i>'
+                    ht+='</span>'
+                });
+                $('.tag-labels').html(ht)
+                if ($('.tag-labels').children('.tag-label').length > 0) {
+                    $('.tag-placeholder').hide()
+                }
+                checkTagDisabled()
+            }
+            // 渲染标签列表数据
+            function renderTagsList (data) {
+                if (data && data.length > 0) {
+                    var ht = '';
+                    data.forEach(function(v,i) {
+                        ht+='<span class="tags-item" data-count=' + v.count + ' data-id=' + v.lid + '>'+ v.lanme +'</span>'
+                    });
+                    $(".tags-list").html(ht)
+                    activeTags.forEach(function(s,j){
+                        $('.tags-list .tags-item[data-id="' + s.lid +  '"]').addClass('tags-active')
+                    })
+                    $('.tags-item').click(function(e) {
+                        e.stopPropagation()
+                        if ($(this).hasClass('disabled')) return
+                        var id = $(this).attr('data-id');
+                        var name = $(this).text()
+                        $(this).toggleClass('tags-active')
+                        if ($(this).hasClass('tags-active')) {
+                            activeTags.push({
+                                lid: id,
+                                lname: name
+                            })
+                            inputTagList ()
                         } else {
-                            this.iframes[i].hasTracked = false;
+                            var newArr = activeTags.filter(function(item) {
+                                return item.lid != id
+                            })
+                            activeTags = newArr
+                            // console.log(activeTags,newArr, 'quxiao')
+                            inputTagList ()
                         }
+
+                    })
+                }
+                inputTagList()
+            }
+            // 获取用户自定义标签
+            function getUserTags () {
+                $.ajax({
+                    type:'post',
+                    url:'/publicapply/bidcoll/getLabel?t=' + Date.now(),
+                    success: function(r){
+                    if (r.error_code == 0 && $.isArray(r.data)) {
+                        renderTagsList(r.data.reverse())
                     }
+                    }
+                })
+            }
+            /*
+            保存或清除标签 ajax
+            params: {
+                lids: String 标签id(加密后),  非必传
+                lname: String 标签名称,  非必传
+                laction: String  用户行为:S添加或绑定标签;D删除标签  非必传
+                binfo: Array 招标信息数组(已收藏的招标信息) 非必传
+                bid: String 招标信息加密后id  必传
+            }
+            1:lids为空;lname不为空;laction=”S”;binfo数组不为空->新增标签并且绑定收藏信息
+            2:lids不为空;laction=”S”;binfo数组不为空->收藏信息绑定标签
+            3:lids不为空;laction=”D”;->删除标签 并解绑收藏的信息
+            */
+            function saveChooseTags(params, callback) {
+                $.ajax({
+                    type:'post',
+                    url:'/publicapply/bidcoll/label',
+                    contentType: "application/json",
+                    data: JSON.stringify(params),
+                    dataType:'json',
+                    success: function(r){
+                    if (r.data) {
+                        toastFn("标签绑定成功", 1000)
+                        callback && callback()
+                    }
+                    }
+                })
+            }
+            // 新增标签
+            function addTagsAjax (name) {
+                console.info('66666666')
+                $.ajax({
+                    type:'post',
+                    url:'/publicapply/bidcoll/addLabel',
+                    data: {
+                    name: name
+                    },
+                    dataType:'json',
+                    success: function(r){
+                    if (r.data) {
+                        $('.tag-input .clear-input').val('')
+                        // 添加标签成功后 绑定标签
+                        if (activeTags.length < 3) {
+                        activeTags.push({
+                            lid: r.data,
+                            lname: name
+                        })
+                        }
+                        getUserTags()
+                    } else {
+                        // toastFn(r.error_msg, 1000)
+                        toastFn('标签已经存在,无需添加', 1000)
+                    }
+                    }
+                })
+            }
+            function checkTagDisabled () {
+                if (activeTags.length >= 3) {
+                    // 禁用标签
+                    $('.tags-list').find('.tags-item:not(.tags-active)').addClass('disabled')
+                } else {
+                    // 解除禁用
+                    $('.tags-list').find('.disabled').removeClass('disabled')
                 }
             }
-            };
-    </script>
-    <!-- 多条广告如下脚本只需引入一次 -->
-    <script type="text/javascript" src="//cpro.baidustatic.com/cpro/ui/cm.js" async="async" defer="defer" >
+        })
     </script>
+    <script type="text/javascript">
+        setTimeout(() => {
+            if(!vm.powerInfo.entniche && !vm.powerInfo.member && vm.powerInfo.vip <= 0) {
+                (window.slotbydup = window.slotbydup || []).push({
+                    id: "u6603900",
+                    container: "_u4m8od8j3s",
+                    async: true
+                });
+                getAjaxAdv()
+                var frames = document.getElementById("iframeu6603900_0");
+                console.log(frames, 'frames')
+    
+                IframeOnClick.track(frames, function() {
+                        jQuery(document).click();
+                });
+            }
+        }, 1000);
+            function getAjaxAdv () {
+                $.ajax({
+                  type: 'POST',
+                  url: '/publicapply/adLeague/exposure',
+                  data: {
+                    client: 'PC',
+                    id: 'ad2',
+                    position: '企业搜索列表页底部'
+                  },
+                  success: function(res) {
+                    console.log(res)
+                  }
+                })
+            }
+            var IframeOnClick = {
+                resolution: 200,
+                iframes: [],
+                interval: null,
+                Iframe: function() {
+                    this.element = arguments[0];
+                    this.cb = arguments[1];
+                    this.hasTracked = false;
+                },
+                track: function(element, cb) {
+                    this.iframes.push(new this.Iframe(element, cb));
+                    var _this = this;
+                        this.interval = setInterval(function() { _this.checkClick(); }, this.resolution);
+                },
+                checkClick: function() {
+                    if (document.activeElement) {
+                        var activeElement = document.activeElement;
+                        for (var i in this.iframes) {
+                            if (activeElement === this.iframes[i].element) { // user is in this Iframe
+                                if (this.iframes[i].hasTracked == false) {
+                                    this.iframes[i].cb.apply(window, []);
+                                    this.iframes[i].hasTracked = true;
+                                    $.ajax({
+                                        type: 'POST',
+                                        url: '/publicapply/adLeague/click',
+                                        data: {
+                                            client: 'PC',
+                                            id: 'ad2',
+                                            position: '企业搜索列表页底部'
+                                        },
+                                        success: function(res) {
+                                            console.log(res)
+                                        }
+                                    })
+                                }
+                            } else {
+                                this.iframes[i].hasTracked = false;
+                            }
+                        }
+                    }
+                }
+                };
+        </script>
+        <!-- 多条广告如下脚本只需引入一次 -->
+        <script type="text/javascript" src="//cpro.baidustatic.com/cpro/ui/cm.js" async="async" defer="defer"></script>
 </body>
 
 </html>

+ 47 - 36
src/web/templates/pc/supsearch.html

@@ -17,7 +17,7 @@
 <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}" />
 <script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}"></script>
 <script src="{{Msg "seo" "cdn"}}/js/jquery.cookie.js"></script>
-<link href="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/theme-chalk/index.css" rel="stylesheet" />
+<link href="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/theme-chalk/index.css" rel="stylesheet" />
 <link href='{{Msg "seo" "cdn"}}/css/collect-user-info.css?v={{Msg "seo" "version"}}' rel="stylesheet">
 <link href='{{Msg "seo" "cdn"}}/css/ele-reset.css?v={{Msg "seo" "version"}}' rel="stylesheet">
 <style type="text/css">
@@ -264,6 +264,31 @@
 </style>
 <script src='{{Msg "seo" "cdn"}}/common-module/selector/js/buyerClass.js?v={{Msg "seo" "version"}}'></script>
 <script>
+// var vipState = {{.T.showVipScreen}}; //是否是超级订阅用户
+var vipState;
+var isOld;
+// 是否有权限
+function isPower () {
+  $.ajax({
+    type:'post',
+    url:'/publicapply/bidcoll/power?t=' + Date.now(),
+    success: function(r){
+      if (r.data) {
+        var entniche = r.data.entniche
+        var member = r.data.member
+        var vip = r.data.vip
+        if (entniche || member || vip > 0) {
+          vipState = true
+        } else {
+          vipState = false
+          adListInspect()
+        }
+        isOld = r.data.isOld
+      }
+    }
+  })
+}
+isPower()
 var areas = {{.T.area}}!=null?{{.T.area}}:"";
 var selectPublishtime = {{.T.publishtime}}?{{.T.publishtime}}:"thisyear";
 var selectTimeslot = {{.T.timeslot}}!=null?{{.T.timeslot}}:"";
@@ -341,35 +366,6 @@ if(secondList.length>0){
 }
 {{end}}
 var dataId = "";
-
-new JyWebScoket.qrToLab();
-haslogin({{.T.logid}},keys);
-// var vipState = {{.T.showVipScreen}}; //是否是超级订阅用户
-var vipState;
-var isOld;
-// 是否有权限
-function isPower () {
-  $.ajax({
-    type:'post',
-    url:'/publicapply/bidcoll/power?t=' + Date.now(),
-    success: function(r){
-      if (r.data) {
-        var entniche = r.data.entniche
-        var member = r.data.member
-        var vip = r.data.vip
-        if (entniche || member || vip > 0) {
-          vipState = true
-        } else {
-          vipState = false
-          adListInspect()
-        }
-        isOld = r.data.isOld
-      }
-    }
-  })
-}
-isPower()
-
 $(function(){
 
 	// console.log("是否有会员筛选权限 showVipScreen", {{.T.showVipScreen}})
@@ -845,6 +841,9 @@ var IframeOnClick = {
   .control-tabBtn a{
     margin-top: 0!important;
   }
+  #pursearch {
+    display: none;
+  }
   .bidbutdir{
     border: none;
     top: 36px;
@@ -1032,7 +1031,7 @@ var IframeOnClick = {
           <!-- <i></i> -->
           企业搜索
 				</a>
-        <a id="entsearch" href="javascript:" left="98" datahref="/jylab/entSearch/index.html">
+        <a id="pursearch" href="javascript:" left="201" datahref="/jylab/purSearch/index.html">
           <!-- <i></i> -->
           采购单位搜索
 				</a>
@@ -1543,7 +1542,7 @@ var IframeOnClick = {
 <script src='{{Msg "seo" "cdn"}}/common-module/public/js/china-map-data.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/selector/js/static-data.js?v={{Msg "seo" "version"}}'></script>
 <script src="https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js"></script>
-<script src="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/index.js"></script>
+<script src="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/index.js"></script>
 <script src='{{Msg "seo" "cdn"}}/js/pc-collect-user-info.js?v={{Msg "seo" "version"}}'></script>
 <script type="text/javascript">
 $(function(){
@@ -1592,8 +1591,20 @@ $(function(){
 	  }
 	  beforeSubmit();
   })
-
-
+  $.ajax({
+    type:'POST',
+    url:'/entnicheNew/buy/whetherbuy',
+    success:function (res) {
+      if (!res.isNew) {
+        $("#pursearch").css('display', 'inline-block')
+      } else {
+        $("#pursearch").css('display', 'none')
+      }
+    }
+  })
+  $("#pursearch").click(function(){
+		window.location.href= $(this).attr("datahref");
+  })
 
   $(".shade_table .more").on('click', toPaydataExport)
 	$(".control-tabBtn>a").hover(function(){
@@ -1606,8 +1617,8 @@ $(function(){
 		$(".control-tabBtn>.bidbutdir").css("left",$(".control-tabBtn>a:first").attr("left"));
 	});
 	new TableHeadFixed("",true,true,"supsearch");
-	//new JyWebScoket.qrToLab();
-	//haslogin({{.T.logid}},keys);
+	new JyWebScoket.qrToLab();
+	haslogin({{.T.logid}},keys);
 	$(".j-nav .j-nav-link:eq(2)").addClass("active");
   $('#q-mark').on({
     mouseenter: function(){

部分文件因文件數量過多而無法顯示