Commit 5b1f41fc authored by tianbj's avatar tianbj

分类文章结构

parent d46aff17
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
package net.mingsoft.cms.biz;
import net.mingsoft.base.biz.IBaseBiz;
/**
* 分类业务
* @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/>
*/
public interface ICategoryBiz extends IBaseBiz {
}
\ No newline at end of file
package net.mingsoft.cms.biz;
import net.mingsoft.base.biz.IBaseBiz;
/**
* 文章业务
* @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/>
*/
public interface IContentBiz extends IBaseBiz {
}
\ No newline at end of file
/**
The MIT License (MIT) * Copyright (c) 2019 铭飞科技
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.biz.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import net.mingsoft.base.biz.impl.BaseBizImpl;
import net.mingsoft.base.dao.IBaseDao;
import java.util.*;
import net.mingsoft.cms.entity.CategoryEntity;
import net.mingsoft.cms.biz.ICategoryBiz;
import net.mingsoft.cms.dao.ICategoryDao;
/**
* 分类管理持久化层
* @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/>
*/
@Service("cmscategoryBizImpl")
public class CategoryBizImpl extends BaseBizImpl implements ICategoryBiz {
@Autowired
private ICategoryDao categoryDao;
@Override
protected IBaseDao getDao() {
// TODO Auto-generated method stub
return categoryDao;
}
}
\ No newline at end of file
/**
The MIT License (MIT) * Copyright (c) 2019 铭飞科技
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.biz.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import net.mingsoft.base.biz.impl.BaseBizImpl;
import net.mingsoft.base.dao.IBaseDao;
import java.util.*;
import net.mingsoft.cms.entity.ContentEntity;
import net.mingsoft.cms.biz.IContentBiz;
import net.mingsoft.cms.dao.IContentDao;
/**
* 文章管理持久化层
* @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/>
*/
@Service("cmscontentBizImpl")
public class ContentBizImpl extends BaseBizImpl implements IContentBiz {
@Autowired
private IContentDao contentDao;
@Override
protected IBaseDao getDao() {
// TODO Auto-generated method stub
return contentDao;
}
}
\ No newline at end of file
package net.mingsoft.cms.dao;
import net.mingsoft.base.dao.IBaseDao;
import java.util.*;
import net.mingsoft.cms.entity.CategoryEntity;
import org.springframework.stereotype.Component;
/**
* 分类持久层
* @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/>
*/
@Component("cmsCategoryDao")
public interface ICategoryDao extends IBaseDao {
}
\ No newline at end of file
This diff is collapsed.
package net.mingsoft.cms.dao;
import net.mingsoft.base.dao.IBaseDao;
import java.util.*;
import net.mingsoft.cms.entity.ContentEntity;
/**
* 文章持久层
* @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/>
*/
public interface IContentDao extends IBaseDao {
}
\ No newline at end of file
This diff is collapsed.
package net.mingsoft.cms.entity;
import com.alibaba.fastjson.annotation.JSONField;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import net.mingsoft.base.entity.BaseEntity;
import java.util.Date;
/**
* 分类实体
* @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/>
*/
public class CategoryEntity extends BaseEntity {
private static final long serialVersionUID = 1574925152750L;
/**
* 栏目管理名称
*/
private String categoryTitle;
/**
* 所属栏目
*/
private String categoryId;
/**
* 栏目管理属性
*/
private String categoryType;
/**
* 自定义顺序
*/
private Integer categorySort;
/**
* 列表模板
*/
private String categoryListUrl;
/**
* 内容模板
*/
private String categoryUrl;
/**
* 栏目管理关键字
*/
private String categoryKeyword;
/**
* 栏目管理描述
*/
private String categoryDescrip;
/**
* 缩略图
*/
private String categoryImg;
/**
* 自定义链接
*/
private String categoryDiyUrl;
/**
* 栏目管理的内容模型id
*/
private String mdiyModelId;
/**
* 类别发布时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
private Date categoryDatetime;
/**
* 发布用户id
*/
private Integer categoryManagerId;
/**
* 应用编号
*/
private Integer appId;
/**
* 字典对应编号
*/
private Integer dictId;
/**
* 栏目属性
*/
private String categoryFlag;
/**
* 栏目路径
*/
private String categoryPath;
/**
* 父类型编号
*/
private String categoryParentId;
/**
* 设置栏目管理名称
*/
public void setCategoryTitle(String categoryTitle) {
this.categoryTitle = categoryTitle;
}
/**
* 获取栏目管理名称
*/
public String getCategoryTitle() {
return this.categoryTitle;
}
/**
* 设置所属栏目
*/
public void setCategoryId(String categoryId) {
this.categoryId = categoryId;
}
/**
* 获取所属栏目
*/
public String getCategoryId() {
return this.categoryId;
}
/**
* 设置栏目管理属性
*/
public void setCategoryType(String categoryType) {
this.categoryType = categoryType;
}
/**
* 获取栏目管理属性
*/
public String getCategoryType() {
return this.categoryType;
}
/**
* 设置自定义顺序
*/
public void setCategorySort(Integer categorySort) {
this.categorySort = categorySort;
}
/**
* 获取自定义顺序
*/
public Integer getCategorySort() {
return this.categorySort;
}
/**
* 设置列表模板
*/
public void setCategoryListUrl(String categoryListUrl) {
this.categoryListUrl = categoryListUrl;
}
/**
* 获取列表模板
*/
public String getCategoryListUrl() {
return this.categoryListUrl;
}
/**
* 设置内容模板
*/
public void setCategoryUrl(String categoryUrl) {
this.categoryUrl = categoryUrl;
}
/**
* 获取内容模板
*/
public String getCategoryUrl() {
return this.categoryUrl;
}
/**
* 设置栏目管理关键字
*/
public void setCategoryKeyword(String categoryKeyword) {
this.categoryKeyword = categoryKeyword;
}
/**
* 获取栏目管理关键字
*/
public String getCategoryKeyword() {
return this.categoryKeyword;
}
/**
* 设置栏目管理描述
*/
public void setCategoryDescrip(String categoryDescrip) {
this.categoryDescrip = categoryDescrip;
}
/**
* 获取栏目管理描述
*/
public String getCategoryDescrip() {
return this.categoryDescrip;
}
/**
* 设置缩略图
*/
public void setCategoryImg(String categoryImg) {
this.categoryImg = categoryImg;
}
/**
* 获取缩略图
*/
public String getCategoryImg() {
return this.categoryImg;
}
/**
* 设置自定义链接
*/
public void setCategoryDiyUrl(String categoryDiyUrl) {
this.categoryDiyUrl = categoryDiyUrl;
}
/**
* 获取自定义链接
*/
public String getCategoryDiyUrl() {
return this.categoryDiyUrl;
}
/**
* 设置栏目管理的内容模型id
*/
public void setMdiyModelId(String mdiyModelId) {
this.mdiyModelId = mdiyModelId;
}
/**
* 获取栏目管理的内容模型id
*/
public String getMdiyModelId() {
return this.mdiyModelId;
}
/**
* 设置类别发布时间
*/
public void setCategoryDatetime(Date categoryDatetime) {
this.categoryDatetime = categoryDatetime;
}
/**
* 获取类别发布时间
*/
public Date getCategoryDatetime() {
return this.categoryDatetime;
}
/**
* 设置发布用户id
*/
public void setCategoryManagerId(Integer categoryManagerId) {
this.categoryManagerId = categoryManagerId;
}
/**
* 获取发布用户id
*/
public Integer getCategoryManagerId() {
return this.categoryManagerId;
}
/**
* 设置应用编号
*/
public void setAppId(Integer appId) {
this.appId = appId;
}
/**
* 获取应用编号
*/
public Integer getAppId() {
return this.appId;
}
/**
* 设置字典对应编号
*/
public void setDictId(Integer dictId) {
this.dictId = dictId;
}
/**
* 获取字典对应编号
*/
public Integer getDictId() {
return this.dictId;
}
/**
* 设置栏目属性
*/
public void setCategoryFlag(String categoryFlag) {
this.categoryFlag = categoryFlag;
}
/**
* 获取栏目属性
*/
public String getCategoryFlag() {
return this.categoryFlag;
}
/**
* 设置栏目路径
*/
public void setCategoryPath(String categoryPath) {
this.categoryPath = categoryPath;
}
/**
* 获取栏目路径
*/
public String getCategoryPath() {
return this.categoryPath;
}
/**
* 设置父类型编号
*/
public void setCategoryParentId(String categoryParentId) {
this.categoryParentId = categoryParentId;
}
/**
* 获取父类型编号
*/
public String getCategoryParentId() {
return this.categoryParentId;
}
}
\ No newline at end of file
package net.mingsoft.cms.entity;
import com.alibaba.fastjson.annotation.JSONField;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import net.mingsoft.base.entity.BaseEntity;
import java.util.Date;
/**
* 文章实体
* @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/>
*/
public class ContentEntity extends BaseEntity {
private static final long serialVersionUID = 1574925152617L;
/**
* 文章标题
*/
private String contentTitle;
/**
* 所属栏目
*/
private String contentCategoryId;
/**
* 文章类型
*/
private String contentType;
/**
* 是否显示
*/
private String contentDisplay;
/**
* 文章作者
*/
private String contentAuthor;
/**
* 文章来源
*/
private String contentSource;
/**
* 发布时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
private Date contentDatetime;
/**
* 自定义顺序
*/
private Integer contentSort;
/**
* 文章缩略图
*/
private String contentImg;
/**
* 描述
*/
private String contentDescription;
/**
* 关键字
*/
private String contentKeyword;
/**
* 文章内容
*/
private String contentDetails;
/**
* 文章跳转链接地址
*/
private String contentUrl;
/**
* 文章管理的应用id
*/
private Integer appid;
/**
* 设置文章标题
*/
public void setContentTitle(String contentTitle) {
this.contentTitle = contentTitle;
}
/**
* 获取文章标题
*/
public String getContentTitle() {
return this.contentTitle;
}
/**
* 设置所属栏目
*/
public void setContentCategoryId(String contentCategoryId) {
this.contentCategoryId = contentCategoryId;
}
/**
* 获取所属栏目
*/
public String getContentCategoryId() {
return this.contentCategoryId;
}
/**
* 设置文章类型
*/
public void setContentType(String contentType) {
this.contentType = contentType;
}
/**
* 获取文章类型
*/
public String getContentType() {
return this.contentType;
}
/**
* 设置是否显示
*/
public void setContentDisplay(String contentDisplay) {
this.contentDisplay = contentDisplay;
}
/**
* 获取是否显示
*/
public String getContentDisplay() {
return this.contentDisplay;
}
/**
* 设置文章作者
*/
public void setContentAuthor(String contentAuthor) {
this.contentAuthor = contentAuthor;
}
/**
* 获取文章作者
*/
public String getContentAuthor() {
return this.contentAuthor;
}
/**
* 设置文章来源
*/
public void setContentSource(String contentSource) {
this.contentSource = contentSource;
}
/**
* 获取文章来源
*/
public String getContentSource() {
return this.contentSource;
}
/**
* 设置发布时间
*/
public void setContentDatetime(Date contentDatetime) {
this.contentDatetime = contentDatetime;
}
/**
* 获取发布时间
*/
public Date getContentDatetime() {
return this.contentDatetime;
}
/**
* 设置自定义顺序
*/
public void setContentSort(Integer contentSort) {
this.contentSort = contentSort;
}
/**
* 获取自定义顺序
*/
public Integer getContentSort() {
return this.contentSort;
}
/**
* 设置文章缩略图
*/
public void setContentImg(String contentImg) {
this.contentImg = contentImg;
}
/**
* 获取文章缩略图
*/
public String getContentImg() {
return this.contentImg;
}
/**
* 设置描述
*/
public void setContentDescription(String contentDescription) {
this.contentDescription = contentDescription;
}
/**
* 获取描述
*/
public String getContentDescription() {
return this.contentDescription;
}
/**
* 设置关键字
*/
public void setContentKeyword(String contentKeyword) {
this.contentKeyword = contentKeyword;
}
/**
* 获取关键字
*/
public String getContentKeyword() {
return this.contentKeyword;
}
/**
* 设置文章内容
*/
public void setContentDetails(String contentDetails) {
this.contentDetails = contentDetails;
}
/**
* 获取文章内容
*/
public String getContentDetails() {
return this.contentDetails;
}
/**
* 设置文章跳转链接地址
*/
public void setContentUrl(String contentUrl) {
this.contentUrl = contentUrl;
}
/**
* 获取文章跳转链接地址
*/
public String getContentUrl() {
return this.contentUrl;
}
/**
* 设置文章管理的应用id
*/
public void setAppid(Integer appid) {
this.appid = appid;
}
/**
* 获取文章管理的应用id
*/
public Integer getAppid() {
return this.appid;
}
}
\ No newline at end of file
#mcms\u7248\u672C
version=d3a98fefcb242db78da5fc31608ff247
templet.file=\u6A21\u677F\u6587\u4EF6\u4E0D\u5B58\u5728
id=\u6587\u7AE0\u7F16\u53F7
typeid=\u680F\u76EE\u7F16\u53F7
order=\u6392\u5E8F
#
#Thu Nov 28 15:12:32 CST 2019
category.img=\u7F29\u7565\u56FE
appid=\u6587\u7AE0\u7BA1\u7406\u7684\u5E94\u7528id
content.datetime=\u53D1\u5E03\u65F6\u95F4
category.manager.id=\u53D1\u5E03\u7528\u6237id
category.title=\u680F\u76EE\u7BA1\u7406\u540D\u79F0
category.keyword=\u680F\u76EE\u7BA1\u7406\u5173\u952E\u5B57
content.img=\u6587\u7AE0\u7F29\u7565\u56FE
category.path=\u680F\u76EE\u8DEF\u5F84
content.type=\u6587\u7AE0\u7C7B\u578B
category.url=\u5185\u5BB9\u6A21\u677F
dict.id=\u5B57\u5178\u5BF9\u5E94\u7F16\u53F7
content.author=\u6587\u7AE0\u4F5C\u8005
category.parent.id=\u7236\u7C7B\u578B\u7F16\u53F7
category.datetime=\u7C7B\u522B\u53D1\u5E03\u65F6\u95F4
category.flag=\u680F\u76EE\u5C5E\u6027
content.description=\u63CF\u8FF0
content.url=\u6587\u7AE0\u8DF3\u8F6C\u94FE\u63A5\u5730\u5740
category.sort=\u81EA\u5B9A\u4E49\u987A\u5E8F
content.title=\u6587\u7AE0\u6807\u9898
content.category.id=\u6240\u5C5E\u680F\u76EE
id=\u7F16\u53F7
app.id=\u5E94\u7528\u7F16\u53F7
category.list.url=\u5217\u8868\u6A21\u677F
mdiy.model.id=\u680F\u76EE\u7BA1\u7406\u7684\u5185\u5BB9\u6A21\u578Bid
content.source=\u6587\u7AE0\u6765\u6E90
content.display=\u662F\u5426\u663E\u793A
category.type=\u680F\u76EE\u7BA1\u7406\u5C5E\u6027
category.descrip=\u680F\u76EE\u7BA1\u7406\u63CF\u8FF0
content.details=\u6587\u7AE0\u5185\u5BB9
category.id=\u6240\u5C5E\u680F\u76EE
content.sort=\u81EA\u5B9A\u4E49\u987A\u5E8F
category.diy.url=\u81EA\u5B9A\u4E49\u94FE\u63A5
content.keyword=\u5173\u952E\u5B57
This diff is collapsed.
<!DOCTYPE html>
<html>
<head>
<title>分类</title>
<#include "../../include/head-file.ftl">
</head>
<body>
<div id="index" class="ms-index" v-cloak>
<el-header class="ms-header" height="50px">
<el-col :span="12">
<@shiro.hasPermission name="cms:category:save">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="save()">新增</el-button>
</@shiro.hasPermission>
<@shiro.hasPermission name="cms:category:del">
<el-button type="danger" icon="el-icon-delete" size="mini" @click="del(selectionList)" :disabled="!selectionList.length">删除</el-button>
</@shiro.hasPermission>
</el-col>
</el-header>
<el-main class="ms-container">
<el-table ref="multipleTable"
height="calc(100vh - 20px)"
border :data="dataList"
row-key="id"
v-loading="loading"
default-expand-all='true'
:tree-props="{children: 'children'}"
tooltip-effect="dark"
@selection-change="handleSelectionChange">
<template slot="empty">
{{emptyText}}
</template>
<el-table-column type="selection" width="40"></el-table-column>
<el-table-column label="栏目管理名称" align="left" prop="categoryTitle">
</el-table-column>
<el-table-column label="栏目管理属性" align="left" prop="categoryType" :formatter="categoryTypeFormat">
</el-table-column>
<el-table-column label="栏目路径" align="left" prop="categoryPath">
</el-table-column>
<el-table-column label="自定义顺序" width="100" align="right" prop="categorySort">
</el-table-column>
<el-table-column label="列表模板" align="left" prop="categoryListUrl">
</el-table-column>
<el-table-column label="内容模板" align="left" prop="categoryUrl">
</el-table-column>
<el-table-column label="操作" width="180" align="center">
<template slot-scope="scope">
<@shiro.hasPermission name="cms:category:update">
<el-link type="primary" :underline="false" @click="save(scope.row.id)">编辑</el-link>
</@shiro.hasPermission>
<@shiro.hasPermission name="cms:category:del">
<el-link type="primary" :underline="false" @click="del([scope.row])">删除</el-link>
</@shiro.hasPermission>
</template>
</el-table-column>
</el-table>
</el-main>
</div>
</body>
</html>
<script>
var indexVue = new Vue({
el: '#index',
data:{
dataList: [], //分类列表
selectionList:[],//分类列表选中
loading: true,//加载状态
emptyText:'',//提示文字
manager: ms.manager,
loadState:false,
categoryTypeOptions:[{"value":"1","label":"列表"},{"value":"2","label":"封面"}],
//搜索表单
form:{
// 栏目管理名称
categoryTitle:'',
// 所属栏目
categoryId:'',
// 栏目管理属性
categoryType:'2',
// 自定义顺序
categorySort:0,
// 列表模板
categoryListUrl:'',
// 内容模板
categoryUrl:'',
// 栏目管理关键字
categoryKeyword:'',
// 栏目管理描述
categoryDescrip:'',
// 缩略图
categoryImg: [],
// 自定义链接
categoryDiyUrl:'',
// 栏目管理的内容模型id
mdiyModelId:'',
},
},
methods:{
//查询列表
list: function() {
var that = this;
this.loadState = false;
this.loading = true;
ms.http.get(ms.manager+"/cms/category/list.do",that.form).then(
function(res) {
if(that.loadState){
that.loading = false;
}else {
that.loadState = true
}
if (!res.result||res.data.total <= 0) {
that.emptyText = '暂无数据'
that.dataList = [];
} else {
that.emptyText = '';
that.dataList = ms.util.treeData(res.data.rows,'id','mdiyModelId','children');
}
}).catch(function(err) {
console.log(err);
});
setTimeout(()=>{
if(that.loadState){
that.loading = false;
}else {
that.loadState = true
}
}, 500);
},
//分类列表选中
handleSelectionChange:function(val){
this.selectionList = val;
},
//删除
del: function(row){
var that = this;
that.$confirm('此操作将永久删除所选内容, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
ms.http.post(ms.manager+"/cms/category/delete.do", row.length?row:[row],{
headers: {
'Content-Type': 'application/json'
}
}).then(
function(res){
if (res.result) {
that.$notify({
type: 'success',
message: '删除成功!'
});
//删除成功,刷新列表
that.list();
}
});
}).catch(() => {
that.$notify({
type: 'info',
message: '已取消删除'
});
});
},
//表格数据转换
categoryTypeFormat(row, column, cellValue, index){
var value="";
if(cellValue){
var data = this.categoryTypeOptions.find(function(value){
return value.value==cellValue;
})
if(data&&data.label){
value = data.label;
}
}
return value;
},
//新增
save:function(id){
if(id){
location.href=this.manager+"/cms/category/form.do?id="+id;
}else {
location.href=this.manager+"/cms/category/form.do";
}
},
//重置表单
rest(){
this.$refs.searchForm.resetFields();
},
},
created(){
/* this.categoryListUrlOptionsGet();
this.categoryUrlOptionsGet();*/
this.list();
},
})
</script>
\ No newline at end of file
This diff is collapsed.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文章</title>
<#include "../../include/head-file.ftl">
<#include "../../include/increase-search.ftl">
</head>
<body style="overflow: hidden">
<div id="index" v-cloak>
<!--左侧-->
<el-container class="index-menu">
<div class="left-tree"></div>
<iframe :src="action" class="ms-iframe-style">
</iframe>
</el-container>
</div>
</body>
</html>
<script>
var indexVue = new Vue({
el: "#index",
data: {
action:"", //跳转页面
},
methods:{
},
mounted(){
this.action = ms.manager +"/cms/content/main.do";
}
})
</script>
<style>
#index .index-menu {
min-height: 100vh;
min-width: 140px;
}
#index .ms-iframe-style {
width: 100%;
border: 0;
}
#index .index-menu .el-main {
padding: 0;
}
#index .left-tree{
min-height: 100vh;
background: #fff;
width: 180px;
border-right: solid 1px #e6e6e6;
}
#index .index-menu .el-main .index-menu-menu .el-menu-item {
min-width: 140px;
width: 100%;
}
#index .index-menu .el-main .index-material-item {
min-width: 100% !important
}
#index .index-menu-menu-item , .el-submenu__title {
height: 40px !important;
line-height: 46px !important;
}
</style>
This diff is collapsed.
/* @license
* jQuery.print, version 1.6.0
* (c) Sathvik Ponangi, Doers' Guild
* Licence: CC-By (http://creativecommons.org/licenses/by/3.0/)
*--------------------------------------------------------------------------*/
!function(e){"use strict";function t(t,n,r){for(var o=e(t),i=o.clone(n,r),a=o.find("textarea").add(o.filter("textarea")),l=i.find("textarea").add(i.filter("textarea")),c=o.find("select").add(o.filter("select")),d=i.find("select").add(i.filter("select")),f=0,s=a.length;f<s;++f)e(l[f]).val(e(a[f]).val());for(f=0,s=c.length;f<s;++f)for(var p=0,u=c[f].options.length;p<u;++p)!0===c[f].options[p].selected&&(d[f].options[p].selected=!0);return i}function n(n){var r=e("");try{r=t(n)}catch(t){r=e("<span />").html(n)}return r}function r(t,n,r){var o=e.Deferred();try{var i=(t=t.contentWindow||t.contentDocument||t).document||t.contentDocument||t;r.doctype&&i.write(r.doctype),i.write(n),i.close();var a=!1,l=function(){if(!a){t.focus();try{t.document.execCommand("print",!1,null)||t.print(),e("body").focus()}catch(e){t.print()}t.close(),a=!0,o.resolve()}};e(t).on("load",l),setTimeout(l,r.timeout)}catch(e){o.reject(e)}return o}function o(e,t){return r(window.open(),e,t).always(function(){try{t.deferred.resolve()}catch(e){console.warn("Error notifying deferred",e)}})}function i(e){return!!("object"==typeof Node?e instanceof Node:e&&"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName)}e.print=e.fn.print=function(){var a,l,c=this;c instanceof e&&(c=c.get(0)),i(c)?(l=e(c),arguments.length>0&&(a=arguments[0])):arguments.length>0?i((l=e(arguments[0]))[0])?arguments.length>1&&(a=arguments[1]):(a=arguments[0],l=e("html")):l=e("html");var d={globalStyles:!0,mediaPrint:!1,stylesheet:null,noPrintSelector:".no-print",iframe:!0,append:null,prepend:null,manuallyCopyFormValues:!0,deferred:e.Deferred(),timeout:750,title:null,doctype:"<!doctype html>"};a=e.extend({},d,a||{});var f=e("");a.globalStyles?f=e("style, link, meta, base, title"):a.mediaPrint&&(f=e("link[media=print]")),a.stylesheet&&(f=e.merge(f,e('<link rel="stylesheet" href="'+a.stylesheet+'">')));var s=t(l);if((s=e("<span/>").append(s)).find(a.noPrintSelector).remove(),s.append(t(f)),a.title){var p=e("title",s);0===p.length&&(p=e("<title />"),s.append(p)),p.text(a.title)}s.append(n(a.append)),s.prepend(n(a.prepend)),a.manuallyCopyFormValues&&(s.find("input").each(function(){var t=e(this);t.is("[type='radio']")||t.is("[type='checkbox']")?t.prop("checked")&&t.attr("checked","checked"):t.attr("value",t.val())}),s.find("select").each(function(){e(this).find(":selected").attr("selected","selected")}),s.find("textarea").each(function(){var t=e(this);t.text(t.val())}));var u,h,m,y,v=s.html();try{a.deferred.notify("generated_markup",v,s)}catch(e){console.warn("Error notifying deferred",e)}if(s.remove(),a.iframe)try{u=v,m=e((h=a).iframe+""),0===(y=m.length)&&(m=e('<iframe height="0" width="0" border="0" wmode="Opaque"/>').prependTo("body").css({position:"absolute",top:-999,left:-999})),r(m.get(0),u,h).done(function(){setTimeout(function(){0===y&&m.remove()},1e3)}).fail(function(e){console.error("Failed to print from iframe",e),o(u,h)}).always(function(){try{h.deferred.resolve()}catch(e){console.warn("Error notifying deferred",e)}})}catch(e){console.error("Failed to print from iframe",e.stack,e.message),o(v,a)}else o(v,a);return this}}(jQuery);
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -20,6 +20,15 @@
log(e.message);
}
}
//树形数据组织
function treeData (source, id, parentId, children) {
let cloneData = JSON.parse(JSON.stringify(source))
return cloneData.filter(father => {
let branchArr = cloneData.filter(child => father[id] == child[parentId]);
branchArr.length > 0 ? father[children] = branchArr : ''
return !father[parentId] // 如果第一层不是parentId=0,请自行修改
})
}
//日期处理
var date = {
......@@ -27,7 +36,7 @@
fmt: function(date, fmt) {
var date = new Date(date);
log(fmt);
if (fmt == undefined || validator.isEmpty(fmt)) {
if (!fmt) {
fmt = "yyyy-mm-dd";
}
var o = {
......@@ -45,6 +54,30 @@
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
},
diyFmt: function (time) {
//如果传进来的是字符串,转成时间
if(Object.prototype.toString.call(new Date()) != Object.prototype.toString.call(time) ){
time = new Date(time);
}
var nowDate = new Date().getTime();
var dif = (nowDate - time)/1000;
//时间字符串
var timestr ="";
if(dif<60){
timestr = "刚刚";
}else if(dif<3600){
timestr = moment(time).format('A') + moment(time).format('H:mm');
}else if(dif<86400){
timestr = "昨天";
}else if(dif<172800){
timestr = moment(time).format("dddd");
}else if(dif<31536000){
timestr = moment(time).format("MMM Do").replace(" ","");
}else{
timestr = moment(time).subtract(10, 'days').calendar();
}
return timestr;
}
}
......@@ -165,6 +198,7 @@
var util = {
getParameter: getParameter,
treeData:treeData,
date: date,
array: array,
log: log,
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.treeSelect=t():e.treeSelect=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={template:"#tree-select",name:"el-tree-select",props:{props:{type:Object,default:function(){return{value:"id",label:"title",children:"children"}}},options:{type:Array,default:function(){return[]}},value:{default:function(){return""}},clearable:{type:Boolean,default:function(){return!0}},accordion:{type:Boolean,default:function(){return!1}}},data:function(){return{valueId:this.value,valueTitle:"",defaultExpandedKey:[]}},mounted:function(){this.initHandle()},methods:{initHandle:function(){this.valueId&&(this.valueTitle=this.$refs.selectTree.getCurrentNode()[this.props.label],this.$refs.selectTree.setCurrentKey(this.valueId),this.defaultExpandedKey=[this.valueId]),this.initScroll()},initScroll:function(){this.$nextTick(function(){var e=document.querySelectorAll(".el-scrollbar .el-select-dropdown__wrap")[0],t=document.querySelectorAll(".el-scrollbar .el-scrollbar__bar");e.style.cssText="margin: 0px; max-height: none; overflow: hidden;",t.forEach(function(e){return e.style.width=0})})},handleNodeClick:function(e){this.$emit("input",e.id),this.$emit("get-value",e),this.defaultExpandedKey=[]},clearHandle:function(){this.valueTitle="",this.valueId="",this.defaultExpandedKey=[],this.clearSelected(),this.$emit("input","")},clearSelected:function(){document.querySelectorAll("#tree-option .el-tree-node").forEach(function(e){return e.classList.remove("is-current")})}},watch:{value:function(){this.valueId=this.value,0==this.value&&(this.valueTitle="顶级菜单"),this.initHandle()}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n.n(r);for(var i in r)"default"!==i&&function(e){n.d(t,e,function(){return r[e]})}(i);var a=n(8),l=!1;var s=function(e){l||n(2)},u=n(7)(o.a,a.a,!1,s,"data-v-57dc3c0c",null);u.options.__file="src/components/vue-ueditor-wrap.vue",t.default=u.exports},function(e,t,n){var r=n(3);"string"==typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);n(5)("47387ba6",r,!1,{})},function(e,t,n){(e.exports=n(4)(void 0)).push([e.i,"\n.el-scrollbar .el-scrollbar__view .el-select-dropdown__item[data-v-57dc3c0c]{\r\nheight: auto;\r\nmax-height: 274px;\r\npadding: 0;\r\noverflow: hidden;\r\noverflow-y: auto;\n}\n.el-select-dropdown__item.selected[data-v-57dc3c0c]{\r\nfont-weight: normal;\n}\nul li[data-v-57dc3c0c] .el-tree .el-tree-node__content{\r\nheight:auto;\r\npadding: 0 20px;\n}\n.el-tree-node__label[data-v-57dc3c0c]{\r\nfont-weight: normal;\n}\n.el-tree[data-v-57dc3c0c] .is-current .el-tree-node__label{\r\ncolor: #409EFF;\r\nfont-weight: 700;\n}\n.el-tree[data-v-57dc3c0c] .is-current .el-tree-node__children .el-tree-node__label{\r\ncolor:#606266;\r\nfont-weight: normal;\n}\r\n",""])},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t){var o=(a=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+new Buffer(JSON.stringify(a)).toString("base64")+" */"),i=r.sources.map(function(e){return"/*# sourceURL="+r.sourceRoot+e+" */"});return[n].concat(i).concat([o]).join("\n")}var a;return[n].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o<this.length;o++){var i=this[o][0];"number"==typeof i&&(r[i]=!0)}for(o=0;o<e.length;o++){var a=e[o];"number"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]="("+a[2]+") and ("+n+")"),t.push(a))}},t}},function(e,t,n){var r="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!r)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var o=n(6),i={},a=r&&(document.head||document.getElementsByTagName("head")[0]),l=null,s=0,u=!1,c=function(){},d=null,f="data-vue-ssr-id",p="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function h(e){for(var t=0;t<e.length;t++){var n=e[t],r=i[n.id];if(r){r.refs++;for(var o=0;o<r.parts.length;o++)r.parts[o](n.parts[o]);for(;o<n.parts.length;o++)r.parts.push(m(n.parts[o]));r.parts.length>n.parts.length&&(r.parts.length=n.parts.length)}else{var a=[];for(o=0;o<n.parts.length;o++)a.push(m(n.parts[o]));i[n.id]={id:n.id,refs:1,parts:a}}}}function v(){var e=document.createElement("style");return e.type="text/css",a.appendChild(e),e}function m(e){var t,n,r=document.querySelector("style["+f+'~="'+e.id+'"]');if(r){if(u)return c;r.parentNode.removeChild(r)}if(p){var o=s++;r=l||(l=v()),t=_.bind(null,r,o,!1),n=_.bind(null,r,o,!0)}else r=v(),t=function(e,t){var n=t.css,r=t.media,o=t.sourceMap;r&&e.setAttribute("media",r);d.ssrId&&e.setAttribute(f,t.id);o&&(n+="\n/*# sourceURL="+o.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");if(e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}.bind(null,r),n=function(){r.parentNode.removeChild(r)};return t(e),function(r){if(r){if(r.css===e.css&&r.media===e.media&&r.sourceMap===e.sourceMap)return;t(e=r)}else n()}}e.exports=function(e,t,n,r){u=n,d=r||{};var a=o(e,t);return h(a),function(t){for(var n=[],r=0;r<a.length;r++){var l=a[r];(s=i[l.id]).refs--,n.push(s)}t?h(a=o(e,t)):a=[];for(r=0;r<n.length;r++){var s;if(0===(s=n[r]).refs){for(var u=0;u<s.parts.length;u++)s.parts[u]();delete i[s.id]}}}};var y,g=(y=[],function(e,t){return y[e]=t,y.filter(Boolean).join("\n")});function _(e,t,n,r){var o=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=g(t,o);else{var i=document.createTextNode(o),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(i,a[t]):e.appendChild(i)}}},function(e,t){e.exports=function(e,t){for(var n=[],r={},o=0;o<t.length;o++){var i=t[o],a=i[0],l={id:e+":"+o,css:i[1],media:i[2],sourceMap:i[3]};r[a]?r[a].parts.push(l):n.push(r[a]={id:a,parts:[l]})}return n}},function(e,t){e.exports=function(e,t,n,r,o,i){var a,l=e=e||{},s=typeof e.default;"object"!==s&&"function"!==s||(a=e,l=e.default);var u,c="function"==typeof l?l.options:l;if(t&&(c.render=t.render,c.staticRenderFns=t.staticRenderFns,c._compiled=!0),n&&(c.functional=!0),o&&(c._scopeId=o),i?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},c._ssrRegister=u):r&&(u=r),u){var d=c.functional,f=d?c.render:c.beforeCreate;d?(c._injectStyles=u,c.render=function(e,t){return u.call(t),f(e,t)}):c.beforeCreate=f?[].concat(f,u):[u]}return{esModule:a,exports:l,options:c}}},function(e,t,n){"use strict";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"selecttree"}},[n("el-select",{attrs:{value:e.valueTitle,clearable:e.clearable},on:{clear:e.clearHandle}},[n("el-option",{staticClass:"options",attrs:{value:e.valueTitle,label:e.valueTitle}},[n("el-tree",{ref:"selectTree",attrs:{id:"tree-option","default-expand-all":"","expand-on-click-node":!1,accordion:e.accordion,data:e.options,props:e.props,"node-key":e.props.value,"default-expanded-keys":e.defaultExpandedKey},on:{"node-click":function(t){return t.target!==t.currentTarget?null:e.handleNodeClick(t)}}})],1)],1)],1)};r._withStripped=!0;var o={render:r,staticRenderFns:[]};t.a=o}]).default});
Vue.component('tree-select',treeSelect)
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
! function (t, e) {
"object" == typeof exports && "object" == typeof module ? module.exports = e(require("quill")) : "function" == typeof define && define.amd ? define(["quill"], e) : "object" == typeof exports ? exports.VueQuillEditor = e(require("quill")) : t.VueQuillEditor = e(t.Quill)
}(this, function (t) {
return function (t) {
function e(i) {
if (n[i]) return n[i].exports;
var l = n[i] = {
i: i,
l: !1,
exports: {}
};
return t[i].call(l.exports, l, l.exports, e), l.l = !0, l.exports
}
var n = {};
return e.m = t, e.c = n, e.i = function (t) {
return t
}, e.d = function (t, n, i) {
e.o(t, n) || Object.defineProperty(t, n, {
configurable: !1,
enumerable: !0,
get: i
})
}, e.n = function (t) {
var n = t && t.__esModule ? function () {
return t.default
} : function () {
return t
};
return e.d(n, "a", n), n
}, e.o = function (t, e) {
return Object.prototype.hasOwnProperty.call(t, e)
}, e.p = "/", e(e.s = 2)
}([function (e, n) {
e.exports = t
}, function (t, e, n) {
"use strict";
Object.defineProperty(e, "__esModule", {
value: !0
});
var i = n(4),
l = n.n(i),
o = n(6),
r = n(5),
u = r(l.a, o.a, !1, null, null, null);
e.default = u.exports
}, function (t, e, n) {
"use strict";
function i(t) {
return t && t.__esModule ? t : {
default: t
}
}
Object.defineProperty(e, "__esModule", {
value: !0
}), e.install = e.quillEditor = e.Quill = void 0;
var l = n(0),
o = i(l),
r = n(1),
u = i(r),
s = window.Quill || o.default,
a = function (t, e) {
e && (u.default.props.globalOptions.default = function () {
return e
}), t.component(u.default.name, u.default)
},
c = {
Quill: s,
quillEditor: u.default,
install: a
};
e.default = c, e.Quill = s, e.quillEditor = u.default, e.install = a
}, function (t, e, n) {
"use strict";
Object.defineProperty(e, "__esModule", {
value: !0
}), e.default = {
theme: "snow",
boundary: document.body,
modules: {
toolbar: [
["bold", "italic", "underline", "strike"],
["blockquote", "code-block"],
[{
header: 1
}, {
header: 2
}],
[{
list: "ordered"
}, {
list: "bullet"
}],
[{
script: "sub"
}, {
script: "super"
}],
[{
indent: "-1"
}, {
indent: "+1"
}],
[{
direction: "rtl"
}],
[{
size: ["small", !1, "large", "huge"]
}],
[{
header: [1, 2, 3, 4, 5, 6, !1]
}],
[{
color: []
}, {
background: []
}],
[{
font: []
}],
[{
align: []
}],
["clean"],
["link", "image", "video"]
]
},
placeholder: "Insert text here ...",
readOnly: !1
}
}, function (t, e, n) {
"use strict";
function i(t) {
return t && t.__esModule ? t : {
default: t
}
}
Object.defineProperty(e, "__esModule", {
value: !0
});
var l = n(0),
o = i(l),
r = n(3),
u = i(r),
s = window.Quill || o.default;
"function" != typeof Object.assign && Object.defineProperty(Object, "assign", {
value: function (t, e) {
if (null == t) throw new TypeError("Cannot convert undefined or null to object");
for (var n = Object(t), i = 1; i < arguments.length; i++) {
var l = arguments[i];
if (null != l)
for (var o in l) Object.prototype.hasOwnProperty.call(l, o) && (n[o] = l[o])
}
return n
},
writable: !0,
configurable: !0
}), e.default = {
name: "quill-editor",
data: function () {
return {
_options: {},
_content: "",
defaultOptions: u.default
}
},
props: {
content: String,
value: String,
disabled: {
type: Boolean,
default: !1
},
options: {
type: Object,
required: !1,
default: function () {
return {}
}
},
globalOptions: {
type: Object,
required: !1,
default: function () {
return {}
}
}
},
mounted: function () {
this.initialize()
},
beforeDestroy: function () {
this.quill = null, delete this.quill
},
methods: {
initialize: function () {
var t = this;
this.$el && (this._options = Object.assign({}, this.defaultOptions, this.globalOptions, this.options), this.quill = new s(this.$refs.editor, this._options), this.quill.enable(!1), (this.value || this.content) && this.quill.pasteHTML(this.value || this.content), this.disabled || this.quill.enable(!0), this.quill.on("selection-change", function (e) {
e ? t.$emit("focus", t.quill) : t.$emit("blur", t.quill)
}), this.quill.on("text-change", function (e, n, i) {
var l = t.$refs.editor.children[0].innerHTML,
o = t.quill,
r = t.quill.getText();
"<p><br></p>" === l && (l = ""), t._content = l, t.$emit("input", t._content), t.$emit("change", {
html: l,
text: r,
quill: o
})
}), this.$emit("ready", this.quill))
}
},
watch: {
content: function (t, e) {
this.quill && (t && t !== this._content ? (this._content = t, this.quill.pasteHTML(t)) : t || this.quill.setText(""))
},
value: function (t, e) {
this.quill && (t && t !== this._content ? (this._content = t, this.quill.pasteHTML(t)) : t || this.quill.setText(""))
},
disabled: function (t, e) {
this.quill && this.quill.enable(!t)
}
}
}
}, function (t, e) {
t.exports = function (t, e, n, i, l, o) {
var r, u = t = t || {},
s = typeof t.default;
"object" !== s && "function" !== s || (r = t, u = t.default);
var a = "function" == typeof u ? u.options : u;
e && (a.render = e.render, a.staticRenderFns = e.staticRenderFns, a._compiled = !0), n && (a.functional = !0), l && (a._scopeId = l);
var c;
if (o ? (c = function (t) {
t = t || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext, t || "undefined" == typeof __VUE_SSR_CONTEXT__ || (t = __VUE_SSR_CONTEXT__), i && i.call(this, t), t && t._registeredComponents && t._registeredComponents.add(o)
}, a._ssrRegister = c) : i && (c = i), c) {
var d = a.functional,
f = d ? a.render : a.beforeCreate;
d ? (a._injectStyles = c, a.render = function (t, e) {
return c.call(e), f(t, e)
}) : a.beforeCreate = f ? [].concat(f, c) : [c]
}
return {
esModule: r,
exports: u,
options: a
}
}
}, function (t, e, n) {
"use strict";
var i = function () {
var t = this,
e = t.$createElement,
n = t._self._c || e;
return n("div", {
staticClass: "quill-editor"
}, [t._t("toolbar"), t._v(" "), n("div", {
ref: "editor"
})], 2)
},
l = [],
o = {
render: i,
staticRenderFns: l
};
e.a = o
}])
});
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment