Przeglądaj źródła

fix: 岗位的查询与编辑的企业数据列表,改为实时查询

zhangying 9 miesięcy temu
rodzic
commit
a4f8df0743

+ 49 - 25
vue/src/views/companyService/post/edit.vue

@@ -5,14 +5,21 @@
       <a-row justify="start">
         <a-col flex="800px">
           <a-form-item label="企业名称" :label-col="{ span: 3}"
-                       name="companyID" :rules="[{ required: true, message: '请选择关联企业!' }]" >
-            <a-select :disabled="isEdit" ref="select" show-search optionFilterProp="label"
-                      v-model:value="dataModel.companyID" @change="companyChange">
-              <a-select-option v-for="item in companyList" :label="item.companyName" :value="item.companyID"
-                               :key="item.companyID">
-                <span>{{ item.companyName }}</span>
-              </a-select-option>
-            </a-select>
+                       name="companyID" :rules="[{ required: true, message: '请选择关联企业!' }]">
+            <a-auto-complete
+              :disabled="isEdit"
+              v-model:value="dataModel.companyName"
+              :options="companyList"
+              @search="selectCompanyList"
+              @change="companyChange"
+              :field-names="{
+                            value:'companyName',
+                          }"
+            >
+              <template #option="item">
+                <span v-html="formatStr(item.companyName,false)"></span>
+              </template>
+            </a-auto-complete>
           </a-form-item>
         </a-col>
         <a-col flex="530px">
@@ -29,7 +36,7 @@
                           }"
             >
               <template #option="item">
-                <span v-html="formatStr(item.professionName)"></span>({{ item.parentProfessionName }})
+                <span v-html="formatStr(item.professionName, true)"></span>({{ item.parentProfessionName }})
               </template>
             </a-auto-complete>
           </a-form-item>
@@ -307,8 +314,7 @@ import {message} from "ant-design-vue";
 import {useTabsViewStore} from '@/store/modules/tabsView';
 import BUploadFile from '@/components/file/uploadFile.vue';
 import {get} from '@/api/common';
-import {getInfo} from "@/api/account";
-import {getCompanyById} from "@/api/companyService/company";
+import {getList} from "@/api/companyService/company";
 import SelectLabel from "@/views/baseSettings/label/selectLabel.vue";
 import dayjs from "dayjs";
 import {getProfessionLikeList} from "@/api/jobUserManager/recommendMgt";
@@ -335,7 +341,7 @@ export default defineComponent(
       const cultureLevelList = ref<SelectProps['options']>();
       const workYearTypeList = ref<SelectProps['options']>();
       const jobHuntList = ref<SelectProps['options']>();
-      const companyList = ref<SelectProps['options']>();
+      const companyList = ref<Array<any>>([]);
       const postStatusList = [{name: '启用', value: 1}, {name: '停用', value: 0}];
       const trialStatusList = [{name: '是', value: true}, {name: '否', value: false}];
       const firstProfessionList = ref<CascaderProps['options']>([]);
@@ -469,10 +475,6 @@ export default defineComponent(
         jobHuntList.value = data;
       }
 
-      get('companyService/company/getList', {pageIndex: 1, pageSize: 9999}).then(result => {
-        companyList.value = result.list;
-      })
-
       const onClose = () => {
         tabsViewStore.closeCurrentTabByPath('/companyService/post/add');
         tabsViewStore.closeCurrentTabByPath('/companyService/post/edit');
@@ -568,12 +570,31 @@ export default defineComponent(
 
       // 企业名称选择变更事件
       function companyChange(value: any) {
-        getInfo().then((loginUserInfo: any) => {
-          getCompanyById(value, loginUserInfo.userID,true).then(result => {
-            console.log(result);
-            postCompany.dataModel.welfare = result.bonus;
+        postCompany.dataModel.companyName = value;
+        setCompanyId(value);
+      }
+
+      const selectCompanyList = (companyName: string) => {
+        console.log(companyName)
+        if (companyName) {
+          getList({
+            pageIndex: 1,
+            pageSize: 30,
+            companyName,
+          }).then((result: any) => {
+            companyList.value = result.list;
+            setCompanyId(companyName);
           })
-        });
+        }
+      }
+
+      function setCompanyId(value: any) {
+        const company = companyList.value.find(x => x.companyName === value);
+        if (company) {
+          postCompany.dataModel.companyID = company.companyID;
+        } else {
+          postCompany.dataModel.companyID = null;
+        }
       }
 
       // 月薪变更
@@ -635,12 +656,14 @@ export default defineComponent(
       }
 
       // 名称搜索关键字高亮
-      const formatStr = (str: any) => {
+      const formatStr = (str: any, isPostName) => {
         if (!str) {
           return "";
         }
-
-        return str.replace(postCompany.dataModel.professionName, '<span style="color: coral">' + postCompany.dataModel.professionName + '</span>');
+        if (isPostName) {
+          return str.replace(postCompany.dataModel.professionName, '<span style="color: coral">' + postCompany.dataModel.professionName + '</span>');
+        }
+        return str.replace(postCompany.dataModel.companyName, '<span style="color: coral">' + postCompany.dataModel.companyName + '</span>');
       }
 
       return {
@@ -674,7 +697,8 @@ export default defineComponent(
         recruitCountChange,
         professionList,
         selectProfessionList,
-        formatStr
+        formatStr,
+        selectCompanyList
       }
     },
     created() {

+ 4 - 11
vue/src/views/companyService/post/index.vue

@@ -8,17 +8,9 @@
           </a-form-item>
         </a-col>
         <a-col :span="6">
-        <a-form-item label="招聘企业" :label-col="{span:6}" name="companyName">
-          <a-select ref="select" @change="loadData"
-                    show-search optionFilterProp="label"
-                    v-model:value="searchParams.companyName"
-                    :allow-clear="true">
-            <a-select-option v-for="item in companyList" :label="item.companyName" :value="item.companyName"
-                             :key="item.companyID">
-              <span>{{ item.companyName }}</span>
-            </a-select-option>
-          </a-select>
-        </a-form-item>
+          <a-form-item label="招聘企业" :label-col="{span:6}" name="companyName">
+            <a-input v-model:value="searchParams.companyName" placeholder="" :allow-clear="true"/>
+          </a-form-item>
         </a-col>
         <a-col :span="6">
           <a-form-item label="招聘人数" :label-col="{span:6}" name="recruitCount">
@@ -185,6 +177,7 @@ export default defineComponent({
       minCount: null,
       maxCount: null,
       professionName: null,
+      companyName: null,
       recordStatus: null,
       siteID: "",
       startDate: "",

+ 6 - 1
vue/src/views/jobUserManager/jobhunt/edit.vue

@@ -7,6 +7,7 @@
           <a-form-item label="姓名"  name="jobUserID" :label-col="{span:8}"  :rules="[{ required: true, message: '请输选择求职人员!' }]">
             <a-auto-complete
               v-model:value="dataModel.jobUserName"
+              :disabled="isEdit"
               :options="jobUserList"
               @search="selectJobUserList"
               @change="jobUserChange"
@@ -151,6 +152,7 @@ export default defineComponent({
     const regionList = ref<SelectProps['options']>();
     const professionList = ref<Array<any>>([]);
     const jobUserList = ref<Array<any>>([]);
+    const isEdit = ref<boolean>(false);
 
     const getWorkAreas = async function(){
       const result :any = await get('system/area/getCityList',{});
@@ -173,6 +175,7 @@ export default defineComponent({
     }
 
     const loadData = (id: string) => {
+      isEdit.value = id != null;
       formState.loading = true;
       getWorkAreas();
       getJobUserTypeList();
@@ -309,11 +312,13 @@ export default defineComponent({
       selectJobUserList,
       professionChange,
       jobUserChange,
-      formatStr
+      formatStr,
+      isEdit
     };
   },
   created() {
     const id = history.state.params?.id;
+    if (id) this.isEdit = true;
     this.loadData(id);
   },
 })