529 lines
15 KiB
Vue
529 lines
15 KiB
Vue
<template>
|
||
<div class="_tablepage">
|
||
<searchForm
|
||
:searchForm="pageData.searchForm"
|
||
:searchData="pageData.queryData"
|
||
:searchHandle="pageData.searchHandle"
|
||
>
|
||
</searchForm>
|
||
<cusTable
|
||
:loading="loading"
|
||
:isSelection="true"
|
||
:isIndex="true"
|
||
:isPagination="true"
|
||
:isHandle="true"
|
||
:tableCols="pageData.tableCols"
|
||
:tableHandles="pageData.tableHandles"
|
||
:tableData="pageData.tableData"
|
||
:tablePage="pageData.tablePage"
|
||
@handleCurrentChange="searchTableList"
|
||
@selectChange="selectChange"
|
||
@handleSizeChange="searchTableList"
|
||
></cusTable>
|
||
<modal
|
||
ref="modalRef"
|
||
:modalConfig="pageData.modalConfig"
|
||
:modalForm="pageData.modalForm"
|
||
:modalData="pageData.modalData"
|
||
:modalHandles="pageData.modalHandles"
|
||
@closeModal="closeModal()"
|
||
></modal>
|
||
</div>
|
||
</template>
|
||
<script>
|
||
import modal from "../../../components/common/modal/modal.vue";
|
||
import searchForm from "../../../components/common/searchform/searchForm.vue";
|
||
import cusTable from "../../../components/common/table/custable.vue";
|
||
export default {
|
||
components: { searchForm, cusTable, modal },
|
||
data() {
|
||
return {
|
||
//加载动画
|
||
loading:false,
|
||
typeList: [],
|
||
pageData: {
|
||
//查询表单内容 start
|
||
searchForm: [
|
||
{ type: "Input", label: "关键字", prop: "searchName",placeholder:'标题、来源、编辑者名称',width:'230px' },
|
||
{
|
||
type: "Select",
|
||
label: "内容类型",
|
||
prop: "isVideo",
|
||
options: [{
|
||
label:'资讯',value:0
|
||
},{label:'视频',value:1}],
|
||
},
|
||
{
|
||
type: "DateTimeRange",
|
||
label: "发布时间范围",
|
||
prop: "time",
|
||
},
|
||
],
|
||
//查询表单内容 end
|
||
//查询条件 start
|
||
queryData: {
|
||
searchName: "",
|
||
contentTypeId: "",
|
||
time: [],
|
||
isVideo:0
|
||
},
|
||
//查询条件 end
|
||
//查询表单按钮start
|
||
searchHandle: [
|
||
{
|
||
label: "查询",
|
||
type: "primary",
|
||
handle: () => this.searchTableList(),
|
||
auth: "reportDatasource_search",
|
||
},
|
||
{
|
||
label: "重置",
|
||
type: "warning",
|
||
handle: () => this.resetSearch(),
|
||
auth: "reportDatasource_search",
|
||
},
|
||
],
|
||
//查询表单按钮end
|
||
//表格数据start
|
||
tableData: [],
|
||
//表格数据end
|
||
//表格工具栏按钮 start
|
||
tableHandles: [
|
||
{
|
||
label: "新增",
|
||
type: "primary",
|
||
handle: () => this.showModal(this.commonConstants.modalType.insert),
|
||
auth: "reportDatasource_insert",
|
||
},
|
||
{
|
||
label: "批量删除",
|
||
type: "danger",
|
||
handle: () => this.deleteBatch(),
|
||
auth: "reportDatasource_batchDelete",
|
||
},
|
||
],
|
||
//表格工具栏按钮 end
|
||
selectList: [], //表格选中的数据
|
||
//表格分页信息start
|
||
tablePage: {
|
||
currentPage: 1,
|
||
pageSize: 5,
|
||
pageTotal: 0,
|
||
pageSizeRange: [5, 10, 20, 50],
|
||
},
|
||
//表格分页信息end
|
||
//表格列表头start
|
||
tableCols: [
|
||
{ label: "标题", prop: "title", align: "center" },
|
||
{ label: "副标题", prop: "subtitle", align: "center" },
|
||
{ label: "资讯来源", prop: "source", align: "center" },
|
||
{ label: "编辑者", prop: "editorName", align: "center" },
|
||
{ label: "作者", prop: "author", align: "center" },
|
||
{ label: "封面", type: "image", prop: "imageUrl", align: "center" },
|
||
{ label: "外链", prop: "contentLink", align: "center" },
|
||
{ label: "阅读数", prop: "readNumber", align: "center" },
|
||
{ label: "喜欢", prop: "likeNumber", align: "center" },
|
||
{ label: "收藏数", prop: "collectNumber", align: "center" },
|
||
{
|
||
label: "操作",
|
||
prop: "operation",
|
||
align: "center",
|
||
type: "button",
|
||
width:'180px',
|
||
fixed: "right",
|
||
btnList: [
|
||
{
|
||
label: "预览",
|
||
type: "text",
|
||
auth: "reportDatasource_getDetail",
|
||
handle: (row) =>
|
||
this.showModal(this.commonConstants.modalType.detail, row),
|
||
},
|
||
{
|
||
label: "编辑",
|
||
type: "text",
|
||
auth: "reportDatasource_update",
|
||
handle: (row) =>
|
||
this.showModal(this.commonConstants.modalType.update, row),
|
||
},
|
||
{
|
||
label: "删除",
|
||
type: "text",
|
||
auth: "reportDatasource_delete",
|
||
handle: (row) => this.deleteOne(row.contentInfoId),
|
||
},
|
||
],
|
||
},
|
||
],
|
||
//表格列表头end
|
||
//modal配置 start
|
||
modalConfig: {
|
||
title: "新增", //弹窗标题,值为:新增,查看,编辑
|
||
show: false, //弹框显示
|
||
formEditDisabled: false, //编辑弹窗是否可编辑
|
||
width: "80vw", //弹出框宽度
|
||
modalRef: "modalRef", //modal标识
|
||
type: "1", //类型 1新增 2编辑 3保存
|
||
},
|
||
//modal配置 end
|
||
//modal表单 start
|
||
modalForm: [
|
||
{
|
||
type: "Input",
|
||
label: "标题",
|
||
prop: "title",
|
||
rules: { required: true, maxLength: 100 },
|
||
width: "900px",
|
||
},
|
||
{
|
||
type: "Input",
|
||
label: "副标题",
|
||
prop: "subtitle",
|
||
rules: { maxLength: 100 },
|
||
width: "900px",
|
||
},
|
||
{
|
||
type: "Input",
|
||
label: "资讯来源",
|
||
prop: "source",
|
||
rules: { required: true, maxLength: 100 },
|
||
width: "300px",
|
||
},
|
||
{
|
||
type: "Input",
|
||
label: "作者",
|
||
prop: "author",
|
||
rules: { maxLength: 100 },
|
||
width: "300px",
|
||
},
|
||
{
|
||
type: "Input",
|
||
label: "编辑者",
|
||
prop: "editorName",
|
||
rules: { maxLength: 100 },
|
||
width: "300px",
|
||
},
|
||
{
|
||
type: "Input",
|
||
label: "外链",
|
||
prop: "contentLink",
|
||
rules: { maxLength: 100 },
|
||
width: "300px",
|
||
},
|
||
{
|
||
type: "Input",
|
||
label: "关键词",
|
||
prop: "keywords",
|
||
rules: { maxLength: 100 },
|
||
width: "300px",
|
||
},
|
||
{
|
||
type:'Radio',
|
||
prop:'isVideo',
|
||
label:'内容类型',
|
||
radios:[{label:'资讯',value:'0'},{label:'视频',value:'1'}],
|
||
width: "300px",
|
||
},
|
||
{
|
||
type: "Upload",
|
||
label: "封面",
|
||
fileUrl: "imageUrl",
|
||
prop: "fileList",
|
||
accept: ".jpg,.jpeg,.png,.JPG,.JPEG",
|
||
width: "300px",
|
||
},
|
||
{
|
||
type: "Tinymce",
|
||
label: "资讯内容",
|
||
prop: "content",
|
||
rules: { required: true },
|
||
width: "1200px",
|
||
},
|
||
],
|
||
newModalForm:[
|
||
{
|
||
type: "Upload",
|
||
label: "封面",
|
||
fileUrl: "imageUrl",
|
||
prop: "fileList",
|
||
accept: ".jpg,.jpeg,.png,.JPG,.JPEG",
|
||
width: "300px",
|
||
},
|
||
],//咨询专属内容
|
||
videoModalForm:[
|
||
{
|
||
type: "Upload",
|
||
label: "封面",
|
||
fileUrl: "imageUrl",
|
||
prop: "fileList",
|
||
accept: ".jpg,.jpeg,.png,.JPG,.JPEG",
|
||
width: "300px",
|
||
},
|
||
{
|
||
type: "Upload",
|
||
label: "视频",
|
||
fileUrl: "videoUrl",
|
||
prop: "fileListVideo",
|
||
listType:'text',
|
||
width: "300px",
|
||
isVideo:true,
|
||
rules:{required:true},
|
||
accept:'.mp4,.avi,.mov,.rmvb,.flv,.MP4,.AVI,.MOV,.RMVB,.FLV',
|
||
tips:'请上传视频文件'
|
||
},
|
||
],//视频专属内容
|
||
//modal表单 end
|
||
//modal 数据 start
|
||
modalData: {
|
||
userId: "",
|
||
content: "",
|
||
fileUrl: "",
|
||
fileList: [],
|
||
isVideo:'0',
|
||
videoUrl:'',
|
||
source:'',
|
||
fileListVideo:[]
|
||
},
|
||
//modal 数据 end
|
||
//modal 按钮 start
|
||
modalHandles: [
|
||
{ label: "取消", type: "default", handle: () => this.closeModal() },
|
||
{ label: "提交", type: "primary", handle: () => this.save() },
|
||
],
|
||
//modal 按钮 end
|
||
},
|
||
};
|
||
},
|
||
watch:{
|
||
"pageData.modalData.isVideo":{
|
||
handler:function(val,oldval){
|
||
// console.log(val)
|
||
if(val==='1'&&oldval==='0'){
|
||
this.pageData.modalForm.splice(-1-this.pageData.newModalForm.length,this.pageData.newModalForm.length,...this.pageData.videoModalForm)
|
||
|
||
}
|
||
else if(val==='0'&&oldval==='1'){
|
||
this.pageData.modalForm.splice(-1-this.pageData.videoModalForm.length,this.pageData.videoModalForm.length,...this.pageData.newModalForm)
|
||
}
|
||
}
|
||
},
|
||
"pageData.modalData.fileList":{
|
||
handler:function(val){
|
||
if(val&&val.length===0){
|
||
this.pageData.modalData.imageUrl=''
|
||
}
|
||
}
|
||
},
|
||
"pageData.modalData.fileListVideo":{
|
||
handler:function(val){
|
||
if(val&&val.length===0){
|
||
this.pageData.modalData.videoUrl=''
|
||
}
|
||
}
|
||
}
|
||
},
|
||
activated() {
|
||
this.searchTableList();
|
||
},
|
||
methods: {
|
||
/**
|
||
* @description: 获取表格数据
|
||
* @param {type}
|
||
* @return:
|
||
* @author: ym
|
||
*/
|
||
searchTableList() {
|
||
this.loading=true;
|
||
// 初始化obj
|
||
var obj = {};
|
||
Object.assign(obj, this.pageData.queryData, this.pageData.tablePage);
|
||
obj.page = this.pageData.tablePage.currentPage;
|
||
obj.limit = this.pageData.tablePage.pageSize;
|
||
delete obj["pageSizeRange"];
|
||
if (obj.time.length == 2) {
|
||
obj.startTime = obj.time[0];
|
||
obj.endTime = obj.time[1];
|
||
}
|
||
delete obj.time
|
||
// 请求数据
|
||
this.$api.getActivityInfoListByParams(obj).then((res) => {
|
||
this.commonUtil.tableAssignment(
|
||
res.data.page,
|
||
this.pageData.tablePage,
|
||
this.pageData.tableData
|
||
);
|
||
})
|
||
.finally(()=>{
|
||
this.loading=false;
|
||
})
|
||
},
|
||
// 重置
|
||
resetSearch() {
|
||
this.commonUtil.clearObj(this.pageData.queryData);
|
||
this.searchTableList();
|
||
},
|
||
/**
|
||
* @description: modal显示
|
||
* @param {type} 类型 1新增,2编辑 3详情
|
||
* @param {id} 数据唯一标识
|
||
* @return:
|
||
* @author: ym
|
||
*/
|
||
showModal(type, row) {
|
||
this.commonUtil.clearObj(this.pageData.modalData); //清空modalData
|
||
this.$nextTick(()=>{
|
||
this.$refs["modalRef"].$refs["modalFormRef"].clearValidate(); //校验重置
|
||
})
|
||
this.pageData.modalData.source=this.$newSource//获取默认的资讯来源
|
||
this.pageData.modalData.isVideo='0'//补充isVideo 不会触发watch
|
||
this.commonUtil.showModal(this.pageData.modalConfig, type);
|
||
if (type != this.commonConstants.modalType.insert) {
|
||
this.getDetail(row);
|
||
}
|
||
},
|
||
/**
|
||
* @description: 获取详细数据
|
||
* @param {id} 数据唯一标识
|
||
* @return:
|
||
* @author: ym
|
||
*/
|
||
getDetail(row) {
|
||
if(row.imageUrl){
|
||
row.fileList=[{
|
||
url:row.imageUrl
|
||
}]
|
||
}
|
||
if(row.videoUrl){
|
||
row.fileListVideo=[{
|
||
url:row.videoUrl
|
||
// +'?x-oss-process=video/snapshot,t_10000,m_fast'
|
||
}]
|
||
}
|
||
row.isVideo=row.isVideo+''
|
||
this.$nextTick(()=>{
|
||
this.pageData.modalData = JSON.parse(JSON.stringify(row));
|
||
})
|
||
},
|
||
/**
|
||
* @description: 关闭modal
|
||
* @param
|
||
* @return:
|
||
* @author: ym
|
||
*/
|
||
closeModal() {
|
||
this.pageData.modalConfig.show = false; //关闭modal
|
||
},
|
||
/**
|
||
* @description: 保存数据
|
||
* @param {type}
|
||
* @return:
|
||
* @author: ym
|
||
*/
|
||
save() {
|
||
this.pageData.modalData.userId = this.$store.state.user.id;
|
||
this.$refs["modalRef"].$refs["modalFormRef"].validate((valid) => {
|
||
if (valid) {
|
||
let content = this.pageData.modalData;
|
||
if(content.isVideo==0){
|
||
content.videoUrl=''
|
||
}
|
||
if (
|
||
this.pageData.modalConfig.type ==
|
||
this.commonConstants.modalType.insert
|
||
) {
|
||
this.$api.saveActivityInfo(content).then((res) => {
|
||
this.searchTableList();
|
||
});
|
||
} else {
|
||
this.$api.updateRedActivityInfo(content).then((res) => {
|
||
this.searchTableList();
|
||
});
|
||
}
|
||
this.closeModal();
|
||
} else {
|
||
return false;
|
||
}
|
||
});
|
||
},
|
||
/**
|
||
* @description: 删除一条数据
|
||
* @param {id} 数据唯一标识
|
||
* @return:
|
||
* @author: ym
|
||
*/
|
||
deleteOne(id) {
|
||
let ids = [];
|
||
ids[0] = id;
|
||
let obj = {
|
||
messageContent: this.commonUtil.getMessageFromList(
|
||
"confirm.delete",
|
||
null
|
||
),
|
||
};
|
||
this.commonUtil
|
||
.showConfirm(obj)
|
||
.then(async () => {
|
||
await this.$api.deleteRedActivityInfo(ids).then((res) => {
|
||
this.searchTableList();
|
||
});
|
||
})
|
||
.catch(() => {
|
||
this.commonUtil.showMessage({
|
||
message: this.commonUtil.getMessageFromList("error.cancel", null),
|
||
type: this.commonConstants.messageType.info,
|
||
});
|
||
});
|
||
},
|
||
/**
|
||
* @description: 批量删除
|
||
* @param {type}
|
||
* @return:
|
||
* @author: ym
|
||
*/
|
||
deleteBatch() {
|
||
const length = this.pageData.selectList.length;
|
||
if (length == 0) {
|
||
this.commonUtil.showMessage({
|
||
message: this.commonUtil.getMessageFromList(
|
||
"error.batchdelete.empty",
|
||
null
|
||
),
|
||
type: this.commonConstants.messageType.error,
|
||
});
|
||
} else {
|
||
let ids = [];
|
||
for (let i = 0; i < length; i++) {
|
||
ids.push("" + this.pageData.selectList[i].contentInfoId);
|
||
}
|
||
let obj = {
|
||
messageContent: this.commonUtil.getMessageFromList(
|
||
"confirm.delete",
|
||
null
|
||
),
|
||
};
|
||
this.commonUtil
|
||
.showConfirm(obj)
|
||
.then(() => {
|
||
this.$api.deleteRedActivityInfo(ids).then((res) => {
|
||
this.searchTableList();
|
||
});
|
||
})
|
||
.catch(() => {
|
||
this.commonUtil.showMessage({
|
||
message: this.commonUtil.getMessageFromList("error.cancel", null),
|
||
type: this.commonConstants.messageType.info,
|
||
});
|
||
});
|
||
}
|
||
},
|
||
selectChange(rows) {
|
||
this.pageData.selectList = rows;
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
<style lang="scss" scoped>
|
||
.content-dialog ::v-deep .el-dialog__body{
|
||
padding: 0px;
|
||
}
|
||
</style> |