服务日志功能开发

This commit is contained in:
zxy
2024-03-13 20:55:24 +08:00
parent 5dbb529f3b
commit a3eace0512
4 changed files with 331 additions and 4 deletions

View File

@@ -201,6 +201,28 @@ export default [
}
]
},
{
path: '/log',
name: '日志管理',
component: Layout,
meta: {
i18n: 'index',
isTab: false,
},
children: [
{
path: 'index/:type/:id',
name: '添加/修改日志log',
meta: {
i18n: 'index',
isTab: false,
},
props: true,
component: () => import(
/* webpackChunkName: "views" */ '@/views/tenant/main/serve/Dialog/addLog')
}
]
},
{
path: '/recommend',
name: '推荐管理',

View File

@@ -0,0 +1,290 @@
<template>
<basic-container>
<jl-go-back></jl-go-back>
<el-row>
<el-col :span="12">
<avue-form :option="formOption" v-model="form" @submit="handleSubmit" ref="form">
<template slot="policyFileUrl">
<div class="policyFileUrlWrapper">
<div class="uploadWrapperAb">
<el-upload
action="#"
ref="upload"
:show-file-list="false"
:http-request="allUpload"
:multiple="false"
><el-button size="small" type="primary">点击上传</el-button></el-upload>
</div>
<avue-input disabled v-model="policyFileUrl" placeholder="点击上传文件"></avue-input>
</div>
</template>
</avue-form>
</el-col>
<el-col :span="12">
<Tinymce v-model="form.note" ref="tinymce" style="height: 100%;"></Tinymce>
</el-col>
</el-row>
</basic-container>
</template>
<script>
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import { quillEditor } from "vue-quill-editor";
import { addNews, getNewsDetail, editNews } from "@/api/manage/news"
import { putFile } from "@/api/resource/oss";
import Tinymce from "@/components/Tinymce";
import {getClassifyDic} from '@/api/help/article/classify'
const toolbarItems = [
["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
["blockquote", "code-block"], // 引用 代码块
[{ header: 1 }, { header: 2 }], // 1、2 级标题
[{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表
[{ script: "sub" }, { script: "super" }], // 上标/下标
[{ indent: "-1" }, { indent: "+1" }], // 缩进
// [{'direction': 'rtl'}], // 文本方向
[{ size: ["small", false, "large", "huge"] }], // 字体大小
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
[{ font: [] }], // 字体种类
[{ align: [] }], // 对齐方式
["clean"], // 清除文本格式
["image"], // 链接、图片、视频
]
export default {
components: { quillEditor, Tinymce},
props: {
id: Number,
type: String
},
mounted() {
this.onload()
},
data() {
return {
policyFileUrl: '',
putFile,
imageUrl: '',
ruleForm: {
content: null,
},
form: {
note: ''
},
description:'',
formOption: {
// labelWidth:120,
column: [
{
"label": "服务时间",
"span": 24,
labelWidth: 100,
"prop": "createTime",
"rules": [
{
"required": true,
"message": "请输入服务时间"
}
]
},
{
"label": "服务发起人",
"span": 24,
labelWidth: 100,
"prop": "fromName",
"rules": [
{
"required": true,
"message": "请输入服务发起人"
}
]
},
{
"label": "服务对象",
"span": 24,
labelWidth: 100,
"prop": "toName",
"rules": [
{
"required": true,
"message": "请输入服务对象"
}
]
},
{
"label": "服务主题",
"span": 24,
labelWidth: 100,
"prop": "serveTheme",
"rules": [
{
"required": true,
"message": "请输入服务主题"
}
]
},
{
"label": "服务内容",
"span": 24,
labelWidth: 100,
"prop": "serveContent",
"rules": [
{
"required": true,
"message": "请输入服务内容"
}
]
},
{
"label": "备注1",
"span": 24,
labelWidth: 100,
"prop": "bak1",
"rules": [
{
"required": true,
"message": "请输入备注1"
}
]
},
{
label: "政策文件地址",
prop: "policyFileUrl",
span: 24,
labelWidth: 120,
hide: true,
slot: true,
formslot: true,
showWordLimit: true,
},
]
},
editorOption: {
modules: {
toolbar: {
container: toolbarItems,
handlers: {
'image': function (value) {
if (value) {
document.querySelector('.avatar-uploader input').click()
} else {
this.quill.format('image', false);
}
}
}
},//工具菜单栏配置
},
placeholder: "请在这里编写文章内容", //提示
readyOnly: false, //是否只读
theme: "snow", //主题 snow/bubble
syntax: true, //语法检测
},
};
},
methods: {
// 值发生变化
onEditorChange(editor) {
this.content = editor.html;
},
handleSubmit(form, done) {
// this.form['note'] = this.$refs.tinymce.getContent()
if(this.form.note.length>64*512){
this.$message.error('文章内容不能超过64KB');
done()
}
else{
if (this.type == 'add') {
addNews(
this.form.articleTitle,
this.form.headPic,
this.form.articleSrc,
this.form.articleSrcUrl,
this.form.author,
this.form.description,
this.form.note,
this.form.type
).then(() => {
this.$message.success('添加成功');
this.$router.go(-1);
})
}
else if (this.type == 'edit') {
editNews(
this.id,
this.form.articleTitle,
this.form.headPic,
this.form.articleSrc,
this.form.articleSrcUrl,
this.form.author,
this.form.description,
this.form.note,
this.form.type
).then(() => {
this.$message.success('修改成功');
done()
})
}
}
},
/*上传图片*/
handleAvatarSuccess(res) {
let quill = this.$refs.QuillEditor.quill
let length = quill.getSelection().index;//获取光标所在位置
quill.insertEmbed(length, 'image', res.data.link)
quill.setSelection(length + 1)//光标后移一位
},
beforeAvatarUpload(file) {
const isJPG = ["image/png", "image/jpeg", "image/svg+xml", "image/gif"].indexOf(file.type) != -1;
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传图片格式不正确');
}
if (!isLt2M) {
this.$message.error('上传图片大小不能超过 2MB!');
}
return isJPG && isLt2M;
},
onload() {
if (this.id && this.type == 'edit') {
getNewsDetail(this.id).then(res => {
this.form = res.data.data;
this.description=this.form.description;
})
}
},
},
};
</script>
<style>
.avatar-uploader {
width: 0;
height: 0;
display: none;
}
.ql-editor {
height: 400px;
}
.policyFileUrlWrapper {
position: relative;
}
.uploadWrapperAb {
position: absolute;
right: 0px;
z-index: 99;
}
</style>

View File

@@ -284,6 +284,12 @@
@size-change="logSizeChange"
@current-change="logCurrentChange"
>
<template slot="menuLeft">
<el-button @click="addNewLog" icon="el-icon-plus" type="primary" size="mini">添加</el-button>
</template>
<template slot="menu" slot-scope="{row}">
<el-button type="text" @click="editLogInfo(row.id)" icon="el-icon-edit" size="mini">修改</el-button>
</template>
</avue-crud>
</el-drawer>
</el-drawer>
@@ -747,13 +753,14 @@ export default {
},
logOption() {
return {
editBtn: true,
editBtn: false,
delBtn: true,
addBtn: true,
addBtn: false,
border: true,
index: true,
indexLabel: "序号",
refreshBtn: false,
dialogType: "drawer",
height: '100',
column: [{
label: '服务时间',
@@ -1468,6 +1475,14 @@ export default {
window.console.log(error);
})
},
addNewLog() {
console.log('add log')
this.$router.push({ name: '添加/修改日志log', params: { type: 'add', id: null } })
},
editLogInfo() {
console.log('edit log')
this.$router.push({ name: '添加/修改日志log', params: { type: 'edit', id: null } })
}
},
};
</script>