Newer
Older
smartwell_front / src / components / TableContainer / configColumnsDialog.vue
liyaguang 3 days ago 3 KB 细节修复
<script lang="ts" setup name="EditArea">
import type { FormRules } from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
// import CircularJSON from 'circular-json'
const emits = defineEmits(['confirm'])
const dataFormRef = ref()
const dialogFormVisible = ref(false) // 对话框是否显示
const checkAllList = ref<any[]>()
const localTitel = ref()
const checkList = ref<string[]>([])
const initDialog = (data: any) => {
  console.log(data, '1111')
  checkAllList.value = data.columns
  localTitel.value = data.title

  // 设置默认选中
  if (localStorage.getItem(localTitel.value)) {
    const data = JSON.parse(localStorage.getItem(localTitel.value) as string)
    checkList.value = data.map((item: any) => item.text)
  }
  else {
    // checkList.value = data.columns.filter((item: any) => item.isRequired).map((item: any) => item.text)
    checkList.value = data.columns.filter((item: any) => item.isRequired !== false).map((item: any) => item.text)
  }
  dialogFormVisible.value = true
}
defineExpose({
  initDialog,
})

// 保存数据
const saveData = () => {
  if (checkList.value.length < 4) {
    ElMessage.warning('最少选择4列数据')
    return
  }
  dialogFormVisible.value = false
  emits('confirm', checkAllList.value?.filter((item: any) => checkList.value.includes(item.text)))
}
const cancel = () => {
  dialogFormVisible.value = false
}

// 回复默认
const reset = () => {
  ElMessageBox.confirm(
    '确认恢复默认展示列?',
    '提示',
    {
      confirmButtonText: '确认',
      cancelButtonText: '取消',
      type: 'warning',
    }
  ).then(() => {
    window.localStorage.removeItem(localTitel.value)
    emits('confirm', checkAllList.value?.filter((item: any) => item.isRequired !== false))
    dialogFormVisible.value = false

  })
}
</script>

<template>
  <el-dialog v-model="dialogFormVisible" title="配置列" append-to-body width="35%">
    <template #header>
      <span class="header-container">
        <span>配置列</span>
        <el-icon class="icon" @click="reset">
          <el-tooltip class="box-item" effect="dark" content="恢复默认" placement="top">
            <!-- <Refresh /> -->
            <svg-icon name="reset" />
          </el-tooltip>
        </el-icon>
      </span>
    </template>
    <el-form ref="dataFormRef" :model="{}" label-position="right" label-width="80px">
      <el-row :gutter="24">
        <el-col :span="24">
          <el-form-item label="配置列:" prop="config">
            <el-checkbox-group v-model="checkList" :min="4">
              <el-checkbox v-for="item in checkAllList" :key="item" :label="item.text" :value="item.text" />
            </el-checkbox-group>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
    <template #footer>
      <div class="dialog-footer">
        <el-button type="primary" @click="saveData">
          保存
        </el-button>
        <el-button @click="cancel">
          取消
        </el-button>
      </div>
    </template>
  </el-dialog>
</template>

<style lang="scss" scoped>
.el-dialog {
  width: 700px;
}

.el-select {
  width: 100%;
}
</style>

<style lang="scss" scoped>
.header-container {
  display: flex;
  align-items: center;

  .icon {
    margin-left: 10px;

    &:hover {
      cursor: pointer;
      color: #0d76d4;
    }
  }
}
</style>