|
@@ -1,29 +1,48 @@
|
|
<template>
|
|
<template>
|
|
<div class="classify">
|
|
<div class="classify">
|
|
- <div class="classify-list" v-for="(item,index) in datas.keyList" :key="'1' + index">
|
|
|
|
|
|
+ <div class="classify-list" v-for="(item,index) in newWordsList" :key="'1' + index">
|
|
<div class="classify-title">
|
|
<div class="classify-title">
|
|
<span class="title-text">{{item.s_item}}</span>
|
|
<span class="title-text">{{item.s_item}}</span>
|
|
- <span class="icon-edit" @click="editClassFn(item.s_item, index)"></span>
|
|
|
|
- <span class="icon-delete" @click="deleteClassFn(item.s_item, index)"></span>
|
|
|
|
|
|
+ <span class="icon-edit" @click="editClassFn(item.s_item, item.groupIndex)"></span>
|
|
|
|
+ <span class="icon-delete" @click="deleteClassFn(item, item.groupIndex)"></span>
|
|
</div>
|
|
</div>
|
|
<div class="classify-content">
|
|
<div class="classify-content">
|
|
- <div class="list" v-for="(v, i) in item.a_key" :key="'2' + i">
|
|
|
|
- <div class="list-box">
|
|
|
|
- <div class="list-value">
|
|
|
|
- <p>关键词: {{v.key.join(' ') || '--'}}</p>
|
|
|
|
- <p>附加词: {{v.appendkey.join('、') || '--'}}</p>
|
|
|
|
- <p>排除词: {{v.notkey.join('、') || '--'}}</p>
|
|
|
|
|
|
+ <div class="add-words-box" @click="addNewKeyword(item, item.groupIndex)" v-if="!item.showForm" key="add">+新增关键词组</div>
|
|
|
|
+ <div style="width:100%;" v-else key="add">
|
|
|
|
+ <Edit
|
|
|
|
+ :datas="newWordsList"
|
|
|
|
+ :className="item.s_item"
|
|
|
|
+ title="新增"
|
|
|
|
+ :classIndex="item.groupIndex"
|
|
|
|
+ :keyIndex="item.a_key.length">
|
|
|
|
+ </Edit>
|
|
|
|
+ </div>
|
|
|
|
+ <div v-for="(v, i) in item.a_key" :key="'2' + i" style="width:100%;">
|
|
|
|
+ <Edit
|
|
|
|
+ :datas="newWordsList"
|
|
|
|
+ title="修改"
|
|
|
|
+ :className="item.s_item"
|
|
|
|
+ :keywords="v"
|
|
|
|
+ :classIndex="item.groupIndex"
|
|
|
|
+ :keyIndex="v.keyindex"
|
|
|
|
+ v-if="v.showForm" key="edit">
|
|
|
|
+ </Edit>
|
|
|
|
+ <div class="words-list" v-else key="edit">
|
|
|
|
+ <div class="list-left yellow-box" v-if="v.matchway">模糊</div>
|
|
|
|
+ <div class="list-left blue-box" v-else>精准</div>
|
|
|
|
+ <div class="list-middle">
|
|
|
|
+ <div class="list-keywords" v-if="v.appendkey" key="append">
|
|
|
|
+ {{v.key.join(' ') + ' ' + v.appendkey.join(' ')}}
|
|
|
|
+ </div>
|
|
|
|
+ <div class="list-keywords" v-else key="append">{{v.key.join(' ')}}</div>
|
|
|
|
+ <p class="list-notkey" v-if="v.notkey && v.notkey.length > 0">排除词: {{v.notkey.join(' ')}}</p>
|
|
</div>
|
|
</div>
|
|
- <div class="list-icon" @click="deleteKeyFn(index, i)"></div>
|
|
|
|
- <div class="list-edit" @click="editKeyFn(item, v, index, i)">
|
|
|
|
- 编辑
|
|
|
|
- <i class="tri-down"></i>
|
|
|
|
|
|
+ <div class="list-right">
|
|
|
|
+ <span class="icon-edit" @click="editKeyFn(item, v, item.groupIndex, v.keyindex)"></span>
|
|
|
|
+ <span class="icon-delete" @click="deleteKeyFn(item.groupIndex, v.keyindex)"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div class="words-add" @click="addKeyFn(item.s_item)">
|
|
|
|
- <i class="el-icon-plus"></i>
|
|
|
|
- </div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- 修改分类dialog -->
|
|
<!-- 修改分类dialog -->
|
|
@@ -68,29 +87,64 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
- <!-- 关键词dialog -->
|
|
|
|
|
|
+ <!-- 删除关键词dialog -->
|
|
<el-dialog
|
|
<el-dialog
|
|
- custom-class="sub-dialog"
|
|
|
|
- :visible.sync="dialog.editKey"
|
|
|
|
|
|
+ custom-class="sub-dialog small-dialog"
|
|
|
|
+ :visible.sync="dialog.delKey"
|
|
:close-on-click-modal="false"
|
|
:close-on-click-modal="false"
|
|
:show-close="false"
|
|
:show-close="false"
|
|
|
|
+ top="30vh"
|
|
center
|
|
center
|
|
- width="800px"
|
|
|
|
- v-if="dialog.editKey"
|
|
|
|
|
|
+ width="380px"
|
|
|
|
+ v-if="dialog.delKey"
|
|
>
|
|
>
|
|
- <KeyCard @onCancel="cancleEdit" @onConfirm="submitKeywords">
|
|
|
|
- <div slot="header">修改关键词</div>
|
|
|
|
- <div class="key-edit-content">
|
|
|
|
- <KeyEdit ref="keyEditRef" :datas="props"></KeyEdit>
|
|
|
|
|
|
+ <div class="delete-class">
|
|
|
|
+ <div class="delete-class-header">删除关键词组</div>
|
|
|
|
+ <div class="delete-class-content">确定删除该关键词组吗?</div>
|
|
|
|
+ <div class="delete-class-footer">
|
|
|
|
+ <el-button type="primary" class="confirm" @click="confirmDeleteKeyFn">确定</el-button>
|
|
|
|
+ <el-button class="cancel" @click="dialog.delKey = false">取消</el-button>
|
|
</div>
|
|
</div>
|
|
- </KeyCard>
|
|
|
|
|
|
+ </div>
|
|
|
|
+ </el-dialog>
|
|
|
|
+ <!-- 删除分类dialog -->
|
|
|
|
+ <el-dialog
|
|
|
|
+ custom-class="small-dialog"
|
|
|
|
+ title="删除关键词分类"
|
|
|
|
+ :visible.sync="dialog.notDelClass"
|
|
|
|
+ width="380px"
|
|
|
|
+ center
|
|
|
|
+ :show-close="false"
|
|
|
|
+ append-to-body
|
|
|
|
+ >
|
|
|
|
+ <p class="dialog-text">该关键词分类下存在关键词组,无法删除,请先删除该分类下的关键词组</p>
|
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
|
+ <el-button class="know-btn" type="primary" @click="dialog.notDelClass = false">我知道了</el-button>
|
|
|
|
+ </span>
|
|
|
|
+ </el-dialog>
|
|
|
|
+ <!-- 关键词添加超限提示 -->
|
|
|
|
+ <el-dialog
|
|
|
|
+ custom-class="small-dialog"
|
|
|
|
+ title="新增关键词组"
|
|
|
|
+ :visible.sync="dialog.limit"
|
|
|
|
+ width="380px"
|
|
|
|
+ center
|
|
|
|
+ :show-close="false"
|
|
|
|
+ append-to-body
|
|
|
|
+ >
|
|
|
|
+ <p class="dialog-text">您的关键词组数量已达300组,无法继续添加</p>
|
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
|
+ <el-button class="know-btn" type="primary" @click="dialog.limit = false">我知道了</el-button>
|
|
|
|
+ </span>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<script>
|
|
<script>
|
|
import { Tooltip, Dialog, Input, Button } from 'element-ui'
|
|
import { Tooltip, Dialog, Input, Button } from 'element-ui'
|
|
import KeyCard from '@/components/selector/SelectorCard'
|
|
import KeyCard from '@/components/selector/SelectorCard'
|
|
-import KeyEdit from './KeyEdit'
|
|
|
|
|
|
+import Edit from './Edit'
|
|
|
|
+import $bus from '@/utils/bus'
|
|
|
|
+import { setUserInfoVip } from '@/api/modules'
|
|
export default {
|
|
export default {
|
|
name: 'keywords-list',
|
|
name: 'keywords-list',
|
|
components: {
|
|
components: {
|
|
@@ -99,7 +153,7 @@ export default {
|
|
[Input.name]: Input,
|
|
[Input.name]: Input,
|
|
[Button.name]: Button,
|
|
[Button.name]: Button,
|
|
KeyCard,
|
|
KeyCard,
|
|
- KeyEdit
|
|
|
|
|
|
+ Edit
|
|
},
|
|
},
|
|
props: {
|
|
props: {
|
|
datas: {
|
|
datas: {
|
|
@@ -112,7 +166,10 @@ export default {
|
|
dialog: {
|
|
dialog: {
|
|
editClass: false, // 修改分类弹框
|
|
editClass: false, // 修改分类弹框
|
|
delClass: false, // 删除分类弹框
|
|
delClass: false, // 删除分类弹框
|
|
- editKey: false // 修改关键词弹框
|
|
|
|
|
|
+ editKey: false, // 修改关键词弹框
|
|
|
|
+ delKey: false, // 删除关键词
|
|
|
|
+ notDelClass: false, // 不能删除分类弹框
|
|
|
|
+ limit: false // 关键词设置超出上限弹框
|
|
},
|
|
},
|
|
// 传给dialog子组件的数据
|
|
// 传给dialog子组件的数据
|
|
props: {
|
|
props: {
|
|
@@ -123,15 +180,54 @@ export default {
|
|
key: [], // 关键词
|
|
key: [], // 关键词
|
|
notkey: [], // 排除词
|
|
notkey: [], // 排除词
|
|
appendkey: [] // 附加词
|
|
appendkey: [] // 附加词
|
|
- }
|
|
|
|
|
|
+ },
|
|
|
|
+ newWordsList: [] // 将父组件传来的数据赋值给该变量
|
|
}
|
|
}
|
|
},
|
|
},
|
|
computed: {},
|
|
computed: {},
|
|
- mounted () {},
|
|
|
|
|
|
+ watch: {
|
|
|
|
+ 'datas.keyList': function (newVal) {
|
|
|
|
+ if (newVal) {
|
|
|
|
+ this.newWordsList = newVal
|
|
|
|
+ this.formatDatasList()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ mounted () {
|
|
|
|
+ this.formatDatasList()
|
|
|
|
+ },
|
|
methods: {
|
|
methods: {
|
|
- // 取消编辑弹框
|
|
|
|
- cancleEdit () {
|
|
|
|
- this.dialog.editKey = false
|
|
|
|
|
|
+ sortData (arr) {
|
|
|
|
+ return arr.sort((a, b) => {
|
|
|
|
+ return b.updatetime - a.updatetime
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ // 修改设置接口
|
|
|
|
+ setInfoApi (data, callback) {
|
|
|
|
+ setUserInfoVip(data).then((res) => {
|
|
|
|
+ if (res.flag) {
|
|
|
|
+ $bus.$emit('updateKey')
|
|
|
|
+ callback && callback()
|
|
|
|
+ } else {
|
|
|
|
+ this.$message(res.msg)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ // 处理数据 添加showForm字段
|
|
|
|
+ formatDatasList () {
|
|
|
|
+ const lists = JSON.parse(JSON.stringify(this.datas.keyList))
|
|
|
|
+ this.sortData(lists)
|
|
|
|
+ lists.forEach(v => {
|
|
|
|
+ if (v) {
|
|
|
|
+ if (v.a_key && v.a_key.length > 0) {
|
|
|
|
+ this.sortData(v.a_key)
|
|
|
|
+ } else {
|
|
|
|
+ v.a_key = []
|
|
|
|
+ v.showForm = true
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ this.newWordsList = lists
|
|
},
|
|
},
|
|
// 打开修改关键词分类弹框
|
|
// 打开修改关键词分类弹框
|
|
editClassFn (name, index) {
|
|
editClassFn (name, index) {
|
|
@@ -159,61 +255,83 @@ export default {
|
|
v.s_item = this.props.className
|
|
v.s_item = this.props.className
|
|
}
|
|
}
|
|
})
|
|
})
|
|
- this.$emit('updateKey', data)
|
|
|
|
- this.dialog.editClass = false
|
|
|
|
|
|
+ const datas = {
|
|
|
|
+ pageType: 'keyWords',
|
|
|
|
+ classify_index: this.props.classIndex,
|
|
|
|
+ classify_name: this.props.className,
|
|
|
|
+ actionType: 'SC'
|
|
|
|
+ }
|
|
|
|
+ this.setInfoApi(datas, () => {
|
|
|
|
+ this.dialog.editClass = false
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ // 新增关键词 打开编辑表单
|
|
|
|
+ addNewKeyword (item, index) {
|
|
|
|
+ console.log(item, index, '1111')
|
|
|
|
+ const isCan = this.getIsAdd()
|
|
|
|
+ // console.log(isCan, 'isCan')
|
|
|
|
+ if (isCan) {
|
|
|
|
+ this.dialog.limit = true
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ item.showForm = true
|
|
},
|
|
},
|
|
// 打开删除关键词分类弹框
|
|
// 打开删除关键词分类弹框
|
|
- deleteClassFn (name, index) {
|
|
|
|
|
|
+ deleteClassFn (item, index) {
|
|
|
|
+ // console.log(this.newWordsList, item)
|
|
|
|
+ if (item.a_key && item.a_key.length > 0) {
|
|
|
|
+ this.dialog.notDelClass = true
|
|
|
|
+ return
|
|
|
|
+ }
|
|
this.props.classIndex = null
|
|
this.props.classIndex = null
|
|
this.dialog.delClass = true
|
|
this.dialog.delClass = true
|
|
- this.props.className = name
|
|
|
|
|
|
+ this.props.className = item.s_item
|
|
this.props.classIndex = index
|
|
this.props.classIndex = index
|
|
},
|
|
},
|
|
// 确认删除分类
|
|
// 确认删除分类
|
|
confirmDeleteClassFn () {
|
|
confirmDeleteClassFn () {
|
|
- const data = JSON.parse(JSON.stringify(this.datas.keyList))
|
|
|
|
- this.dialog.delClass = false
|
|
|
|
- // 删除整个分类的数据
|
|
|
|
- data.splice(this.props.classIndex, 1)
|
|
|
|
- this.$emit('updateKey', data)
|
|
|
|
- },
|
|
|
|
- // 添加关键词
|
|
|
|
- addKeyFn (name) {
|
|
|
|
- const isCan = this.getIsAdd()
|
|
|
|
- if (isCan) {
|
|
|
|
- return this.$message({
|
|
|
|
- type: 'warning',
|
|
|
|
- message: '关键词超出最大限制'
|
|
|
|
- })
|
|
|
|
|
|
+ const datas = {
|
|
|
|
+ pageType: 'keyWords',
|
|
|
|
+ classify_index: this.props.classIndex,
|
|
|
|
+ actionType: 'DC'
|
|
}
|
|
}
|
|
- this.dialog.editKey = true
|
|
|
|
- this.props.ways = 'add'
|
|
|
|
- this.props.className = name
|
|
|
|
- this.props.key = []
|
|
|
|
- this.props.notkey = []
|
|
|
|
- this.props.appendkey = []
|
|
|
|
- },
|
|
|
|
- // 删除单个关键词
|
|
|
|
- deleteKeyFn (index, i) {
|
|
|
|
- console.log(index, i)
|
|
|
|
- const data = JSON.parse(JSON.stringify(this.datas.keyList))
|
|
|
|
- if (!data) return
|
|
|
|
- data[index].a_key.splice(i, 1)
|
|
|
|
- this.$emit('updateKey', data)
|
|
|
|
|
|
+ this.setInfoApi(datas, () => {
|
|
|
|
+ this.dialog.delClass = false
|
|
|
|
+ })
|
|
},
|
|
},
|
|
// 编辑单个关键词
|
|
// 编辑单个关键词
|
|
editKeyFn (item, v, index, i) {
|
|
editKeyFn (item, v, index, i) {
|
|
- // index 分类下标 i 关键词下标
|
|
|
|
this.clearPropsData()
|
|
this.clearPropsData()
|
|
- this.props.ways = 'edit'
|
|
|
|
- this.dialog.editKey = true
|
|
|
|
- // 把当前关键词传到dialog key,notkey,appendKey都为数组
|
|
|
|
this.props.className = item.s_item
|
|
this.props.className = item.s_item
|
|
this.props.key = v.key
|
|
this.props.key = v.key
|
|
this.props.notkey = v.notkey
|
|
this.props.notkey = v.notkey
|
|
this.props.appendkey = v.appendkey
|
|
this.props.appendkey = v.appendkey
|
|
this.props.keyIndex = i
|
|
this.props.keyIndex = i
|
|
this.props.classIndex = index
|
|
this.props.classIndex = index
|
|
|
|
+ v.showForm = true
|
|
|
|
+ },
|
|
|
|
+ // 打开删除关键词dialog
|
|
|
|
+ deleteKeyFn (index, i) {
|
|
|
|
+ // console.log(index, i)
|
|
|
|
+ this.props.classIndex = index
|
|
|
|
+ this.props.keyIndex = i
|
|
|
|
+ this.dialog.delKey = true
|
|
|
|
+ },
|
|
|
|
+ // 确定删除关键词组
|
|
|
|
+ confirmDeleteKeyFn () {
|
|
|
|
+ const delClassIndex = this.props.classIndex.toString()
|
|
|
|
+ const delKeyIndex = this.props.keyIndex.toString()
|
|
|
|
+ const obj = {
|
|
|
|
+ [delClassIndex]: delKeyIndex
|
|
|
|
+ }
|
|
|
|
+ const datas = {
|
|
|
|
+ pageType: 'keyWords',
|
|
|
|
+ actionType: 'DK',
|
|
|
|
+ delete_key: JSON.stringify(obj)
|
|
|
|
+ }
|
|
|
|
+ this.setInfoApi(datas, () => {
|
|
|
|
+ this.dialog.delKey = false
|
|
|
|
+ })
|
|
},
|
|
},
|
|
// 清空传值
|
|
// 清空传值
|
|
clearPropsData () {
|
|
clearPropsData () {
|
|
@@ -223,64 +341,7 @@ export default {
|
|
this.props.notkey = []
|
|
this.props.notkey = []
|
|
this.props.appendkey = []
|
|
this.props.appendkey = []
|
|
},
|
|
},
|
|
- // 修改关键词dialog 保存数据
|
|
|
|
- submitKeywords () {
|
|
|
|
- const data = JSON.parse(JSON.stringify(this.datas.keyList))
|
|
|
|
- const refs = this.$refs.keyEditRef.cur
|
|
|
|
- const keyArr = this.getKeyTotalArray()
|
|
|
|
- console.log(keyArr)
|
|
|
|
- const type = this.props.ways
|
|
|
|
- const obj = {
|
|
|
|
- key: refs.key.split(' '),
|
|
|
|
- notkey: refs.notkey,
|
|
|
|
- appendkey: refs.appendkey
|
|
|
|
- }
|
|
|
|
- if (refs.key === '') {
|
|
|
|
- return this.$message({
|
|
|
|
- type: 'warning',
|
|
|
|
- message: '关键词不能为空'
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
- // 判断附加词是否重复
|
|
|
|
- if (this.getArrIsRepeat(refs.appendkey)) {
|
|
|
|
- return this.$message({
|
|
|
|
- type: 'warning',
|
|
|
|
- message: '设置的附加词重复,请调整后再添加'
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
- // 判断排除词是否重复
|
|
|
|
- if (this.getArrIsRepeat(refs.notkey)) {
|
|
|
|
- return this.$message({
|
|
|
|
- type: 'warning',
|
|
|
|
- message: '设置的排除词重复,请调整后再添加'
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
- if (type === 'add') {
|
|
|
|
- if (keyArr.indexOf(refs.key) > -1) {
|
|
|
|
- return this.$message({
|
|
|
|
- type: 'warning',
|
|
|
|
- message: '关键词不能重复'
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
- data.forEach((v) => {
|
|
|
|
- if (v.s_item === this.props.className) {
|
|
|
|
- v.a_key.push(obj)
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- } else if (type === 'edit') {
|
|
|
|
- if (!data[this.props.classIndex].a_key) return
|
|
|
|
- data[this.props.classIndex].a_key.splice(this.props.keyIndex, 1)
|
|
|
|
- data.forEach((v) => {
|
|
|
|
- if (v.s_item === this.props.className) {
|
|
|
|
- v.a_key.push(obj)
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
- // 通知父组件发请求修改并更新
|
|
|
|
- this.$emit('updateKey', data)
|
|
|
|
- this.dialog.editKey = false
|
|
|
|
- },
|
|
|
|
- // 获取所有分类名
|
|
|
|
|
|
+ // 获取所有分类名 用户判断添加分类是否重复
|
|
getClassArray () {
|
|
getClassArray () {
|
|
const data = JSON.parse(JSON.stringify(this.datas.keyList))
|
|
const data = JSON.parse(JSON.stringify(this.datas.keyList))
|
|
const classArr = []
|
|
const classArr = []
|
|
@@ -291,23 +352,7 @@ export default {
|
|
})
|
|
})
|
|
return classArr
|
|
return classArr
|
|
},
|
|
},
|
|
- // 获取所有关键词的key的属性,并返回一个数组(主要用于判断添加关键词是否重复)
|
|
|
|
- getKeyTotalArray () {
|
|
|
|
- const data = JSON.parse(JSON.stringify(this.datas.keyList))
|
|
|
|
- const keysArr = []
|
|
|
|
- data.forEach((s) => {
|
|
|
|
- if (s && s.a_key && Array.isArray(s.a_key)) {
|
|
|
|
- s.a_key.forEach((v) => {
|
|
|
|
- if (Array.isArray(v.key)) {
|
|
|
|
- keysArr.push(v.key.toString().replace(',', ' '))
|
|
|
|
- } else {
|
|
|
|
- keysArr.push(v.key)
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- return keysArr
|
|
|
|
- },
|
|
|
|
|
|
+ // 添加了多少组关键词
|
|
addTotalCount () {
|
|
addTotalCount () {
|
|
let count = 0
|
|
let count = 0
|
|
const data = JSON.parse(JSON.stringify(this.datas.keyList))
|
|
const data = JSON.parse(JSON.stringify(this.datas.keyList))
|
|
@@ -318,30 +363,15 @@ export default {
|
|
})
|
|
})
|
|
return count
|
|
return count
|
|
},
|
|
},
|
|
- // 判断附加词、排除词是否重复
|
|
|
|
- getArrIsRepeat (arr) {
|
|
|
|
- this.removeEmptyInput(arr)
|
|
|
|
- return (new Set(arr)).size !== arr.length
|
|
|
|
- },
|
|
|
|
// 判断是否超限
|
|
// 判断是否超限
|
|
getIsAdd () {
|
|
getIsAdd () {
|
|
const len = this.addTotalCount()
|
|
const len = this.addTotalCount()
|
|
- console.log(len)
|
|
|
|
|
|
+ // console.log(len)
|
|
if (len >= this.datas.maxCount) {
|
|
if (len >= this.datas.maxCount) {
|
|
return true
|
|
return true
|
|
} else {
|
|
} else {
|
|
return false
|
|
return false
|
|
}
|
|
}
|
|
- },
|
|
|
|
- removeEmptyInput (arr) {
|
|
|
|
- for (let i = 0; i < arr.length; i++) {
|
|
|
|
- // eslint-disable-next-line
|
|
|
|
- if (arr[i] === '' || arr[i] === null || typeof (arr[i]) === undefined) {
|
|
|
|
- arr.splice(i, 1)
|
|
|
|
- i = i - 1
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return arr
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -450,8 +480,7 @@ export default {
|
|
display: flex;
|
|
display: flex;
|
|
align-items: center;
|
|
align-items: center;
|
|
.title-text{
|
|
.title-text{
|
|
- font-size: 14px;
|
|
|
|
- font-weight: 700;
|
|
|
|
|
|
+ font-size: 16px;
|
|
color: #1d1d1d;
|
|
color: #1d1d1d;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -477,6 +506,66 @@ export default {
|
|
align-items: center;
|
|
align-items: center;
|
|
justify-content: flex-start;
|
|
justify-content: flex-start;
|
|
flex-wrap: wrap;
|
|
flex-wrap: wrap;
|
|
|
|
+ .add-words-box{
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 38px;
|
|
|
|
+ margin-top: 20px;
|
|
|
|
+ line-height: 38px;
|
|
|
|
+ border: 1px dashed #2cb7ca;
|
|
|
|
+ border-radius: 6px;
|
|
|
|
+ color: #2cb7ca;
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ text-align: center;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ }
|
|
|
|
+ .words-list{
|
|
|
|
+ width: 100%;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ align-items: center;
|
|
|
|
+ padding: 12px 16px;
|
|
|
|
+ margin-top: 12px;
|
|
|
|
+ border: 1px solid #ececec;
|
|
|
|
+ border-radius: 8px;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+ .list-left{
|
|
|
|
+ width: 40px;
|
|
|
|
+ height: 22px;
|
|
|
|
+ line-height: 22px;
|
|
|
|
+ margin-right: 12px;
|
|
|
|
+ font-size: 12px;
|
|
|
|
+ text-align: center;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+ }
|
|
|
|
+ .yellow-box{
|
|
|
|
+ border: 1px solid #ff9f40;
|
|
|
|
+ color: #ff9f40;
|
|
|
|
+ border-radius: 4px;
|
|
|
|
+ }
|
|
|
|
+ .blue-box{
|
|
|
|
+ border: 1px solid #2cb7ca;
|
|
|
|
+ color: #2cb7ca;
|
|
|
|
+ border-radius: 4px;
|
|
|
|
+ }
|
|
|
|
+ .list-middle{
|
|
|
|
+ flex: 1;
|
|
|
|
+ }
|
|
|
|
+ .list-keywords{
|
|
|
|
+ color: #1d1d1d;
|
|
|
|
+ line-height: 22px;
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ }
|
|
|
|
+ .list-addkey,
|
|
|
|
+ .list-notkey{
|
|
|
|
+ color: #686868;
|
|
|
|
+ line-height: 20px;
|
|
|
|
+ font-size: 12px;
|
|
|
|
+ }
|
|
|
|
+ .list-right{
|
|
|
|
+ margin-left:15px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
.list{
|
|
.list{
|
|
padding-top: 10px;
|
|
padding-top: 10px;
|
|
margin-right: 10px;
|
|
margin-right: 10px;
|