Kaynağa Gözat

企业详情

Xiao_123 9 ay önce
ebeveyn
işleme
d5103a77a4

+ 25 - 0
src/api/menduner/system/enterprise/message/index.ts

@@ -51,5 +51,30 @@ export const EnterpriseApi = {
   // 导出门墩儿-企业信息 Excel
   exportEnterprise: async (params) => {
     return await request.download({ url: `/menduner/system/enterprise/export-excel`, params })
+  },
+
+  // 获得企业基本信息
+  getEnterpriseInfo: async (id: string) => {
+    return await request.get({ url: `/menduner/system/enterprise/get?id=${id}` })
+  },
+
+  // 获得企业工商信息
+  getEnterpriseBusinessInfo: async (id: string) => {
+    return await request.get({ url: `/menduner/system/enterprise-business/get?id=${id}` })
+  },
+
+  // 获得下级企业分页
+  getSubordinateEnterprisesPage: async (params) => {
+    return await request.get({ url: `/menduner/system/enterprise/page`, params })
+  },
+
+  // 获得企业岗位信息分页
+  getEnterprisePostPage: async (params) => {
+    return await request.get({ url: `/menduner/system/enterprise-post/page`, params })
+  },
+
+  // 获得企业登录用户分页
+  getEnterpriseUserPage: async (params) => {
+    return await request.get({ url: `/menduner/system/enterprise-user-bind/page`, params })
   }
 }

+ 18 - 0
src/router/modules/remaining.ts

@@ -458,6 +458,24 @@ const remainingRouter: AppRouteRecordRaw[] = [
       }
     ]
   },
+  {
+    path: '/enterprise',
+    component: Layout,
+    name: 'EnterpriseCenter',
+    meta: { hidden: true },
+    children: [
+      {
+        path: 'enterprise/detail/:id',
+        name: 'EnterpriseDetail',
+        meta: {
+          title: '企业详情',
+          noCache: true,
+          hidden: true
+        },
+        component: () => import('@/views/menduner/system/enterprise/message/details/index.vue')
+      }
+    ]
+  },
   {
     path: '/order',
     component: Layout,

+ 1 - 0
src/utils/dict.ts

@@ -237,4 +237,5 @@ export enum DICT_TYPE {
   MENDUNER_TRADE_ORDER_TYPE = 'menduner_trade_order_type', // 订单类型
   MENDUNER_TRADE_ORDER_CANCEL_TYPE = 'menduner_trade_order_cancel_type', // 订单取消类型
   MENDUNER_USER_TYPE = 'menduner_user_type', // 用户类型
+  MENDUNER_SEX = 'menduner_sex', // 性别
 }

+ 43 - 0
src/views/menduner/system/enterprise/message/details/components/businessInfo.vue

@@ -0,0 +1,43 @@
+<template>
+  <div>
+    <el-descriptions class="margin-top" :column="2" border>
+      <!-- <template #extra>
+        <el-button type="primary">Operation</el-button>
+      </template> -->
+    <el-descriptions-item label="企业名称">{{ info.name }}</el-descriptions-item>
+    <el-descriptions-item label="统一社会信用代码">{{ info.code }}</el-descriptions-item>
+    <el-descriptions-item label="法定代表人">{{ info.representative }}</el-descriptions-item>
+    <el-descriptions-item label="成立时间">{{ formatDate(info.establishmentTime, 'YYYY-MM-DD') }}</el-descriptions-item>
+    <el-descriptions-item label="注册资金">{{ info.registeredCapital }}</el-descriptions-item>
+    <el-descriptions-item label="企业类型">
+      <dict-tag :type="DICT_TYPE.MENDUNER_ENTERPRISE_TYPE" :value="info.type" />
+    </el-descriptions-item>
+    <el-descriptions-item label="所属地区">{{ info.area }}</el-descriptions-item>
+    <el-descriptions-item label="核准日期">{{ info.approvalTime }}</el-descriptions-item>
+    <el-descriptions-item label="曾用名">{{ info.formerName }}</el-descriptions-item>
+    <el-descriptions-item label="注册机关">{{ info.registrationAuthority }}</el-descriptions-item>
+    <el-descriptions-item label="注册地址">{{ info.address }}</el-descriptions-item>
+    <el-descriptions-item label="经营状态">{{ info.businessStatus }}</el-descriptions-item>
+    <el-descriptions-item label="营业期限">{{ info.businessTerm }}</el-descriptions-item>
+    <!-- <el-descriptions-item label="经营范围">{{ info.businessScope }}</el-descriptions-item> -->
+  </el-descriptions>
+  </div>
+</template>
+
+<script setup>
+defineOptions({ name: 'EnterpriseDetailsBusinessInfo'})
+import { EnterpriseApi } from '@/api/menduner/system/enterprise/message'
+import { formatDate } from '@/utils/formatTime'
+import { DICT_TYPE } from '@/utils/dict'
+
+const props = defineProps({
+  id: String
+})
+
+const info = ref({})
+const getInfo = async () => {
+  const data = await EnterpriseApi.getEnterpriseBusinessInfo(props.id)
+  info.value = data
+}
+getInfo()
+</script>

+ 52 - 0
src/views/menduner/system/enterprise/message/details/components/info.vue

@@ -0,0 +1,52 @@
+<template>
+  <div>
+    <el-descriptions class="margin-top" :column="2" border>
+      <!-- <template #extra>
+        <el-button type="primary">Operation</el-button>
+      </template> -->
+    <el-descriptions-item label="企业LOGO">
+      <el-image v-if="info.logoUrl" style="width: 100px; height: 100px" :src="info.logoUrl" fit="contain" hide-on-click-modal :preview-src-list="[info.logoUrl]"/>
+    </el-descriptions-item>
+    <el-descriptions-item label="企业全称">{{ info.name }}</el-descriptions-item>
+    <el-descriptions-item label="企业别名">{{ info.anotherName }}</el-descriptions-item>
+    <el-descriptions-item label="企业官网">
+      <el-link :href="info.website" target="_blank" type="primary">{{ info.website }}</el-link>
+    </el-descriptions-item>
+    <el-descriptions-item label="开业时间">{{ formatDate(info.openTime, 'YYYY-MM-DD') }}</el-descriptions-item>
+    <el-descriptions-item label="联系人">{{ info.contact }}</el-descriptions-item>
+    <el-descriptions-item label="联系电话">{{ info.phone }}</el-descriptions-item>
+    <el-descriptions-item label="是否筹备">{{ info.prepare && info.prepare ? '是' : '否' }}</el-descriptions-item>
+    <el-descriptions-item label="企业规模">
+      <dict-tag :type="DICT_TYPE.MENDUNER_SCALE" :value="info.scale" />
+    </el-descriptions-item>
+    <el-descriptions-item label="所在行业">{{ info.industryName }}</el-descriptions-item>
+    <el-descriptions-item label="融资阶段">
+      <dict-tag :type="DICT_TYPE.MENDUNER_FINANCING_STATUS" :value="info.financingStatus" />
+    </el-descriptions-item>
+    <el-descriptions-item label="企业标签">
+      <el-tag type="primary" v-for="k in info.tagList" :key="k" class="m-r-5px">{{ k }}</el-tag>
+    </el-descriptions-item>
+    <!-- <el-descriptions-item label="福利标签">
+      <el-tag type="primary" v-for="k in info.welfareList" :key="k" class="m-r-5px">{{ k }}</el-tag>
+    </el-descriptions-item> -->
+  </el-descriptions>
+  </div>
+</template>
+
+<script setup>
+defineOptions({ name: 'EnterpriseDetailsInfo'})
+import { EnterpriseApi } from '@/api/menduner/system/enterprise/message'
+import { formatDate } from '@/utils/formatTime'
+import { DICT_TYPE } from '@/utils/dict'
+
+const props = defineProps({
+  id: String
+})
+
+const info = ref({})
+const getInfo = async () => {
+  const data = await EnterpriseApi.getEnterpriseInfo(props.id)
+  info.value = data
+}
+getInfo()
+</script>

+ 59 - 0
src/views/menduner/system/enterprise/message/details/components/post.vue

@@ -0,0 +1,59 @@
+<template>
+  <el-table v-loading="loading" :data="tableData" :stripe="true" class="m-t-20px">
+    <el-table-column label="岗位中文名" align="center" prop="nameCn" />
+    <el-table-column label="岗位英文名" align="center" prop="nameEn" />
+    <el-table-column label="排序" align="center" prop="sort" />
+    <el-table-column label="是否启用" align="center" prop="status">
+      <template #default="scope">
+        <dict-tag :type="DICT_TYPE.MENDUNER_STATUS" :value="scope.row.status" />
+      </template>
+    </el-table-column>
+    <el-table-column label="备注" align="center" prop="remark" />
+    <el-table-column
+      label="创建时间"
+      align="center"
+      prop="createTime"
+      :formatter="dateFormatter"
+      width="180px"
+    />
+  </el-table>
+
+  <Pagination
+    :total="total"
+    v-model:page="queryParams.pageNo"
+    v-model:limit="queryParams.pageSize"
+    @pagination="getList"
+  />
+</template>
+
+<script setup>
+defineOptions({ name: 'EnterprisePostManagement'})
+import { EnterpriseApi } from '@/api/menduner/system/enterprise/message'
+import { DICT_TYPE } from '@/utils/dict'
+import { dateFormatter } from '@/utils/formatTime'
+
+const props = defineProps({
+  id: String
+})
+
+const loading = ref(false)
+const tableData = ref([])
+const total = ref(0)
+const queryParams = reactive({
+  pageNo: 1,
+  pageSize: 10,
+  enterpriseId: props.id
+})
+
+const getList = async () => {
+  loading.value = true
+  try {
+    const data = await EnterpriseApi.getEnterprisePostPage(queryParams)
+    tableData.value = data.list
+    total.value = data.total
+  } finally {
+    loading.value = false
+  }
+}
+getList()
+</script>

+ 65 - 0
src/views/menduner/system/enterprise/message/details/components/subordinateEnterprises.vue

@@ -0,0 +1,65 @@
+<template>
+  <el-table v-loading="loading" :data="tableData" :stripe="true" class="m-t-20px">
+    <el-table-column label="企业全称" align="center" prop="name" />
+    <el-table-column label="企业别称" align="center" prop="anotherName" />
+    <el-table-column label="联系人" align="center" prop="contact" />
+    <el-table-column label="联系电话" align="center" prop="phone" />
+    <el-table-column label="所在行业" align="center" prop="industryName" />
+    <el-table-column label="融资阶段" align="center" prop="financingStatus">
+      <template #default="scope">
+        <dict-tag :type="DICT_TYPE.MENDUNER_FINANCING_STATUS" :value="scope.row.financingStatus" />
+      </template>
+    </el-table-column>
+    <el-table-column label="人员规模" align="center" prop="scale">
+      <template #default="scope">
+        <dict-tag :type="DICT_TYPE.MENDUNER_SCALE" :value="scope.row.scale" />
+      </template>
+    </el-table-column>
+    <el-table-column
+      label="创建时间"
+      align="center"
+      prop="createTime"
+      :formatter="dateFormatter"
+      width="180px"
+    />
+  </el-table>
+
+  <Pagination
+    :total="total"
+    v-model:page="queryParams.pageNo"
+    v-model:limit="queryParams.pageSize"
+    @pagination="getList"
+  />
+</template>
+
+<script setup>
+defineOptions({ name: 'SubordinateEnterprises'})
+import { EnterpriseApi } from '@/api/menduner/system/enterprise/message'
+import { DICT_TYPE } from '@/utils/dict'
+import { dateFormatter } from '@/utils/formatTime'
+
+const props = defineProps({
+  id: String
+})
+
+const loading = ref(false)
+const tableData = ref([])
+const total = ref(0)
+const queryParams = reactive({
+  pageNo: 1,
+  pageSize: 10,
+  parentId: props.id
+})
+
+const getList = async () => {
+  loading.value = true
+  try {
+    const data = await EnterpriseApi.getSubordinateEnterprisesPage(queryParams)
+    tableData.value = data.list
+    total.value = data.total
+  } finally {
+    loading.value = false
+  }
+}
+getList()
+</script>

+ 71 - 0
src/views/menduner/system/enterprise/message/details/components/user.vue

@@ -0,0 +1,71 @@
+<template>
+  <el-table v-loading="loading" :data="tableData" :stripe="true" class="m-t-20px">
+    <el-table-column label="用户名" align="center" prop="name" />
+    <el-table-column label="联系电话" align="center" prop="phone" />
+    <el-table-column label="邮箱" align="center" prop="email" />
+    <el-table-column label="性别" align="center" prop="sex">
+      <template #default="scope">
+        <dict-tag :type="DICT_TYPE.MENDUNER_SEX" :value="scope.row.sex" />
+      </template>
+    </el-table-column>
+    <el-table-column label="用户类型" align="center" prop="userType">
+      <template #default="scope">
+        {{ scope.row.userType === '1' ? '管理员': '普通用户' }}
+      </template>
+    </el-table-column>
+    <el-table-column label="最后登录IP" align="center" prop="loginIp" />
+    <el-table-column
+      label="最后登录时间"
+      align="center"
+      prop="loginDate"
+      :formatter="dateFormatter"
+      width="180px"
+    />
+    <el-table-column
+      label="创建时间"
+      align="center"
+      prop="createTime"
+      :formatter="dateFormatter"
+      width="180px"
+    />
+  </el-table>
+
+  <Pagination
+    :total="total"
+    v-model:page="queryParams.pageNo"
+    v-model:limit="queryParams.pageSize"
+    @pagination="getList"
+  />
+</template>
+
+<script setup>
+defineOptions({ name: 'EnterpriseUserList'})
+import { EnterpriseApi } from '@/api/menduner/system/enterprise/message'
+import { DICT_TYPE } from '@/utils/dict'
+import { dateFormatter } from '@/utils/formatTime'
+
+const props = defineProps({
+  id: String
+})
+
+const loading = ref(false)
+const tableData = ref([])
+const total = ref(0)
+const queryParams = reactive({
+  pageNo: 1,
+  pageSize: 10,
+  enterpriseId: props.id
+})
+
+const getList = async () => {
+  loading.value = true
+  try {
+    const data = await EnterpriseApi.getEnterpriseUserPage(queryParams)
+    tableData.value = data.list
+    total.value = data.total
+  } finally {
+    loading.value = false
+  }
+}
+getList()
+</script>

+ 64 - 0
src/views/menduner/system/enterprise/message/details/index.vue

@@ -0,0 +1,64 @@
+<template>
+  <div>
+    <el-row :gutter="10">
+      <el-col :span="12">
+        <el-card shadow="never">
+          <template #header>
+            <CardTitle title="企业详情" />
+          </template>
+          <Info :id="id"/>
+        </el-card>
+      </el-col>
+      <el-col :span="12">
+        <el-card shadow="never">
+          <template #header>
+            <CardTitle title="企业工商信息" />
+          </template>
+          <Business :id="id" />
+        </el-card>
+      </el-col>
+    </el-row>
+
+    <el-row class="m-t-20px">
+      <el-col :span="24">
+        <el-card shadow="never">
+          <el-tabs>
+            <el-tab-pane label="下级企业">
+              <SubordinateEnterprises :id="id" />
+            </el-tab-pane>
+            <el-tab-pane label="岗位管理">
+              <EnterprisePost :id="id" />
+            </el-tab-pane>
+            <el-tab-pane label="企业用户">
+              <EnterpriseUser :id="id" />
+            </el-tab-pane>
+          </el-tabs>
+        </el-card>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script setup>
+defineOptions({ name: 'EnterpriseDetails'})
+import { useTagsViewStore } from '@/store/modules/tagsView'
+import { ElMessage } from 'element-plus'
+import Info from './components/info.vue'
+import Business from './components/businessInfo.vue'
+import SubordinateEnterprises from './components/subordinateEnterprises.vue'
+import EnterprisePost from './components/post.vue'
+import EnterpriseUser from './components/user.vue'
+
+/** 初始化 */
+const { currentRoute } = useRouter() // 路由
+const { delView } = useTagsViewStore() // 视图操作
+const route = useRoute()
+const id = route.params.id
+onMounted(() => {
+  if (!id) {
+    ElMessage.warning('参数错误,企业编号不能为空!')
+    delView(unref(currentRoute))
+    return
+  }
+})
+</script>

+ 17 - 34
src/views/menduner/system/enterprise/message/index.vue

@@ -84,26 +84,6 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="创建时间" prop="createTime" v-hasPermi="['menduner:system:enterprise:query']">
-        <el-date-picker
-          v-model="queryParams.createTime"
-          value-format="YYYY-MM-DD HH:mm:ss"
-          type="daterange"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-          :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="上级id" prop="parentId" v-hasPermi="['menduner:system:enterprise:query']">
-        <el-input
-          v-model="queryParams.parentId"
-          placeholder="请输入上级id"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
       <el-form-item>
         <el-button v-hasPermi="['menduner:system:enterprise:query']" @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
         <el-button v-hasPermi="['menduner:system:enterprise:query']" @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
@@ -130,15 +110,13 @@
 
   <!-- 列表 -->
   <ContentWrap>
-    <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
+    <!-- :show-overflow-tooltip="true" -->
+    <el-table v-loading="loading" :data="list" :stripe="true">
       <el-table-column label="id" align="center" prop="id" />
       <el-table-column label="企业全称" align="center" prop="name" />
       <el-table-column label="企业别称" align="center" prop="anotherName" />
-      <el-table-column label="企业官网" align="center" prop="website" />
-      <el-table-column label="公司简介" align="center" prop="introduce" />
-      <el-table-column label="联系人" align="center" prop="contacts" />
+      <el-table-column label="联系人" align="center" prop="contact" />
       <el-table-column label="联系电话" align="center" prop="phone" />
-      <el-table-column label="logo" align="center" prop="logoUrl" />
       <el-table-column label="所在行业" align="center" prop="industryId" />
       <el-table-column label="融资阶段" align="center" prop="financingStatus">
         <template #default="scope">
@@ -150,11 +128,6 @@
           <dict-tag :type="DICT_TYPE.MENDUNER_SCALE" :value="scope.row.scale" />
         </template>
       </el-table-column>
-      <el-table-column label="公司福利" align="center" prop="welfareList" />
-      <el-table-column label="公司相册" align="center" prop="albumList" />
-      <el-table-column label="上班时间" align="center" prop="workTime" />
-      <el-table-column label="发展历程" align="center" prop="developHistory" />
-      <el-table-column label="获得荣誉" align="center" prop="receivedHonors" />
       <el-table-column
         label="创建时间"
         align="center"
@@ -162,9 +135,15 @@
         :formatter="dateFormatter"
         width="180px"
       />
-      <el-table-column label="上级id" align="center" prop="parentId" />
       <el-table-column label="操作" align="center">
         <template #default="scope">
+          <el-button
+            link
+            type="primary"
+            @click="openDetail(scope.row.id)"
+          >
+            详情
+          </el-button>
           <el-button
             link
             type="primary"
@@ -222,9 +201,7 @@ const queryParams = reactive({
   phone: undefined,
   industryId: undefined,
   financingStatus: undefined,
-  scale: undefined,
-  createTime: '',
-  parentId: undefined
+  scale: undefined
 })
 const queryFormRef = ref() // 搜索的表单
 const exportLoading = ref(false) // 导出的加载中
@@ -253,6 +230,12 @@ const resetQuery = () => {
   handleQuery()
 }
 
+/** 打开企业详情 */
+const { push } = useRouter()
+const openDetail = (id: string) => {
+  push({ name: 'EnterpriseDetail', params: { id } })
+}
+
 /** 添加/修改操作 */
 const formRef = ref()
 const openForm = (type: string, id?: number) => {