|
@@ -0,0 +1,500 @@
|
|
|
+<style lang="less" scoped>
|
|
|
+ @import './Index.less';
|
|
|
+</style>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <div class="new-syllabus-container">
|
|
|
+ <!-- 课纲头部 切换来源以及选择学段 -->
|
|
|
+ <div class="new-syllabus-header">
|
|
|
+ <div>
|
|
|
+ <span :class="tabIndex == 0 ? 'tab-active' : ''" @click="handleTabClick(0)">校本知识块</span>
|
|
|
+ <span :class="tabIndex == 1 ? 'tab-active' : ''" @click="handleTabClick(1)">校本知识点</span>
|
|
|
+ </div>
|
|
|
+ <div class="new-syllabus-select">
|
|
|
+ <span>当前学段:</span>
|
|
|
+ <Select ref="periodSelect" v-model="currentPeriod" style="width:200px" @on-change="onPeriodChange">
|
|
|
+ <Option v-for="(item,index) in periodList" :value="index" :key="index">{{ item.periodName }}</Option>
|
|
|
+ </Select>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 课纲主体内容 -->
|
|
|
+ <div class="new-syllabus-content">
|
|
|
+ <!-- 选择科目 -->
|
|
|
+ <div class="ns-col ns-col">
|
|
|
+ <Loading :top="200" bgColor="rgba(103, 103, 103, 0.27)" type="1" v-show="isLoadSubject"></Loading>
|
|
|
+ <div class="ns-header">
|
|
|
+ <!-- 切换头部以及搜索框 -->
|
|
|
+ <div class="ns-header-content" v-if="!isSearchSubject">
|
|
|
+ <span>
|
|
|
+ <Icon type="md-bookmark" color="#fff" size="20" />
|
|
|
+ <span style="margin-left:5px">科目</span>
|
|
|
+ </span>
|
|
|
+ <Icon type="ios-search" color="#fff" size="18" style="cursor:pointer" @click="isSearchSubject = true" />
|
|
|
+ </div>
|
|
|
+ <div class="ns-header-search" v-else>
|
|
|
+ <Input icon="ios-close"
|
|
|
+ v-model="searchSubject"
|
|
|
+ placeholder="搜索科目..."
|
|
|
+ autofocus
|
|
|
+ style="width: 100%"
|
|
|
+ @on-click="isSearchSubject = false"
|
|
|
+ @on-blur="isSearchSubject = false"
|
|
|
+ @on-change="onSearchSubjectChange"
|
|
|
+ @on-enter="onSearchSubjectChange" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <vuescroll>
|
|
|
+ <div class="gl">
|
|
|
+ <div :class='["gl-item","animated","slideInUp",index == activeSubjectIndex ? "item-active":""]'
|
|
|
+ v-for="(item,index) in subjectList"
|
|
|
+ :key="index"
|
|
|
+ @click="hasModify ? handleConfirmSave({index},'2') : handleSubjectTap(index)"
|
|
|
+ :style="{ animationDelay: ((index+1)*0.05) + 's'}">
|
|
|
+ <p class="gl-item-name">{{item.subjectName}}</p>
|
|
|
+ <p class="gl-item-info"><span></span>知识块数:{{index}}</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </vuescroll>
|
|
|
+ </div>
|
|
|
+ <!-- 选择知识块 -->
|
|
|
+ <div class="ns-col ns-col2">
|
|
|
+ <Loading :top="200" bgColor="rgba(103, 103, 103, 0.27)" type="1" v-show="isLoadVolumes"></Loading>
|
|
|
+ <div class="ns-header">
|
|
|
+ <!-- 切换头部以及搜索框 -->
|
|
|
+ <div class="ns-header-content" v-if="!isSearchBlock">
|
|
|
+ <span>
|
|
|
+ <Icon type="md-bookmarks" color="#fff" size="20" />
|
|
|
+ <span style="margin-left:5px">知识块</span>
|
|
|
+ </span>
|
|
|
+ <div>
|
|
|
+ <Icon type="md-add" color="#fff" size="18" style="cursor:pointer;margin-right:10px" @click="onAddVolume" />
|
|
|
+ <Poptip title="筛选知识块" placement="bottom-end" @on-popper-show="onPopperShow">
|
|
|
+ <Icon type="ios-funnel" color="#fff" size="18" style="cursor:pointer;margin-right:10px" />
|
|
|
+ <div class="funnel-box" slot="content">
|
|
|
+ <p>年级</p>
|
|
|
+ <Select v-model="filterGrade" style="width:200px" @on-change="onFilterGrade">
|
|
|
+ <Option v-for="(item,index) in gradeList" :value="item.gradeCode" :key="index">{{ item.gradeName }}</Option>
|
|
|
+ </Select>
|
|
|
+ <p>学期</p>
|
|
|
+ <Select v-model="filterSemester" style="width:200px" @on-change="onFilterSemester">
|
|
|
+ <Option v-for="(item,index) in semesterList" :value="item.semesterCode" :key="index">{{ item.semesterName }}</Option>
|
|
|
+ </Select>
|
|
|
+ </div>
|
|
|
+ </Poptip>
|
|
|
+ <Icon type="ios-search" color="#fff" size="18" style="cursor:pointer" @click="isSearchBlock = true" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="ns-header-search" v-else>
|
|
|
+ <!-- 搜索知识块部分 -->
|
|
|
+ <Input icon="ios-close"
|
|
|
+ v-model="searchBlock"
|
|
|
+ placeholder="搜索知识块..."
|
|
|
+ autofocus
|
|
|
+ style="width: 100%"
|
|
|
+ @on-click="isSearchBlock = false"
|
|
|
+ @on-blur="isSearchBlock = false"
|
|
|
+ @on-change="onSearchBlockChange"
|
|
|
+ @on-enter="onSearchBlockChange" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <vuescroll>
|
|
|
+ <!-- 知识块列表 -->
|
|
|
+ <div class="vl gl">
|
|
|
+ <div v-if="blockList.length === 0">
|
|
|
+ <EmptyBox :top="50"></EmptyBox>
|
|
|
+ </div>
|
|
|
+ <div v-else>
|
|
|
+ <div :class='["gl-item","animated","slideInUp",index == activeBlockIndex ? "item-active":""]'
|
|
|
+ v-for="(item,index) in blockList"
|
|
|
+ :key="index"
|
|
|
+ @click="hasModify ? handleConfirmSave({index,item},'1') : handleBlockTap(index,item)"
|
|
|
+ :style="{ animationDelay: ((index+1)*0.05) + 's'}">
|
|
|
+ <p class="gl-item-name" :title="item.name">{{item.name}}</p>
|
|
|
+ <p class="gl-item-info"><span></span>知识点数:{{item.points.length}}</p>
|
|
|
+ <span class="btn-edit" title="编辑" @click.stop="onEditVolume(item)"><Icon type="md-create" size="20" color="#d2d2d2" /></span>
|
|
|
+ <span class="btn-delete" title="删除" @click.stop="onDeleteVolume(item)"><Icon type="md-trash" size="22" color="#d2d2d2" /></span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </vuescroll>
|
|
|
+ </div>
|
|
|
+ <!-- 展示课纲树形结构部分 -->
|
|
|
+ <div class="ns-col ns-col3">
|
|
|
+ <Loading :top="200" bgColor="rgba(103, 103, 103, 0.27)" type="1" v-show="isLoadPoints"></Loading>
|
|
|
+ <div class="ns-header">
|
|
|
+ <!-- 切换头部以及搜索框 -->
|
|
|
+ <div class="ns-header-content" v-if="!isSearchPoint">
|
|
|
+ <span>
|
|
|
+ <Icon type="md-bookmarks" color="#fff" size="20" />
|
|
|
+ <span style="margin-left:5px">知识点</span>
|
|
|
+ </span>
|
|
|
+ <div>
|
|
|
+ <Icon type="md-add" color="#fff" size="18" style="cursor:pointer;margin-right:10px" @click="onAddVolume" />
|
|
|
+ <Icon type="ios-search" color="#fff" size="18" style="cursor:pointer" @click="isSearchPoint = true" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="ns-header-search" v-else>
|
|
|
+ <!-- 搜索知识点部分 -->
|
|
|
+ <Input icon="ios-close"
|
|
|
+ v-model="searchPoint"
|
|
|
+ placeholder="搜索知识块..."
|
|
|
+ autofocus
|
|
|
+ style="width: 100%"
|
|
|
+ @on-click="isSearchPoint = false"
|
|
|
+ @on-blur="isSearchPoint = false"
|
|
|
+ @on-change="onSearchBlockChange"
|
|
|
+ @on-enter="onSearchBlockChange" />
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <div v-if="pointList.length === 0">
|
|
|
+ <EmptyBox :top="100"></EmptyBox>
|
|
|
+ </div>
|
|
|
+ <div class="points-wrap" v-else>
|
|
|
+ <span class="point-item" v-for="(item,index) in pointList" :key="index">{{item.name}}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 新增知识块弹窗 -->
|
|
|
+ <Modal v-model="isAddVolume" width="560" footer-hide class="add-volume-modal">
|
|
|
+ <div class="modal-header" slot="header">{{ isEditVolume ? '编辑知识块' : '新增知识块'}}</div>
|
|
|
+ <div class="modal-content">
|
|
|
+ <AddBlock :originData="originSchoolData"
|
|
|
+ :periodIndex="currentPeriod"
|
|
|
+ :subjectIndex="currentSubject"
|
|
|
+ :editVolume="editVolume"
|
|
|
+ @addFinish="onFinishAddVolume">
|
|
|
+ </AddBlock>
|
|
|
+ </div>
|
|
|
+ </Modal>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import Tree from '@/components/syllabus/DragTree'
|
|
|
+ import EmptyBox from '@/common/EmptyData'
|
|
|
+ import Loading from '@/common/Loading'
|
|
|
+ import AddBlock from './operation/addBlock'
|
|
|
+
|
|
|
+ let defaultBlock = {
|
|
|
+ type: 0,
|
|
|
+ name: "",
|
|
|
+ alias: "",
|
|
|
+ subjectCode: "",
|
|
|
+ schoolCode: "2151002664",
|
|
|
+ order: 706,
|
|
|
+ status: 1,
|
|
|
+ knowledgeId: "0aa85eec-34fd-468c-95b7-39ff3eb51e61",
|
|
|
+ points: [],
|
|
|
+ source: 1
|
|
|
+ }
|
|
|
+
|
|
|
+ export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ schoolInfo: {
|
|
|
+ schoolCode: "HBCN",
|
|
|
+ areaCode: "86"
|
|
|
+ },
|
|
|
+ currentParams: {
|
|
|
+ schoolCode: "2151002664",
|
|
|
+ subjectCode: ""
|
|
|
+ },
|
|
|
+ isLoadSubject: false,
|
|
|
+ isLoadVolumes: false,
|
|
|
+ isLoadPoints: false,
|
|
|
+ currentPeriod: null,
|
|
|
+ currentSubject: null,
|
|
|
+ currentBlock: null,
|
|
|
+ tabIndex: 0,
|
|
|
+ originData: {},
|
|
|
+ originSchoolData: {},
|
|
|
+ periodList: [],
|
|
|
+ gradeList: [],
|
|
|
+ semesterList: [],
|
|
|
+ subjectList: [],
|
|
|
+ originSubjectList: [],
|
|
|
+ blockList: [],
|
|
|
+ originBlockList: [],
|
|
|
+ pointList: [],
|
|
|
+ activePeriodIndex: 0,
|
|
|
+ activeSubjectIndex: 0,
|
|
|
+ activeBlockIndex: 0,
|
|
|
+ isSearchSubject: false,
|
|
|
+ isSearchBlock: false,
|
|
|
+ isSearchPoint: false,
|
|
|
+ isAddVolume: false,
|
|
|
+ isEditVolume: false,
|
|
|
+ filterGrade: 'all',
|
|
|
+ filterSemester: 'all',
|
|
|
+ searchBlock: '',
|
|
|
+ searchPoint: '',
|
|
|
+ searchSubject: '',
|
|
|
+ editVolume: null,
|
|
|
+ hasModify: false,
|
|
|
+ preSelectVal: null
|
|
|
+ }
|
|
|
+ },
|
|
|
+ components: {
|
|
|
+ Tree, AddBlock, EmptyBox, Loading
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.initSchoolData()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ //获取当前学校学段科目等基本信息
|
|
|
+ initSchoolData() {
|
|
|
+ this.$api.syllabus.GetSchoolInfo(this.schoolInfo).then(res => {
|
|
|
+ if (!res.error && res.result.data.length) {
|
|
|
+ this.originSchoolData = res.result.data[0] //默认选择第一个
|
|
|
+ this.originData = res.result.data[0] //默认选择第一个
|
|
|
+ this.periodList = this.originData.period
|
|
|
+ //this.currentParams.schoolCode = this.originData.schoolCode
|
|
|
+ //this.currentParams.periodCode = this.originData.period[0].periodCode
|
|
|
+ this.currentPeriod = 0 //默认选择第一个学段
|
|
|
+ this.onPeriodChange(0)
|
|
|
+ } else {
|
|
|
+ this.$Message.warning("暂无学段数据")
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //根据科目获取所有知识块信息
|
|
|
+ getVolumesData() {
|
|
|
+ let that = this
|
|
|
+ this.$api.knowledge.GetSchoolBlocks({ PointParams: this.currentParams }).then(res => {
|
|
|
+ if (!res.error && res.result.data) {
|
|
|
+ let list = res.result.data
|
|
|
+ this.blockList = list
|
|
|
+ this.originBlockList = list
|
|
|
+ this.handleBlockTap(0, list.length ? list[0] : null)
|
|
|
+ setTimeout(function () {
|
|
|
+ that.isLoadVolumes = false
|
|
|
+ }, 1000)
|
|
|
+
|
|
|
+ } else {
|
|
|
+ this.$Message.warning("获取数据失败")
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ //根据知识块CODE来获取对应树形课纲数据
|
|
|
+ getTreeByVolume(volumeCode) {
|
|
|
+ let that = this
|
|
|
+ this.$api.knowledge.GetTreeByVolume({ volumeCode: volumeCode }).then(res => {
|
|
|
+ if (!res.error && res.result.data) {
|
|
|
+ this.treeData = res.result.data
|
|
|
+ setTimeout(function () {
|
|
|
+ that.isLoadPoints = false
|
|
|
+ }, 1000)
|
|
|
+ } else {
|
|
|
+ this.$Message.warning("获取数据失败")
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ //校本课纲与个人课纲切换
|
|
|
+ handleTabClick(index) {
|
|
|
+ this.tabIndex = index
|
|
|
+ },
|
|
|
+
|
|
|
+ //学段切换处理
|
|
|
+ onPeriodChange(index) {
|
|
|
+ this.preSelectVal = this.$refs.periodSelect.value
|
|
|
+ if (this.hasModify) {
|
|
|
+ this.handleConfirmSave({}, '3')
|
|
|
+ } else {
|
|
|
+ let that = this
|
|
|
+ this.isLoadSubject = true
|
|
|
+ this.activePeriodIndex = index
|
|
|
+ //this.currentParams.periodCode = this.originData.period[index].periodCode
|
|
|
+ this.subjectList = this.periodList[index].subjects //切换学段后更新 科目 列表
|
|
|
+ this.originSubjectList = this.periodList[index].subjects // 筛选科目源数据
|
|
|
+ this.gradeList = this.periodList[index].grades //切换学段后更新 年级 列表
|
|
|
+ this.semesterList = this.periodList[index].semesters //切换学段后更新 学期 列表
|
|
|
+ this.handleSubjectTap(0)
|
|
|
+ setTimeout(function () {
|
|
|
+ that.isLoadSubject = false
|
|
|
+ }, 1000)
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ //科目点击事件
|
|
|
+ handleSubjectTap(index) {
|
|
|
+ if (this.hasModify) {
|
|
|
+ this.$Modal.confirm({
|
|
|
+ title: '修改提示',
|
|
|
+ content: '<p>您有未保存的课纲,将会丢失所有更改,确认放弃修改?</p>',
|
|
|
+ okText: '确认',
|
|
|
+ cancelText: '取消',
|
|
|
+ onOk: () => {
|
|
|
+ this.hasModify = false
|
|
|
+ this.isLoadVolumes = true
|
|
|
+ this.currentSubject = index;
|
|
|
+ this.currentParams.subjectCode = this.subjectList[index].subjectCode
|
|
|
+ this.activeSubjectIndex = index
|
|
|
+ this.getVolumesData()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.isLoadVolumes = true
|
|
|
+ this.currentSubject = index;
|
|
|
+ this.currentParams.subjectCode = this.subjectList[index].subjectCode
|
|
|
+ this.activeSubjectIndex = index
|
|
|
+ this.getVolumesData()
|
|
|
+
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ //知识块点击事件
|
|
|
+ handleBlockTap(index, item) {
|
|
|
+ let that = this
|
|
|
+ this.activeBlockIndex = index
|
|
|
+ this.currentBlock = item
|
|
|
+ this.isLoadPoints = true
|
|
|
+ setTimeout(function () {
|
|
|
+ that.pointList = item ? item.points : []
|
|
|
+ that.isLoadPoints = false
|
|
|
+ }, 1000)
|
|
|
+ },
|
|
|
+
|
|
|
+ //添加知识块完成
|
|
|
+ onFinishAddVolume(val) {
|
|
|
+ if (val) {
|
|
|
+ let isExist = this.blockList.filter(item => item.id === val).length //判断列表是否已存在该学期下的知识块,有则更新,无则添加
|
|
|
+ if (isExist) {
|
|
|
+ this.$Message.success("知识块已存在,已为您更新数据")
|
|
|
+ } else {
|
|
|
+ this.$Message.success("添加新知识块成功")
|
|
|
+ }
|
|
|
+ this.handleSubjectTap(this.currentSubject); //获取最新知识块数据
|
|
|
+
|
|
|
+ }
|
|
|
+ this.isAddVolume = false //关闭窗口
|
|
|
+ },
|
|
|
+
|
|
|
+ // 删除知识块事件
|
|
|
+ onDeleteVolume(data) {
|
|
|
+ data.status = 0
|
|
|
+ this.$Modal.confirm({
|
|
|
+ title: '删除科目',
|
|
|
+ content: '<p>确认删除该知识块?</p>',
|
|
|
+ okText: '确认',
|
|
|
+ cancelText: '取消',
|
|
|
+ onOk: () => {
|
|
|
+ this.$api.knowledge.DeleteVolume(data).then(res => {
|
|
|
+ if (res.result.data) {
|
|
|
+ this.blockList.splice(this.blockList.indexOf(data), 1)
|
|
|
+ this.$Message.success('删除成功')
|
|
|
+ this.handleBlockTap(0, this.blockList.length ? this.blockList[0] : null)
|
|
|
+ } else {
|
|
|
+ this.$Message.success('删除失败')
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ // 编辑知识块事件
|
|
|
+ onEditVolume(data) {
|
|
|
+ this.isAddVolume = true // 打开新增窗口
|
|
|
+ this.isEditVolume = true //设置成编辑状态
|
|
|
+ this.editVolume = data
|
|
|
+ },
|
|
|
+
|
|
|
+ //新增知识块事件
|
|
|
+ onAddVolume() {
|
|
|
+ this.isAddVolume = true
|
|
|
+ this.isEditVolume = false
|
|
|
+ this.editVolume = null
|
|
|
+ },
|
|
|
+
|
|
|
+ //搜索知识块输入框onchange事件
|
|
|
+ onSearchBlockChange() {
|
|
|
+ this.blockList = this.originBlockList.filter(item => item.name.indexOf(this.searchBlock) > -1);
|
|
|
+ },
|
|
|
+
|
|
|
+ //搜索知识点输入框onchange事件
|
|
|
+ onSearchPointChange() {
|
|
|
+ //this.blockList = this.originBlockList.filter(item => item.volumeName.indexOf(this.searchBlock) > -1);
|
|
|
+ },
|
|
|
+
|
|
|
+ //搜索科目输入框onchange事件
|
|
|
+ onSearchSubjectChange() {
|
|
|
+ this.subjectList = this.originSubjectList.filter(item => item.subjectName.indexOf(this.searchSubject) > -1);
|
|
|
+ this.handleSubjectTap(0)
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ },
|
|
|
+ }
|
|
|
+</script>
|
|
|
+
|
|
|
+<style>
|
|
|
+ .new-syllabus-header .ivu-select-single .ivu-select-selection,
|
|
|
+ .funnel-box .ivu-select-single .ivu-select-selection {
|
|
|
+ background: #605f5f;
|
|
|
+ color: #fbfbfb;
|
|
|
+ border: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ .new-syllabus-header .ivu-select-single .ivu-select-arrow,
|
|
|
+ .funnel-box .ivu-select-single .ivu-select-arrow {
|
|
|
+ color: #fbfbfb;
|
|
|
+ }
|
|
|
+
|
|
|
+ .ns-header .ivu-input {
|
|
|
+ background: #3c3c3c;
|
|
|
+ color: #fff;
|
|
|
+ border: none;
|
|
|
+ height: 36px;
|
|
|
+ margin-top: 7px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .ns-header .ivu-input-icon {
|
|
|
+ font-size: 24px;
|
|
|
+ color: #cfc7c7;
|
|
|
+ line-height: 50px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* 修改iview Modal样式 */
|
|
|
+
|
|
|
+ .add-volume-modal .ivu-modal-content {
|
|
|
+ background: #3c3c3c;
|
|
|
+ color: #fff;
|
|
|
+ font-family: '微軟正黑體', 'Heiti TC';
|
|
|
+ }
|
|
|
+
|
|
|
+ .add-volume-modal .ivu-modal-header {
|
|
|
+ border-bottom: none;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: bold;
|
|
|
+ padding: 25px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .add-volume-modal .modal-content {
|
|
|
+ padding: 10px 35px 30px 35px;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* 修改iview popper样式 */
|
|
|
+
|
|
|
+ .ns-col .ivu-poptip-inner {
|
|
|
+ background: #3c3c3c;
|
|
|
+ }
|
|
|
+
|
|
|
+ .ns-col .ivu-poptip-title:after {
|
|
|
+ background: #656565;
|
|
|
+ left: 16px;
|
|
|
+ right: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .ns-col .ivu-poptip-title-inner {
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+
|
|
|
+ .ns-col .ivu-poptip-popper[x-placement^=bottom] .ivu-poptip-arrow:after {
|
|
|
+ border-bottom-color: #494949;
|
|
|
+ }
|
|
|
+</style>
|