Commit 6df392a6 authored by renjintao's avatar renjintao

部门管理 export,treegrid,org,getalldepartment ......

parent 06d2afa4
<template>
<div class="treeTbale">
<div class="treeTbale">
<div class="table-tools">
<div class="table-search">
<slot name="easySearch"></slot>
......@@ -14,36 +14,22 @@
<table>
<thead>
<tr>
<th v-for="(column,index) in cloneColumns" :key="index">
<th v-for="(column,index) in cloneColumns" :key="index" v-if="column.hide!=true">
<label v-if="column.type === 'selection'">
<input type="checkbox" v-model="checks" @click="handleCheckAll" />全选
</label>
<label v-else>
{{ renderHeader(column, index) }}
<span class="ivu-table-sort" v-if="column.sortable">
<Icon
type="arrow-up-b"
:class="{on: column._sortType === 'asc'}"
@click.native="handleSort(index, 'asc')"
/>
<Icon
type="arrow-down-b"
:class="{on: column._sortType === 'desc'}"
@click.native="handleSort(index, 'desc')"
/>
<Icon type="arrow-up-b" :class="{on: column._sortType === 'asc'}" @click.native="handleSort(index, 'asc')" />
<Icon type="arrow-down-b" :class="{on: column._sortType === 'desc'}" @click.native="handleSort(index, 'desc')" />
</span>
</label>
</th>
</tr>
</thead>
<tbody>
<tr
v-for="(item,index) in initItems"
:key="item.id"
v-show="show(item)"
class="treetr"
:class="{'child-tr':item.parent}"
>
<tr v-for="(item,index) in initItems" :key="item.id" v-show="show(item)" class="treetr" :class="{'child-tr':item.parent}">
<td v-for="(column,snum) in columns" :key="column.key" :style="tdStyle(column)">
<!-- <label>
<input
......@@ -56,13 +42,7 @@
</label>-->
<!-- 图标 -->
<div v-if="column.type === 'icon'">
<i
class="icon-set"
size="small"
@click="RowClick(item,$event,index,action.text)"
v-for="action in (column.actions)"
:key="action.text"
>
<i class="icon-set" size="small" @click="RowClick(item,$event,index,action.text)" v-for="action in (column.actions)" :key="action.text">
<Icon :type="action.type" :title="action.text" :style="action.style" />
</i>
</div>
......@@ -72,78 +52,52 @@
<state v-if="column.code" :code="column.code" :value="item[column.key]" />
<!-- 操作 -->
<div v-if="column.type === 'action'" class="action" style="text-align:left;">
<op
v-for="action in (column.actions)"
:key="action.text"
@click="RowClick(item,$event,index,action.text)"
:type="action.type"
size="small"
style=" margin:0 5px;"
:class="action.text=='删除'? 'remove' : (action.text=='新增' ? 'add': (action.text=='编辑' ?'edit':''))"
v-show="(item.type=='3'&&action.text=='新增')||(item.children.length>0&&action.text=='删除')?false:true"
>{{action.text}}</op>
<op v-for="action in (column.actions)" :key="action.text" @click="RowClick(item,$event,index,action.text)" :type="action.type" size="small" style=" margin:0 5px;" :class="action.text=='删除'? 'remove' : (action.text=='新增' ? 'add': (action.text=='编辑' ?'edit':''))" v-show="(item.type=='3'&&action.text=='新增')||(item.children.length>0&&action.text=='删除')?false:true">{{action.text}}</op>
</div>
<!-- 类型 -->
<div v-if="column.type === 'menuRender'" style="text-align:center;">
<Button
:ghost="item[column.key] ==0 ?false:true"
size="small"
:type="item[column.key] ==0 ? 'default' :item[column.key] == 1 ? 'info' :item[column.key] == 2?'error':'warning'"
>{{item[column.key] == 0 ? '子系统':item[column.key] == 1 ? '目录': item[column.key] == 2 ? '菜单' : '按钮'}}</Button>
<Button :ghost="item[column.key] ==0 ?false:true" size="small" :type="item[column.key] ==0 ? 'default' :item[column.key] == 1 ? 'info' :item[column.key] == 2?'error':'warning'">{{item[column.key] == 0 ? '子系统':item[column.key] == 1 ? '目录': item[column.key] == 2 ? '菜单' : '按钮'}}</Button>
</div>
<!-- 状态 -->
<div v-if="column.type === 'menuIsshow'" style="text-align:center;">
<Button
:ghost="item[column.key] == 1 ? true :false"
:disabled="item[column.key] == 1 ? false :true"
size="small"
:type="item[column.key] == 1 ? 'info' :'default'"
>{{item[column.key] == 1 ? '显示': '隐藏'}}</Button>
<Button :ghost="item[column.key] == 1 ? true :false" :disabled="item[column.key] == 1 ? false :true" size="small" :type="item[column.key] == 1 ? 'info' :'default'">{{item[column.key] == 1 ? '显示': '隐藏'}}</Button>
</div>
<!-- 打开方式 -->
<div v-if="column.type === 'menuTarget'">
<span
:style="item[column.key] == 0?'color:#006699':item[column.key] == 1?'color:black':''"
>{{item[column.key] == 0 ? '本页面': item[column.key] == 1?'新页面':''}}</span>
<span :style="item[column.key] == 0?'color:#006699':item[column.key] == 1?'color:black':''">{{item[column.key] == 0 ? '本页面': item[column.key] == 1?'新页面':''}}</span>
</div>
<!-- 菜单名称、排序、请求地址 -->
<label @click="toggle(index,item)" v-if="!column.type&&!column.code&&!column.render">
<span v-if="snum==iconRow()">
<i v-html="item.spaceHtml"></i>
<a v-if="item.children&&item.children.length>0">
<i
class="ivu-icon"
:class="{'ivu-icon-ios-arrow-forward':!item.expanded,'ivu-icon-ios-arrow-down':item.expanded }"
></i>
<i class="ivu-icon" :class="{'ivu-icon-ios-arrow-forward':!item.expanded,'ivu-icon-ios-arrow-down':item.expanded }"></i>
</a>
<i v-else class="ms-tree-space"></i>
</span>
{{renderBody(item,column) }}
</label>
<table-expand
v-if="column.render&&!column.type"
:row="item"
:column="column"
:index="snum"
:render="column.render"
></table-expand>
<table-expand v-if="column.render&&!column.type" :row="item" :column="column" :index="snum" :render="column.render"></table-expand>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</template>
<script>
import TableExpand from './expand'
export default {
name: 'treeGrid',
components: { TableExpand },
components: {
TableExpand
},
props: {
columns: Array,
items: {
type: Array,
default() {
default () {
return []
}
},
......@@ -164,9 +118,9 @@ export default {
},
computed: {
tableWidth() {
return this.tdsWidth > this.screenWidth && this.screenWidth > 0
? `${this.screenWidth}px`
: '100%'
return this.tdsWidth > this.screenWidth && this.screenWidth > 0 ?
`${this.screenWidth}px` :
'100%'
}
},
watch: {
......@@ -243,6 +197,9 @@ export default {
if (column.width) {
style['width'] = `${column.width}px`
}
if (column.hide == true) {
style['display'] = `none`
}
return style
},
......@@ -518,7 +475,9 @@ export default {
},
// 返回树形数据长度
Length(data) {
let { length } = data
let {
length
} = data
data.forEach((child) => {
if (child.children) {
length += this.Length(child.children)
......@@ -578,7 +537,9 @@ export default {
}
},
type(obj) {
const { toString } = Object.prototype
const {
toString
} = Object.prototype
const map = {
'[object Boolean]': 'boolean',
'[object Number]': 'number',
......@@ -599,51 +560,62 @@ export default {
}
}
</script>
<style lang="less">
.treeTbale {
overflow: 0 auto;
width: 100% !important;
.table-tools {
line-height: 40px;
.table-search {
float: left;
line-height: 40px;
min-width: 300px;
}
.btns {
float: right;
line-height: 40px;
}
tr:hover {
background: #f7f7f7;
}
}
.icon-set {
font-size: 17px;
margin-left: 5px;
display: inline-block;
}
}
.icon-set .ivu-icon {
.icon-set .ivu-icon {
cursor: pointer;
}
}
table {
border-spacing: 0;
border-collapse: collapse;
margin: 0 auto;
width: 100%;
th {
background: #f8f8f9;
}
td,
th {
border: #dcdee2 solid 1px;
line-height: 40px;
padding: 0 5px;
}
tr.treetr:hover td {
background: #f7f7f7;
}
.ms-tree-space {
position: relative;
top: 1px;
......
......@@ -428,6 +428,10 @@ export default {
cityName: '省市县',
creationTime: '创建时间',
upMent: '上级部门',
code:'部门编号',
location:'省市县',
parent_Id:'上级部门',
property:'属性',
},
instance: {
id: '主键',
......
......@@ -139,6 +139,42 @@ henq.treeToList = (tree) => {
treeToList(tree, null)
return list;
}
//省市县pacc转为list
henq.treeToList1 = (tree) => {
let list = [];
function treeToList1(data) {
data.map(u => {
if (u.children&&u.level!=1) {
treeToList1(u.children, u)
}
else if(u.children&&u.level==1)
{
list=list.concat(u.children);
}
})
}
treeToList1(tree, null)
return list;
}
//根据departId返出上级所有name
henq.getDepartAllName = (list,id) => {
let names = '';
function getDepartAllName(list,id) {
list.map(u => {
if(id==u.id)
{
names=u.name+"-"+names
if (u.parent_Id>0) {
getDepartAllName(list, u.parent_Id)
}
}
})
}
getDepartAllName(list,id)
return names.slice(0,names.length-1);
}
//导出pdf
henq.outPdf = (ele, fileName) => {
// document.head.innerHTML =
......
......@@ -4783,7 +4783,7 @@
"dependencies": {
"commander": {
"version": "2.14.1",
"resolved": "http://r.cnpmjs.org/commander/download/commander-2.14.1.tgz",
"resolved": "https://registry.npm.taobao.org/commander/download/commander-2.14.1.tgz?cache=0&sync_timestamp=1595168224685&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.14.1.tgz",
"integrity": "sha1-IjUSPjevjKPGXfRbAm29NXsBuao="
}
}
......@@ -5340,7 +5340,7 @@
},
"crc-32": {
"version": "1.2.0",
"resolved": "http://r.cnpmjs.org/crc-32/download/crc-32-1.2.0.tgz",
"resolved": "https://registry.npm.taobao.org/crc-32/download/crc-32-1.2.0.tgz",
"integrity": "sha1-yy224puIUI4y2d0OwWk+e0Ghggg=",
"requires": {
"exit-on-epipe": "~1.0.1",
......@@ -7127,7 +7127,7 @@
},
"exit-on-epipe": {
"version": "1.0.1",
"resolved": "http://r.cnpmjs.org/exit-on-epipe/download/exit-on-epipe-1.0.1.tgz",
"resolved": "https://registry.npm.taobao.org/exit-on-epipe/download/exit-on-epipe-1.0.1.tgz",
"integrity": "sha1-C92S6H1ShdJn2qgXHQ6wYVlolpI="
},
"expand-brackets": {
......@@ -7814,7 +7814,7 @@
},
"frac": {
"version": "1.1.2",
"resolved": "http://r.cnpmjs.org/frac/download/frac-1.1.2.tgz",
"resolved": "https://registry.npm.taobao.org/frac/download/frac-1.1.2.tgz",
"integrity": "sha1-PXT39keMiKG1AgMG10fcYxPHTQs="
},
"fragment-cache": {
......@@ -14419,7 +14419,7 @@
},
"printj": {
"version": "1.1.2",
"resolved": "http://r.cnpmjs.org/printj/download/printj-1.1.2.tgz",
"resolved": "https://registry.npm.taobao.org/printj/download/printj-1.1.2.tgz",
"integrity": "sha1-2Q3rKXWoufYA+zoclOP0xTx4oiI="
},
"private": {
......@@ -15893,7 +15893,7 @@
},
"script-loader": {
"version": "0.7.2",
"resolved": "http://r.cnpmjs.org/script-loader/download/script-loader-0.7.2.tgz",
"resolved": "https://registry.npm.taobao.org/script-loader/download/script-loader-0.7.2.tgz",
"integrity": "sha1-IBbbb4byX1z1baOJFdgzeLsWa6c=",
"dev": true,
"requires": {
......@@ -16473,7 +16473,7 @@
},
"ssf": {
"version": "0.10.3",
"resolved": "http://r.cnpmjs.org/ssf/download/ssf-0.10.3.tgz",
"resolved": "https://registry.npm.taobao.org/ssf/download/ssf-0.10.3.tgz",
"integrity": "sha1-jq4fwpyQpVLnkhII+BiS1vd6yys=",
"requires": {
"frac": "~1.1.2"
......@@ -20196,7 +20196,7 @@
},
"wmf": {
"version": "1.0.2",
"resolved": "http://r.cnpmjs.org/wmf/download/wmf-1.0.2.tgz",
"resolved": "https://registry.npm.taobao.org/wmf/download/wmf-1.0.2.tgz",
"integrity": "sha1-fRnWIQcaCMK9xrfmiKnENSmMwto="
},
"word-wrap": {
......@@ -20315,7 +20315,7 @@
},
"xlsx": {
"version": "0.15.6",
"resolved": "http://r.cnpmjs.org/xlsx/download/xlsx-0.15.6.tgz",
"resolved": "https://registry.npm.taobao.org/xlsx/download/xlsx-0.15.6.tgz?cache=0&sync_timestamp=1597272342311&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxlsx%2Fdownload%2Fxlsx-0.15.6.tgz",
"integrity": "sha1-Rh+EHW2eoag3XizSRr8jrs4IodU=",
"requires": {
"adler-32": "~1.2.0",
......@@ -20330,7 +20330,7 @@
"dependencies": {
"commander": {
"version": "2.17.1",
"resolved": "http://r.cnpmjs.org/commander/download/commander-2.17.1.tgz",
"resolved": "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1595168224685&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz",
"integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78="
}
}
......
<template>
<div id="department">
<div id="department">
<div class="tr">
<Button type="primary" @click="add()" class="mb10">新增部门</Button>
<Button>导入</Button>
<Button @click="export2Excel">导出</Button>
<RadioGroup v-model="img" type="button" size="small">
<Radio :label="1"><Icon type="ios-apps" /></Radio>
<Radio :label="0"><Icon type="md-git-merge" /></Radio>
<Radio :label="1">
<Icon type="ios-apps" />
</Radio>
<Radio :label="0">
<Icon type="md-git-merge" />
</Radio>
</RadioGroup>
<Cascader :data="citys" v-show="false"></Cascader>
</div>
<div class="main">
<TreeGrid v-if="img==1" :columns="columns" :items="treeData"></TreeGrid>
<Org v-else :data="treeData" @nodeChange="nodeChange"/>
<Org v-else :datas="treeData" @nodeChange="nodeChange" />
</div>
<Modal v-model="addModal" title="新增部门" width="800" footer-hide>
<Add @on-close="cancel" @on-ok="addOk" />
......@@ -20,14 +27,16 @@
<Modal v-model="editModal" title="编辑" width="800" footer-hide>
<Edit :row="rowData" @on-close="cancel" @on-ok="addOk" />
</Modal>
</div>
</div>
</template>
<script>
import Api from "./api";
import Add from "./add";
import AddRow from "./Addrow";
import Edit from "./edit";
import Org from "./org";
import citys from "@/libs/citys";
export default {
name: "list",
components: {
......@@ -60,87 +69,122 @@ export default {
rowdata: null,
aId: 0,
rowData: null,
columns: [
columns: [{
key: "parent_Id",
title: this.l("parent_Id"),
align: "left",
hide: true,
parentDepart: true,
import: true,
render: (h, params) => {
return h("span", {},
this.getParentDepart(params.row.parent_Id)
)
}
},
{
key: "name",
title: this.l("name"),
align: "left",
high: true
},
// {
// key: 'organizationType',
// title: this.l('organizationType'),
// align: 'left',
// easy: true,
// high: true
// },
},
{
key: "creationTime",
title: this.l("creationTime"),
key: "code",
title: this.l("code"),
align: "left",
},
{
key: "location",
title: this.l("location"),
align: "left",
easy: true,
high: true
location: true,
import: true,
render: (h, params) => {
return h("span", {},
this.getCity(params.row.location ? params.row.location : 0))
}
},
{
key: "property",
title: this.l("status"),
title: this.l("property"),
align: "left",
code: "department.property",
easy: true,
high: true
},
{
key: "creationTime",
title: this.l("creationTime"),
align: "left",
},
{
title: "操作",
key: "id",
key: "action",
align: "left",
render: (h, params) => {
let actions = [
h(
"op",
{
attrs: { oprate: "add" },
on: { click: () => this.addrow(params.row) }
"op", {
attrs: {
oprate: "add"
},
on: {
click: () => this.addrow(params.row)
}
},
"新增"
),
h(
"op",
{
attrs: { oprate: "edit" },
on: { click: () => this.edit(params.row) }
"op", {
attrs: {
oprate: "edit"
},
on: {
click: () => this.edit(params.row)
}
},
"编辑"
),
h(
"op",
{
attrs: { oprate: "delete" },
on: { click: () => this.remove(params.row.id) }
"op", {
attrs: {
oprate: "delete"
},
on: {
click: () => this.remove(params.row.id)
}
},
"删除"
)
];
return h("div", { class: "action" }, actions);
return h("div", {
class: "action"
}, actions);
}
}
]
],
treeList: [],
citys: citys(),
cityDatas: [], //省市县在一起
};
},
async fetch({ store, params }) {
async fetch({
store,
params
}) {
await store.dispatch("loadDictionary"); // 加载数据字典
},
mounted() {
this.init();
this.formatCity();
},
methods: {
init() {
Api.getpaged().then(r => {
this.treeData = [];
this.treeList = r.result.items;
this.treeData = this.$u.toTree(
r.result.items,
0,
(u)=>{
u.label=u.name
(u) => {
u.label = u.name
},
"parent_Id"
);
......@@ -165,21 +209,21 @@ export default {
this.editModal = true;
this.rowData = row;
},
nodeChange(key,node){
if(key=="edit"){
nodeChange(key, node) {
if (key == "edit") {
this.edit(node);
}else if(key=="delete"){
} else if (key == "delete") {
this.$Modal.confirm({
title:"确认",
content:"确认要删除吗?",
onOk:()=>{
title: "确认",
content: "确认要删除吗?",
onOk: () => {
this.remove(node.id)
}
})
} else if(key=="add"){
if(node.id>0){
} else if (key == "add") {
if (node.id > 0) {
this.addrow(node)
}else{
} else {
this.add()
}
}
......@@ -187,7 +231,9 @@ export default {
remove(id) {
this.editModal = false;
this.deletelModal = true;
Api.delete({ id: id }).then(res => {
Api.delete({
id: id
}).then(res => {
if (res.result == 1) {
this.init(); //刷新列表:
this.$Message.info("删除成功!");
......@@ -212,18 +258,114 @@ export default {
l(key) {
let vkey = "DipartLocation" + "." + key;
return this.$t(vkey) || key;
},
//获取省市县信息
formatCity() {
let list = this.$u.clone(this.treeList);
let cityData = this.$u.clone(this.citys);
let temp = this.$u.treeToList1(cityData);
this.cityDatas = [];
temp.forEach(ele => {
let objTem = {
label: ele.__label.replace(/\s*/g, ""),
value: ele.__value
}
this.cityDatas.push(objTem)
})
},
//根据value获取当前cityname
getCity(val) {
let cities = this.$u.clone(this.cityDatas)
let label = "";
cities.forEach(ele => {
if (val == ele.value) {
label = ele.label
}
})
return label
},
//根据Id获取上级到本级的部门名称
getParentDepart(val) {
let departList = this.$u.clone(this.treeList)
return this.$u.getDepartAllName(departList, val)
},
//导出excel
export2Excel() {
//当前显示数据
let list = this.$u.clone(this.treeList)
const tHeader = []; // 设置Excel的表格第一行的标题
const filterVal = []; //list里对象的属性
var tempCol = [];
var tempCol1 = []; //省市县
var tempCol2 = []; //上级部门名称
var columnsCur = this.$u.clone(this.columns); //导出列标题信息griddata this.$refs.grid.columnsCur
columnsCur.forEach((el) => {
if ((el.hide && !el.import) || (!el.hide && el.key != "action") || (el.hide && el.import)) {
if (el.code) {
//tHeader.push(el.key + "DirName");
//filterVal.push(el.key + "DirName");
//tempCol.push({ key: el.key + "DirName", code: el.code }); //临时存放code数据字典的字段及对应的数据字典code
tempCol.push({
key: el.key,
code: el.code
}); //临时存放code数据字典的字段及对应的数据字典code
}
if (el.location) {
tempCol1.push({
key: el.key,
code: el.key
}); //临时存放省事县
}
if (el.parentDepart) {
tempCol2.push({
key: el.key,
code: el.key
}); //临时存放上级部门所有name
}
tHeader.push(this.l(el.key));
filterVal.push(el.key);
}
});
list.forEach((e) => {
//给导出数据增加数据字典对应的name
tempCol.forEach((ele) => {
e[ele.key] = this.$u.dirName(
this.$store.getters.dictionaryByKey(ele.code),
e[ele.key]
);
});
tempCol1.forEach((ele1) => {
e[ele1.key] = this.getCity(e[ele1.key]);
});
tempCol2.forEach((ele2) => {
e[ele2.key] = this.getParentDepart(e[ele2.key]);
});
});
let nowDate = this.$u.getNowTime(); //年月日时分秒yyyyMMddhhmmss
//获取导出数据结束
this.$u.outExcel(
"部门管理(" + nowDate + ")",
tHeader,
filterVal,
list
);
},
//导入excel
}
};
</script>
<style lang="less">
#department{
#department {
height: calc(100vh - 150px);
overflow: auto;
.tr{
.tr {
line-height: 50px;
}
.main{
.main {
height: 100%;
}
}
......
<template>
<Card shadow style="height:100%;width:100%;overflow:hidden; position: relative;">
<Card shadow style="height:100%;width:100%;overflow:hidden; position: relative;">
<div class="department-outer">
<div class="zoom-box">
<zoom-controller v-model="zoom" :min="20" :max="200"></zoom-controller>
......@@ -8,8 +8,9 @@
<org-view :data="rootData" :zoom-handled="zoomHandled" @on-menu-click="handleMenuClick"></org-view>
</div>
</div>
</Card>
</Card>
</template>
<script>
import OrgView from "@/components/department/org-view.vue";
import ZoomController from "@/components/department/zoom-controller.vue";
......@@ -26,7 +27,7 @@ export default {
ZoomController
},
props: {
data: {
datas: {
type: Array,
default: () => {
return [];
......@@ -63,11 +64,11 @@ export default {
return this.zoom / 100;
},
rootData() {
console.warn(this.data);
console.warn(this.datas);
var root = {
id: 0,
label: "根节点",
children: this.data
children: this.datas
};
return root;
}
......@@ -77,13 +78,16 @@ export default {
data.isRoot = true;
return data;
},
handleMenuClick({ data, key }) {
this.$emit("nodeChange",key,data)
handleMenuClick({
data,
key
}) {
this.$emit("nodeChange", key, data)
},
},
mounted() {
console.warn(this.data);
console.warn(this.datas);
}
};
</script>
......@@ -94,25 +98,30 @@ export default {
z-index: 66;
right: 10px;
}
.percent-100 {
width: 100%;
height: 100%;
}
.department-outer {
.percent-100;
overflow: hidden;
.tip-box {
position: absolute;
left: 20px;
top: 20px;
z-index: 12;
}
.zoom-box {
position: absolute;
right: 30px;
bottom: 30px;
z-index: 2;
}
.view-box {
position: absolute;
top: 0;
......@@ -121,21 +130,26 @@ export default {
right: 0;
z-index: 1;
cursor: move;
.org-tree-drag-wrapper {
width: 100%;
height: 100%;
}
.org-tree-wrapper {
display: inline-block;
position: absolute;
left: 50%;
top: 50%;
transition: transform 0.2s ease-out;
.org-tree-node-label {
box-shadow: 0px 2px 12px 0px rgba(5, 123, 241, 0.4);
border-radius: 4px;
.org-tree-node-label-inner {
padding: 0;
.custom-org-node {
padding: 14px 41px;
background: #0672dd;
......@@ -149,13 +163,16 @@ export default {
line-height: 20px;
transition: background 0.1s ease-in;
cursor: default;
&:hover {
background: #4194e7;
transition: background 0.1s ease-in;
}
&.has-children-label {
cursor: pointer;
}
.context-menu {
position: absolute;
right: -10px;
......@@ -168,13 +185,14 @@ export default {
}
}
}
.info-p {
height: 40px;
line-height: 40px;
margin-left: 20px;
span {
font-size: 13px;
}
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment