Browse Source

feat: 运营机构与求职意向详情页

zhangying 10 months ago
parent
commit
4a6eb0808a

+ 1 - 0
vue/src/router/asyncModules/basesettings.ts

@@ -2,6 +2,7 @@ export default {
   'baseSettings/institution/index': () => import('@/views/baseSettings/institution/index.vue'),
   'baseSettings/institution/add': () => import('@/views/baseSettings/institution/edit.vue'),
   'baseSettings/institution/edit': () => import('@/views/baseSettings/institution/edit.vue'),
+  'baseSettings/institution/detail': () => import('@/views/baseSettings/institution/detail.vue'),
   'baseSettings/site/index': () => import('@/views/baseSettings/siteInfo/index.vue'),
   'baseSettings/site/add': () => import('@/views/baseSettings/siteInfo/edit.vue'),
   'baseSettings/site/edit': () => import('@/views/baseSettings/siteInfo/edit.vue'),

+ 1 - 0
vue/src/router/asyncModules/jobUserManager.ts

@@ -5,6 +5,7 @@ export default {
   'views/jobusermgr/jobhunt/index': () => import('@/views/jobUserManager/jobhunt/index.vue'),
   'views/jobusermgr/jobhunt/add': () => import('@/views/jobUserManager/jobhunt/edit.vue'),
   'views/jobusermgr/jobhunt/edit': () => import('@/views/jobUserManager/jobhunt/edit.vue'),
+  'views/jobusermgr/jobhunt/detail': () => import('@/views/jobUserManager/jobhunt/detail.vue'),
   'views/jobusermgr/jobhunt/recommend': () => import('@/views/jobUserManager/jobhunt/recommend.vue'),
   'views/jobusermgr/recommend/index': () => import('@/views/jobUserManager/recommend/index.vue'),
   'views/jobusermgr/recommendMgt/index': () => import('@/views/jobUserManager/recommendMgt/index.vue')

+ 90 - 0
vue/src/views/baseSettings/institution/detail.vue

@@ -0,0 +1,90 @@
+<template>
+  <div class="card-edit">
+    <a-divider orientation="left">运营机构基本信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="企业名称">{{ institutionInfo.companyName }}</a-descriptions-item>
+      <a-descriptions-item label="企业地址">{{ institutionInfo.companyAddress }}</a-descriptions-item>
+      <a-descriptions-item label="负责人姓名">{{ institutionInfo.fzrName }}</a-descriptions-item>
+      <a-descriptions-item label="负责人电话">{{ institutionInfo.fzrMobile }}</a-descriptions-item>
+      <a-descriptions-item label="法人姓名">{{ institutionInfo.frName }}</a-descriptions-item>
+      <a-descriptions-item label="法人电话">{{ institutionInfo.frMobile }}</a-descriptions-item>
+      <a-descriptions-item label="企业机构代码">{{ institutionInfo.companyCode }}</a-descriptions-item>
+    </a-descriptions>
+    <a-divider orientation="left">管理驿站 共计:{{ manageSiteList.length }}</a-divider>
+    <a-table :columns="manageSitesTabColumns" :data-source="manageSiteList" :scroll="{ x:'100%', y: 200 }"
+             bordered>
+    </a-table>
+    <a-divider orientation="left">其他信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item :span="3" label="企业简介">{{ institutionInfo.companyDesc }}</a-descriptions-item>
+      <a-descriptions-item :span="3" label="备注">{{ institutionInfo.remark }}</a-descriptions-item>
+    </a-descriptions>
+  </div>
+</template>
+
+<script setup lang="ts">
+import {onMounted, reactive, ref} from "vue";
+import {getInstitutionByID} from "@/api/baseSettings/institution";
+import {getListByInstitutionID} from "@/api/baseSettings/siteInfo";
+
+// 运营机构数据
+const institutionInfo = reactive({
+  companyName: "",
+  companyAddress: "",
+  fzrName: "",
+  fzrMobile: "",
+  frName: "",
+  frMobile: "",
+  companyCode: "",
+  companyDesc: "",
+  remark: "",
+})
+
+// 关联驿站表格定义
+const manageSitesTabColumns = [
+  {
+    title: '序号',
+    align: "center",
+    key: 'siteID',
+    customRender: item => `${pageParams.pageSize * (pageParams.pageIndex - 1) + item.index + 1}`
+  },
+  {title: '驿站名称', dataIndex: 'siteName', key: 'siteName', align: "center"},
+  {title: '驿站地址', dataIndex: 'detailAddress', key: 'detailAddress', align: "center"},
+];
+const pageParams = reactive({
+  pageIndex: 1,
+  pageSize: 10,
+  institutionID: ''
+});
+// 关联驿站数据
+const manageSiteList = ref<Array<any>>([])
+
+// 获取数据
+function loadData(id: string) {
+  getInstitutionByID(id).then((result: any) => {
+    Object.keys(institutionInfo).forEach((key: string) => {
+      institutionInfo[key] = result[key];
+    })
+    getManageSites(id)
+  });
+}
+
+// 获取关联驿站数据
+function getManageSites(id: string) {
+  pageParams.institutionID = id;
+  getListByInstitutionID(pageParams).then((result: any) => {
+    manageSiteList.value = result.list;
+  });
+}
+
+
+// 页面初始化
+onMounted(() => {
+  const id = history.state.params?.id;
+  loadData(id);
+})
+</script>
+
+<style scoped>
+
+</style>

+ 13 - 6
vue/src/views/baseSettings/institution/index.vue

@@ -48,6 +48,8 @@
         <template #bodyCell="{ column, text, record }">
           <template v-if="column.key === 'operation'">
             <div class="table-operation">
+              <a-button type="link" size="small" functioncode="T01010101" @click='onDetail(record.institutionID)'>查看
+              </a-button>
               <a-button type="link" size="small" functioncode="T01010103" @click='onEdit(record.institutionID)' >编辑</a-button>
               <a-button type="link" size="small" functioncode="T01010104" @click="onDel(record)" >删除</a-button>
             </div>
@@ -59,14 +61,14 @@
 </template>
 
 <script lang="ts">
-import {reactive, ref, computed, defineComponent, createVNode} from 'vue';
+import {computed, createVNode, defineComponent, reactive, ref} from 'vue';
 import {useTabsViewStore} from "@/store/modules/tabsView";
 import {DownOutlined, ExclamationCircleOutlined, UpOutlined} from '@ant-design/icons-vue';
-import type {FormInstance,TableColumnsType, TableProps} from 'ant-design-vue';
-import {getInstitutionList, delInstitution} from '@/api/baseSettings/institution';
+import type {FormInstance, TableColumnsType, TableProps} from 'ant-design-vue';
+import {message, Modal} from "ant-design-vue";
+import {delInstitution, getInstitutionList} from '@/api/baseSettings/institution';
 import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
 import {getPaginationTotalTitle} from "@/utils/common";
-import {message, Modal} from "ant-design-vue";
 
 export default defineComponent({
   name: 'InstitutionList',
@@ -98,7 +100,7 @@ export default defineComponent({
       {title: '管理驿站数量', dataIndex: 'siteCount', key: 'siteCount', width:100,align: "center",
         /*customRender:  ({record}) => record.resolveDate == null?"":dayjs(record.resolveDate).format('YYYY-MM-DD')*/
       },
-      {title: '操作', key: 'operation', fixed: 'right',width:100, align: "center"},
+      {title: '操作', key: 'operation', fixed: 'right', width: 150, align: "center"},
     ];
     const pagination = computed(() => ({
       total: formState.total,
@@ -170,6 +172,10 @@ export default defineComponent({
       tabsViewStore.addTabByPath('/baseSettings/institution/edit', {id:id,op:2});
     };
 
+    const onDetail = (id: string) => {
+      tabsViewStore.addTabByPath('/baseSettings/institution/detail', {id: id});
+    };
+
     return {
       formRef,
       searchParams,
@@ -183,7 +189,8 @@ export default defineComponent({
       onAdd,
       onEdit,
       onDel,
-      loadData
+      loadData,
+      onDetail
     };
   },
   created() {

+ 61 - 0
vue/src/views/jobUserManager/jobhunt/detail.vue

@@ -0,0 +1,61 @@
+<template>
+  <div class="card-edit">
+    <a-divider orientation="left">求职意向基本信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="姓名">{{ jobHuntInfo.jobUserName }}</a-descriptions-item>
+      <a-descriptions-item label="人才类型">{{ jobHuntInfo.jobUserTypeStr }}</a-descriptions-item>
+      <a-descriptions-item label="月薪要求">{{ jobHuntInfo.minSalary }} 至 {{ jobHuntInfo.maxSalary }}
+      </a-descriptions-item>
+      <a-descriptions-item label="工作年限">{{ jobHuntInfo.workYear }}</a-descriptions-item>
+      <a-descriptions-item label="求职类型">{{ jobHuntInfo.jobHuntTypeStr }}</a-descriptions-item>
+      <a-descriptions-item label="求职岗位">{{ jobHuntInfo.professionName }}</a-descriptions-item>
+      <a-descriptions-item label="希望工作地区">{{ jobHuntInfo.areaWork }}</a-descriptions-item>
+      <a-descriptions-item label="可到职日期">
+        {{ jobHuntInfo.inDate ? dayjs(jobHuntInfo.inDate).format('YYYY-MM-DD') : '' }}
+      </a-descriptions-item>
+    </a-descriptions>
+    <a-divider orientation="left">其他信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item :span="3" label="备注">{{ jobHuntInfo.otherDemand }}</a-descriptions-item>
+    </a-descriptions>
+  </div>
+</template>
+
+<script setup lang="ts">
+import {onMounted, reactive} from "vue";
+import {getJobHuntByID} from "@/api/jobUserManager/jobhunt";
+import dayjs from "dayjs";
+
+// 求职意向数据
+const jobHuntInfo = reactive({
+  jobUserName: "",
+  jobUserTypeStr: "",
+  minSalary: "",
+  maxSalary: "",
+  workYear: "",
+  jobHuntTypeStr: "",
+  professionName: "",
+  areaWork: "",
+  inDate: "",
+  otherDemand: "",
+})
+
+// 获取求职意向数据
+function loadData(id: string) {
+  getJobHuntByID(id).then((result: any) => {
+    Object.keys(jobHuntInfo).forEach(key => {
+      jobHuntInfo[key] = result[key];
+    })
+  });
+}
+
+// 页面初始化
+onMounted(() => {
+  const id = history.state.params?.id;
+  loadData(id);
+})
+</script>
+
+<style scoped>
+
+</style>

+ 12 - 5
vue/src/views/jobUserManager/jobhunt/index.vue

@@ -125,6 +125,8 @@
           </template>
           <template v-if="column.key === 'operation'">
             <div class="table-operation">
+              <a-button type="link" size="small" functioncode="T01030201" @click="onDetail(record.jobHuntID)">查看
+              </a-button>
               <a-button type="link" size="small" functioncode="T01030203" @click='onEdit(record.jobHuntID)'>编辑
               </a-button>
               <a-button type="link" size="small" functioncode="T01030204" @click="onDel(record)">删除</a-button>
@@ -140,15 +142,15 @@
 </template>
 
 <script lang="ts">
-import {reactive, ref, computed, defineComponent, createVNode} from 'vue';
-import type {FormInstance, TableColumnsType, TableProps, SelectProps} from 'ant-design-vue';
-import {getJobHuntList, delJobHunt} from '@/api/jobUserManager/jobhunt';
+import {computed, createVNode, defineComponent, reactive, ref} from 'vue';
+import type {FormInstance, SelectProps, TableColumnsType, TableProps} from 'ant-design-vue';
+import {message, Modal} from "ant-design-vue";
+import {delJobHunt, getJobHuntList} from '@/api/jobUserManager/jobhunt';
 import {getSysDictionaryList} from '@/api/system/dictionary';
 import {getPaginationTotalTitle} from '@/utils/common';
 import dayjs from 'dayjs';
 import BImportExcel from "@/components/basic/excel/importExcel/importExcel.vue";
 import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
-import {message, Modal} from "ant-design-vue";
 import {ExclamationCircleOutlined} from "@ant-design/icons-vue";
 import type {ImportProps} from "@/components/basic/excel/importExcel/ImportProps";
 import {useTabsViewStore} from "@/store/modules/tabsView";
@@ -208,7 +210,7 @@ export default defineComponent({
         }
       },
       {title: '推荐数量', key: 'recommendNum', align: "center"},
-      {title: '操作', key: 'operation', fixed: 'right', width: 170, align: "center"},
+      {title: '操作', key: 'operation', fixed: 'right', width: 220, align: "center"},
     ];
     const pagination = computed(() => ({
       total: formState.total,
@@ -323,6 +325,10 @@ export default defineComponent({
       tabsViewStore.addTabByPath('/jobusermgr/jobhunt/edit', {id: id});
     };
 
+    const onDetail = (id: string) => {
+      tabsViewStore.addTabByPath('/jobusermgr/jobhunt/detail', {id: id});
+    };
+
     const onRecommendCompanyPost = (item) => {
       recommendRef.value.show(item.professionID, item.professionName, item.jobHuntID, item.jobUserName, 0,
         item.parentProfessionID, item.cultureRank, item.workYear, item.minSalary, item.maxSalary,
@@ -379,6 +385,7 @@ export default defineComponent({
       getJobHuntTypeList,
       getJobUserTypeList,
       getIsAccomplishList,
+      onDetail
     };
   },
   created() {