main
han 5 months ago
parent 268e722d72
commit 2d327401c7
  1. 3
      package.json
  2. 8
      public/index.html
  3. 35
      src/assets/styles/v-layout.scss
  4. 5
      src/main.js
  5. 231
      src/views/pages/AI-Document-Correction/dialog.vue
  6. 1
      src/views/system/notice/index.vue

@ -43,6 +43,7 @@
"dependencies": {
"@babel/parser": "7.18.4",
"@ckeditor/ckeditor5-build-classic": "^44.3.0",
"@ckeditor/ckeditor5-html-support": "^45.1.0",
"@ckeditor/ckeditor5-vue2": "^3.0.1",
"@riophae/vue-treeselect": "0.4.0",
"@wangeditor/editor": "^5.1.23",
@ -50,7 +51,7 @@
"axios": "0.27.2",
"benz-amr-recorder": "^1.1.5",
"bpmn-js-token-simulation": "0.10.0",
"ckeditor4-vue": "^3.2.1",
"ckeditor5": "^45.1.0",
"clipboard": "2.0.8",
"core-js": "^3.26.0",
"crypto-js": "^4.0.0",

@ -6,6 +6,14 @@
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<link rel="stylesheet" href="https://cdn.ckeditor.com/ckeditor5/45.1.0/ckeditor5.css" />
<script src="https://cdn.ckeditor.com/ckeditor5/45.1.0/ckeditor5.umd.js"></script>
<!-- Add if you use premium features -->
<link rel="stylesheet" href="https://cdn.ckeditor.com/ckeditor5-premium-features/45.1.0/ckeditor5-premium-features.css" />
<script src="https://cdn.ckeditor.com/ckeditor5-premium-features/45.1.0/ckeditor5-premium-features.umd.js"></script>
<title><%= webpackConfig.name %></title>
<!--[if lt IE 11]><script>window.location.href='html/ie.html';</script><![endif]-->

@ -636,10 +636,15 @@ $--base-super-radius: 24px;
margin-left: auto;
margin-right: auto;
}
.height-100{height: 100%;}
.v-container.large{
.height-100 {
height: 100%;
}
.v-container.large {
width: 80%;
}
body {
background-color: $--color-bg !important;
}
@ -679,7 +684,7 @@ body {
.ai-pages-main {
position: relative;
width: calc(100% - 320px);
width: calc(100% - 320px);
z-index: 9;
padding: 30px 0;
@ -688,7 +693,29 @@ width: calc(100% - 320px);
overflow-y: auto;
scrollbar-width: none;
}
.ai-pages-back{position: absolute; left: 290px;z-index: 99; border-radius: 4px; border: 1px solid $--border-color-light; text-align: center; line-height: 30px;color:$--color-primary; top:32px;cursor: pointer; width: 30px; height: 30px; background: #fff}
.ck-editor__editable_inline:not(.ck-comment__input *) {
height: calc(100vh - 110px);
overflow-y: auto;
border: none;
border-top: 1px solid $--border-color-light;
}
.ck-sticky-panel__content{border: none}
.ai-pages-back {
position: absolute;
left: 290px;
z-index: 99;
border-radius: 4px;
border: 1px solid $--border-color-light;
text-align: center;
line-height: 30px;
color: $--color-primary;
top: 32px;
cursor: pointer;
width: 30px;
height: 30px;
background: #fff
}
.ai-edit-left {
position: relative;
height: calc(100vh - 60px);

@ -1,6 +1,6 @@
import Vue from 'vue'
import Element from 'element-ui'
import CKEditor from '@ckeditor/ckeditor5-vue2'
import './assets/styles/element-variables.scss'
import '@/assets/styles/index.scss' // global css
@ -42,6 +42,7 @@ Vue.prototype.addBeginAndEndTime = addBeginAndEndTime
Vue.prototype.divide = divide
import VMenu from "@/views/components/v-menu/index.vue";
// 全局组件挂载
Vue.component('VMenu', VMenu)
Vue.component('DictTag', DictTag)
@ -54,7 +55,7 @@ import DocAlert from '@/components/DocAlert'
// 头部标签插件
import VueMeta from 'vue-meta'
import CKEditor from '@ckeditor/ckeditor5-vue2'
Vue.use( CKEditor )
Vue.use(directive)

@ -8,23 +8,11 @@
<div class="ai-edit-left col m-r-large v-overflow-y" v-loading="generatedLoading"
element-loading-text="请稍后,正文生成中...">
<div class="ai-show-btn show" @click="showPage=!showPage"><i class="el-icon-arrow-right"></i></div>
<Toolbar
style="border-bottom: 1px solid #ccc"
:editor="editor"
:defaultConfig="toolbarConfig"
:mode="mode"
/>
<div class="ai-edit-content" v-html="generatedContent" v-if="!editorState"></div>
<Editor
style="height:calc(100% - 81px) ; overflow-y: hidden;"
:defaultConfig="editorConfig"
:mode="mode"
@onCreated="onCreated"
/>
<ckeditor :editor="editor" v-model="editorData" :config="editorConfig" style="height:500px" />
<div class="v-edit-tool">
<div class="v-edit-tool-item down" @click="downLoadDoc"><i class="iconfont icon-down"></i></div>
<div class="v-edit-tool-item refresh" @click="refreshDoc"><i class="iconfont icon-refresh"></i></div>
</div>
</div>
</div>
<!-- 对话右侧 -->
<div class="ai-edit-right m-r-large" :class="showPage?'show':'hide'">
@ -34,13 +22,13 @@
<el-form ref="formRef" :model="form" label-width="80px" size="small" :rules="rules">
<el-form-item label="" class="v-item-block" label-width="0">
<el-cascader
@change="getModelCascader"
:disabled="generatedLoading"
class="v-cascader"
popper-class="v-cascader-popper inline"
style="width: 100%"
v-model="form.model"
:options="modelOptions"
@change="getModelCascader"
:disabled="generatedLoading"
class="v-cascader"
popper-class="v-cascader-popper inline"
style="width: 100%"
v-model="form.model"
:options="modelOptions"
></el-cascader>
</el-form-item>
<el-tabs v-model="form.docType" @tab-click="getDocumentList" class="v-tabs">
@ -51,10 +39,10 @@
<el-select v-model="form.subType" placeholder="请选择" class="v-select" style="width: 100%"
popper-class="v-select-popper inline" :disabled="generatedLoading">
<el-option
v-for="item in typeList"
:key="item.value"
:label="item.label"
:value="item.value">
v-for="item in typeList"
:key="item.value"
:label="item.label"
:value="item.value">
<span style="float: left">{{ item.label }}</span>
</el-option>
</el-select>
@ -125,14 +113,185 @@
<script>
import FileUpload from '@/components/FileUpload'
import {Editor, Toolbar} from '@wangeditor/editor-for-vue'
import * as AiApi from '@/api/ai-api'
const {
GeneralHtmlSupport,
HtmlComment,
HtmlEmbed,
ClassicEditor,
Essentials,
Alignment,
Title,
Bookmark,
Code,
Strikethrough,
Autoformat,
AutoImage,
Autosave,
BlockQuote,
Bold,
CodeBlock,
FontBackgroundColor,
FontColor,
FontFamily,
FontSize,
FullPage,
Heading,
HorizontalLine,
Image,
ImageBlock,
ImageCaption,
ImageInline,
ImageInsert,
ImageInsertViaUrl,
ImageResize,
ImageResizeHandles,
ImageStyle,
ImageTextAlternative,
ImageToolbar,
ImageUpload,
Indent,
IndentBlock,
Italic,
Link,
LinkImage,
List,
ListProperties,
Paragraph,
PasteFromOffice,
SimpleUploadAdapter,
TableLayout,
// SourceEditing,
SpecialCharacters,
SpecialCharactersArrows,
SpecialCharactersCurrency,
SpecialCharactersEssentials,
SpecialCharactersLatin,
SpecialCharactersMathematical,
SpecialCharactersText,
Subscript,
Superscript,
Table,
TableCaption,
TableCellProperties,
TableColumnResize,
TableProperties,
TableToolbar,
TextTransformation,
TodoList,
Underline,
ImageResizeEditing,
Base64UploadAdapter,
} = CKEDITOR;
const { FormatPainter } = CKEDITOR_PREMIUM_FEATURES;
export default {
name: 'DocumentCorrectionDialog',
components: {Editor, Toolbar, FileUpload},
components: { FileUpload},
data() {
return {
editor: ClassicEditor,
editorData: "<h1 style='color:red'>asdf</h1>",
editorConfig: {
licenseKey:"eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE3ODAwMTI3OTksImp0aSI6IjIzOThmNWExLTU5NGItNDVmNC04YjZiLTYxY2M0MWQ5YzE0YiIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwiZmVhdHVyZXMiOlsiRFJVUCIsIkUyUCIsIkUyVyJdLCJ2YyI6IjY4OTc5NjhlIn0.-YzAWQBdSXs9w0xLPLc4v2T2wVUnMShOBNMXceWayj4oXbfVEsMokgHHr_4zHTtoQbCbc3pWMxR5iSYaY8Xhtw",
placeholder: "请输入内容",
language: 'zh-cn',
toolbar: {
items: [
"undo",
"redo",
"Bold",
"Italic",
"Strikethrough",
"Underline",
"Subscript",
"Superscript",
"",
"",
],
},
plugins: [
GeneralHtmlSupport,
HtmlComment,
HtmlEmbed,
ImageResizeEditing,
Base64UploadAdapter,
Title,
Code,
Bookmark,
Strikethrough,
Autoformat,
AutoImage,
Autosave,
BlockQuote,
Bold,
CodeBlock,
Essentials,
TableLayout,
FontBackgroundColor,
FontColor,
FontFamily,
FontSize,
Alignment,
FullPage,
Heading,
HorizontalLine,
Image,
ImageResizeHandles,
ImageBlock,
ImageCaption,
ImageInline,
ImageInsert,
ImageInsertViaUrl,
ImageResize,
ImageStyle,
ImageTextAlternative,
ImageToolbar,
ImageUpload,
Indent,
IndentBlock,
Italic,
Link,
LinkImage,
List,
ListProperties,
Paragraph,
PasteFromOffice,
SimpleUploadAdapter,
// SourceEditing,
SpecialCharacters,
SpecialCharactersArrows,
SpecialCharactersCurrency,
SpecialCharactersEssentials,
SpecialCharactersLatin,
SpecialCharactersMathematical,
SpecialCharactersText,
Subscript,
Superscript,
Table,
TableCaption,
TableCellProperties,
TableColumnResize,
TableProperties,
TableToolbar,
TextTransformation,
TodoList,
Underline,
],
htmlSupport: {
allow: [//
{
name: /^.*$/,
styles: true,
attributes: true,
classes: true
}
]
},
},
showPage: true,
DocumentType: undefined,
modelOptions: [],
@ -155,10 +314,10 @@ export default {
{required: true, message: '请输入主题词', trigger: 'blur'},
]
},
editor: null,
html: '',
toolbarConfig: {},
editorConfig: {placeholder: '请输入内容...'},
mode: 'default', // or 'simple'
//
isLoading: false,
@ -177,6 +336,9 @@ export default {
generatedEdit: '',
generatedContent: '',
reasoningContent: '',
}
},
mounted() {
@ -243,7 +405,7 @@ export default {
children: children
}
})
this.generateDoc()
//this.generateDoc()
} catch (err) {
} finally {
}
@ -343,8 +505,7 @@ export default {
this.generatedLoading = false
this.editorState = true
this.generatedEdit = this.generatedContent
console.log(this.generatedContent)
this.editor.dangerouslyInsertHtml( this.generatedEdit)
this.closeConnection();
return;
}
@ -382,8 +543,8 @@ export default {
this.isLoading = false;
this.isGenerating = false;
this.errorMessage = this.generatedContent
? '生成中断,已停止'
: '生成失败,请重试';
? '生成中断,已停止'
: '生成失败,请重试';
this.closeConnection();
};
} catch (err) {
@ -421,7 +582,7 @@ export default {
container.scrollTop = container.scrollHeight;
}
},
gotoBack(){
gotoBack() {
this.$router.push('/DocumentCorrectionIndex');
}
},

@ -117,6 +117,7 @@ import Editor from '@/components/Editor';
import {CommonStatusEnum} from '@/utils/constants'
import {DICT_TYPE, getDictDatas} from '@/utils/dict'
export default {
name: "SystemNotice",
components: {

Loading…
Cancel
Save