Parcourir la source

'提交修改'

魏志佳 il y a 4 ans
Parent
commit
cc535e8d5e

+ 1 - 0
src/views/modules/Statistics/accountReport.vue

@@ -1249,6 +1249,7 @@ export default {
     })
   },
   beforeDestroy() {
+    
     let arr = JSON.stringify(this.columns)
     postAction('/toutiao/videoReportDaily/saveOrUpdateColumnJson', {
       json: arr,

+ 79 - 15
src/views/modules/Statistics/videoStatics/KSvideoStatics.vue

@@ -12,15 +12,30 @@
         </span> 
         <span style="margin-left:15px">剪辑:</span> 
         <span  >
-            <a-input placeholder="请输入剪辑的名字" v-model="clip" style="width:140px"  />
+            <!-- <a-input placeholder="请输入剪辑的名字" v-model="clip" style="width:140px"  /> -->
+            <a-select v-model="clip" style="width: 140px" allowClear  show-search :filter-option="filterOption">
+              <a-select-option v-for="item in designList" :key="item.userId" :value='item.userId'>
+                {{item.compantName +'_'+item.userName  }}
+              </a-select-option>
+            </a-select>
         </span>         
         <span style="margin-left:15px">拍摄:</span> 
         <span  >
-            <a-input placeholder="请输入拍摄的名字" v-model="shot" style="width:140px" />
+            <!-- <a-input placeholder="请输入拍摄的名字" v-model="shot" style="width:140px" /> -->
+            <a-select v-model="shot" style="width: 140px" allowClear  show-search :filter-option="filterOption">
+              <a-select-option v-for="item in designList" :key="item.userId" :value='item.userId'>
+                {{item.compantName +'_'+item.userName  }}
+              </a-select-option>
+            </a-select>
         </span>         
         <span style="margin-left:15px">编导:</span> 
         <span  >
-            <a-input placeholder="请输入编导的名字" v-model="plan" style="width:140px"  />
+            <!-- <a-input placeholder="请输入编导的名字" v-model="plan" style="width:140px"  /> -->
+            <a-select v-model="plan" style="width: 140px" allowClear  show-search :filter-option="filterOption">
+              <a-select-option v-for="item in designList" :key="item.userId" :value='item.userId'>
+                 {{item.compantName +'_'+item.userName  }}
+              </a-select-option>
+            </a-select>
         </span>         
       </div>
       <a-button type="primary" @click="searchRes">查询</a-button>
@@ -115,7 +130,7 @@
                  @customHeaderCell="customHeaderCell(columns)"
               >
              
-                <div slot="converUrl" slot-scope="test,records">
+                <div slot="coverUrl" slot-scope="test,records">
                   <!-- {{test}} -->
                     <img
                     :src="test"
@@ -270,12 +285,12 @@ import customColumn from '../components/customColumn.vue'
 const columnsFixd = [
   {
     title: '视频',
-    dataIndex: 'converUrl',
+    dataIndex: 'coverUrl',
     align: 'center',
     width: 100,
     fixed: 'left',
-    key: 'converUrl',
-    scopedSlots: { customRender: 'converUrl' }
+    key: 'coverUrl',
+    scopedSlots: { customRender: 'coverUrl' }
   },
   {
     title: '视频名称',
@@ -298,6 +313,13 @@ const columnsFixd = [
     width: 150,
     fixed: 'left'
   },
+  {
+    title: '渠道',
+    dataIndex: 'channel',
+    align: 'center',
+    width: 150,
+    fixed: 'left'
+  },
     {
     title:'相关人员',
     dataIndex:'relativePeople',
@@ -332,7 +354,7 @@ const initVariableColimns=[
    {
         title: '消耗(元)',
         dataIndex: 'cost',
-        width:150,
+        
         tip: '广告在投放期间的花费总额',
         align: 'center',
         scopedSlots: { customRender: 'cost' },
@@ -423,6 +445,22 @@ const initVariableColimns=[
         scopedSlots: { customRender: 'cpb' },
         sorter:() => {}
     },
+    {
+        title: '3s播放数',
+        dataIndex: 'play3sCount',
+        tip: '总花费/行为数',
+        align: 'center',    
+        scopedSlots: { customRender: 'play3sCount' },
+        sorter:() => {}
+    },
+    {
+        title: '3s播放率',
+        dataIndex: 'play3sRate',
+        tip: '总花费/行为数',
+        align: 'center',    
+        scopedSlots: { customRender: 'play3sRate' },
+        sorter:() => {}
+    },
 ]
 
 let detailColumn=[
@@ -456,6 +494,7 @@ let detailColumn=[
 export default {
   data() {
     return {
+      designList:[],
        detailLoading:false,
       clip:undefined,
       shot:undefined,
@@ -541,6 +580,11 @@ export default {
       
   },
   methods: {
+    filterOption(input, option) {
+      return (
+        option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+      );
+    },
     //点击查看明细按钮的事件
     opendetail(text, record) {
       console.log(text, record)
@@ -572,6 +616,7 @@ export default {
     },
       //自定义之后修改父元素表头
     changeColumn(val){
+      console.log(val)
         this.columns=[...val];
         if(this.columns.length> this.columnsFixd.length&&this.columns.length<9){
           this.scrollX=0;
@@ -585,7 +630,7 @@ export default {
           // this.scrollX=2000+200*(this.columns.length-this.columnsFixd.length)
         }else if(this.columns.length>=9){
           this.columns.forEach((element,index) => {
-            if(index<this.columnsFixd.length){
+            if(index<this.columnsFixd.length-1){
               element.width=120
               element.fixed='left'
             }             
@@ -682,9 +727,9 @@ export default {
         accountIds:this.appId,
         target:this.target,
         order:this.order,
-        clip:this.clip?this.clip:'',
-        shot:this.shot?this.shot:'',
-        plan:this.plan?this.plan:'',
+        clipId:this.clip?this.clip:'',
+        shotId:this.shot?this.shot:'',
+        planId:this.plan?this.plan:'',
       }).then(res => {
         let resArr = []
         this.data=[];
@@ -719,7 +764,7 @@ export default {
         })      
         columns=column.splice(7)
       }
-      downFilePost('/ctop/kuaishou/videoReport/excel', {
+      downFilePost('/ctop/kuaishou/videoReport/excelV2', {
         columns,
         target:this.target,
         order:this.order,
@@ -834,6 +879,15 @@ export default {
     },
     
 
+    // 获取设计人员
+    getDesignList(){
+      postAction('/ctop/kuaishou/videoReport/getDesignList').then(res=>{
+        console.log(res);
+        if(res.success){
+            this.designList=res.result
+        }
+      })
+    }
     
    },
   
@@ -878,7 +932,17 @@ export default {
   },
   deactivated() {
     let arr = JSON.stringify(this.columns)
-    // console.log(arr)
+    console.log(arr)
+    postAction('/toutiao/videoReportDaily/saveOrUpdateColumnJson', {
+      json: arr,
+      columnType: 4
+    }).then(res => {
+      // console.log(res)
+    })
+  },
+  beforeDestroy() {
+    let arr = JSON.stringify(this.columns)
+    console.log(arr)
     postAction('/toutiao/videoReportDaily/saveOrUpdateColumnJson', {
       json: arr,
       columnType: 4
@@ -986,7 +1050,7 @@ filters: {
   },
 
   mounted() {
-    
+      this.getDesignList()
     //请求自定义列的数据
     postAction('/toutiao/videoReportDaily/videoInfoListTotalExportExcelPermission').then(res => {
       console.log(res)

+ 1 - 1
src/views/modules/Statistics/videoStatics/TTvideoStatics.vue

@@ -487,7 +487,7 @@ export default {
           // this.scrollX=2000+200*(this.columns.length-this.columnsFixd.length)
         }else if(this.columns.length>=9){
           this.columns.forEach((element,index) => {
-            if(index<this.columnsFixd.length){
+            if(index<this.columnsFixd.length-1){
               element.width=120
               element.fixed='left'
             }             

+ 12 - 9
src/views/modules/autoLaunch/configLaunchInfo.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="newPlan">
+  <div class="configLaunchInfo">
     <a-spin :spinning="spinning">
     <a-form :form="form">
          <!-- 投放范围 -->
@@ -875,7 +875,7 @@
                         <a-form-item >
                             <a-cascader
                                 :options="createOptions"
-                                v-decorator="['creativeCategory',{ rules: [{ required: whiteList.creative_category_switch==1, message: '创意分类必填' }],initialValue:[], }]"
+                                v-decorator="['creativeCategory',{ initialValue:[],rules: [{ required: whiteList.creative_category_switch==1, message: '创意分类必填' }] }]"
                                 :fieldNames="fieldNames"
                                 placeholder="请选择创意分类"
                                 
@@ -895,7 +895,7 @@
                             mode="tags"
                             style="width: 100%"
                             placeholder="按回车生成标签"
-                            v-decorator="['creativeTag',{rules: [ {required: whiteList.creative_category_switch==1, validator: creativeTagValid }],initialValue:[],}]"
+                            v-decorator="['creativeTag',{initialValue:[],rules: [ {required: whiteList.creative_category_switch==1, validator: creativeTagValid }]}]"
                             dropdownClassName="display-none-selset"
                             :token-separators="[',', ' ', ',']"
                             >
@@ -2228,7 +2228,7 @@ export default {
                     //     cpaBid:res.result.cpaBid/1000,
                     //     appId:res.singleAppid?JSON.parse(res.result.appIdArray)[0]:JSON.parse(res.result.appIdArray)
                     // })
-                    // res.result.creativeCategory=res.result.creativeCategory?[parseInt(res.result.creativeCategory/10000),parseInt(res.result.creativeCategory/100),res.result.creativeCategory]:[];
+              
                     if(res.result.creativeCategory){
                         // let arr=[];
                         if(res.result.creativeCategory>10000){
@@ -2250,7 +2250,7 @@ export default {
                         })
                     },0)
                     if((res.result.ocpxActionType == 180 || res.result.ocpxActionType == 53) && this.groupTypeData.deepConversionTypes&&this.groupTypeData.deepConversionTypes.length > 0){
-                        console.log(1)
+                        // console.log(1)
                         setTimeout(()=>{
                         this.form.setFieldsValue({
                             deepConversionType:res.result.deepConversionType,
@@ -2263,7 +2263,7 @@ export default {
                     },0)
                     }
                     
-                    console.log(this.getFormData('deepConversionBid'))
+                    // console.log(this.getFormData('deepConversionBid'))
                     this.noAreaBreak=res.result.noAreaBreak?true:false
                     this.noGenderBreak=res.result.noGenderBreak?true:false
                     this.noAgeBreak=res.result.noAgeBreak?true:false
@@ -2470,7 +2470,7 @@ export default {
 }
 </script>
 <style lang="scss">
-.newPlan{
+.configLaunchInfo{
 .display-none-selset {
   display: none !important;
 }
@@ -2494,7 +2494,7 @@ export default {
 .ant-tooltip {
   max-width: 450px;
 }
-.newPlan {
+.configLaunchInfo {
   .ant-radio-button-wrapper {
     min-width: 80px;
     text-align: center;
@@ -2535,7 +2535,10 @@ export default {
 }
 </style>
 <style lang="scss" scoped>
-.newPlan {
+.configLaunchInfo {
+    .region{
+        width: 100%;
+    }
   font-family: PingFangSC-Regular, tahoma, arial, 'Hiragino Sans GB', 'Microsoft yahei', sans-serif;
   color: #333;
   ul,

+ 468 - 62
src/views/modules/stockWatch/accountPage.vue

@@ -46,22 +46,67 @@
                         <div class="item">
                             <div class="todyCost">
                                 <span>{{667.15 | decimalsHandle}}</span>
-                                <span>
-                                    <a-icon type="rise" />
-                                    <a-icon type="fall" />
+                                <span class="sign">
+                                    <a-icon type="rise"  class="rise"/>
+                                    <!-- <a-icon type="fall" class="fall" /> -->
                                 </span>
                             </div>
                             <div class="yesterdayCost">
                                 /昨日:{{407.16 | decimalsHandle}}
                             </div>
-                            <div class="IndexName">
+                            <span class="IndexName" :class="{'IndexNameActive':isActive==1}" @click="getActiveIndexName(1)">
+                                激活成本
+                            </span>
+                        </div>
+                        <div class="item">
+                            <div class="todyCost">
+                                <span>{{667.15 | decimalsHandle}}</span>
+                                <span class="sign">
+                                    <a-icon type="rise"  class="rise"/>
+                                    <!-- <a-icon type="fall" class="fall" /> -->
+                                </span>
+                            </div>
+                            <div class="yesterdayCost">
+                                /昨日:{{407.16 | decimalsHandle}}
+                            </div>
+                            <span class="IndexName" :class="{'IndexNameActive':isActive==2}" @click="getActiveIndexName(2)">
                                 激活数
+                            </span>
+                        </div>
+                        <div class="item">
+                            <div class="todyCost">
+                                <span>{{667.15 | decimalsHandle}}</span>
+                                <span class="sign">
+                                    <a-icon type="rise"  class="rise"/>
+                                    <!-- <a-icon type="fall" class="fall" /> -->
+                                </span>
+                            </div>
+                            <div class="yesterdayCost">
+                                /昨日:{{407.16 | decimalsHandle}}
                             </div>
+                            <span class="IndexName" :class="{'IndexNameActive':isActive==3}" @click="getActiveIndexName(3)">
+                                激活数
+                            </span>
+                        </div>
+                        <div class="item">
+                            <div class="todyCost">
+                                <span>{{667.15 | decimalsHandle}}</span>
+                                <span class="sign">
+                                    <a-icon type="rise"  class="rise"/>
+                                    <!-- <a-icon type="fall" class="fall" /> -->
+                                </span>
+                            </div>
+                            <div class="yesterdayCost">
+                                /昨日:{{407.16 | decimalsHandle}}
+                            </div>
+                            <span class="IndexName" :class="{'IndexNameActive':isActive==4}" @click="getActiveIndexName(4)">
+                                激活数
+                            </span>
                         </div>
                     </div>
-                    <div class="echart">
+                    <div class="echart" style="margin-top:10px">
                         <a-spin :spinning="accountIndexEchartSpinning">
-                        <div class="accountIndexEchart" id="accountIndexEchart"  style='width:100%;height:350px;margin:0 auto;' ref="accountIndexEchart"></div>
+                            <div class="accountIndexEchart" id="accountIndexEchart"  style='width:100%;height:160px;margin:0 auto;' ref="accountIndexEchart"></div>
                         </a-spin>
                     </div>
                 </div>
@@ -112,7 +157,7 @@
                 </div>
                 <div class="table">
                     <a-table
-                    :columns="columns"
+                    :columns="newColumns"
                     :data-source="data"
                     
                     :pagination="ipagination"
@@ -302,13 +347,66 @@
             </div>
             </a-spin>
         </div>
+
+
+
+        <!-- 修改检测链接的modal -->
+        <a-modal v-model="linkVisible" title="修改链接" @ok="linkhandleOk" :width='800'>
+            <div class="linkBody">
+                <a-row>
+                    <a-col :span="4">
+                        <p style="text-align:right">第三方检测链接:</p>
+                    </a-col>
+                    <a-col :span="18">
+                        <span>{{"https://www.baidu.com/s?wd=echart%E5%AE%9E%E7%8E%B0%E4%B8%A4%E4%B8%AAx%E8%BD%B4%E4%B8%A4%E4%B8%AAy%E8%BD%B4&rsv_spt=1&rsv_iqid=0x9a6bd47e00238246&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=43&rsv_sug1=35&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=16314&rsv_sug4=17094"}}</span>
+                    </a-col>
+                </a-row>
+                <p></p>
+                <a-row>
+                    <a-col :span="4">
+                        <p style="text-align:right">修改链接:</p>
+                    </a-col>
+                    <a-col :span="18">
+                        <a-input placeholder="请输入监测链接" style="300px"  v-model="newLink"/>
+                    </a-col>
+                </a-row>
+            </div>
+        </a-modal>
+        <!-- 修改定向的modal -->
+        <a-modal v-model="targetVisible" title="修改定向" @ok="targethandleOk">
+            <div class="linkBody">
+                <a-row>
+                    <a-col :span="4">
+                        <p style="text-align:right">已有定向包:</p>
+                    </a-col>
+                    <a-col :span="18">
+                        <span>DM2021</span>
+                    </a-col>
+                </a-row>
+                <p></p>
+                <a-row>
+                    <a-col :span="4">
+                        <p style="text-align:right">修改定向包:</p>
+                    </a-col>
+                    <a-col :span="18">
+                        <a-select size="default" default-value="a1" style="width: 200px" >
+                            <a-select-option v-for="i in 25" :key="(i + 9).toString(36) + i">
+                                {{ (i + 9).toString(36) + i }}
+                            </a-select-option>
+                        </a-select>
+                    </a-col>
+                </a-row>
+                
+            </div>
+        </a-modal>
+         <customColumn :visible='visible'  :listNum='listNum' :fiexColumn='columnsFixd' :mediaType='2'  @closeCustomColumn='closeCustomColumn' @changeColumn='changeColumn' />
     </div>
 </template>
 
 <script>
 import moment from 'moment'
 import { getAction, postAction, downFile, downFilePost } from '@/api/manage'
-
+import customColumn from './modules/customColumn.vue'
 import qs from 'qs'
 // 引入基本模板
 var echarts = require('echarts')
@@ -325,7 +423,7 @@ require('echarts/lib/component/graphic')
 require('echarts/lib/component/toolbox')
 require('echarts/lib/component/legend')
 
-const columns = [
+const newColumns = [
   
   
    {
@@ -505,17 +603,59 @@ const indexValue = [
     },
 ]
     
+const columnsFixd = [
+    {
+        title: '消耗',
+        dataIndex: 'cost',     
+        key:'date',
+    },
+  
+]
 
+const columns=[
+    {
+        title: '激活成本',
+        dataIndex: 'cost',     
+        key:'date',
+    },
+    {
+        title: '激活数',
+        dataIndex: 'cost',     
+        key:'date',
+    },
+    {
+        title: '行为数',
+        dataIndex: 'cost',     
+        key:'date',
+    },
+    {
+        title: '表单提交数',
+        dataIndex: 'cost',     
+        key:'date',
+    },
+]
     export default {
         name:'accountPage',
+         components:{
+            // DatePicker,
+            customColumn,
+        },
         data() {
             return {
+                columnsFixd,
+                columns:[...columnsFixd,...columns],
+                visible:false,
+                listNum:[],
+                newLink:'',
+                linkVisible:false,
+                targetVisible:false,
+                isActive:1,
                 moment,
                 materialDate:[moment().subtract(1,'days'),moment().subtract(1,'days')],
                 currentAccount:{},
                 dateValue:[moment(),moment()],
                 data:[],
-                columns:[...columns],           
+                newColumns:[...newColumns],           
                 loading:false,
                 ipagination: {
                     current: 1,
@@ -572,9 +712,61 @@ const indexValue = [
                 planBodyEchartSpinning:false,
             }
         },
+        
         methods: {
-            showIndexChangeBox(){
+            //自定义之后修改父元素表头
+            changeColumn(val){
+                this.columns=[...val];
+                this.columns=[...val];
+                if(this.columns.length> this.columnsFixd.length&&this.columns.length<8){
+                this.columns.forEach((element,index) => {
+                    if(index<this.columns.length-1){
+                    element.width='auto'
+                    element.fixed=false
+                    }             
+                });
+
+                // this.scrollX=2000+200*(this.columns.length-this.columnsFixd.length)
+                }else if(this.columns.length>=8){
+                this.columns.forEach((element,index) => {
+                    if(index<this.columnsFixd.length){
+                    element.width=200
+                    element.fixed='left'
+                    }             
+                });
+
+                this.scrollX=1000+200*(this.columns.length-this.columnsFixd.length)
+                } else{
+                this.scrollX=0;
+                this.columns.forEach(element => {
+                    element.width='auto'
+                    element.fixed=false
+                });
+                }
+            },
+            closeCustomColumn(){
+                this.visible=false;
+            },
+             //弹出框打开,自定义列
+            customColumns() {
+                this.visible = true
+                this.listNum = [...this.columns]
+            },
+            // 监测链接修改OK事件
+            linkhandleOk(e){
+                this.linkVisible=true
+            },
+            // 定向包修改OK事件
+            targethandleOk(e){
+                this.targetVisible=true
+            },
 
+            getActiveIndexName(val){
+                this.isActive=val
+            },
+            showIndexChangeBox(){
+                this.visible=true;
+                this.listNum = [...this.columns]
             },
             disabledDate(current) {
                 return current && current > moment() && current < moment().subtract(1,'months')
@@ -585,6 +777,83 @@ const indexValue = [
             materialDataChange(date, dateString){
                 console.log(date, dateString)
             },
+            initAccountIndexEchart(type,data){
+                // let type='激活'
+                let option = {
+                    tooltip: {
+                        trigger: 'axis',
+                        formatter: `${type}<br />{a0}  {b0}: {c0}<br />{a1}  {b1}: {c1}`
+                    },
+                    grid:{
+                        left:'5px',
+                        top:0,
+                        right:'5px',
+                        bottom:0
+                    },
+                    xAxis: {
+                        type: 'category',
+                        show:false,
+                        boundaryGap: false,
+                        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+                    },
+                    yAxis: {
+                        type: 'value',
+                        show:false,
+                    },
+                    series: [
+                        {
+                        name: '今天',
+                        data: [820, 932, 901, 934, 1290, 1330, 1320],
+                        type: 'line',
+                        smooth: true,
+                        showSymbol: false,
+                        symbol: 'circle',
+                        lineStyle: {                               
+                            color: '#2461F1',   
+                            width: 3,
+                        },
+                        itemStyle:{
+                            color:'#2461F1',
+                            borderWidth:2,
+                            borderColor:'#fff'
+                        },
+                        areaStyle: {
+                            color:{
+                                type: 'linear',
+                                x: 0,
+                                y: 0,
+                                x2: 0,
+                                y2: 1,
+                                colorStops: [{
+                                    offset: 0, color: '#2461F1' // 0% 处的颜色
+                                }, {
+                                    offset: 1, color: 'white' // 100% 处的颜色
+                                }],
+                            }
+                        }
+                    },
+                    {
+                        name: '昨天',
+                        data: [800, 962, 930, 950, 1200, 1380, 1420],
+                        type: 'line',
+                        smooth: true,
+                        showSymbol: false,
+                        symbol: 'circle',
+                        lineStyle: {                               
+                            color: '#3CC6A5',   
+                            width: 3,
+                        },
+                        itemStyle:{
+                            color:'#3CC6A5',
+                            borderWidth:2,
+                            borderColor:'#fff'
+                        },
+                        
+                    }
+                    ]
+                };
+                return option
+            },  
             initGaugechart(value){
                 var dataArr = value;
                 var colorSet = {
@@ -834,43 +1103,78 @@ const indexValue = [
             },
             initMaterialChart(data){
                 let  option={
-                    
-                    tooltip: {
-                        trigger: 'axis'
-                    },
                     legend: {
                         data: ['新上计划数', '新上组数', '新上创意数']
                     },
-                    xAxis: {
-                        type: 'category',
-                        data: ['新上素材数量', '新上素材使用数', '素材总数', '有效素材', '爆量素材', '新上素材使用率'],
-                        axisLine: {
-                            show:false,
-                        
+                    xAxis:[
+                        {   
+                            // name:"a",
+                            type: 'category',
+                            data: ['新上素材数量', '新上素材使用数',  '有效素材', '爆量素材', '新上素材使用率',''],
+                            axisLine: {
+                                show:false,
+                            
+                            },
+                            axisTick:{
+                                show:false,
+                            }
                         },
-                        axisTick:{
+                        {   
+                            // name:"b",
+                            type: 'category',
+                            data: ['素材总数','','','','',''],
+                            nameLocation: 'end',
+                            axisLine: {
+                                show:false,
+                            
+                            },
+                            axisTick:{
+                                show:false,
+                            },
+                            position: 'bottom',
+                            inverse: true
+                        },
+                    
+                    
+                    ] ,
+                    yAxis:[
+                        {
+                            type: 'value',
                             show:false,
-                        }
-                    },
-                    yAxis: {
-                        type: 'value',
-                        show:false,
-                        axisLine: {
-                            onZero: false,
+                            axisLine: {
+                                onZero: false,
+                                show:false,
+                                color: '#999',
+                                lineStyle: {
+                                    color: '#999'
+                                }
+                            },
+                        },
+                        {
+                            type: 'value',
                             show:false,
-                            color: '#999',
-                            lineStyle: {
-                                color: '#999'
-                            }
+                            axisLine: {
+                                onZero: false,
+                                show:false,
+                                color: '#999',
+                                lineStyle: {
+                                    color: '#999'
+                                }
+                            },
+                            position: 'right',
+                            // inverse: true
                         },
-                    },
+                        
+                        
+                    ] ,
                     
                     series: [
                         {   
                             
-                            data: [820, 932, 901, 934, 1290, 1330, 1320],
+                            data: [820, 932, 901, 934, 1290 ],
                             type: 'bar',
                             barWidth: '30%',
+                            xAxisIndex:0,
                             label:{
                                 show:true,
                                 position:'top',
@@ -895,6 +1199,37 @@ const indexValue = [
                                 
                             },
                         },
+                        {   
+                            
+                            data: [13200000000],
+                            type: 'bar',
+                            barWidth: '30%',
+                            xAxisIndex:1,
+                            yAxisIndex:1,
+                            label:{
+                                show:true,
+                                position:'top',
+                                distance: 10 ,
+
+                            },
+                            backgroundStyle:{
+                                borderRadius:[0, 0, 5, 5],
+                            },
+                            itemStyle:{
+                                
+                                // normal: {
+                                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                                        offset: 0,
+                                        color: '#7820FF'
+                                    }, {
+                                        offset: 1,
+                                        color:  '#3470FF'
+                                    }]),
+                                    barBorderRadius:[10, 10, 0, 0],
+                                // },
+                                
+                            },
+                        },
                         
                     ]
                 }
@@ -1005,30 +1340,22 @@ const indexValue = [
 
 
             getPieOption(){
+                const colorList = ['#58D5FF', '#73ACFF', '#FDD56A', '#FDB36A', '#FD866A','#9E87FF']
                 let option = {
-                    // title: {
-                    //     text: '南丁格尔玫瑰图',
-                    //     subtext: '纯属虚构',
-                    //     left: 'center'
-                    // },
+                    
                     tooltip: {
                         trigger: 'item',
                         formatter: '{a} <br/>{b} : {c} ({d}%)'
                     },
                     legend: {
                         orient: 'vertical',
-                        left: '10%',
+                        left: '3%',
                         top:'center',
                         
                     },
                     toolbox: {
                         show: true,
-                        feature: {
-                            mark: {show: true},
-                            dataView: {show: true, readOnly: false},
-                            restore: {show: true},
-                            saveAsImage: {show: true}
-                        }
+                        
                     },
                     series: [
                         {
@@ -1037,18 +1364,27 @@ const indexValue = [
                             radius: [20, 140],
                             center: ['55%', '50%'],
                             roseType: 'area',
+                            labelLine:{
+                                length:5,
+                                length2:5
+                            },
+                            label:{
+                                position:'outside'
+                            },
                             itemStyle: {
-                                borderRadius: 5
+                                borderRadius: 5,
+                                color: (params) => {
+                                    return colorList[params.dataIndex]
+                                }
                             },
                             data: [
                                 {value: 30, name: 'rose 1'},
-                                {value: 28, name: 'rose 2'},
-                                {value: 26, name: 'rose 3'},
-                                {value: 24, name: 'rose 4'},
-                                {value: 22, name: 'rose 5'},
-                                {value: 20, name: 'rose 6'},
-                                {value: 18, name: 'rose 7'},
-                                {value: 16, name: 'rose 8'}
+                                {value: 25, name: 'rose 2'},
+                                {value: 22, name: 'rose 3'},
+                                {value: 20, name: 'rose 4'},
+                                {value: 16, name: 'rose 5'},
+                                {value: 10, name: 'rose 6'},
+
                             ]
                         }
                     ]
@@ -1131,7 +1467,7 @@ const indexValue = [
             echartIndexChange(val){
                 console.log(`Selected: ${val}`);
                 let type=this.handlerTypeOfIndex(val);
-
+                console.log(type)
                 this.initEchart('adPositionEchart',this.initAdpositionChart(type,[]))
                 this.initEchart('ageEchart',this.initAdpositionChart(type,[]))
                 this.initEchart('genderEchart',this.initAdpositionChart(type,[]))
@@ -1197,11 +1533,14 @@ const indexValue = [
 
 
             handlerTypeOfIndex(val){
-                return this.indexValue.map(item=>{
+                let type=''
+                this.indexValue.forEach(item=>{
                     if(item.value==val){
-                        return item.type
+                        type= item.type
                     }
                 })
+
+                return type
             }
         },
         mounted() {
@@ -1209,6 +1548,9 @@ const indexValue = [
                 this.initEchart('gaugeEchart',this.initGaugechart(30))
                 this.initEchart('newDataEchart',this.initNewDataChart())
                 this.initEchart('materialEchart',this.initMaterialChart())
+                this.initEchart('accountIndexEchart',this.initAccountIndexEchart('激活',[]))
+                this.echartIndexChange('cost')
+                
             })
             
         },
@@ -1288,6 +1630,7 @@ const indexValue = [
 <style lang="scss" scoped>
 // #
 .accountPage{
+    
     .echart{
         margin-top: 30px;
     }
@@ -1312,7 +1655,7 @@ const indexValue = [
     }
     .accountBodyRight{
         width: 25%;
-        flex-shrink: 0;
+        // flex-shrink: 0;
         padding: 25px;
     }
     .accountBodyLeft,.accountBodyRight{
@@ -1370,20 +1713,83 @@ const indexValue = [
         .top{
             display: flex;
             justify-content: space-between;
+            padding-top: 8px;
         }
         .item{
             width: 20%;
+            min-width: 100px;
+            
+        }
+        .todyCost{
+            font-size: 2em;
+            font-weight: 700;
+            color:#303133;
+            margin-bottom: 10px;
+            width: 100%;
+            
+        }
+        .sign{
+            font-size: 18px;
+            .rise{
+                color: #F2637B;
+                width: 16px;
+                height: 16px;
+                text-align: center;
+                // background-color: #F2637B;
+                // border-radius: 50%;
+                // color: white;
+                // font-size: 14px;
+                transform: rotate(-30deg);
+            }
+            .fall{
+                color: green;
+            }
+            .up{
+                width: 16px;
+                height: 16px;
+                text-align: center;
+                background-color: #F2637B;
+                border-radius: 5px;
+                color: white;
+            }
+        }
+        .yesterdayCost{
+            font-size: 15px;
+            font-weight: 500;
+            color:#303133;
+            margin-bottom:8px ;
+        }
+        .IndexName{
+            font-size: 15px;
+            font-weight: 600;
+            color:#303133;
+            display: inline-block;
+            cursor: pointer;
+        }
+        .IndexNameActive{
+            color:#2461F1;
+        }
+        .IndexNameActive::after{
+            content: '';
+            display: block;
+            width: 15px;
+            height: 3px;
+            background: #2461F1;
+            position: relative;
+            top: 5px;
+            left: 50%;
+            margin-left: -8px;
         }
-
         .showIndex{
             position: absolute;
             top: -5px;
             right: 0px;
-            font-size: 14px;
+            font-size: 12px;
             cursor: pointer;
+            color: #909399;
         }
         .showIndex:hover{
-            color:#1890ff
+            color:#2461F1
         }
     }
 

+ 300 - 0
src/views/modules/stockWatch/modules/customColumn.vue

@@ -0,0 +1,300 @@
+<template>
+  <div class="customColumnKS">
+    <a-modal v-model="visibleOk" title="自定义列" on-ok="handleOk" @cancel="handleCancel" width="65%">
+      <template slot="footer">
+        <a-button key="back" @click="handleCancel">取消</a-button>
+        <a-button key="submit" type="primary" :loading="loading" @click="handleOk">应用</a-button>
+      </template>
+      <!-- <a-input-search placeholder="输入要添加的列的名称" style="width: 40%" enter-button @search="onSearch" /> -->
+      <div class="zhuti">
+        <div class="addlist">
+          <p>可添加的列</p>
+          <div class="selectionList">
+            <!--  v-for="(item,index) in addColumns" :key="index" -->
+            <!-- <div v-if="mediaType==1"> -->
+              <selectComponent
+              :showCol="mylistNum"
+              @getshowlist="getshowlist"
+              :fixedCol="fiexColumn"
+              :mediaType='mediaType'
+              
+              />
+            <!-- </div> -->
+            <!-- <div v-if="mediaType==2">
+              <selectComponentKS
+              :showCol="mylistNum"
+              @getshowlist="getshowlist"
+              :fixedCol="fiexColumn"
+              :mediaType='mediaType'
+              
+            />
+            </div> -->
+            
+          </div>
+        </div>
+        <div class="listNum">
+          <p>已选{{mylistNum.length}}列</p>
+          <a-button id="btn" type="link" @click="clearAllList">清空全部</a-button>
+          <ul class="selectlist">
+                <!-- draggable="true"
+                  @dragstart="handleDragStart($event, item.dataIndex)"
+                  @dragover.prevent="handleDragOver($event, item.dataIndex)"
+                  @dragenter="handleDragEnter($event, item.dataIndex)"
+                  @dragend="handleDragEnd($event, item.dataIndex)" -->
+            <li v-for="(item,index) in mylistNum" :key="index">
+              <span v-if=" index < fiexColumn.length">
+                <a-icon type="lock" />
+                <span class="listText">{{item.title}}</span>
+              </span>
+              <span v-else-if=" index >=fiexColumn.length"  >
+                <a-icon type="menu" style="color:#ccc" />
+                <span class="listText">{{item.title}}</span>
+                <a-icon
+                  type="close"
+                  @click="deleteCol(item,index)"
+                  id="closeStyle"
+                  style="fontSize:12px;"
+                />
+              </span>
+            </li>
+          </ul>
+        </div>
+      </div>
+    </a-modal>
+  </div>
+</template>
+
+<script>
+import selectComponent from './selectComponent'
+// import selectComponentKS from './selectComponentKS'
+export default {
+  components: {
+    selectComponent,
+    // selectComponentKS,
+  },
+  props: ['visible', 'listNum', 'fiexColumn','mediaType'],
+
+  data() {
+    return {
+      dragging: null,
+      dataKey: 0,
+      visibleOk: false,
+      mylistNum: [],
+      loading: false
+    }
+  },
+  watch: {
+    visible(n, o) {
+      // console.log(n,o)
+      this.visibleOk = this.visible
+    },
+    listNum: {
+      handler(newValue, oldValue) {
+        console.log(newValue, oldValue)
+        this.mylistNum = newValue
+      },
+      immediate: true
+      // deep: true
+    }
+  },
+  methods: {
+     //li展示里的关闭按钮 删除当前被选中的这一个列
+    deleteCol(item, index) {
+      this.mylistNum = this.mylistNum.filter((item1, num) => {
+        return num != index
+      })
+    },
+    handleDragStart(e, item) {
+      this.dragging = item
+    },
+    handleDragEnd(e, item) {
+      this.dragging = null
+    },
+    //首先把div变成可以放置的元素,即重写dragenter/dragover
+    handleDragOver(e) {
+      e.dataTransfer.dropEffect = 'move' // e.dataTransfer.dropEffect="move";//在dragenter中针对放置目标来设置!
+    },
+    handleDragEnter(e, item) {
+      e.dataTransfer.effectAllowed = 'move' //为需要移动的元素设置dragstart事件
+      if (item === this.dragging) {
+        return
+      }
+      const newItems = [...this.mylistNum]
+      console.log(newItems)
+      const src = newItems.findIndex(v => v.dataIndex === this.dragging)
+      const dst = newItems.findIndex(v => v.dataIndex === item)
+
+      newItems.splice(dst, 0, ...newItems.splice(src, 1))
+
+      this.mylistNum = newItems
+    },
+    //弹出框确定
+    handleOk(e) {
+      this.loading = false
+      this.visibleOk = false
+      this.$emit('closeCustomColumn', false)
+      this.$emit('changeColumn', this.mylistNum)
+    },
+    //取消按钮
+    handleCancel() {
+      this.visibleOk = false
+      this.$emit('closeCustomColumn', false)
+    },
+    //清空全部
+    clearAllList() {
+      this.mylistNum = [...this.fiexColumn]
+    },
+    //从自定义列拿选择的项
+    getshowlist(val) {
+      var arr = []
+
+      // console.log(val)
+      if (val.length) {
+        if (val.flag) {
+          let newArr = val.arr
+          newVal.map((item, index) => {
+            // if(JSON.stringify(this.listNum).indexOf(JSON.stringify(item))==-1){
+            //  this.listNum.push(item); // 进行动态的操作
+            // }
+            var result = this.listNum.some(items => {
+              if (items.dataIndex == item.dataIndex) {
+                return true
+              }
+            })
+
+            // console.log(result)
+            if (result) {
+              newArr.splice(index, 1)
+            }
+          })
+
+          this.mylistNum = [...this.mylistNum, ...newArr]
+        } else {
+          //取消全选  清楚listNum中的val里的值
+          val.arr.map((item, index) => {
+            var result = this.mylistNum.some(items => {
+              if (items.dataIndex == item.dataIndex) {
+                return true
+              }
+            })
+            // console.log(result)
+            if (result) {
+              this.mylistNum.splice(index, 1)
+            }
+          })
+        }
+      } else {
+        arr = this.mylistNum.filter((item, index) => {
+          return item.dataIndex == val.dataIndex
+        })
+      }
+      if (arr.length) {
+        var index
+        this.mylistNum.map((item, ind) => {
+          if (item.dataIndex == val.dataIndex) {
+            index = ind
+          }
+        })
+        console.log(index)
+        this.mylistNum.splice(index, 1)
+      } else {
+        this.mylistNum.push(val)
+      }
+    }
+  },
+  mounted() {}
+}
+</script>
+
+<style lang="scss" scoped>
+
+
+.addlist {
+  float: left;
+  width: 70%;
+  border: 1px solid #eee;
+  .selectionList {
+    padding: 10px 15px;
+    height: 450px;
+    overflow: auto;
+    .leibie {
+      .leiName {
+        font-size: 26px;
+        text-align: left;
+      }
+    }
+    .jutixiang {
+      display: inline-block;
+      width: 32%;
+      box-sizing: border-box;
+      padding: 10px 3px;
+    }
+  }
+}
+.listNum {
+  float: right;
+  width: 28%;
+  border: 1px solid #eee;
+  position: relative;
+}
+.zhuti {
+  margin-top: 15px;
+  overflow: hidden;
+
+  p {
+    height: 40px;
+    line-height: 20px;
+    padding: 10px 15px;
+
+    background: rgb(249, 250, 253);
+    border-bottom: 1px solid #eee;
+  }
+  #btn {
+    position: absolute;
+    right: 0;
+    top: 5px;
+  }
+  .selectlist {
+    width: 100%;
+    list-style: none;
+    margin: 0;
+    height: 450px;
+    padding: 0 15px 10px;
+    overflow: auto;
+
+    li {
+      width: 100%;
+      padding: 5px 8px;
+      margin: 6px 0;
+      border-radius: 10px;
+      background: rgb(248, 248, 248);
+      height: 32px;
+      position: relative;
+      span {
+        width: 80%;
+        height: 100%;
+        display: inline-block;
+        margin: 0 10px;
+        // overflow:hidden;
+        // text-overflow:ellipsis;
+        // white-space: nowrap;
+      }
+      .listText {
+        position: absolute;
+        top: 2;
+        left: 10;
+        width: 60%;
+        overflow: hidden;
+        white-space: nowrap;
+        text-overflow: ellipsis;
+      }
+      #closeStyle {
+        position: absolute;
+        top: 9px;
+        right: 7px;
+      }
+    }
+  }
+}
+
+</style>

+ 240 - 0
src/views/modules/stockWatch/modules/selectComponent.vue

@@ -0,0 +1,240 @@
+<template>
+  <div>
+    <div v-for="(item,index) in customFields" :key="index">
+      <div class="leibie">
+        <p class="leiName">{{item.title}}</p>
+        <!-- <span class="jutixiang">
+          <a-checkbox
+            :value="index"
+            name="type"
+            @change="isSelectAll($event,index)"
+            :checked="item.checkall"
+          >全选</a-checkbox>
+        </span> -->
+        <!-- {{item.form}} -->
+        <a-checkbox-group v-model="item.form" >
+          <span class="jutixiang" v-for="(zhi,num) in item.specificFields " :key="num">
+
+            <a-checkbox :value="zhi.dataIndex" :disabled="zhi.disabled"  name="type" @change="checkboxClick(zhi)">
+              <a-tooltip
+                class="select-component"
+                placement="top"
+                :title="zhi.tip"
+                :overlayClassName="tooltipShow"
+              >{{zhi.title}}</a-tooltip>
+            </a-checkbox>
+          </span>
+        </a-checkbox-group>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import  {TTcustomFields ,KScustomFields}  from '../../columnConst/accountConst'
+// let customFields=customFields
+export default {
+  props: ['showCol','fixedCol','mediaType'],
+  data() {
+    return {
+        // customFields,
+      customFields:[],
+      quanxuanflag: [],
+      hovered: false,
+      tooltipShow: 'tooltipShow',
+      toParentArr: []
+    }
+  },
+  watch: {
+    
+    showCol(n) {
+      // console.log(n)
+      //
+      if (this.showCol.length == this.fixedCol.length) {
+
+        for (let i = 0; i < this.customFields.length; i++) {
+          this.customFields[i].form=[]          
+        }
+        this.showCol.map((item, index) => {
+          this.customFields.map((it, ind) => {
+            it.specificFields.map((i, d) => {
+              if (i.dataIndex === item.dataIndex) {
+                it.form.push(item.dataIndex)
+              }else{
+
+              }
+            })
+          })
+        })
+      } else {
+        
+       for (let i = 0; i < this.customFields.length; i++) {
+          this.customFields[i].form=[]
+          
+        }
+        n.map((item, index) => {
+          this.customFields.map((it, ind) => {
+            it.specificFields.map((i, d) => {
+              if (i.dataIndex === item.dataIndex) {
+                it.form.push(item.dataIndex)
+              }else{
+
+              }
+            })
+          })
+        })
+      }
+      // console.log(this.form)
+    },
+  
+  },
+  mounted() {
+    if(this.mediaType==1){
+      //头条自定义列
+      this.customFields=TTcustomFields
+    }else if(this.mediaType==2){
+      //快手自定义列
+      this.customFields=KScustomFields
+    }
+    for (let i = 0; i < this.customFields.length; i++) {
+      this.customFields[i].form=[]
+    }
+    // console.log(1)
+    this.showCol.map((item, index) => {
+      this.customFields.map((it, ind) => {
+        it.specificFields.map((i, d) => {
+          if (i.dataIndex === item.dataIndex) {
+            it.form.push(item.dataIndex)
+          }
+        })
+      })
+    })
+    this.fixedCol.map((item, index) => {
+      this.customFields.map((it, ind) => {
+        it.specificFields.map((i, d) => {
+          if (i.dataIndex === item.dataIndex) {
+            i.disabled=true;
+          }
+        })
+      })
+    })
+
+
+    // console.log(this.customFields);
+    
+  },
+  methods: {
+    hide() {
+      this.clicked = false
+      this.hovered = false
+    },
+    handleHoverChange(visible) {
+      this.clicked = false
+      this.hovered = visible
+    },
+    getPopupContainer() {
+      console.log(this)
+    },
+
+    //全选框   判断是否全选
+    isSelectAll(e, val) {
+      //像父元素传递
+      console.log(e, val)
+      let arr=JSON.parse(JSON.stringify(this.customFields[val].specificFields))
+      let valArr={
+        flag:true,
+        arr
+      }
+      this.customFields[val].checkall = e.target.checked
+      console.log(this.customFields[val].checkall)
+
+      if (this.customFields[val].checkall) {
+       
+        this.customFields[val].form=[]
+ 
+        this.customFields[val].specificFields.map((item, index) => {
+
+          this.customFields[val].form.push(item.dataIndex)
+
+        })
+        valArr.flag=true;
+        this.$emit('getshowlist', valArr)
+      } else {
+        console.log(this.customFields[val])
+        this.customFields[val].form=[];
+        valArr.flag=false;
+        console.log(this.customFields[val].form=[])
+        this.$emit('getshowlist', valArr)
+      }
+
+      console.log(this.form[val])
+    },
+
+    onChange(){
+        
+    },
+
+    //复选框的点击事件
+    checkboxClick(val) {
+      // console.log(val)
+    //   this.$emit('update:count',)
+      this.$emit('getshowlist', val)
+      // console.log(val,this.customFields[0].form)
+      // this.customFields[val].checkall=!this.customFields[val].checkall
+      // for (let i = 0; i < this.customFields.length; i++) {
+      //   // console.log(this.customFields[0].form,this.customFields[i].specificFields.length)
+      //   if(this.customFields[i].form.length==this.customFields[i].specificFields.length-1){
+      //       this.customFields[i].checkall=true;
+      //   }else{
+      //     this.customFields[i].checkall=false;
+      //   }
+          
+      //   }
+    }
+  }
+}
+</script>
+<style>
+.tooltipShow {
+  max-width: 30%;
+}
+.tooltipShow .ant-tooltip-content .ant-tooltip-inner {
+  background: white;
+  font-size: 10px;
+  color: #333;
+}
+.ant-tooltip-content .ant-tooltip-arrow::before {
+  background-color: white;
+}
+</style>
+<style lang="scss" scoped>
+.leibie {
+  width: 100%;
+  margin-bottom: 10px;
+  .leiName {
+    font-size: 20px;
+    text-align: left;
+    margin-bottom: 5px;
+    margin-top: 0px;
+  }
+}
+.jutixiang {
+  display: inline-block;
+  width: 32%;
+  box-sizing: border-box;
+  padding: 8px 3px;
+  height: 30px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.ant-tooltip-content .tooltipShow {
+  background: #eee;
+  font-size: 10px;
+  color: #333;
+}
+
+.ant-checkbox-group {
+  width: 100%;
+}
+</style>

+ 1 - 1
src/views/user/Login.vue

@@ -148,7 +148,7 @@
     },
     data() {
       return {
-        customActiveKey: 'tab1',
+        customActiveKey: 'tab2',
         loginBtn: false,
         // login type: 0 email, 1 username, 2 telephone
         loginType: 0,

+ 4 - 3
vue.config.js

@@ -68,7 +68,8 @@ module.exports = {
     open : true,
     proxy: {
       '/jeecg-boot': {
-        //  target: 'http://192.168.1.8:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
+          // target: 'http://192.168.1.8:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
+          // target: 'http://192.168.1.8:8081', //请求本地 需要jeecg-boot后台项目  蒙蒙
         // target: 'http://192.168.0.59:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.1.188:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.2.115:8080', //请求本地 需要jeecg-boot后台项目  祚云
@@ -79,13 +80,13 @@ module.exports = {
         // target: 'http://192.168.1.219:8080', //请求本地 需要jeecg-boot后台项目  赵西安
         // target: 'http://192.168.1.193:8080', //请求本地 需要jeecg-boot后台项目  李煜一
         // target: 'http://192.168.1.193:31012', //请求本地 需要jeecg-boot后台项目  李煜一
-        target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
+        //  target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
         // target: 'https://trac.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
         // target: 'http://39.106.184.70:8088/', //请求本地 需要jeecg-boot后台项目
         //  target: 'http://adsp.tjyourong.com.cn/', //请求本地 需要jeecg-boot后台项目
         // target: 'http://192.168.1.251/', //请求本地 需要jeecg-boot后台项目
         // target:'http://118.24.244.213:8804',
-      //  target:'http://139.186.151.174:8804', //测试
+       target:'http://139.186.151.174:8804', //测试
 
         ws: false,
 

+ 0 - 162
面试题.md

@@ -1,162 +0,0 @@
-#  2月22日 
-
-- 基础题
-  - 编写一个方法,该方法接收两个参数,分别为 k 和 一个无序的纯数字数组。该方法在执行后,会返回数组中第 k 大的数字。特别注意,如果数组中,有两位数值一样的数字,同数值数字排名并列。如 [3,1,3,2,5,4,5] 中,第 1 大的数字为 5,第2大的数字为 4,第5大的数字为 1?
-  - `__proto__`  和 prototype 之前有什么关系?
-  - call(), .apply() .bind() 的区别和作用?bind 方法如何来实现?
-
-- 附加题
-  - `JS`中基础数据类型有哪几种?了解包装对象么?
-  - 2、如何判断this?箭头函数的this是什么?
-
-# 2月23日
-
-- 基础题 
-  - 如何中断ajax请求?
-  - 什么是同步?什么是异步?
-  - 什么是宏任务?什么是微任务?
-
-- 附加题
-
-# 2月24日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 2月25日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 2月26日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 2月27日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 2月28日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月1日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月2日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月3日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月3日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月4日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月5日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月6日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月7日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月8日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月9日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月10日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月11日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月12日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月13日
-
-- 基础题
-  - 
-
-- 附加题
-
-# 3月14日
-
-- 基础题
-  - 
-
-- 附加题
-
-
-