lilishop-ui/manager/src/views/privacy-content/index.vue

249 lines
6.4 KiB
Vue

<template>
<div class="wrapper">
<Row>
<Col span="24">
<Card class="article-detail">
<Alert>隐私协议在移动端中 设置->关于我们->对应的文章展示</Alert>
<Table :loading="loading" border :columns="columns" :data="data" ref="table">
</Table>
</Card>
</Col>
</Row>
<template v-if="!selected">
<Modal :title="modalTitle" v-model="modalVisible" :mask-closable="false" :width="1100">
<Form ref="form" :model="form.article" :label-width="100">
<FormItem label="文章标题" prop="title">
<Input v-model="form.article.title" clearable style="width: 40%" />
</FormItem>
<FormItem class="form-item-view-el" label="文章内容" prop="content">
<editor
ref="editor"
openXss
v-model="form.article.content"
:init="{ ...initEditor,height:'800px' }"
></editor>
</FormItem>
</Form>
<div slot="footer">
<Button type="text" @click="modalVisible = false">取消</Button>
<Button type="primary" :loading="submitLoading" @click="handleSubmit"></Button>
</div>
</Modal>
</template>
</div>
</template>
<script>
import {
getArticleCategory,
updatePrivacy,
getPrivacy,
} from "@/api/pages";
import Editor from "@tinymce/tinymce-vue";
import { initEditor } from "@/components/editor/config";
export default {
name: "privacy",
components: {
editor: Editor,
},
props: {
selected: {
type: Boolean,
default: false,
},
},
data() {
return {
initEditor,
loading: false, // 表单加载状态
modalVisible: false, // 添加或编辑显示
treeDataDefault: [],
list: [], // 列表
treeValue: "", // 选择的分类
//树结构
treeData: [],
submitLoading: false, // 添加或编辑提交状态
modalTitle:'',
currindex:'',
form: {
type:'',
article:{
openStatus: false,
title: '',
categoryId: '',
sort: 1,
content: '',
type:''
},
id:''
},
columns: [
// 表头
{
title:"协议名称",
key: "name",
width: 150,
},
// 表头
{
title:"协议类型",
key: "type",
width: 150,
},
{
title: "操作",
key: "action",
align: "center",
width: 230,
render: (h, params) => {
return h("div", [
h(
"Button",
{
props: {
size: "small",
type: "info",
},
style: {
marginRight: "5px",
},
on: {
click: () => {
this.edit(params.row);
},
},
},
"编辑"
)
]);
},
},
],
data: [
{
name:'店铺入驻协议',
type:'STORE_REGISTER'
},
{
name:'用户协议',
type:'USER_AGREEMENT'
},
{
name:'证照信息',
type:'LICENSE_INFORMATION'
},
{
name:'关于我们',
type:'ABOUT'
},
{
name:'隐私策略',
type:'PRIVACY_POLICY'
},
], // 表单数据
};
},
methods: {
// 初始化数据
init() {
this.getAllList(0);
},
// 文章分类的选择事件
handleCheckChange(data) {
let value = "";
let title = "";
this.list = [];
data.forEach((item, index) => {
value += `${item.value},`;
title += `${item.title},`;
});
value = value.substring(0, value.length - 1);
title = title.substring(0, title.length - 1);
this.list.push({
value,
title,
});
this.form.article.categoryId = value;
},
// 获取全部文章分类
getAllList(parent_id) {
this.loading = true;
getArticleCategory(parent_id).then((res) => {
this.loading = false;
if (res.success) {
this.treeData = this.getTree(res.result);
this.treeDataDefault = this.getTree(res.result);
this.treeData.unshift({
title: "全部",
level: 0,
children: [],
id: "0",
categoryId: 0,
});
}
});
},
// 文章分类格式化方法
getTree(tree = []) {
let arr = [];
if (!!tree && tree.length !== 0) {
tree.forEach((item) => {
let obj = {};
obj.title = item.articleCategoryName;
obj.value = item.id;
obj.attr = item.articleCategoryName; // 其他你想要添加的属性
obj.expand = false;
obj.selected = false;
obj.children = this.getTree(item.children); // 递归调用
arr.push(obj);
});
}
return arr;
},
// 编辑文章modal
edit(data) {
this.modalType = 1;
this.modalTitle = "编辑协议";
this.form.article = {
content:''
};
this.$refs.form.resetFields();
this.loading = true;
getPrivacy(data.type).then((res) => {
this.loading = false;
this.modalVisible = true;
this.form.article.categoryId = res.result.categoryId;
this.form.id = res.result.id;
this.form.article.content =res.result.content;
this.form.article.title = res.result.title;
this.form.article.sort = res.result.sort;
this.form.article.openStatus = res.result.openStatus;
this.form.article.type = res.result.type;
this.form.type = res.result.type;
});
this.loading = false;
},
// 添加文章
handleSubmit() {
this.$refs.form.validate((valid) => {
if (valid) {
this.submitLoading = true;
// 编辑
updatePrivacy(this.form.id,this.form.type,this.form.article).then((res) => {
this.submitLoading = false;
if (res.success) {
this.$Message.success("操作成功");
this.modalVisible = false;
}
});
}
});
},
},
mounted() {
this.init();
},
};
</script>