This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
nezha-nezha-fronted/nezha-fronted/src/components/common/elementSet.vue

133 lines
4.5 KiB
Vue
Raw Normal View History

<template>
<div class="pop-custom" :class="{'pop-custom-top' : tableClass || operationTrue}" v-clickoutside="esc">
<div class="pop-title">{{$t('overall.selectColumns')}}</div>
<div class="pop-box custom-labels">
2020-12-14 20:25:24 +08:00
<div style="height: 100%; overflow: auto;">
<!--NotSet 为true不可设置-->
<div
v-for="(item,index) in custom"
:key="index"
class="custom-label"
@click.stop="handler(item,index)"
:id="'element-set-el-'+index"
2020-09-08 11:18:18 +08:00
:class="{'custom-title orange-font':item.type == 'title','custom-label-disabled':!allowedAll&&!item.allowed && (index==0 || index == 1 || item.NotSet)}"
>
2020-09-10 17:00:32 +08:00
<i class="nz-icon nz-icon-check" v-if="!allowedAll&&!item.allowed&&(index==0||index==1||item.visibility=='disabled')"></i>
<i v-else class="nz-icon nz-icon-check" v-show="item.show"></i>
<span>{{item.label}}</span>
</div>
2020-09-08 11:18:18 +08:00
2020-12-14 20:25:24 +08:00
</div>
</div>
<div class="custom-bottom-btns">
<button v-if="isCancel" :id="tableId+'-element-set-none'" class="nz-btn nz-btn-size-small nz-btn-style-light is-cancel" type="button" @click.stop="batchHandler(false)">
2020-02-17 18:20:14 +08:00
<span class="top-tool-btn-txt">{{$t('overall.clear')}}</span>
</button>
<button v-if="!isCancel" :id="tableId+'-element-set-all'" class="nz-btn nz-btn-size-small nz-btn-style-light" type="button" @click.stop="batchHandler(true)">
<span class="top-tool-btn-txt">{{$t('overall.all')}}</span>
</button>
2020-02-17 18:20:14 +08:00
<div>
<button :id="tableId+'-element-set-esc'" class="nz-btn nz-btn-size-small nz-btn-style-light" type="button" @click.stop="esc">
<span class="top-tool-btn-txt">{{$t('overall.cancel')}}</span>
2020-02-17 18:20:14 +08:00
</button>
<button :id="tableId+'-element-set-save'" class="nz-btn nz-btn-size-small nz-btn-style-normal" type="button" @click.stop="save">
2020-02-17 18:20:14 +08:00
<span class="top-tool-btn-txt">{{$t('overall.save')}}</span>
</button>
</div>
</div>
</div>
</template>
<script>
export default {
2021-03-19 18:52:19 +08:00
props: {
customTableTitle: Array, // 自定义的title
originalTableTitle: Array, // 原始title
2021-04-14 18:35:42 +08:00
tableId: String,
2021-09-26 14:50:22 +08:00
allowedAll: { default: false },
tableClass: Boolean,
operationTrue: Boolean
},
2021-03-19 18:52:19 +08:00
data () {
return {
2021-03-19 18:52:19 +08:00
custom: []
}
},
2021-03-19 18:52:19 +08:00
created () {
2021-04-14 18:35:42 +08:00
const localStorageTitle = JSON.parse(localStorage.getItem('nz-tableTitle-' + localStorage.getItem('nz-username') + '-' + this.tableId))
2021-03-19 18:52:19 +08:00
if (localStorageTitle) {
2021-04-14 18:35:42 +08:00
localStorage.setItem('nz-tableTitle-' + localStorage.getItem('nz-username') + '-' + this.tableId, JSON.stringify(localStorageTitle))
}
},
watch: {
customTableTitle: {
immediate: true,
deep: true,
2021-03-19 18:52:19 +08:00
handler (n) {
this.custom = JSON.parse(JSON.stringify(n))
}
}
},
methods: {
2021-03-19 18:52:19 +08:00
// 悬浮点击空白隐藏
esc () {
this.$emit('close')
},
2021-03-19 18:52:19 +08:00
// 全选all true 或者全取消cancel false按钮
batchHandler (state) {
for (let index = 0; index < this.custom.length; index++) {
2021-03-19 18:52:19 +08:00
if (this.custom[index].type != 'title') {
2020-11-03 17:29:14 +08:00
if ((index == 0 || index == 1 || this.custom[index].NotSet)) {
2021-03-19 18:52:19 +08:00
this.custom[index].show = true
2020-11-03 17:29:14 +08:00
} else {
2021-03-19 18:52:19 +08:00
this.custom[index].show = state
2020-11-03 17:29:14 +08:00
}
}
}
},
2021-03-19 18:52:19 +08:00
// 单选
handler (val, index) {
if (!this.allowedAll && !val.allowed && (index == 0 || index == 1 || val.NotSet)) {
// this.custom[index].show = true;
} else {
2021-03-19 18:52:19 +08:00
this.custom[index].show = !this.custom[index].show
}
},
2021-03-19 18:52:19 +08:00
// 点击第二个cancel
save () {
if (this.tableId == 'assetTable') {
let customAssetLabel = false
this.custom.forEach(item => {
if (customAssetLabel) {
item.minWidth = item.label.length * 16 + 20
return
}
if (item.label === 'Label' && item.type == 'title') {
customAssetLabel = true
}
})
}
this.$emit('update', this.custom)
localStorage.setItem(
2021-04-14 18:35:42 +08:00
'nz-tableTitle-' + localStorage.getItem('nz-username') + '-' + this.tableId,
JSON.stringify(this.custom)
2021-03-19 18:52:19 +08:00
)
this.esc()
}
},
computed: {
2021-03-19 18:52:19 +08:00
// 点击all是否是全部取消选中true为是
isCancel () {
let isCancel = true
for (let i = 0; i < this.custom.length; i++) {
2021-03-19 18:52:19 +08:00
if (!this.custom[i].show && this.custom[i].type != 'title') {
isCancel = false
break
2020-02-17 18:20:14 +08:00
}
}
2021-03-19 18:52:19 +08:00
return isCancel
2020-02-17 18:20:14 +08:00
}
}
2021-03-19 18:52:19 +08:00
}
</script>