|
@@ -0,0 +1,585 @@
|
|
|
+<template>
|
|
|
+ <div class="edit-form">
|
|
|
+ <div class="input-box">
|
|
|
+ <div class="input-box-title">{{title}}</div>
|
|
|
+ <div class="item">
|
|
|
+ <div class="item-label">关键词:</div>
|
|
|
+ <div class="item-value">
|
|
|
+ <el-input
|
|
|
+ type="textarea"
|
|
|
+ autosize
|
|
|
+ resize="none"
|
|
|
+ placeholder="请输入关键词,多个关键词用空格隔开,例如:税务局 软件"
|
|
|
+ v-model="cur.key">
|
|
|
+ </el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="item">
|
|
|
+ <div class="item-label"></div>
|
|
|
+ <div class="item-value">
|
|
|
+ <div class="recommend">
|
|
|
+ <div class="recommend-title">
|
|
|
+ <span>相似订阅推荐</span>
|
|
|
+ <span class="batch-btn" @click="batchFn"><i class="el-icon-refresh"></i> 换一批</span>
|
|
|
+ </div>
|
|
|
+ <div class="recommend-main">
|
|
|
+ <div class="r-list"
|
|
|
+ :class="{active: s.selected}"
|
|
|
+ v-for="(s, j) in sameWordsList"
|
|
|
+ :key="'00' + j"
|
|
|
+ @click="addSameItem($event, s)">{{s.name}}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="item">
|
|
|
+ <div class="item-label">匹配模式:</div>
|
|
|
+ <div class="item-value">
|
|
|
+ <el-radio-group v-model="cur.mathway" @change="chooseMathWay($event)">
|
|
|
+ <el-radio name="matchway" :label="1">模糊<span class="math-tips">(任意1个关键词匹配成功即推送)</span></el-radio>
|
|
|
+ <el-radio name="matchway" :label="0">精准<span class="math-tips">(同时包含所有关键词才推送)</span></el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="item" v-if="showNotWay" key="notway">
|
|
|
+ <div class="item-label item-label-required">排除词:</div>
|
|
|
+ <div class="item-value">
|
|
|
+ <el-input
|
|
|
+ type="textarea"
|
|
|
+ autosize
|
|
|
+ resize="none"
|
|
|
+ placeholder="请输入排除词,多个排除词用空格隔开,不希望接收,与关键词互斥"
|
|
|
+ v-model="cur.notkey">
|
|
|
+ </el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="item" v-else key="notway">
|
|
|
+ <div class="item-label"></div>
|
|
|
+ <div class="item-value">
|
|
|
+ <div class="add-words-btn" @click="showNotWay = true">+添加排除词(不希望接收,与关键词互斥)</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="little-tips">当前匹配信息过少,请适当修改关键词</div>
|
|
|
+ <div>
|
|
|
+ <button type="button" :disabled="keyDisabled" class="confirm-btn" @click="submitKeywords">(近3个月内共匹配***条信息)</button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+import { Input, Button, RadioGroup, Radio } from 'element-ui'
|
|
|
+import $bus from '@/utils/bus'
|
|
|
+/* eslint-disable */
|
|
|
+Array.prototype.indexOf = function (val) {
|
|
|
+ for (var i = 0; i < this.length; i++) {
|
|
|
+ if (this[i] === val) return i
|
|
|
+ }
|
|
|
+ return -1
|
|
|
+}
|
|
|
+Array.prototype.remove = function (val) {
|
|
|
+ var index = this.indexOf(val)
|
|
|
+ if (index > -1) {
|
|
|
+ this.splice(index, 1)
|
|
|
+ }
|
|
|
+}
|
|
|
+/* eslint-disable */
|
|
|
+export default {
|
|
|
+ name: 'key-config',
|
|
|
+ props: {
|
|
|
+ datas: {
|
|
|
+ newWordsList: Array,
|
|
|
+ maxCount: Number
|
|
|
+ },
|
|
|
+ title: String,
|
|
|
+ keywords: Object,
|
|
|
+ classify: Object
|
|
|
+ },
|
|
|
+ components: {
|
|
|
+ [Input.name]: Input,
|
|
|
+ [Button.name]: Button,
|
|
|
+ [RadioGroup.name]: RadioGroup,
|
|
|
+ [Radio.name]: Radio
|
|
|
+ },
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ // 当前输入框的数据
|
|
|
+ cur: {
|
|
|
+ classify: '',
|
|
|
+ key: '',
|
|
|
+ appendkey: '',
|
|
|
+ notkey: '',
|
|
|
+ mathway: 0
|
|
|
+ },
|
|
|
+ showNotWay: false, // 是否展示添加排除词输入框
|
|
|
+ sameWordsList: [] // 相似推荐数据
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ keyDisabled () {
|
|
|
+ return !this.cur.key
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted () {
|
|
|
+ console.log(this.classify, this.keywords, 'cur')
|
|
|
+ if (this.keywords) {
|
|
|
+ this.cur.key = this.keywords.key.join(' ')
|
|
|
+ }
|
|
|
+ if (this.classify) {
|
|
|
+ this.cur.classify = this.classify.s_item
|
|
|
+ }
|
|
|
+ this.batchFn()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ chooseMathWay (state) {
|
|
|
+ console.log(state)
|
|
|
+ },
|
|
|
+ getArrRandom () {
|
|
|
+ const m = '计算机,软件,信息,技术,互联网,科技,建筑,交通工程,互联网医疗,医疗,学校,教育,招投标,政府办,法院,检察院,卫生系统,医院,化工,水泥,开发,绿化,动画,传媒,宣传,小猪佩奇,小猪乔治'
|
|
|
+ const arr = m.split(',')
|
|
|
+ const len = arr.length
|
|
|
+ for (let i = len - 1; i > 0; i--) {
|
|
|
+ const randomIndex = Math.floor(Math.random() * (i + 1))
|
|
|
+ const itemIndex = arr[randomIndex]
|
|
|
+ arr[randomIndex] = arr[i]
|
|
|
+ arr[i] = itemIndex
|
|
|
+ }
|
|
|
+ return arr
|
|
|
+ },
|
|
|
+ batchFn () {
|
|
|
+ const temp = this.getArrRandom()
|
|
|
+ const arrList = []
|
|
|
+ for (let i = 0; i < 10; i++) {
|
|
|
+ arrList.push({
|
|
|
+ selected: false,
|
|
|
+ name: temp[i]
|
|
|
+ })
|
|
|
+ }
|
|
|
+ const m = this.cur.key.split(' ')
|
|
|
+ m.forEach(v => {
|
|
|
+ arrList.forEach(s => {
|
|
|
+ if (v === s.name) {
|
|
|
+ s.selected = true
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ this.sameWordsList = arrList
|
|
|
+ },
|
|
|
+ addSameItem (e, item) {
|
|
|
+ item.selected = !item.selected
|
|
|
+ const m = this.cur.key.split(' ')
|
|
|
+ if (item.selected) {
|
|
|
+ m.push(item.name)
|
|
|
+ console.log(m)
|
|
|
+ this.cur.key = m.join(' ')
|
|
|
+ } else {
|
|
|
+ m.remove(item.name)
|
|
|
+ this.cur.key = m.join(' ')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 保存数据
|
|
|
+ saveCurData () {
|
|
|
+ const data = this.datas.newWordsList
|
|
|
+ const obj = {
|
|
|
+ a_key: [
|
|
|
+ {
|
|
|
+ key: this.cur.key.split(' '),
|
|
|
+ notkey: this.cur.notkey,
|
|
|
+ appendkey: this.cur.appendkey
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ s_item: this.cur.classify ? this.cur.classify : this.getNewClassName()
|
|
|
+ }
|
|
|
+ data.push(obj)
|
|
|
+ return data
|
|
|
+ },
|
|
|
+ // 提交关键词
|
|
|
+ submitKeywords () {
|
|
|
+ const totalCount = this.addTotalCount()
|
|
|
+ const classArr = this.getClassArray()
|
|
|
+ const keyArr = this.getKeyTotalArray()
|
|
|
+ console.log(totalCount, classArr, keyArr)
|
|
|
+ if (totalCount >= this.datas.maxCount) {
|
|
|
+ return this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '关键词超出最大限制'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if (classArr.indexOf(this.cur.classify) > -1) {
|
|
|
+ return this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '分类名不能重复'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if (keyArr.indexOf(this.cur.key) > -1) {
|
|
|
+ return this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '关键词不能重复'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // 判断附加词是否重复
|
|
|
+ if (this.getArrIsRepeat(this.cur.appendkey)) {
|
|
|
+ return this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '设置的附加词重复,请调整后再添加'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // 判断排除词是否重复
|
|
|
+ if (this.getArrIsRepeat(this.cur.notkey)) {
|
|
|
+ return this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '设置的排除词重复,请调整后再添加'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ const params = this.saveCurData()
|
|
|
+ // 通知父组件发请求修改并更新
|
|
|
+ // this.$emit('updateKey', params)
|
|
|
+ $bus.$emit('updateKey', params)
|
|
|
+ },
|
|
|
+ // 添加附加词
|
|
|
+ addAttachWordsFn () {
|
|
|
+ const arr = this.cur.appendkey
|
|
|
+ if (this.inputIsEmpty(arr)) {
|
|
|
+ this.$message({
|
|
|
+ message: '请输入附加词',
|
|
|
+ type: 'warning'
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.cur.appendkey.push('')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 添加排除词
|
|
|
+ addExcludeWordsFn () {
|
|
|
+ const arr = this.cur.notkey
|
|
|
+ if (this.inputIsEmpty(arr)) {
|
|
|
+ this.$message({
|
|
|
+ message: '请输入排除词',
|
|
|
+ type: 'warning'
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.cur.notkey.push('')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 判断附加词排除词输入框是否有空
|
|
|
+ inputIsEmpty (arr) {
|
|
|
+ return arr.some((v) => !v)
|
|
|
+ },
|
|
|
+ // 获取所有分类名 用于判断是否重复
|
|
|
+ getClassArray () {
|
|
|
+ const classArr = []
|
|
|
+ this.datas.newWordsList.forEach((v) => {
|
|
|
+ if (v.s_item) {
|
|
|
+ classArr.push(v.s_item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return classArr
|
|
|
+ },
|
|
|
+ // 获取所有关键词的key的属性,并返回一个数组(主要用于判断添加关键词是否重复)
|
|
|
+ getKeyTotalArray () {
|
|
|
+ const keysArr = []
|
|
|
+ this.datas.newWordsList.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
|
|
|
+ },
|
|
|
+ // 判断附加词、排除词是否重复
|
|
|
+ getArrIsRepeat (arr) {
|
|
|
+ this.removeEmptyInput(arr)
|
|
|
+ return (new Set(arr)).size !== arr.length
|
|
|
+ },
|
|
|
+ // 通过已有分类得到一个未分类名
|
|
|
+ getNewClassName () {
|
|
|
+ var conf = {
|
|
|
+ defaultT: '未分类',
|
|
|
+ reg: /^未分类(\d*)$/,
|
|
|
+ // 未分类名称数组
|
|
|
+ unclassified: [],
|
|
|
+ // 未分类名称数字数组
|
|
|
+ unclassifiedNum: [],
|
|
|
+ sortedArr: []
|
|
|
+ }
|
|
|
+ this.datas.newWordsList.forEach((item) => {
|
|
|
+ if (item.s_item && conf.reg.test(item.s_item)) {
|
|
|
+ let num = item.s_item.replace(new RegExp(conf.defaultT, 'g'), '')
|
|
|
+ num = parseInt(num)
|
|
|
+ if (isNaN(num)) {
|
|
|
+ num = 0
|
|
|
+ }
|
|
|
+ conf.unclassifiedNum.push(num)
|
|
|
+ conf.unclassified.push(item.s_item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // 得到分类名
|
|
|
+ if (conf.unclassifiedNum.length === 0) {
|
|
|
+ return '未分类'
|
|
|
+ } else {
|
|
|
+ conf.sortedArr = conf.unclassifiedNum.sort(function (a, b) {
|
|
|
+ return b - a
|
|
|
+ })
|
|
|
+ return conf.defaultT + (conf.sortedArr[0] + 1)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 清空输入框 供父组件请求成功后刷新
|
|
|
+ clearInputData () {
|
|
|
+ this.cur.classify = ''
|
|
|
+ this.cur.key = ''
|
|
|
+ this.cur.appendkey = ['']
|
|
|
+ this.cur.notkey = ['']
|
|
|
+ },
|
|
|
+ addTotalCount () {
|
|
|
+ let count = 0
|
|
|
+ this.datas.newWordsList.forEach(v => {
|
|
|
+ if (v && v.a_key) {
|
|
|
+ count += v.a_key.length
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return count
|
|
|
+ },
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+<style lang="scss" scoped>
|
|
|
+.edit-form{
|
|
|
+ margin-top: 20px;
|
|
|
+ .classify-title{
|
|
|
+ padding-bottom: 20px;
|
|
|
+ .icon-edit,.icon-delete{
|
|
|
+ display: inline-block;
|
|
|
+ width: 16px;
|
|
|
+ height: 16px;
|
|
|
+ background-repeat: no-repeat;
|
|
|
+ background-position: center center;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .icon-edit{
|
|
|
+ margin: 0 10px;
|
|
|
+ background-image: url('~@/assets/images/icon-edit.png');
|
|
|
+ background-size: contain;
|
|
|
+ }
|
|
|
+ .icon-delete{
|
|
|
+ background-image: url('~@/assets/images/icon-delete.png');
|
|
|
+ background-size: contain;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .input-box{
|
|
|
+ padding: 20px 30px;
|
|
|
+ background: #f6f7f9;
|
|
|
+ border-radius: 8px;
|
|
|
+ }
|
|
|
+ .input-box-title{
|
|
|
+ margin-bottom: 16px;
|
|
|
+ font-size: 16px;
|
|
|
+ text-align: center;
|
|
|
+ color: #1d1d1d;
|
|
|
+ }
|
|
|
+ .item{
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
+ .item-label{
|
|
|
+ margin-right: 8px;
|
|
|
+ min-width: 120px;
|
|
|
+ height: 40px;
|
|
|
+ color: #1d1d1d;
|
|
|
+ font-size: 14px;
|
|
|
+ line-height: 40px;
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+ .item-label-required:before{
|
|
|
+ content: "*";
|
|
|
+ color: #f56c6c;
|
|
|
+ margin-right: 2px;
|
|
|
+ }
|
|
|
+ .recommend{
|
|
|
+ padding: 16px;
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 4px;
|
|
|
+ .recommend-title{
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ color: #686868;
|
|
|
+ font-size: 14px;
|
|
|
+ .batch-btn{
|
|
|
+ color: #2cb7ca;
|
|
|
+ font-size: 14px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .recommend-main{
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ .r-list{
|
|
|
+ padding: 0 8px;
|
|
|
+ margin: 12px 8px 0;
|
|
|
+ height: 22px;
|
|
|
+ line-height: 22px;
|
|
|
+ background: #f5f6f7;
|
|
|
+ border-radius: 4px;
|
|
|
+ color: #1d1d1d;;
|
|
|
+ font-size: 14px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .active{
|
|
|
+ background: #2cb7ca;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .add-words-btn{
|
|
|
+ width: 352px;
|
|
|
+ height: 40px;
|
|
|
+ line-height: 40px;
|
|
|
+ border: 1px dashed #2cb7ca;
|
|
|
+ border-radius: 6px;
|
|
|
+ background: #fff;
|
|
|
+ color: #2cb7ca;
|
|
|
+ text-align: center;
|
|
|
+ cursor: pointer;
|
|
|
+ font-size: 14px;
|
|
|
+ }
|
|
|
+ .little-tips{
|
|
|
+ margin-top: 20px;
|
|
|
+ height: 32px;
|
|
|
+ line-height: 32px;
|
|
|
+ background: rgba(255, 159, 64,0.1);
|
|
|
+ border-radius: 4px;
|
|
|
+ color: #ff9f40;
|
|
|
+ font-size: 13px;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ .item-value{
|
|
|
+ flex: 1;
|
|
|
+ }
|
|
|
+ .custom-long-input{
|
|
|
+ width: 352px;
|
|
|
+ }
|
|
|
+ .custom-short-input{
|
|
|
+ width: 170px;
|
|
|
+ }
|
|
|
+ .item-other{
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
+ .item-other-value{
|
|
|
+ margin-top: 8px;
|
|
|
+ }
|
|
|
+ .math-tips{
|
|
|
+ margin-top: 4px;
|
|
|
+ font-size: 12px;
|
|
|
+ color: #999999;
|
|
|
+ line-height: 20px;
|
|
|
+ }
|
|
|
+ .radio-item{
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
+ .item-keywords-value{
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ }
|
|
|
+ .add-tag{
|
|
|
+ width: 170px;
|
|
|
+ height: 40px;
|
|
|
+ line-height: 40px;
|
|
|
+ color: #2cb7ca;
|
|
|
+ border-radius: 6px;
|
|
|
+ text-align: center;
|
|
|
+ cursor: pointer;
|
|
|
+ color: #2cb7ca;
|
|
|
+ border: 1px dashed #2cb7ca;
|
|
|
+ }
|
|
|
+ .add-word-list{
|
|
|
+ margin-bottom: 6px;
|
|
|
+ }
|
|
|
+ .confirm-btn{
|
|
|
+ display: block;
|
|
|
+ width: 352px;
|
|
|
+ height: 46px;
|
|
|
+ margin: 20px auto 0;
|
|
|
+ line-height: 46px;
|
|
|
+ font-size: 16px;
|
|
|
+ background: #2cb7ca;
|
|
|
+ border-radius: 6px;
|
|
|
+ color: #fff;
|
|
|
+ cursor: pointer;
|
|
|
+ &:disabled{
|
|
|
+ opacity: 0.5;
|
|
|
+ cursor: not-allowed;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .keywords-help{
|
|
|
+ width: 412px;
|
|
|
+ margin-top: 20px;
|
|
|
+ font-size: 12px;
|
|
|
+ color: #999999;
|
|
|
+ line-height: 20px;
|
|
|
+ text-align: justify;
|
|
|
+ }
|
|
|
+}
|
|
|
+// element-ui样式修改
|
|
|
+::v-deep {
|
|
|
+ .el-input__inner,
|
|
|
+ .el-textarea__inner{
|
|
|
+ font-size: 14px;
|
|
|
+ color: #1D1D1D;
|
|
|
+ border-color: #ececec;
|
|
|
+ }
|
|
|
+ .el-textarea__inner{
|
|
|
+ padding: 8px 15px;
|
|
|
+ }
|
|
|
+ .el-input__inner:hover,
|
|
|
+ .el-textarea__inner:hover{
|
|
|
+ border-color: #ececec;
|
|
|
+ }
|
|
|
+ .el-input__inner:focus,
|
|
|
+ .el-textarea__inner:focus{
|
|
|
+ border-color: #2cb7ca;
|
|
|
+ }
|
|
|
+ .el-radio{
|
|
|
+ color: #1d1d1d;
|
|
|
+ font-size: 14px;
|
|
|
+ }
|
|
|
+ .el-radio__inner{
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ }
|
|
|
+ .el-radio__input.is-checked .el-radio__inner{
|
|
|
+ border: 0;
|
|
|
+ background: transparent;
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ background: url('~@/assets/images/icon-checked.png') no-repeat center center;
|
|
|
+ background-size: contain;
|
|
|
+ }
|
|
|
+ .el-radio__inner::after{
|
|
|
+ background: transparent;
|
|
|
+ }
|
|
|
+ .el-radio__input.is-checked+.el-radio__label{
|
|
|
+ color: #1d1d1d;
|
|
|
+ }
|
|
|
+ .el-radio__inner:hover{
|
|
|
+ border-color: #ececec;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|