<template>
<div class="index">
  <div class="b-title">群发列表 <el-button style="float: right; margin-bottom: 10px;" type="primary" plain @click="show = true">新建群发消息</el-button></div>
  <el-table
    :data="tableData"
    style="width: 100%">
    <el-table-column type="expand">
      <template slot-scope="props">
        <el-table
          :border="false"
          :data="[JSON.parse(props.row.content)]">
          <el-table-column
            label="类型"
          >
            <template slot-scope="item">
              {{item.row.type | typeFilter}}
            </template>
          </el-table-column>
          <el-table-column
            v-if="JSON.parse(props.row.content).type !== 'text'"
            prop="media_id"
            label="media_id"
          >
            <template slot-scope="item">
              {{item.row.content}}
            </template>
          </el-table-column>
          <el-table-column
            prop="url"
            label="内容"
          >
            <template slot-scope="item">
              <div v-if="item.row.type === 'text'">
                <span v-html="item.row.content.replace(/\/[\u4E00-\u9FA5]{1,3}/gi, emotion)"></span>
              </div>
              <div v-else-if="item.row.type === 'image'">
                <img style="width: 80px;" :src="item.row.url"/>
              </div>
              <div v-else-if="item.row.type === 'video'">
                <a :href="item.row.url" target="_blank">点击查看视频</a>
              </div>
            </template>
          </el-table-column>
        </el-table>
      </template>
    </el-table-column>
    <el-table-column
      prop="send_id"
      label="消息ID">
    </el-table-column>
    <el-table-column
      label="消息类型">
      <template slot-scope="scope">
        {{ scope.row.type | typeListFilter}}
      </template>
    </el-table-column>
    <el-table-column
      prop="send_num"
      label="预计发送">
    </el-table-column>
    <el-table-column
      prop="arrive_num"
      label="已发送">
    </el-table-column>
    <el-table-column
      prop="failed_num"
      label="发送失败">
    </el-table-column>
    <el-table-column
      prop="start_at"
      label="开始时间">
    </el-table-column>
    <el-table-column
      prop="end_at"
      label="截止时间">
    </el-table-column>
    <el-table-column
      prop="created_at"
      label="发送时间">
    </el-table-column>
    <el-table-column
      label="操作"
      min-width="100"
    >
      <template slot-scope="scope">
        <el-button
          @click="getMsgResult(scope.row.send_id)"
          type="text"
          plain
          size="mini">
          查询及时结果
        </el-button>
      </template>
    </el-table-column>
  </el-table>
  <page :total="total" :limit="limit"  @pageChange="onPageChange" @sizeChange="onSizeChange"/>
  <el-dialog title="新建群发消息"
             :visible.sync="show">
      <el-form ref="searchFrom" :model="searchFrom" label-width="150px">
        <el-form-item label="是否发送筛选用户">
          <el-switch
            v-model="searchFrom.is_test"
            active-color="#13ce66"
            inactive-color="#ff4949"/>
        </el-form-item>
        <el-form-item label="时间" v-if="searchFrom.type === 1">
          <el-date-picker
            v-model="searchFrom.time"
            type="datetimerange"
            range-separator="至"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
            :default-time="['00:00:00','23:59:59']">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="类型">
          <el-radio-group v-model="searchFrom.type">
            <el-radio :label="1">48时内关注但未购课用户</el-radio>
            <el-radio :label="2">有体验课但没有正式课用户</el-radio>
            <el-radio :label="3">未试听用户</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-row>
          <el-col :span="16">
            <el-form-item label="用户ID">
              <el-input v-model="searchFrom.user_ids"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6" :offset="2">
            <el-button type="primary" @click="onSelectUser">选择用户</el-button>
          </el-col>
        </el-row>
        <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
          <el-tab-pane label="文本" name="text">
            <div class="inner-edit_area">
              <el-input
                type="textarea"
                :autosize="{ minRows: 4, maxRows: 8}"
                placeholder="请输入内容"
                v-model="content">
              </el-input>
            </div>
            <div style="float: right">
              <el-popover
                placement="bottom-end"
                width="400"
                :offset="10"
                trigger="manual"
                v-model="showEmotion">
                <div>
                  <emotion @emotion="handleEmotion" :height="200" ></emotion>
                </div>
                <el-button @click="showEmotion = !showEmotion" slot="reference" type="text">
                  <span class="icon_emotion emotion_switch"></span>
                </el-button>
              </el-popover>
            </div>
          </el-tab-pane>
          <el-tab-pane label="图片" name="image">
            <div class="flex-start">
              <div>
                <el-upload
                  action="/api/public/upload/zone"
                  :http-request="uploadFile"
                  :before-upload="beforeAvatarUpload"
                  list-type="picture-card"
                  :file-list="imageList"
                  :on-success="handleAvatarSuccess"
                  :on-remove="handleRemove"
                  :limit="1">
                  <i class="el-icon-plus"></i>
                </el-upload>
              </div>
              <div class="display-b" style="margin-left: 10px">
                <div class="choose_item" style="color: #888;" @click="getMediaList()"><i class="el-icon-plus" style="color: #8c939d"></i>从素材库中选择</div>
              </div>
            </div>
            <div v-if="showImage && mediaImageList.length > 0">
              <el-table
                :data="mediaImageList"
                @row-click="onChooseMedia"
                style="width: 100%">
                <el-table-column
                  prop="name"
                  label="名称">
                </el-table-column>
                <el-table-column
                  prop="media_id"
                  label="mediaId">
                </el-table-column>
                <el-table-column
                  label="URL">
                  <template slot-scope="scope">
                    <a :href="scope.row.url">
                      <img style="width: 60px;" :src="scope.row.url"/>
                    </a>
                  </template>
                </el-table-column>
              </el-table>
              <page-image :total="mediaImagePage.total" v-model="mediaImagePage.nowPage" :limit="mediaImagePage.limit" @pageChange="onImagePageChange" @sizeChange="onImageSizeChange"/>
            </div>
          </el-tab-pane>
          <el-tab-pane label="视频" name="video">
            <div class="flex-start">
              <el-upload
                class="upload-video"
                action="/api/public/upload/zone"
                :http-request="uploadVideo"
                :file-list="fileList"
                :on-remove="handleRemoveVideo"
                :limit="1">
                <el-button size="small" type="primary" :disabled="(fileUid && progress < 99)">点击上传</el-button>
                <div style="width: 300px">
                  <el-progress v-if="fileUid" :percentage="progress"></el-progress>
                </div>
              </el-upload>
              <div class="display-b">
                <div class="choose_item" style="color: #888;" @click="getMediaList()"><i class="el-icon-plus" style="color: #8c939d"></i>从素材库中选择</div>
              </div>
            </div>
            <div v-if="showVideo && mediaVideoList.length > 0">
              <el-table
                :data="mediaVideoList"
                @row-click="onChooseMedia"
                style="width: 100%">
                <el-table-column
                  prop="name"
                  label="名称">
                </el-table-column>
                <el-table-column
                  prop="media_id"
                  label="mediaId">
                </el-table-column>
                <el-table-column
                  label="URL">
                  <template slot-scope="scope">
                    <a :href="scope.row.info.down_url" target="_blank" v-if="scope.row.info && scope.row.info.down_url">
                      {{scope.row.info.title}}
                    </a>
                  </template>
                </el-table-column>
              </el-table>
              <page :total="total" v-model="nowPage" :limit="limit" @pageChange="onPageChange" @sizeChange="onSizeChange"/>
            </div>
          </el-tab-pane>
          <el-tab-pane label="图文" name="news">
            <div v-if="newsContent && newsContent.content && newsContent.content.news_item">
              <div class="news-media" style="display: inline-block">
                <el-card :body-style="{ padding: '0px' }">
                  <div v-for="(child, childIndex) in newsContent.content.news_item" style="position: relative">
                    <div v-if="newsContent.content.news_item.length === 1" class="single-cover">
                      <div class="title">{{child.title}}</div>
                      <img :src="child.thumb_url" style="width: 100%;margin-top: 20px;"/>
                      <div class="digest">{{child.digest}}</div>
                      <a class="preview" :href="child.url" target="_blank">
                        预览文章
                      </a>
                    </div>
                    <div v-else-if="newsContent.content.news_item.length > 1" class="clear-both bottomCover" style="position: relative">
                      <div v-if="childIndex === 0" class="muti-cover">
                        <img style="width: 100%;margin-top: 20px;" :src="child.thumb_url"/>
                        <div class="bottom-title">{{child.title}}</div>
                      </div>
                      <div class="next-cover clear-both" v-else>
                        <span class="next-title">{{child.title}}</span>
                        <img class="next-img" :src="child.thumb_url"/>
                      </div>
                      <a class="preview" :href="child.url" target="_blank">
                        预览文章
                      </a>
                    </div>
                  </div>
                </el-card>
              </div>
              <i class="el-icon-delete" @click="newsContent=''" style="display: inline-block"></i>
            </div>
            <div class="display-b">
              <div class="choose_item" style="color: #888;" @click="getMediaList()"><i class="el-icon-plus" style="color: #8c939d"></i>从素材库中选择</div>
            </div>
            <div v-if="showMedia && mediaList.length > 0">
              <el-table
                :data="mediaList"
                @row-click="onChooseMedia"
                style="width: 100%">
                <el-table-column
                  prop="media_id"
                  label="mediaId">
                </el-table-column>
                <el-table-column
                  label="URL">
                  <template slot-scope="scope">
                    <div class="news-media" style="display: inline-block;width: 200px;" v-if="scope.row.content && scope.row.content.news_item">
                      <div v-for="(child, childIndex) in scope.row.content.news_item" style="position: relative">
                        <div v-if="scope.row.content.news_item.length === 1" class="single-cover">
                          <div class="title">{{child.title}}</div>
                          <img :src="child.thumb_url" style="width: 100%;margin-top: 20px;"/>
                          <div class="digest">{{child.digest}}</div>
                          <a class="preview" :href="child.url" target="_blank">
                            预览文章
                          </a>
                        </div>
                        <div v-else-if="scope.row.content.news_item.length > 1" class="clear-both bottomCover" style="position: relative">
                          <div v-if="childIndex === 0" class="muti-cover">
                            <img style="width: 100%;margin-top: 20px;" :src="child.thumb_url"/>
                            <div class="bottom-title">{{child.title}}</div>
                          </div>
                          <div class="next-cover clear-both" v-else>
                            <span class="next-title">{{child.title}}</span>
                            <img class="next-img" :src="child.thumb_url"/>
                          </div>
                          <a class="preview" :href="child.url" target="_blank">
                            预览文章
                          </a>
                        </div>
                      </div>
                    </div>
                  </template>
                </el-table-column>
              </el-table>
              <page2 :total="total" v-model="mediaPage.nowPage" :limit="mediaPage.limit" @pageChange="onMediaPageChange" @sizeChange="onMediaSizeChange"/>
            </div>
          </el-tab-pane>
        </el-tabs>
      </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button type="primary" @click="send()">确 定</el-button>
    </span>
    <el-dialog :visible.sync="userDialog.show" append-to-body>
      <el-form label-width="90px">
        <el-row>
          <el-col :span="8">
            <el-form-item label="ID">
              <el-input v-model="searchUserFrom.userId"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="昵称">
              <el-input v-model="searchUserFrom.nickName"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="电话">
              <el-input v-model="searchUserFrom.mobile"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="8" :offset="16">
            <el-form-item>
              <el-button style="float: right" type="primary" plain @click="getUser">搜索</el-button>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <el-table
        :data="userList"
        ref="multipleTable"
        @selection-change="handleSelectionChange"
        style="width: 100%">
        <el-table-column
          type="selection"
          width="55">
        </el-table-column>
        <el-table-column
          className="f-c"
          label="用户">
          <template slot-scope="scope">
            <img style="margin-right:5px;width: 50px;height: 50px;border-radius: 50px" :src="scope.row.avatar">{{scope.row.nickname}}(ID:{{scope.row.user_id}})
          </template>
        </el-table-column>
        <el-table-column
          prop="mobile"
          label="手机号">
        </el-table-column>
      </el-table>
      <page :total="userDialog.total" :limit="userDialog.limit" @pageChange="onUserPageChange" @sizeChange="onUserSizeChange"/>
      <span slot="footer" class="dialog-footer">
        <el-button @click="userDialog.show = false">取 消</el-button>
        <el-button type="primary" @click="onConfirm">确 定</el-button>
      </span>
    </el-dialog>
  </el-dialog>
</div>
</template>

<script>
  import {uploadFileApi,getMsgListApi,sendMsgApi,getUserListApi,getMediaListApi} from "../../service/api";
  import page from '../framework/page'
  import page2 from '../framework/page'
  import pageImage from '../framework/page'
  import pageVideo from '../framework/page'
  import emotion from '../framework/Emotion/index'
  import CommonJs from '../../util/common';
  export default {
    name: "index",
    components: {
      page,
      page2,
      pageImage,
      pageVideo,
      emotion
    },
    data() {
      return {
        nowPage: 1,
        total: 0,
        limit: 10,
        mediaPage: {
          nowPage: 1,
          total: 0,
          limit: 5,
        },
        show: false,
        loading: false,
        activeName: 'text',
        list: [],
        content: '',
        uploadShow: true,
        imageList: [],
        fileList: [],
        imageContent: '',
        videoContent: '',
        searchFrom: {
          type: 1,
          is_test: false
        },
        tableData: [],
        fileUid: null,
        userDialog: {
          total: 0,
          limit: 10,
          nowPage: 1,
          show: false
        },
        userList: [],
        searchUserFrom: {},
        multipleSelection: [],
        showEmotion: false,
        showMedia: false,
        showImage: false,
        showVideo: false,
        mediaList: [],
        mediaImageList: [],
        mediaVideoList: [],
        mediaImagePage: {
          nowPage: 1,
          total: 0,
          limit: 5,
        },
        mediaVideoPage: {
          nowPage: 1,
          total: 0,
          limit: 5,
        },
        imageContent: null,
        videoContent: null,
        newsContent: null
      }
    },
    filters: {
      typeFilter(val){
        if(!val) return;
        if(val === 'text') return '文本';
        if(val === 'image') return '图片';
        if(val === 'video') return '视频';
        if(val === 'news') return '图文';
      },
      typeListFilter(val){
        if (!val) return '';
        if(val === 1) return '48时内关注但未购课用户';
        if(val === 2) return '有体验课但没有正式课用户';
        if(val === 3) return '未试听用户';
      }
    },
    methods: {
      handleClick(tab) {
        this.activeName = tab.name;
      },
      handleRemove(){
        this.uploadShow = true
        this.imageList = []
        this.imageContent = '';
      },
      handleRemoveVideo(){
        this.videoContent = '';
        this.fileList = []
      },
      beforeAvatarUpload(){
        this.uploadShow = false
      },
      handleAvatarSuccess(res) {
        this.imageList = [{name:res.data.url,url:process.env.IMAGE_URL_HEAD + res.data.url}]
      },
      uploadFile(a) {
        this.$store.dispatch('setProgress',{type:'new',id:a.file.uid});
        uploadFileApi({file:a.file,type:'wechat'}).then(res=>{
          this.imageContent = {
              content: res.media_id,
              url: res.url
          }
          this.imageList = [{name:res.media_id,url:res.url}]
          this.$message({
            type: 'success',
            message: '上传成功!'
          });
        }).catch(()=>{
          this.$message({
            type: 'error',
            message: '上传失败!'
          });
        })
      },
      uploadVideo(a){
        uploadFileApi({file:a.file,type:'wechat'}).then(res=>{
          this.uploadVideoFile(a, res)
        }).catch(()=>{
          this.$message({
            type: 'error',
            message: '上传失败!'
          });
        })
      },
      uploadVideoFile(a,data) {
        this.fileUid = a.file.uid;
        this.loading = true;
        this.$store.dispatch('setProgress',{type:'new',id:a.file.uid});
        uploadFileApi({file:a.file,type:'local'}).then(res=>{
          this.videoContent = {
              content: data.media_id,
              url: process.env.IMAGE_URL_HEAD + res.url
          }
          this.fileList = [{name:res.name,url:process.env.IMAGE_URL_HEAD + res.url}]
          this.loading = false;
          this.$message({
            type: 'success',
            message: '上传成功!'
          });
          this.$store.dispatch('setProgress',{type:'delete',id:a.file.uid});
          this.fileUid=null
        }).catch(()=>{
          this.loading = false;
          this.$message({
            type: 'error',
            message: '上传失败!'
          });
        })
      },
      send(){
        let json = {}
        json.type = this.searchFrom.type
        let msgTips = this.searchFrom.is_test ? '发送筛选用户,' : '不发送筛选用户,';
        if(this.searchFrom.type === 1){
          if(this.searchFrom.time && this.searchFrom.time.length > 0){
            console.log('this.searchFrom.time', this.searchFrom.time)
            json.start_at = CommonJs.dateFmt(this.searchFrom.time[0],"yyyy-MM-dd hh:mm:ss");
            json.end_at = CommonJs.dateFmt(this.searchFrom.time[1],"yyyy-MM-dd hh:mm:ss");
            msgTips += '48时内关注但未购课用户(' + json.start_at + '~' + json.end_at + ',';
          } else {
            this.$message({
              type: 'error',
              message: '请选择时间!'
            });
            return
          }
        } else if (this.searchFrom.type === 2) {
          msgTips += '有体验课但没有正式课用户,'
        } else if (this.searchFrom.type === 3) {
          msgTips += '未试听用户,'
        }
        if(this.searchFrom.user_ids){
          json.user_ids = this.searchFrom.user_ids
          msgTips += '用户ID:'+ json.user_ids;
        }else {
          this.$message({
            type: 'error',
            message: '请加入内部人员!'
          });
          return;
        }
        let _content = {}
        _content.type = this.activeName;
        if (this.activeName === 'text') {
          if(!this.content) {
            this.$message({
              type: 'error',
              message: '请输入文本!'
            });
            return
          } else {
            _content.content = this.content;
          }
        } else if (this.activeName === 'image') {
          if(!this.imageContent) {
            this.$message({
              type: 'error',
              message: '请上传图片!'
            });
            return
          } else {
            _content.content = this.imageContent.content;
            _content.url = this.imageContent.url;
          }

        } else if (this.activeName === 'video') {
          if(!this.videoContent) {
            this.$message({
              type: 'error',
              message: '请上传视频!'
            });
            return
          } else {
            _content.content = this.videoContent.content;
            _content.url = this.videoContent.url
          }
        } else if (this.activeName === 'news'){
            if (this.newsContent && this.newsContent.media_id) {
              _content.content =  this.newsContent.media_id
            } else {
              this.$message({
                type: 'error',
                message: '请选择图文!'
              });
            }
        }
        json.content = JSON.stringify(_content)
        json.is_test = this.searchFrom.is_test ? 2 : 1
        console.log("json", json);
        this.$confirm(msgTips, '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          sendMsgApi(json).then((res)=>{
            this.$message({
              message: res,
              type: 'success'
            });
            this.show = false;
            this.clearData();
            this.getMsgList();
          })
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '已取消发送'
          });
        });
      },
      clearData(){
        this.content = '';
        this.videoContent = null;
        this.imageContent = null;
        this.newsContent = null;
        this.activeName === 'text';
        this.searchFrom = {};
        this.fileList = [];
        this.imageList = [];
      },
      getMsgList(){
        let json = {
          limit: this.limit,
          page: this.nowPage
        };
        getMsgListApi(json).then((res)=>{
          this.tableData = res.list;
          this.total = res.total
        })
      },
      onMediaPageChange(val){
        this.mediaPage.nowPage = val
        this.getMediaList()
      },
      onMediaSizeChange(){
        this.mediaPage.nowPage = 1
        this.mediaPage.limit = val
        this.getMediaList()
      },
      onImagePageChange(val){
        this.mediaImagePage.nowPage = val
        this.getMediaList()
      },
      onImageSizeChange(val){
        this.mediaImagePage.nowPage = 1
        this.mediaImagePage.limit = val
        this.getMediaList()
      },
      onVideoPageChange(val){
        this.mediaVideoPage.nowPage = val
        this.getMediaList()
      },
      onVideoSizeChange(val){
        this.mediaVideoPage.nowPage = 1
        this.mediaVideoPage.limit = val
        this.getMediaList()
      },
      onPageChange(val){
        this.nowPage = val
        this.getMsgList()
      },
      onSizeChange(val){
        this.nowPage = 1
        this.limit = val
        this.getMsgList()
      },
      getMsgResult(id){
        if(!id) return;
        let json = {
          only_text: 1,
          send_id: id
        };
        getMsgListApi(json).then((res)=>{
          this.$message({
            message: res,
            type: 'success'
          });
          this.getMsgList();
        })
      },
      getUser(){
        let json = {
          page: this.userDialog.nowPage,
          limit: this.userDialog.limit
        };
        if (this.searchUserFrom.userId) {
          json.user_id = this.searchUserFrom.userId
        }
        if (this.searchUserFrom.nickName) {
          json.nickname = this.searchUserFrom.nickName
        }
        if (this.searchUserFrom.mobile) {
          json.mobile = this.searchUserFrom.mobile
        }
        getUserListApi(json).then(res=>{
          this.userList = res.list;
          this.userDialog.total = res.total;
        })
      },
      onUserPageChange(val){
        this.userDialog.nowPage = val
        this.getUser()
      },
      onUserSizeChange(val){
        this.userDialog.nowPage = 1
        this.userDialog.limit = val
        this.getUser()
      },
      handleSelectionChange(val) {
        this.multipleSelection = val;
      },
      onSelectUser(){
        this.userDialog.show = true;
        if(this.searchFrom.user_ids) {
          this.multipleSelection =  this.searchFrom.user_ids.split(',');
        } else {
          this.multipleSelection = []
        }
        this.getUser();
      },
      onConfirm(){
        let _list = this.multipleSelection;
        if(_list.length === 0) {
          this.$message({
            type: 'error',
            message: '请选择用户!'
          });
        } else {
          let _userIds = [];
          _list.forEach((item)=>{
            _userIds.push(item.user_id)
          })
          let _tmp = _userIds
          if (this.searchFrom.user_ids) {
            _tmp = _userIds.concat(this.stringToInt(this.searchFrom.user_ids.split(',')));
          }
          let _result = this.dedupe(_tmp);
          this.searchFrom.user_ids = _result.join(',');
          this.userDialog.show = false;
        }
      },
      dedupe(array){
        return Array.from(new Set(array));
      },
      stringToInt(list){
        let _list = list || [];
        _list = _list.map((val)=>{
            return parseInt(val, 10)
        })
        return _list;
      },
      emotion (res) {
        let word = res.replace(/\//gi,'')
        const list = ['微笑', '撇嘴', '色', '发呆', '得意', '流泪', '害羞', '闭嘴', '睡', '大哭', '尴尬', '发怒', '调皮', '呲牙', '惊讶', '难过', '酷', '冷汗', '抓狂', '吐', '偷笑', '可爱', '白眼', '傲慢', '饥饿', '困', '惊恐', '流汗', '憨笑', '大兵', '奋斗', '咒骂', '疑问', '嘘', '晕', '折磨', '衰', '骷髅', '敲打', '再见', '擦汗', '抠鼻', '鼓掌', '糗大了', '坏笑', '左哼哼', '右哼哼', '哈欠', '鄙视', '委屈', '快哭了', '阴险', '亲亲', '吓', '可怜', '菜刀', '西瓜', '啤酒', '篮球', '乒乓', '咖啡', '饭', '猪头', '玫瑰', '凋谢', '示爱', '爱心', '心碎', '蛋糕', '闪电', '炸弹', '刀', '足球', '瓢虫', '便便', '月亮', '太阳', '礼物', '拥抱', '强', '弱', '握手', '胜利', '抱拳', '勾引', '拳头', '差劲', '爱你', 'NO', 'OK', '爱情', '飞吻', '跳跳', '发抖', '怄火', '转圈', '磕头', '回头', '跳绳', '挥手', '激动', '街舞', '献吻', '左太极', '右太极']
        let index = list.indexOf(word)
        return `<img src="https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/${index}.gif" align="middle">`
      },
      handleEmotion (i) {
        this.content += i
      },
      onChooseMedia(val){
        console.log('onChooseMedia', val)
        if (this.type === 'image') {
          this.imageContent = {
            content: val.media_id,
            url: val.url
          }
          this.imageList = [{name:val.media_id,url:val.url}]
          this.showImage = false;
        } else if (this.type === 'video'){
          this.videoContent = {
            content: val.media_id,
            url: val.info.down_url
          }
          this.fileList = [{name:val.info.title,url:val.info.url}]
          this.showVideo = false;
        } else if (this.type === 'news'){
          this.newsContent = val
          this.showMedia = false;
        }
      },
      getMediaList(){
        let type = this.activeName;
        let json = {
          type: type,
          page: this.mediaPage.nowPage,
          limit: this.mediaPage.limit
        };
        if(type === 'image'){
          json.page =  this.mediaImagePage.nowPage
          json.limit = this.mediaImagePage.limit
          this.showImage = true;
        }else if (type === 'video'){
          json.page =  this.mediaVideoPage.nowPage
          json.limit = this.mediaVideoPage.limit
          this.showVideo = true;
        }else if (type === 'news'){
          json.page =  this.mediaPage.nowPage
          json.limit = this.mediaPage.limit
          this.showMedia = true;
        }
        this.loading = true;
        getMediaListApi(json).then(res=>{
          this.loading = false;
          this.type = type;
          this.mediaList = res.item;
          this.mediaPage.total = res.total_count;
          if(type === 'image'){
            this.mediaImageList = res.item;
            this.mediaImagePage.total = res.total_count;
          }else if (type === 'video'){
            this.mediaVideoList = res.item;
            this.mediaVideoPage.total = res.total_count;
          }else if (type === 'news'){
            this.mediaList = res.item;
            this.mediaPage.total = res.total_count;
          }
          if (this.total === 0 ) {
            this.$message({
              showClose: true,
              message: '暂无数据'
            });
          }
        }).catch(() => {
          this.loading = false;
        })
      },
      defaultTime(){
        let date = new Date();
        let now_seconds = date.getTime();
        let start_seconds = now_seconds - 48 * 60 * 60 * 1000;
        this.searchFrom.time = [new Date (start_seconds),new Date (now_seconds)]
      }
    },
    mounted(){
      this.getMsgList();
      this.defaultTime();
    },
    computed:{
      progress(){
        return this.$store.state.progressList.find(i=>{return i.id === this.fileUid}).num <100 ? this.$store.state.progressList.find(i=>{return i.id === this.fileUid}).num : 100
      }
    }
  }
</script>

<style scoped>
  .index {
    padding: 20px 0;
  }
  .top {
    margin-bottom: 30px;
    margin-left: 20px;
  }
  .title {
    font-size: 16px;
    font-weight: 400;
    display: block;
    line-height: 1.2;
    color: #353535;
  }
  .inner-edit_area {
    width: 96%;
    margin: 0 auto;
  }
  .upload-video {
    width: 50%;
    margin-left:2%;
  }
  .b-title {
    padding: 20px;
    color: #666;
  }
  .emotion_switch {
    float: left;
    height: 28px;
    line-height: 999em;
    overflow: hidden;
    background: transparent url(https://res.wx.qq.com/mpres/en_US/htmledition/pages/modules/reply/images/icon_emotion_switch.png) no-repeat 0 0;
    width: 20px;
    height: 20px;
    vertical-align: middle;
    display: inline-block;
  }
  .img {
    position: relative;
    width: 25%;
  img {
    width: 100%;
  }
  .el-icon-delete {
    position: absolute;
    top: 50%;
    left: 50%;
    display: none;
  }
  }
  .img:hover img{
    opacity: 0.3;
  }
  .img:hover .el-icon-delete{
    display: block;
  }
  .tool_bar {
    float: right;
    margin-top: 20px;
  }
  .choose_item {
    box-sizing: border-box;
    margin-bottom: 25px;
    color: rgb(136, 136, 136);
    height: 148px;
    line-height: 148px;
    width: 148px;
    text-align: center;
    border: 1px dashed #c0ccda;
    border-radius: 6px;
  }
  .display-b {
    display: flex;
    flex-flow: row nowrap;
    justify-content: space-between;
    align-items: center;
  }
  .my-teacher {
    width: 25%;
    height: 80px;
    background-color: #eee;
    line-height: 80px;
    text-align: center;
    margin-bottom: 10px;
  }
  .news-media {
    padding: 10px;
    width: 25%;
  }
  .news-media img{
    width: 100%;
  }
  .s-news img {
    width: 50px;
    float: right;
  }
  .title {
    font-size: 16px;
    font-weight: 400;
    display: block;
    line-height: 1.2;
    color: #353535;
  }
  .digest {
    padding-top: 12px;
    color: #9A9A9A;
    font-size: 14px;
  }
  .single-cover {
    /*padding: 20px 15px 15px;*/
  }
  .muti-cover {
    position: relative;
    padding: 20px 15px 0 15px;
  }
  .bottom-title {
    color: #FFFFFF;
    background-color: rgba(0, 0, 0, 0.55);
    position: absolute;
    left: 15px;
    right: 15px;
    bottom: 0;
    padding: 8px 12px;
  }
  .next-cover {
    padding: 12px 15px;
    position: relative;
  }
  .next-img {
    float: right;
    margin-left: 12px;
    width: 60px !important;
    height: 60px !important;
  }
  .next-title {
    overflow: hidden;
    font-weight: 400;
    word-wrap: break-word;
    -webkit-hyphens: auto;
    -ms-hyphens: auto;
    hyphens: auto;
    color: #353535;
  }
  .single-cover:hover .preview,.bottomCover:hover .preview{
    display: flex;
    justify-content: center;
    align-items: center;
    color: #fff;
  }
  .preview {
    display: none;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0,0,0,0.5);
    text-decoration: none;
  }
  .f-bt {
    display: flex;
    position: relative;
    justify-content: space-between;
    align-items: flex-start;
  }
  .ellip {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .flex-start {
    display: flex;
    flex-flow: row nowrap;
    justify-content: flex-start;
    align-items: flex-start;
  }
</style>
<style>
  .el-radio-group {
    display: flex !important;
    flex-flow: column;
    justify-content: flex-start;
    align-items: flex-start;
  }
  .el-radio+.el-radio {
     margin-left: 0 !important;
  }
  .el-radio {
    margin-bottom: 6px;
  }
</style>