merchant-web/src/views/modules/approval/content/index.vue

672 lines
20 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="_tablepage">
<searchForm
ref="searchForm"
:searchForm="pageData.searchForm"
:searchData="pageData.queryData"
:searchHandle="pageData.searchHandle"
>
</searchForm>
<obj-table-plus
style="height: 60vh"
@query="searchTableList"
ref="oTable"
v-model="pageData.tableData"
:isPagination="true"
:tableCols="pageData.tableCols"
:tableProp="tableProp"
:toolbarProp="{}"
:tableEvent="{ 'select-change': selectChange }"
/>
<!-- <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>
<!-- 审核弹窗 -->
<ApprovalModal type="content" ref="ApprovalModal" @refresh="$refs.oTable.refresh()"/>
</div>
</template>
<script>
import ApprovalModal from '../popup/approval.vue'
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,ApprovalModal },
data() {
return {
// 加载动画
tableProp: {
height: "auto",
},
typeList: [],
pageData: {
//查询表单内容 start
searchForm: [
{
type: "Input",
label: "关键字",
size: "mini",
prop: "searchName",
placeholder: "标题、来源、编辑者名称",
width: "230px",
},
// {
// type: "Cascader",
// label: "资讯分类",
// size:"mini",
// prop: "mainTypeId",//实际传参时进行了处理
// data: [],
// },
{
type: "Select",
label: "内容类型",
size: "mini",
prop: "searchType",
options: [
{
label: "内容轮播图",
value: 3,
},
{
label: "学习轮播图",
value: 4,
},
{
label: "地方内容",
value: 2,
},
{
label: "红色内容",
value: 1,
},
],
},
{
type: "Select",
prop: "isVideo",
label: "信息类型",
size: "mini",
options: [
{ label: "资讯", value: 0 },
{ label: "视频", value: 1 },
],
width: "300px",
},
{
size: "mini",
type: "DateTimeRange",
label: "发布时间范围",
prop: "time",
},
{
type: "Select",
label: "审核状态",
prop: "examineStatus",
default:true,
size: "mini",
options: [
{ label: "未审核", value: 0 },
{ label: "审核通过", value: 1 },
{ label: "审核未通过", value: 2 },
],
},
],
//查询表单内容 end
//查询条件 start
queryData: {
searchName: "",
mainTypeId: "",
time: [],
searchType: 3,
isVideo: 0,
examineStatus:'',
},
//查询条件 end
//查询表单按钮start
searchHandle: [
{
label: "查询",
size: "mini",
type: "primary",
handle: () => this.$refs.oTable.reload(),
auth: "reportDatasource_search",
},
{
label: "重置",
size: "mini",
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: [
{ title: "标题", field: "title", align: "center", fixed: "left" },
{ title: "副标题", field: "subtitle", align: "center" },
{ title: "主分类名", field: "mainTypeName", align: "center" },
{ title: "子分类名", field: "secondTypeName", align: "center" },
{ title: "资讯来源", field: "source", align: "center" },
{ title: "编辑者", field: "editorName", align: "center" },
{ title: "作者", field: "author", align: "center" },
{
title: "封面",
type: "jsx",
field: "imageUrl",
align: "center",
render: ({ row }) => {
// @/assets/images/noimg.svg
return (
<el-image
fit="cover"
src={
row.imageUrl
? row.imageUrl
: require("@/assets/images/noimg.svg")
}
></el-image>
);
},
},
// { title: "外链", field: "contentLink", align: "center" },
{ title: "阅读数", field: "readNumber", align: "center" },
{ title: "点赞数", field: "likeNumber", align: "center" },
{ title: "评论数", field: "commentNumber", align: "center" },
{ title: "收藏数", field: "collectNumber", align: "center" },
{
title: "审核状态",
field: "createTime",
align: "center",
// "title-help":{message: '开关开启代表通过审核,关闭代表不通过审核'},
type: "jsx",
render: ({ row }) => {
switch (row.examineStatus) {
case 0:
return (
<span>
<span style="color:gray">未审核</span>
</span>
);
case 1:
return (
<span>
<span style="color:green">审核通过</span>
</span>
);
case 2:
return (
<span>
<span style="color:red">审核未通过</span>
</span>
);
default:
return (<span></span>);
}
},
},
{
title: "操作",
field: "operation",
align: "center",
type: "button",
fixed: "right",
btnList: [
{
label: "查看",
type: "text",
auth: "reportDatasource_getDetail",
handle: (row) =>
this.showModal(this.commonConstants.modalType.detail, row),
},
{
label: "审核",
type: "text",
handle: (row) =>
this.$refs.ApprovalModal.show({...row,contentType:this.pageData.queryData.searchType})
},
],
},
],
//表格列表头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",
placeholder: "",
disabled: () => true,
},
{
type: "Input",
label: "副标题",
prop: "subtitle",
// rules: { maxLength: 100 },
width: "900px",
placeholder: "",
disabled: () => true,
},
{
type: "Cascader",
label: "资讯分类",
prop: "mainTypeId", //实际传参时进行了处理
data: [],
// rules: { required: true },
width: "300px",
disabled: () => true,
},
{
type: "Input",
label: "资讯来源",
prop: "source",
// rules: { required: true, maxLength: 100 },
width: "300px",
disabled: () => true,
placeholder: "",
},
{
type: "Input",
label: "作者",
prop: "author",
// rules: { maxLength: 100 },
width: "300px",
disabled: () => true,
placeholder: "",
},
{
type: "Input",
label: "编辑者",
prop: "editorName",
// rules: { maxLength: 100 },
width: "300px",
disabled: () => true,
placeholder: "",
},
// {
// type: "Input",
// label: "外链",
// prop: "contentLink",
// rules: { maxLength: 100 },
// width: "300px",
// },
{
type: "Input",
label: "关键词",
prop: "keywords",
// rules: { maxLength: 100 },
width: "300px",
disabled: () => true,
placeholder: "",
},
{
type: "Radio",
prop: "isVideo",
label: "内容类型",
radios: [
{ label: "资讯", value: "0" },
{ label: "视频", value: "1" },
],
width: "300px",
disabled: () => true,
},
{
type: "Img",
label: "封面",
prop: "imageUrl",
// prop: "fileList",
// accept: ".jpg,.jpeg,.png,.JPG,.JPEG",
width: "300px",
},
{
type: "ShowTinymce",
label: "资讯内容",
prop: "content",
// rules: { required: true },
width: "1000px",
},
],
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",
// rules: { required: true },
width: "300px",
isVideo: 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
},
parentId: "",
};
},
activated() {
this.$refs.oTable.refresh();
this.searchContentType();
},
watch: {
"pageData.modalData.isVideo": {
handler: function (val, oldval) {
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 = "";
}
},
},
"pageData.queryData.searchType": {
handler: function (val) {
this.$refs.oTable.reload();
},
},
},
methods: {
/**
* @description: 获取表格数据
* @param {type}
* @return:
* @author: ym
*/
searchTableList(pageNo, pageSize) {
// 初始化obj
var obj = {};
Object.assign(obj, this.pageData.queryData, this.pageData.tablePage);
obj.page = this.pageData.tablePage.currentPage;
obj.limit = this.pageData.tablePage.pageSize;
let data = obj.mainTypeId;
obj.mainTypeId = data[0] ? data[0] : "";
obj.secondTypeId = data[1] ? data[1] : "";
delete obj["pageSizeRange"];
if (obj.time.length == 2) {
obj.startTime = obj.time[0];
obj.endTime = obj.time[1];
}
delete obj.time;
// 请求数据
let searchType = this.pageData.queryData.searchType;
if (searchType == 3) {
this.$api
.getContentImage({ ...obj, page: pageNo, limit: pageSize })
.then((res) => {
this.$refs.oTable.complete(
res.data.page.list,
res.data.page.totalCount
);
});
} else if (searchType == 4) {
this.$api
.getLocalServiceImage({ ...obj, page: pageNo, limit: pageSize })
.then((res) => {
this.$refs.oTable.complete(
res.data.page.list,
res.data.page.totalCount
);
});
} else if (searchType == 2) {
this.$api
.getLocalContentInfoListByParams({
...obj,
page: pageNo,
limit: pageSize,
})
.then((res) => {
this.$refs.oTable.complete(
res.data.page.list,
res.data.page.totalCount
);
});
} else if (searchType == 1) {
this.$api
.getContentInfoListByParams({ ...obj, page: pageNo, limit: pageSize })
.then((res) => {
this.$refs.oTable.complete(
res.data.page.list,
res.data.page.totalCount
);
});
}
// this.$api.getContentInfoListByParams({...obj,page:pageNo,limit:pageSize}).then((res) => {
// this.$refs.oTable.complete(
// res.data.page.list,
// res.data.page.totalCount
// );
// });
},
// 查询分类
searchContentType() {
this.$api.getContentTypeList().then((res) => {
let data = res.data.list.map((item) => {
if (item.mainTypeName === "##") {
item.label = "地方";
} else {
item.label = item.mainTypeName;
}
item.value = item.mainTypeId;
item.children = item.children.map((item1) => {
item1.label = item1.secondTypeName;
item1.value = item1.secondTypeId;
return item1;
});
if (item.children.length === 0) {
delete item.children;
}
return item;
});
this.pageData.searchForm[1].data = data;
this.pageData.modalForm[2].data = data;
});
},
// 重置
resetSearch() {
// this.commonUtil.clearObj(this.pageData.queryData);
this.$refs.searchForm.$refs.searchFormRef.resetFields();
// this.searchTableList();
this.$refs.oTable.reload();
},
/**
* @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'
},
];
}
if (row.secondTypeId && typeof row.mainTypeId === "string") {
row.mainTypeId = [row.mainTypeId, row.secondTypeId];
}
row.isVideo = row.isVideo + "";
this.$nextTick(() => {
this.pageData.modalData = JSON.parse(JSON.stringify(row));
});
// console.log(this.pageData.modalData)
},
/**
* @description: 关闭modal
* @param
* @return:
* @author: ym
*/
closeModal() {
this.pageData.modalConfig.show = false; //关闭modal
},
selectChange(rows) {
this.pageData.selectList = rows;
},
},
};
</script>
<style lang="scss" scoped>
.content-dialog ::v-deep .el-dialog__body {
padding: 0px;
}
>>> .el-input.is-disabled .el-input__inner {
background-color: #fff;
color: rgb(100, 100, 100);
cursor: default;
}
>>> .el-cascader .el-input .el-icon-arrow-down::before {
content: "";
/* cursor:default; */
}
>>> .el-input.is-disabled .el-input__icon {
cursor: default;
}
</style>