SystemManagement.vue 3.68 KB
<template>
  <div class="system-management">
    <!-- 页面标题 -->
    <div class="page-header">
      <h1>{{ activeTabLabel }}</h1>
    </div>

    <!-- 人员管理页面特殊处理:显示业务类型Tab -->
    <div v-if="activeTab == 'personnel'" class="personnel-management">
      <el-tabs v-model="businessTab" @tab-click="handleBusinessTabClick">
        <el-tab-pane label="常规业务" name="regular"></el-tab-pane>
        <el-tab-pane label="政企业务" name="enterprise" v-if="hasEnterprisePermission"></el-tab-pane>
      </el-tabs>

      <!-- 常规业务 -->
      <div v-if="businessTab == 'regular'">
        <el-card>
          <div class="card-content">
            <PersonnelManagement />
          </div>
        </el-card>
      </div>

      <!-- 政企业务 -->
      <div v-if="businessTab == 'enterprise' && hasEnterprisePermission">
        <el-card>
          <div class="card-content">
            <EnterprisePersonnelManagement />
          </div>
        </el-card>
      </div>
    </div>

    <!-- 商机管理配置 -->
    <div v-else-if="activeTab == 'tags'" class="opportunity-config">
      <el-tabs v-model="configTab" @tab-click="handleConfigTabClick">
        <el-tab-pane label="商机标签" name="tags"></el-tab-pane>
        <el-tab-pane label="商机关闭" name="reasons"></el-tab-pane>
      </el-tabs>

      <!-- 商机标签 -->
      <div v-if="configTab == 'tags'">
        <el-card>
          <div class="card-content">
            <TagManagement />
          </div>
        </el-card>
      </div>

      <!-- 商机关闭原因 -->
      <div v-if="configTab == 'reasons'">
        <el-card>
          <div class="card-content">
            <CloseReasonManagement />
          </div>
        </el-card>
      </div>
    </div>

    <!-- 账号管理 -->
    <div v-else-if="activeTab == 'accounts'">
      <el-card>
        <div class="card-content">
          <AccountManagement />
        </div>
      </el-card>
    </div>
  </div>
</template>

<script>
import { mapGetters } from 'vuex'
import PersonnelManagement from '@/components/system/PersonnelManagement.vue'
import EnterprisePersonnelManagement from '@/components/system/EnterprisePersonnelManagement.vue'
import TagManagement from '@/components/system/TagManagement.vue'
import CloseReasonManagement from '@/components/system/CloseReasonManagement.vue'
import AccountManagement from '@/components/system/AccountManagement.vue'

export default {
  name: 'SystemManagement',
  components: {
    PersonnelManagement,
    EnterprisePersonnelManagement,
    TagManagement,
    CloseReasonManagement,
    AccountManagement
  },
  props: {
    activeTab: {
      type: String,
      default: 'personnel'
    }
  },
  data() {
    return {
      businessTab: 'regular',
      configTab: 'tags'
    }
  },
  computed: {
    hasEnterprisePermission() {
      let accountInfo = JSON.parse(localStorage.getItem('accountInfo'))

      return !accountInfo.countyCode && !accountInfo.gridCode
    },
    activeTabLabel() {
      const tabLabels = {
        'personnel': '人员管理',
        'tags': '商机管理',
        'accounts': '账号管理'
      }
      return tabLabels[this.activeTab] || '系统管理'
    }
  },
  methods: {
    handleBusinessTabClick(tab) {
      this.businessTab = tab.name
    },
    handleConfigTabClick(tab) {
      this.configTab = tab.name
    }
  }
}
</script>

<style lang="scss" scoped>
.system-management {
  .page-header {
    margin-bottom: 24px;

    h1 {
      font-size: 24px;
      font-weight: 600;
      margin: 0;
      color: #303133;
    }
  }

  .personnel-management,
  .opportunity-config {
    .el-tabs {
      margin-bottom: 24px;
    }
  }

  .card-content {
    padding: 24px 0;
  }
}
</style>