|
@@ -1,20 +1,52 @@
|
|
|
<template>
|
|
|
- <div class="manage-root create-article">
|
|
|
+ <div class="manage-root create-article" v-loading="subtitleLoading">
|
|
|
<Header/>
|
|
|
<breadcrumb :breadcrumbList="breadcrumbList" class="breadcrumb-box"></breadcrumb>
|
|
|
<el-button type="primary" plain class="add-btn" @click="handleSaveCheck" :loading="loading" >保存</el-button>
|
|
|
- <div class="manage-root-contain" v-loading="subtitleLoading">
|
|
|
-
|
|
|
- <Editor
|
|
|
- id="article-cn"
|
|
|
- v-model="articleForm.art_content"
|
|
|
- :init="init"
|
|
|
- />
|
|
|
- <div class="save-btn">
|
|
|
- <el-button type="primary" size="small" @click="handleSaveArticle('articleForm')" :loading="loading">下一步</el-button>
|
|
|
- <el-button size="small" @click="onCancel('articleForm')">取消</el-button>
|
|
|
+ <div class="manage-root-contain">
|
|
|
+ <div class="manage-left">
|
|
|
+ <template v-if="editArticleFlag">
|
|
|
+ <Editor
|
|
|
+ id="article-cn"
|
|
|
+ v-model="articleForm.art_content"
|
|
|
+ :init="init"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <div class="tokens-box">
|
|
|
+ <div class="sentence-box" v-for="(item,index) in tokensArr" :key="index">
|
|
|
+ <span :class="[item.type,item.token[9]===' '?'marginRight':'',item.highIndex?'fontWeight':'',wordId===item.word_id&&highInclude.indexOf(item.tokenIndex)>-1?'active':'']" @click="changeWordName(item)">
|
|
|
+ {{item.token[2]}}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ <div class="manage-right">
|
|
|
+ <div class="tabs">
|
|
|
+ <a :class="[tabsIndex===0?'active':'']" @click="handleChangeTabs(0)">全部 {{allWordList.length}}</a>
|
|
|
+ <a :class="[tabsIndex===1?'active':'']" @click="handleChangeTabs(1)">词汇 {{wordLit.length}}</a>
|
|
|
+ <a :class="[tabsIndex===2?'active':'']" @click="handleChangeTabs(2)">短语 {{phraseList.length}}</a>
|
|
|
+ <a :class="[tabsIndex===3?'active':'']" @click="handleChangeTabs(3)">注释 {{annotationList.length}}</a>
|
|
|
+ </div>
|
|
|
+ <ul class="word-list">
|
|
|
+ <li v-for="(item,index) in tabsIndex===0?allWordList:tabsIndex===1?wordLit:tabsIndex===2?phraseList:tabsIndex===3?annotationList:allWordList" :key="item.id" :class="['word-'+item.type, activeWordId===item.id?'active':'']" @click="selectItem(item)">
|
|
|
+ <b>{{(index+1)+'.'}}</b>
|
|
|
+ <div>
|
|
|
+ <span>{{item.exp_title + ' ' + item.exp_content}}</span>
|
|
|
+ <a @click="changeType(item)">{{item.type=='newWord'?'词汇':item.type=='phrase'?'短语':'注释'}}<svg-icon icon-class="arrow-left-right-line"></svg-icon></a>
|
|
|
+ </div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="save-btn" v-if="!editArticleFlag">
|
|
|
+ <el-button type="primary" size="small" @click="handleEdit">编辑内容</el-button>
|
|
|
+ </div>
|
|
|
+ <div class="save-btn" v-else>
|
|
|
+ <el-button size="small" @click="editArticleFlag=!editArticleFlag">取消</el-button>
|
|
|
+ <el-button type="primary" size="small" @click="handleSaveArticle('articleForm')" :loading="saveLoaing">保存修改</el-button>
|
|
|
</div>
|
|
|
- <el-button type="primary" size="small" class="preview-btn">预览</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -48,7 +80,6 @@ import "tinymce/plugins/preview";
|
|
|
import "tinymce/plugins/contextmenu";
|
|
|
import "tinymce/plugins/textcolor";
|
|
|
import "tinymce/plugins/colorpicker";
|
|
|
-import { mapState } from 'vuex';
|
|
|
import { getToken } from '@/utils/auth'
|
|
|
|
|
|
export default {
|
|
@@ -59,7 +90,6 @@ export default {
|
|
|
//这里存放数据
|
|
|
return {
|
|
|
id:this.$route.query.id?this.$route.query.id:'',
|
|
|
- en_flag:this.$route.query.en_flag?this.$route.query.en_flag*1:0,
|
|
|
breadcrumbList:[
|
|
|
{
|
|
|
icon:'file-list-line',
|
|
@@ -90,7 +120,16 @@ export default {
|
|
|
articleId: null,
|
|
|
wordLit:[],
|
|
|
annotationList: [],
|
|
|
- phraseList: []
|
|
|
+ phraseList: [],
|
|
|
+ editArticleFlag: false,
|
|
|
+ tokensArr: [],
|
|
|
+ allWordList: [], // 生词短语注释总列表
|
|
|
+ tabsIndex: 0,
|
|
|
+ activeWordId: '', // 当前选中内容的id
|
|
|
+ saveLoaing: false,
|
|
|
+ wordId:'',
|
|
|
+ activeItem: null,
|
|
|
+ highInclude: null
|
|
|
}
|
|
|
},
|
|
|
//计算属性 类似于data概念
|
|
@@ -100,6 +139,17 @@ export default {
|
|
|
watch: {},
|
|
|
//方法集合
|
|
|
methods: {
|
|
|
+ selectItem(item){
|
|
|
+ this.activeWordId=item.id
|
|
|
+ this.activeItem = item
|
|
|
+ this.wordId = item.id
|
|
|
+ item.highIndex = true
|
|
|
+ this.highInclude = item.bind_sent_data.bind_sents[0].sel_token_idxes
|
|
|
+ this.$forceUpdate()
|
|
|
+ },
|
|
|
+ handleChangeTabs(value){
|
|
|
+ this.tabsIndex = value
|
|
|
+ },
|
|
|
getTableHeight() {
|
|
|
let tableH = 236; //距离页面下方的高度
|
|
|
let tableHeightDetil = window.innerHeight - tableH;
|
|
@@ -113,45 +163,38 @@ export default {
|
|
|
onCancel(){
|
|
|
this.$router.go(-1)
|
|
|
},
|
|
|
- handleSaveArticle(formName,flag){
|
|
|
- this.$refs[formName].validate((valid) => {
|
|
|
- if (valid) {
|
|
|
- let MethodName = '/PaperServer/Manager/ArticleManager/AddArticle'
|
|
|
- let data = {
|
|
|
- art_title: this.articleForm.art_title,
|
|
|
- page_no_in_pub: this.articleForm.page_no_in_pub*1,
|
|
|
- art_author: this.articleForm.art_author,
|
|
|
- art_content: this.articleForm.art_content,
|
|
|
- iss_id: this.$route.query.issueId,
|
|
|
- chn_item: this.$route.query.chn_name,
|
|
|
- en_flag: this.en_flag
|
|
|
- }
|
|
|
- if(this.id){
|
|
|
- MethodName = '/PaperServer/Manager/ArticleManager/EditArticle'
|
|
|
- data.id = this.id,
|
|
|
- data.updater_id = JSON.parse(getToken()).user_id
|
|
|
- }
|
|
|
- if(!this.articleForm.art_content.trim()){
|
|
|
- this.$message.warning('文章内容不能为空')
|
|
|
- return false
|
|
|
- }
|
|
|
- if(this.en_flag===0){
|
|
|
-
|
|
|
- }else{
|
|
|
- data.art_content = this.id?this.articleForm.art_content:null
|
|
|
- data.art_org_content = this.articleForm.art_content.trim()
|
|
|
- }
|
|
|
- getLogin(MethodName, data)
|
|
|
- .then((res) => {
|
|
|
- if(res.status===1){
|
|
|
- this.$message.success('文章保存成功')
|
|
|
- this.$router.go(-1)
|
|
|
- }
|
|
|
- })
|
|
|
- } else {
|
|
|
- return false;
|
|
|
+ handleSaveArticle(){
|
|
|
+ this.saveLoaing= true
|
|
|
+ let MethodName = '/PaperServer/Manager/ArticleManager/AddArticle'
|
|
|
+ let data = {
|
|
|
+ art_title: this.articleForm.art_title,
|
|
|
+ art_content: this.articleForm.art_content,
|
|
|
+ iss_id: this.$route.query.issueId,
|
|
|
+ chn_item: this.$route.query.chn_name,
|
|
|
+ en_flag: 1
|
|
|
+ }
|
|
|
+ if(this.id){
|
|
|
+ MethodName = '/PaperServer/Manager/ArticleManager/EditArticle'
|
|
|
+ data.id = this.id
|
|
|
+ // data.updater_id = JSON.parse(getToken()).user_id
|
|
|
+ }
|
|
|
+ if(!this.articleForm.art_content.trim()){
|
|
|
+ this.$message.warning('文章内容不能为空')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ data.art_content = this.id?this.articleForm.art_content:null
|
|
|
+ data.art_org_content = this.articleForm.art_content.trim()
|
|
|
+ getLogin(MethodName, data)
|
|
|
+ .then((res) => {
|
|
|
+ this.saveLoaing = false
|
|
|
+ if(res.status===1){
|
|
|
+ this.$message.success('文章内容修改成功')
|
|
|
+ this.getArticleInfo()
|
|
|
+ this.editArticleFlag = !this.editArticleFlag
|
|
|
}
|
|
|
- });
|
|
|
+ }).catch(()=>{
|
|
|
+ this.saveLoaing = false
|
|
|
+ })
|
|
|
},
|
|
|
// 去掉前后空格
|
|
|
handleTrim(form,fild){
|
|
@@ -167,6 +210,24 @@ export default {
|
|
|
getLogin(MethodName, data)
|
|
|
.then((res) => {
|
|
|
if(res.status===1){
|
|
|
+ this.breadcrumbList = [
|
|
|
+ {
|
|
|
+ icon:'file-list-line',
|
|
|
+ url:'',
|
|
|
+ text:''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ icon:'',
|
|
|
+ url:'',
|
|
|
+ notLink: true,
|
|
|
+ text:'...'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ icon:'',
|
|
|
+ url:'',
|
|
|
+ text:'校对'
|
|
|
+ },
|
|
|
+ ]
|
|
|
let obj = {
|
|
|
icon:'',
|
|
|
url:'',
|
|
@@ -175,6 +236,29 @@ export default {
|
|
|
this.breadcrumbList.push(obj)
|
|
|
this.articleForm = JSON.parse(JSON.stringify(res.data.art))
|
|
|
this.articleForm.articleEn = JSON.parse(JSON.stringify(res.data.art)).art_org_content
|
|
|
+ this.sentenceList = res.data.art.art_corpus_data?JSON.parse(JSON.stringify(res.data.art.art_corpus_data.sentList)):[]
|
|
|
+ this.wordLit = res.data.art.art_voc_data?JSON.parse(JSON.stringify(res.data.art.art_voc_data)):[]
|
|
|
+ this.annotationList = res.data.art.art_phrase_data?JSON.parse(JSON.stringify(res.data.art.art_explain_data)):[]
|
|
|
+ this.phraseList = res.data.art.art_explain_data?JSON.parse(JSON.stringify(res.data.art.art_phrase_data)):[]
|
|
|
+ this.wordLit.forEach(item=>{
|
|
|
+ item.type='newWord'
|
|
|
+ item.exp_title = item.word_name
|
|
|
+ let paraStr = ''
|
|
|
+ if(item.word_explain&&item.word_explain.word_para_list){
|
|
|
+ item.word_explain.word_para_list.forEach(items=>{
|
|
|
+ paraStr += items.para
|
|
|
+ })
|
|
|
+ }
|
|
|
+ item.exp_content = paraStr
|
|
|
+ })
|
|
|
+ this.phraseList.forEach(item=>{
|
|
|
+ item.type='phrase'
|
|
|
+ })
|
|
|
+ this.annotationList.forEach(item=>{
|
|
|
+ item.type='explain'
|
|
|
+ })
|
|
|
+ this.allWordList = this.wordLit.concat(this.phraseList).concat(this.annotationList)
|
|
|
+ this.handleData()
|
|
|
this.subtitleLoading = false
|
|
|
}
|
|
|
}).catch(()=>{
|
|
@@ -191,39 +275,214 @@ export default {
|
|
|
getLogin(MethodName, data)
|
|
|
.then((res) => {
|
|
|
if(res.status===1){
|
|
|
- this.loading = false
|
|
|
+ this.$message.success('保存成功')
|
|
|
+ this.$router.go(-1)
|
|
|
}
|
|
|
}).catch(()=>{
|
|
|
this.loading = false
|
|
|
})
|
|
|
- }
|
|
|
+ },
|
|
|
+ handleData(){
|
|
|
+ let arr = []
|
|
|
+ this.sentenceList.forEach((item,index) => {
|
|
|
+ item.tokens.forEach((items,indexs)=>{
|
|
|
+ let obj = {
|
|
|
+ sent_id: item.id,
|
|
|
+ pno: item.pno,
|
|
|
+ sno: item.sno,
|
|
|
+ tsno: item.tsno,
|
|
|
+ token: items,
|
|
|
+ sentences: index,
|
|
|
+ tokenIndex: indexs
|
|
|
+ }
|
|
|
+ this.allWordList.forEach((itema,indexa)=>{
|
|
|
+ itema.bind_sent_data.bind_sents.forEach((itemb,indexb)=>{
|
|
|
+ if(itemb.sent_id===item.id){
|
|
|
+ itemb.sel_token_idxes.forEach(itemi=>{
|
|
|
+ obj.word_id = itema.id // 生词注释短语的id
|
|
|
+ if(indexs===itemi){
|
|
|
+ obj.highIndex = true
|
|
|
+ obj.type = itema.type
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ arr.push(obj)
|
|
|
+ })
|
|
|
+ });
|
|
|
+ this.tokensArr = arr
|
|
|
+ },
|
|
|
+ handleEdit(){
|
|
|
+ this.editArticleFlag = !this.editArticleFlag
|
|
|
+ let lang_url = "";
|
|
|
+ let language = "";
|
|
|
+ let skin_url =
|
|
|
+ process.env.NODE_ENV == "development"
|
|
|
+ ? "/tinymce/skins/ui/oxide"
|
|
|
+ : window.g.zh_CN_URL + "/tinymce/skins/ui/oxide";
|
|
|
+
|
|
|
+ lang_url =
|
|
|
+ process.env.NODE_ENV == "development"
|
|
|
+ ? "/tinymce/langs/zh_CN.js"
|
|
|
+ : window.g.zh_CN_URL + "/tinymce/langs/zh_CN.js";
|
|
|
+ language = "zh_CN";
|
|
|
+ this.init = {
|
|
|
+ language_url: lang_url,
|
|
|
+ language: language,
|
|
|
+ skin_url: skin_url,
|
|
|
+ height: window.innerHeight - 235,
|
|
|
+ plugins: "link lists image code table wordcount preview",
|
|
|
+ toolbar:
|
|
|
+ "preview bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat",
|
|
|
+ branding: false,
|
|
|
+ }; //富文本初始化
|
|
|
+ },
|
|
|
+ // 切换类型
|
|
|
+ changeType(item){
|
|
|
+ let MethodName = '/PaperServer/Manager/ArticleManager/CheckWordExplainInArt'
|
|
|
+ let data = null
|
|
|
+ if(item.type==='newWord'){
|
|
|
+ item.type = 'phrase'
|
|
|
+ data={
|
|
|
+ phraseExplain:{
|
|
|
+ id: item.id,
|
|
|
+ art_id: this.id,
|
|
|
+ exp_type: 1,
|
|
|
+ exp_title: item.exp_title,
|
|
|
+ exp_content: item.exp_content,
|
|
|
+ bind_sent_data: item.bind_sent_data
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if(item.type==='phrase'){
|
|
|
+ item.type = 'explain'
|
|
|
+ data={
|
|
|
+ phraseExplain:{
|
|
|
+ id: item.id,
|
|
|
+ art_id: this.id,
|
|
|
+ exp_type: 2,
|
|
|
+ exp_title: item.exp_title,
|
|
|
+ exp_content: item.exp_content,
|
|
|
+ bind_sent_data: item.bind_sent_data
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if(item.type==='explain'){
|
|
|
+ item.type = 'newWord'
|
|
|
+ data={
|
|
|
+ wordExplain:{
|
|
|
+ id: item.id,
|
|
|
+ art_id: this.id,
|
|
|
+ word_name: item.exp_title,
|
|
|
+ vl_level: null, // 类别
|
|
|
+ ph: '', // 音标
|
|
|
+ ph_mp3: [], // 发音数组
|
|
|
+ ph_mp3_id: '', // 发音文件id
|
|
|
+ ph_file_url: '', // 发音url
|
|
|
+ star: null, // 星级
|
|
|
+ word_explain: {
|
|
|
+ word_para_list:[
|
|
|
+ {
|
|
|
+ cixing: item.bind_sent_data.bind_sents[0].sent_bean.tokens[item.bind_sent_data.bind_sents[0].sel_token_idxes[0]][7],
|
|
|
+ para: item.exp_content
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ bind_sent_data: item.bind_sent_data
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.$forceUpdate()
|
|
|
+ getLogin(MethodName, data)
|
|
|
+ .then((res) => {
|
|
|
+ if(res.status===1){
|
|
|
+ this.getArticleInfo()
|
|
|
+ }
|
|
|
+ }).catch(()=>{
|
|
|
+
|
|
|
+ })
|
|
|
+ },
|
|
|
+ changeWordName(item){
|
|
|
+ let highArr = this.activeItem.bind_sent_data.bind_sents[0].sel_token_idxes
|
|
|
+ if(highArr.indexOf(item.tokenIndex)==-1){
|
|
|
+ highArr.push(item.tokenIndex)
|
|
|
+ }else{
|
|
|
+ highArr.splice(highArr.indexOf(item.tokenIndex),1)
|
|
|
+ }
|
|
|
+ let word_name = ''
|
|
|
+ highArr.sort().forEach(item=>{
|
|
|
+ word_name=word_name+this.activeItem.bind_sent_data.bind_sents[0].sent_bean.tokens[item][2]+this.activeItem.bind_sent_data.bind_sents[0].sent_bean.tokens[item][9]
|
|
|
+ })
|
|
|
+ this.activeItem.exp_title = word_name
|
|
|
+ this.activeItem.bind_sent_data.bind_sents[0].sel_token_idxes = highArr.sort()
|
|
|
+ this.highInclude = highArr
|
|
|
+ item.highIndex = !item.highIndex
|
|
|
+ item.word_id = this.activeItem.id
|
|
|
+ item.type = this.activeItem.type
|
|
|
+ this.changeTypes(this.activeItem)
|
|
|
+ },
|
|
|
+ changeTypes(item){
|
|
|
+ let MethodName = '/PaperServer/Manager/ArticleManager/CheckWordExplainInArt'
|
|
|
+ let data = null
|
|
|
+ if(item.type==='phrase'){
|
|
|
+ data={
|
|
|
+ phraseExplain:{
|
|
|
+ id: item.id,
|
|
|
+ art_id: this.id,
|
|
|
+ exp_type: 1,
|
|
|
+ exp_title: item.exp_title,
|
|
|
+ exp_content: item.exp_content,
|
|
|
+ bind_sent_data: item.bind_sent_data
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if(item.type==='explain'){
|
|
|
+ data={
|
|
|
+ phraseExplain:{
|
|
|
+ id: item.id,
|
|
|
+ art_id: this.id,
|
|
|
+ exp_type: 2,
|
|
|
+ exp_title: item.exp_title,
|
|
|
+ exp_content: item.exp_content,
|
|
|
+ bind_sent_data: item.bind_sent_data
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if(item.type==='newWord'){
|
|
|
+ data={
|
|
|
+ wordExplain:{
|
|
|
+ id: item.id,
|
|
|
+ art_id: this.id,
|
|
|
+ word_name: item.exp_title,
|
|
|
+ vl_level: null, // 类别
|
|
|
+ ph: '', // 音标
|
|
|
+ ph_mp3: [], // 发音数组
|
|
|
+ ph_mp3_id: '', // 发音文件id
|
|
|
+ ph_file_url: '', // 发音url
|
|
|
+ star: null, // 星级
|
|
|
+ word_explain: {
|
|
|
+ word_para_list:[
|
|
|
+ {
|
|
|
+ cixing: item.bind_sent_data.bind_sents[0].sent_bean.tokens[item.bind_sent_data.bind_sents[0].sel_token_idxes[0]][7],
|
|
|
+ para: item.exp_content
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ bind_sent_data: item.bind_sent_data
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.$forceUpdate()
|
|
|
+ getLogin(MethodName, data)
|
|
|
+ .then((res) => {
|
|
|
+ if(res.status===1){
|
|
|
+ // this.getArticleInfo()
|
|
|
+ }
|
|
|
+ }).catch(()=>{
|
|
|
+
|
|
|
+ })
|
|
|
+ },
|
|
|
},
|
|
|
//生命周期 - 创建完成(可以访问当前this实例)
|
|
|
created() {
|
|
|
this.getTableHeight()
|
|
|
- let lang_url = "";
|
|
|
- let language = "";
|
|
|
- let skin_url =
|
|
|
- process.env.NODE_ENV == "development"
|
|
|
- ? "/tinymce/skins/ui/oxide"
|
|
|
- : window.g.zh_CN_URL + "/tinymce/skins/ui/oxide";
|
|
|
-
|
|
|
- lang_url =
|
|
|
- process.env.NODE_ENV == "development"
|
|
|
- ? "/tinymce/langs/zh_CN.js"
|
|
|
- : window.g.zh_CN_URL + "/tinymce/langs/zh_CN.js";
|
|
|
- language = "zh_CN";
|
|
|
-
|
|
|
- this.init = {
|
|
|
- language_url: lang_url,
|
|
|
- language: language,
|
|
|
- skin_url: skin_url,
|
|
|
- height: 600,
|
|
|
- plugins: "link lists image code table wordcount preview",
|
|
|
- toolbar:
|
|
|
- "preview bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat",
|
|
|
- branding: false,
|
|
|
- }; //富文本初始化
|
|
|
if(this.id){
|
|
|
this.getArticleInfo()
|
|
|
}
|
|
@@ -261,185 +520,167 @@ export default {
|
|
|
border-radius: 4px;
|
|
|
background: #FFF;
|
|
|
padding: 24px 24px 80px 24px;
|
|
|
- display: block;
|
|
|
+ display: flex;
|
|
|
position: relative;
|
|
|
- &-inner{
|
|
|
- overflow-y: auto;
|
|
|
+ .manage-left{
|
|
|
+ flex: 1;
|
|
|
+ .tokens-box{
|
|
|
+ border-radius: 2px;
|
|
|
+ background: #F2F3F5;
|
|
|
+ padding: 24px;
|
|
|
+ height: 100%;
|
|
|
+ overflow-y: auto;
|
|
|
+ .sentence-box{
|
|
|
+ display: inline-block;
|
|
|
+ span{
|
|
|
+ color: #1D2129;
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: 400;
|
|
|
+ line-height: 32px;
|
|
|
+ word-break: break-word;
|
|
|
+ cursor: pointer;
|
|
|
+ &.marginRight{
|
|
|
+ margin-right: 4px;
|
|
|
+ }
|
|
|
+ &.fontWeight{
|
|
|
+ font-weight: bold;
|
|
|
+ }
|
|
|
+ &.newWord.active{
|
|
|
+ color: #264EFF;
|
|
|
+ }
|
|
|
+ &.phrase.active{
|
|
|
+ color: #EA5939;
|
|
|
+ }
|
|
|
+ &.explain.active{
|
|
|
+ color: #23C847;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .manage-right{
|
|
|
+ width: 455px;
|
|
|
+ padding-left: 31px;
|
|
|
}
|
|
|
- .save-btn,.preview-btn{
|
|
|
+ .save-btn{
|
|
|
position: absolute;
|
|
|
bottom: 24px;
|
|
|
left: 24px;
|
|
|
- }
|
|
|
- .preview-btn{
|
|
|
- right: 24px;
|
|
|
- left: auto;
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-.el-form--inline{
|
|
|
- display: flex;
|
|
|
- width: 100%;
|
|
|
-}
|
|
|
-.title-box{
|
|
|
- flex: 1;
|
|
|
- .el-input{
|
|
|
- width: 100%;
|
|
|
+ text-align: center;
|
|
|
+ width: 913px;
|
|
|
}
|
|
|
}
|
|
|
-.source-box{
|
|
|
- .el-input{
|
|
|
- width: 205px;
|
|
|
+.add-btn{
|
|
|
+ padding: 2px 12px;
|
|
|
+ border-radius: 2px;
|
|
|
+ border: 1px solid #165DFF;
|
|
|
+ color: #165DFF;
|
|
|
+ font-size: 12px;
|
|
|
+ font-weight: 400;
|
|
|
+ line-height: 20px;
|
|
|
+ background: #FFF;
|
|
|
+ position: fixed;
|
|
|
+ top: 64px;
|
|
|
+ right: 24px;
|
|
|
+ .el-icon-plus{
|
|
|
+ margin-right: 8px;
|
|
|
}
|
|
|
-}
|
|
|
-.page-box{
|
|
|
- .el-input{
|
|
|
- width: 190px;
|
|
|
+ &:hover{
|
|
|
+ background: #FFF;
|
|
|
+ color: #165DFF;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
-.item-label{
|
|
|
- color: #4E5969;
|
|
|
- font-size: 14px;
|
|
|
- font-weight: 400;
|
|
|
- line-height: 22px;
|
|
|
-}
|
|
|
-.article-mp3-box{
|
|
|
+.tabs{
|
|
|
display: flex;
|
|
|
- height: 32px;
|
|
|
- align-items: center;
|
|
|
- margin: 8px 0 20px 0;
|
|
|
-}
|
|
|
-.article-mp3{
|
|
|
- width: 82px;
|
|
|
- height: 32px;
|
|
|
- &-has{
|
|
|
- width: 320px;
|
|
|
- }
|
|
|
-}
|
|
|
-.article-mp3-list{
|
|
|
- list-style: none;
|
|
|
- margin: 0;
|
|
|
- padding: 0;
|
|
|
- display: inline-block;
|
|
|
- width: 226px;
|
|
|
- li{
|
|
|
- padding: 5px 12px;
|
|
|
- height: 32px;
|
|
|
- border-radius: 2px 0px 0px 2px;
|
|
|
- background: #F2F3F5;
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- a{
|
|
|
- color: #1D2129;
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- flex: 1;
|
|
|
- span{
|
|
|
- overflow:hidden;
|
|
|
- text-overflow:ellipsis;
|
|
|
- white-space: nowrap;
|
|
|
- flex: 1;
|
|
|
- display: block;
|
|
|
- font-size: 14px;
|
|
|
- line-height: 22px;
|
|
|
- }
|
|
|
- .svg-icon{
|
|
|
- width: 16px;
|
|
|
- height: 16px;
|
|
|
- margin-right: 4px;
|
|
|
- color: #1D2129;
|
|
|
- }
|
|
|
+ padding: 16px 0 0 28px;
|
|
|
+ a{
|
|
|
+ font-size: 14px;
|
|
|
+ line-height: 22px;
|
|
|
+ color: #4E5969;
|
|
|
+ border-radius: 100px;
|
|
|
+ padding: 5px 16px;
|
|
|
+ margin-right: 12px;
|
|
|
+ &:hover{
|
|
|
+ background: #F2F3F5;
|
|
|
}
|
|
|
- .el-icon-error{
|
|
|
- color: #4E5969;
|
|
|
- cursor: pointer;
|
|
|
- margin-left: 4px;
|
|
|
+ &.active{
|
|
|
+ background: #F2F3F5;
|
|
|
+ font-weight: 500;
|
|
|
+ color: #165DFF;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-.error-tips{
|
|
|
- font-size: 14px;
|
|
|
- font-weight: 500;
|
|
|
- line-height: 22px;
|
|
|
- color: #F53F3F;
|
|
|
- margin-left: 16px;
|
|
|
- .svg-icon{
|
|
|
- width: 12px;
|
|
|
- height: 12px;
|
|
|
- margin-right: 4px;
|
|
|
- }
|
|
|
-}
|
|
|
-.resource-list{
|
|
|
+.word-list{
|
|
|
list-style: none;
|
|
|
- margin: 12px 0;
|
|
|
padding: 0;
|
|
|
+ margin: 16px 0;
|
|
|
li{
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- margin-bottom: 16px;
|
|
|
- a,>div{
|
|
|
- width: 360px;
|
|
|
- padding: 7px 12px;
|
|
|
- background: #F7F8FA;
|
|
|
+ color: #1D2129;
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: 400;
|
|
|
+ line-height: 22px;
|
|
|
+ margin-bottom: 8px;
|
|
|
+ border-radius: 2px;
|
|
|
+ cursor: pointer;
|
|
|
+ b{
|
|
|
+ width: 21px;
|
|
|
+ font-weight: 400;
|
|
|
+ text-align: center;
|
|
|
+ margin-right: 7px;
|
|
|
+ color: rgba($color: #000000, $alpha: 0.37);
|
|
|
+ }
|
|
|
+ >div{
|
|
|
+ padding: 5px 8px;
|
|
|
border-radius: 2px;
|
|
|
- color: #1D2129;
|
|
|
+ flex: 1;
|
|
|
display: flex;
|
|
|
- align-items: center;
|
|
|
- span{
|
|
|
- overflow:hidden;
|
|
|
- text-overflow:ellipsis;
|
|
|
- white-space: nowrap;
|
|
|
- flex: 1;
|
|
|
- display: block;
|
|
|
- font-size: 14px;
|
|
|
- line-height: 22px;
|
|
|
- }
|
|
|
- .svg-icon{
|
|
|
- width: 16px;
|
|
|
- height: 16px;
|
|
|
- margin-right: 8px;
|
|
|
- color: #4E5969;
|
|
|
+ justify-content: space-between;
|
|
|
+ a{
|
|
|
+ padding: 0px 5px;
|
|
|
+ border-radius: 3px;
|
|
|
+ background: #264EFF;
|
|
|
+ color: #FFF;
|
|
|
+ font-size: 12px;
|
|
|
+ font-weight: 400;
|
|
|
+ line-height: 20px;
|
|
|
+ .svg-icon{
|
|
|
+ margin-left: 2px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- .el-icon-delete{
|
|
|
- color: #4E5969;
|
|
|
- cursor: pointer;
|
|
|
- margin-left: 12px;
|
|
|
- &:hover{
|
|
|
- color: #165DFF;
|
|
|
+ &:hover{
|
|
|
+ background: #F4F4F4;
|
|
|
+ }
|
|
|
+ &.active{
|
|
|
+ background: #EDF2FF;
|
|
|
+ color: #264EFF;
|
|
|
+ }
|
|
|
+ &.word-phrase{
|
|
|
+ >div{
|
|
|
+ a{
|
|
|
+ background: #EA5939;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ &.active{
|
|
|
+ background: #FFF4F1;;
|
|
|
+ color: #EA5939;
|
|
|
}
|
|
|
}
|
|
|
- >div{
|
|
|
- display: flex;
|
|
|
+ &.word-explain{
|
|
|
+ >div{
|
|
|
+ a{
|
|
|
+ background: #23C847;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ &.active{
|
|
|
+ background: #ECF8EF;
|
|
|
+ color: #23C847;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-.add-btn{
|
|
|
- padding: 2px 12px;
|
|
|
- border-radius: 2px;
|
|
|
- border: 1px solid #165DFF;
|
|
|
- color: #165DFF;
|
|
|
- font-size: 12px;
|
|
|
- font-weight: 400;
|
|
|
- line-height: 20px;
|
|
|
- background: #FFF;
|
|
|
- position: fixed;
|
|
|
- top: 64px;
|
|
|
- right: 24px;
|
|
|
- .el-icon-plus{
|
|
|
- margin-right: 8px;
|
|
|
- }
|
|
|
- &:hover{
|
|
|
- background: #FFF;
|
|
|
- color: #165DFF;
|
|
|
- }
|
|
|
-}
|
|
|
</style>
|
|
|
<style lang="scss">
|
|
|
-.create-article{
|
|
|
- .el-divider{
|
|
|
- width: 600px;
|
|
|
- }
|
|
|
-}
|
|
|
</style>
|