当前位置:   article > 正文

vue 一步一步开发 集成 UEeditor_ueeditor vue

ueeditor vue

vue 一步一步开发 集成 UEeditor

src/main.js 增加如下引用:

import '../static/UE/ueditor.config.js'
import '../static/UE/ueditor.all.min.js'
import '../static/UE/lang/zh-cn/zh-cn.js'
import '../static/UE/ueditor.parse.min.js'
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
static目录中增加 UE 目录

链接: https://pan.baidu.com/s/1R6YKHyvqzCt66PITZG2-hw 提取码: mek8

在这里插入图片描述
component 下面增加 UE.vue

<template>
    <div>
        <script id="editor" type="text/plain"></script>
    </div>
</template>
<script>
    export default {
        name: 'ue',
        data () {
            return {
                editor: null
            }
        },
        props: {
            value: '',
            config: {}
        },
        mounted () {
            this.editor = window.UE.getEditor('editor', this.config);
            this.editor.addListener('ready',  () => {
                this.editor.setContent(this.value)
            })
        },
        methods: {
            getUEContent () {
                return this.editor.getContent()
            }
        },
        destroyed () {
            this.editor.destroy()
        }
    }
</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

在这里插入图片描述
需要引用编辑器的地方:

  <el-row>
    <el-col :span="24">
      <el-form-item label="公告内容" prop="b_ed_info">
        <!--<el-input style="width:98%;" type="textarea" v-model="base_dzggModel.b_ed_info"></el-input>-->
        <Uediter :value="ueditor.value" :config="ueditor.config" ref="ue"></Uediter>
      </el-form-item>
    </el-col>
  </el-row>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  import Uediter from '@/components/UE.vue';
  • 1

return 增加

 ueditor: {
      value: '编辑器默认文字',
      config: {
        initialFrameWidth: 830,
        initialFrameHeight: 110
      }
    },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

回传值:

this.base_dzggModel.b_ed_info = this.$refs.ue.getUEContent()
  • 1

在这里插入图片描述

components 引用

components: {
  Uediter
},
  • 1
  • 2
  • 3

整体引用代码如下: 自己找位置:

<template>
  <el-dialog :title="dialogProps.title" :visible.sync="dialogProps.visible" width="1020px" @open="handleDialogOpen()"
    v-loading="loading">
    <div slot="title" class="dialog-header">{{ dialogProps.title }}</div>
    <el-form :model="base_dzggModel" :rules="formRules" ref="base_dzggForm" label-width="120px" label-position="left"
      size="small">
      <el-row>
        <el-col :span="24">
          <el-form-item label="公告标题" prop="b_te_title">
            <el-input style="width:98%;" v-model="base_dzggModel.b_te_title"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="公告类型" prop="b_se_zy">
            <el-select filterable style="width:90%;" v-model="base_dzggModel.b_se_zy" placeholder="请选择" @change="getb_se_zySelectLists($event)">
              <el-option v-for="item in select_listb_se_zy" :key="item.value" :label="item.label" :value="item.value">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="发布日期" prop="b_tm_dtime">
            <el-date-picker style="width:90%;" type="datetime" v-model="base_dzggModel.b_tm_dtime" format="yyyy-MM-dd HH:mm:ss"
              value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择时间发布日期"></el-date-picker>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="有效日期" prop="b_tm_ttime">
            <el-date-picker style="width:90%;" type="datetime" v-model="base_dzggModel.b_tm_ttime" format="yyyy-MM-dd HH:mm:ss"
              value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择时间有效日期"></el-date-picker>
          </el-form-item>
        </el-col>
      </el-row>

      <el-row>
        <el-col :span="24">
          <el-form-item label="接收用户" prop="b_dg_transfer">
            <el-input style="width:97%;" placeholder="接收用户" v-model="base_dzggModel.b_dg_transfer">
              <el-button slot="append" type="primary" icon="el-icon-share" style="background-color: #0A3B6E; color: #FFFFFF;"
                @click="dialogFormVisibleb_dg_transfer = true"></el-button>
            </el-input>
          </el-form-item>
        </el-col>
        <el-dialog :visible.sync="dialogFormVisibleb_dg_transfer" width="800px" :append-to-body='true'>
          <el-tree class="filter-tree" show-checkbox :data="sys_depList" :props="defaultProps" :filter-node-method="filterNode"
            node-key="id" :default-expanded-keys="expanded_keys" :default-checked-keys="[0]" ref="tree3">
          </el-tree>

          <span slot="footer" class="dialog-footer">
            <el-button @click="dialogFormVisibleb_dg_transfer = false">取 消</el-button>
            <el-button type="primary" @click="getCheckedNodes">确 定</el-button>
          </span>
        </el-dialog>
      </el-row>

      <el-row>
        <el-col :span="24">
          <el-form-item label="公告内容" prop="b_ed_info">
            <!--<el-input style="width:98%;" type="textarea" v-model="base_dzggModel.b_ed_info"></el-input>-->
            <Uediter :value="ueditor.value" :config="ueditor.config" ref="ue"></Uediter>
          </el-form-item>
        </el-col>
      </el-row>


      <el-upload name="picture" class="upload-demo" :action="uploadUrl()" :on-preview="handlePreview" :on-remove="handleRemove"
        :before-remove="beforeRemove" multiple :limit="3" :on-exceed="onExceed" :file-list="fileList">
        <el-button size="small" type="primary">点击上传</el-button>
        <div slot="tip" class="el-upload__tip">文件大小不超过100MB</div>
      </el-upload>

      <el-input style="width:0%;" type="hidden" v-model="base_dzggModel.b_hid_depid"></el-input>
      <el-input style="width:0%;" type="hidden" v-model="base_dzggModel.b_hid_userid"></el-input>
      <el-input style="width:0%;" type="hidden" v-model="base_dzggModel.b_hid_task_total"></el-input>
      <el-input style="width:0%;" type="hidden" v-model="base_dzggModel.b_dg_transfer_dep"></el-input>
      <el-input style="width:0%;" type="hidden" v-model="base_dzggModel.b_hid_attachid"></el-input>

    </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button size="small" @click="handleDialogClose()">取 消</el-button>
      <el-button type="primary" size="small" @click="submitForm('base_dzggForm')">确 定</el-button>
    </span>
  </el-dialog>
</template>
<script>
  import Uediter from '@/components/UE.vue';

  import {
    listWx_sjzd_cb,
    listByParentId
  } from '@/api/wx_sjzd_cb'
  import {
    listSys_dep,
    getSys_depById,
    removeSys_dep,
    saveSys_dep,
    updateSys_dep
  } from '@/api/sys_dep'
  import {
    saveBase_dzgg,
    updateBase_dzgg
  } from '@/api/base_dzgg'
  export default {
    name: 'base_dzgg-edit',
    data() {

      var now = new Date();

      function checkTime(i) {
        if (i < 10) {
          i = "0" + i;
        }
        return i;
      }

      var startDate = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours())).toISOString()
        .slice(0, 20);

      var checkPhone = (rule, value, callback) => {
        const phoneReg = /^1[3|4|5|7|8][0-9]{9}$/;
        if (!value) {
          return callback(new Error('电话号码不能为空'))
        }
        setTimeout(() => {
          if (!Number.isInteger(+value)) {
            callback(new Error('请输入数字值'))
          } else {
            if (phoneReg.test(value)) {
              callback()
            } else {
              callback(new Error('电话号码格式不正确'))
            }
          }
        }, 100)
      }

      var checkEmail = (rule, value, callback) => {
        const mailReg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
        if (!value) {
          return callback(new Error('邮箱不能为空'))
        }
        setTimeout(() => {
          if (mailReg.test(value)) {
            callback()
          } else {
            callback(new Error('请输入正确的邮箱格式'))
          }
        }, 100)
      }

      return {


        ueditor: {
          value: '编辑器默认文字',
          config: {
            initialFrameWidth: 830,
            initialFrameHeight: 110
          }
        },

        fileList: [],
        picstr: [], //用户上传文件的数组
        edit: true, //用户表单空间的禁用状态,默认禁止使用
        b_dg_transferdata: '',
        b_dg_transfervalue: '',
        b_dg_transfer_depdata: '',
        b_dg_transfer_depvalue: '',
        sys_depList: [],
        expanded_keys: ['8da6d88c91a13be58b096756c13c2979'],
        defaultProps: {
          children: 'children',
          label: 'label'
        },
        dialogFormVisibleb_dg_transfer: false,
        dialogFormVisibleb_dg_transfer_dep: false,

        picyl: '', //用于图片的显示
        loading: false,
        dialogImageUrl: '',
        dialogVisible: false,
        select_listb_se_zy: [],
        parentId: 0,
        search: {
          name: '',
          offset: 0,
          limit: 10,
          current: 0
        },
        base_dzggModel: { //表单实体
          b_p_v_id: '0',
          b_te_title: '',
          b_se_zy: '',
          b_tm_dtime: startDate,
          b_tm_ttime: '',
          b_ed_info: '',
          b_tm_time: '',
          b_dg_transfer: '',
          b_dg_transfer_dep: '',
          b_hid_depid: '',
          b_hid_userid: '',
          b_hid_task_total: '',
          b_hid_attachid: '',
        },
        dialogProps: {
          visible: false,
          action: '',
          title: ''
        },
        formRules: {
          b_te_title: [{
            required: true,
            message: '请输入公告标题',
            trigger: 'blur'
          }, {
            min: 1,
            max: 200,
            message: '长度在 1 到 200 个字符',
            trigger: 'blur'
          }],
          b_se_zy: [{
            required: true,
            message: '请输入公告类型',
            trigger: 'blur'
          }, {
            min: 1,
            max: 200,
            message: '长度在 1 到 200 个字符',
            trigger: 'blur'
          }],
          b_tm_dtime: [{
            required: true,
            message: '请输入发布日期',
            trigger: 'blur'
          }, {
            min: 1,
            max: 200,
            message: '长度在 1 到 200 个字符',
            trigger: 'blur'
          }],
          b_tm_ttime: [{
            required: true,
            message: '请输入有效日期',
            trigger: 'blur'
          }, {
            min: 1,
            max: 200,
            message: '长度在 1 到 200 个字符',
            trigger: 'blur'
          }],
          b_tm_time: [{
            required: true,
            message: '请输入更新日期',
            trigger: 'blur'
          }, {
            min: 1,
            max: 200,
            message: '长度在 1 到 200 个字符',
            trigger: 'blur'
          }]
        }
      }
    },
    methods: {

      beforeRemove() {

      },
      getCheckedNodes() {

        //alert(JSON.stringify(this.$refs.tree3.getCheckedNodes()));
        var str = "";
        var strname = "";
        for (var i = 0; i < this.$refs.tree3.getCheckedNodes().length; i++) {
          //alert(this.$refs.tree3.getCheckedNodes()[i].id);
          str = str + this.$refs.tree3.getCheckedNodes()[i].id + ",";
          strname = strname + this.$refs.tree3.getCheckedNodes()[i].label + ",";
        }
        this.base_dzggModel.b_dg_transfer = strname;
        this.base_dzggModel.b_dg_transfer_dep = str;
        this.dialogFormVisibleb_dg_transfer = false;

      },
      handleNodeClick(data) {
        this.expanded_keys = [data.id];
        this.base_dzggModel.b_dg_transfer_dep = data.label;
        this.base_dzggModel.b_hid_depid = data.id;
        this.dialogFormVisibleb_dg_transfer_dep = false;
      },

      filterNode(value, data) {
        if (!value) return true;
        return data.label.indexOf(value) !== -1;
      },

      getb_se_zySelectLists(selectdatas) {
        let obj = {};
        obj = this.select_listb_se_zy.find((item) => {
          return item.value === selectdatas;
        });
        this.base_dzggModel.b_se_zy = obj.label;
      },

      handleb_dg_transferChange(value, direction, movedKeys) {
        this.base_dzggModel.b_dg_transfer = value.toString();
      },
      handleb_dg_transfer_depChange(value, direction, movedKeys) {
        this.base_dzggModel.b_dg_transfer_dep = value.toString();
      },

      uploadUrl() {
        var url = process.env.BASE_API + "upload.do?b_hid_v_id=" + this.base_dzggModel.b_hid_attachid +
          "&b_hid_userid=" + JSON.parse(sessionStorage.getItem('currentUser')).name +
          "&b_hid_common=电子公告附件&b_hid_type=DZGG";
        return url
      },
      handleSuccess(res, file) {
        this.$message({
          type: 'info',
          message: '上传成功',
          duration: 6000
        });
        if (file.response.success) {
          this.picstr.push(process.env.BASE_API + file.response.message)
        }
      },
      //删除文件之前的钩子函数
      handleRemove(file, fileList) {
        this.$message({
          type: 'info',
          message: '已删除',
          duration: 6000
        });
        for (var int = 0; i < fileList.length; i++) {
          this.picstr.push(process.env.BASE_API + fileList[i].response.message)
        }
      },
      //点击列表中已上传的文件事的钩子函数
      handlePreview(file) {
        this.dialogImageUrl = file.url;
        this.dialogVisible = true;
      },
      //上传的文件个数超出设定时触发的函数
      onExceed(files, fileList) {
        this.$message({
          type: 'info',
          message: '超出文件上传数量!',
          duration: 6000
        });
      },
      beforeUpload(file) {
        const isJPG = file.type === 'image/jpeg';
        const isGIF = file.type === 'image/gif';
        const isPNG = file.type === 'image/png';
        const isBMP = file.type === 'image/bmp';
        const isLt2M = file.size / 1024 / 1024 < 100;
        if (!isJPG && !isGIF && !isPNG && !isBMP) {
          this.$message.error('上传图片必须是JPG/GIF/PNG/BMP 格式!');
        }
        if (!isLt2M) {
          this.$message.error('上传文件大小不能超过 100MB!');
        }
        return (isJPG || isBMP || isGIF || isPNG) && isLt2M;
      },
      submitForm(formName) {
        this.$refs[formName].validate(valid => {
          if (valid) {
            if (this.dialogProps.action === 'add') {
              this.doSaveBase_dzgg()
            } else {
              this.doUpdateBase_dzgg()
            }
          } else {
            return false
          }
        });
      },
      doUpdateBase_dzgg() {
        this.loading = true
        this.base_dzggModel.b_ed_info = this.$refs.ue.getUEContent()
        updateBase_dzgg(this.base_dzggModel.b_p_v_id, this.base_dzggModel)
          .then(response => {
            this.loading = false;
            this.dialogProps.visible = false;
            this.$emit('save-finished')
          })
          .catch(error => {
            this.outputError(error)
          })
      },
      doSaveBase_dzgg() {
        this.loading = true
        this.base_dzggModel.b_ed_info = this.$refs.ue.getUEContent()
        if (this.base_dzggModel.b_dg_transfer == undefined) {
          this.$alert('<strong>请先选择接收部门!</strong>', '系统提示', {
            dangerouslyUseHTMLString: true
          });

          this.loading = false;
        } else {

          saveBase_dzgg(this.base_dzggModel)
            .then(response => {
              this.loading = false;
              this.dialogProps.visible = false;
              this.$emit('save-finished')
            })
            .catch(error => {
              this.dialogProps.visible = false;
              this.loading = false;
              this.$emit('save-finished')
            })
        }
      },
      handleDialogClose() {
        this.dialogProps.visible = false
      },
      handleDialogOpen() {
        this.$nextTick(() => {
          this.$refs['base_dzggForm'].clearValidate()
        })
      },
      outputError(error) {
        console.log(error.response ? error.response : error.message)
        this.loading = false
        this.$message({
          showClose: true,
          message: '出错了,请按F12查看浏览器日志。',
          type: 'error'
        })
      },
      getSelectFomatList(selectdatas) { //用户select 数据封装
        let result = []
        result.push({
          value: 0,
          label: '无'
        })
        for (let data of selectdatas) {
          result.push({
            value: data.fid, //此处对应数据库的字段
            label: data.b_te_smc //此处对应数据库的字段
          })
        }
        return result
      },
      async pageInit() {

        //图片加载
        var picyl_str = []
        var picstr = "";
        if (this.base_dzggModel.b_file_pic) {
          picyl_str = (this.base_dzggModel.b_file_pic).split(',');
          if (picyl_str.length > 0) {
            for (var i = 0; i < picyl_str.length; i++) {
              picstr = picstr + "<img src='" + picyl_str[i] + "' width='100px' height='100px'></img>";
            }
          }
        }
        this.picyl = picstr;


        try {
          let [listSys_depResp] = await Promise.all([
            listSys_dep(this.search)
          ])
          this.sys_depList = listSys_depResp.data
        } catch (error) {
          this.outputError(error)
        }

        listByParentId('9909a35fab2787b9d7d9ef07bdd19bef')
          .then(response => {
            this.select_listb_se_zy = this.getSelectFomatList(response.data.records)
          })
          .catch(error => {
            this.outputError(error)
          })

        this.base_dzggModel.b_hid_userid = JSON.parse(sessionStorage.getItem('currentUser')).name;
      }
    },
    mounted: function() {
      var now = new Date();

      function checkTime(i) {
        if (i < 10) {
          i = "0" + i;
        }
        return i;
      }

      var startDate = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours())).toISOString()
        .slice(0, 20);
      this.$nextTick(() => {
        this.$on('openEditBase_dzggDialog', function(base_dzgg) {
          this.base_dzggModel = base_dzgg;
          this.ueditor.value = base_dzgg.b_ed_info;
          this.dialogProps.action = 'edit';
          this.dialogProps.title = '修改电子公告'
          this.dialogProps.visible = true
        })
        this.$on('openAddBase_dzggDialog', function(base_dzgg) {
          this.dialogProps.action = 'add'
          this.dialogProps.title = '添加电子公告'
          this.base_dzggModel = {
            b_hid_attachid: now.getFullYear() + '' + checkTime(now.getMonth() + 1) + '' + checkTime(now.getDate()) +
              '' + checkTime(now.getMinutes()) +
              '' + now.getSeconds() + JSON.parse(sessionStorage.getItem('currentUser')).id,
            b_hid_userid: JSON.parse(sessionStorage.getItem('currentUser')).name
          }
          this.dialogProps.visible = true
        })
      })
    },
    components: {
      Uediter
    },
    created() {
      this.pageInit()
    }
  }
</script>

<style>
  .el-transfer-panel {
    width: 300px;
    height: 400px;
  }

  .el-transfer-panel__list.is-filterable {
    height: 300px;
  }

  .redItem .el-form-item__label {
    color: red;
  }
</style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • 457
  • 458
  • 459
  • 460
  • 461
  • 462
  • 463
  • 464
  • 465
  • 466
  • 467
  • 468
  • 469
  • 470
  • 471
  • 472
  • 473
  • 474
  • 475
  • 476
  • 477
  • 478
  • 479
  • 480
  • 481
  • 482
  • 483
  • 484
  • 485
  • 486
  • 487
  • 488
  • 489
  • 490
  • 491
  • 492
  • 493
  • 494
  • 495
  • 496
  • 497
  • 498
  • 499
  • 500
  • 501
  • 502
  • 503
  • 504
  • 505
  • 506
  • 507
  • 508
  • 509
  • 510
  • 511
  • 512
  • 513
  • 514
  • 515
  • 516
  • 517
  • 518
  • 519
  • 520
  • 521
  • 522
  • 523
  • 524
  • 525
  • 526
  • 527
  • 528
  • 529
  • 530
  • 531
  • 532
  • 533
  • 534
  • 535
  • 536
  • 537
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号