Sfoglia il codice sorgente

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

pengjing 10 mesi fa
parent
commit
7bd8b7aa3e
45 ha cambiato i file con 955 aggiunte e 313 eliminazioni
  1. 14 0
      h5app/src/api/recommendmgt/index.ts
  2. 0 105
      h5app/src/components/areaPicker.vue
  3. 302 0
      h5app/src/components/ocCategorySelection.vue
  4. 7 7
      h5app/src/router/index.ts
  5. 209 16
      h5app/src/views/pages/company/detail.vue
  6. 10 3
      h5app/src/views/pages/company/editPost.vue
  7. 1 1
      h5app/src/views/pages/company/postList.vue
  8. 40 6
      h5app/src/views/pages/jobUserInfo/jobHuntEdit.vue
  9. 7 1
      h5app/src/views/pages/jobUserInfo/postEdit.vue
  10. 1 1
      h5app/src/views/pages/jobUserInfo/postList.vue
  11. 44 10
      h5app/src/views/pages/jobUserInfo/userEdit.vue
  12. 2 2
      h5app/src/views/pages/jobhunt/detail.vue
  13. 36 13
      h5app/src/views/pages/jobhunt/edit.vue
  14. 39 5
      h5app/src/views/pages/jobhunt/jobHuntEdit.vue
  15. 1 2
      h5app/src/views/pages/post/recommendJob.vue
  16. 10 11
      h5app/src/views/pages/work/log/list.vue
  17. 4 4
      h5app/src/views/sapp/tabMain.vue
  18. 2 1
      src/main/java/com/hz/employmentsite/controller/jobUserManager/JobUserController.java
  19. 8 4
      src/main/java/com/hz/employmentsite/controller/jobUserManager/RecommendMgtController.java
  20. 3 4
      src/main/java/com/hz/employmentsite/mapper/cquery/RecommendMgtCQuery.java
  21. 4 4
      src/main/java/com/hz/employmentsite/model/PcJobuser.java
  22. 4 4
      src/main/java/com/hz/employmentsite/services/impl/jobUserManager/RecommendMgtServiceImpl.java
  23. 3 4
      src/main/java/com/hz/employmentsite/services/service/jobUserManager/RecommendMgtService.java
  24. 1 0
      src/main/java/com/hz/employmentsite/vo/companyService/PostVo.java
  25. 2 1
      src/main/java/com/hz/employmentsite/vo/jobUserManager/JobUserVo.java
  26. 8 0
      src/main/java/com/hz/employmentsite/vo/jobUserManager/OccupationCategory.java
  27. 1 0
      src/main/java/com/hz/employmentsite/vo/jobUserManager/RecommendMgtVo.java
  28. 35 35
      src/main/resources/mapping/PcJobuserMapper.xml
  29. 7 5
      src/main/resources/mapping/cquery/JobHuntCQuery.xml
  30. 3 1
      src/main/resources/mapping/cquery/JobUserCQuery.xml
  31. 12 15
      src/main/resources/mapping/cquery/PostCQuery.xml
  32. 14 4
      src/main/resources/mapping/cquery/RecommendMgtCQuery.xml
  33. 10 2
      vue/src/views/baseSettings/institution/index.vue
  34. 10 2
      vue/src/views/baseSettings/siteInfo/index.vue
  35. 11 3
      vue/src/views/baseSettings/siteUser/index.vue
  36. 2 1
      vue/src/views/companyService/company/edit.vue
  37. 9 2
      vue/src/views/companyService/company/index.vue
  38. 13 6
      vue/src/views/companyService/post/index.vue
  39. 4 2
      vue/src/views/companyService/post/recommend.vue
  40. 19 8
      vue/src/views/jobUserManager/jobhunt/index.vue
  41. 1 1
      vue/src/views/jobUserManager/jobhunt/recommend.vue
  42. 13 6
      vue/src/views/jobUserManager/jobuser/index.vue
  43. 10 8
      vue/src/views/jobUserManager/jobuser/vitae.vue
  44. 9 2
      vue/src/views/taskAndLog/dotask/index.vue
  45. 10 1
      vue/src/views/taskAndLog/dowork/index.vue

+ 14 - 0
h5app/src/api/recommendmgt/index.ts

@@ -89,4 +89,18 @@ export function getProfessionLevelList() {
             isNew: true,
         },
     );
+}
+
+
+export function getOccupationCategoryList() {
+    return request<object>(
+        {
+            url: "jobusermgr/recommendmgt/getOccupationCategoryList",
+            method: 'get',
+            params: null,
+        },
+        {
+            isNew: true,
+        },
+    );
 }

+ 0 - 105
h5app/src/components/areaPicker.vue

@@ -1,105 +0,0 @@
-<template>
-  <ion-button style="color: #02a6f1;font-size: 15px;" fill="clear" @click="openPicker()">选择</ion-button>
-</template>
-
-<script lang="ts">
-import {ref, watch, defineComponent} from 'vue';
-import {pickerController} from '@ionic/vue';
-import {PickerButton, PickerColumnOption, PickerColumn, PickerOptions} from '@ionic/core';
-import {getRegionCodeList,getStreetCodeList} from "@/api/system/area";
-
-interface PickerColumnOptions extends PickerColumnOption {
-  parent?: any;
-}
-
-export default defineComponent({
-  name: 'areaPicker',
-  props: {
-    code: {type: String, default: ''},
-    },
-  setup(props,context) {
-    const cityList = ref();
-    const areaList = ref();
-    //const pickerOptions = ref<PickerOptions>();
-    const pickerColumns = ref<PickerColumn[]>([]);
-    const pickerButtons = ref<PickerButton[]>([]);
-    const CityOptions = ref<PickerColumnOptions[]>([]);
-    const AreaOptions = ref<PickerColumnOptions[]>([]);
-    const oldCityCode = ref(props.code);
-    const oldAreaCode = ref();
-
-
-    pickerColumns.value = [
-      {name: 'one', selectedIndex: 0, options: CityOptions.value},
-      {name: 'two', selectedIndex: 1, options: AreaOptions.value},
-    ]
-    pickerButtons.value = [
-      {text: '取消', role: 'cancel',},
-      {
-        text: '确定',
-        handler: (value) => {
-          context.emit("SetAreaCode",value.three);
-        },
-      },
-    ];
-
-    getRegionCodeList().then(data => {
-      cityList.value = data;
-
-      CityOptions.value = cityList.value.map((m: any) => ({
-        text: m.name,
-        value: m.code,
-        parent: m.fid,
-        selected: false
-      }));
-      CityOptions.value[0].selected=true;
-      oldCityCode.value = pickerColumns.value[0]?.options[0].value;
-    });
-
-    getStreetCodeList("").then(data=>{
-      AreaOptions.value = areaList.value.map((m: any) => ({
-        text: m.name,
-        value: m.code,
-        parent: m.fid,
-        selected: false
-      }))
-      AreaOptions.value[0].selected=true;
-      oldAreaCode.value = pickerColumns.value[1]?.options[0].value;
-    })
-
-    const picker = ref();
-    const openPicker = async () => {
-      picker.value = await pickerController.create({
-        columns: pickerColumns.value,
-        buttons: pickerButtons.value
-      });
-
-      watch(pickerColumns.value.filter(f=>f.name=="one")[0].options.filter(f=>f.selected==true)[0], () => {
-        const newVal = pickerColumns.value.filter(f=>f.name=="one")[0].options.filter(f=>f.selected==true)[0];
-        if (oldCityCode.value != newVal?.value) {
-          pickerColumns.value.map(x => {
-            if (x.name == "two") {
-              x.options = AreaOptions.value.filter(x => x.parent==newVal?.value);
-              if(x.options.length>0){
-                oldAreaCode.value = x.options[0].value;
-                x.options[0].selected=true;
-              }
-            }
-          })
-
-          pickerController.dismiss().then((e) => {console.log(e)})
-          openPicker()
-          oldCityCode.value = newVal?.value;
-        }
-      });
-
-      await picker.value.present();
-    }
-
-    return {
-      openPicker,
-    }
-  }
-});
-</script>
-

+ 302 - 0
h5app/src/components/ocCategorySelection.vue

@@ -0,0 +1,302 @@
+<style>
+ion-modal {
+  --height: 50%;
+  --border-radius: 16px;
+  --box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
+}
+
+ion-modal::part(backdrop) {
+  background: rgba(209, 213, 219);
+  opacity: 1;
+}
+
+ion-modal ion-toolbar {
+  --background: white;
+  --color: white;
+}
+
+ion-toolbar {
+  padding-left: 0 !important;
+  padding-right: 0 !important;
+  --padding-start: 0;
+  --padding-end: 0;
+}
+
+ion-toolbar ion-item:first-child {
+  --inner-border-width: 0 0 0 0;
+  text-align: center;
+}
+
+ion-toolbar ion-item:last-child {
+  --padding-start: 0;
+  --inner-padding-end: 0;
+}
+
+ion-segment {
+  width: 100%;
+  --background: #ffffff;
+}
+
+ion-segment-button {
+  --indicator-color: rgba(254, 255, 255, 0.97);
+  --color: #000000;
+  --color-checked: #1a65eb;
+  --background-hover: rgba(47, 107, 215, 0.98);
+  --border-width: 0 0 0 0;
+  --indicator-box-shadow: 0 0 0 0;
+}
+
+/*!* Material Design styles *!*/
+/*ion-segment-button.md {*/
+/*  --color: #000;*/
+/*  --color-checked: #1a65eb;*/
+/*  --border-radius: 0px;*/
+/*  --border-width: 0 0 0 0;*/
+/*}*/
+
+/*!* iOS styles *!*/
+/*ion-segment-button.ios {*/
+/*  --color: #000;*/
+/*  --color-checked: #1a65eb;*/
+/*  --border-radius: 0px;*/
+/*  --border-width: 0 0 0 0;*/
+/*}*/
+
+.custom-scroll {
+  overflow-y: auto; /* 显示垂直滚动条 */
+  max-height: 200px; /* 设置最大高度,超出部分会出现滚动条 */
+}
+
+/* 可以根据需要自定义滚动条的样式 */
+.custom-scroll::-webkit-scrollbar {
+  width: 8px;
+}
+
+.custom-scroll::-webkit-scrollbar-thumb {
+  background-color: #888;
+  border-radius: 4px;
+}
+
+.custom-scroll::-webkit-scrollbar-thumb:hover {
+  background-color: #555;
+}
+
+</style>
+
+<template>
+  <ion-button id="open-modal" style="color: #02a6f1;font-size: 15px;" fill="clear" @click="loadOccupationalID">选择
+  </ion-button>
+  <ion-page>
+    <ion-content class="ion-padding">
+      <ion-modal trigger="open-modal" :backdrop-dismiss="false" :is-open="isOpen" :initial-breakpoint="1"
+                 :breakpoints="[0, 1]">
+        <ion-toolbar>
+          <ion-item>
+            <ion-buttons slot="start">
+              <ion-button fill="clear" @click="onCancel">取消</ion-button>
+            </ion-buttons>
+            <ion-label style="font-size: 12px;white-space: pre-wrap; word-wrap: break-word;">
+              {{ selectOccupationInfo.text }}
+            </ion-label>
+            <ion-buttons slot="end">
+              <ion-button fill="clear" :disabled="selectOccupationInfo.value==''" @click="onConfirm">确定</ion-button>
+            </ion-buttons>
+          </ion-item>
+          <ion-item>
+            <ion-segment value="0">
+              <ion-segment-button v-for="(item,key) in selectModelList" :key="key" @click="onSelectType(item.index)"
+                                  :disabled="item.disabled" :value="item.index">
+                <ion-label :style="{color:item.isSelect?'#1a65eb':'#000000'}">{{ item.name }}</ion-label>
+              </ion-segment-button>
+            </ion-segment>
+          </ion-item>
+        </ion-toolbar>
+        <div class="bw-vue-list">
+          <div class="list-content">
+            <ion-list class="custom-scroll" v-show="selectModelList[selectType.one].isSelect">
+              <ion-item v-for="(item, index) in selectModelList[selectType.one].occupationList" :key="index">
+                <ion-label :style="{color:item.isSelect?'#1a65eb':'#000000'}"
+                           @click="onSelect(item,selectType.one)">
+                  {{ item.occupationalName }}
+                </ion-label>
+              </ion-item>
+            </ion-list>
+            <ion-list class="custom-scroll" v-show="selectModelList[selectType.two].isSelect">
+              <ion-item v-for="(item, index) in selectModelList[selectType.two].occupationList" :key="index">
+                <ion-label :style="{color:item.isSelect?'#1a65eb':'#000000'}"
+                           @click="onSelect(item,selectType.two)">
+                  {{ item.occupationalName }}
+                </ion-label>
+              </ion-item>
+            </ion-list>
+          </div>
+        </div>
+      </ion-modal>
+    </ion-content>
+  </ion-page>
+</template>
+
+<script lang="ts">
+import {defineComponent, reactive, ref} from 'vue';
+import {getOccupationCategoryList} from "@/api/recommendmgt";
+
+export default defineComponent({
+  name: "ocCategorySelection",
+  props: {
+    OccupationalID: {type: String, default: ''},
+  },
+  setup(props, context) {
+    const selectType = {
+      one: 0,
+      two: 1,
+    }
+    const isOpen = ref(false);
+    const selectModelList = reactive([
+      {
+        index: 0,
+        name: '资格类别',
+        isSelect: false,
+        disabled: true,
+        occupationalName: '',
+        occupationalID: '',
+        occupationList: [] as any
+      },
+      {
+        index: 1,
+        name: '资格名称',
+        isSelect: false,
+        disabled: true,
+        occupationalName: '',
+        occupationalID: '',
+        occupationList: [] as any
+      }]);
+    const selectOccupationInfo = reactive({value: '', text: ''})
+    const occupationalCategoryList = ref();
+
+    const loadOccupationalID = () => {
+      getOccupationCategoryList().then(data => {
+        occupationalCategoryList.value = data;
+        if (!props.OccupationalID) {
+          selectModelList[selectType.one].isSelect = true;
+          selectModelList[selectType.one].disabled = false;
+          selectModelList[selectType.one].occupationalName = ''
+          selectModelList[selectType.one].occupationalID = ''
+          selectModelList[selectType.one].occupationList = occupationalCategoryList.value.filter((x: any) => x.occupationalLevel == "1")
+              .map((x: any) => ({
+                ...x,
+                isSelect: false
+              }));
+        }
+        else {
+
+          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].disabled = false;
+          selectModelList[selectType.one].occupationalName = oneInfo.occupationalName;
+          selectModelList[selectType.one].occupationalID = oneInfo.occupationalID;
+          selectModelList[selectType.one].occupationList = occupationalCategoryList.value.filter((x: any) => x.occupationalLevel == "1")
+              .map((x: any) => ({
+                ...x,
+                isSelect: false
+              }));
+          selectModelList[selectType.one].occupationList.find((x: any) => x.occupationalID == oneInfo.occupationalID).isSelect = true;
+
+          selectModelList[selectType.two].isSelect = true;
+          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"
+              && x.parentOccupationalID == oneInfo.occupationalID).map((x: any) => ({
+            ...x,
+            isSelect: false
+          }));
+          selectModelList[selectType.two].occupationList.find((x: any) => x.occupationalID == twoInfo.occupationalID).isSelect = true;
+
+          getSelectOccupation();
+        }
+      });
+      isOpen.value = true;
+    }
+
+    const onSelectType = (type: number) => {
+      if (selectType.one == type) {
+        selectModelList.map(x => {
+          x.isSelect = false
+          x.disabled = true
+          x.occupationalName = ''
+          x.occupationalID = ''
+          x.occupationList = []
+        });
+
+        selectModelList[selectType.one].isSelect = true;
+        selectModelList[selectType.one].disabled = false;
+        selectModelList[selectType.one].occupationList = occupationalCategoryList.value.filter((x: any) => x.occupationalLevel == "1")
+            .map((x: any) => ({
+              ...x,
+              isSelect: false
+            }));
+      }
+
+
+      if (selectType.two == type) {
+        selectModelList[selectType.one].isSelect = false;
+
+        selectModelList[selectType.two].isSelect = true;
+        selectModelList[selectType.two].disabled = false;
+        selectModelList[selectType.two].occupationalName = '';
+        selectModelList[selectType.two].occupationalID = '';
+        selectModelList[selectType.two].occupationList = occupationalCategoryList.value.filter((x: any) => x.occupationalLevel == "2"
+            && x.parentOccupationalID == selectModelList[selectType.one].occupationalID).map((x: any) => ({
+          ...x,
+          isSelect: false
+        }));
+
+      }
+
+      getSelectOccupation();
+    }
+
+    const onSelect = (item: any, type: any) => {
+
+      selectModelList[type].occupationList.forEach((x: any) => {
+        x.isSelect = x.occupationalID == item.occupationalID;
+      });
+      selectModelList[type].occupationalName = item.occupationalName;
+      selectModelList[type].occupationalID = item.occupationalID;
+
+      if (type == selectType.one) {
+        onSelectType(selectType.two);
+      }
+
+      getSelectOccupation();
+    }
+
+    const getSelectOccupation = () => {
+      selectOccupationInfo.text = selectModelList.filter(x => x.occupationalName != '').map(x => x.occupationalName).join("-");
+      selectOccupationInfo.value = selectModelList[selectType.two].occupationalID;
+    }
+
+    const onCancel = () => {
+      isOpen.value = false;
+    }
+
+    const onConfirm = () => {
+      isOpen.value = false;
+      context.emit("SetOccupationalID", selectOccupationInfo);
+    }
+    return {
+      isOpen,
+      selectType,
+      selectModelList,
+      selectOccupationInfo,
+      loadOccupationalID,
+      onSelectType,
+      onSelect,
+      onCancel,
+      onConfirm,
+    };
+  }
+})
+</script>

+ 7 - 7
h5app/src/router/index.ts

@@ -110,31 +110,31 @@ const routes: Array<RouteRecordRaw> = [
                 component: () => import('@/views/pages/post/detail.vue')
             },
             {
-                path: 'tabMain/work/log/list',
+                path: 'tabMain/workLog/list',
                 component: () => import('@/views/pages/work/log/list.vue')
             },
             {
-                path: 'tabMain/work/log/edit',
+                path: 'tabMain/workLog/edit',
                 component: () => import('@/views/pages/work/log/edit.vue')
             },
             {
-                path: 'tabMain/work/log/detail',
+                path: 'tabMain/workLog/detail',
                 component: () => import('@/views/pages/work/log/detail.vue')
             },
             {
-                path: 'tabMain/work/task/list',
+                path: 'tabMain/workTask/list',
                 component: () => import('@/views/pages/work/task/list.vue')
             },
             {
-                path: 'tabMain/work/task/edit',
+                path: 'tabMain/workTask/edit',
                 component: () => import('@/views/pages/work/task/edit.vue')
             },
             {
-                path: 'tabMain/work/task/detail',
+                path: 'tabMain/workTask/detail',
                 component: () => import('@/views/pages/work/task/detail.vue')
             },
             {
-                path: 'tabMain/work/task/myTask',
+                path: 'tabMain/workTask/myTask',
                 component: () => import('@/views/pages/work/task/myTask.vue')
             },
             {

+ 209 - 16
h5app/src/views/pages/company/detail.vue

@@ -11,8 +11,22 @@
       </ion-toolbar>
     </ion-header>
     <ion-content>
+      <div class="tabs-striped tabs-top tabs-background-positive tabs-color-light" v-if="curTabIndex!=3">
+        <div class="tabs">
+          <div :class="curTabIndex==1?'active tab-item':'passive tab-item'">
+            <a @click="onTabChange(1)">
+              企业信息
+            </a>
+          </div>
+          <div :class="curTabIndex==2?'active tab-item':'passive tab-item'">
+            <a  @click="onTabChange(2)">
+              岗位信息
+            </a>
+          </div>
+        </div>
+      </div>
       <div class="bw-vue-form">
-        <div class="menu1">
+        <div v-show="curTabIndex==1">
           <div class="form-detail">
             <ion-label>企业名称</ion-label>
             <ion-text>{{ dataModel.companyName }}</ion-text>
@@ -55,11 +69,11 @@
           </div>
           <div class="form-detail">
             <ion-label>营业执照有效期</ion-label>
-            <ion-text>{{ dayjs(dataModel.validDate).format("YYYY-MM-DD") }}</ion-text>
+            <ion-text v-if="dataModel.validDate!=null">{{ dayjs(dataModel.validDate).format("YYYY-MM-DD") }}</ion-text>
           </div>
           <div class="form-detail">
             <ion-label>成立日期</ion-label>
-            <ion-text>{{ dayjs(dataModel.establishmentTime).format("YYYY-MM-DD") }}</ion-text>
+            <ion-text v-if="dataModel.establishmentTime!=null">{{ dayjs(dataModel.establishmentTime).format("YYYY-MM-DD") }}</ion-text>
           </div>
           <div class="form-detail">
             <ion-label>注册资本(万元)</ion-label>
@@ -91,7 +105,7 @@
           </div>
           <div class="form-detail">
             <ion-label>企业网站</ion-label>
-            <ion-text  style="width: 60%;">{{ dataModel.website }}</ion-text>
+            <ion-text  style="width: 60%;text-align: right;">{{ dataModel.website }}</ion-text>
           </div>
           <div class="form-detail">
             <ion-label>企业福利</ion-label>
@@ -114,7 +128,105 @@
             <ion-text>{{ dataModel.companyDesc }}</ion-text>
           </div>
         </div>
+        <div v-show="curTabIndex==2">
+            <div v-if="!loading" id="postList" >
+              <div v-for="(record,key) in curCompanyPostList" :key="key" >
+                  <ion-item detail @click="onPostEdit(record.postID)" class="ion-item">
+                    <ion-label>
+                      <h2>
+                        {{ record.professionName }}
+                      </h2>
+                      <p v-if="record.startTime!=null&&record.endTime!=null">
+                        {{ dayjs(record.startTime).format("YYYY-MM-DD") }}至{{ dayjs(record.endTime).format("YYYY-MM-DD") }}
+                      </p>
+                      <p v-if="record.startTime==null||record.endTime==null">
+                        暂未设置有效期限
+                      </p>
+                      <p>
+                        招聘人数:{{ record.recruitCount }} 人
+                      </p>
+                    </ion-label>
+                  </ion-item>
+              </div>
+            </div>
+          </div>
+        <div v-show="curTabIndex==3">
+          <div class="form-detail">
+            <ion-label>岗位名称</ion-label>
+            <ion-text>{{ curCompanyPostInfo.professionName }}</ion-text>
+          </div>
+          <div class="form-detail">
+            <ion-label>招聘数量(人)</ion-label>
+            <ion-text>{{ curCompanyPostInfo.recruitCount }}</ion-text>
+          </div>
+          <div class="form-detail">
+            <ion-label>招聘日期</ion-label>
+            <ion-text>{{ dayjs(curCompanyPostInfo.startTime).format("YYYY-MM-DD")+"至"+dayjs(curCompanyPostInfo.endTime).format("YYYY-MM-DD") }}</ion-text>
+          </div>
+          <div class="form-detail">
+            <ion-label>招聘地点</ion-label>
+            <ion-text>{{ curCompanyPostInfo.jobPlace }}</ion-text>
+          </div>
+          <div class="form-detail">
+            <ion-label>工作性质</ion-label>
+            <ion-text>{{ curCompanyPostInfo.workNatureName }}</ion-text>
+          </div>
+          <div class="form-detail">
+            <ion-label>岗位月薪(元)</ion-label>
+            <ion-text>{{ curCompanyPostInfo.minSalary+"-"+curCompanyPostInfo.maxSalary }}</ion-text>
+          </div>
+          <div class="form-detail" name="isTrailName">
+            <ion-label>是否有试用期</ion-label>
+            <ion-text>{{ curCompanyPostInfo.isTrailName }}</ion-text>
+          </div>
+          <div class="form-detail">
+            <ion-label>试用期(月)</ion-label>
+            <ion-text>{{ curCompanyPostInfo.trailMonths }}</ion-text>
+          </div>
+          <div class="form-detail">
+            <ion-label>试用期月薪(元)</ion-label>
+            <ion-text>{{ curCompanyPostInfo.trailMinSalary+"-"+curCompanyPostInfo.trailMaxSalary }}</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>
+          </div>
+          <div class="form-detail">
+            <ion-label>其他要求</ion-label>
+            <ion-text>{{ curCompanyPostInfo.workYear }}</ion-text>
+          </div>
+          <div class="form-detail">
+            <ion-label>福利待遇</ion-label>
+            <ion-text>{{ curCompanyPostInfo.welfare }}</ion-text>
+          </div>
+          <div class="form-detail">
+            <ion-label>岗位联系人</ion-label>
+            <ion-text>{{ curCompanyPostInfo.userName }}</ion-text>
+          </div>
+          <div class="form-detail">
+            <ion-label>岗位联系电话</ion-label>
+            <ion-text>{{ curCompanyPostInfo.userMobile }}</ion-text>
+          </div>
+          <div class="form-detail">
+            <ion-label>岗位联系人邮箱</ion-label>
+            <ion-text>{{ curCompanyPostInfo.companyName }}</ion-text>
+          </div>
+          <div class="form-detail" name="tagName">
+            <ion-label>岗位标签</ion-label>
+            <ion-text>{{ curCompanyPostInfo.TagName }}</ion-text>
+          </div>
+        </div>
       </div>
+      <ion-infinite-scroll  threshold="100px" @ionInfinite="onScroll($event)">
+        <ion-infinite-scroll-content
+            :loadingText="pageParams.total>pageParams.pageIndex*pageParams.pageSize?'正在加载...':'暂无更多'"
+            loadingSpinner="bubbles">
+        </ion-infinite-scroll-content>
+      </ion-infinite-scroll>
     </ion-content>
     <ion-footer>
     </ion-footer>
@@ -123,9 +235,9 @@
 <script lang="ts">
 import {defineComponent, ref, reactive, watch, toRefs} from "vue";
 import {useRoute, useRouter} from "vue-router";
-import {getCompanyById} from "@/api/company";
-import {onIonViewDidEnter} from "@ionic/vue";
+import {getCompanyById,getCompanyPostList} from "@/api/company";
 import {arrowBackOutline} from 'ionicons/icons';
+import {onIonViewDidEnter} from '@ionic/vue';
 import dayjs from "dayjs";
 
 interface FormData{
@@ -136,26 +248,49 @@ export default defineComponent({
   setup() {
     const router = useRouter();
     const route = useRoute();
+    const pageParams = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      total:0,
+      companyID:''
+    });
+    const curTabIndex = ref(1);
     const loading = ref<boolean>(false);
     const formData = reactive<FormData>({
-      dataModel: {
-        companyID:null,
-        companyName:null
-      }
+      dataModel: {}
     });
-    const onBack=()=>{
-      router.push({path:'./list',query:{reload:1}});
-    };
+    const curCompanyPostList = ref<any>([]);
+    const curCompanyPostInfo = ref<any>({});
 
-    const onPathForward = (pathValue:string,statusValue:any)=>{
-      router.push({path: pathValue, query: {reload:1,id:formData.dataModel.companyID,status:statusValue}});
+    const onBack=()=>{
+      if(curTabIndex.value!=3){
+        router.push({path:"./list",query:{reload:1}});
+      }else{
+        curTabIndex.value = 2;
+      }
     };
+    const onScroll = (e: any) => {
+      setTimeout(() => {
+        e.target.complete();
+        if (pageParams.total > pageParams.pageIndex * pageParams.pageSize) {
+          pageParams.pageSize += 10;
+          loadData(pageParams.companyID,route.query.loginUserID);
+        }
+      }, 500);
+    }
 
     const loadData = async (companyID:any,loginUserID:any)=>{
       loading.value = true;
+      curTabIndex.value = 1;
+      pageParams.companyID = companyID;
       const reqData = await getCompanyById(companyID,loginUserID);
       formData.dataModel = reqData;
       console.log("dataModel",formData.dataModel);
+      const result = await getCompanyPostList(pageParams);
+      pageParams.total = result.total;
+      console.log("pageParams",pageParams);
+      curCompanyPostList.value = curCompanyPostList.value.concat(result.list);
+      console.log("postList",curCompanyPostList.value);
       loading.value = false;
     };
 
@@ -163,6 +298,19 @@ export default defineComponent({
       loadData(companyID,loginUserID);
     };
 
+    const onTabChange = (tabIndex:number)=>{
+      curTabIndex.value = tabIndex;
+    }
+
+    const onPostEdit = (curPostID:any)=>{
+      curTabIndex.value = 3;
+      (curCompanyPostList.value as any[]).map(item=>{
+        if(item.postID == curPostID){
+          curCompanyPostInfo.value = item;
+          console.log("curCompanyPostInfo",curCompanyPostInfo.value);
+        }
+      })
+    }
 
     onIonViewDidEnter(() => {
       if (route.query.reload) {
@@ -176,9 +324,15 @@ export default defineComponent({
       arrowBackOutline,
       route,
       router,
+      curTabIndex,
+      pageParams,
+      curCompanyPostList,
+      curCompanyPostInfo,
       loading,
-      onPathForward,
+      onTabChange,
+      onPostEdit,
       onBack,
+      onScroll,
       loadData,
       dayjs,
     }
@@ -187,6 +341,45 @@ export default defineComponent({
 </script>
 
 <style lang="less">
+.active{
+  border-bottom: 4px solid #0aa3e9;
+  a{
+    color:#0aa3e9;
+  }
+}
+.passive{
+  color:black;
+  border-bottom: 2px solid gray;
+  a{
+    color:black;
+  }
+}
+.tab-item{
+  height: 35px;
+  width: 50%;
+  float:left;
+  text-align: center;
+  a {
+    font-size: 22px;
+    text-decoration: none;
+  }
+}
+
+#postList {
+  margin: 40px 10px 10px 10px;
+  background-color: white !important;
+
+  .ion-item {
+    margin-top: 10px;
+    font-size: 14px;
+    border-bottom: 1px solid rgb(242, 242, 245);
+
+    p {
+      font-size: 12px;
+    }
+  }
+}
+
 ion-item {
   --border-width: 0;
   --border-style: none;

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

@@ -62,7 +62,7 @@
             <ion-textarea placeholder="请输入招聘地点" :rows="3" label-placement="stacked" :clear-input="true"
                        v-model="dataModel.jobPlace" class="custom" style="border-bottom: 1px solid #fff2e8;">
             </ion-textarea>
-              <ion-note v-show="isCommit&&v$.dataModel.jobPlace.$error" class="danger"  >请输入招聘数量</ion-note>
+              <ion-note v-show="isCommit&&v$.dataModel.jobPlace.$error" class="danger" >请输入招聘地点</ion-note>
           </div>
         </div>
         <div class="bw-vue-form">
@@ -276,6 +276,8 @@ export default defineComponent({
       });
       await alert.present();
     }
+
+
     const onSetProfessionID = (data: any)=>{
       formState.dataModel.professionID = data.value;
       formState.dataModel.professionName = data.text;
@@ -350,6 +352,12 @@ export default defineComponent({
         errorMessage +="招聘结束日期不能早于开始日期!";
         isCommit.value = false;
       }
+      if(formState.dataModel.recruitCount !=null){
+        if(formState.dataModel.recruitCount<0){
+          errorMessage +="招聘数量不能小于0!";
+          isCommit.value = false;
+        }
+      }
       if (formState.dataModel.minSalary!=null) {
         hasMinSalary = true;
         curMinSalary = formState.dataModel.minSalary;
@@ -385,7 +393,7 @@ export default defineComponent({
         }
         if(hasTrailMinSalary){
           if(formState.dataModel.trailMaxSalary < curTrailMinSalary){
-            errorMessage +="试用期最高月薪不能小于岗位最低月薪!";
+            errorMessage +="试用期最高月薪不能小于试用期最低月薪!";
             isCommit.value = false;
           }
         }
@@ -450,7 +458,6 @@ export default defineComponent({
 </script>
 
 <style lang="less">
-
 .stepFlex {
   margin: 0;
   display: flex;

+ 1 - 1
h5app/src/views/pages/company/postList.vue

@@ -49,7 +49,7 @@
                       暂未设置有效期限
                     </p>
                     <p>
-                      招聘数:{{ record.recruitCount }}
+                      招聘数:{{ record.recruitCount }}
                     </p>
                   </ion-label>
                 </ion-item>

+ 40 - 6
h5app/src/views/pages/jobUserInfo/jobHuntEdit.vue

@@ -163,6 +163,7 @@ export default defineComponent({
     const router = useRouter();
     const route = useRoute();
     const loading = ref(false);
+    const isCommit = ref(false);
     const editForm = ref();
     const curStepData = ref<StepParams>({
       loginUserID:"",
@@ -238,19 +239,51 @@ export default defineComponent({
       jobHuntData.dataModel.professionID = data.value;
       jobHuntData.dataModel.professionName = data.text;
     }
+    const ifInputAllValid = ()=>{
+      let errorMessage = "";
+      let hasMinSalary = false;
+      let curMinSalary = 0;
+      if (jobHuntData.dataModel.minSalary!=null) {
+        hasMinSalary = true;
+        curMinSalary = jobHuntData.dataModel.minSalary;
+        if(jobHuntData.dataModel.minSalary<0){
+          errorMessage +="最低期望月薪不能小于0!";
+          isCommit.value = false;
+        }
+      }
+      if (jobHuntData.dataModel.maxSalary!=null) {
+        if(jobHuntData.dataModel.maxSalary<0){
+          errorMessage +="最高期望月薪不能小于0!";
+          isCommit.value = false;
+        }
+        if(hasMinSalary){
+          if(jobHuntData.dataModel.maxSalary < curMinSalary){
+            errorMessage +="最高期望月薪不能小于最低期望月薪!";
+            isCommit.value = false;
+          }
+        }
+      }
+      if(!isCommit.value){presentAlert(errorMessage);}
+    }
+
     const onSave = async function (){
+      isCommit.value = true;
       const isFormCorrect = await huntDataValid.value.$validate();
       if(!isFormCorrect){
         console.log("当前求职意向数据",jobHuntData.dataModel);
         await presentAlert("请填写完整的信息!");
         return null;
       }
-      jobHuntData.dataModel.loginUserID = curStepData.value.loginUserID;
-      saveJobHunt(jobHuntData.dataModel).then(result => {
-        if (result) {
-          router.push({path: './userEdit', query: {reload:1,jobUserID: jobHuntData.dataModel.jobUserID,status:4,loginUserId:curStepData.value.loginUserID}});
-        }
-      });
+      ifInputAllValid();
+      if(isCommit.value){
+        jobHuntData.dataModel.loginUserID = curStepData.value.loginUserID;
+        saveJobHunt(jobHuntData.dataModel).then(result => {
+          if (result) {
+            router.push({path: './userEdit', query: {reload:1,jobUserID: jobHuntData.dataModel.jobUserID,status:4,loginUserId:curStepData.value.loginUserID}});
+          }
+        });
+      }
+
     }
 
     const onCancel = () => {
@@ -260,6 +293,7 @@ export default defineComponent({
 
     const loadData = async (jobHuntID: any,jobUserID:any,status:any,userID:any) => {
       loading.value = true;
+      isCommit.value = false;
       await getJobHuntTypeList();
       await getJobUserTypeList();
       await getWorkYearTypeList();

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

@@ -299,6 +299,12 @@ export default defineComponent({
         errorMessage +="招聘结束日期不能早于开始日期!";
         isCommit.value = false;
       }
+      if(formState.dataModel.recruitCount !=null){
+        if(formState.dataModel.recruitCount<0){
+          errorMessage +="招聘数量不能小于0!<br/>";
+          isCommit.value = false;
+        }
+      }
       if (formState.dataModel.minSalary!=null) {
         hasMinSalary = true;
         curMinSalary = formState.dataModel.minSalary;
@@ -334,7 +340,7 @@ export default defineComponent({
         }
         if(hasTrailMinSalary){
           if(formState.dataModel.trailMaxSalary < curTrailMinSalary){
-            errorMessage +="试用期最高月薪不能小于岗位最低月薪!";
+            errorMessage +="试用期最高月薪不能小于试用期最低月薪!";
             isCommit.value = false;
           }
         }

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

@@ -49,7 +49,7 @@
                       暂未设置有效期限
                     </p>
                     <p>
-                      招聘数:{{ record.recruitCount }}
+                      招聘数:{{ record.recruitCount }}
                     </p>
                   </ion-label>
                 </ion-item>

+ 44 - 10
h5app/src/views/pages/jobUserInfo/userEdit.vue

@@ -174,14 +174,22 @@
                   </ion-select-option>
                 </ion-select>
               </div>
-              <div class="form-select">
+              <div class="form-input">
                 <ion-label>职业资格类别</ion-label>
-                <ion-select name="occupationalCategory"  id="occupationalCategory" okText="确定" cancelText="取消" v-model="baseData.occupationalCategory"
-                            interface="action-sheet" placeholder="请选择职业资格类别" style="width:100%;text-align:left;" >
-                  <ion-select-option v-for=" (it,key) in occupationalCategoryList" :key="key" :value="it.value">
-                    {{ it.name }}
-                  </ion-select-option>
-                </ion-select>
+                <div>
+                  <ion-input placeholder="请选择职业资格类别" label-placement="stacked" style="float: left;width:78%;"
+                             v-model="baseData.occupationalCategoryName" class="custom">
+                  </ion-input>
+                  <ion-item style="width:22%;float: right;padding:0px;margin: 0px;">
+                    <category-selection  :OccupationalID="baseData.occupationalCategory" @SetOccupationalID="onSetOccupationalID"></category-selection>
+                  </ion-item>
+                </div>
+<!--                <ion-select name="occupationalCategory"  id="occupationalCategory" okText="确定" cancelText="取消" v-model="baseData.occupationalCategory"-->
+<!--                            interface="action-sheet" placeholder="请选择职业资格类别" style="width:100%;text-align:left;" >-->
+<!--                  <ion-select-option v-for=" (it,key) in occupationalCategoryList" :key="key" :value="it.value">-->
+<!--                    {{ it.name }}-->
+<!--                  </ion-select-option>-->
+<!--                </ion-select>-->
               </div>
               <div class="form-select">
                 <ion-label>职业资格等级</ion-label>
@@ -454,6 +462,7 @@ import {getEducationListByJobUserID} from "@/api/education";
 import {getExperienceListByJobUserID} from "@/api/experience";
 import {getJobHuntListByJobUserID} from "@/api/jobHuntInfo";
 import dayjs from "dayjs";
+import CategorySelection from "@/components/ocCategorySelection.vue";
 
 interface SelectProps {
   name: string,
@@ -465,6 +474,7 @@ interface StepParams{
 }
 export default defineComponent({
   name: "jobUserInfoEdit",
+  components:{CategorySelection},
   setup() {
     const route = useRoute();
     const router = useRouter();
@@ -491,6 +501,9 @@ export default defineComponent({
     const maritalStatusList  = ref<SelectProps[]>([]);
     const provinceList  = ref<SelectProps[]>([{name:'广东省',value:'440000000000000'}]);
     const nationTypeList  = ref<SelectProps[]>([]);
+    const isFullTimeList  = ref<SelectProps[]>([]);
+    //const occupationalCategoryList  = ref<SelectProps[]>([]);
+    const occupationalLevelList  = ref<SelectProps[]>([]);
     const familyNatureList = ref([]);
     const politicsStatusList = ref([]);
     const regionList  = ref<SelectProps[]>([]);
@@ -509,7 +522,6 @@ export default defineComponent({
         address: null,
         jobStatusID: null,
         keyPersonTypeID: null,
-        nation:null,
         politicsStatusID:null,
         birthPlace:null,
         birthDay:null,
@@ -530,6 +542,14 @@ export default defineComponent({
         email:'',
         hobby:null,
         personalSkills:null,
+        socialSecurityCard:"",
+        finishSchool:null,
+        profession:null,
+        nativePlace:null,
+        isFullTime:null,
+        occupationalCategory:null,
+        occupationalCategoryName:null,
+        occupationalLevel:null,
         openId:null,
         loginUserID:''
       }});
@@ -544,7 +564,7 @@ export default defineComponent({
       return {baseData:{
           siteID:{required},
           name:{required},
-          identityNumber:{required:true,},
+          identityNumber:{required},
           sex:{required},
           userMobile:{required},
           address:{required},
@@ -676,6 +696,11 @@ export default defineComponent({
       }
     };
 
+    const onSetOccupationalID = (data: any)=>{
+      baseInfoData.baseData.occupationalCategory = data.value;
+      baseInfoData.baseData.occupationalCategoryName = data.text;
+    }
+
     const onSave = async function (){
       if (curStepData.value.statusVal==1){
         const isFormCorrect = await baseDataValid.value.$validate();
@@ -741,6 +766,12 @@ export default defineComponent({
       familyNatureList.value = familyNatureResult;
       const nationTypeListResult :any = await getSysDictionaryList("NationType");
       nationTypeList.value = nationTypeListResult;
+      const isFullTimeListResult :any = await getSysDictionaryList("IsFullTime");
+      isFullTimeList.value = isFullTimeListResult;
+      //const occupationalCategoryListResult :any = await getSysDictionaryList("OccupationalCategory");
+      //occupationalCategoryList.value = occupationalCategoryListResult;
+      const occupationalLevelListResult :any = await getSysDictionaryList("OccupationalLevel");
+      occupationalLevelList.value = occupationalLevelListResult;
     }
 
     const getSiteInfoList = async function(){
@@ -772,7 +803,6 @@ export default defineComponent({
       pageParams.jobUserID = jobUserID;
       pageParams.openID = openId;
       baseInfoData.baseData.jobUserID = jobUserID;
-      baseInfoData.baseData.openId = openId;
       curStepData.value.statusVal = status;
       curStepData.value.loginUserID = userId;
       console.log("当前curStepData",curStepData.value);
@@ -836,6 +866,9 @@ export default defineComponent({
       siteInfoList,
       genderList,
       nationTypeList,
+      isFullTimeList,
+      //occupationalCategoryList,
+      occupationalLevelList,
       familyNatureList,
       politicsStatusList,
       pageParams,
@@ -861,6 +894,7 @@ export default defineComponent({
       expandChange,
       provinceChange,
       regionChange,
+      onSetOccupationalID,
       onSave,
       onBack,
       onFinish,

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

@@ -75,7 +75,7 @@
         </div>
         <div class="form-detail">
           <ion-label>职业资格类别</ion-label>
-          <ion-text style="width: 52%;">{{ dataModel.occupationalCategoryName }}</ion-text>
+          <ion-text style="width: 52%;text-align:right;">{{ dataModel.occupationalCategoryName }}</ion-text>
         </div>
         <div class="form-detail">
           <ion-label>职业资格等级</ion-label>
@@ -87,7 +87,7 @@
         </div>
         <div class="form-detail">
           <ion-label>出生日期</ion-label>
-          <ion-text>{{ dayjs(dataModel.birthDay).format("YYYY-MM-DD") }}</ion-text>
+          <ion-text v-if="dataModel.birthDay!=null">{{ dayjs(dataModel.birthDay).format("YYYY-MM-DD") }}</ion-text>
         </div>
         <div class="form-detail">
           <ion-label>户口性质</ion-label>

+ 36 - 13
h5app/src/views/pages/jobhunt/edit.vue

@@ -171,14 +171,22 @@
               </ion-select-option>
             </ion-select>
           </div>
-          <div class="form-select">
+          <div class="form-input">
             <ion-label>职业资格类别</ion-label>
-            <ion-select name="occupationalCategory"  id="occupationalCategory" okText="确定" cancelText="取消" v-model="baseData.occupationalCategory"
-                        interface="action-sheet" placeholder="请选择职业资格类别" style="width:100%;text-align:left;" >
-              <ion-select-option v-for=" (it,key) in occupationalCategoryList" :key="key" :value="it.value">
-                {{ it.name }}
-              </ion-select-option>
-            </ion-select>
+            <div>
+              <ion-input placeholder="请选择职业资格类别" label-placement="stacked" style="float: left;width:78%;"
+                         v-model="baseData.occupationalCategoryName" class="custom">
+              </ion-input>
+              <ion-item style="width:22%;float: right;padding:0px;margin: 0px;">
+                <category-selection  :OccupationalID="baseData.occupationalCategory" @SetOccupationalID="onSetOccupationalID"></category-selection>
+              </ion-item>
+            </div>
+<!--            <ion-select name="occupationalCategory"  id="occupationalCategory" okText="确定" cancelText="取消" v-model="baseData.occupationalCategory"-->
+<!--                        interface="action-sheet" placeholder="请选择职业资格类别" style="width:100%;text-align:left;" >-->
+<!--              <ion-select-option v-for=" (it,key) in occupationalCategoryList" :key="key" :value="it.value">-->
+<!--                {{ it.name }}-->
+<!--              </ion-select-option>-->
+<!--            </ion-select>-->
           </div>
           <div class="form-select">
             <ion-label>职业资格等级</ion-label>
@@ -454,6 +462,7 @@ import {getSysDictionaryList} from '@/api/system/dictionary';
 import {alertController, onIonViewDidEnter} from "@ionic/vue";
 import dayjs from "dayjs";
 import {useUserStore} from "@/store/modules/user";
+import CategorySelection from "@/components/ocCategorySelection.vue";
 
 interface SelectProps {
   name: string,
@@ -465,6 +474,7 @@ interface StepParams{
 }
 export default defineComponent({
   name: 'jobUserEdit',
+  components:{CategorySelection},
   setup() {
     const router = useRouter();
     const route = useRoute();
@@ -494,7 +504,7 @@ export default defineComponent({
     const provinceList  = ref<SelectProps[]>([{name:'广东省',value:'440000000000000'}]);
     const nationTypeList  = ref<SelectProps[]>([]);
     const isFullTimeList  = ref<SelectProps[]>([]);
-    const occupationalCategoryList  = ref<SelectProps[]>([]);
+    //const occupationalCategoryList  = ref<SelectProps[]>([]);
     const occupationalLevelList  = ref<SelectProps[]>([]);
     const familyNatureList = ref([]);
     const politicsStatusList = ref([]);
@@ -514,7 +524,6 @@ export default defineComponent({
         address: null,
         jobStatusID: null,
         keyPersonTypeID: null,
-        nation:null,
         politicsStatusID:null,
         birthPlace:null,
         birthDay:null,
@@ -535,6 +544,14 @@ export default defineComponent({
         email:'',
         hobby:null,
         personalSkills:null,
+        socialSecurityCard:"",
+        finishSchool:null,
+        profession:null,
+        nativePlace:null,
+        isFullTime:null,
+        occupationalCategory:null,
+        occupationalCategoryName:null,
+        occupationalLevel:null
       }});
     const pageParams = reactive({
       pageIndex: 1,
@@ -546,7 +563,7 @@ export default defineComponent({
       return {baseData:{
           siteID:{required},
           name:{required},
-          identityNumber:{required:true,},
+          identityNumber:{required},
           sex:{required},
           userMobile:{required},
           address:{required},
@@ -678,6 +695,11 @@ export default defineComponent({
       }
     };
 
+    const onSetOccupationalID = (data: any)=>{
+      baseInfoData.baseData.occupationalCategory = data.value;
+      baseInfoData.baseData.occupationalCategoryName = data.text;
+    }
+
     const onSave = async function (){
       if (curStepData.value.statusVal==1){
         const isFormCorrect = await baseDataValid.value.$validate();
@@ -745,8 +767,8 @@ export default defineComponent({
       nationTypeList.value = nationTypeListResult;
       const isFullTimeListResult :any = await getSysDictionaryList("IsFullTime");
       isFullTimeList.value = isFullTimeListResult;
-      const occupationalCategoryListResult :any = await getSysDictionaryList("OccupationalCategory");
-      occupationalCategoryList.value = occupationalCategoryListResult;
+      //const occupationalCategoryListResult :any = await getSysDictionaryList("OccupationalCategory");
+      //occupationalCategoryList.value = occupationalCategoryListResult;
       const occupationalLevelListResult :any = await getSysDictionaryList("OccupationalLevel");
       occupationalLevelList.value = occupationalLevelListResult;
     }
@@ -841,7 +863,7 @@ export default defineComponent({
       genderList,
       nationTypeList,
       isFullTimeList,
-      occupationalCategoryList,
+      //occupationalCategoryList,
       occupationalLevelList,
       familyNatureList,
       politicsStatusList,
@@ -868,6 +890,7 @@ export default defineComponent({
       expandChange,
       provinceChange,
       regionChange,
+      onSetOccupationalID,
       onSave,
       onBack,
       onFinish,

+ 39 - 5
h5app/src/views/pages/jobhunt/jobHuntEdit.vue

@@ -163,6 +163,7 @@ export default defineComponent({
     const router = useRouter();
     const route = useRoute();
     const loading = ref(false);
+    const isCommit = ref(false);
     const editForm = ref();
     const curStepData = ref<StepParams>({
       name:"",
@@ -238,18 +239,50 @@ export default defineComponent({
       jobHuntData.dataModel.professionID = data.value;
       jobHuntData.dataModel.professionName = data.text;
     }
+
+    const ifInputAllValid = ()=>{
+      let errorMessage = "";
+      let hasMinSalary = false;
+      let curMinSalary = 0;
+      if (jobHuntData.dataModel.minSalary!=null) {
+        hasMinSalary = true;
+        curMinSalary = jobHuntData.dataModel.minSalary;
+        if(jobHuntData.dataModel.minSalary<0){
+          errorMessage +="最低期望月薪不能小于0!";
+          isCommit.value = false;
+        }
+      }
+      if (jobHuntData.dataModel.maxSalary!=null) {
+        if(jobHuntData.dataModel.maxSalary<0){
+          errorMessage +="最高期望月薪不能小于0!";
+          isCommit.value = false;
+        }
+        if(hasMinSalary){
+          if(jobHuntData.dataModel.maxSalary < curMinSalary){
+            errorMessage +="最高期望月薪不能小于最低期望月薪!";
+            isCommit.value = false;
+          }
+        }
+      }
+      if(!isCommit.value){presentAlert(errorMessage);}
+    }
+
     const onSave = async function (){
+      isCommit.value = true;
       const isFormCorrect = await huntDataValid.value.$validate();
       if(!isFormCorrect){
         console.log("当前求职意向数据",jobHuntData.dataModel);
         await presentAlert("请填写完整的信息!");
         return null;
       }
-      saveJobHunt(jobHuntData.dataModel).then(result => {
-        if (result) {
-          router.push({path: './edit', query: {reload:1,jobUserID: jobHuntData.dataModel.jobUserID,status:4}});
-        }
-      });
+      ifInputAllValid();
+      if(isCommit.value){
+        saveJobHunt(jobHuntData.dataModel).then(result => {
+          if (result) {
+            router.push({path: './edit', query: {reload:1,jobUserID: jobHuntData.dataModel.jobUserID,status:4}});
+          }
+        });
+      }
     }
 
     const onCancel = () => {
@@ -259,6 +292,7 @@ export default defineComponent({
 
     const loadData = async (jobHuntID: any,jobUserID:any,status:any) => {
       loading.value = true;
+      isCommit.value = false;
       await getJobHuntTypeList();
       await getJobUserTypeList();
       await getWorkYearTypeList();

+ 1 - 2
h5app/src/views/pages/post/recommendJob.vue

@@ -246,6 +246,7 @@ export default defineComponent({
     }
 
     onIonViewDidEnter(() => {
+      getRecommendTypeList();
       reloadSearchParams();
       reload();
     });
@@ -271,8 +272,6 @@ export default defineComponent({
       onPopoverConfirm,
       onRestRecommendWhere,
     }
-  }, mounted() {
-    this.getRecommendTypeList()
   }
 });
 </script>

+ 10 - 11
h5app/src/views/pages/work/log/list.vue

@@ -231,16 +231,8 @@ export default defineComponent({
     }
 
     const reload = () => {
-      // 设置查询初始截止日期为当天
-      const firstDay = new Date();
-      // 设置查询初始开始时间为当天的一个月前
-      const lastDay = new Date();
-      lastDay.setDate(firstDay.getDate() - 30);
-
       dataList.value = [];
       searchParamsState.pageIndex = 1;
-      searchParamsState.workStartDate=dayjs(lastDay.toLocaleDateString()).format('YYYY-MM-DD');
-      searchParamsState.workEndDate = dayjs(firstDay.toLocaleDateString()).format('YYYY-MM-DD');
       loadData();
     }
 
@@ -272,9 +264,16 @@ export default defineComponent({
       reload();
     });
 
-    // onMounted(() => {
-    //   reload();
-    // })
+    // 页面初始化设置值,防止onIonViewDidEnter时没有查询时间
+    onMounted(() => {
+      // 设置查询初始截止日期为当天
+      const firstDay = new Date();
+      // 设置查询初始开始时间为当天的一个月前
+      const lastDay = new Date();
+      lastDay.setDate(firstDay.getDate() - 30);
+      searchParamsState.workStartDate = dayjs(lastDay.toLocaleDateString()).format('YYYY-MM-DD') + "T00:00:00.000+08:00";
+      searchParamsState.workEndDate = dayjs(firstDay.toLocaleDateString()).format('YYYY-MM-DD') + "T00:00:00.000+08:00";
+    })
 
     return {
       router,

+ 4 - 4
h5app/src/views/sapp/tabMain.vue

@@ -40,7 +40,7 @@
           </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>
@@ -48,7 +48,7 @@
         </a>
 
 
-        <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/work/log/list')">
+        <a class="tool-item box-line" @click="router.push('/tabs/tabMain/workLog/list')">
           <div class="tool-img">
             <img src="@/assets/icon/gzrz.png">
           </div>
@@ -114,11 +114,11 @@ export default defineComponent({
     }
 
     const onDetail = (doTaskID:string) =>{
-      router.push({path: "/tabs/tabMain/work/task/edit", query: {reload: 1, doTaskID: doTaskID}});
+      router.push({path: "/tabs/tabMain/workTask/edit", query: {reload: 1, doTaskID: doTaskID}});
     }
 
     function onTaskList() {
-      router.push("/tabs/tabMain/work/task/list");
+      router.push("/tabs/tabMain/workTask/list");
     }
 
     const onScroll = (e: any) => {

+ 2 - 1
src/main/java/com/hz/employmentsite/controller/jobUserManager/JobUserController.java

@@ -63,6 +63,7 @@ public class JobUserController {
         if (data == null) {
             data = new JobUserVo();
             data.setJobUserID(UUID.randomUUID().toString());
+            data.setSocialSecurityCard("");
             PcSiteUserExample siteUserExp = new PcSiteUserExample();
             siteUserExp.or().andUserIDEqualTo(loginUserID);
             //siteUserExp.or().andUserIDEqualTo(accountService.getLoginUserID());
@@ -164,7 +165,7 @@ public class JobUserController {
                 row.add(item.getName());
                 row.add(item.getIdentityNumber());
                 row.add(item.getGenderName());
-                row.add(item.getNation());
+                row.add(item.getNationName());
                 row.add(item.getUserMobile());
                 row.add(item.siteName);
                 row.add(dateUtils.getAgeForIdCard(item.getIdentityNumber()));

+ 8 - 4
src/main/java/com/hz/employmentsite/controller/jobUserManager/RecommendMgtController.java

@@ -6,10 +6,7 @@ import com.hz.employmentsite.filter.exception.RespGenerstor;
 import com.hz.employmentsite.model.PcRecommendMgt;
 import com.hz.employmentsite.services.service.AccountService;
 import com.hz.employmentsite.services.service.jobUserManager.RecommendMgtService;
-import com.hz.employmentsite.vo.jobUserManager.ProfessionLevel;
-import com.hz.employmentsite.vo.jobUserManager.RecommendCompanyPostVo;
-import com.hz.employmentsite.vo.jobUserManager.RecommendJobVo;
-import com.hz.employmentsite.vo.jobUserManager.RecommendMgtVo;
+import com.hz.employmentsite.vo.jobUserManager.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -83,4 +80,11 @@ public class RecommendMgtController {
         List<ProfessionLevel> result = recommendMgtService.getProfessionLevelList();
         return RespGenerstor.success(result);
     }
+
+    @ResponseBody
+    @GetMapping("/getOccupationCategoryList")
+    public BaseResponse getOccupationCategoryList() {
+        List<OccupationCategory> result = recommendMgtService.getOccupationCategoryList();
+        return RespGenerstor.success(result);
+    }
 }

+ 3 - 4
src/main/java/com/hz/employmentsite/mapper/cquery/RecommendMgtCQuery.java

@@ -1,9 +1,6 @@
 package com.hz.employmentsite.mapper.cquery;
 
-import com.hz.employmentsite.vo.jobUserManager.ProfessionLevel;
-import com.hz.employmentsite.vo.jobUserManager.RecommendCompanyPostVo;
-import com.hz.employmentsite.vo.jobUserManager.RecommendJobVo;
-import com.hz.employmentsite.vo.jobUserManager.RecommendMgtVo;
+import com.hz.employmentsite.vo.jobUserManager.*;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.HashMap;
@@ -55,6 +52,8 @@ public interface RecommendMgtCQuery {
 
    List<ProfessionLevel> getProfessionLevelList();
 
+   List<OccupationCategory> getOccupationCategoryList();
+
 
     List<HashMap<String, Object>> getCompanypostToUsermessageList();
     List<HashMap<String, Object>> getUserhuntpostToCompanymessageList();

+ 4 - 4
src/main/java/com/hz/employmentsite/model/PcJobuser.java

@@ -17,7 +17,7 @@ public class PcJobuser {
 
     private Integer sex;
 
-    private String nation;
+    private Integer nation;
 
     private Integer politicsStatusID;
 
@@ -147,12 +147,12 @@ public class PcJobuser {
         this.sex = sex;
     }
 
-    public String getNation() {
+    public Integer getNation() {
         return nation;
     }
 
-    public void setNation(String nation) {
-        this.nation = nation == null ? null : nation.trim();
+    public void setNation(Integer nation) {
+        this.nation = nation;
     }
 
     public Integer getPoliticsStatusID() {

+ 4 - 4
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/RecommendMgtServiceImpl.java

@@ -11,10 +11,7 @@ import com.hz.employmentsite.model.WxMessagetempsettingField;
 import com.hz.employmentsite.services.service.WechatService;
 import com.hz.employmentsite.services.service.jobUserManager.RecommendMgtService;
 import com.hz.employmentsite.util.StringUtils;
-import com.hz.employmentsite.vo.jobUserManager.ProfessionLevel;
-import com.hz.employmentsite.vo.jobUserManager.RecommendCompanyPostVo;
-import com.hz.employmentsite.vo.jobUserManager.RecommendJobVo;
-import com.hz.employmentsite.vo.jobUserManager.RecommendMgtVo;
+import com.hz.employmentsite.vo.jobUserManager.*;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -126,6 +123,9 @@ public class RecommendMgtServiceImpl implements RecommendMgtService {
         return recommendMgtCQuery.getProfessionLevelList();
     }
 
+    public List<OccupationCategory> getOccupationCategoryList() {
+        return recommendMgtCQuery.getOccupationCategoryList();
+    }
 
     @Override
     public void sendWxMessage() {

+ 3 - 4
src/main/java/com/hz/employmentsite/services/service/jobUserManager/RecommendMgtService.java

@@ -2,10 +2,7 @@ package com.hz.employmentsite.services.service.jobUserManager;
 
 import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.model.PcRecommendMgt;
-import com.hz.employmentsite.vo.jobUserManager.ProfessionLevel;
-import com.hz.employmentsite.vo.jobUserManager.RecommendCompanyPostVo;
-import com.hz.employmentsite.vo.jobUserManager.RecommendJobVo;
-import com.hz.employmentsite.vo.jobUserManager.RecommendMgtVo;
+import com.hz.employmentsite.vo.jobUserManager.*;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.web.bind.annotation.RequestParam;
 
@@ -64,5 +61,7 @@ public interface RecommendMgtService {
 
     List<ProfessionLevel> getProfessionLevelList();
 
+    List<OccupationCategory> getOccupationCategoryList();
+
     void sendWxMessage();
 }

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

@@ -17,6 +17,7 @@ public class PostVo {
 
     @SiteID
     private String siteID;
+    private String siteName;
 
     @InstitutionID
     public String institutionID;

+ 2 - 1
src/main/java/com/hz/employmentsite/vo/jobUserManager/JobUserVo.java

@@ -32,7 +32,8 @@ public class JobUserVo {
 
     private Integer sex;
 
-    private String nation;
+    private Integer nation;
+    private String nationName;
 
     private Integer politicsStatusID;
 

+ 8 - 0
src/main/java/com/hz/employmentsite/vo/jobUserManager/OccupationCategory.java

@@ -0,0 +1,8 @@
+package com.hz.employmentsite.vo.jobUserManager;
+
+
+import com.hz.employmentsite.model.PcOccupational;
+
+public class OccupationCategory extends PcOccupational {
+    public String occupationalLevel;
+}

+ 1 - 0
src/main/java/com/hz/employmentsite/vo/jobUserManager/RecommendMgtVo.java

@@ -28,6 +28,7 @@ public class RecommendMgtVo extends PcRecommendMgt {
     // 数据权限
     @SiteID
     private String siteID;
+    private String siteName;
     @InstitutionID
     public String institutionID;
     @RegionID

+ 35 - 35
src/main/resources/mapping/PcJobuserMapper.xml

@@ -9,7 +9,7 @@
     <result column="PyName" jdbcType="VARCHAR" property="pyName"/>
     <result column="EngName" jdbcType="VARCHAR" property="engName"/>
     <result column="Sex" jdbcType="INTEGER" property="sex"/>
-    <result column="Nation" jdbcType="VARCHAR" property="nation"/>
+    <result column="Nation" jdbcType="INTEGER" property="nation"/>
     <result column="PoliticsStatusID" jdbcType="INTEGER" property="politicsStatusID"/>
     <result column="Birthplace" jdbcType="VARCHAR" property="birthplace"/>
     <result column="BirthDay" jdbcType="TIMESTAMP" property="birthDay"/>
@@ -163,7 +163,7 @@
                             OccupationalCategory, OccupationalLevel)
     values (#{jobuserID,jdbcType=VARCHAR}, #{siteID,jdbcType=VARCHAR}, #{identityNumber,jdbcType=VARCHAR},
             #{name,jdbcType=VARCHAR}, #{pyName,jdbcType=VARCHAR}, #{engName,jdbcType=VARCHAR},
-            #{sex,jdbcType=INTEGER}, #{nation,jdbcType=VARCHAR}, #{politicsStatusID,jdbcType=INTEGER},
+            #{sex,jdbcType=INTEGER}, #{nation,jdbcType=INTEGER}, #{politicsStatusID,jdbcType=INTEGER},
             #{birthplace,jdbcType=VARCHAR}, #{birthDay,jdbcType=TIMESTAMP}, #{familyNatureID,jdbcType=INTEGER},
             #{cultureRank,jdbcType=INTEGER}, #{healthID,jdbcType=INTEGER}, #{bloodTypeID,jdbcType=INTEGER},
             #{height,jdbcType=VARCHAR}, #{vision,jdbcType=VARCHAR}, #{weight,jdbcType=VARCHAR},
@@ -336,7 +336,7 @@
         #{sex,jdbcType=INTEGER},
       </if>
       <if test="nation != null">
-        #{nation,jdbcType=VARCHAR},
+        #{nation,jdbcType=INTEGER},
       </if>
       <if test="politicsStatusID != null">
         #{politicsStatusID,jdbcType=INTEGER},
@@ -479,7 +479,7 @@
         Sex = #{row.sex,jdbcType=INTEGER},
       </if>
       <if test="row.nation != null">
-        Nation = #{row.nation,jdbcType=VARCHAR},
+        Nation = #{row.nation,jdbcType=INTEGER},
       </if>
       <if test="row.politicsStatusID != null">
         PoliticsStatusID = #{row.politicsStatusID,jdbcType=INTEGER},
@@ -597,21 +597,21 @@
   <update id="updateByExample" parameterType="map">
     update pc_jobuser
     set JobuserID = #{row.jobuserID,jdbcType=VARCHAR},
-      SiteID = #{row.siteID,jdbcType=VARCHAR},
-      IdentityNumber = #{row.identityNumber,jdbcType=VARCHAR},
-      Name = #{row.name,jdbcType=VARCHAR},
-      PyName = #{row.pyName,jdbcType=VARCHAR},
-      EngName = #{row.engName,jdbcType=VARCHAR},
-      Sex = #{row.sex,jdbcType=INTEGER},
-      Nation = #{row.nation,jdbcType=VARCHAR},
-      PoliticsStatusID = #{row.politicsStatusID,jdbcType=INTEGER},
-      Birthplace = #{row.birthplace,jdbcType=VARCHAR},
-      BirthDay = #{row.birthDay,jdbcType=TIMESTAMP},
-      FamilyNatureID = #{row.familyNatureID,jdbcType=INTEGER},
-      CultureRank = #{row.cultureRank,jdbcType=INTEGER},
-      HealthID = #{row.healthID,jdbcType=INTEGER},
-      BloodTypeID = #{row.bloodTypeID,jdbcType=INTEGER},
-      Height = #{row.height,jdbcType=VARCHAR},
+    SiteID = #{row.siteID,jdbcType=VARCHAR},
+    IdentityNumber = #{row.identityNumber,jdbcType=VARCHAR},
+    Name = #{row.name,jdbcType=VARCHAR},
+    PyName = #{row.pyName,jdbcType=VARCHAR},
+    EngName = #{row.engName,jdbcType=VARCHAR},
+    Sex = #{row.sex,jdbcType=INTEGER},
+    Nation = #{row.nation,jdbcType=INTEGER},
+    PoliticsStatusID = #{row.politicsStatusID,jdbcType=INTEGER},
+    Birthplace = #{row.birthplace,jdbcType=VARCHAR},
+    BirthDay = #{row.birthDay,jdbcType=TIMESTAMP},
+    FamilyNatureID = #{row.familyNatureID,jdbcType=INTEGER},
+    CultureRank = #{row.cultureRank,jdbcType=INTEGER},
+    HealthID = #{row.healthID,jdbcType=INTEGER},
+    BloodTypeID = #{row.bloodTypeID,jdbcType=INTEGER},
+    Height = #{row.height,jdbcType=VARCHAR},
     Vision = #{row.vision,jdbcType=VARCHAR},
     Weight = #{row.weight,jdbcType=VARCHAR},
     MaritalStatusID = #{row.maritalStatusID,jdbcType=INTEGER},
@@ -666,7 +666,7 @@
         Sex = #{sex,jdbcType=INTEGER},
       </if>
       <if test="nation != null">
-        Nation = #{nation,jdbcType=VARCHAR},
+        Nation = #{nation,jdbcType=INTEGER},
       </if>
       <if test="politicsStatusID != null">
         PoliticsStatusID = #{politicsStatusID,jdbcType=INTEGER},
@@ -781,21 +781,21 @@
   </update>
   <update id="updateByPrimaryKey" parameterType="com.hz.employmentsite.model.PcJobuser">
     update pc_jobuser
-    set SiteID = #{siteID,jdbcType=VARCHAR},
-        IdentityNumber = #{identityNumber,jdbcType=VARCHAR},
-        Name = #{name,jdbcType=VARCHAR},
-        PyName = #{pyName,jdbcType=VARCHAR},
-        EngName = #{engName,jdbcType=VARCHAR},
-        Sex = #{sex,jdbcType=INTEGER},
-        Nation = #{nation,jdbcType=VARCHAR},
-        PoliticsStatusID = #{politicsStatusID,jdbcType=INTEGER},
-        Birthplace = #{birthplace,jdbcType=VARCHAR},
-        BirthDay = #{birthDay,jdbcType=TIMESTAMP},
-        FamilyNatureID = #{familyNatureID,jdbcType=INTEGER},
-        CultureRank = #{cultureRank,jdbcType=INTEGER},
-        HealthID = #{healthID,jdbcType=INTEGER},
-        BloodTypeID = #{bloodTypeID,jdbcType=INTEGER},
-        Height = #{height,jdbcType=VARCHAR},
+    set SiteID               = #{siteID,jdbcType=VARCHAR},
+        IdentityNumber       = #{identityNumber,jdbcType=VARCHAR},
+        Name                 = #{name,jdbcType=VARCHAR},
+        PyName               = #{pyName,jdbcType=VARCHAR},
+        EngName              = #{engName,jdbcType=VARCHAR},
+        Sex                  = #{sex,jdbcType=INTEGER},
+        Nation               = #{nation,jdbcType=INTEGER},
+        PoliticsStatusID     = #{politicsStatusID,jdbcType=INTEGER},
+        Birthplace           = #{birthplace,jdbcType=VARCHAR},
+        BirthDay             = #{birthDay,jdbcType=TIMESTAMP},
+        FamilyNatureID       = #{familyNatureID,jdbcType=INTEGER},
+        CultureRank          = #{cultureRank,jdbcType=INTEGER},
+        HealthID             = #{healthID,jdbcType=INTEGER},
+        BloodTypeID          = #{bloodTypeID,jdbcType=INTEGER},
+        Height               = #{height,jdbcType=VARCHAR},
         Vision               = #{vision,jdbcType=VARCHAR},
         Weight               = #{weight,jdbcType=VARCHAR},
         MaritalStatusID      = #{maritalStatusID,jdbcType=INTEGER},

+ 7 - 5
src/main/resources/mapping/cquery/JobHuntCQuery.xml

@@ -59,13 +59,15 @@
         <if test="isAccomplish != '' and isAccomplish != null">
             and rmgt.EntryState = #{isAccomplish}
         </if>
+        group by jobHunt.JobHuntID, jobHunt.JobUserID, jobHunt.ProfessionID, jobHunt.WorkCode, jobHunt.WorkName,
+        jobHunt.AreaWork, jobHunt.InDate, jobHunt.WorkYear, jobHunt.JobHuntType, jobHunt.JobUserType, jobHunt.MinSalary,
+        jobHunt.MaxSalary, jobHunt.CreateUserID, jobHunt.CreateTime, jobHunt.ModifyUserID, jobHunt.ModifyTime,
+        jobHunt.OtherDemand
+        ,jobUser.`Name`,dic_jobUserType.`Name`,dic_huntJobType.`Name`, profession.ProfessionName,
+        profession.ParentProfessionID,jobUser.cultureRank,site.SiteID,inSites.InstitutionID,site.RegionCode
         order by jobHunt.CreateTime desc
     </select>
     <!--    getJobHuntList的分组
-    group by jobHunt.JobHuntID, jobHunt.JobUserID, jobHunt.ProfessionID, jobHunt.WorkCode, jobHunt.WorkName,
-            jobHunt.AreaWork, jobHunt.InDate, jobHunt.WorkYear, jobHunt.JobHuntType, jobHunt.JobUserType, jobHunt.MinSalary,
-            jobHunt.MaxSalary, jobHunt.CreateUserID, jobHunt.CreateTime, jobHunt.ModifyUserID, jobHunt.ModifyTime,
-            jobHunt.OtherDemand
-            ,jobUser.`Name`,dic_jobUserType.`Name`,dic_huntJobType.`Name`, profession.ProfessionName, profession.ParentProfessionID,jobUser.cultureRank
+
     -->
 </mapper>

+ 3 - 1
src/main/resources/mapping/cquery/JobUserCQuery.xml

@@ -10,7 +10,7 @@
         sys_family.name as familyNatureName,sys_full_time.Name as isFullTimeName,occ_cat.OccupationalName as
         occupationalCategoryName,
         sys_occ_level.Name as occupationalLevelName,sys_blood_type.Name as bloodTypeName,sys_marital_status.Name as
-        MaritalStatusName,
+        MaritalStatusName, sys_nation.Name as nationName,
         area_region.name as RegionName,area_street.name as StreetName,
         (select count(*) from pc_recommend recommend where jobuser.JobUserID = recommend.JobuserID and isRead = 1)as
         RecommendedCount
@@ -43,6 +43,8 @@
         jobuser.BloodTypeID = sys_blood_type.Value
         left join (select * from sys_dictionary_item where DictionaryCode ='MaritalStatus') sys_marital_status on
         jobuser.MaritalStatusID = sys_marital_status.Value
+        left join (select * from sys_dictionary_item where DictionaryCode ='NationType') sys_nation on
+        jobuser.Nation = sys_nation.Value
         left join area_code area_region on jobuser.RegionCode = area_region.code
         left join area_code area_street on jobuser.StreetCode = area_street.code
         left join pc_site_institution inSites on site.SiteID = inSites.SiteID

+ 12 - 15
src/main/resources/mapping/cquery/PostCQuery.xml

@@ -6,15 +6,12 @@
         post.postID,post.workCode,post.workName,post.recruitCount,post.companyID,post.postName,post.recordStatus,post.workNature,post.validDay,
         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.contactName,post.contactMobile,post.contactEmail,
         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
-        workNatureName,
-        post.ProfessionID,pro.ProfessionName,pro.parentProfessionID,
-        company.CompanyName,company.insuredCount,company.bonus,item.`Name` as cultureLevelName,work_nature.Name as workNatureName,
-        post.ProfessionID,pro.ProfessionName,pro.parentProfessionID,item2.`Name` as workYearStr
+        workNatureName,item2.`Name` as workYearStr
         , IFNULL(count(rmgt.RecommendMgtID),0) as recommendNum
-        , site.SiteID as siteID,inSites.InstitutionID as institutionID, company.RegionCode as regionCode
+        , company.SiteID, site.SiteName, inSites.InstitutionID, company.RegionCode
+        , pro.ProfessionName, pro.ProfessionID, pro.parentProfessionID
         from pc_post post
         left join pc_company company on post.CompanyID = company.CompanyID
         left join sys_dictionary_item item on item.value=post.CultureRank and item.DictionaryCode='CultureLevel'
@@ -23,7 +20,7 @@
         work_nature.DictionaryCode='WorkNature'
         left join pc_profession pro on post.ProfessionID = pro.ProfessionID
         left join pc_recommend_mgt rmgt on post.PostID = rmgt.PostID
-        left join pc_site site on company.siteID = site.siteID
+        left join pc_site site on company.SiteID = site.SiteID
         left join pc_site_institution inSites on site.SiteID = inSites.SiteID
         left join pc_institution institution on inSites.institutionID = institution.InstitutionID
         <where>
@@ -49,16 +46,16 @@
                 and post.CompanyID = #{companyID}
             </if>
         </where>
+        group by
+        post.postID,post.workCode,post.workName,post.recruitCount,post.companyID,post.postName,post.recordStatus,post.workNature,post.validDay,
+        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`,work_nature.Name,item2.`Name`
+        , company.SiteID, site.SiteName, inSites.InstitutionID, company.RegionCode
+        , pro.ProfessionName, pro.ProfessionID, pro.parentProfessionID
         order by post.CreateTime desc
     </select>
-    <!-- selectPostList的分组
-            group by
-            post.postID,post.workCode,post.workName,post.recruitCount,post.companyID,post.postName,post.recordStatus,post.workNature,post.validDay,
-            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,company.userName,company.userMobile,company.companyEmail,company.CompanyName,company.insuredCount,item.`Name`,
-            post.ProfessionID,pro.ProfessionName,pro.parentProfessionID
-     -->
     <select id="selectRecommendPostList" resultType="com.hz.employmentsite.vo.companyService.RecommendPostVo">
         select post.*,
                recommend.recommendID,

+ 14 - 4
src/main/resources/mapping/cquery/RecommendMgtCQuery.xml

@@ -10,7 +10,7 @@
         dic4.`name` as jobpeopleisreadname,g.`name` as pushname, dic5.`name` as gendername
         ,e.jobuserId,c.companyId
         ,d.workYear
-        ,site.SiteID as siteID,inSites.InstitutionID as institutionID,site.RegionCode as regionCode
+        ,site.SiteID, site.SiteName,inSites.InstitutionID as institutionID,site.RegionCode
         from pc_recommend_mgt a
         inner join pc_post b on a.PostID = b.PostID
         left join pc_company c on b.CompanyID = c.CompanyID
@@ -29,7 +29,7 @@
         left join (select `Value`,`Name` from sys_dictionary_item where DictionaryCode='Gender') dic5 on e.Sex =
         dic5.`Value`
         left join sys_user g on a.CreateUserID = g.UserID
-        left join pc_site site on site.SiteID = e.SiteID
+        left join pc_site site on e.SiteID = site.SiteID
         left join pc_site_institution inSites on site.SiteID = inSites.SiteID
         left join pc_institution institution on inSites.institutionID = institution.InstitutionID
         <where>
@@ -134,7 +134,7 @@
         left join pc_jobuser b on a.JobUserID = b.JobUserID
         left join pc_profession c on a.ProfessionID = c.ProfessionID
         left join pc_site e on b.SiteID = e.SiteID
-        left join (select `Value`,`Name` from sys_dictionary_item where DictionaryCode='CultureLevel') dic1 on
+        left join (select `Value`,`Name` from sys_dictionary_item where DictionaryCode='HighestDegree') dic1 on
         b.CultureRank = dic1.`Value`
         left join (select `Value`,`Name` from sys_dictionary_item where DictionaryCode='KeyPersonType') dic2 on
         b.KeyPersonTypeID = dic2.`Value`
@@ -153,7 +153,7 @@
                 and b.KeyPersonTypeID = #{keyPersonType}
             </if>
             <if test="cultureRank!=null and cultureRank!=''">
-                and b.CultureRank <![CDATA[>=]]> #{cultureRank}
+                and b.CultureRank <![CDATA[<=]]> #{cultureRank}
             </if>
             <choose>
                 <when test="parentProfessionID!=null and parentProfessionID!=''">
@@ -200,6 +200,16 @@
                                                  on a.ParentProfessionID = b.ProfessionID) bb
                             on c.ParentProfessionID = bb.ProfessionID
     </select>
+    <select id="getOccupationCategoryList" resultType="com.hz.employmentsite.vo.jobUserManager.OccupationCategory">
+        select OccupationalID, ParentOccupationalID, OccupationalName, '1' as OccupationalLevel
+        from pc_occupational
+        where ParentOccupationalID = '0'
+        union all
+        select a.OccupationalID, a.ParentOccupationalID, a.OccupationalName, '2' as OccupationalLevel
+        from pc_occupational a
+                 inner join (select OccupationalID from pc_occupational where ParentOccupationalID = '0') b
+                            on a.ParentOccupationalID = b.OccupationalID
+    </select>
     <select id="getCompanypostToUsermessageList" resultType="java.util.HashMap">
         select a.recommendmgtid,
                e.openId     as userOpenId,

+ 10 - 2
vue/src/views/baseSettings/institution/index.vue

@@ -34,7 +34,8 @@
       <a-row class="edit-operation">
         <a-col :span="24" style="text-align: right">
           <a-button type="primary" html-type="submit" functioncode="T01010102" @click='onAdd' >新增</a-button>
-          <BExportExcel :title="'导出'"   :filename="'运营机构信息'" :url="'institution/export'" :params="{...searchParams, rows:100000,institutionIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
+          <BExportExcel :title="'导出'" :filename="'运营机构信息'" :url="'institution/export'"
+                        :params="{...exportSearchParams, rows:100000,institutionIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
         </a-col>
       </a-row>
     </a-form>
@@ -83,6 +84,12 @@ export default defineComponent({
       companyAddress: '',
       dutyUserName:''
     });
+    // 导出Excel查询参数
+    const exportSearchParams = computed(() => {
+      let data = JSON.parse(JSON.stringify(searchParams));
+      data.pageSize = formState.total;
+      return data;
+    })
     const formState = reactive({
       total: 0,
       selectedRowKeys: [],
@@ -190,7 +197,8 @@ export default defineComponent({
       onEdit,
       onDel,
       loadData,
-      onDetail
+      onDetail,
+      exportSearchParams
     };
   },
   created() {

+ 10 - 2
vue/src/views/baseSettings/siteInfo/index.vue

@@ -80,7 +80,8 @@
       <a-row class="edit-operation">
         <a-col :span="24" style="text-align: right">
           <a-button type="primary" html-type="submit"  functioncode="T01010202" @click='onAdd' >新增</a-button>
-          <BExportExcel :title="'导出'" :filename="'驿站站点信息'" :url="'siteInfo/export'" :params="{...searchParams, rows:100000,siteIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
+          <BExportExcel :title="'导出'" :filename="'驿站站点信息'" :url="'siteInfo/export'"
+                        :params="{...exportSearchParams, rows:100000,siteIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
         </a-col>
       </a-row>
     </a-form>
@@ -134,6 +135,12 @@ export default defineComponent({
       regionCode:'',
       streetCode:'',
     });
+    // 导出Excel查询参数
+    const exportSearchParams = computed(() => {
+      let data = JSON.parse(JSON.stringify(searchParams));
+      data.pageSize = formState.total;
+      return data;
+    })
     const formState = reactive({
       total: 0,
       selectedRowKeys: [],
@@ -270,7 +277,8 @@ export default defineComponent({
       onDel,
       loadData,
       changeRegion,
-      onDetail
+      onDetail,
+      exportSearchParams
     };
   },
   created() {

+ 11 - 3
vue/src/views/baseSettings/siteUser/index.vue

@@ -45,7 +45,8 @@
                         :options="importOptions"
                         @success="loadData"
           ></BImportExcel>
-          <BExportExcel :title="'导出'" :filename="'驿站人员信息'" :url="'userInfo/export'" :params="{...searchParams, rows:100000,siteUserIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
+          <BExportExcel :title="'导出'" :filename="'驿站人员信息'" :url="'userInfo/export'"
+                        :params="{...exportSearchParams, rows:100000,siteUserIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
         </a-col>
       </a-row>
     </a-form>
@@ -98,6 +99,12 @@ export default defineComponent({
       siteID: '',
       userNo: ""
     });
+    // 导出Excel查询参数
+    const exportSearchParams = computed(() => {
+      let data = JSON.parse(JSON.stringify(searchParams));
+      data.pageSize = formState.total;
+      return data;
+    })
     const formState = reactive({
       total: 0,
       selectedRowKeys: [],
@@ -233,7 +240,7 @@ export default defineComponent({
     };
 
     const onEdit = (id: string) => {
-      tabsViewStore.addTabByPath('/baseSettings/user/edit', {id:id,op:2});
+      tabsViewStore.addTabByPath('/baseSettings/user/edit', {id: id, op: 1});
     };
 
     const onDetail = (id: string) => {
@@ -256,7 +263,8 @@ export default defineComponent({
       onDel,
       loadData,
       onDetail,
-      importOptions
+      importOptions,
+      exportSearchParams
     };
   },
   created() {

+ 2 - 1
vue/src/views/companyService/company/edit.vue

@@ -339,7 +339,8 @@
             name="insuredCount"
             :rules="[{ required: false, message: '请输入参保人数!' }]"
           >
-            <a-input v-model:value="dataModel.insuredCount" placeholder=""/>
+            <a-input-number :min="0" style="width: 100%" :controls="false" v-model:value="dataModel.insuredCount"
+                            placeholder=""/>
           </a-form-item>
         </a-col>
       </a-row>

+ 9 - 2
vue/src/views/companyService/company/index.vue

@@ -87,7 +87,7 @@
           ></BImportExcel>
           <BExportExcel :title="'导出'" :filename="'企业信息'"
                         :url="'companyService/company/export'"
-                        :params="{...searchParams, isExport: true, rows:10000,companyIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
+                        :params="{...exportSearchParams, isExport: true, rows:10000,companyIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
         </a-col>
       </a-row>
     </a-form>
@@ -148,6 +148,12 @@ export default defineComponent({
       regionCode: '',
       streetCode: ''
     });
+    // 导出Excel查询参数
+    const exportSearchParams = computed(() => {
+      let data = JSON.parse(JSON.stringify(searchParams));
+      data.pageSize = formState.total;
+      return data;
+    })
     const formState = reactive({
       total: 0,
       selectedRowKeys: [],
@@ -329,7 +335,8 @@ export default defineComponent({
       recordStatusList,
       regionList,
       streetList,
-      onDetail
+      onDetail,
+      exportSearchParams
     };
   },
   created() {

+ 13 - 6
vue/src/views/companyService/post/index.vue

@@ -76,7 +76,7 @@
           ></BImportExcel>
           <BExportExcel :title="'导出'" :filename="'岗位信息'"
                         :url="'companyService/post/export'"
-                        :params="{...searchParams, isExport: true, rows:10000,postIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
+                        :params="{...exportSearchParams, isExport: true, rows:10000,postIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
         </a-col>
       </a-row>
     </a-form>
@@ -136,6 +136,12 @@ export default defineComponent({
       professionName: null,
       recordStatus: null
     });
+    // 导出Excel查询参数
+    const exportSearchParams = computed(() => {
+      let data = JSON.parse(JSON.stringify(searchParams));
+      data.pageSize = formState.total;
+      return data;
+    })
     const expand = ref(false);
     const companyList = ref<SelectProps['options']>();
     const postStatusList = [{name: '启用', value: 1}, {name: '禁用', value: 0}];
@@ -198,15 +204,15 @@ export default defineComponent({
         }
       },
       // {title: '工种名称', dataIndex: 'workName', key: 'workName', align: "center"},
-      {title: '文化程度', dataIndex: 'cultureLevelName', key: 'cultureLevelName', width: 150, align: "center"},
+      {title: '学历要求', dataIndex: 'cultureLevelName', key: 'cultureLevelName', width: 150, align: "center"},
       {
         title: '薪酬', dataIndex: 'postSalary', key: 'postSalary', align: "center", customRender: (item) => {
           const salary = showSalary(item.record.minSalary,item.record.maxSalary);/*`${item.record.minSalary ?? ""}-${item.record.maxSalary ?? ""}`*/
           return salary;
         }
       },
-      {title: '联系人', dataIndex: 'userName', key: 'userName', align: "center"},
-      {title: '联系电话', dataIndex: 'userMobile', key: 'userMobile', width: 200, align: "center"},
+      {title: '联系人', dataIndex: 'contactName', key: 'contactName', align: "center"},
+      {title: '联系电话', dataIndex: 'contactMobile', key: 'contactMobile', width: 200, align: "center"},
       {title: '推荐数量', dataIndex: 'recommendNum',key: 'recommendNum',width: 100, align: "center"},
       {title: '操作', key: 'operation', fixed: 'right', width: 240, align: "center"},
     ];
@@ -243,7 +249,7 @@ export default defineComponent({
     }
 
     const onRecommendInfo = (item) =>{
-      recommendRef.value.show(item.professionID,item.parentProfessionID,item.professionName,item.postID,item.companyName,1,'求职人员信息');
+      recommendRef.value.show('','',item.professionName,item.postID,item.companyName,1,'求职人员信息');
     }
 
     const handleTableChange: TableProps['onChange'] = (pag: { pageSize: number; current: number },) => {
@@ -327,7 +333,8 @@ export default defineComponent({
       expand,
       postStatusList,
       companyList,
-      onDetail
+      onDetail,
+      exportSearchParams
     };
   },
   created() {

+ 4 - 2
vue/src/views/companyService/post/recommend.vue

@@ -29,7 +29,7 @@
                        placeholder=""/>
             </a-form-item>
           </a-col>
-          <a-col :span="6" style="text-align: center;">
+          <a-col :span="6" style="text-align: center;" v-if="searchParams.type===0">
             <a-form-item label="" :label-col="{ span: 4 }" name="checkParentProfessionID">
               <a-checkbox
                 v-model:checked="searchParams.checkParentProfessionID"
@@ -49,7 +49,7 @@
                 searchParams.userName= '';
                 searchParams.keyPersonType= null;
                 searchParams.parentProfessionID= '';
-                searchParams.checkParentProfessionID= false;
+                searchParams.checkParentProfessionID = false;
                 searchParams.cultureRank= null;
                 searchParams.workYear= null;
                 searchParams.minSalary= null;
@@ -268,6 +268,8 @@ export default defineComponent({
       visible.value = true;
       title.value = titleName;
       parentProfessionID.value = parentID;
+      searchParams.checkParentProfessionID = false;
+      searchParams.parentProfessionID = "";
       searchParams.postID = postID;
       searchParams.companyName = companyName;
       searchParams.professionID = professionID;

+ 19 - 8
vue/src/views/jobUserManager/jobhunt/index.vue

@@ -19,9 +19,11 @@
         </a-col>
         <a-col :span="8">
           <a-form-item label="工作年限" :label-col="{ span: 6 }" name="workYear">
-            <a-input type="number" v-model:value="searchParamsState.minWorkYear" style="width:110px;" placeholder=""/>
+            <a-input-number :min="0" :controls="false" v-model:value="searchParamsState.minWorkYear"
+                            style="width:110px;" placeholder=""/>
             <label style="margin:10px;">-</label>
-            <a-input type="number" v-model:value="searchParamsState.maxWorkYear" style="width:110px;" placeholder=""/>
+            <a-input-number :min="searchParamsState.minWorkYear" :controls="false"
+                            v-model:value="searchParamsState.maxWorkYear" style="width:110px;" placeholder=""/>
           </a-form-item>
         </a-col>
         <a-col :span="4" style="text-align: left">
@@ -76,9 +78,12 @@
         </a-col>
         <a-col :span="8">
           <a-form-item label="月薪要求" :label-col="{ span: 6 }" name="salary">
-            <a-input type="number" v-model:value="searchParamsState.minSalary" style="width:110px;" placeholder=""/>
+            <a-input-number style="width: 110px" :controls="false" :min="0" v-model:value="searchParamsState.minSalary"
+                            placeholder=""/>
             <label style="margin:10px;">-</label>
-            <a-input type="number" v-model:value="searchParamsState.maxSalary" style="width:110px;" placeholder=""/>
+            <a-input-number style="width: 110px" :controls="false" :min="searchParamsState.minSalary"
+                            v-model:value="searchParamsState.maxSalary"
+                            placeholder=""/>
           </a-form-item>
         </a-col>
         <a-col :span="4" style="text-align: left"></a-col>
@@ -108,7 +113,7 @@
                         @success="loadData"
           ></BImportExcel>
           <BExportExcel :title="'导出'" :filename="'求职意向信息'" :url="'/jobUserService/jobHunt/export'"
-                        :params="{...searchParamsState, rows:100000,jobHuntIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
+                        :params="{...exportSearchParams, rows:100000,jobHuntIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
         </a-col>
       </a-row>
     </a-form>
@@ -177,6 +182,12 @@ export default defineComponent({
       maxSalary: null,
       isAccomplish: null
     });
+    // 导出Excel查询参数
+    const exportSearchParams = computed(() => {
+      let data = JSON.parse(JSON.stringify(searchParamsState));
+      data.pageSize = formState.total;
+      return data;
+    })
     const formState = reactive({
       total: 0,
       selectedRowKeys: [],
@@ -336,9 +347,8 @@ export default defineComponent({
     }
 
     const onRecommendInfo = (item) => {
-      recommendRef.value.show(item.professionID, item.professionName, item.jobHuntID, item.jobUserName, 1,
-        item.parentProfessionID, item.cultureRank, item.workYear, item.minSalary, item.maxSalary,
-        '求职人员信息');
+      recommendRef.value.show('', item.professionName, item.jobHuntID, item.jobUserName, 1,
+       '', null, null, null, null, '求职人员信息');
     }
 
     const getJobHuntTypeList = () => {
@@ -372,6 +382,7 @@ export default defineComponent({
       jobUserTypeList,
       isAccomplishList,
       recommendRef,
+      exportSearchParams,
       showSalary,
       loadData,
       onSearch,

+ 1 - 1
vue/src/views/jobUserManager/jobhunt/recommend.vue

@@ -63,7 +63,7 @@
             <!--          </a>-->
           </a-col>
         </a-row>
-        <a-row :gutter="24">
+        <a-row :gutter="24" v-if="searchParams.type===0" >
           <a-col :span="16">
             <a-form-item label="推荐岗位筛选:" :label-col="{ span: 4 }" name="recommendPostWhere">
               <!--              <div :style="{ borderBottom: '1px solid #E9E9E9' }">-->

+ 13 - 6
vue/src/views/jobUserManager/jobuser/index.vue

@@ -74,7 +74,7 @@
           </a-form-item>
         </a-col>
         <a-col :span="6">
-          <a-form-item label="文化程度" :label-col="{ span: 8 }" name="educationId">
+          <a-form-item label="最高学历" :label-col="{ span: 8 }" name="educationId">
             <a-select
               ref="select"
               v-model:value="searchParamsState.educationTypeId"
@@ -105,7 +105,7 @@
           <a-button type="primary" html-type="submit" @click='onAdd' functioncode="T01030102">新增</a-button>
           <BExportExcel :title="'导出'" :filename="'求职人员信息'"
                         :url="'jobUserService/jobUser/export'"
-                        :params="{...searchParamsState, isExport: true, rows:10000,jobUserIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
+                        :params="{...exportSearchParams, isExport: true, rows:10000,jobUserIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
         </a-col>
       </a-row>
     </a-form>
@@ -165,6 +165,12 @@ export default defineComponent({
       educationTypeId: null,
       emphasisTypeId: null
     });
+    // 导出Excel查询参数
+    const exportSearchParams = computed(() => {
+      let data = JSON.parse(JSON.stringify(searchParamsState));
+      data.pageSize = formState.total;
+      return data;
+    })
     const formState = reactive({
       total: 0,
       selectedRowKeys: [],
@@ -182,7 +188,7 @@ export default defineComponent({
       {title: '姓名', dataIndex: 'name', key: 'name', width: 100,align: "center"},
       {title: '公民身份号码', dataIndex: 'identityNumber', key: 'identityNumber', width: 170,align: "center"},
       {title: '性别', dataIndex: 'genderName', key: 'genderName', width: 80,align: "center"},
-      {title: '民族', dataIndex: 'nation', key: 'nation', width: 80,align: "center"},
+      {title: '民族', dataIndex: 'nationName', key: 'nationName', width: 80, align: "center"},
       {title: '联系电话', dataIndex: 'userMobile', key: 'userMobile',align: "center"},
       {title: '所属驿站', dataIndex: 'siteName', key: 'siteName',align: "center"},
       {
@@ -190,7 +196,7 @@ export default defineComponent({
           return calculateAge(item.record.identityNumber);
         }
       },
-      {title: '文化程度', dataIndex: 'cultureName', key: 'cultureName',align: "center"},
+      {title: '最高学历', dataIndex: 'cultureName', key: 'cultureName', align: "center"},
       {title: '地址', dataIndex: 'address', key: 'address',align: "center"},
       {title: '就业状态', dataIndex: 'jobStatusName', key: 'jobStatusName',align: "center"},
       {title: '重点人员类别', dataIndex: 'keyTypeName', key: 'keyTypeName',align: "center"},
@@ -276,7 +282,7 @@ export default defineComponent({
     };
 
     const getEducationList = () => {
-      getSysDictionaryList('CultureLevel').then((data) => {
+      getSysDictionaryList('HighestDegree').then((data) => {
         educationTypeList.value = data;
       });
     };
@@ -352,7 +358,8 @@ export default defineComponent({
       getEmphasisTypeList,
       calculateAge,
       onVitae,
-      expand
+      expand,
+      exportSearchParams
     };
   },
   created() {

+ 10 - 8
vue/src/views/jobUserManager/jobuser/vitae.vue

@@ -8,7 +8,7 @@
           <a-avatar :size="72" :src="avtImg"></a-avatar>
         </div>
         <!-- 姓名 -->
-        <h1>{{ jobUserInfo.name }}</h1>
+        <p class="nameTitle">{{ jobUserInfo.name }}</p>
         <!-- 性别,年龄,民族 -->
         <div class="age-info">
           <span>
@@ -90,8 +90,8 @@
         <a-timeline style="margin-left: 25px;">
           <a-timeline-item v-for="(item, key) in experienceData" :key="key" position="left">
             <p>{{ dayjs(item.startTime).format('YYYY-MM-DD') }}至{{ dayjs(item.endTime).format('YYYY-MM-DD') }}</p>
-            <h1>{{ item.workAddress }}</h1>
-            <h1>{{ item.duties }}</h1>
+            <p>{{ item.workAddress }}</p>
+            <p>{{ item.duties }}</p>
           </a-timeline-item>
         </a-timeline>
       </div>
@@ -219,7 +219,7 @@ const loadExperienceData = (id: any) => {
 
 // 获取教育经历数据
 const getCultureList = () => {
-  getSysDictionaryList('CultureLevel').then((data) => {
+  getSysDictionaryList('HighestDegree').then((data) => {
     cultureList.value = data;
   });
 };
@@ -235,9 +235,11 @@ function getCultureName(value: any) {
 // 页面初始化
 onMounted(() => {
   const id = history.state.params?.id;
-  loadData(id);
-  loadEducation(id);
-  loadExperienceData(id)
+  if (id) {
+    loadData(id);
+    loadEducation(id);
+    loadExperienceData(id)
+  }
   getCultureList()
 })
 </script>
@@ -280,7 +282,7 @@ onMounted(() => {
         }
       }
 
-      h1 {
+      .nameTitle {
         margin-top: 1rem;
         text-align: center;
         font-size: 20px;

+ 9 - 2
vue/src/views/taskAndLog/dotask/index.vue

@@ -78,7 +78,7 @@
         <a-col :span="24" style="text-align: right">
           <a-button functioncode="T01040102" html-type="submit" type="primary" @click='onAdd'>新增</a-button>
           <BExportExcel :filename="'任务信息'"
-                        :params="{...searchParams, isExport: true, rows:10000,doTaskIDList:formState.selectedRowKeys.join(',')}"
+                        :params="{...exportSearchParams, isExport: true, rows:10000,doTaskIDList:formState.selectedRowKeys.join(',')}"
                         :title="'导出'"
                         :url="'taskAndLog/doTask/export'"></BExportExcel>
         </a-col>
@@ -135,6 +135,12 @@ export default defineComponent({
       regionCode: '',
       streetCode: ''
     });
+    // 导出Excel查询参数
+    const exportSearchParams = computed(() => {
+      let data = JSON.parse(JSON.stringify(searchParams));
+      data.pageSize = formState.total;
+      return data;
+    })
     const formState = reactive({
       total: 0,
       selectedRowKeys: [],
@@ -314,7 +320,8 @@ export default defineComponent({
       onAdd,
       onEdit,
       dayjs,
-      onDetail
+      onDetail,
+      exportSearchParams
     };
   },
   created() {

+ 10 - 1
vue/src/views/taskAndLog/dowork/index.vue

@@ -66,7 +66,9 @@
       <a-row class="edit-operation">
         <a-col :span="24" style="text-align: right">
           <a-button functioncode="T01040202" html-type="submit" type="primary" @click='onAdd'>新增</a-button>
-          <BExportExcel :filename="'工作日志信息'" :params="{...searchParams, rows:100000,doWorkIDList:formState.selectedRowKeys.join(',')}" :title="'导出'"
+          <BExportExcel :filename="'工作日志信息'"
+                        :params="{...exportSearchParams, rows:100000,doWorkIDList:formState.selectedRowKeys.join(',')}"
+                        :title="'导出'"
                         :url="'taskAndLog/doWork/export'"></BExportExcel>
         </a-col>
       </a-row>
@@ -148,6 +150,12 @@ export default defineComponent({
       regionCode: '',
       streetCode: ''
     });
+    // 导出Excel查询参数
+    const exportSearchParams = computed(() => {
+      let data = JSON.parse(JSON.stringify(searchParams));
+      data.pageSize = formState.total;
+      return data;
+    })
     const formState = reactive({
       total: 0,
       selectedRowKeys: [],
@@ -340,6 +348,7 @@ export default defineComponent({
       onRecordsJobUserInfo,
       companyTableComRef,
       jobUserTableComRef,
+      exportSearchParams
     };
   },
   created() {