vue中創(chuàng)建含有Echarts的Dailog組件

需要將彈窗作為組件引用到vue頁面中,組件中存在dailog彈窗违诗,彈窗中存在一個(gè)echarts畫成的折線圖怔鳖。

測(cè)試代碼

<template>
    <el-dialog :title="dialogTitle"
    :visible.sync="dialogVisible">
      <div ref="myChart" style="height:400px;width: 96%;"></div>
    </el-dialog>
</template>

<script>
  import echarts from 'echarts'

    export default {
      name: "demo",
      props: {
        dialogTitle: {
          type: String,
          default: '標(biāo)題'
        },
        visible: {
          type: Boolean,
          default: false
        },
      },
      data() {
        return {
          chart: null,
          dialogVisible:true,
          option: {
            legend: {
              data: ['招商銀行', '浦發(fā)銀行', '廣發(fā)銀行', '上海銀行']
            },
            xAxis: {
              type: 'category',   // 還有其他的type摹菠,可以去官網(wǎng)喵兩眼哦
              data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],   // x軸數(shù)據(jù)
              name: '日期',   // x軸名稱
              // x軸名稱樣式
              nameTextStyle: {
                fontWeight: 600,
                fontSize: 18
              }
            },
            yAxis: {
              type: 'value',
              name: '縱軸名稱',   // y軸名稱
              // y軸名稱樣式
              nameTextStyle: {
                fontWeight: 600,
                fontSize: 18
              }
            },
            tooltip: {
              trigger: 'axis'   // axis   item   none三個(gè)值
            },
            series: [
              {
                name: '招商銀行',
                data: [820, 932, 901, 934, 1290, 1330, 1320],
                type: 'line'
              },
              {
                name: '浦發(fā)銀行',
                data: [620, 711, 823, 934, 1445, 1456, 1178],
                type: 'line'
              },
              {
                name: '廣發(fā)銀行',
                data: [612, 920, 1140, 1160, 1190, 1234, 1321],
                type: 'line'
              },
              {
                name: '上海銀行',
                data: [234, 320, 453, 567, 789, 999, 1200],
                type: 'line'
              }
            ]
          },

        };
      },
      watch: {

      },
      mounted() {
        this.$nextTick(()=>{
            this.getEchart()
        })
      },
      methods:{
          getEchart(){
            // this.$nextTick(()=>{
            //   var myChart =  echarts.init(this.$refs.myChart)
            // })

            var myChart = echarts.init(this.$refs.myChart)
            console.log(myChart)
            myChart.setOption(this.option,true)
          }
      }
    }
</script>

<style scoped>

</style>

1.爬坑重點(diǎn)

賦值.png

echar組件.png

此處不能直接在mounted中調(diào)用獲取折線圖容器 getElementById()方法盒卸,原因是dailog若未加載則其中echarts容器就獲取不到值,因此不能用id 使用 ref和 $refs取值的方式次氨。

附加

原始代碼

<template>
  <!-- 封裝彈框 -->
  <div class="echartsDialogUtil">
<!--    <el-dialog-->
<!--      v-dialogDrag-->
<!--      :title="dialogTitle"-->
<!--      :visible.sync="visible"-->
<!--      :before-close="handleClose"-->
<!--      :append-to-body="true"-->
<!--      @updateVisible="updateVisible"-->
<!--      @resetPopupData="resetPopupData"-->
<!--      @submitPopupData="submitPopupData"-->
<!--      @handleClose="handleClose"-->
<!--    >-->
      <el-dialog
        v-dialogDrag
        :title="dialogTitle"
        :visible.sync="visible"
        :before-close="handleClose"
        :append-to-body="true"
        @handleClose="handleClose"
      >
        <div ref="myechar" style="height:400px;width: 100%;"  />
    </el-dialog>
  </div>
</template>

<script>
  import dailyInfomationApi from '@/api/pxf-settlement-outnetpub/informationDisclosure/dailyInfomationApi'
  import echarts from 'echarts'
  import moment from 'moment'

    export default {
      name: "echartsDialogUtil",
      props: {
        dialogTitle: {
          type: String,
          default: '標(biāo)題'
        },
        visible: {
          type: Boolean,
          default: false
        },
        id:{
          type: String,
          default: ''
        },
        dataDate:{
          type: String,
          default: ''
        },
        tableName:{
          type: String,
          default: ''
        }
      },
      watch:{

      },
      computed: {
        // dialogVisible: {
        //   get() {
        //     return this.visible
        //   },
        //   set(val) {
        //     // 當(dāng)visible改變的時(shí)候蔽介,觸發(fā)父組件的 updateVisible方法,在該方法中更改傳入子組件的 centerDialogVisible的值
        //     this.$emit('updateVisible', val)
        //   }
        // }
      },
      data() {
        return {
          pickerDisabled: {
            disabledDate: (time) => {
              return time.getTime() > new Date(new Date().toLocaleDateString()).getTime()
            }
          },
          // dataDate:'',
          lineOption: null,
          tableName: '',
          // 曲線查詢條件
          ipForeLoadCurvSearch: {
            dataDate: '',
            id: ''
          },
          myChartpl: null,
        }
      },
      mounted() {
        this.$nextTick(()=>{
          this.ForeLineChart()
        })
        // this.getdatetime()// 查詢當(dāng)前時(shí)間
        this.queryIpForeLoadCurv()
        // this.ForeLineChart('myechar')


      },
      methods: {
        // 重置Fore
        // resetFore() {
        //   this.ipForeLoadCurvSearch = {
        //     dataDate: '',
        //     id: ''
        //   }
        // },
        getdatetime() {
          // this.ipForeLoadCurvSearch.dataDate = this.dateFormat(new Date())
        },
        dateFormat(param) {
          var date = param
          if (date === undefined) {
            return ''
          }
          return moment(date).format('YYYY-MM-DD')
        },
        // 電網(wǎng)負(fù)荷曲線查詢
        queryIpForeLoadCurv() {
          if (this.lineOption !== null) {
            this.myChartpl.setOption(this.lineOption, true)
          }
          this.ipForeLoadCurvSearch.id = this.id;
          this.ipForeLoadCurvSearch.dataDate = this.dataDate
          dailyInfomationApi.queryIpForeLoadCurvPl(this.ipForeLoadCurvSearch).then(res => {
            if (res.data === '無數(shù)據(jù)') {
              this.$notify({message: '電網(wǎng)負(fù)荷預(yù)測(cè)暫無數(shù)據(jù) !', type: 'info'})
              return
            }
            this.myChartpl.setOption({
              legend: {
                data: res.data
              },
              series: res.data.series,
            })

          })
        },
        // 繪制電網(wǎng)負(fù)荷曲線
        ForeLineChart(lineId) {
          // 生成時(shí)間橫坐標(biāo)
          var m = 0
          var n = 0
          var arr = []
          for (var i = 0; i < 96; i++) {
            arr.push((m > 9 ? m : '0' + m) + ':' + (n > 9 ? n : '0' + n))
            n += 15
            if (n > 45) {
              n = 0
              m += 1
            }
          }
          arr.push('00:00')

          this.myChartpl = echarts.init(this.$refs.myechar)
          //  當(dāng)窗口或者大小發(fā)生改變時(shí)執(zhí)行resize,重新繪制圖表
          window.addEventListener('resize', () => {
            this.myChartpl.resize()
          })

          this.lineOption = ({
            title: {
              top: '1%',
              left: 'center',
              text: '電網(wǎng)負(fù)荷預(yù)測(cè)'
            },
            legend: {
              right: '5%',
              data: []
            },
            grid: {
              left: '5%',
              right: '2%',
              bottom: '0%',
              containLabel: true
            },
            tooltip: {
              trigger: 'axis',
              confine: true// 防止提示框超出范圍
            },
            xAxis: {
              type: 'category',
              boundaryGap: false,
              axisLabel: {interval: 3}, // 時(shí)間間隔
              data: arr
            },
            yAxis: {
              name: '單位:兆瓦',
              type: 'value'
            },
            series: []
          })
          this.myChartpl.setOption(this.lineOption)
        },

        Cancel () {
          this.$emit('resetechartsDialogUtil')
        },
        Save () {
          this.$emit('submitechartsDialogUtil')
        },
        handleClose () {
          this.$emit('handleClose')
        },
        // // 修改是否讓頁面顯示與隱藏的事件
        // updateVisible (val) {
        //   this.dialogVisible = val
        // },
        // // 點(diǎn)擊取消的事件
        // resetPopupData () {
        //   //  這里可重置數(shù)據(jù)
        //   this.dialogVisible = false
        // },
        // // 點(diǎn)擊確定的按鈕
        // async submitPopupData () {
        //   this.dialogVisible = false
        // },
      }
    }
</script>

<style scoped>

</style>

在父頁面引用時(shí)考慮到關(guān)閉虹蓄、確定犀呼、取消、等按鈕用于隱藏彈窗薇组。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末外臂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子律胀,更是在濱河造成了極大的恐慌宋光,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炭菌,死亡現(xiàn)場(chǎng)離奇詭異罪佳,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)黑低,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門赘艳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人克握,你說我怎么就攤上這事蕾管。” “怎么了菩暗?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵掰曾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我勋眯,道長(zhǎng)婴梧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任客蹋,我火速辦了婚禮,結(jié)果婚禮上孽江,老公的妹妹穿的比我還像新娘讶坯。我一直安慰自己,他們只是感情好岗屏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布辆琅。 她就那樣靜靜地躺著,像睡著了一般这刷。 火紅的嫁衣襯著肌膚如雪婉烟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天暇屋,我揣著相機(jī)與錄音似袁,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛昙衅,可吹牛的內(nèi)容都是我干的扬霜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼而涉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼著瓶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起啼县,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤材原,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后季眷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體余蟹,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年瘟裸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了客叉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡话告,死狀恐怖兼搏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沙郭,我是刑警寧澤佛呻,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站病线,受9級(jí)特大地震影響吓著,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜送挑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一绑莺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惕耕,春花似錦纺裁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挤安,卻和暖如春谚殊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蛤铜。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工嫩絮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丛肢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓絮记,卻偏偏與公主長(zhǎng)得像摔踱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子怨愤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355