ソースを参照

feat: 采购单位、中标企业画像增加留资埋点

yangfeng 4 年 前
コミット
ee95a6a546

+ 227 - 0
src/assets/js/selector.js

@@ -248,3 +248,230 @@ export const industryListMapExp = {
     '相关服务'
   ]
 }
+
+// 行业
+export const industryJson = [
+  {
+    name: '互联网/IT/电子/通信',
+    children: [
+      { name: '电子商务' },
+      { name: '企业服务' },
+      { name: '人工智能' },
+      { name: '在线教育' },
+      { name: '在线医疗' },
+      { name: '新媒体' },
+      { name: '物联网' },
+      { name: '新零售' },
+      { name: '区跨链' },
+      { name: '互联网' },
+      { name: '游戏' },
+      { name: '云计算/大数据' },
+      { name: '网络/信息安全' },
+      { name: '在线生活服务(O2O)' },
+      { name: '在线音乐/视频/阅读' },
+      { name: 'IT服务' },
+      { name: '计算机软件' },
+      { name: '计算机硬件' },
+      { name: '通信/网络设备' },
+      { name: '运营商/增值服务' },
+      { name: '电子/半导体/集成电路' }
+    ]
+  },
+  {
+    name: '房地产/建筑',
+    children: [
+      { name: '房地产开发与经营' },
+      { name: '土地与公共设施管理' },
+      { name: '公共建筑装饰装修' },
+      { name: '房地产中介' },
+      { name: '物业服务' },
+      { name: '建筑设计' },
+      { name: '工程施工' },
+      { name: '建筑设备安装' },
+      { name: '装饰装修' },
+      { name: '建材' },
+      { name: '建筑工程检测' }
+    ]
+  },
+  {
+    name: '金融业',
+    children: [
+      { name: '银行' },
+      { name: '保险业' },
+      { name: '基金' },
+      { name: '信托' },
+      { name: '证券/期货' },
+      { name: '投资/融资' },
+      { name: '汽车金融服务' },
+      { name: '互联网金融/小额贷款' },
+      { name: '租赁/拍卖/典当/担保' }
+    ]
+  },
+  {
+    name: '教育培训/科研',
+    children: [
+      { name: '培训/课外教育/教育辅助' },
+      { name: '学校教育' },
+      { name: '学术/科研' },
+      { name: '科学技术推广服务业' }
+    ]
+  },
+  {
+    name: '广告/传媒/文化/体育',
+    children: [
+      { name: '广告业' },
+      { name: '广播/电视/电影/录音制作' },
+      { name: '会议/展览服务' },
+      { name: '文化艺术/娱乐' },
+      { name: '体育' },
+      { name: '新闻/出版' }
+    ]
+  },
+  {
+    name: '制药/医疗',
+    children: [
+      { name: '医院' },
+      { name: '卫生服务' },
+      { name: '生物工程' },
+      { name: '医药制造' },
+      { name: '医疗设备/器械' }
+    ]
+  },
+  {
+    name: '批发/零售/贸易',
+    children: [
+      { name: '快速消费品' },
+      { name: '耐用消费品' },
+      { name: '零售/批发' },
+      { name: '食品/饮料' },
+      { name: '烟酒' },
+      { name: '日化' },
+      { name: '服装/纺织/皮革' },
+      { name: '玩具/礼品' },
+      { name: '珠宝/首饰' },
+      { name: '办公用品设备' },
+      { name: '工艺品/收藏品' },
+      { name: '家具/家居/家电' },
+      { name: '贸易/进出口代理' },
+    ]
+  },
+  {
+    name: '制造业',
+    children: [
+      { name: '船舶/航空/航天/火车制造' },
+      { name: '电气机械/器材制造' },
+      { name: '电子设备制造' },
+      { name: '钢铁和有色金属冶炼及加工' },
+      { name: '专用设备制造' },
+      { name: '金属制品业' },
+      { name: '通用设备制造' },
+      { name: '仪器仪表制造' },
+      { name: '非金属矿物制品业' },
+      { name: '化学纤维制造业' },
+      { name: '化学原料/化学制品' },
+      { name: '日化产品制造' },
+      { name: '纺织业/服饰产品加工制造' },
+      { name: '农副产品加工制造' },
+      { name: '燃料资源加工制造' },
+      { name: '橡胶和塑料制品' },
+      { name: '印刷/包装/造纸' },
+      { name: '家具制造' },
+      { name: '文体/办公设备制造' },
+      { name: '工业自动化' }
+    ]
+  },
+  {
+    name: '汽车',
+    children: [
+      { name: '汽车销售与服务' },
+      { name: '汽车制造' },
+      { name: '汽车零部件' }
+    ]
+  },
+  {
+    name: '交通运输/仓储/物流',
+    children: [
+      { name: '火车站/港口/汽车站/路政' },
+      { name: '民航/铁路/公路/水路客运' },
+      { name: '货运/物流仓储' },
+      { name: '邮政/快递' }
+    ]
+  },
+  {
+    name: '专业服务',
+    children: [
+      { name: '法律服务' },
+      { name: '咨询服务' },
+      { name: '翻译服务' },
+      { name: '人力资源服务' },
+      { name: '财务/审计/税务' },
+      { name: '工程技术与设计服务' },
+      { name: '检测/认证' },
+      { name: '景区/商业/市场等综合管理' },
+      { name: '商业代理服务' },
+      { name: '专利/商标/知识产权' },
+      { name: '租赁服务' },
+      { name: '专业技术服务' }
+    ]
+  },
+  {
+    name: '生活服务',
+    children: [
+      { name: '餐饮业' },
+      { name: '酒店/民宿' },
+      { name: '旅游业' },
+      { name: '婚庆/摄影' },
+      { name: '美容/保健/养生' },
+      { name: '居民服务' }
+    ]
+  },
+  {
+    name: '能源/环保/矿产',
+    children: [
+      { name: '石油/石化' },
+      { name: '化工' },
+      { name: '电力/水利/热力/燃气' },
+      { name: '新能源' },
+      { name: '环保' },
+      { name: '矿产/采掘' }
+    ]
+  },
+  {
+    name: '政府/非盈利机构',
+    children: [
+      { name: '国家机构' },
+      { name: '社团/组织/社会保障' },
+      { name: '养老/孤儿/看护等社会服务' }
+    ]
+  },
+  {
+    name: '农/林/牧/渔',
+    children: [
+      { name: '农/林/牧/渔' }
+    ]
+  }
+]
+
+// 职位
+export const jobJson = [
+  '总裁/总经理/总监',
+  '市场经理/主管',
+  '销售经理/主管',
+  '渠道经理/主管',
+  '投标经理/专员',
+  '采购经理/专员',
+  '数据分析师',
+  '招标师',
+  '项目经理',
+  '其他'
+]
+
+// 公司规模
+export const companyScaleJson = [
+  '0-19人',
+  '20-99人',
+  '100-499人',
+  '500-999人',
+  '1000-9999人',
+  '100000人以上'
+]

+ 5 - 0
src/assets/style/reset-ele.scss

@@ -52,3 +52,8 @@
     }
   }
 }
+.el-popper {
+  li{
+    float: none;
+  }
+}

+ 838 - 0
src/components/collect-info/CollectInfo.vue

@@ -0,0 +1,838 @@
+<template>
+  <div class="collect-info">
+    <div class="user-data-dialog" v-if="showForm">
+      <div class="mask"></div>
+      <div class="dialog-container">
+        <div class="dialog-header">{{dialogTitle}}</div>
+        <div class="dialog-content">
+          <el-form class="user-form" :model="form" :rules="rules" ref="ruleForm">
+            <!-- 基本信息 -->
+            <div class="basic clearfix">
+              <div class="form-title">基本信息</div>
+              <div class="form-main clearfix">
+                <div class="short-control fl">
+                  <el-form-item label="姓名 :" prop="name">
+                    <el-input v-model.trim="form.name" class="data-short-input item-input" placeholder="请输入姓名"
+                      @focus="nameFocus" required>
+                    </el-input>
+                  </el-form-item>
+                </div>
+                <div class="short-control fr">
+                  <el-form-item label="手机号 :" prop="phone">
+                    <el-input v-model.trim="form.phone" maxlength="11" @input="inputPhone"
+                      class="data-short-input item-input" placeholder="请输入手机号" @focus="phoneFocus"></el-input>
+                  </el-form-item>
+                </div>
+                <div class="short-control fl">
+                  <el-form-item label="邮箱 :" prop="mail">
+                    <el-input v-model.trim="form.mail" class="data-short-input item-input" placeholder="请输入邮箱"
+                      @focus="mailFocus"></el-input>
+                  </el-form-item>
+                </div>
+                <!-- <div class="short-control fr" style="display:none;">
+                  <el-form-item label="地区 :">
+                    <el-cascader v-model="form.region" class="data-short-input item-input" :options="regionData"
+                      placeholder="请选择省份城市" clearable></el-cascader>
+                  </el-form-item>
+                </div> -->
+                <div class="short-control fr">
+                  <el-form-item label="行业 :">
+                    <el-cascader popper-class="custom-cascader" v-model="form.industry" class="data-short-input item-input" :options="industryData"
+                      placeholder="请选择所属行业" :show-all-levels="false" clearable></el-cascader>
+                  </el-form-item>
+                </div>
+                <div class="short-control fr" style="display:none;">
+                  <el-form-item label="受雇类型 :">
+                    <el-select v-model="form.mold" class="data-short-input item-input">
+                      <el-option v-for="item in moldData" :key="item.value" :label="item.label" :value="item.value">
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+                </div>
+              </div>
+            </div>
+            <div class="company clearfix">
+              <div class="form-title">公司信息</div>
+              <div class="form-main">
+                <div class="long-control" style="position: relative;">
+                  <el-form-item label="公司名称 :" prop="companyName">
+                    <el-input v-model.trim="form.companyName" class="data-long-input item-input company-name"
+                      @focus="companyFocus" @input="searchCompany" placeholder="请输入公司名称">
+                    </el-input>
+                  </el-form-item>
+                  <div class="company-result" v-if="showSearchResult">
+                    <div class="company-list" v-for="item in companyList" :key="item" @click="selectCompany(item)"
+                      v-html="item"></div>
+                  </div>
+                </div>
+                <div class="long-control">
+                  <el-form-item label="公司类型 :" class="company-type">
+                    <el-checkbox-group v-model="form.companyType">
+                      <el-checkbox label="投标企业"></el-checkbox>
+                      <el-checkbox label="招标采购单位"></el-checkbox>
+                      <el-checkbox label="厂商"></el-checkbox>
+                      <el-checkbox label="招标代理机构"></el-checkbox>
+                      <el-checkbox label="经销商"></el-checkbox>
+                      <el-checkbox label="服务提供商"></el-checkbox>
+                      <el-checkbox label="其他"></el-checkbox>
+                    </el-checkbox-group>
+                  </el-form-item>
+                </div>
+                <div class="long-control">
+                  <el-form-item label="职位 :" prop="job">
+                    <el-select popper-class="custom-select" v-model="form.job" placeholder="请选择职位" class="data-short-input item-input job-input" clearable>
+                      <el-option v-for="item in jobData" :key="item.value" :label="item.label" :value="item.value">
+                      </el-option>
+                    </el-select>
+                    <el-input v-if="showOtherJob" v-model.trim="form.otherJob" class="data-short-input item-input job-name-iput"
+                      @focus="otherFocus" placeholder="请输入职位名称">
+                    </el-input>
+                  </el-form-item>
+                </div>
+                <div class="long-control" style="display: none;">
+                  <el-form-item label="公司规模 :">
+                    <el-select v-model="form.scale" placeholder="请选择公司规模" class="data-short-input item-input" clearable>
+                      <el-option v-for="item in scaleData" :key="item.value" :label="item.label" :value="item.value">
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+                </div>
+                <div class="long-control">
+                  <el-form-item label="业务范围 :">
+                    <el-input type="textarea" autosize resize="none" v-model="form.business" placeholder="请输入业务范围,让合作伙伴充分了解公司业务内容"></el-input>
+                  </el-form-item>
+                </div>
+                <div class="long-control">
+                  <el-form-item label="合作需求 :">
+                    <el-input type="textarea" autosize resize="none" v-model="form.need" placeholder="请输入合作需求,从而创造并匹配更多合作交流机会"></el-input>
+                  </el-form-item>
+                </div>
+              </div>
+            </div>
+            <div class="agree-service">
+              <el-checkbox v-model="form.agreeChecked">&nbsp;我同意剑鱼标讯将业务范围及合作需求提供给潜在合作伙伴搜索、查看</el-checkbox>
+            </div>
+            <div class="dialog-footer">
+              <el-button class="cancel-btn" @click="cancelForm">暂不提供</el-button>
+              <el-button class="submit-btn" @click="submitForm('ruleForm')">提交</el-button>
+            </div>
+          </el-form>
+        </div>
+      </div>
+    </div>
+    <div id="success-dialog" style="display: none;" v-show="showSuccess">
+      <div class="mask"></div>
+      <div class="success-dialog-container">
+        <div class="success-title">提交成功</div>
+        <div class="success-content">我们的客户经理会在24小时内尽快与您联系。</div>
+        <div class="success-footer">
+          <button type="button" class="custom-btn go-know" @click="showSuccess = false">我知道了</button>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { industryJson, jobJson, companyScaleJson } from '@/assets/js/selector.js'
+import { Form, FormItem, Button, CheckboxGroup, Checkbox, Select, Input, Option, Cascader } from 'element-ui'
+import { mapState } from 'vuex'
+import { debounce } from '@/utils/'
+export default {
+  name: 'collect-info',
+  components: {
+    [Form.name]: Form,
+    [FormItem.name]: FormItem,
+    [Button.name]: Button,
+    [CheckboxGroup.name]: CheckboxGroup,
+    [Checkbox.name]: Checkbox,
+    [Select.name]: Select,
+    [Input.name]: Input,
+    [Option.name]: Option,
+    [Cascader.name]: Cascader
+  },
+  data () {
+    var validName = (rule, value, callback) => {
+      if (value === '') {
+        return callback(new Error('姓名为必填项'))
+      } else {
+        if (value.length < 2) {
+          return callback(new Error('姓名填写不正确'))
+        }
+        callback()
+      }
+    }
+    var validPhone = (rule, value, callback) => {
+      var status = /^1[3456789]\d{9}$/.test(value)
+      if (value === '') {
+        return callback(new Error('手机号为必填项'))
+      } else if (!status) {
+        return callback(new Error('手机号填写不正确'))
+      } else {
+        callback()
+      }
+    }
+    var validEmail = (rule, value, callback) => {
+      var status = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(value)
+      if (value === '') {
+        return callback(new Error('邮箱为必填项'))
+      } else {
+        if (!status) {
+          return callback(new Error('邮箱填写不正确'))
+        } else {
+          callback()
+        }
+      }
+    }
+    var validCompany = (rule, value, callback) => {
+      if (value === '') {
+        return callback(new Error('公司名称为必填项'))
+      } else {
+        if (value.length < 2) {
+          return callback(new Error('公司名称至少输入2个字'))
+        } else {
+          callback()
+        }
+      }
+    }
+    var validJob = (rule, value, callback) => {
+      if (value === '') {
+        return callback(new Error('职位不能为空'))
+      } else {
+        if (value === '其他' && this.form.otherJob === '') {
+          return callback(new Error('请输入职位'))
+        } else {
+          callback()
+        }
+      }
+    }
+    return {
+      dialogTitle: '请完善个人信息,立刻获得全部功能的产品试用',
+      industryData: [], // 行业数据
+      jobData: [], // 职位数据
+      scaleData: [], // 公司规模数据
+      moldData: [{ // 公司类型数据
+        label: '公司',
+        value: '公司'
+      }, {
+        label: '个体经营者',
+        value: '个体经营者'
+      }, {
+        label: '其他',
+        value: '其他'
+      }],
+      form: {
+        name: '', // 姓名
+        phone: '', // 手机号
+        mail: '', // 邮箱
+        region: [], // 地区值
+        industry: [], // 行业值
+        mold: '公司', // 受雇类型值
+        companyName: '', // 公司名称
+        companyType: [], // 公司类型值
+        job: '', // 职位值
+        otherJob: '', // 自定义职位
+        scale: '', // 公司规模
+        business: '', // 业务范围
+        need: '', // 合作需求
+        agreeChecked: true
+      },
+      rules: {
+        name: [{
+          required: true,
+          validator: validName,
+          trigger: 'blur'
+        }],
+        phone: [{
+          required: true,
+          validator: validPhone,
+          trigger: 'blur'
+        }],
+        mail: [{
+          required: true,
+          validator: validEmail,
+          trigger: 'blur'
+        }],
+        companyName: [{
+          required: true,
+          validator: validCompany,
+          trigger: 'blur'
+        }],
+        job: [{
+          required: true,
+          validator: validJob
+        }]
+      },
+      showSearchResult: false,
+      companyList: [],
+      showForm: false, // 显示表单填写弹框
+      showSuccess: false, // 显示提交成功弹框
+      isForce: false, // 是否强制
+      source: ''
+    }
+  },
+  computed: {
+    ...mapState({
+      info: state => state.user.info
+    }),
+    showOtherJob: function () {
+      return this.form.job === '其他'
+    },
+    showCompany: function () {
+      return this.form.mold === '公司'
+    }
+  },
+  created () {
+    industryJson.forEach((item) => {
+      item.label = item.name
+      item.value = item.name
+      item.children = item.children.map((v) => {
+        return {
+          value: v.name,
+          label: v.name
+        }
+      })
+    })
+    this.industryData = industryJson
+    this.jobData = jobJson.map((item) => {
+      return {
+        value: item,
+        label: item
+      }
+    })
+    this.companyScaleData = companyScaleJson.map((item) => {
+      return {
+        value: item,
+        label: item
+      }
+    })
+  },
+  mounted () {},
+  methods: {
+    nameFocus () {
+      this.$refs.ruleForm.clearValidate(['name'])
+    },
+    phoneFocus () {
+      this.$refs.ruleForm.clearValidate(['phone'])
+    },
+    mailFocus () {
+      this.$refs.ruleForm.clearValidate(['mail'])
+    },
+    // 公司名称获取焦点时
+    companyFocus () {
+      this.$refs.ruleForm.clearValidate(['companyName'])
+      // this.getResult(this.form.companyName)
+    },
+    otherFocus () {
+      this.$refs.ruleForm.clearValidate(['job', 'otherJob'])
+    },
+    // 是否留资
+    isNeedSubmit (source, callback) {
+      console.log(this.source)
+      var _this = this
+      $.ajax({
+        type: 'POST',
+        url: '/salesLeads/retainedCapital',
+        data: {
+          source: source
+        },
+        success: function (res) {
+          if (res.data) {
+            if (res.data.retainedCapital) {
+              _this.showForm = true
+              _this.getOldInfo()
+            } else {
+              callback && callback()
+            }
+            _this.isForce = res.data.fource
+          }
+        }
+      })
+    },
+    // 表单提交事件
+    submitForm (formName) {
+      var _this = this
+      this.$refs[formName].validate(function (valid) {
+        if (valid) {
+          _this.formAjax(_this.source)
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    },
+    // 表单提交请求
+    formAjax (source) {
+      var params = {
+        source: source,
+        name: this.form.name,
+        phone: this.form.phone,
+        mail: this.form.mail,
+        industry: this.form.industry.join('_'),
+        company: this.form.companyName, // 公司名称
+        companyType: this.form.companyType.join(','),
+        position: this.form.job === '其他' ? this.form.otherJob : this.form.job,
+        workScope: this.form.business,
+        partnerNeeds: this.form.need,
+        agree: this.form.agreeChecked
+      }
+      var _this = this
+      $.ajax({
+        type: 'POST',
+        url: '/salesLeads/collectInfo',
+        contentType: 'application/json;charset=utf-8',
+        data: JSON.stringify(params),
+        success: function (res) {
+          if (res.data) {
+            _this.showForm = false
+            _this.showSuccess = true
+          }
+        }
+      })
+    },
+    // 手机号输入框input事件
+    inputPhone (val) {
+      this.form.phone = val.replace(/[^\d]/g, '')
+    },
+    // 查询表单回显信息
+    getOldInfo () {
+      var _this = this
+      $.ajax({
+        type: 'POST',
+        url: '/salesLeads/echoInfo?t=' + Date.now(),
+        success: function (res) {
+          if (res.data) {
+            _this.form.name = res.data.name ? res.data.name : ''
+            _this.form.phone = res.data.phone ? res.data.phone : ''
+            _this.form.mail = res.data.mail ? res.data.mail : ''
+            if (res.data.province && res.data.city) {
+              _this.form.region = [res.data.province, res.data.city]
+            } else if (res.data.province && !res.data.city) {
+              _this.form.region = [res.data.province]
+            } else {
+              _this.form.region = []
+            }
+            _this.form.industry = res.data.industry ? res.data.industry.split('_') : []
+            _this.form.mold = res.data.hireType ? res.data.hireType : '公司'
+            _this.form.companyName = res.data.company ? res.data.company : ''
+            _this.form.companyType = res.data.companyType ? res.data.companyType.split(',') : []
+            if (res.data.position) {
+              if (jobJson.indexOf(res.data.position) === -1) {
+                _this.form.job = '其他'
+                _this.form.otherJob = res.data.position
+              } else {
+                _this.form.job = res.data.position
+              }
+            } else {
+              _this.form.job = ''
+            }
+            _this.form.scale = res.data.company_size ? res.data.company_size : ''
+            _this.form.business = res.data.workScope ? res.data.workScope : ''
+            _this.form.need = res.data.partnerNeeds ? res.data.partnerNeeds : ''
+            _this.form.agreeChecked = res.data.agree === undefined ? true : res.data.agree
+          }
+        }
+      })
+    },
+    // 企业名称联想
+    getResult (name) {
+      // 名称为空或长度小于2不发请求
+      if (!name || name.length < 2) return
+      var _this = this
+      $.ajax({
+        type: 'POST',
+        url: '/jypay/user/company/association',
+        data: {
+          name: name
+        },
+        heads: {
+          'content-type': 'application/x-www-form-urlencoded'
+        },
+        success: function (res) {
+          if (res.data && res.data.length > 0) {
+            var result = []
+            res.data.map(function (item) {
+              item = _this.brightKeyword(item)
+              result.push(item)
+              return result
+            })
+            _this.companyList = result
+            _this.showSearchResult = true
+          }
+        }
+      })
+    },
+    searchCompany: debounce(function (val) {
+      if (val === '') {
+        this.showSearchResult = false
+      }
+      this.getResult(val)
+    }, 400),
+    // 选择联想出来的公司名称
+    selectCompany (item) {
+      this.form.companyName = item.replace(/<.*?>/ig, '')
+      this.showSearchResult = false
+    },
+    // 关键词高亮
+    brightKeyword (val) {
+      var name = this.form.companyName
+      if (val.indexOf(name) !== -1) {
+        return val.replace(name, `<font style='color:#2ABED1;'>${name}</font>`)
+      } else {
+        return val
+      }
+    },
+    // 暂不提供
+    cancelForm () {
+      this.showForm = false
+      this.form.name = ''
+      this.form.phone = ''
+      this.form.mail = ''
+      this.form.industry = []
+      this.form.companyName = ''
+      this.form.companyType = []
+      this.form.job = ''
+      this.form.otherJob = ''
+      this.form.scale = ''
+      this.form.business = ''
+      this.form.need = ''
+    }
+  }
+}
+</script>
+<style lang="scss">
+/* element-ui reset */
+.custom-cascader{
+  margin-top: 0px!important;
+  border: 1px solid #2CB7CA;
+  .el-cascader-panel{
+    height: 300px;
+  }
+  .popper__arrow{
+    display: none;
+  }
+  .el-cascader__dropdown{
+    border: 1px solid #2CB7CA;
+  }
+  .el-cascader-panel {
+    min-width: 240px;
+  }
+  .el-cascader {
+    line-height: 36px;
+    border: 0;
+  }
+  .el-cascader-menu {
+    min-width: 0;
+  }
+  .el-cascader-node {
+    padding: 0 28px 0 6px;
+  }
+  .el-cascader-node__prefix {
+    display: none;
+  }
+  .el-cascader-menu:last-child {
+    flex: 1;
+  }
+  .el-cascader__dropdown {
+    border-color: #2CB7CA;
+  }
+}
+.user-form{
+  .el-checkbox-group{
+    white-space: nowrap;
+  }
+  .company-type>.el-form-item__label,
+  .company-type>.el-form-item__content {
+    line-height: 22px;
+  }
+  .el-form-item {
+    margin-bottom: 12px;
+  }
+  .el-form-item__error {
+    padding: 0px 0 0 90px;
+    top: 99%;
+  }
+  .el-form-item__label {
+    width: 80px;
+    padding: 0;
+    margin-right: 8px;
+    color: #686868;
+    margin-bottom: 0;
+    font-weight: normal;
+  }
+  .el-input__inner {
+    height: 36px;
+    line-height: 36px;
+  }
+  .el-checkbox__input.is-focus {
+    border-color: #2CB7CA;
+  }
+  .el-checkbox {
+    margin-right: 12px;
+  }
+  .el-checkbox__label {
+    padding-left: 3px;
+    color: #1D1D1D;
+  }
+  .el-checkbox__input.is-checked+.el-checkbox__label {
+    color: #1D1D1D;
+  }
+  .el-checkbox__input.is-checked .el-checkbox__inner,
+  .el-checkbox__input.is-indeterminate .el-checkbox__inner {
+    background-color: #2CB7CA;
+    border-color: #2CB7CA;
+  }
+  .el-checkbox__inner:hover {
+    border-color: #DCDFE6;
+  }
+  .el-cascader-node.in-active-path,
+  .el-cascader-node.is-active,
+  .el-cascader-node.is-selectable.in-checked-path,
+  .el-select-dropdown__item.selected {
+    color: #2CB7CA;
+  }
+  .cancel-btn:focus,
+  .cancel-btn:hover {
+    background: #FFF;
+    border: 1px solid #DCDFE6;
+    color: #606266;
+  }
+  .el-textarea{
+    width: calc(100% - 90px);
+  }
+  .el-textarea__inner {
+    min-height: 36px;
+  }
+  .el-input.is-active .el-input__inner,
+  .el-input__inner:focus {
+    border-color: #2CB7CA;
+  }
+  .el-select .el-input.is-focus .el-input__inner,
+  .el-select .el-input__inner:focus {
+    border-color: #2CB7CA;
+  }
+  .el-cascader .el-input .el-input__inner:focus,
+  .el-cascader .el-input.is-focus .el-input__inner {
+    border-color: #2CB7CA;
+  }
+
+  li.el-cascader-node,
+  .el-select-dropdown__item{
+    float: none;
+  }
+  .job-input{
+    width: calc(50% - 90px)!important;
+  }
+  .job-name-iput{
+    width: calc(50% - 90px)!important;
+    margin-left: 12px;
+  }
+}
+.custom-select{
+  margin-top: 0!important;
+  border: 1px solid #2CB7CA;
+  .el-select-dropdown__wrap{
+    max-height: 220px;
+  }
+  .popper__arrow{
+    display: none;
+  }
+  .el-popper[x-placement^=bottom] {
+    margin-top: 0;
+  }
+  .el-popper[x-placement^=bottom] .popper__arrow {
+    display: none;
+  }
+}
+.collect-info{
+  .mask {
+    position: fixed;
+    width: 100%;
+    height: 100%;
+    right: 0;
+    left: 0;
+    top: 0;
+    bottom: 0;
+    background: rgba(0, 0, 0, .5);
+    z-index: 1031;
+  }
+  /* 滚动条样式 */
+  .user-data-dialog ::-webkit-scrollbar {
+    /*滚动条整体样式*/
+    width: 6px;
+    height: 1px;
+  }
+  .user-data-dialog ::-webkit-scrollbar-thumb {
+    /*滚动条里面小方块*/
+    border-radius: 10px;
+    background: #e0e0e0;
+  }
+  .user-data-dialog ::-webkit-scrollbar-track {
+    /*滚动条里面轨道*/
+    box-shadow: inset 0 0 5px #fff;
+    border-radius: 10px;
+    background: transparent;
+  }
+  .dialog-container {
+    position: fixed;
+    left: 50%;
+    top: 50%;
+    width: 752px;
+    max-height: 680px;
+    margin: 0 auto;
+    padding: 32px;
+    background: #fff;
+    border-radius: 8px;
+    transform: translate(-50%,-50%);
+    z-index: 2000;
+    box-sizing: border-box;
+    overflow-y: auto;
+  }
+  .dialog-header {
+    color: #1D1D1D;
+    font-size: 18px;
+    line-height: 28px;
+    text-align: center;
+  }
+  .dialog-content {
+    margin-top: 20px;
+  }
+  .form-title {
+    font-size: 14px;
+    line-height: 22px;
+    color: #2CB7CA;
+  }
+  .form-main {
+    margin: 10px 0 14px;
+  }
+  .short-control {
+    width: calc(50% - 16px);
+  }
+  .long-control {
+    width: 100%;
+  }
+  .item-input {
+    width: auto;
+  }
+  .company-result {
+    position: absolute;
+    width: calc(600px - 16px);
+    top: 38px;
+    left: 88px;
+    height: auto;
+    background-color: #fff;
+    border: 1px solid #2CB7CA;
+    z-index: 100;
+    border-radius: 4px;
+  }
+  .company-list {
+    padding: 0 16px;
+    height: 30px;
+    line-height: 30px;
+    font-size: 14px;
+    color: #1D1D1D;
+    cursor: pointer;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    white-space: nowrap;
+  }
+  .company-list:hover {
+    background: #ECECEC;
+  }
+  .data-short-input {
+    width: calc(100% - 90px);
+    // height: 36px;
+    box-sizing: border-box;
+    border-radius: 4px;
+  }
+  .data-long-input {
+    width: calc(100% - 90px);
+    // height: 36px;
+    box-sizing: border-box;
+    border-radius: 4px;
+  }
+  .agree-service {
+    text-align: center;
+  }
+  .agree-service .el-checkbox__label,
+  .agree-service .el-checkbox__input.is-checked+.el-checkbox__label {
+    color: #686868;
+  }
+  .dialog-footer {
+    padding-top: 20px;
+    text-align: center;
+  }
+  .cancel-btn {
+    width: 132px;
+    height: 36px;
+    line-height: 36px;
+    padding: 0;
+    border-radius: 6px;
+  }
+  .submit-btn {
+    width: 132px;
+    height: 36px;
+    padding: 0;
+    color: #fff;
+    line-height: 36px;
+    background: #2CB7CA;
+    border-radius: 6px;
+    border: 1px solid #2CB7CA;
+  }
+  .submit-btn:hover {
+    color: #fff;
+    border-color: #2CB7CA;
+    background: #2CB7CA;
+  }
+  .success-dialog-container {
+    position: fixed;
+    width: 380px;
+    top: 50%;
+    left: 50%;
+    padding: 20px;
+    transform: translateX(-50%) translateY(-50%);
+    background: #ffffff;
+    border-radius: 8px;
+    transition: all 2s linear;
+    z-index: 1038;
+  }
+  .success-title {
+    padding: 12px 0 20px;
+    color: #1d1d1d;
+    line-height: 28px;
+    font-size: 18px;
+    text-align: center;
+  }
+  .success-content {
+    text-align: center;
+    color: #686868;
+    line-height: 22px;
+    font-size: 14px;
+  }
+  .success-footer {
+    padding: 32px 0 12px;
+    text-align: center;
+  }
+  .custom-btn {
+    display: inline-block;
+    width: 132px;
+    height: 36px;
+    line-height: 36px;
+    background: #2cb7ca;
+    border-radius: 6px;
+    text-align: center;
+    color: #fff;
+    font-size: 16px;
+    cursor: pointer;
+    border: 0;
+  }
+  .custom-btn:disabled {
+    opacity: 0.5;
+    cursor: not-allowed;
+  }
+  .custom-cascader{
+    li{
+      float: none;
+    }
+  }
+}
+</style>

+ 15 - 10
src/components/mask-card/MaskCard.vue

@@ -1,15 +1,20 @@
 <template>
   <div class="upgrade-mask-group">
-    <h6>{{k}}</h6>
-    <img class="upgrade-mask-bg" :src="item.bg" :alt="k">
-    <div class="flex-c-c center upgrade-module-group">
-      <div class="flex-c-c center top-tip-card">
-        <div class="top-tip-title">{{item.title}}</div>
-        <div class="top-tip-title">{{item.subtitle}}</div>
-        <button  @click.stop="$emit('click')">{{item.button ? item.button : '去升级'}}</button>
-      </div>
-      <div class="module-img-card">
-        <img class="upgrade-module-bg" :src="item.img" :alt="k">
+    <div v-if="k === '历史项目联系方式'" style="padding: 32px 40px 0px;">
+      <slot></slot>
+    </div>
+    <div v-else>
+      <h6>{{k}}</h6>
+      <img class="upgrade-mask-bg" :src="item.bg" :alt="k">
+      <div class="flex-c-c center upgrade-module-group">
+        <div class="flex-c-c center top-tip-card">
+          <div class="top-tip-title">{{item.title}}</div>
+          <div class="top-tip-title">{{item.subtitle}}</div>
+          <button  @click.stop="$emit('click')">{{item.button ? item.button : '去升级'}}</button>
+        </div>
+        <div class="module-img-card">
+          <img class="upgrade-module-bg" :src="item.img" :alt="k">
+        </div>
       </div>
     </div>
   </div>

+ 28 - 13
src/views/portrayal/EntSearchPortrayal.vue

@@ -25,17 +25,21 @@
             </div>
             <ProActive ref="myList" @onPageChange="getProActivcList" v-if="showProActive && project.proActiveList && project.proActiveList.length > 0" title="项目动态" :projectData="project"></ProActive>
             <div>
-              <ContactList v-if="showContact" name="winner" key="contact"></ContactList>
-              <MaskCard style="margin:0 -40px;" v-else @click="openBigPage" k="历史项目联系方式" :item="entContactTip"></MaskCard>
+              <ContactList name="winner" key="contact"></ContactList>
+              <!-- <ContactList v-if="showContact" name="winner" key="contact"></ContactList>
+              <MaskCard style="margin:0 -40px;" v-else @click="openBigPage" k="历史项目联系方式" :item="entContactTip"></MaskCard> -->
             </div>
             <ent-chart v-if="showConf4" :active="activeName" v-on:entInfo="getEntInfo"></ent-chart>
           </div>
           <div class="ent-vip-upgrade-group" v-else key="tab2">
             <img src="@/assets/images/vip/bg/mask/01.png">
-            <MaskCard @click="openVipPage(item)" v-for="(item, k) in getVipUpgradeMap" :key="k + item.button + item.title" :k="k" :item="item"></MaskCard>
+            <MaskCard @click="openVipPage(item)" v-for="(item, k) in getVipUpgradeMap" :key="k + item.button + item.title" :k="k" :item="item">
+              <ContactList name="winner" key="contact"></ContactList>
+            </MaskCard>
           </div>
         </el-tab-pane>
       </el-tabs>
+      <CollectInfo ref="collectRef"></CollectInfo>
     </div>
   </Layout>
 </template>
@@ -51,6 +55,7 @@ import { mapState } from 'vuex'
 import { Tabs, TabPane } from 'element-ui'
 import { moneyUnit, dateFormatter } from '@/utils'
 import { getEntSearchPower, getSvipNewMsg, getUsage } from '@/api/modules'
+import CollectInfo from '@/components/collect-info/CollectInfo.vue'
 
 function getImgForVipUpgrade (name, bg = false, suffix = '.png') {
   return require('@/assets/images/vip/' + (bg ? 'bg/mask/' : '') + name + suffix)
@@ -66,6 +71,7 @@ export default {
     Layout,
     ProActive,
     MaskCard,
+    CollectInfo,
     ContactList
   },
   data () {
@@ -97,14 +103,14 @@ export default {
       EntHistoryTip: {
         title: '开通大会员',
         subtitle: '快速查询全国企业工商信息、法人信息、联系方式,全面掌控企业动态',
-        button: '去开通',
+        button: '免费体验',
         img: getImgForVipUpgrade('8'),
         bg: getImgForVipUpgrade('09', true)
       },
       entContactTip: {
         title: '开通大会员',
         subtitle: '获取企业历史项目联系人信息,直接与甲方或渠道商项目负责人对接!',
-        button: '去开通',
+        button: '免费体验',
         img: getImgForVipUpgrade('010'),
         bg: getImgForVipUpgrade('10', true)
       },
@@ -118,7 +124,7 @@ export default {
         历史项目联系方式: {
           title: '开通大会员',
           subtitle: '获取企业历史项目联系人信息,直接与甲方或渠道商项目负责人对接!',
-          button: '去开通',
+          button: '免费体验',
           img: getImgForVipUpgrade('010'),
           bg: getImgForVipUpgrade('10', true)
         },
@@ -175,7 +181,7 @@ export default {
           let tempButton = '去升级'
           if (!tempPowerInfo.member && Number(tempPowerInfo.vip) === 0) {
             tempTitle = '开通超级订阅'
-            tempButton = '去开通'
+            tempButton = '免费体验'
           } else {
             if (!tempPagePowerInfo.visited) {
               if (tempPagePowerInfo.total <= tempPagePowerInfo.usage) {
@@ -281,7 +287,7 @@ export default {
       const flag = item.title.indexOf('大会员') > -1
       try {
         // eslint-disable-next-line no-undef
-        _hmt.push(['_trackEvent', '超级订阅-pc', 'click', flag ? '历史项目联系方式-去开通' : '企业画像中标信息-去升级'])
+        _hmt.push(['_trackEvent', '超级订阅-pc', 'click', flag ? '历史项目联系方式-免费体验' : '企业画像中标信息-去升级'])
       } catch (e) {
         console.log('未初始化百度统计')
       }
@@ -293,20 +299,29 @@ export default {
         }
         return
       }
-      if (flag) {
-        window.open('/big/page/index')
-      } else {
+      // if (flag) {
+      //   window.open('/big/page/index')
+      // } else {
+      //   window.open('/front/subscribe.html')
+      // }
+      if (item.button && item.button === '免费体验') {
+        this.$refs.collectRef.source = 'ent_portrait'
+        this.$refs.collectRef.isNeedSubmit('ent_portrait')
+      }
+      if (item.button && item.button === '去升级') {
         window.open('/front/subscribe.html')
       }
     },
     openBigPage () {
       try {
         // eslint-disable-next-line no-undef
-        _hmt.push(['_trackEvent', '超级订阅-pc', 'click', '企业情报历史记录-去开通'])
+        _hmt.push(['_trackEvent', '超级订阅-pc', 'click', '企业情报历史记录-免费体验'])
       } catch (e) {
         console.log('未初始化百度统计')
       }
-      window.open('/big/page/index')
+      this.$refs.collectRef.source = 'ent_portrait'
+      this.$refs.collectRef.isNeedSubmit('ent_portrait')
+      // window.open('/big/page/index')
     }
   }
 }

+ 55 - 19
src/views/portrayal/UnitPortrayal.vue

@@ -40,12 +40,13 @@
         <div class="u-i-tip">数据统计范围:{{ info.start }}-{{ info.end }}</div>
       </div>
       <!-- 招标动态 -->
-      <unit-list v-on:list="getList" @click="openBigPage"></unit-list>
+      <unit-list v-on:list="getList" @click="openBigPage('',{source: 'buyer_portrait_getNewMsg',buttion: '免费体验'})"></unit-list>
       <!-- 历史项目联系方式 -->
-      <ContactList name="buyer" style="padding:32px 40px 0;" v-if="canShowHistoryContact"></ContactList>
-      <div class="mask-bg-group" v-else>
+      <ContactList name="buyer" style="padding:32px 40px 0;"></ContactList>
+      <!-- <ContactList name="buyer" style="padding:32px 40px 0;" v-if="canShowHistoryContact"></ContactList> -->
+      <!-- <div class="mask-bg-group" v-else>
         <MaskCard @click="openBigPage('历史项目联系方式', getEntContactMap)" k="历史项目联系方式" :key="'历史项目联系方式' + getEntContactMap.button + getEntContactMap.title" :item="getEntContactMap"></MaskCard>
-      </div>
+      </div> -->
       <unit-chart v-show="canShowChart" v-on:baseInfo="getBaseInfo"></unit-chart>
       <div class="unit-big-upgrade-group" v-show="!canShowChart">
         <MaskCard @click="openBigPage(k, item)" v-for="(item, k) in bigUpgradeMap" :key="k + item.button + item.title"
@@ -59,6 +60,7 @@
     >
       <div class="unit-dialog-content">如有疑问,请联系客服:400-108-6670</div>
     </el-dialog>
+    <CollectInfo ref="collectRef"></CollectInfo>
   </Layout>
 </template>
 <script>
@@ -67,6 +69,7 @@ import UnitChart from './components/UnitChart'
 import UnitList from './components/UnitList'
 import ContactList from '@/components/contact-info/ContactInfo'
 import MaskCard from '@/components/mask-card/MaskCard.vue'
+import CollectInfo from '@/components/collect-info/CollectInfo.vue'
 import { Dialog } from 'element-ui'
 import { setLogs } from '@/api/modules'
 import { mapState } from 'vuex'
@@ -84,6 +87,7 @@ export default {
     UnitList,
     ContactList,
     MaskCard,
+    CollectInfo,
     [Dialog.name]: Dialog
   },
   data () {
@@ -110,7 +114,7 @@ export default {
       entContactTip: {
         title: '开通大会员',
         subtitle: '获取采购单位类似项目联系人、联系方式等,一键拨打!',
-        button: '去开通',
+        button: '免费体验',
         img: getImgForBigUpgrade('1-big'),
         bg: getImgForBigUpgrade('1-bg', true)
       },
@@ -119,67 +123,78 @@ export default {
           title: '开通大会员',
           subtitle: '采购单位年度项目规模、增长趋势一目了然,快速分析市场!',
           img: getImgForBigUpgrade('2-big'),
-          bg: getImgForBigUpgrade('2-bg', true)
+          bg: getImgForBigUpgrade('2-bg', true),
+          source: 'buyer_portrait_yearData'
         },
         月度采购规模统计: {
           title: '开通大会员',
           subtitle: '通过纵向对比近3年月度中标金额,快速分析行业月度采购趋势!',
           img: getImgForBigUpgrade('3-big'),
-          bg: getImgForBigUpgrade('3-bg', true)
+          bg: getImgForBigUpgrade('3-bg', true),
+          source: 'buyer_portrait_monthData'
         },
         采购规模分布: {
           title: '开通大会员',
           subtitle: '全面了解采购单位的年度采购规划、项目预算,帮助投标人制定投标策略!',
           img: getImgForBigUpgrade('4-big'),
-          bg: getImgForBigUpgrade('4-bg', true)
+          bg: getImgForBigUpgrade('4-bg', true),
+          source: 'buyer_portrait_moneyRange'
         },
         各类招标方式占比: {
           title: '开通大会员',
           subtitle: '洞察采购单位招标方式、数量、金额占比,综合了解采购单位,帮企业决策是否投标!',
           img: getImgForBigUpgrade('5-big'),
-          bg: getImgForBigUpgrade('5-bg', true)
+          bg: getImgForBigUpgrade('5-bg', true),
+          source: 'buyer_portrait_bidtypeData'
         },
         各行业项目平均节支率: {
           title: '开通大会员',
           subtitle: '分析行业项目的预算、中标价格差额比率,帮助企业核算采购项目的利润率!',
           img: getImgForBigUpgrade('6-big'),
-          bg: getImgForBigUpgrade('6-bg', true)
+          bg: getImgForBigUpgrade('6-bg', true),
+          source: 'buyer_portrait_rate'
         },
         各行业项目规模占比: {
           title: '开通大会员',
           subtitle: '通过行业采购项目的规模、数量、利润率,洞悉采购单位的采购状况!',
           img: getImgForBigUpgrade('7-big'),
-          bg: getImgForBigUpgrade('7-bg', true)
+          bg: getImgForBigUpgrade('7-bg', true),
+          source: 'buyer_portrait_top12'
         },
         重点合作企业: {
           title: '开通大会员',
           subtitle: '通过挖掘重点合作企业,直观了解采购单位与企业关系远近,辅助投标决策!',
           img: getImgForBigUpgrade('8-big'),
-          bg: getImgForBigUpgrade('8-bg', true)
+          bg: getImgForBigUpgrade('8-bg', true),
+          source: 'buyer_portrait_topShow'
         },
         合作企业注册资本分布: {
           title: '开通大会员',
           subtitle: '通过分析合作企业注册资本、采购项目规模、利润率,全面洞察采购单位合作企业!',
           img: getImgForBigUpgrade('9-big'),
-          bg: getImgForBigUpgrade('9-bg', true)
+          bg: getImgForBigUpgrade('9-bg', true),
+          source: 'buyer_portrait_withCapitalData'
         },
         合作企业年龄分布: {
           title: '开通大会员',
           subtitle: '通过分析合作企业年龄、数量、规模分布情况,全面洞察采购单位合作企业!',
           img: getImgForBigUpgrade('10-big'),
-          bg: getImgForBigUpgrade('10-bg', true)
+          bg: getImgForBigUpgrade('10-bg', true),
+          source: 'buyer_portrait_withEstablishData'
         },
         合作企业注册地分布: {
           title: '开通大会员',
           subtitle: '通过分析合作企业的地址、数量、采购规模,了解采购单位营商环境,辅助投标决策!',
           img: getImgForBigUpgrade('11-big'),
-          bg: getImgForBigUpgrade('11-bg', true)
+          bg: getImgForBigUpgrade('11-bg', true),
+          source: 'buyer_portrait_withAreaData'
         },
         重点合作代理机构: {
           title: '开通大会员',
           subtitle: '通过提供合作代理机构的名录、数量,全面洞察采购单位合作环境,辅助投标决策!',
           img: getImgForBigUpgrade('12-big'),
-          bg: getImgForBigUpgrade('12-bg', true)
+          bg: getImgForBigUpgrade('12-bg', true),
+          source: 'buyer_portrait_topAgencyData'
         }
       }
     }
@@ -201,7 +216,7 @@ export default {
       let tempButton = '联系客服'
       if (!canShow) {
         tempTitle = '开通大会员'
-        tempButton = '去开通'
+        tempButton = '免费体验'
       }
       tempMap.title = tempTitle
       tempMap.button = tempButton
@@ -256,7 +271,7 @@ export default {
         let tempButton = '联系客服'
         if (!tempPowerInfo.isMember) {
           tempTitle = '开通大会员'
-          tempButton = '去开通'
+          tempButton = '免费体验'
         }
         this.bigUpgradeMap[v].title = tempTitle
         this.bigUpgradeMap[v].button = tempButton
@@ -272,7 +287,10 @@ export default {
       if (item.button === '联系客服') {
         this.isDialogShow = true
       } else {
-        window.open('/big/page/index?unit=' + this.unitData.id)
+        // this.$refs.collectRef.showForm = true
+        this.$refs.collectRef.source = item.source
+        this.$refs.collectRef.isNeedSubmit(item.source)
+        // window.open('/big/page/index?unit=' + this.unitData.id)
       }
     },
     getList (data) {
@@ -456,5 +474,23 @@ export default {
     color: #999999;
     text-align: center;
   }
+  ::v-deep {
+    .collect-dialog{
+      position: fixed;
+      top: 50%;
+      left: 50%;
+      margin-top: 0;
+      transform: translate(-50%, -50%);
+    }
+    .el-dialog{
+      border-radius: 8px;
+    }
+    .el-dialog__header{
+      padding: 0;
+    }
+    .el-dialog__body{
+      padding: 0;
+    }
+  }
 }
 </style>

+ 1 - 1
src/views/portrayal/components/UnitList.vue

@@ -68,7 +68,7 @@ export default {
       info: state => state.user.info
     }),
     getButtonTip () {
-      return this.info.memberStatus > 0 ? '联系客服' : '去开通'
+      return this.info.memberStatus > 0 ? '联系客服' : '免费体验'
     }
   },
   created () {

+ 11 - 4
vue.config.js

@@ -39,8 +39,8 @@ module.exports = {
       //   logLevel: 'debug'
       // },
       '^/bigmember': {
-        target: 'https://web-jytest.jydev.jianyu360.com',
-        // target: 'http://192.168.20.178:8800',
+        // target: 'https://web2-jytest.jydev.jianyu360.com',
+        target: 'http://127.0.0.1:814',
         changeOrigin: true,
         logLevel: 'debug',
         pathRewrite: {
@@ -48,12 +48,19 @@ module.exports = {
         }
       },
       '^/jypay': {
-        target: 'https://web-jytest.jydev.jianyu360.com',
+        target: 'https://web2-jytest.jydev.jianyu360.com',
         changeOrigin: true,
         logLevel: 'debug'
       },
       '^/publicapply': {
-        target: 'http://192.168.20.241:828',
+        // target: 'https://web2-jytest.jydev.jianyu360.com',
+        target: 'http://127.0.0.1:828',
+        changeOrigin: true,
+        logLevel: 'debug'
+      },
+      '^/salesLeads': {
+        // target: 'https://web2-jytest.jydev.jianyu360.com',
+        target: 'http://127.0.0.1:8881',
         changeOrigin: true,
         logLevel: 'debug'
       }