Browse Source

Merge branch 'master' of http://39.98.153.250:9080/bowintek/EmploymentSite

pengjing 11 months ago
parent
commit
57fddc0848
47 changed files with 367 additions and 130 deletions
  1. 29 0
      doc/业务数据清除脚本
  2. 5 5
      h5app/src/components/ocCategorySelection.vue
  3. 2 0
      h5app/src/components/postSelection.vue
  4. 20 14
      h5app/src/views/pages/company/detail.vue
  5. 2 4
      h5app/src/views/pages/company/edit.vue
  6. 11 3
      h5app/src/views/pages/company/editPost.vue
  7. 1 1
      h5app/src/views/pages/jobUserInfo/companyEdit.vue
  8. 11 11
      h5app/src/views/pages/jobUserInfo/jobHuntEdit.vue
  9. 7 3
      h5app/src/views/pages/jobUserInfo/postEdit.vue
  10. 1 1
      h5app/src/views/pages/jobUserInfo/userEdit.vue
  11. 1 1
      h5app/src/views/pages/jobhunt/detail.vue
  12. 5 7
      h5app/src/views/pages/jobhunt/edit.vue
  13. 15 11
      h5app/src/views/pages/jobhunt/jobHuntEdit.vue
  14. 4 0
      h5app/src/views/pages/jobhunt/recommend/list.vue
  15. 1 1
      h5app/src/views/pages/post/edit.vue
  16. 4 0
      h5app/src/views/pages/post/list.vue
  17. 1 1
      h5app/src/views/pages/recommendMgt/list.vue
  18. 1 1
      h5app/src/views/pages/user/myInfo.vue
  19. 1 1
      h5app/src/views/pages/user/updatePassword.vue
  20. 1 1
      h5app/src/views/pages/work/task/detail.vue
  21. 4 1
      h5app/src/views/pages/work/task/edit.vue
  22. 1 1
      h5app/src/views/pages/work/task/list.vue
  23. 1 1
      h5app/src/views/sapp/about.vue
  24. 13 11
      h5app/src/views/sapp/tabWork.vue
  25. 2 1
      src/main/java/com/hz/employmentsite/config/WebConfiguration.java
  26. 2 2
      src/main/java/com/hz/employmentsite/controller/companyService/CompanyController.java
  27. 6 5
      src/main/java/com/hz/employmentsite/controller/companyService/PostController.java
  28. 4 3
      src/main/java/com/hz/employmentsite/controller/jobUserManager/JobHuntController.java
  29. 1 1
      src/main/java/com/hz/employmentsite/mapper/cquery/JobHuntCQuery.java
  30. 1 1
      src/main/java/com/hz/employmentsite/mapper/cquery/PostCQuery.java
  31. 2 2
      src/main/java/com/hz/employmentsite/services/impl/baseSettings/SiteUserImpl.java
  32. 18 3
      src/main/java/com/hz/employmentsite/services/impl/companyService/PostServiceImpl.java
  33. 0 2
      src/main/java/com/hz/employmentsite/services/impl/jobUserManager/EducationServiceImpl.java
  34. 20 7
      src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobHuntServiceImpl.java
  35. 1 1
      src/main/java/com/hz/employmentsite/services/service/companyService/PostService.java
  36. 1 1
      src/main/java/com/hz/employmentsite/services/service/jobUserManager/JobHuntService.java
  37. 0 1
      src/main/java/com/hz/employmentsite/vo/companyService/PostVo.java
  38. 3 0
      src/main/resources/mapping/cquery/JobHuntCQuery.xml
  39. 4 1
      src/main/resources/mapping/cquery/PostCQuery.xml
  40. 13 0
      vue/src/api/jobUserManager/jobuser/index.ts
  41. 32 5
      vue/src/views/baseSettings/institution/detail.vue
  42. 5 0
      vue/src/views/baseSettings/siteInfo/detail.vue
  43. 10 7
      vue/src/views/baseSettings/siteInfo/edit.vue
  44. 1 0
      vue/src/views/baseSettings/siteUser/detail.vue
  45. 4 3
      vue/src/views/companyService/company/edit.vue
  46. 64 1
      vue/src/views/jobUserManager/jobuser/vitae.vue
  47. 31 3
      vue/src/views/taskAndLog/dotask/detail.vue

+ 29 - 0
doc/业务数据清除脚本

@@ -0,0 +1,29 @@
+-- 清除工作日志与工作任务
+DELETE FROM pc_dowork WHERE 1=1;
+DELETE FROM pc_dotask_user WHERE 1=1;
+DELETE FROM pc_dotask WHERE 1=1;
+
+-- 清除岗位与企业信息
+DELETE FROM pc_post WHERE 1=1;
+DELETE FROM pc_company WHERE 1=1;
+
+-- 清除求职人员推荐信息库
+DELETE FROM pc_recommend_mgt WHERE 1=1;
+DELETE FROM pc_recommend WHERE 1=1;
+
+-- 清除求职人员与求职意向基本信息
+DELETE FROM pc_jobhunt WHERE 1=1;
+DELETE FROM pc_education WHERE 1=1; -- 学历
+DELETE FROM pc_experience WHERE 1=1; -- 工作经历
+DELETE FROM pc_jobuser WHERE 1=1;
+
+-- 清除运营机构与驿站人员、驿站基本信息
+DELETE FROM pc_site_institution WHERE 1=1;
+DELETE FROM pc_institution WHERE 1=1;
+DELETE FROM pc_site_user WHERE 1=1;
+DELETE FROM pc_site WHERE 1=1;
+
+-- 删除用户表只保留admin
+-- DELETE FROM sys_log WHERE 1=1;
+-- DELETE FROM sys_user_sys_role WHERE UserID != '60ea0d5b-a75c-11ed-a6c5-7085c2a9999e';
+-- DELETE FROM sys_user WHERE UserID != '60ea0d5b-a75c-11ed-a6c5-7085c2a9999e';

+ 5 - 5
h5app/src/components/ocCategorySelection.vue

@@ -176,6 +176,7 @@ export default defineComponent({
     const loadOccupationalID = () => {
       getOccupationCategoryList().then(data => {
         occupationalCategoryList.value = data;
+        debugger;
         if (!props.OccupationalID) {
           selectModelList[selectType.one].isSelect = true;
           selectModelList[selectType.one].disabled = false;
@@ -188,11 +189,10 @@ export default defineComponent({
               }));
         }
         else {
+          const twoInfo = occupationalCategoryList.value.find((x: any) => x.occupationalLevel == "2" && x.occupationalID == props.OccupationalID);
+          const oneInfo = occupationalCategoryList.value.find((x: any) => x.occupationalLevel == "1" && x.occupationalID == twoInfo.parentOccupationalID);
 
-          console.log("当前OccupationalID2",props.OccupationalID);
-          const twoInfo = occupationalCategoryList.value.find((x: any) => x.professionLevel == "2" && x.occupationalID == props.OccupationalID);
-          const oneInfo = occupationalCategoryList.value.find((x: any) => x.professionLevel == "1" && x.occupationalID == twoInfo.parentOccupationalID);
-
+          selectModelList[selectType.one].isSelect = false;
           selectModelList[selectType.one].disabled = false;
           selectModelList[selectType.one].occupationalName = oneInfo.occupationalName;
           selectModelList[selectType.one].occupationalID = oneInfo.occupationalID;
@@ -207,7 +207,7 @@ export default defineComponent({
           selectModelList[selectType.two].disabled = false;
           selectModelList[selectType.two].occupationalName = twoInfo.occupationalName;
           selectModelList[selectType.two].occupationalID = twoInfo.occupationalID;
-          selectModelList[selectType.two].occupationList = occupationalCategoryList.value.filter((x: any) => x.professionLevel == "2"
+          selectModelList[selectType.two].occupationList = occupationalCategoryList.value.filter((x: any) => x.occupationalLevel == "2"
               && x.parentOccupationalID == oneInfo.occupationalID).map((x: any) => ({
             ...x,
             isSelect: false

+ 2 - 0
h5app/src/components/postSelection.vue

@@ -211,6 +211,7 @@ export default defineComponent({
           const twoInfo = professionLevelList.value.find((x: any) => x.professionLevel == "2" && x.professionID == threeInfo.parentProfessionID);
           const oneInfo = professionLevelList.value.find((x: any) => x.professionLevel == "1" && x.professionID == twoInfo.parentProfessionID);
 
+          selectModelList[selectType.one].isSelect = false;
           selectModelList[selectType.one].disabled = false;
           selectModelList[selectType.one].professionName = oneInfo.professionName;
           selectModelList[selectType.one].professionID = oneInfo.professionID;
@@ -221,6 +222,7 @@ export default defineComponent({
               }));
           selectModelList[selectType.one].professionList.find((x: any) => x.professionID == oneInfo.professionID).isSelect = true;
 
+          selectModelList[selectType.two].isSelect = false;
           selectModelList[selectType.two].disabled = false;
           selectModelList[selectType.two].professionName = twoInfo.professionName;
           selectModelList[selectType.two].professionID = twoInfo.professionID;

+ 20 - 14
h5app/src/views/pages/company/detail.vue

@@ -6,7 +6,7 @@
           <ion-icon :icon="arrowBackOutline" @click="onBack"></ion-icon>
         </ion-buttons>
         <ion-title>
-          企业信息详情
+          {{ curTitle }}
         </ion-title>
       </ion-toolbar>
     </ion-header>
@@ -173,31 +173,32 @@
           </div>
           <div class="form-detail">
             <ion-label>岗位月薪(元)</ion-label>
-            <ion-text>{{ curCompanyPostInfo.minSalary+"-"+curCompanyPostInfo.maxSalary }}</ion-text>
+            <ion-text v-if="curCompanyPostInfo.minSalary!=null&&curCompanyPostInfo.maxSalary!=null">{{ curCompanyPostInfo.minSalary+"-"+curCompanyPostInfo.maxSalary }}</ion-text>
           </div>
           <div class="form-detail" name="isTrailName">
             <ion-label>是否有试用期</ion-label>
-            <ion-text>{{ curCompanyPostInfo.isTrailName }}</ion-text>
+            <ion-text>{{ curCompanyPostInfo.isTrail?"是":"否" }}</ion-text>
           </div>
           <div class="form-detail">
             <ion-label>试用期(月)</ion-label>
-            <ion-text>{{ curCompanyPostInfo.trailMonths }}</ion-text>
+            <ion-text v-if="curCompanyPostInfo.isTrail">{{ curCompanyPostInfo.trailMonths }}</ion-text>
+            <ion-text v-if="!curCompanyPostInfo.isTrail">/</ion-text>
           </div>
           <div class="form-detail">
             <ion-label>试用期月薪(元)</ion-label>
-            <ion-text>{{ curCompanyPostInfo.trailMinSalary+"-"+curCompanyPostInfo.trailMaxSalary }}</ion-text>
-          </div>
+            <ion-text v-if="curCompanyPostInfo.isTrail&&curCompanyPostInfo.trailMinSalary!=null&&curCompanyPostInfo.trailMaxSalary!=null">{{ curCompanyPostInfo.trailMinSalary+"-"+curCompanyPostInfo.trailMaxSalary }}</ion-text>
+            <ion-text v-if="!curCompanyPostInfo.isTrail">/</ion-text> </div>
           <div class="form-detail">
             <ion-label>工作年限要求</ion-label>
             <ion-text>{{ curCompanyPostInfo.companyName }}</ion-text>
           </div>
           <div class="form-detail">
             <ion-label>学历要求</ion-label>
-            <ion-text>{{ curCompanyPostInfo.companyName }}</ion-text>
+            <ion-text>{{ curCompanyPostInfo.cultureLevelName }}</ion-text>
           </div>
           <div class="form-detail">
             <ion-label>其他要求</ion-label>
-            <ion-text>{{ curCompanyPostInfo.workYear }}</ion-text>
+            <ion-text>{{ curCompanyPostInfo.postDesc }}</ion-text>
           </div>
           <div class="form-detail">
             <ion-label>福利待遇</ion-label>
@@ -205,19 +206,19 @@
           </div>
           <div class="form-detail">
             <ion-label>岗位联系人</ion-label>
-            <ion-text>{{ curCompanyPostInfo.userName }}</ion-text>
+            <ion-text>{{ curCompanyPostInfo.contactName }}</ion-text>
           </div>
           <div class="form-detail">
             <ion-label>岗位联系电话</ion-label>
-            <ion-text>{{ curCompanyPostInfo.userMobile }}</ion-text>
+            <ion-text>{{ curCompanyPostInfo.contactMobile }}</ion-text>
           </div>
           <div class="form-detail">
             <ion-label>岗位联系人邮箱</ion-label>
-            <ion-text>{{ curCompanyPostInfo.companyName }}</ion-text>
+            <ion-text>{{ curCompanyPostInfo.contactEmail }}</ion-text>
           </div>
-          <div class="form-detail" name="tagName">
+          <div class="form-detail">
             <ion-label>岗位标签</ion-label>
-            <ion-text>{{ curCompanyPostInfo.TagName }}</ion-text>
+            <ion-text>{{ curCompanyPostInfo.tagName }}</ion-text>
           </div>
         </div>
       </div>
@@ -255,6 +256,7 @@ export default defineComponent({
       companyID:''
     });
     const curTabIndex = ref(1);
+    const curTitle = ref("企业信息详情");
     const loading = ref<boolean>(false);
     const formData = reactive<FormData>({
       dataModel: {}
@@ -282,6 +284,7 @@ export default defineComponent({
     const loadData = async (companyID:any,loginUserID:any)=>{
       loading.value = true;
       curTabIndex.value = 1;
+      curTitle.value ="企业信息详情";
       pageParams.companyID = companyID;
       const reqData = await getCompanyById(companyID,loginUserID);
       formData.dataModel = reqData;
@@ -289,7 +292,7 @@ export default defineComponent({
       const result = await getCompanyPostList(pageParams);
       pageParams.total = result.total;
       console.log("pageParams",pageParams);
-      curCompanyPostList.value = curCompanyPostList.value.concat(result.list);
+      curCompanyPostList.value = result.list;
       console.log("postList",curCompanyPostList.value);
       loading.value = false;
     };
@@ -300,10 +303,12 @@ export default defineComponent({
 
     const onTabChange = (tabIndex:number)=>{
       curTabIndex.value = tabIndex;
+      curTitle.value ="企业信息详情";
     }
 
     const onPostEdit = (curPostID:any)=>{
       curTabIndex.value = 3;
+      curTitle.value ="企业岗位详情";
       (curCompanyPostList.value as any[]).map(item=>{
         if(item.postID == curPostID){
           curCompanyPostInfo.value = item;
@@ -325,6 +330,7 @@ export default defineComponent({
       route,
       router,
       curTabIndex,
+      curTitle,
       pageParams,
       curCompanyPostList,
       curCompanyPostInfo,

+ 2 - 4
h5app/src/views/pages/company/edit.vue

@@ -130,7 +130,7 @@
               <div>
                 <ion-radio v-model:checked="isLongDate" justify="start" labelPlacement="end"
                            @click="changeLongDate" style="height:30px;">至长期</ion-radio>
-                <ion-datetime-button datetime="validDate" style="position:relative;right:110px;"></ion-datetime-button>
+                <ion-datetime-button datetime="validDate" style="position:relative;right:105px;"></ion-datetime-button>
                 <ion-modal :keep-contents-mounted="true" >
                   <ion-datetime id="validDate" name="validDate"
                                 v-model="dataModel.validDate"  :prefer-wheel="true"  @ionChange="changeValidDate"
@@ -143,8 +143,7 @@
 
             <div class="form-input">
               <ion-label>成立日期</ion-label>
-              <div>
-                <ion-datetime-button datetime="establishmentTime" style="position:relative;right:110px;"></ion-datetime-button>
+                <ion-datetime-button datetime="establishmentTime" style="position:relative;right:110px;" ></ion-datetime-button>
                 <ion-modal :keep-contents-mounted="true" >
                   <ion-datetime id="establishmentTime" name="establishmentTime"
                                 v-model="dataModel.establishmentTime"  :prefer-wheel="true"
@@ -152,7 +151,6 @@
                                 :show-default-buttons="true" >
                   </ion-datetime>
                 </ion-modal>
-              </div>
             </div>
             <div class="form-input" >
               <ion-label>注册资本(万元)</ion-label>

+ 11 - 3
h5app/src/views/pages/company/editPost.vue

@@ -18,7 +18,7 @@
             <ion-label>岗位名称<span class="danger">*</span></ion-label>
             <div>
               <ion-input placeholder="请选择岗位" label-placement="stacked" style="float: left;width:78%;"
-              v-model="dataModel.professionName" class="custom">
+              v-model="dataModel.professionName" class="custom" readonly >
               </ion-input>
               <ion-item style="width:22%;float: right;padding:0px;margin: 0px;">
                 <post-selection  :ProfessionID="dataModel.professionID" @SetProfessionID="onSetProfessionID"></post-selection>
@@ -203,10 +203,12 @@ import {useRoute, useRouter} from "vue-router";
 import {alertController, onIonViewDidEnter} from "@ionic/vue";
 import {useVuelidate} from "@vuelidate/core";
 import {getPostByID,savePost} from "@/api/post";
+import {getCompanyById} from "@/api/company";
 import {required} from "@vuelidate/validators";
 import {getSysDictionaryList} from "@/api/system/dictionary";
 import dayjs from "dayjs";
 import PostSelection from "@/components/postSelection.vue";
+import {useUserStore} from "@/store/modules/user";
 
 export default defineComponent({
   name: 'PostEdit',
@@ -220,6 +222,7 @@ export default defineComponent({
     const formState = reactive({
       dataModel: {
         companyID:null,
+        loginUserID:'',
         professionName:null,
         professionID:null,
         postName:null,
@@ -284,13 +287,13 @@ export default defineComponent({
     }
     const onSave = async function (){
       isCommit.value = true;
-      ifInputAllValid();
       const isFormCorrect = await v$.value.$validate();
       console.log("当前岗位信息",formState.dataModel);
       if (!isFormCorrect) {
         await presentAlert('请输入完整信息!');
         return null;
       }
+      ifInputAllValid();
       if(isCommit.value){
         savePost(formState.dataModel).then(result=>{
           if(result){
@@ -329,10 +332,15 @@ export default defineComponent({
       await getCultureRankList();
       await getWorkNationList();
       await getPostTagList();
+      const loginUserInfo = useUserStore().getUserInfo;
       const reqData = await getPostByID(postID);
       formState.dataModel = reqData;
       formState.dataModel.companyID = companyID;
-      formState.dataModel.welfare = formState.dataModel.bonus;
+      formState.dataModel.loginUserID = loginUserInfo.userID == undefined?"":loginUserInfo.userID;
+      if(postID==null){
+        const curPostCompany :any = await getCompanyById(companyID,formState.dataModel.loginUserID);
+        formState.dataModel.welfare =  curPostCompany.bonus;
+      }
       console.log("初始化岗位信息",formState.dataModel);
     };
 

+ 1 - 1
h5app/src/views/pages/jobUserInfo/companyEdit.vue

@@ -127,7 +127,7 @@
               <div>
                 <ion-radio v-model:checked="isLongDate" justify="start" labelPlacement="end"
                            @click="changeLongDate" style="height:30px;">至长期</ion-radio>
-                <ion-datetime-button datetime="validDate" style="position:relative;right:110px;"></ion-datetime-button>
+                <ion-datetime-button datetime="validDate" style="position:relative;right:105px;"></ion-datetime-button>
                 <ion-modal :keep-contents-mounted="true" >
                   <ion-datetime id="validDate" name="validDate" placeholder="营业执照有效期"
                                 v-model="dataModel.validDate"  :prefer-wheel="true"  @ionChange="changeValidDate"

+ 11 - 11
h5app/src/views/pages/jobUserInfo/jobHuntEdit.vue

@@ -32,21 +32,11 @@
         <div class="bw-vue-form">
         <ion-list>
           <div class="form-title">求职意向</div>
-          <div class="form-select">
-            <ion-label>求职类型<span class="danger">*</span></ion-label>
-              <ion-select name="jobHuntType"  id="jobHuntType" okText="确定" cancelText="取消" v-model="dataModel.jobHuntType"
-                          interface="action-sheet" placeholder="请选择求职类型" style="width:100%;text-align: left;">
-                <ion-select-option v-for=" (it,key) in jobHuntTypeList" :key="key" :value="it.value">
-                  {{ it.name }}
-                </ion-select-option>
-              </ion-select>
-<!--              <ion-note slot="error">求职类型不能为空</ion-note>-->
-          </div>
           <div class="form-input">
             <ion-label>求职岗位<span class="danger">*</span></ion-label>
             <div>
               <ion-input placeholder="请选择岗位" label-placement="stacked" style="float: left;width:78%;"
-                         v-model="dataModel.professionName" class="custom">
+                         v-model="dataModel.professionName" class="custom" readonly >
               </ion-input>
               <ion-item style="width:22%;float: right;padding:0px;margin: 0px;">
                 <post-selection :ProfessionID="dataModel.professionID" @SetProfessionID="onSetProfessionID"></post-selection>
@@ -54,6 +44,16 @@
             </div>
             <!--            <ion-note slot="error">请选择求职岗位</ion-note>-->
           </div>
+          <div class="form-select">
+            <ion-label>求职类型<span class="danger">*</span></ion-label>
+              <ion-select name="jobHuntType"  id="jobHuntType" okText="确定" cancelText="取消" v-model="dataModel.jobHuntType"
+                          interface="action-sheet" placeholder="请选择求职类型" style="width:100%;text-align: left;">
+                <ion-select-option v-for=" (it,key) in jobHuntTypeList" :key="key" :value="it.value">
+                  {{ it.name }}
+                </ion-select-option>
+              </ion-select>
+<!--              <ion-note slot="error">求职类型不能为空</ion-note>-->
+          </div>
           <div class="form-select">
             <ion-label>人才类型<span class="danger">*</span></ion-label>
               <ion-select name="jobUserType"  id="jobUserType" okText="确定" cancelText="取消" v-model="dataModel.jobUserType"

+ 7 - 3
h5app/src/views/pages/jobUserInfo/postEdit.vue

@@ -19,7 +19,7 @@
             <ion-label>岗位名称<span class="danger">*</span></ion-label>
             <div>
               <ion-input placeholder="请选择岗位" label-placement="stacked" style="float: left;width:78%;"
-                         v-model="dataModel.professionName" class="custom">
+                         v-model="dataModel.professionName" class="custom" readonly >
               </ion-input>
               <ion-item style="width:22%;float: right;padding:0px;margin: 0px;">
                 <post-selection  :ProfessionID="dataModel.professionID" @SetProfessionID="onSetProfessionID"></post-selection>
@@ -208,6 +208,7 @@ import {required} from "@vuelidate/validators";
 import {getSysDictionaryList} from "@/api/system/dictionary";
 import dayjs from "dayjs";
 import postSelection from "@/components/postSelection.vue";
+import {getCompanyById} from "@/api/company";
 
 interface StepParams{
   loginUserID: string,
@@ -371,13 +372,13 @@ export default defineComponent({
 
     const onSave = async function (){
       isCommit.value = true;
-      ifInputAllValid();
       const isFormCorrect = await v$.value.$validate();
       console.log("当前岗位信息",formState.dataModel);
       if (!isFormCorrect) {
         await presentAlert('请输入完整信息!');
         return null;
       }
+      ifInputAllValid();
       formState.dataModel.loginUserID = curStepData.value.loginUserID;
       savePost(formState.dataModel).then(result=>{
         if(result){
@@ -421,7 +422,10 @@ export default defineComponent({
       const reqData = await getPostByID(postID);
       formState.dataModel = reqData;
       formState.dataModel.companyID = companyID;
-      formState.dataModel.welfare = formState.dataModel.bonus;
+      if(postID==null){
+        const curPostCompany :any = await getCompanyById(companyID,loginUserID);
+        formState.dataModel.welfare =  curPostCompany.bonus;
+      }
       console.log("初始化岗位信息",formState.dataModel);
     };
 

+ 1 - 1
h5app/src/views/pages/jobUserInfo/userEdit.vue

@@ -178,7 +178,7 @@
                 <ion-label>职业资格类别</ion-label>
                 <div>
                   <ion-input placeholder="请选择职业资格类别" label-placement="stacked" style="float: left;width:78%;"
-                             v-model="baseData.occupationalCategoryName" class="custom">
+                             v-model="baseData.occupationalCategoryName" class="custom" readonly >
                   </ion-input>
                   <ion-item style="width:22%;float: right;padding:0px;margin: 0px;">
                     <category-selection  :OccupationalID="baseData.occupationalCategory" @SetOccupationalID="onSetOccupationalID"></category-selection>

+ 1 - 1
h5app/src/views/pages/jobhunt/detail.vue

@@ -59,7 +59,7 @@
         </div>
         <div class="form-detail">
           <ion-label>民族</ion-label>
-          <ion-text>{{ dataModel.nation }}</ion-text>
+          <ion-text>{{ dataModel.nationName }}</ion-text>
         </div>
         <div class="form-detail">
           <ion-label>毕业院校</ion-label>

+ 5 - 7
h5app/src/views/pages/jobhunt/edit.vue

@@ -175,7 +175,7 @@
             <ion-label>职业资格类别</ion-label>
             <div>
               <ion-input placeholder="请选择职业资格类别" label-placement="stacked" style="float: left;width:78%;"
-                         v-model="baseData.occupationalCategoryName" class="custom">
+                         v-model="baseData.occupationalCategoryName" class="custom" readonly >
               </ion-input>
               <ion-item style="width:22%;float: right;padding:0px;margin: 0px;">
                 <category-selection  :OccupationalID="baseData.occupationalCategory" @SetOccupationalID="onSetOccupationalID"></category-selection>
@@ -478,8 +478,6 @@ export default defineComponent({
   setup() {
     const router = useRouter();
     const route = useRoute();
-    const loginUserInfo = useUserStore().getUserInfo;
-    const curUserID = loginUserInfo.userID == undefined?"":loginUserInfo.userID;
     const isAllowCommit = ref(true);
     const expand = ref<boolean>(false);
     const loading = ref(true);
@@ -516,6 +514,7 @@ export default defineComponent({
     const baseInfoData = reactive({
       baseData:{
         jobUserID:null,
+        loginUserID:'',
         siteID:null,
         name:null,
         identityNumber: null,
@@ -573,9 +572,6 @@ export default defineComponent({
     });
     const baseDataValid = useVuelidate(baseDataRule,baseInfoData);
 
-    const expandChange= ()=>{
-      expand.value = !expand.value;
-    }
     // 删除警告弹窗开关
     const delAlertOpen = ref(false);
 
@@ -802,10 +798,13 @@ export default defineComponent({
       pageParams.jobUserID = jobUserID;
       baseInfoData.baseData.jobUserID = jobUserID;
       curStepData.value.statusVal = status;
+      const loginUserInfo = useUserStore().getUserInfo;
+      const curUserID = loginUserInfo.userID == undefined?"":loginUserInfo.userID;
       //console.log("当前jobUserID",jobUserID);
       if(curStepData.value.statusVal==1){
         const reqData = await getJobUserById(jobUserID,curUserID);
         baseInfoData.baseData = reqData;
+        baseInfoData.baseData.loginUserID = curUserID;
         //console.log('baseData',baseInfoData.baseData);
         await getStreetList();
       }
@@ -887,7 +886,6 @@ export default defineComponent({
       infoAlertOpen,
       delLoading,
       infoAlterData,
-      expandChange,
       provinceChange,
       regionChange,
       onSetOccupationalID,

+ 15 - 11
h5app/src/views/pages/jobhunt/jobHuntEdit.vue

@@ -32,21 +32,11 @@
         <div class="bw-vue-form">
         <ion-list>
           <div class="form-title">求职意向</div>
-          <div class="form-select">
-            <ion-label>求职类型<span class="danger">*</span></ion-label>
-              <ion-select name="jobHuntType"  id="jobHuntType" okText="确定" cancelText="取消" v-model="dataModel.jobHuntType"
-                          interface="action-sheet" placeholder="请选择求职类型" style="width:100%;text-align: left;">
-                <ion-select-option v-for=" (it,key) in jobHuntTypeList" :key="key" :value="it.value">
-                  {{ it.name }}
-                </ion-select-option>
-              </ion-select>
-<!--              <ion-note slot="error">求职类型不能为空</ion-note>-->
-          </div>
           <div class="form-input">
             <ion-label>岗位名称<span class="danger">*</span></ion-label>
             <div>
               <ion-input placeholder="请选择岗位" label-placement="stacked" style="float: left;width:78%;"
-                         v-model="dataModel.professionName" class="custom">
+                         v-model="dataModel.professionName" class="custom" readonly >
               </ion-input>
               <ion-item style="width:22%;float: right;padding:0px;margin: 0px;">
                 <post-selection :ProfessionID="dataModel.professionID" @SetProfessionID="onSetProfessionID"></post-selection>
@@ -54,6 +44,16 @@
             </div>
             <!--            <ion-note slot="error">请选择求职岗位</ion-note>-->
           </div>
+          <div class="form-select">
+            <ion-label>求职类型<span class="danger">*</span></ion-label>
+              <ion-select name="jobHuntType"  id="jobHuntType" okText="确定" cancelText="取消" v-model="dataModel.jobHuntType"
+                          interface="action-sheet" placeholder="请选择求职类型" style="width:100%;text-align: left;">
+                <ion-select-option v-for=" (it,key) in jobHuntTypeList" :key="key" :value="it.value">
+                  {{ it.name }}
+                </ion-select-option>
+              </ion-select>
+<!--              <ion-note slot="error">求职类型不能为空</ion-note>-->
+          </div>
           <div class="form-select">
             <ion-label>人才类型<span class="danger">*</span></ion-label>
               <ion-select name="jobUserType"  id="jobUserType" okText="确定" cancelText="取消" v-model="dataModel.jobUserType"
@@ -138,6 +138,7 @@ import {getSysDictionaryList} from '@/api/system/dictionary';
 import {alertController, onIonViewDidEnter} from "@ionic/vue";
 import dayjs from "dayjs";
 import PostSelection from "@/components/postSelection.vue";
+import {useUserStore} from "@/store/modules/user";
 
 interface huntModel {
   dataModel: any;
@@ -180,6 +181,7 @@ export default defineComponent({
     const workYearTypeList = ref<SelectProps[]>([]);
     const jobHuntData = reactive<huntModel>({dataModel:{
         jobUserID:null,
+        loginUserID:'',
         jobHuntType:null,
         jobUserType:null,
         professionID:null,
@@ -296,10 +298,12 @@ export default defineComponent({
       await getJobHuntTypeList();
       await getJobUserTypeList();
       await getWorkYearTypeList();
+      const loginUserInfo = useUserStore().getUserInfo;
       const reqData = await getJobHuntByID(jobHuntID);
       curStepData.value.statusVal = status;
       jobHuntData.dataModel = reqData;
       jobHuntData.dataModel.jobUserID = jobUserID;
+      jobHuntData.dataModel.loginUserID = loginUserInfo.userID == undefined?"":loginUserInfo.userID;
       console.log("初始化求职意向 ",jobHuntData.dataModel);
       loading.value = false;
     };

+ 4 - 0
h5app/src/views/pages/jobhunt/recommend/list.vue

@@ -75,6 +75,7 @@ import {arrowBackOutline,trashOutline} from 'ionicons/icons';
 import {alertController, IonIcon, onIonViewDidEnter} from '@ionic/vue';
 import BEmpty from "@/components/empty.vue";
 import {getJobHuntList, deleteJobHuntAndRecommendMgt} from '@/api/jobHuntInfo/index'
+import {useUserStore} from "@/store/modules/user";
 
 export default defineComponent({
   name: 'RecommendCompanyPostList',
@@ -92,12 +93,15 @@ export default defineComponent({
     const searchParams = reactive({
       pageIndex: 1,
       pageSize: 5,
+      loginUserID: '',
       jobUserName: '',
     });
     const dataList = ref<any>([]);
 
     const loadData = async function () {
       loading.value = true;
+      const loginUserInfo = useUserStore().getUserInfo;
+      searchParams.loginUserID = loginUserInfo.userID == undefined?"":loginUserInfo.userID;
       getJobHuntList(searchParams).then(data => {
         dataList.value = dataList.value.concat(data.list);
         total.value = data.total;

+ 1 - 1
h5app/src/views/pages/post/edit.vue

@@ -30,7 +30,7 @@
           <div class="form-input">
             <ion-label>岗位名称<span class="danger">*</span></ion-label>
             <ion-item :class="[v$.dataModel.professionName.$error?'ion-invalid':'ion-valid']">
-              <ion-input placeholder="请选择岗位" label-placement="stacked" :clear-input="true"
+              <ion-input readonly placeholder="请选择岗位" label-placement="stacked" :clear-input="true"
                          v-model="dataModel.professionName" class="custom">
               </ion-input>
 <!--              <picker :ProfessionID="dataModel.professionID" aria-disabled="false"  @SetProfessionID="onSetProfessionID"></picker>-->

+ 4 - 0
h5app/src/views/pages/post/list.vue

@@ -79,6 +79,7 @@ import {arrowBackOutline, addCircleOutline, buildOutline, trashOutline} from 'io
 import {alertController, IonIcon, onIonViewDidEnter} from '@ionic/vue';
 import BEmpty from "@/components/empty.vue";
 import {getPostList, deletePostAndRecommendMgt} from '@/api/post/index'
+import {useUserStore} from "@/store/modules/user";
 
 export default defineComponent({
   name: 'PostList',
@@ -96,12 +97,15 @@ export default defineComponent({
     const searchParams = reactive({
       pageIndex: 1,
       pageSize: 5,
+      loginUserID:'',
       professionName: '',
     });
     const dataList = ref<any>([]);
 
     const loadData = async function () {
       loading.value = true;
+      const loginUserInfo = useUserStore().getUserInfo;
+      searchParams.loginUserID = loginUserInfo.userID == undefined?"":loginUserInfo.userID;
       getPostList(searchParams).then(data => {
         dataList.value = dataList.value.concat(data.list);
         total.value = data.total;

+ 1 - 1
h5app/src/views/pages/recommendMgt/list.vue

@@ -5,7 +5,7 @@
         <ion-buttons slot="start">
           <ion-icon :icon="arrowBackOutline" @click="onBack"></ion-icon>
         </ion-buttons>
-        <ion-title>推荐信息管理</ion-title>
+        <ion-title>推荐</ion-title>
       </ion-toolbar>
     </ion-header>
     <ion-content>

+ 1 - 1
h5app/src/views/pages/user/myInfo.vue

@@ -11,7 +11,7 @@
     <ion-content>
       <div class="bw-vue-form">
         <div class="form-detail">
-          <ion-label>登录名</ion-label>
+          <ion-label>工号</ion-label>
           <ion-text>{{ userInfo.loginID }}</ion-text>
         </div>
         <div class="form-detail">

+ 1 - 1
h5app/src/views/pages/user/updatePassword.vue

@@ -15,7 +15,7 @@
           <ion-text>{{ dataModel.userName }}</ion-text>
         </div>
         <div class="form-detail">
-          <ion-label>姓名</ion-label>
+          <ion-label>账号</ion-label>
           <ion-text>{{ dataModel.loginID }}</ion-text>
         </div>
       </div>

+ 1 - 1
h5app/src/views/pages/work/task/detail.vue

@@ -87,7 +87,7 @@ function loadData(doTaskID: any) {
       taskInfo[key] = data[key];
     })
   })
-
+  console.log(taskInfo);
   bodyLoading.value = false;
 }
 

+ 4 - 1
h5app/src/views/pages/work/task/edit.vue

@@ -129,7 +129,7 @@ export default defineComponent({
         workTypeName: '',
         taskStatus: null,
         taskStatusName: '',
-        completeTime: null
+        completeTime: dayjs().format("YYYY-MM-DD")
     }});
     // 任务完成状态字典
     const taskStatusCodeList = ref<Array<any>>([]);
@@ -200,6 +200,9 @@ export default defineComponent({
       searchParamsState.doTaskID = doTaskID;
       const reqData = await getMyWorkTasks(searchParamsState);
       workTaskData.dataModel = reqData.list[0];
+      if(workTaskData.dataModel.completeTime==null){
+        workTaskData.dataModel.completeTime = dayjs(new Date()).format("YYYY-MM-DD");
+      }
       console.log("初始化dataModel",workTaskData.dataModel);
 
       bodyLoading.value = false;

+ 1 - 1
h5app/src/views/pages/work/task/list.vue

@@ -107,7 +107,7 @@ export default defineComponent({
         router.push({path: './edit', query: {reload: 1, doTaskID: data.doTaskID}});
       }
       if (data.taskStatus == 1) {
-        router.push({path: './detail', query: {reload: 1, doWorkID: data.doTaskID}});
+        router.push({path: './detail', query: {reload: 1, doTaskID: data.doTaskID}});
       }
     }
 

+ 1 - 1
h5app/src/views/sapp/about.vue

@@ -13,7 +13,7 @@
         <div class="form-title">关于我们</div>
         <div class="form-detail">
           <ion-label>当前版本</ion-label>
-          <ion-text>V1.1</ion-text>
+          <ion-text>V1.2</ion-text>
         </div>
         <div class="form-detail">
           <ion-label>技术支持</ion-label>

+ 13 - 11
h5app/src/views/sapp/tabWork.vue

@@ -78,6 +78,12 @@
          <div class="content-title">我的应用</div>
          <div class="content-applist">
            <div class="tool-box">
+             <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/userQrCode/index')">
+               <div class="tool-img">
+                 <img src="@/assets/icon/qrcode.png">
+               </div>
+               <div class="tool-title">我的二维码</div>
+             </a>
              <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/jobhunt/list')">
                <div class="tool-img">
                  <img src="@/assets/icon/qzxx.png">
@@ -106,26 +112,22 @@
                <div class="tool-img">
                  <img src="@/assets/icon/gwtj.png">
                </div>
-               <div class="tool-title">推荐信息管理</div>
+               <div class="tool-title">推荐</div>
              </a>
-             <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/work/log/list')">
-               <div class="tool-img">
-                 <img src="@/assets/icon/gzrz.png">
-               </div>
-               <div class="tool-title">工作日志</div>
-             </a>
-             <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/work/task/list')">
+             <a class="tool-item box-line" @click="router.push('/tabs/tabMain/workTask/list')">
                <div class="tool-img">
                  <img src="@/assets/icon/gzrw.png">
                </div>
                <div class="tool-title">工作任务</div>
              </a>
-             <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/sitemap/index')">
+             <a class="tool-item box-line" @click="router.push('/tabs/tabMain/workLog/list')">
                <div class="tool-img">
-                 <img src="@/assets/icon/map.png">
+                 <img src="@/assets/icon/gzrz.png">
                </div>
-               <div class="tool-title">驿站地图</div>
+               <div class="tool-title">工作日志</div>
              </a>
+
+
              <a class="tool-item box-line"  @click="router.push('/tabs/tabWork/work/track/index')">
                <div class="tool-img">
                  <img src="@/assets/icon/map.png">

+ 2 - 1
src/main/java/com/hz/employmentsite/config/WebConfiguration.java

@@ -83,6 +83,7 @@ public class WebConfiguration implements WebMvcConfigurer {
         excludePath.add("/api/system/area/getCityList");//查询相关市区信息
         excludePath.add("/api/system/area/getAreaList");//查询相关街道信息
         excludePath.add("/api/jobusermgr/recommendmgt/getProfessionLevelList");//查询所有求职岗位信息
+        excludePath.add("/api/jobusermgr/recommendmgt/getOccupationCategoryList");//查询所有职业资格类别
         excludePath.add("/api/siteInfo/getDataList");
         excludePath.add("/api/companyService/company/getSiteList");
         excludePath.add("/api/companyService/company/save");
@@ -100,7 +101,7 @@ public class WebConfiguration implements WebMvcConfigurer {
         excludePath.add("/web/**");  //静态资源
         excludePath.add("/doc/**");  //静态资源
         excludePath.add("/");  //首页跳转
-        excludePath.add("/ZlakD9GxTS.txt");
+        excludePath.add("/MP_verify_PBhj75Una8Wk5r3v.txt");
         registry.addInterceptor(tokenInterceptor)
                 .addPathPatterns("/**")
                 .excludePathPatterns(excludePath);

+ 2 - 2
src/main/java/com/hz/employmentsite/controller/companyService/CompanyController.java

@@ -69,10 +69,10 @@ public class CompanyController {
         if (data == null) {
             data = new CompanyVo();
             data.companyID = UUID.randomUUID().toString();
-            data.recordStatus = 1;
             data.validDate = dateUtils.StrToDate("2099-12-31 00:00:00");
-            data.establishmentTime = new Date();
+            data.setEstablishmentTime(new Date());
             data.isShortage = 1;
+            data.recordStatus = 1;
             PcSiteUserExample siteUserExp = new PcSiteUserExample();
             PcSiteUserExample.Criteria siteUserCro = siteUserExp.createCriteria();
             siteUserCro.andUserIDEqualTo(loginUserID);

+ 6 - 5
src/main/java/com/hz/employmentsite/controller/companyService/PostController.java

@@ -5,6 +5,7 @@ import com.hz.employmentsite.filter.exception.BaseErrorEnum;
 import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.filter.exception.BaseResponse;
 import com.hz.employmentsite.filter.exception.RespGenerstor;
+import com.hz.employmentsite.model.PcCompanyExample;
 import com.hz.employmentsite.services.service.AccountService;
 import com.hz.employmentsite.services.service.companyService.PostService;
 import com.hz.employmentsite.util.DateUtils;
@@ -38,10 +39,10 @@ public class PostController {
                                 @RequestParam(required = false) Integer maxCount,
                                 @RequestParam(required = false) String companyName,
                                 @RequestParam(required = false) String recordStatus,
-                                @RequestParam(required = false) String companyID
-                                ) {
+                                @RequestParam(required = false) String companyID,
+                                @RequestParam(required = false) String loginUserID) { //loginUserID暂用来过滤app的当前登录人驿站的求职人员
 
-        PageInfo<PostVo> result = postService.getList(pageIndex, pageSize, postIDList, professionName, minCount, maxCount, companyName, recordStatus,companyID);
+        PageInfo<PostVo> result = postService.getList(pageIndex, pageSize, postIDList, professionName, minCount, maxCount, companyName, recordStatus,companyID,loginUserID);
         return RespGenerstor.success(result);
     }
 
@@ -105,7 +106,7 @@ public class PostController {
     @GetMapping("/getPostsByCompanyID")
     public BaseResponse<List<PostVo>> getPostsByCompanyID(@RequestParam(required = false) String companyId) {
 //        var dataList = postService.getDataListByCompanyID(companyId);
-        PageInfo<PostVo> result = postService.getList(1, 99999, null, null, null, null, null, null, companyId);
+        PageInfo<PostVo> result = postService.getList(1, 99999, null, null, null, null, null, null, companyId,null);
         return RespGenerstor.success(result.getList());
     }
 
@@ -137,7 +138,7 @@ public class PostController {
                                @RequestParam(required = false) Integer maxCount,
                                @RequestParam(required = false) String companyName,
                                @RequestParam(required = false) String recordStatus ) throws Exception {
-        PageInfo<PostVo> result = postService.getList(pageIndex, pageSize, postIDList, professionName, minCount, maxCount, companyName, recordStatus,null);
+        PageInfo<PostVo> result = postService.getList(pageIndex, pageSize, postIDList, professionName, minCount, maxCount, companyName, recordStatus,null,null);
 
         if (isExport == null || !isExport) {
             return RespGenerstor.success(result);

+ 4 - 3
src/main/java/com/hz/employmentsite/controller/jobUserManager/JobHuntController.java

@@ -46,9 +46,10 @@ public class JobHuntController {
                                     @RequestParam(required = false) Integer jobUserTypeID,
                                     @RequestParam(required = false) BigDecimal minSalary,
                                     @RequestParam(required = false) BigDecimal maxSalary,
-                                    @RequestParam(required = false) Integer isAccomplish) {
+                                    @RequestParam(required = false) Integer isAccomplish,
+                                    @RequestParam(required = false) String loginUserID) { //loginUserID暂用来过滤app的当前登录人驿站的求职人员
 
-        PageInfo<JobHuntVo> result = jobhuntService.getList(pageIndex, pageSize,jobHuntIDList,jobUserID,jobUserName,professionName,minWorkYear, maxWorkYear, jobHuntTypeID, jobUserTypeID, minSalary, maxSalary, isAccomplish);
+        PageInfo<JobHuntVo> result = jobhuntService.getList(pageIndex, pageSize,jobHuntIDList,jobUserID,jobUserName,professionName,minWorkYear, maxWorkYear, jobHuntTypeID, jobUserTypeID, minSalary, maxSalary, isAccomplish,loginUserID);
         return RespGenerstor.success(result);
     }
 
@@ -109,7 +110,7 @@ public class JobHuntController {
                                @RequestParam(required = false) BigDecimal minSalary, @RequestParam(required = false) BigDecimal maxSalary,
                                @RequestParam(required = false) Integer isAccomplish) throws Exception{
 
-        PageInfo<JobHuntVo> result = jobhuntService.getList(pageIndex, pageSize,jobHuntIDList,jobUserID,jobUserName,workName,minWorkYear, maxWorkYear, jobHuntTypeID, jobUserTypeID, minSalary, maxSalary, isAccomplish);
+        PageInfo<JobHuntVo> result = jobhuntService.getList(pageIndex, pageSize,jobHuntIDList,jobUserID,jobUserName,workName,minWorkYear, maxWorkYear, jobHuntTypeID, jobUserTypeID, minSalary, maxSalary, isAccomplish,null);
         ExcelHelper.ExcelData data = excelHelper.new ExcelData();
         data.setTitles(Arrays.asList(new String[]{"序号", "姓名", "希望工作地区", "可到职日期", "工作年限", "求职类型", "求职岗位", "人才类型", "月薪要求"}));
         int i = 0;

+ 1 - 1
src/main/java/com/hz/employmentsite/mapper/cquery/JobHuntCQuery.java

@@ -11,5 +11,5 @@ public interface JobHuntCQuery {
                                       @Param("minWorkYear")Integer minWorkYear,@Param("maxWorkYear")Integer maxWorkYear,
                                       @Param("jobHuntTypeID")Integer jobHuntTypeID, @Param("jobUserTypeID")Integer jobUserTypeID,
                                       @Param("minSalary")BigDecimal minSalary, @Param("maxSalary")BigDecimal maxSalary,
-                                      @Param("isAccomplish")Integer isAccomplish);
+                                      @Param("isAccomplish")Integer isAccomplish,@Param("curLoginUserSiteJobUserIDs")String curLoginUserSiteJobUserIDs);
 }

+ 1 - 1
src/main/java/com/hz/employmentsite/mapper/cquery/PostCQuery.java

@@ -8,7 +8,7 @@ import java.util.List;
 
 public interface PostCQuery {
     List<PostVo> selectPostList(@Param("postIDList")String postIDList,@Param("professionName") String professionName, @Param("minCount")Integer minCount, @Param("maxCount")Integer maxCount,
-                                @Param("companyName")String companyName, @Param("RecordStatus") String RecordStatus,@Param("companyID")String companyID);
+                                @Param("companyName")String companyName, @Param("RecordStatus") String RecordStatus,@Param("companyID")String companyID,@Param("curLoginUserSiteCompanyIDs")String curLoginUserSiteCompanyIDs);
 
     List<RecommendPostVo> selectRecommendPostList(@Param("jobUserID") String jobUserID);
 

+ 2 - 2
src/main/java/com/hz/employmentsite/services/impl/baseSettings/SiteUserImpl.java

@@ -56,9 +56,9 @@ public class SiteUserImpl implements SiteUserService {
     @Autowired
     private UserService userService;
 
-    private final String MOBILE_REGEX = "0?(13|14|15|18|17)[0-9]{9}";
+    private final String MOBILE_REGEX = "0?(13|14|15|16|18|17|19)[0-9]{9}";
 
-    private final String ID_CARD_REGEX = "\\d{17}[\\d|x]|\\d{15}";
+    private final String ID_CARD_REGEX = "\\d{17}[\\d|X]|\\d{15}";
 
 
     @Override

+ 18 - 3
src/main/java/com/hz/employmentsite/services/impl/companyService/PostServiceImpl.java

@@ -44,13 +44,28 @@ public class PostServiceImpl implements PostService {
     @Autowired
     private PcCompanyMapper companyMapper;
 
+    @Autowired
+    private PcSiteUserMapper pcSiteUserMapper;
+
     @Autowired
     private DictionaryService dictionaryService;
 
     @Override
-    public PageInfo<PostVo> getList(Integer page, Integer rows, List<String> postIDList, String professionName, Integer minCount, Integer maxCount, String companyName, String recordStatus,String companyID) {
+    public PageInfo<PostVo> getList(Integer page, Integer rows, List<String> postIDList, String professionName, Integer minCount, Integer maxCount, String companyName, String recordStatus,String companyID,String loginUserID) {
         PageHelper.startPage(page, rows);
-        List<PostVo> list = postCQuery.selectPostList(stringUtils.ListToInSql(postIDList), professionName, minCount, maxCount, companyName, recordStatus,companyID);
+        List<String> curLoginUserSiteCompanyIDs = new ArrayList<>();
+        if(!stringUtils.IsNullOrEmpty(loginUserID)){
+            PcSiteUserExample siteUserExp = new PcSiteUserExample();
+            siteUserExp.or().andUserIDEqualTo(loginUserID);
+            var curLoginUserSiteID = pcSiteUserMapper.selectByExample(siteUserExp).get(0).getSiteID();
+            PcCompanyExample companyExp = new PcCompanyExample();
+            companyExp.or().andSiteIDEqualTo(curLoginUserSiteID);
+            var curLoginUserSiteCompanyList = companyMapper.selectByExample(companyExp).stream().toList();
+            for(PcCompany curLoginUserSiteCompany : curLoginUserSiteCompanyList){
+                curLoginUserSiteCompanyIDs.add(curLoginUserSiteCompany.getCompanyID());
+            }
+        }
+        List<PostVo> list = postCQuery.selectPostList(stringUtils.ListToInSql(postIDList), professionName, minCount, maxCount, companyName, recordStatus,companyID,stringUtils.ListToInSql(curLoginUserSiteCompanyIDs));
         PageInfo<PostVo> result = new PageInfo(list);
         return result;
 
@@ -222,7 +237,7 @@ public class PostServiceImpl implements PostService {
         }else{
             ids.add(id);
         }
-        return postCQuery.selectPostList(stringUtils.ListToInSql(ids), null, null, null, null, null,null).stream().findFirst().orElse(null);
+        return postCQuery.selectPostList(stringUtils.ListToInSql(ids), null, null, null, null, null,null,null).stream().findFirst().orElse(null);
     }
 
     @Override

+ 0 - 2
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/EducationServiceImpl.java

@@ -67,8 +67,6 @@ public class EducationServiceImpl implements EducationService {
             dbData.setCollegeDirection(data.getCollegeDirection());
             dbData.setMajor(data.getMajor());
             dbData.setIntroduce(data.getIntroduce());
-            dbData.setCreateTime(new Date());
-            dbData.setCreateUserID(userId);
             dbData.setModifyTime(new Date());
             dbData.setModifyUserID(userId);
             result = pcEducationMapper.updateByPrimaryKey(dbData);

+ 20 - 7
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobHuntServiceImpl.java

@@ -3,10 +3,7 @@ package com.hz.employmentsite.services.impl.jobUserManager;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.filter.exception.BaseException;
-import com.hz.employmentsite.mapper.PcJobhuntMapper;
-import com.hz.employmentsite.mapper.PcJobuserMapper;
-import com.hz.employmentsite.mapper.PcProfessionMapper;
-import com.hz.employmentsite.mapper.PcRecommendMgtMapper;
+import com.hz.employmentsite.mapper.*;
 import com.hz.employmentsite.mapper.cquery.JobHuntCQuery;
 import com.hz.employmentsite.model.*;
 import com.hz.employmentsite.services.service.jobUserManager.JobHuntService;
@@ -40,6 +37,10 @@ public class JobHuntServiceImpl implements JobHuntService {
     @Autowired
     private PcRecommendMgtMapper pcRecommendMgtMapper;
 
+    @Autowired
+    private PcSiteUserMapper pcSiteUserMapper;
+
+
     @Autowired
     private DictionaryService dictionaryService;
 
@@ -49,9 +50,21 @@ public class JobHuntServiceImpl implements JobHuntService {
     @Override
     public PageInfo<JobHuntVo> getList(Integer pageIndex, Integer pageSize, List<String> jobHuntIDList,String jobUserID, String jobUserName, String professionName,
                                        Integer minWorkYear, Integer maxWorkYear, Integer jobHuntTypeID, Integer jobUserTypeID,
-                                       BigDecimal minSalary, BigDecimal maxSalary, Integer isAccomplish) {
+                                       BigDecimal minSalary, BigDecimal maxSalary, Integer isAccomplish,String loginUserID) {
         PageHelper.startPage(pageIndex, pageSize);
-        List<JobHuntVo> list = jobhuntCQuery.getJobHuntList(stringUtils.ListToInSql(jobHuntIDList),jobUserID,jobUserName,professionName,minWorkYear, maxWorkYear, jobHuntTypeID, jobUserTypeID, minSalary, maxSalary, isAccomplish);
+        List<String> curLoginUserSiteJobUserIDs = new ArrayList<>();
+        if(!stringUtils.IsNullOrEmpty(loginUserID)){
+            PcSiteUserExample siteUserExp = new PcSiteUserExample();
+            siteUserExp.or().andUserIDEqualTo(loginUserID);
+            var curLoginUserSiteID = pcSiteUserMapper.selectByExample(siteUserExp).get(0).getSiteID();
+            PcJobuserExample jobUserExp = new PcJobuserExample();
+            jobUserExp.or().andSiteIDEqualTo(curLoginUserSiteID);
+            var curLoginUserSiteJobUserList = pcJobuserMapper.selectByExample(jobUserExp).stream().toList();
+            for(PcJobuser curLoginUserSiteJobUser : curLoginUserSiteJobUserList){
+                curLoginUserSiteJobUserIDs.add(curLoginUserSiteJobUser.getJobuserID());
+            }
+        }
+        List<JobHuntVo> list = jobhuntCQuery.getJobHuntList(stringUtils.ListToInSql(jobHuntIDList),jobUserID,jobUserName,professionName,minWorkYear, maxWorkYear, jobHuntTypeID, jobUserTypeID, minSalary, maxSalary, isAccomplish,stringUtils.ListToInSql(curLoginUserSiteJobUserIDs));
 
         PageInfo<JobHuntVo> result = new PageInfo(list);
 
@@ -67,7 +80,7 @@ public class JobHuntServiceImpl implements JobHuntService {
             ids.add(jobHuntId);
         }
         JobHuntVo model = jobhuntCQuery.getJobHuntList(stringUtils.ListToInSql(ids),null,null,null,null,null,
-                null,null,null,null,null).stream().findFirst().orElse(null);
+                null,null,null,null,null,null).stream().findFirst().orElse(null);
         return model;
     }
 

+ 1 - 1
src/main/java/com/hz/employmentsite/services/service/companyService/PostService.java

@@ -6,7 +6,7 @@ import com.hz.employmentsite.vo.companyService.PostVo;
 import java.util.List;
 
 public interface PostService {
-    PageInfo<PostVo> getList(Integer page, Integer rows, List<String> postIDList,String professionName, Integer minCount, Integer maxCount, String companyName,String RecordStatus ,String companyID);
+    PageInfo<PostVo> getList(Integer page, Integer rows, List<String> postIDList,String professionName, Integer minCount, Integer maxCount, String companyName,String RecordStatus,String companyID,String loginUserID);
     PageInfo<RecommendPostVo> getCommendPostList(Integer page, Integer rows, String jobUserID);
     Integer saveCommendPost(RecommendPostVo data, String userId);
     int save(PostVo data, String userId);

+ 1 - 1
src/main/java/com/hz/employmentsite/services/service/jobUserManager/JobHuntService.java

@@ -9,7 +9,7 @@ public interface JobHuntService {
 
     PageInfo<JobHuntVo> getList(Integer pageIndex, Integer pageSize,List<String> jobHuntIDList, String jobUserID, String jobUserName, String professionName,
                                 Integer minWorkYear, Integer maxWorkYear, Integer jobHuntTypeID, Integer jobUserTypeID,
-                                BigDecimal minSalary, BigDecimal maxSalary, Integer isAccomplish);
+                                BigDecimal minSalary, BigDecimal maxSalary, Integer isAccomplish, String loginUserID);
 
     JobHuntVo get(String jobHuntId);
 

+ 0 - 1
src/main/java/com/hz/employmentsite/vo/companyService/PostVo.java

@@ -120,7 +120,6 @@ public class PostVo {
     public Integer workNatureID;
     public String workNatureName;
     public Integer tagID;
-    public String bonus;
 
     public String loginUserID;
 }

+ 3 - 0
src/main/resources/mapping/cquery/JobHuntCQuery.xml

@@ -28,6 +28,9 @@
         <if test="jobUserID != '' and jobUserID != null">
             and jobHunt.jobUserID = #{jobUserID}
         </if>
+        <if test="curLoginUserSiteJobUserIDs != '' and curLoginUserSiteJobUserIDs != null">
+            and jobHunt.jobUserID in (${curLoginUserSiteJobUserIDs})
+        </if>
         <if test="jobUserName != '' and jobUserName != null">
             and jobUser.name like Concat('%',#{jobUserName},'%')
         </if>

+ 4 - 1
src/main/resources/mapping/cquery/PostCQuery.xml

@@ -7,7 +7,7 @@
         post.workYear,post.cultureRank,post.postDesc,post.maxSalary,post.minSalary,post.welfare,post.postEmail,post.workTime,post.isTrail,post.trailMonths,
         post.TrailMaxSalary,post.trailMinSalary,post.createUserID,post.createTime,post.modifyUserID,post.modifyTime,post.validTime,post.startTime,post.endTime,
         post.jobPlace,post.contactName,post.contactMobile,post.contactEmail,post.workNatureID,post.tagID,company.userName,company.userMobile,company.companyEmail,
-        company.CompanyName,company.insuredCount,company.bonus,item.`Name` as cultureLevelName,work_nature.Name as
+        company.CompanyName,company.insuredCount,item.`Name` as cultureLevelName,work_nature.Name as
         workNatureName,item2.`Name` as workYearStr
         , IFNULL(count(rmgt.RecommendMgtID),0) as recommendNum
         , company.SiteID, site.SiteName, inSites.InstitutionID, company.RegionCode
@@ -45,6 +45,9 @@
             <if test="companyID != null and companyID != ''">
                 and post.CompanyID = #{companyID}
             </if>
+            <if test="curLoginUserSiteCompanyIDs != '' and curLoginUserSiteCompanyIDs != null">
+                and post.companyID in (${curLoginUserSiteCompanyIDs})
+            </if>
         </where>
         group by
         post.postID,post.workCode,post.workName,post.recruitCount,post.companyID,post.postName,post.recordStatus,post.workNature,post.validDay,

+ 13 - 0
vue/src/api/jobUserManager/jobuser/index.ts

@@ -88,3 +88,16 @@ export function getExperienceList(id: any) {
     },
   );
 }
+
+export function getJobHuntList(id: any) {
+  return request(
+    {
+      url: "jobUserService/jobUser/getJobHuntList",
+      method: 'get',
+      params: {id},
+    },
+    {
+      isNew: true,
+    },
+  );
+}

+ 32 - 5
vue/src/views/baseSettings/institution/detail.vue

@@ -17,6 +17,9 @@
     </a-descriptions>
     <a-divider orientation="left">管理驿站 共计:{{ manageSiteList.length }}</a-divider>
     <a-table :columns="manageSitesTabColumns" :data-source="manageSiteList" :scroll="{ x:'100%', y: 200 }"
+             :pagination="manageSitesPagination"
+             :loading="manageSitesFormState.loading"
+             @change="manageSitesTableChange"
              bordered>
     </a-table>
     <a-divider orientation="left">其他信息</a-divider>
@@ -28,13 +31,16 @@
 </template>
 
 <script setup lang="ts">
-import {onMounted, reactive, ref} from "vue";
+import {computed, onMounted, reactive, ref} from "vue";
 import {getInstitutionByID} from "@/api/baseSettings/institution";
 import {getListByInstitutionID} from "@/api/baseSettings/siteInfo";
 import dayjs from "dayjs";
+import {getPaginationTotalTitle} from "@/utils/common";
+import type {TableProps} from "ant-design-vue";
 
 // 运营机构数据
 const institutionInfo = reactive({
+  institutionID: "",
   companyName: "",
   companyAddress: "",
   fzrName: "",
@@ -55,12 +61,23 @@ const manageSitesTabColumns = [
     title: '序号',
     align: "center",
     key: 'siteID',
-    customRender: item => `${pageParams.pageSize * (pageParams.pageIndex - 1) + item.index + 1}`
+    customRender: item => `${manageSitesPageParams.pageSize * (manageSitesPageParams.pageIndex - 1) + item.index + 1}`
   },
   {title: '驿站名称', dataIndex: 'siteName', key: 'siteName', align: "center"},
   {title: '驿站地址', dataIndex: 'detailAddress', key: 'detailAddress', align: "center"},
 ];
-const pageParams = reactive({
+const manageSitesPagination = computed(() => ({
+  total: manageSitesFormState.total,
+  current: manageSitesPageParams.pageIndex,
+  pageSize: manageSitesPageParams.pageSize,
+  showSizeChanger: true,
+  showTotal: total => getPaginationTotalTitle(total)
+}));
+const manageSitesFormState = reactive({
+  total: 0,
+  loading: false
+});
+const manageSitesPageParams = reactive({
   pageIndex: 1,
   pageSize: 10,
   institutionID: ''
@@ -80,12 +97,22 @@ function loadData(id: string) {
 
 // 获取关联驿站数据
 function getManageSites(id: string) {
-  pageParams.institutionID = id;
-  getListByInstitutionID(pageParams).then((result: any) => {
+  manageSitesPageParams.institutionID = id;
+  manageSitesFormState.loading = true;
+  getListByInstitutionID(manageSitesPageParams).then((result: any) => {
     manageSiteList.value = result.list;
+    manageSitesFormState.total = result.total;
+  }).finally(() => {
+    manageSitesFormState.loading = false;
   });
 }
 
+const manageSitesTableChange: TableProps['onChange'] = (pag: { pageSize: number; current: number },) => {
+  manageSitesPageParams.pageIndex = pag.current;
+  manageSitesPageParams.pageSize = pag.pageSize;
+  getManageSites(institutionInfo.institutionID);
+};
+
 
 // 页面初始化
 onMounted(() => {

+ 5 - 0
vue/src/views/baseSettings/siteInfo/detail.vue

@@ -16,6 +16,7 @@
     <a-divider orientation="left">站点工作人员</a-divider>
     <a-table :columns="siteUserColumns" :data-source="siteUserList" :scroll="{ x:'100%', y: 200 }"
              :pagination="siteUserTabPagination"
+             :loading="siteUserTabFormState.loading"
              @change="siteUserTabChange"
              bordered>
     </a-table>
@@ -96,8 +97,12 @@ function loadData(siteID: any) {
 // 查询站点人员数据
 function findSiteUser(siteId: string) {
   siteUserSearchParams["siteID"] = siteId;
+  siteUserTabFormState.loading = true;
   getSiteUserList(siteUserSearchParams).then((result: any) => {
     siteUserList.value = result.list;
+    siteUserTabFormState.total = result.total;
+  }).finally(() => {
+    siteUserTabFormState.loading = false;
   });
 }
 

+ 10 - 7
vue/src/views/baseSettings/siteInfo/edit.vue

@@ -47,19 +47,19 @@
       </a-row>
       <a-row type="flex">
         <a-col :span="7">
-          <a-form-item label="站点负责人"  name="fzrName" :label-col="{span:7}" :rules="[{ required: true, message: '请输入站点负责人!' }]">
+          <a-form-item label="站点负责人" name="fzrName" :label-col="{span:7}">
             <label v-if="opCategory==3">{{dataModel.fzrName }}</label>
             <a-input v-model:value="dataModel.fzrName" placeholder=""/>
           </a-form-item>
         </a-col>
         <a-col :span="8">
-          <a-form-item label="联系电话"  name="fzrMobile" :label-col="{span:7}" :rules="[{ required: true, message: '请输入联系电话!' }]">
+          <a-form-item label="联系电话" name="fzrMobile" :label-col="{span:7}">
             <label v-if="opCategory==3">{{dataModel.fzrMobile }}</label>
             <a-input v-model:value="dataModel.fzrMobile" placeholder=""/>
           </a-form-item>
         </a-col>
         <a-col :span="8">
-          <a-form-item label="经度"  name="siteLongitude" :label-col="{span:7}" :rules="[{ required: true, message: '请输入经度!' }]">
+          <a-form-item label="经度" name="siteLongitude" :label-col="{span:7}">
             <label v-if="opCategory==3">{{dataModel.siteLongitude }}</label>
             <a-input-number style="width: 100%" :controls="false" v-model:value="dataModel.siteLongitude" placeholder=""/>
           </a-form-item>
@@ -76,7 +76,7 @@
       </a-row>
       <a-row type="flex">
         <a-col :span="7">
-          <a-form-item label="纬度"  name="siteLatitude" :label-col="{span:7}" :rules="[{ required: true, message: '请输入站点负责人!' }]">
+          <a-form-item label="纬度" name="siteLatitude" :label-col="{span:7}">
             <label v-if="opCategory==3">{{dataModel.siteLatitude }}</label>
             <a-input-number style="width: 100%" :controls="false" v-model:value="dataModel.siteLatitude" placeholder=""/>
           </a-form-item>
@@ -306,7 +306,8 @@ export default defineComponent({
     const mobileValidate = ()=>{
       isAllowCommit.value = true;
       const mobileReg = /^1[3|4|5|6|7|8|9]\d{9}$/;
-      if(!mobileReg.test(formData.dataModel.fzrMobile)){
+      const landlineReg = /[0-9-()()]{7,18}/;
+      if (!mobileReg.test(formData.dataModel.fzrMobile) && !landlineReg.test(formData.dataModel.fzrMobile)) {
         message.error("输入的联系电话有误!");
         isAllowCommit.value = false;
       }
@@ -318,8 +319,10 @@ export default defineComponent({
       tabsViewStore.openTab('/baseSettings/site/index',{reload:reload});
     };
     const onFinish = () => {
-      mobileValidate();
-      /*validateSameUser();*/
+      isAllowCommit.value = true;
+      if (formData.dataModel.fzrMobile) {
+        mobileValidate();
+      }
       if (isAllowCommit.value){
         formData.dataModel.manageUsers = manageUsers.value;
         saveSite(formData.dataModel).then(result => {

+ 1 - 0
vue/src/views/baseSettings/siteUser/detail.vue

@@ -34,6 +34,7 @@
 <script setup lang="ts">
 import {onMounted, reactive, ref} from "vue";
 import {getSiteUserByID} from "@/api/baseSettings/userInfo";
+import BUploadFile from "@/components/file/uploadFile.vue";
 
 // 站点人员信息
 const siteUserInfo = reactive({

+ 4 - 3
vue/src/views/companyService/company/edit.vue

@@ -212,9 +212,7 @@
           </a-form-item>
         </a-col>
       </a-row>
-      <a-divider orientation="left">附件图片上传</a-divider>
-      <b-upload-file :fileRefId="dataModel.companyID" :readonly="false" :multiple="true" style="width: 100%;"
-                     :setFileList="setFileList" :accept="'.pdf,.png,.jpg'"  ></b-upload-file>
+
       <a-divider orientation="left">其他信息</a-divider>
       <a-row>
         <a-col :span="8">
@@ -358,6 +356,9 @@
           </a-form-item>
         </a-col>
       </a-row>
+      <a-divider orientation="left">附件图片上传</a-divider>
+      <b-upload-file :fileRefId="dataModel.companyID" :readonly="false" :multiple="true" style="width: 100%;"
+                     :setFileList="setFileList" :accept="'.pdf,.png,.jpg'"  ></b-upload-file>
       <a-form-item class="buttom-btns">
         <a-button @click="onClose">取消</a-button>
         <a-button type="primary" html-type="submit">提交</a-button>

+ 64 - 1
vue/src/views/jobUserManager/jobuser/vitae.vue

@@ -86,6 +86,10 @@
             </template>
           </template>
         </a-table>
+        <a-divider orientation="left">求职意向</a-divider>
+        <a-table :columns="jobHuntColumns" :data-source="jobHuntList" bordered :pagination="false"
+                 style="margin-left: 11px">
+        </a-table>
         <a-divider orientation="left">工作经历</a-divider>
         <a-timeline style="margin-left: 25px;">
           <a-timeline-item v-for="(item, key) in experienceData" :key="key" position="left">
@@ -107,6 +111,7 @@ import {ManOutlined, WomanOutlined} from '@ant-design/icons-vue';
 import type {SelectProps, TableColumnsType} from "ant-design-vue";
 import dayjs from "dayjs";
 import {getSysDictionaryList} from "@/api/system/dictionary";
+import {getJobHuntList} from "@/api/jobUserManager/jobhunt";
 
 // 求职人员信息
 const jobUserInfo = reactive({
@@ -180,6 +185,51 @@ const searchParams = reactive({
 });
 // 工作经验数据
 const experienceData = ref<Array<any>>([]);
+// 求职意向数据
+const jobHuntList = ref<Array<any>>([]);
+// 求职意向表格定义
+const jobHuntColumns: TableColumnsType = [
+  {
+    title: '序号',
+    align: 'center',
+    width: 80,
+    key: 'jobHuntID',
+    customRender: (item) =>
+      `${searchParams.pageSize * (searchParams.pageIndex - 1) + item.index + 1}`,
+  },
+  {title: '希望工作地区', dataIndex: 'areaWork', key: 'areaWork', width: 150, align: "center",},
+  {
+    title: '可到职日期', dataIndex: 'inDate', key: 'inDate', width: 100, align: "center",
+    customRender: ({record}) => record.inDate == null ? "" : dayjs(record.inDate).format('YYYY-MM-DD'),
+  },
+  {title: '工作年限', dataIndex: 'workYear', key: 'workYear', align: "center",},
+  {title: '求职类型', dataIndex: 'jobHuntTypeStr', key: 'jobHuntTypeStr', align: "center",},
+  {title: '求职岗位', dataIndex: 'professionName', key: 'professionName', align: "center",},
+  {title: '人才类型', dataIndex: 'jobUserTypeStr', key: 'jobUserTypeStr', align: "center",},
+  {
+    title: '月薪要求', dataIndex: 'salary', key: 'salary', align: "center",
+    customRender: (item) => {
+      const salary = showSalary(item.record.minSalary, item.record.maxSalary);
+      return salary;
+    }
+  },
+];
+// 期望月薪显示优化方法
+const showSalary = (minSalary: any, maxSalary: any) => {
+  if (minSalary != null) {
+    if (maxSalary != null) {
+      return minSalary.toString() + "-" + maxSalary.toString();
+    } else {
+      return "≥" + minSalary.toString();
+    }
+  } else {
+    if (maxSalary != null) {
+      return "≤" + maxSalary.toString();
+    } else {
+      return "";
+    }
+  }
+}
 // 教育经历数据
 const cultureList = ref<SelectProps['options']>();
 
@@ -217,6 +267,18 @@ const loadExperienceData = (id: any) => {
   })
 }
 
+// 加载求职意向数据
+function loadJobHuntData(jobUserID: any) {
+  let params = {
+    pageIndex: 1,
+    pageSize: 999,
+    jobUserID
+  }
+  getJobHuntList(params).then(result => {
+    jobHuntList.value = result.list
+  })
+}
+
 // 获取教育经历数据
 const getCultureList = () => {
   getSysDictionaryList('HighestDegree').then((data) => {
@@ -238,7 +300,8 @@ onMounted(() => {
   if (id) {
     loadData(id);
     loadEducation(id);
-    loadExperienceData(id)
+    loadExperienceData(id);
+    loadJobHuntData(id);
   }
   getCultureList()
 })

+ 31 - 3
vue/src/views/taskAndLog/dotask/detail.vue

@@ -9,11 +9,13 @@
         }}
       </a-descriptions-item>
       <a-descriptions-item label="所属县区">{{ taskInfo.regionName }}</a-descriptions-item>
-      <!--      <a-descriptions-item :span="2" label="所属街道">{{ taskInfo.streetName }}</a-descriptions-item>-->
       <a-descriptions-item label="任务内容">{{ taskInfo.workContent }}</a-descriptions-item>
     </a-descriptions>
     <a-divider orientation="left">任务执行人员 共计:{{ userData.length }}</a-divider>
     <a-table :columns="columns" :data-source="userData"
+             :pagination="taskUserTabPagination"
+             :loading="taskUserFormState.loading"
+             @change="taskUserTabChange"
              bordered>
       <template #bodyCell="{ column ,index}">
         <template v-if="column.key === 'siteUserName'">
@@ -42,11 +44,12 @@
 </template>
 
 <script lang="ts" setup>
-import {onMounted, reactive, ref} from "vue";
+import {computed, onMounted, reactive, ref} from "vue";
 import {getDataById, getWorkUserList} from "@/api/taskAndLog/dotask";
-import type {TableColumnsType} from "ant-design-vue";
+import type {TableColumnsType, TableProps} from "ant-design-vue";
 import BUploadFile from "@/components/file/uploadFile.vue";
 import dayjs from "dayjs";
+import {getPaginationTotalTitle} from "@/utils/common";
 
 // 任务信息
 const taskInfo = reactive({
@@ -88,15 +91,33 @@ const columns: TableColumnsType = [
     title: '执行情况', dataIndex: 'taskStatusName', key: 'taskStatusName', align: "center", width: 120
   },
 ]
+const taskUserTabFormState = reactive({
+  total: 0,
+  loading: false
+});
+const taskUserTabPagination = computed(() => ({
+  total: taskUserTabFormState.total,
+  current: searchParams.pageIndex,
+  pageSize: searchParams.pageSize,
+  showSizeChanger: true,
+  showTotal: total => getPaginationTotalTitle(total)
+}));
+const taskUserFormState = reactive({
+  total: 0,
+  loading: false
+});
 // 文件列表
 const fileList = ref();
 
 // 人员列表加载
 function loadUserData(id: any) {
+  taskUserFormState.loading = true;
   getWorkUserList(id).then(data => {
     if (data) {
       userData.value = data;
     }
+  }).finally(() => {
+    taskUserFormState.loading = false;
   });
 }
 
@@ -114,6 +135,13 @@ const setFileList = (files) => {
   fileList.value = files;
 };
 
+// 站点人员表格变更
+const taskUserTabChange: TableProps['onChange'] = (pag: { pageSize: number; current: number },) => {
+  searchParams.pageIndex = pag.current;
+  searchParams.pageSize = pag.pageSize;
+  loadUserData(taskInfo.doTaskID);
+};
+
 // 页面初始化
 onMounted(() => {
   const id = history.state.params?.id;