Преглед на файлове

Merge remote-tracking branch 'origin/master'

lizeyu преди 1 година
родител
ревизия
0c22cd653d
променени са 32 файла, в които са добавени 897 реда и са изтрити 329 реда
  1. 3 9
      h5app/src/views/pages/company/edit.vue
  2. 2 7
      h5app/src/views/pages/jobUserInfo/companyEdit.vue
  3. 28 17
      h5app/src/views/pages/jobUserInfo/userEdit.vue
  4. 78 5
      h5app/src/views/pages/jobhunt/detail.vue
  5. 27 16
      h5app/src/views/pages/jobhunt/edit.vue
  6. 9 2
      h5app/src/views/pages/work/log/detail.vue
  7. 12 5
      h5app/src/views/pages/work/log/edit.vue
  8. 1 1
      h5app/src/views/pages/work/log/list.vue
  9. 1 1
      src/main/java/com/hz/employmentsite/controller/UserController.java
  10. 8 0
      src/main/java/com/hz/employmentsite/controller/baseSettings/SiteUserController.java
  11. 2 2
      src/main/java/com/hz/employmentsite/filter/exception/RespGenerstor.java
  12. 2 0
      src/main/java/com/hz/employmentsite/mapper/cquery/UserInfoCQuery.java
  13. 58 0
      src/main/java/com/hz/employmentsite/model/PcPost.java
  14. 90 44
      src/main/java/com/hz/employmentsite/services/impl/UserServiceImpl.java
  15. 15 10
      src/main/java/com/hz/employmentsite/services/impl/baseSettings/SiteUserImpl.java
  16. 11 1
      src/main/java/com/hz/employmentsite/services/impl/companyService/PostServiceImpl.java
  17. 1 1
      src/main/java/com/hz/employmentsite/services/service/UserService.java
  18. 2 0
      src/main/java/com/hz/employmentsite/services/service/baseSettings/SiteUserService.java
  19. 10 1
      src/main/java/com/hz/employmentsite/vo/companyService/PostVo.java
  20. 8 0
      src/main/java/com/hz/employmentsite/vo/jobUserManager/JobUserVo.java
  21. 2 0
      src/main/java/com/hz/employmentsite/vo/user/UserEditVo.java
  22. 266 176
      src/main/resources/mapping/PcPostMapper.xml
  23. 10 3
      src/main/resources/mapping/cquery/JobUserCQuery.xml
  24. 4 2
      src/main/resources/mapping/cquery/PostCQuery.xml
  25. 9 1
      src/main/resources/mapping/cquery/SiteUserCQuery.xml
  26. 16 1
      src/main/resources/mapping/cquery/SysUserCQuery.xml
  27. 13 0
      vue/src/api/baseSettings/userInfo.ts
  28. 1 1
      vue/src/views/baseSettings/siteUser/edit.vue
  29. 89 4
      vue/src/views/companyService/post/edit.vue
  30. 1 1
      vue/src/views/jobUserManager/jobuser/edit.vue
  31. 117 17
      vue/src/views/system/users/addUser.vue
  32. 1 1
      vue/src/views/system/users/index.vue

+ 3 - 9
h5app/src/views/pages/company/edit.vue

@@ -114,11 +114,8 @@
           <div class="form-title">
             其他信息
             <div style="float:right;">
-                <ion-icon :icon="chevronDownOutline" @click="isShow=!isShow" v-show="!isShow"
-                          style="font-size: 24px;"></ion-icon>
-                <ion-icon :icon="chevronUpOutline" @click="isShow=!isShow" v-show="isShow"
-                          style="font-size: 24px;"></ion-icon>
-              </div>
+              <ion-label style="color: red;font-size: 14px;" @click="isShow=!isShow">{{isShow?"收起":"展开"}}</ion-label>
+            </div>
           </div>
 
           <div v-show="isShow" >
@@ -205,7 +202,7 @@
   </ion-page>
 </template>
 <script lang="ts">
-import {chevronDownOutline, chevronUpOutline, arrowBackOutline} from 'ionicons/icons';
+import {arrowBackOutline} from 'ionicons/icons';
 import {defineComponent, ref, reactive, computed, toRefs} from "vue";
 import {useRoute,useRouter} from "vue-router";
 import {getRegionList, getSiteList, getStreeList} from '@/api/company/index';
@@ -325,7 +322,6 @@ export default defineComponent({
     const getCompanyTypeList = async function(){
       const companyTypeResult :any = await getSysDictionaryList("CompanyType");
       companyTypeList.value = companyTypeResult;
-      console.log("td",companyTypeList.value);
     }
 
     const rules = computed(() => {
@@ -486,8 +482,6 @@ export default defineComponent({
     return {
       ...toRefs(formState),
       arrowBackOutline,
-      chevronDownOutline,
-      chevronUpOutline,
       route,
       router,
       isShow,

+ 2 - 7
h5app/src/views/pages/jobUserInfo/companyEdit.vue

@@ -111,10 +111,7 @@
           <div class="form-title">
             其他信息
             <div style="float:right;">
-              <ion-icon :icon="chevronDownOutline" @click="isShow=!isShow" v-show="!isShow"
-                        style="font-size: 24px;"></ion-icon>
-              <ion-icon :icon="chevronUpOutline" @click="isShow=!isShow" v-show="isShow"
-                        style="font-size: 24px;"></ion-icon>
+              <ion-label style="color: red;font-size: 14px;" @click="isShow=!isShow">{{isShow?"收起":"展开"}}</ion-label>
             </div>
           </div>
 
@@ -203,7 +200,7 @@
 </template>
 <script lang="ts">
 import {computed, defineComponent, reactive, ref, toRefs} from "vue";
-import {arrowBackOutline, chevronDownOutline, chevronUpOutline} from 'ionicons/icons';
+import {arrowBackOutline} from 'ionicons/icons';
 import {useRouter} from "vue-router";
 import dayjs from "dayjs";
 import {useRoute} from "vue-router/dist/vue-router";
@@ -447,8 +444,6 @@ export default defineComponent({
     return {
       ...toRefs(formState),
       arrowBackOutline,
-      chevronDownOutline,
-      chevronUpOutline,
       route,
       router,
       isShow,

+ 28 - 17
h5app/src/views/pages/jobUserInfo/userEdit.vue

@@ -63,24 +63,40 @@
               </ion-select>
               <!--          <ion-note slot="error">所属驿站不能为空</ion-note>-->
             </div>
+            <ion-label style="padding-left: 10px;">所属街道<span class="danger">*</span></ion-label>
             <div class="form-select">
-              <ion-label>市/县<span class="danger">*</span></ion-label>
-              <ion-select class="disable" disabled name="regionCode"  id="regionCode" okText="确定" cancelText="取消" v-model="baseData.regionCode"
-                          interface="action-sheet" placeholder="请选择市/县" style="width:100%;text-align:left;" @ionChange="regionChange()" >
+              <ion-select disabled name="regionCode"  id="regionCode" okText="确定" cancelText="取消" v-model="baseData.regionCode"
+                          interface="action-sheet" placeholder="请选择市/县" style="width:50%;float:left;" @ionChange="regionChange()" >
                 <ion-select-option v-for=" (it,key) in regionList" :key="key" :value="it.code">
                   {{ it.name }}
                 </ion-select-option>
               </ion-select>
-            </div>
-            <div class="form-select">
-              <ion-label>所在街道<span class="danger">*</span></ion-label>
-              <ion-select name="streetCode"  id="streetCode" okText="确定" cancelText="取消" v-model="baseData.streetCode"
-                          interface="action-sheet" placeholder="请选择镇/街" style="width:100%;text-align:left;">
-                <ion-select-option v-for=" (it,key) in streetList" :key="key" :value="it.code">
-                  {{ it.name }}
+              <ion-select interface="action-sheet" placeholder="请选择所属街道" cancel-text="取消"
+                          id="streetCode" v-model="baseData.streetCode" style="width: 50%;float: left;">
+                <ion-select-option v-for="(record,key) in streetList" :key="key"
+                                   v-model:value="record.code">
+                  {{ record.name }}
                 </ion-select-option>
               </ion-select>
             </div>
+<!--            <div class="form-select">-->
+<!--              <ion-label>市/县<span class="danger">*</span></ion-label>-->
+<!--              <ion-select class="disable" disabled name="regionCode"  id="regionCode" okText="确定" cancelText="取消" v-model="baseData.regionCode"-->
+<!--                          interface="action-sheet" placeholder="请选择市/县" style="width:100%;text-align:left;" @ionChange="regionChange()" >-->
+<!--                <ion-select-option v-for=" (it,key) in regionList" :key="key" :value="it.code">-->
+<!--                  {{ it.name }}-->
+<!--                </ion-select-option>-->
+<!--              </ion-select>-->
+<!--            </div>-->
+<!--            <div class="form-select">-->
+<!--              <ion-label>所在街道<span class="danger">*</span></ion-label>-->
+<!--              <ion-select name="streetCode"  id="streetCode" okText="确定" cancelText="取消" v-model="baseData.streetCode"-->
+<!--                          interface="action-sheet" placeholder="请选择镇/街" style="width:100%;text-align:left;">-->
+<!--                <ion-select-option v-for=" (it,key) in streetList" :key="key" :value="it.code">-->
+<!--                  {{ it.name }}-->
+<!--                </ion-select-option>-->
+<!--              </ion-select>-->
+<!--            </div>-->
             <div class="form-input">
               <ion-label>住址<span class="danger">*</span></ion-label>
               <ion-input name="address" id="address"  style="text-align: left;"  class="custom" :clear-input="true"
@@ -109,10 +125,7 @@
             <div class="form-title">
               其他信息
               <div style="float: right;">
-                <ion-icon :icon="chevronDownOutline"  @click="expandChange" v-if="!expand"
-                          style="font-size: 24px;"></ion-icon>
-                <ion-icon :icon="chevronUpOutline"  @click="expandChange" v-if="expand"
-                          style="font-size: 24px;"></ion-icon>
+                <ion-label style="color: red;font-size: 14px;" @click="expand=!expand">{{expand?"收起":"展开"}}</ion-label>
               </div>
             </div>
             <div v-if="expand">
@@ -378,7 +391,7 @@
 </template>
 <script lang="ts">
 import {computed, defineComponent, reactive, ref, toRefs, watch} from "vue";
-import {addCircleOutline, arrowBackOutline, chevronDownOutline, chevronUpOutline, trashOutline} from 'ionicons/icons';
+import {addCircleOutline, arrowBackOutline, trashOutline} from 'ionicons/icons';
 import {useRoute, useRouter} from "vue-router";
 import {alertController, onIonViewDidEnter} from "@ionic/vue";
 import {baseInfoSave, getJobUserById} from "@/api/jobUserInfo";
@@ -758,8 +771,6 @@ export default defineComponent({
 
     return {
       ...toRefs(baseInfoData),
-      chevronDownOutline,
-      chevronUpOutline,
       arrowBackOutline,
       addCircleOutline,
       trashOutline,

+ 78 - 5
h5app/src/views/pages/jobhunt/detail.vue

@@ -16,25 +16,98 @@
           <ion-label>姓名</ion-label>
           <ion-text>{{ dataModel.name }}</ion-text>
         </div>
+        <div class="form-detail">
+          <ion-label>身份证号码</ion-label>
+          <ion-text>{{ dataModel.identityNumber }}</ion-text>
+        </div>
         <div class="form-detail">
           <ion-label>性别</ion-label>
           <ion-text>{{ dataModel.genderName }}</ion-text>
         </div>
+        <div class="form-detail">
+          <ion-label>联系电话</ion-label>
+          <ion-text>{{ dataModel.userMobile }}</ion-text>
+        </div>
         <div class="form-detail">
           <ion-label>所属驿站</ion-label>
           <ion-text>{{ dataModel.siteName }}</ion-text>
         </div>
         <div class="form-detail">
-          <ion-label>状态</ion-label>
+          <ion-label>所属街道</ion-label>
+          <ion-text>{{ dataModel.regionName+"-"+dataModel.streetName }}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>居住地址</ion-label>
+          <ion-text>{{ dataModel.address }}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>就业状态</ion-label>
           <ion-text>{{ dataModel.jobStatusName }}</ion-text>
         </div>
         <div class="form-detail">
-          <ion-label>联系电话</ion-label>
-          <ion-text>{{ dataModel.userMobile }}</ion-text>
+          <ion-label>重点人员类别</ion-label>
+          <ion-text>{{ dataModel.keyTypeName }}</ion-text>
         </div>
         <div class="form-detail">
-          <ion-label>居住地址</ion-label>
-          <ion-text>{{ dataModel.address }}</ion-text>
+          <ion-label>民族</ion-label>
+          <ion-text>{{ dataModel.nation }}</ion-text>
+        </div>
+
+        <div class="form-detail">
+          <ion-label>政治面貌</ion-label>
+          <ion-text>{{ dataModel.politicsStatusName }}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>出生地</ion-label>
+          <ion-text>{{ dataModel.birthPlace }}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>户口性质</ion-label>
+          <ion-text>{{ dataModel.familyNatureName }}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>文化程度</ion-label>
+          <ion-text>{{ dataModel.cultureName}}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>健康状况</ion-label>
+          <ion-text>{{ dataModel.healthName }}</ion-text>
+        </div>
+        <div class="form-detail" name="bloodTypeName">
+          <ion-label>血型</ion-label>
+          <ion-text>{{ dataModel.bloodTypeName }}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>身高</ion-label>
+          <ion-text v-if="dataModel.height!=null">{{ dataModel.height +"cm"}}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>视力</ion-label>
+          <ion-text>{{ dataModel.vision}}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>体重</ion-label>
+          <ion-text  v-if="dataModel.weight!=null">{{ dataModel.weight +"kg"}}</ion-text>
+        </div>
+        <div class="form-detail" name="maritalStatusName">
+          <ion-label>婚姻状况</ion-label>
+          <ion-text>{{ dataModel.maritalStatusName}}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>联系人</ion-label>
+          <ion-text>{{ dataModel.userName}}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>电子邮箱</ion-label>
+          <ion-text>{{ dataModel.email}}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>家庭住址</ion-label>
+          <ion-text>{{ dataModel.familyAddress}}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>兴趣爱好</ion-label>
+          <ion-text>{{ dataModel.hobby}}</ion-text>
         </div>
       </div>
     </ion-content>

+ 27 - 16
h5app/src/views/pages/jobhunt/edit.vue

@@ -63,24 +63,40 @@
               </ion-select>
               <!--          <ion-note slot="error">所属驿站不能为空</ion-note>-->
             </div>
+            <ion-label style="padding-left: 10px;">所属街道<span class="danger">*</span></ion-label>
             <div class="form-select">
-              <ion-label>市/县<span class="danger">*</span></ion-label>
               <ion-select disabled name="regionCode"  id="regionCode" okText="确定" cancelText="取消" v-model="baseData.regionCode"
-                          interface="action-sheet" placeholder="请选择市/县" style="width:100%;text-align:left;" @ionChange="regionChange()" >
+                          interface="action-sheet" placeholder="请选择市/县" style="width:50%;float:left;" @ionChange="regionChange()" >
                 <ion-select-option v-for=" (it,key) in regionList" :key="key" :value="it.code">
                   {{ it.name }}
                 </ion-select-option>
               </ion-select>
-            </div>
-            <div class="form-select">
-              <ion-label>所在街道<span class="danger">*</span></ion-label>
-              <ion-select name="streetCode"  id="streetCode" okText="确定" cancelText="取消" v-model="baseData.streetCode"
-                          interface="action-sheet" placeholder="请选择镇/街" style="width:100%;text-align:left;">
-                <ion-select-option v-for=" (it,key) in streetList" :key="key" :value="it.code">
-                  {{ it.name }}
+              <ion-select interface="action-sheet" placeholder="请选择所属街道" cancel-text="取消"
+                          id="streetCode" v-model="baseData.streetCode" style="width: 50%;float: left;">
+                <ion-select-option v-for="(record,key) in streetList" :key="key"
+                                   v-model:value="record.code">
+                  {{ record.name }}
                 </ion-select-option>
               </ion-select>
             </div>
+<!--            <div class="form-select">-->
+<!--              <ion-label>市/县<span class="danger">*</span></ion-label>-->
+<!--              <ion-select disabled name="regionCode"  id="regionCode" okText="确定" cancelText="取消" v-model="baseData.regionCode"-->
+<!--                          interface="action-sheet" placeholder="请选择市/县" style="width:100%;text-align:left;" @ionChange="regionChange()" >-->
+<!--                <ion-select-option v-for=" (it,key) in regionList" :key="key" :value="it.code">-->
+<!--                  {{ it.name }}-->
+<!--                </ion-select-option>-->
+<!--              </ion-select>-->
+<!--            </div>-->
+<!--            <div class="form-select">-->
+<!--              <ion-label>所在街道<span class="danger">*</span></ion-label>-->
+<!--              <ion-select name="streetCode"  id="streetCode" okText="确定" cancelText="取消" v-model="baseData.streetCode"-->
+<!--                          interface="action-sheet" placeholder="请选择镇/街" style="width:100%;text-align:left;">-->
+<!--                <ion-select-option v-for=" (it,key) in streetList" :key="key" :value="it.code">-->
+<!--                  {{ it.name }}-->
+<!--                </ion-select-option>-->
+<!--              </ion-select>-->
+<!--            </div>-->
             <div class="form-input">
               <ion-label>住址<span class="danger">*</span></ion-label>
               <ion-input name="address" id="address"  style="text-align: left;"  class="custom" :clear-input="true"
@@ -109,10 +125,7 @@
         <div class="form-title">
           其他信息
           <div style="float: right;">
-            <ion-icon :icon="chevronDownOutline"  @click="expandChange" v-if="!expand"
-                      style="font-size: 24px;"></ion-icon>
-            <ion-icon :icon="chevronUpOutline"  @click="expandChange" v-if="expand"
-                      style="font-size: 24px;"></ion-icon>
+            <ion-label style="color: red;font-size: 14px;" @click="expand=!expand">{{expand?"收起":"展开"}}</ion-label>
           </div>
         </div>
         <div v-if="expand">
@@ -379,7 +392,7 @@
   </ion-page>
 </template>
 <script lang="ts">
-import {chevronDownOutline, chevronUpOutline,arrowBackOutline,addCircleOutline,trashOutline} from 'ionicons/icons';
+import {arrowBackOutline,addCircleOutline,trashOutline} from 'ionicons/icons';
 import {reactive,defineComponent, computed,watch,ref,toRefs} from "vue";
 import {post} from "@/api/common";
 import {useRoute, useRouter} from "vue-router";
@@ -758,8 +771,6 @@ export default defineComponent({
 
     return {
       ...toRefs(baseInfoData),
-      chevronDownOutline,
-      chevronUpOutline,
       arrowBackOutline,
       addCircleOutline,
       trashOutline,

+ 9 - 2
h5app/src/views/pages/work/log/detail.vue

@@ -41,6 +41,13 @@
           <ion-text>{{ recordsCount.RecordsJobhuntNum }}</ion-text>
         </div>
       </div>
+      <div class="form-detail" style="margin-top: 5px">
+        <ion-label style="color: #8c8f93;margin-left: 10px;">
+          照片
+        </ion-label>
+        <b-image v-if="workLogData.dataModel.doWorkID" :file-ref-id="workLogData.dataModel.doWorkID" :readonly="true"
+                 :is-single="false"></b-image>
+      </div>
     </ion-content>
     <ion-loading
         :is-open="loading"
@@ -59,6 +66,7 @@ import {arrowBackOutline} from 'ionicons/icons';
 import {required} from "@vuelidate/validators";
 import {useVuelidate} from "@vuelidate/core";
 import dayjs from "dayjs";
+import BImage from "@/components/bImage.vue";
 
 interface workLogModel {
   dataModel:any
@@ -105,10 +113,9 @@ const loadData = async (doWorkID: any) => {
   await getWorkTypeList();
   const reqData = await getWorkLogById(doWorkID);
   workLogData.dataModel = reqData;
-  if(workLogData.dataModel.workTime==null){
+  if (workLogData.dataModel.workTime == null) {
     workLogData.dataModel.workTime = dayjs(new Date().toLocaleDateString()).format("YYYY-MM-DD")+"T00:00:00.000+08:00";
   }
-  console.log("初始化dataModel",workLogData.dataModel);
   // 查询当天登记业务数据数量
   await getRecordsCount(workLogData.dataModel.userId, workLogData.dataModel.workTime).then((res:any)=>{
     Object.keys(recordsCount).forEach((key)=>{

+ 12 - 5
h5app/src/views/pages/work/log/edit.vue

@@ -27,7 +27,6 @@
                               :show-default-buttons="true">
                 </ion-datetime>
               </ion-modal>
-<!--              <span style="margin-right: 5px; color: #02a6f1">选择</span>-->
             </div>
           </div>
           <div class="form-select">
@@ -48,6 +47,13 @@
             </ion-label>
             <ion-textarea name="workContent" id="workContent" placeholder="请输入工作内容" :rows="3" v-model="dataModel.workContent"></ion-textarea>
           </div>
+          <div class="form-input">
+            <ion-label>
+              照片
+            </ion-label>
+            <b-image v-if="dataModel.doWorkID" :file-ref-id="dataModel.doWorkID" :readonly="false"
+                     :is-single="false"></b-image>
+          </div>
         </div>
       </form>
     </ion-content>
@@ -71,6 +77,7 @@ import {arrowBackOutline} from 'ionicons/icons';
 import {required} from "@vuelidate/validators";
 import {useVuelidate} from "@vuelidate/core";
 import dayjs from "dayjs";
+import BImage from "@/components/bImage.vue";
 
 interface workLogModel {
   dataModel:any
@@ -82,6 +89,7 @@ interface SelectProps {
 
 export default defineComponent({
   name: 'WorkLogEdit',
+  components: {BImage},
   setup() {
     const router = useRouter();
     const route = useRoute();
@@ -90,7 +98,7 @@ export default defineComponent({
     const workLogData = reactive<workLogModel>({
       dataModel:{
         doWorkID: null,
-        workTime: dayjs().format("YYYY-MM-DD"),
+        workTime: null,
         doTypeID:null,
         workContent: null
     }});
@@ -152,10 +160,9 @@ export default defineComponent({
       await getWorkTypeList();
       const reqData = await getWorkLogById(doWorkID);
       workLogData.dataModel = reqData;
-      if(workLogData.dataModel.workTime==null){
-         workLogData.dataModel.workTime = dayjs(new Date().toLocaleDateString()).format("YYYY-MM-DD")+"T00:00:00.000+08:00";
+      if (workLogData.dataModel.workTime == null) {
+        workLogData.dataModel.workTime = dayjs(new Date().toLocaleDateString()).format("YYYY-MM-DD") + "T00:00:00.000+08:00";
       }
-      console.log("初始化dataModel",workLogData.dataModel);
       loading.value = false;
     };
 

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

@@ -40,7 +40,7 @@
           <ion-list>
             <div v-for="(record,key) in dataList" :key="key">
               <ion-item-sliding>
-                <ion-item detail @click="onDetail(record)">
+                <ion-item detail @click="onDetail(record.doWorkID)">
                   <ion-grid @click="onDetail(record.doWorkID)">
                     <ion-row>
                       <ion-col>

+ 1 - 1
src/main/java/com/hz/employmentsite/controller/UserController.java

@@ -61,7 +61,7 @@ public class UserController {
     }
 
     @PostMapping("save")
-    public BaseResponse<Integer> save(@RequestBody UserEditVo data) {
+    public BaseResponse<Integer> save(@RequestBody UserEditVo data) throws Exception {
         return RespGenerstor.success(userService.save(data,accountService.getLoginUserID()));
     }
 

+ 8 - 0
src/main/java/com/hz/employmentsite/controller/baseSettings/SiteUserController.java

@@ -123,5 +123,13 @@ public class SiteUserController {
         }
     }
 
+    @GetMapping("/getListForAddUser")
+    public BaseResponse<List<SiteUserVo>> getListForAddUser() {
+
+        List<SiteUserVo> result = userInfoService.getListForAddUser();
+
+        return RespGenerstor.success(result);
+    }
+
 
 }

+ 2 - 2
src/main/java/com/hz/employmentsite/filter/exception/RespGenerstor.java

@@ -5,8 +5,8 @@ public class RespGenerstor {
         return new BaseResponse(BaseErrorEnum.SUCCESS.getCode(), "接口调用成功", data);
     }
 
-    public static BaseResponse<Object> fail(BaseErrorEnum baseErrorEnum,Object data) {
-        return new BaseResponse<Object>(baseErrorEnum.getCode(), baseErrorEnum.getMessage(), data);
+    public static BaseResponse<Object> fail(BaseErrorEnum baseErrorEnum, Object data) {
+        return new BaseResponse<Object>(baseErrorEnum.getCode(), baseErrorEnum.getMessage() + data.toString(), data);
     }
 
     public static BaseResponse<Object> fail(String code, String message) {

+ 2 - 0
src/main/java/com/hz/employmentsite/mapper/cquery/UserInfoCQuery.java

@@ -15,4 +15,6 @@ public interface UserInfoCQuery {
                              @Param("userNo") String userNo);
 
     List<SiteUserVo> getListBySiteID(@Param("siteID") String siteID);
+
+    List<SiteUserVo> selectListForAddUser();
 }

+ 58 - 0
src/main/java/com/hz/employmentsite/model/PcPost.java

@@ -68,6 +68,16 @@ public class PcPost {
 
     private String postDesc;
 
+    private String contactName;
+
+    private String contactMobile;
+
+    private String contactEmail;
+
+    private Integer workNatureID;
+
+    private Integer tagID;
+
     public String getPostID() {
         return postID;
     }
@@ -323,4 +333,52 @@ public class PcPost {
     public void setPostDesc(String postDesc) {
         this.postDesc = postDesc == null ? null : postDesc.trim();
     }
+
+    public Boolean getTrail() {
+        return isTrail;
+    }
+
+    public void setTrail(Boolean trail) {
+        isTrail = trail;
+    }
+
+    public String getContactName() {
+        return contactName;
+    }
+
+    public void setContactName(String contactName) {
+        this.contactName = contactName;
+    }
+
+    public String getContactMobile() {
+        return contactMobile;
+    }
+
+    public void setContactMobile(String contactMobile) {
+        this.contactMobile = contactMobile;
+    }
+
+    public String getContactEmail() {
+        return contactEmail;
+    }
+
+    public void setContactEmail(String contactEmail) {
+        this.contactEmail = contactEmail;
+    }
+
+    public Integer getWorkNatureID() {
+        return workNatureID;
+    }
+
+    public void setWorkNatureID(Integer workNatureID) {
+        this.workNatureID = workNatureID;
+    }
+
+    public Integer getTagID() {
+        return tagID;
+    }
+
+    public void setTagID(Integer tagID) {
+        this.tagID = tagID;
+    }
 }

+ 90 - 44
src/main/java/com/hz/employmentsite/services/impl/UserServiceImpl.java

@@ -17,6 +17,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.util.DigestUtils;
 
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 @Component
@@ -33,6 +34,9 @@ public class UserServiceImpl implements UserService {
     @Autowired
     private SysUserDatarangeMapper sysUserDatarangeMapper;
 
+    @Autowired
+    private PcSiteUserMapper pcSiteUserMapper;
+
     private String defaultPassword = "52653B706ADC444F6660FAB66D6DC210";//Hjy@2024
 
 
@@ -130,61 +134,103 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public Integer save(UserEditVo data, String userId) {
-        int result = 0;
-        UserInfoModel record = getUserInfo(data.getUserID());
-        SysUser dbData = record == null ? null : sysUserMapper.selectByPrimaryKey(record.userID);
-        Boolean isExist = dbData != null;
-        if (!isExist) {
-            //添加
-            dbData = new SysUser();
-            dbData.setUserID(data.getUserID());
-            dbData.setName(data.getName());
-            dbData.setLoginID(data.getLoginID());
-            if (data.getPassword() == null) {
-                dbData.setPassword(defaultPassword);
-            } else {
-                dbData.setPassword(DigestUtils.md5DigestAsHex(data.getPassword().getBytes()).toUpperCase());
+    public Integer save(UserEditVo data, String userId) throws Exception {
+        AtomicInteger result = new AtomicInteger();
+        if (data.getUserTypeID().equals(3)) {//驿站工作者
+            if (data.getSiteUserIdList() != null && data.getSiteUserIdList().size() > 0) {
+                PcSiteUserExample exp = new PcSiteUserExample();
+                PcSiteUserExample.Criteria cri = exp.or();
+                cri.andSiteUserIDIn(data.getSiteUserIdList());
+
+                List<PcSiteUser> pcSiteUserList = pcSiteUserMapper.selectByExample(exp);
+
+                pcSiteUserList.forEach(siteUser -> {
+                    SysUserExample uExp = new SysUserExample();
+                    SysUserExample.Criteria uCri = uExp.or();
+                    uCri.andLoginIDEqualTo(siteUser.getUserNo());
+                    SysUser dbUser = sysUserMapper.selectByExample(uExp).stream().findFirst().orElse(null);
+                    if (dbUser == null) {
+                        dbUser = new SysUser();
+                        dbUser.setUserID(UUID.randomUUID().toString());
+                        dbUser.setName(siteUser.getSiteUserName());
+                        dbUser.setLoginID(siteUser.getUserNo());
+                        dbUser.setPassword(data.getPassword() == null ? defaultPassword : DigestUtils.md5DigestAsHex(data.getPassword().getBytes()).toUpperCase());
+                        dbUser.setUserTypeID(data.getUserTypeID());
+                        dbUser.setRecordStatus(data.getRecordStatus());
+                        dbUser.setCreateBy(userId);
+                        dbUser.setCreateTime(new Date());
+                        result.set(result.get() + sysUserMapper.insert(dbUser));
+                    }
+
+                    siteUser.setUserID(dbUser.getUserID());
+                    pcSiteUserMapper.updateByPrimaryKey(siteUser);
+                });
+
             }
-            dbData.setUserTypeID(data.getUserTypeID());
-            dbData.setRecordStatus(data.getRecordStatus());
-            dbData.setCreateBy(userId);
-            dbData.setCreateTime(new Date());
-            result = sysUserMapper.insert(dbData);
         } else {
-            //修改
-            dbData.setName(data.getName());
-            dbData.setLoginID(data.getLoginID());
-            if (data.getPassword() == null) {
-                dbData.setPassword(defaultPassword);
+            SysUserExample uExp = new SysUserExample();
+            SysUserExample.Criteria uCri = uExp.or();
+            uCri.andLoginIDEqualTo(data.getLoginID());
+
+            SysUser dbUser = sysUserMapper.selectByExample(uExp).stream().findFirst().orElse(null);
+            if (dbUser != null && !dbUser.getUserID().equals(data.getUserID()))
+                throw new Exception("该账号已录入系统,请勿重复录入");
+
+
+            UserInfoModel record = getUserInfo(data.getUserID());
+            SysUser dbData = record == null ? null : sysUserMapper.selectByPrimaryKey(record.userID);
+            Boolean isExist = dbData != null;
+            if (!isExist) {
+                //添加
+                dbData = new SysUser();
+                dbData.setUserID(data.getUserID());
+                dbData.setName(data.getName());
+                dbData.setLoginID(data.getLoginID());
+                if (data.getPassword() == null) {
+                    dbData.setPassword(defaultPassword);
+                } else {
+                    dbData.setPassword(DigestUtils.md5DigestAsHex(data.getPassword().getBytes()).toUpperCase());
+                }
+                dbData.setUserTypeID(data.getUserTypeID());
+                dbData.setRecordStatus(data.getRecordStatus());
+                dbData.setCreateBy(userId);
+                dbData.setCreateTime(new Date());
+                result.set(sysUserMapper.insert(dbData));
             } else {
-                dbData.setPassword(DigestUtils.md5DigestAsHex(data.getPassword().getBytes()).toUpperCase());
+                //修改
+                dbData.setName(data.getName());
+                dbData.setLoginID(data.getLoginID());
+                if (data.getPassword() == null) {
+                    dbData.setPassword(defaultPassword);
+                } else {
+                    dbData.setPassword(DigestUtils.md5DigestAsHex(data.getPassword().getBytes()).toUpperCase());
+                }
+                dbData.setUserTypeID(data.getUserTypeID());
+                dbData.setRecordStatus(data.getRecordStatus());
+                dbData.setUpdateBy(userId);
+                dbData.setUpdateTime(new Date());
+                result.set(sysUserMapper.updateByPrimaryKey(dbData));
             }
-            dbData.setUserTypeID(data.getUserTypeID());
-            dbData.setRecordStatus(data.getRecordStatus());
-            dbData.setUpdateBy(userId);
-            dbData.setUpdateTime(new Date());
-            result = sysUserMapper.updateByPrimaryKey(dbData);
-        }
 
-        SysUserDatarangeExample udExp = new SysUserDatarangeExample();
-        SysUserDatarangeExample.Criteria udCri = udExp.or();
-        udCri.andUserIdEqualTo(data.getUserID());
-        sysUserDatarangeMapper.deleteByExample(udExp);
+            SysUserDatarangeExample udExp = new SysUserDatarangeExample();
+            SysUserDatarangeExample.Criteria udCri = udExp.or();
+            udCri.andUserIdEqualTo(data.getUserID());
+            sysUserDatarangeMapper.deleteByExample(udExp);
 
-        if (data.datarangeIdList!=null) {
+            if (data.datarangeIdList != null) {
 
-            data.datarangeIdList.forEach(datarangeId -> {
-                SysUserDatarangeKey sysUserDatarange = new SysUserDatarangeKey();
-                sysUserDatarange.setUserId(data.getUserID());
-                sysUserDatarange.setDatarangeId(datarangeId);
+                data.datarangeIdList.forEach(datarangeId -> {
+                    SysUserDatarangeKey sysUserDatarange = new SysUserDatarangeKey();
+                    sysUserDatarange.setUserId(data.getUserID());
+                    sysUserDatarange.setDatarangeId(datarangeId);
 
-                sysUserDatarangeMapper.insert(sysUserDatarange);
-            });
+                    sysUserDatarangeMapper.insert(sysUserDatarange);
+                });
 
+            }
         }
 
-        return result;
+        return result.get();
     }
 
     @Override

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

@@ -115,9 +115,9 @@ public class SiteUserImpl implements SiteUserService {
         SiteUserVo record = get(data.siteUserID);
         PcSiteUser dbData = record == null ? null : pcSiteUserMapper.selectByPrimaryKey(record.siteUserID);
         Boolean isExist = dbData != null;
-        SysUser curSysUserData = data.userID != null ? sysUserMapper.selectByPrimaryKey(data.userID) : null;
-        Boolean isLinkUser = curSysUserData != null;
-        SysRoleExample roleExp = null;
+        /*SysUser curSysUserData = data.userID != null ? sysUserMapper.selectByPrimaryKey(data.userID) : null;*/
+        /*Boolean isLinkUser = curSysUserData != null;*/
+        /*SysRoleExample roleExp = null;*/
         /*注意:这里的data.roleID为用户类型ID*/
         if (!isExist) {
             // 添加时有重复数据立即报错
@@ -139,7 +139,7 @@ public class SiteUserImpl implements SiteUserService {
 
             //添加
             //处理用户表
-            curSysUserData = new SysUser();
+            /*curSysUserData = new SysUser();
             curSysUserData.setUserID(UUID.randomUUID().toString());
             curSysUserData.setName(data.getSiteUserName());
             curSysUserData.setPassword(DigestUtils.md5DigestAsHex("123456".getBytes()).toUpperCase());
@@ -148,11 +148,11 @@ public class SiteUserImpl implements SiteUserService {
             curSysUserData.setCreateTime(new Date());
             curSysUserData.setCreateBy(userId);
             curSysUserData.setRecordStatus(1);
-            result += sysUserMapper.insert(curSysUserData);
+            result += sysUserMapper.insert(curSysUserData);*/
 
             //处理站点人员表
             dbData = new PcSiteUser();
-            dbData.setUserID(curSysUserData.getUserID());
+            /*dbData.setUserID(curSysUserData.getUserID());*/
             dbData.setSiteUserID(data.getSiteUserID());
             dbData.setSiteID(data.getSiteID());
             dbData.setGender(data.getGender());
@@ -198,17 +198,17 @@ public class SiteUserImpl implements SiteUserService {
 
             //修改
             //处理用户表
-            if (isLinkUser) {
+            /*if (isLinkUser) {
                 curSysUserData.setName(data.siteUserName);
                 curSysUserData.setUserTypeID(data.roleID);
                 curSysUserData.setLoginID(StrToPinYin(data.siteUserName));
                 curSysUserData.setUpdateTime(new Date());
                 curSysUserData.setUpdateBy(userId);
                 result += sysUserMapper.updateByPrimaryKey(curSysUserData);
-            }
+            }*/
 
             //处理站点人员表
-            dbData.setUserID(data.userID);
+            /*dbData.setUserID(data.userID);*/
             dbData.setSiteUserID(data.siteUserID);
             dbData.setSiteID(data.getSiteID());
             dbData.setGender(data.gender);
@@ -253,7 +253,7 @@ public class SiteUserImpl implements SiteUserService {
                 result += sysUserSysRoleMapper.deleteByExample(userRoleExp);
                 SysUserExample userExp = new SysUserExample();
                 userExp.or().andUserIDEqualTo(curSiteUser.getUserID());
-                result += sysUserMapper.deleteByExample(userExp);
+                /*result += sysUserMapper.deleteByExample(userExp);*/
             }
         }
         return result;
@@ -406,4 +406,9 @@ public class SiteUserImpl implements SiteUserService {
         }
         return pinyinStr;
     }
+
+    @Override
+    public List<SiteUserVo> getListForAddUser(){
+        return userInfoCQuery.selectListForAddUser();
+    }
 }

+ 11 - 1
src/main/java/com/hz/employmentsite/services/impl/companyService/PostServiceImpl.java

@@ -9,8 +9,8 @@ import com.hz.employmentsite.model.*;
 import com.hz.employmentsite.services.service.companyService.PostService;
 import com.hz.employmentsite.services.service.system.DictionaryService;
 import com.hz.employmentsite.util.StringUtils;
-import com.hz.employmentsite.vo.companyService.RecommendPostVo;
 import com.hz.employmentsite.vo.companyService.PostVo;
+import com.hz.employmentsite.vo.companyService.RecommendPostVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -143,6 +143,11 @@ public class PostServiceImpl implements PostService {
             dbData.setJobPlace(data.getJobPlace());
             dbData.setStartTime(data.getStartTime());
             dbData.setEndTime(data.getEndTime());
+            dbData.setContactName(data.getContactName());
+            dbData.setContactMobile(data.getContactMobile());
+            dbData.setContactEmail(data.getContactEmail());
+            dbData.setWorkNatureID(data.getWorkNatureID());
+            dbData.setTagID(data.getTagID());
             result = pcPostMapper.insert(dbData);
         } else {
             dbData.setProfessionID(data.getProfessionID());
@@ -175,6 +180,11 @@ public class PostServiceImpl implements PostService {
             dbData.setJobPlace(data.getJobPlace());
             dbData.setStartTime(data.getStartTime());
             dbData.setEndTime(data.getEndTime());
+            dbData.setContactName(data.getContactName());
+            dbData.setContactMobile(data.getContactMobile());
+            dbData.setContactEmail(data.getContactEmail());
+            dbData.setWorkNatureID(data.getWorkNatureID());
+            dbData.setTagID(data.getTagID());
             result = pcPostMapper.updateByPrimaryKeySelective(dbData);
         }
         return result;

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

@@ -17,7 +17,7 @@ public interface UserService {
     List<DataRange> getUserDataRange(String userID);
     int updateUserStatus(String userId, Integer status);
     UserInfoModel getUserInfo(String userId);
-    Integer save(UserEditVo data, String userId);
+    Integer save(UserEditVo data, String userId) throws Exception;
     PageInfo<HashMap<String, Object>> getUserList(int page, int rows, String name,String loginID, Integer sex, Integer recordStatus, Integer userType);
     SysUser getIsCacheUserInfoByID(String userId);
 

+ 2 - 0
src/main/java/com/hz/employmentsite/services/service/baseSettings/SiteUserService.java

@@ -28,4 +28,6 @@ public interface SiteUserService {
      * @return 导入结果
      */
     List<SiteUserVo> importSiteUser(List<SiteUserVo> dataList, String loginUserId);
+
+    List<SiteUserVo> getListForAddUser();
 }

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

@@ -1,7 +1,8 @@
 package com.hz.employmentsite.vo.companyService;
 
-import lombok.Data;
 import com.hz.employmentsite.util.datarange.annotations.PostID;
+import lombok.Data;
+
 import java.math.BigDecimal;
 import java.util.Date;
 @Data
@@ -97,4 +98,12 @@ public class PostVo {
     public String parentProfessionID;
 
     public String recommendNum; //推荐数量
+
+    public String contactName;
+    public String contactMobile;
+    public String contactEmail;
+
+    public Integer workNatureID;
+    public String workNatureName;
+    public Integer tagID;
 }

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

@@ -49,6 +49,8 @@ public class JobUserVo {
 
     private Integer bloodTypeID;
 
+    private String bloodTypeName;
+
     private String height;
 
     private String vision;
@@ -57,12 +59,18 @@ public class JobUserVo {
 
     private Integer maritalStatusID;
 
+    private String MaritalStatusName;
+
     private String provinceCode;
 
     private String regionCode;
 
+    private String regionName;
+
     private String streetCode;
 
+    private String streetName;
+
     private String userName;
 
     private String userMobile;

+ 2 - 0
src/main/java/com/hz/employmentsite/vo/user/UserEditVo.java

@@ -8,4 +8,6 @@ import java.util.List;
 @Data
 public class UserEditVo extends SysUser {
     public List<String> datarangeIdList;
+
+    public List<String> siteUserIdList;
 }

+ 266 - 176
src/main/resources/mapping/PcPostMapper.xml

@@ -2,37 +2,42 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.hz.employmentsite.mapper.PcPostMapper">
   <resultMap id="BaseResultMap" type="com.hz.employmentsite.model.PcPost">
-    <id column="PostID" jdbcType="VARCHAR" property="postID" />
-    <result column="ProfessionID" jdbcType="VARCHAR" property="professionID" />
-    <result column="WorkCode" jdbcType="VARCHAR" property="workCode" />
-    <result column="WorkName" jdbcType="VARCHAR" property="workName" />
-    <result column="RecruitCount" jdbcType="INTEGER" property="recruitCount" />
-    <result column="CompanyID" jdbcType="VARCHAR" property="companyID" />
-    <result column="PostName" jdbcType="VARCHAR" property="postName" />
-    <result column="RecordStatus" jdbcType="INTEGER" property="recordStatus" />
-    <result column="WorkNature" jdbcType="VARCHAR" property="workNature" />
-    <result column="ValidDay" jdbcType="INTEGER" property="validDay" />
-    <result column="WorkYear" jdbcType="INTEGER" property="workYear" />
-    <result column="CultureRank" jdbcType="INTEGER" property="cultureRank" />
-    <result column="MaxSalary" jdbcType="DECIMAL" property="maxSalary" />
-    <result column="MinSalary" jdbcType="DECIMAL" property="minSalary" />
-    <result column="Welfare" jdbcType="VARCHAR" property="welfare" />
-    <result column="UserName" jdbcType="VARCHAR" property="userName" />
-    <result column="UserMobile" jdbcType="VARCHAR" property="userMobile" />
-    <result column="PostEmail" jdbcType="VARCHAR" property="postEmail" />
-    <result column="WorkTime" jdbcType="INTEGER" property="workTime" />
-    <result column="IsTrail" jdbcType="BIT" property="isTrail" />
-    <result column="TrailMonths" jdbcType="INTEGER" property="trailMonths" />
-    <result column="TrailMaxSalary" jdbcType="DECIMAL" property="trailMaxSalary" />
-    <result column="TrailMinSalary" jdbcType="DECIMAL" property="trailMinSalary" />
-    <result column="CreateUserID" jdbcType="VARCHAR" property="createUserID" />
-    <result column="CreateTime" jdbcType="TIMESTAMP" property="createTime" />
-    <result column="ModifyUserID" jdbcType="VARCHAR" property="modifyUserID" />
-    <result column="ModifyTime" jdbcType="TIMESTAMP" property="modifyTime" />
-    <result column="ValidTime" jdbcType="TIMESTAMP" property="validTime" />
-    <result column="StartTime" jdbcType="TIMESTAMP" property="startTime" />
-    <result column="EndTime" jdbcType="TIMESTAMP" property="endTime" />
-    <result column="JobPlace" jdbcType="VARCHAR" property="jobPlace" />
+    <id column="PostID" jdbcType="VARCHAR" property="postID"/>
+    <result column="ProfessionID" jdbcType="VARCHAR" property="professionID"/>
+    <result column="WorkCode" jdbcType="VARCHAR" property="workCode"/>
+    <result column="WorkName" jdbcType="VARCHAR" property="workName"/>
+    <result column="RecruitCount" jdbcType="INTEGER" property="recruitCount"/>
+    <result column="CompanyID" jdbcType="VARCHAR" property="companyID"/>
+    <result column="PostName" jdbcType="VARCHAR" property="postName"/>
+    <result column="RecordStatus" jdbcType="INTEGER" property="recordStatus"/>
+    <result column="WorkNature" jdbcType="VARCHAR" property="workNature"/>
+    <result column="ValidDay" jdbcType="INTEGER" property="validDay"/>
+    <result column="WorkYear" jdbcType="INTEGER" property="workYear"/>
+    <result column="CultureRank" jdbcType="INTEGER" property="cultureRank"/>
+    <result column="MaxSalary" jdbcType="DECIMAL" property="maxSalary"/>
+    <result column="MinSalary" jdbcType="DECIMAL" property="minSalary"/>
+    <result column="Welfare" jdbcType="VARCHAR" property="welfare"/>
+    <result column="UserName" jdbcType="VARCHAR" property="userName"/>
+    <result column="UserMobile" jdbcType="VARCHAR" property="userMobile"/>
+    <result column="PostEmail" jdbcType="VARCHAR" property="postEmail"/>
+    <result column="WorkTime" jdbcType="INTEGER" property="workTime"/>
+    <result column="IsTrail" jdbcType="BIT" property="isTrail"/>
+    <result column="TrailMonths" jdbcType="INTEGER" property="trailMonths"/>
+    <result column="TrailMaxSalary" jdbcType="DECIMAL" property="trailMaxSalary"/>
+    <result column="TrailMinSalary" jdbcType="DECIMAL" property="trailMinSalary"/>
+    <result column="CreateUserID" jdbcType="VARCHAR" property="createUserID"/>
+    <result column="CreateTime" jdbcType="TIMESTAMP" property="createTime"/>
+    <result column="ModifyUserID" jdbcType="VARCHAR" property="modifyUserID"/>
+    <result column="ModifyTime" jdbcType="TIMESTAMP" property="modifyTime"/>
+    <result column="ValidTime" jdbcType="TIMESTAMP" property="validTime"/>
+    <result column="StartTime" jdbcType="TIMESTAMP" property="startTime"/>
+    <result column="EndTime" jdbcType="TIMESTAMP" property="endTime"/>
+    <result column="JobPlace" jdbcType="VARCHAR" property="jobPlace"/>
+    <result column="ContactName" jdbcType="VARCHAR" property="contactName"/>
+    <result column="ContactMobile" jdbcType="VARCHAR" property="contactMobile"/>
+    <result column="ContactEmail" jdbcType="VARCHAR" property="contactEmail"/>
+    <result column="WorkNatureID" jdbcType="INTEGER" property="workNatureID"/>
+    <result column="TagID" jdbcType="INTEGER" property="tagID"/>
   </resultMap>
   <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.hz.employmentsite.model.PcPost">
     <result column="PostDesc" jdbcType="LONGVARCHAR" property="postDesc" />
@@ -96,11 +101,12 @@
     </where>
   </sql>
   <sql id="Base_Column_List">
-    PostID, ProfessionID, WorkCode, WorkName, RecruitCount, CompanyID, PostName, RecordStatus, 
+    PostID
+    , ProfessionID, WorkCode, WorkName, RecruitCount, CompanyID, PostName, RecordStatus,
     WorkNature, ValidDay, WorkYear, CultureRank, MaxSalary, MinSalary, Welfare, UserName, 
     UserMobile, PostEmail, WorkTime, IsTrail, TrailMonths, TrailMaxSalary, TrailMinSalary, 
     CreateUserID, CreateTime, ModifyUserID, ModifyTime, ValidTime, StartTime, EndTime, 
-    JobPlace
+    JobPlace, ContactName,ContactMobile,ContactEmail,WorkNatureID,TagID
   </sql>
   <sql id="Blob_Column_List">
     PostDesc
@@ -154,28 +160,32 @@
     </if>
   </delete>
   <insert id="insert" parameterType="com.hz.employmentsite.model.PcPost">
-    insert into pc_post (PostID, ProfessionID, WorkCode, 
-      WorkName, RecruitCount, CompanyID, 
-      PostName, RecordStatus, WorkNature, 
-      ValidDay, WorkYear, CultureRank, 
-      MaxSalary, MinSalary, Welfare, 
-      UserName, UserMobile, PostEmail, 
-      WorkTime, IsTrail, TrailMonths, 
-      TrailMaxSalary, TrailMinSalary, CreateUserID, 
-      CreateTime, ModifyUserID, ModifyTime, 
-      ValidTime, StartTime, EndTime, 
-      JobPlace, PostDesc)
-    values (#{postID,jdbcType=VARCHAR}, #{professionID,jdbcType=VARCHAR}, #{workCode,jdbcType=VARCHAR}, 
-      #{workName,jdbcType=VARCHAR}, #{recruitCount,jdbcType=INTEGER}, #{companyID,jdbcType=VARCHAR}, 
-      #{postName,jdbcType=VARCHAR}, #{recordStatus,jdbcType=INTEGER}, #{workNature,jdbcType=VARCHAR}, 
-      #{validDay,jdbcType=INTEGER}, #{workYear,jdbcType=INTEGER}, #{cultureRank,jdbcType=INTEGER}, 
-      #{maxSalary,jdbcType=DECIMAL}, #{minSalary,jdbcType=DECIMAL}, #{welfare,jdbcType=VARCHAR}, 
-      #{userName,jdbcType=VARCHAR}, #{userMobile,jdbcType=VARCHAR}, #{postEmail,jdbcType=VARCHAR}, 
-      #{workTime,jdbcType=INTEGER}, #{isTrail,jdbcType=BIT}, #{trailMonths,jdbcType=INTEGER}, 
-      #{trailMaxSalary,jdbcType=DECIMAL}, #{trailMinSalary,jdbcType=DECIMAL}, #{createUserID,jdbcType=VARCHAR}, 
-      #{createTime,jdbcType=TIMESTAMP}, #{modifyUserID,jdbcType=VARCHAR}, #{modifyTime,jdbcType=TIMESTAMP}, 
-      #{validTime,jdbcType=TIMESTAMP}, #{startTime,jdbcType=TIMESTAMP}, #{endTime,jdbcType=TIMESTAMP}, 
-      #{jobPlace,jdbcType=VARCHAR}, #{postDesc,jdbcType=LONGVARCHAR})
+    insert into pc_post (PostID, ProfessionID, WorkCode,
+                         WorkName, RecruitCount, CompanyID,
+                         PostName, RecordStatus, WorkNature,
+                         ValidDay, WorkYear, CultureRank,
+                         MaxSalary, MinSalary, Welfare,
+                         UserName, UserMobile, PostEmail,
+                         WorkTime, IsTrail, TrailMonths,
+                         TrailMaxSalary, TrailMinSalary, CreateUserID,
+                         CreateTime, ModifyUserID, ModifyTime,
+                         ValidTime, StartTime, EndTime,
+                         JobPlace, PostDesc, ContactName,
+                         ContactMobile, ContactEmail, WorkNatureID,
+                         TagID)
+    values (#{postID,jdbcType=VARCHAR}, #{professionID,jdbcType=VARCHAR}, #{workCode,jdbcType=VARCHAR},
+            #{workName,jdbcType=VARCHAR}, #{recruitCount,jdbcType=INTEGER}, #{companyID,jdbcType=VARCHAR},
+            #{postName,jdbcType=VARCHAR}, #{recordStatus,jdbcType=INTEGER}, #{workNature,jdbcType=VARCHAR},
+            #{validDay,jdbcType=INTEGER}, #{workYear,jdbcType=INTEGER}, #{cultureRank,jdbcType=INTEGER},
+            #{maxSalary,jdbcType=DECIMAL}, #{minSalary,jdbcType=DECIMAL}, #{welfare,jdbcType=VARCHAR},
+            #{userName,jdbcType=VARCHAR}, #{userMobile,jdbcType=VARCHAR}, #{postEmail,jdbcType=VARCHAR},
+            #{workTime,jdbcType=INTEGER}, #{isTrail,jdbcType=BIT}, #{trailMonths,jdbcType=INTEGER},
+            #{trailMaxSalary,jdbcType=DECIMAL}, #{trailMinSalary,jdbcType=DECIMAL}, #{createUserID,jdbcType=VARCHAR},
+            #{createTime,jdbcType=TIMESTAMP}, #{modifyUserID,jdbcType=VARCHAR}, #{modifyTime,jdbcType=TIMESTAMP},
+            #{validTime,jdbcType=TIMESTAMP}, #{startTime,jdbcType=TIMESTAMP}, #{endTime,jdbcType=TIMESTAMP},
+            #{jobPlace,jdbcType=VARCHAR}, #{postDesc,jdbcType=LONGVARCHAR}, #{contactName,jdbcType=VARCHAR},
+            #{contactMobile,jdbcType=VARCHAR}, #{contactEmail,jdbcType=VARCHAR},
+            #{workNatureID,jdbcType=INTEGER}, #{tagID,jdbcType=INTEGER})
   </insert>
   <insert id="insertSelective" parameterType="com.hz.employmentsite.model.PcPost">
     insert into pc_post
@@ -276,6 +286,21 @@
       <if test="postDesc != null">
         PostDesc,
       </if>
+      <if test="contactName != null">
+        ContactName
+      </if>
+      <if test="contactMobile != null">
+        ContactMobile,
+      </if>
+      <if test="contactEmail != null">
+        ContactEmail,
+      </if>
+      <if test="workNatureID != null">
+        WorkNatureID,
+      </if>
+      <if test="tagID != null">
+        TagID,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="postID != null">
@@ -374,6 +399,21 @@
       <if test="postDesc != null">
         #{postDesc,jdbcType=LONGVARCHAR},
       </if>
+      <if test="contactName != null">
+        #{contactName,jdbcType=VARCHAR},
+      </if>
+      <if test="contactMobile != null">
+        #{contactMobile,jdbcType=VARCHAR},
+      </if>
+      <if test="contactEmail != null">
+        #{contactEmail,jdbcType=VARCHAR},
+      </if>
+      <if test="workNatureID != null">
+        #{workNatureID,jdbcType=INTEGER},
+      </if>
+      <if test="tagID != null">
+        #{tagID,jdbcType=INTEGER},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.hz.employmentsite.model.PcPostExample" resultType="java.lang.Long">
@@ -481,6 +521,21 @@
       <if test="row.postDesc != null">
         PostDesc = #{row.postDesc,jdbcType=LONGVARCHAR},
       </if>
+      <if test="row.contactName != null">
+        ContactName = #{row.contactName,jdbcType=VARCHAR},
+      </if>
+      <if test="row.contactMobile != null">
+        ContactMobile = #{row.contactMobile,jdbcType=VARCHAR},
+      </if>
+      <if test="row.contactEmail != null">
+        ContactEmail = #{row.contactEmail,jdbcType=VARCHAR},
+      </if>
+      <if test="row.workNatureID != null">
+        WorkNatureID = #{row.workNatureID,jdbcType=INTEGER},
+      </if>
+      <if test="row.tagID != null">
+        TagID = #{row.tagID,jdbcType=INTEGER},
+      </if>
     </set>
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -489,37 +544,42 @@
   <update id="updateByExampleWithBLOBs" parameterType="map">
     update pc_post
     set PostID = #{row.postID,jdbcType=VARCHAR},
-      ProfessionID = #{row.professionID,jdbcType=VARCHAR},
-      WorkCode = #{row.workCode,jdbcType=VARCHAR},
-      WorkName = #{row.workName,jdbcType=VARCHAR},
-      RecruitCount = #{row.recruitCount,jdbcType=INTEGER},
-      CompanyID = #{row.companyID,jdbcType=VARCHAR},
-      PostName = #{row.postName,jdbcType=VARCHAR},
-      RecordStatus = #{row.recordStatus,jdbcType=INTEGER},
-      WorkNature = #{row.workNature,jdbcType=VARCHAR},
-      ValidDay = #{row.validDay,jdbcType=INTEGER},
-      WorkYear = #{row.workYear,jdbcType=INTEGER},
-      CultureRank = #{row.cultureRank,jdbcType=INTEGER},
-      MaxSalary = #{row.maxSalary,jdbcType=DECIMAL},
-      MinSalary = #{row.minSalary,jdbcType=DECIMAL},
-      Welfare = #{row.welfare,jdbcType=VARCHAR},
-      UserName = #{row.userName,jdbcType=VARCHAR},
-      UserMobile = #{row.userMobile,jdbcType=VARCHAR},
-      PostEmail = #{row.postEmail,jdbcType=VARCHAR},
-      WorkTime = #{row.workTime,jdbcType=INTEGER},
-      IsTrail = #{row.isTrail,jdbcType=BIT},
-      TrailMonths = #{row.trailMonths,jdbcType=INTEGER},
-      TrailMaxSalary = #{row.trailMaxSalary,jdbcType=DECIMAL},
-      TrailMinSalary = #{row.trailMinSalary,jdbcType=DECIMAL},
-      CreateUserID = #{row.createUserID,jdbcType=VARCHAR},
-      CreateTime = #{row.createTime,jdbcType=TIMESTAMP},
-      ModifyUserID = #{row.modifyUserID,jdbcType=VARCHAR},
-      ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP},
-      ValidTime = #{row.validTime,jdbcType=TIMESTAMP},
-      StartTime = #{row.startTime,jdbcType=TIMESTAMP},
-      EndTime = #{row.endTime,jdbcType=TIMESTAMP},
-      JobPlace = #{row.jobPlace,jdbcType=VARCHAR},
-      PostDesc = #{row.postDesc,jdbcType=LONGVARCHAR}
+    ProfessionID = #{row.professionID,jdbcType=VARCHAR},
+    WorkCode = #{row.workCode,jdbcType=VARCHAR},
+    WorkName = #{row.workName,jdbcType=VARCHAR},
+    RecruitCount = #{row.recruitCount,jdbcType=INTEGER},
+    CompanyID = #{row.companyID,jdbcType=VARCHAR},
+    PostName = #{row.postName,jdbcType=VARCHAR},
+    RecordStatus = #{row.recordStatus,jdbcType=INTEGER},
+    WorkNature = #{row.workNature,jdbcType=VARCHAR},
+    ValidDay = #{row.validDay,jdbcType=INTEGER},
+    WorkYear = #{row.workYear,jdbcType=INTEGER},
+    CultureRank = #{row.cultureRank,jdbcType=INTEGER},
+    MaxSalary = #{row.maxSalary,jdbcType=DECIMAL},
+    MinSalary = #{row.minSalary,jdbcType=DECIMAL},
+    Welfare = #{row.welfare,jdbcType=VARCHAR},
+    UserName = #{row.userName,jdbcType=VARCHAR},
+    UserMobile = #{row.userMobile,jdbcType=VARCHAR},
+    PostEmail = #{row.postEmail,jdbcType=VARCHAR},
+    WorkTime = #{row.workTime,jdbcType=INTEGER},
+    IsTrail = #{row.isTrail,jdbcType=BIT},
+    TrailMonths = #{row.trailMonths,jdbcType=INTEGER},
+    TrailMaxSalary = #{row.trailMaxSalary,jdbcType=DECIMAL},
+    TrailMinSalary = #{row.trailMinSalary,jdbcType=DECIMAL},
+    CreateUserID = #{row.createUserID,jdbcType=VARCHAR},
+    CreateTime = #{row.createTime,jdbcType=TIMESTAMP},
+    ModifyUserID = #{row.modifyUserID,jdbcType=VARCHAR},
+    ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP},
+    ValidTime = #{row.validTime,jdbcType=TIMESTAMP},
+    StartTime = #{row.startTime,jdbcType=TIMESTAMP},
+    EndTime = #{row.endTime,jdbcType=TIMESTAMP},
+    JobPlace = #{row.jobPlace,jdbcType=VARCHAR},
+    PostDesc = #{row.postDesc,jdbcType=LONGVARCHAR},
+    ContactName = #{row.contactName,jdbcType=VARCHAR},
+    ContactMobile = #{row.contactMobile,jdbcType=VARCHAR},
+    ContactEmail = #{row.contactEmail,jdbcType=VARCHAR},
+    WorkNatureID = #{row.workNatureID,jdbcType=INTEGER},
+    TagID = #{row.tagID,jdbcType=INTEGER}
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
     </if>
@@ -527,36 +587,41 @@
   <update id="updateByExample" parameterType="map">
     update pc_post
     set PostID = #{row.postID,jdbcType=VARCHAR},
-      ProfessionID = #{row.professionID,jdbcType=VARCHAR},
-      WorkCode = #{row.workCode,jdbcType=VARCHAR},
-      WorkName = #{row.workName,jdbcType=VARCHAR},
-      RecruitCount = #{row.recruitCount,jdbcType=INTEGER},
-      CompanyID = #{row.companyID,jdbcType=VARCHAR},
-      PostName = #{row.postName,jdbcType=VARCHAR},
-      RecordStatus = #{row.recordStatus,jdbcType=INTEGER},
-      WorkNature = #{row.workNature,jdbcType=VARCHAR},
-      ValidDay = #{row.validDay,jdbcType=INTEGER},
-      WorkYear = #{row.workYear,jdbcType=INTEGER},
-      CultureRank = #{row.cultureRank,jdbcType=INTEGER},
-      MaxSalary = #{row.maxSalary,jdbcType=DECIMAL},
-      MinSalary = #{row.minSalary,jdbcType=DECIMAL},
-      Welfare = #{row.welfare,jdbcType=VARCHAR},
-      UserName = #{row.userName,jdbcType=VARCHAR},
-      UserMobile = #{row.userMobile,jdbcType=VARCHAR},
-      PostEmail = #{row.postEmail,jdbcType=VARCHAR},
-      WorkTime = #{row.workTime,jdbcType=INTEGER},
-      IsTrail = #{row.isTrail,jdbcType=BIT},
-      TrailMonths = #{row.trailMonths,jdbcType=INTEGER},
-      TrailMaxSalary = #{row.trailMaxSalary,jdbcType=DECIMAL},
-      TrailMinSalary = #{row.trailMinSalary,jdbcType=DECIMAL},
-      CreateUserID = #{row.createUserID,jdbcType=VARCHAR},
-      CreateTime = #{row.createTime,jdbcType=TIMESTAMP},
-      ModifyUserID = #{row.modifyUserID,jdbcType=VARCHAR},
-      ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP},
-      ValidTime = #{row.validTime,jdbcType=TIMESTAMP},
-      StartTime = #{row.startTime,jdbcType=TIMESTAMP},
-      EndTime = #{row.endTime,jdbcType=TIMESTAMP},
-      JobPlace = #{row.jobPlace,jdbcType=VARCHAR}
+    ProfessionID = #{row.professionID,jdbcType=VARCHAR},
+    WorkCode = #{row.workCode,jdbcType=VARCHAR},
+    WorkName = #{row.workName,jdbcType=VARCHAR},
+    RecruitCount = #{row.recruitCount,jdbcType=INTEGER},
+    CompanyID = #{row.companyID,jdbcType=VARCHAR},
+    PostName = #{row.postName,jdbcType=VARCHAR},
+    RecordStatus = #{row.recordStatus,jdbcType=INTEGER},
+    WorkNature = #{row.workNature,jdbcType=VARCHAR},
+    ValidDay = #{row.validDay,jdbcType=INTEGER},
+    WorkYear = #{row.workYear,jdbcType=INTEGER},
+    CultureRank = #{row.cultureRank,jdbcType=INTEGER},
+    MaxSalary = #{row.maxSalary,jdbcType=DECIMAL},
+    MinSalary = #{row.minSalary,jdbcType=DECIMAL},
+    Welfare = #{row.welfare,jdbcType=VARCHAR},
+    UserName = #{row.userName,jdbcType=VARCHAR},
+    UserMobile = #{row.userMobile,jdbcType=VARCHAR},
+    PostEmail = #{row.postEmail,jdbcType=VARCHAR},
+    WorkTime = #{row.workTime,jdbcType=INTEGER},
+    IsTrail = #{row.isTrail,jdbcType=BIT},
+    TrailMonths = #{row.trailMonths,jdbcType=INTEGER},
+    TrailMaxSalary = #{row.trailMaxSalary,jdbcType=DECIMAL},
+    TrailMinSalary = #{row.trailMinSalary,jdbcType=DECIMAL},
+    CreateUserID = #{row.createUserID,jdbcType=VARCHAR},
+    CreateTime = #{row.createTime,jdbcType=TIMESTAMP},
+    ModifyUserID = #{row.modifyUserID,jdbcType=VARCHAR},
+    ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP},
+    ValidTime = #{row.validTime,jdbcType=TIMESTAMP},
+    StartTime = #{row.startTime,jdbcType=TIMESTAMP},
+    EndTime = #{row.endTime,jdbcType=TIMESTAMP},
+    JobPlace = #{row.jobPlace,jdbcType=VARCHAR},
+    ContactName = #{row.contactName,jdbcType=VARCHAR},
+    ContactMobile = #{row.contactMobile,jdbcType=VARCHAR},
+    ContactEmail = #{row.contactEmail,jdbcType=VARCHAR},
+    WorkNatureID = #{row.workNatureID,jdbcType=INTEGER},
+    TagID = #{row.tagID,jdbcType=INTEGER}
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
     </if>
@@ -657,76 +722,101 @@
       <if test="postDesc != null">
         PostDesc = #{postDesc,jdbcType=LONGVARCHAR},
       </if>
+      <if test="contactName != null">
+        ContactName = #{contactName,jdbcType=VARCHAR},
+      </if>
+      <if test="contactMobile != null">
+        ContactMobile = #{contactMobile,jdbcType=VARCHAR},
+      </if>
+      <if test="contactEmail != null">
+        ContactEmail = #{contactEmail,jdbcType=VARCHAR},
+      </if>
+      <if test="workNatureID != null">
+        WorkNatureID = #{workNatureID,jdbcType=INTEGER},
+      </if>
+      <if test="tagID != null">
+        TagID = #{tagID,jdbcType=INTEGER},
+      </if>
     </set>
     where PostID = #{postID,jdbcType=VARCHAR}
   </update>
   <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.hz.employmentsite.model.PcPost">
     update pc_post
-    set ProfessionID = #{professionID,jdbcType=VARCHAR},
-      WorkCode = #{workCode,jdbcType=VARCHAR},
-      WorkName = #{workName,jdbcType=VARCHAR},
-      RecruitCount = #{recruitCount,jdbcType=INTEGER},
-      CompanyID = #{companyID,jdbcType=VARCHAR},
-      PostName = #{postName,jdbcType=VARCHAR},
-      RecordStatus = #{recordStatus,jdbcType=INTEGER},
-      WorkNature = #{workNature,jdbcType=VARCHAR},
-      ValidDay = #{validDay,jdbcType=INTEGER},
-      WorkYear = #{workYear,jdbcType=INTEGER},
-      CultureRank = #{cultureRank,jdbcType=INTEGER},
-      MaxSalary = #{maxSalary,jdbcType=DECIMAL},
-      MinSalary = #{minSalary,jdbcType=DECIMAL},
-      Welfare = #{welfare,jdbcType=VARCHAR},
-      UserName = #{userName,jdbcType=VARCHAR},
-      UserMobile = #{userMobile,jdbcType=VARCHAR},
-      PostEmail = #{postEmail,jdbcType=VARCHAR},
-      WorkTime = #{workTime,jdbcType=INTEGER},
-      IsTrail = #{isTrail,jdbcType=BIT},
-      TrailMonths = #{trailMonths,jdbcType=INTEGER},
-      TrailMaxSalary = #{trailMaxSalary,jdbcType=DECIMAL},
-      TrailMinSalary = #{trailMinSalary,jdbcType=DECIMAL},
-      CreateUserID = #{createUserID,jdbcType=VARCHAR},
-      CreateTime = #{createTime,jdbcType=TIMESTAMP},
-      ModifyUserID = #{modifyUserID,jdbcType=VARCHAR},
-      ModifyTime = #{modifyTime,jdbcType=TIMESTAMP},
-      ValidTime = #{validTime,jdbcType=TIMESTAMP},
-      StartTime = #{startTime,jdbcType=TIMESTAMP},
-      EndTime = #{endTime,jdbcType=TIMESTAMP},
-      JobPlace = #{jobPlace,jdbcType=VARCHAR},
-      PostDesc = #{postDesc,jdbcType=LONGVARCHAR}
+    set ProfessionID   = #{professionID,jdbcType=VARCHAR},
+        WorkCode       = #{workCode,jdbcType=VARCHAR},
+        WorkName       = #{workName,jdbcType=VARCHAR},
+        RecruitCount   = #{recruitCount,jdbcType=INTEGER},
+        CompanyID      = #{companyID,jdbcType=VARCHAR},
+        PostName       = #{postName,jdbcType=VARCHAR},
+        RecordStatus   = #{recordStatus,jdbcType=INTEGER},
+        WorkNature     = #{workNature,jdbcType=VARCHAR},
+        ValidDay       = #{validDay,jdbcType=INTEGER},
+        WorkYear       = #{workYear,jdbcType=INTEGER},
+        CultureRank    = #{cultureRank,jdbcType=INTEGER},
+        MaxSalary      = #{maxSalary,jdbcType=DECIMAL},
+        MinSalary      = #{minSalary,jdbcType=DECIMAL},
+        Welfare        = #{welfare,jdbcType=VARCHAR},
+        UserName       = #{userName,jdbcType=VARCHAR},
+        UserMobile     = #{userMobile,jdbcType=VARCHAR},
+        PostEmail      = #{postEmail,jdbcType=VARCHAR},
+        WorkTime       = #{workTime,jdbcType=INTEGER},
+        IsTrail        = #{isTrail,jdbcType=BIT},
+        TrailMonths    = #{trailMonths,jdbcType=INTEGER},
+        TrailMaxSalary = #{trailMaxSalary,jdbcType=DECIMAL},
+        TrailMinSalary = #{trailMinSalary,jdbcType=DECIMAL},
+        CreateUserID   = #{createUserID,jdbcType=VARCHAR},
+        CreateTime     = #{createTime,jdbcType=TIMESTAMP},
+        ModifyUserID   = #{modifyUserID,jdbcType=VARCHAR},
+        ModifyTime     = #{modifyTime,jdbcType=TIMESTAMP},
+        ValidTime      = #{validTime,jdbcType=TIMESTAMP},
+        StartTime      = #{startTime,jdbcType=TIMESTAMP},
+        EndTime        = #{endTime,jdbcType=TIMESTAMP},
+        JobPlace       = #{jobPlace,jdbcType=VARCHAR},
+        PostDesc       = #{postDesc,jdbcType=LONGVARCHAR},
+        ContactName    = #{contactName,jdbcType=VARCHAR},
+        ContactMobile  = #{contactMobile,jdbcType=VARCHAR},
+        ContactEmail   = #{contactEmail,jdbcType=VARCHAR},
+        WorkNatureID   = #{workNatureID,jdbcType=INTEGER},
+        TagID          = #{tagID,jdbcType=INTEGER}
     where PostID = #{postID,jdbcType=VARCHAR}
   </update>
   <update id="updateByPrimaryKey" parameterType="com.hz.employmentsite.model.PcPost">
     update pc_post
     set ProfessionID = #{professionID,jdbcType=VARCHAR},
-      WorkCode = #{workCode,jdbcType=VARCHAR},
-      WorkName = #{workName,jdbcType=VARCHAR},
-      RecruitCount = #{recruitCount,jdbcType=INTEGER},
-      CompanyID = #{companyID,jdbcType=VARCHAR},
-      PostName = #{postName,jdbcType=VARCHAR},
-      RecordStatus = #{recordStatus,jdbcType=INTEGER},
-      WorkNature = #{workNature,jdbcType=VARCHAR},
-      ValidDay = #{validDay,jdbcType=INTEGER},
-      WorkYear = #{workYear,jdbcType=INTEGER},
-      CultureRank = #{cultureRank,jdbcType=INTEGER},
-      MaxSalary = #{maxSalary,jdbcType=DECIMAL},
-      MinSalary = #{minSalary,jdbcType=DECIMAL},
-      Welfare = #{welfare,jdbcType=VARCHAR},
-      UserName = #{userName,jdbcType=VARCHAR},
-      UserMobile = #{userMobile,jdbcType=VARCHAR},
-      PostEmail = #{postEmail,jdbcType=VARCHAR},
-      WorkTime = #{workTime,jdbcType=INTEGER},
-      IsTrail = #{isTrail,jdbcType=BIT},
-      TrailMonths = #{trailMonths,jdbcType=INTEGER},
-      TrailMaxSalary = #{trailMaxSalary,jdbcType=DECIMAL},
-      TrailMinSalary = #{trailMinSalary,jdbcType=DECIMAL},
-      CreateUserID = #{createUserID,jdbcType=VARCHAR},
-      CreateTime = #{createTime,jdbcType=TIMESTAMP},
-      ModifyUserID = #{modifyUserID,jdbcType=VARCHAR},
-      ModifyTime = #{modifyTime,jdbcType=TIMESTAMP},
-      ValidTime = #{validTime,jdbcType=TIMESTAMP},
-      StartTime = #{startTime,jdbcType=TIMESTAMP},
-      EndTime = #{endTime,jdbcType=TIMESTAMP},
-      JobPlace = #{jobPlace,jdbcType=VARCHAR}
+        WorkCode = #{workCode,jdbcType=VARCHAR},
+        WorkName = #{workName,jdbcType=VARCHAR},
+        RecruitCount = #{recruitCount,jdbcType=INTEGER},
+        CompanyID = #{companyID,jdbcType=VARCHAR},
+        PostName = #{postName,jdbcType=VARCHAR},
+        RecordStatus = #{recordStatus,jdbcType=INTEGER},
+        WorkNature = #{workNature,jdbcType=VARCHAR},
+        ValidDay = #{validDay,jdbcType=INTEGER},
+        WorkYear       = #{workYear,jdbcType=INTEGER},
+        CultureRank    = #{cultureRank,jdbcType=INTEGER},
+        MaxSalary      = #{maxSalary,jdbcType=DECIMAL},
+        MinSalary      = #{minSalary,jdbcType=DECIMAL},
+        Welfare        = #{welfare,jdbcType=VARCHAR},
+        UserName       = #{userName,jdbcType=VARCHAR},
+        UserMobile     = #{userMobile,jdbcType=VARCHAR},
+        PostEmail      = #{postEmail,jdbcType=VARCHAR},
+        WorkTime       = #{workTime,jdbcType=INTEGER},
+        IsTrail        = #{isTrail,jdbcType=BIT},
+        TrailMonths    = #{trailMonths,jdbcType=INTEGER},
+        TrailMaxSalary = #{trailMaxSalary,jdbcType=DECIMAL},
+        TrailMinSalary = #{trailMinSalary,jdbcType=DECIMAL},
+        CreateUserID   = #{createUserID,jdbcType=VARCHAR},
+        CreateTime     = #{createTime,jdbcType=TIMESTAMP},
+        ModifyUserID   = #{modifyUserID,jdbcType=VARCHAR},
+        ModifyTime     = #{modifyTime,jdbcType=TIMESTAMP},
+        ValidTime      = #{validTime,jdbcType=TIMESTAMP},
+        StartTime      = #{startTime,jdbcType=TIMESTAMP},
+        EndTime        = #{endTime,jdbcType=TIMESTAMP},
+        JobPlace       = #{jobPlace,jdbcType=VARCHAR},
+        ContactName    = #{contactName,jdbcType=VARCHAR},
+        ContactMobile  = #{contactMobile,jdbcType=VARCHAR},
+        ContactEmail   = #{contactEmail,jdbcType=VARCHAR},
+        WorkNatureID   = #{workNatureID,jdbcType=INTEGER},
+        TagID          = #{tagID,jdbcType=INTEGER}
     where PostID = #{postID,jdbcType=VARCHAR}
   </update>
 

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

@@ -5,7 +5,8 @@
         select jobuser.* ,gender.name as GenderName,culture.name as CultureName,site.SiteName,jobstatus.name as
         JobStatusName,keytype.name as KeyTypeName,sys_politics.name as politicsStatusName,sys_health.name as healthName,
         sys_family.name as familyNatureName,sys_full_time.Name as isFullTimeName, sys_occ_level.Name as
-        occupationalLevelName,
+        occupationalLevelName,sys_blood_type.Name as bloodTypeName,sys_marital_status.Name as MaritalStatusName,
+        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
         ,case when jobuser.IdentityNumber is not null and jobuser.IdentityNumber <![CDATA[ <> ]]>'' then
@@ -14,7 +15,7 @@
         from pc_jobuser jobuser
         left join pc_site site on site.SiteID = jobuser.SiteID
         left join sys_dictionary_item culture on jobuser.CultureRank = culture.value and
-        culture.DictionaryCode='CultureLevel'
+        culture.DictionaryCode='HighestDegree'
         left join sys_dictionary_item gender on jobuser.Sex = gender.value and gender.DictionaryCode='Gender'
         left join sys_dictionary_item jobstatus on jobuser.JobStatusID = jobstatus.value and
         jobstatus.DictionaryCode='JobStatus'
@@ -29,7 +30,13 @@
         left join (select * from sys_dictionary_item where DictionaryCode ='IsFullTime') sys_full_time on
         jobuser.IsFullTime = sys_full_time.Value
         left join (select * from sys_dictionary_item where DictionaryCode ='OccupationalLevel') sys_occ_level on
-        jobuser.OccupationalLevel = sys_family.Value
+        jobuser.OccupationalLevel = sys_occ_level.Value
+        left join (select * from sys_dictionary_item where DictionaryCode ='BloodType') sys_blood_type on
+        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 area_code area_region on jobuser.RegionCode = area_region.code
+        left join area_code area_street on jobuser.StreetCode = area_street.code
         where 1=1
         <if test="jobUserIDList != '' and jobUserIDList != null">
             and jobuser.jobuserID in (${jobUserIDList})

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

@@ -6,13 +6,15 @@
         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,t.workNatureID,post.tagID,company.userName,company.userMobile,company.companyEmail,company.CompanyName,company.insuredCount,item.`Name`
-        as cultureLevelName,
+        post.jobPlace,post.contactName,post.contactMobile,post.contactEmail,post.workNatureID,post.tagID,t.workNatureID,post.tagID,company.userName,company.userMobile,company.companyEmail,
+        company.CompanyName,company.insuredCount,item.`Name` as cultureLevelName,job_hunt_type.Name as workNatureName,
         post.ProfessionID,pro.ProfessionName,pro.parentProfessionID
         , IFNULL(count(rmgt.RecommendMgtID),0) as recommendNum
         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'
+        left join sys_dictionary_item job_hunt_type on job_hunt_type.value=post.WorkNatureID and
+        job_hunt_type.DictionaryCode='JobHuntType'
         left join pc_profession pro on post.ProfessionID = pro.ProfessionID
         left join pc_recommend_mgt rmgt on post.PostID = rmgt.PostID
         <where>

+ 9 - 1
src/main/resources/mapping/cquery/SiteUserCQuery.xml

@@ -29,7 +29,7 @@
         left join (select * from sys_dictionary_item where DictionaryCode ='PoliticsStatus' ) dic_politicsStatus on
         siteUser.PoliticsStatusID =
         dic_politicsStatus.Value
-        left join (select * from sys_dictionary_item where DictionaryCode ='CultureLevel' ) dic_culture on
+        left join (select * from sys_dictionary_item where DictionaryCode ='HighestDegree' ) dic_culture on
         siteUser.CultureRank =
         dic_culture.Value
         left join pc_site_institution inSites on site.SiteID = inSites.SiteID
@@ -64,4 +64,12 @@
             and siteID = #{siteID}
         </if>
     </select>
+
+    <select id="selectListForAddUser" resultType="com.hz.employmentsite.vo.baseSettings.SiteUserVo">
+        select siteUser.*,site.siteName
+        from pc_site_user siteUser
+        inner join pc_site site on siteUser.siteID = site.siteID
+        where siteUser.userId is null
+        order by site.siteName
+    </select>
 </mapper>

+ 16 - 1
src/main/resources/mapping/cquery/SysUserCQuery.xml

@@ -14,9 +14,11 @@
     <select id="selectUserList" resultType="java.util.HashMap">
         select us.*,dic.Name as UserTypeName ,urole.roleName
         ,case when us.UserTypeID=3 then userDataRange_Site.dataRangeNames
+              when us.UserTypeID=4 then userDataRange_Institution.dataRangeNames
               when us.UserTypeID=5 then userDataRange_Region.dataRangeNames
               else '' end as dataRangeNames
         ,case when us.UserTypeID=3 then userDataRange_Site.dataRangeIds
+              when us.UserTypeID=4 then userDataRange_Institution.dataRangeIds
               when us.UserTypeID=5 then userDataRange_Region.dataRangeIds
               else '' end as dataRangeIds
         from sys_user us
@@ -39,6 +41,12 @@
              where su.userId is not null
              group by su.userId
         )userDataRange_Site on us.UserTypeID=3 and us.userId = userDataRange_Site.userId -- 驿站工作者
+        left join (
+             select d.userId,GROUP_CONCAT(a.InstitutionID) as dataRangeIds,GROUP_CONCAT(a.CompanyName) as dataRangeNames
+             from sys_user_datarange d
+             inner join pc_institution a on d.datarangeId = a.InstitutionID
+             group by d.userId
+        )userDataRange_Institution on us.UserTypeID=4 and us.userId = userDataRange_Institution.userId -- 驿站机构人员
         where 1=1
         <if test="name != null and name != ''">
             and us.Name like Concat('%',#{name},'%')
@@ -83,11 +91,18 @@
         select sysUser.userID from sys_user sysUser where UserID=#{userID})
     </select>
 
-    <select id="selectUserInstitution" resultType="java.lang.String">
+    <!--<select id="selectUserInstitution" resultType="java.lang.String">
         select institution.InstitutionID from pc_institution institution where institution.InstitutionID in (
         select siteInst.InstitutionID from pc_site_institution siteInst where siteInst.siteID in (
         select siteUser.SiteID from pc_site_user siteUser where siteUser.UserID in (
         select sysUser.UserID from sys_user sysUser where UserID=#{userID})))
+    </select>-->
+
+    <select id="selectUserInstitution" resultType="java.lang.String">
+        select distinct a.InstitutionID from sys_user us
+        inner join sys_user_datarange usd on us.UserID = usd.UserID
+        inner join pc_institution a on usd.datarangeId = a.InstitutionID
+        where us.UserID = #{userID}
     </select>
 
     <!--<select id="selectUserRegion" resultType="java.lang.String">

+ 13 - 0
vue/src/api/baseSettings/userInfo.ts

@@ -83,3 +83,16 @@ export function delSiteUser(data: any) {
   );
 }
 
+export function getListForAddUser(params: any) {
+  return request<object>(
+    {
+      url: "userInfo/getListForAddUser",
+      method: 'get',
+      params: params,
+    },
+    {
+      isNew: true,
+    },
+  );
+}
+

+ 1 - 1
vue/src/views/baseSettings/siteUser/edit.vue

@@ -241,7 +241,7 @@ export default defineComponent({
       occupationalLevelList.value = result;
     }
     const getCultureRankList = async function () {
-      const result: any = await getSysDictionaryList("CultureLevel");
+      const result: any = await getSysDictionaryList("HighestDegree");
       cultureRankList.value = result;
     }
 

+ 89 - 4
vue/src/views/companyService/post/edit.vue

@@ -6,7 +6,8 @@
         <a-col flex="800px">
           <a-form-item label="企业名称" :label-col="{ span: 3}"
                        name="companyID" :rules="[{ required: true, message: '请选择关联企业!' }]" >
-            <a-select :disabled="isEdit" ref="select" show-search optionFilterProp="label" v-model:value="dataModel.companyID" >
+            <a-select :disabled="isEdit" ref="select" show-search optionFilterProp="label"
+                      v-model:value="dataModel.companyID" @change="companyChange">
               <a-select-option v-for="item in companyList" :label="item.companyName" :value="item.companyID"
                                :key="item.companyID">
                 <span>{{ item.companyName }}</span>
@@ -52,6 +53,51 @@
           </a-form-item>
         </a-col>
       </a-row>
+      <a-row justify="start">
+        <a-col flex="500px">
+          <a-form-item
+            label="联系人姓名"
+            :label-col="{ span: 5 }"
+            name="contactName"
+          >
+            <a-input v-model:value="dataModel.contactName" placeholder=""/>
+          </a-form-item>
+        </a-col>
+        <a-col flex="400px">
+          <a-form-item
+            label="联系人电话"
+            :label-col="{ span: 9 }"
+            name="contactMobile"
+          >
+            <a-input v-model:value="dataModel.contactMobile" placeholder=""/>
+          </a-form-item>
+        </a-col>
+        <a-col flex="400px">
+          <a-form-item
+            label="联系人邮箱"
+            :label-col="{ span: 9 }"
+            name="contactEmail"
+          >
+            <a-input v-model:value="dataModel.contactEmail" placeholder=""/>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row justify="start">
+        <a-col flex="500px">
+          <a-form-item
+            label="工作性质"
+            :label-col="{ span: 5 }"
+            name="contactName"
+          >
+            <a-select ref="select" v-model:value="dataModel.workNatureID" :options="jobHuntList"
+                      :field-names="{ label: 'name', value: 'value' }" :allow-clear="false"></a-select>
+          </a-form-item>
+        </a-col>
+        <a-col flex="400px">
+        </a-col>
+        <a-col flex="400px">
+        </a-col>
+      </a-row>
       <h1>岗位其他信息</h1>
       <a-row justify="start">
         <a-col flex="300px" >
@@ -191,6 +237,8 @@ import {message} from "ant-design-vue";
 import {useTabsViewStore} from '@/store/modules/tabsView';
 import BUploadFile from '@/components/file/uploadFile.vue';
 import {get} from '@/api/common';
+import {getInfo} from "@/api/account";
+import {getCompanyById} from "@/api/companyService/company";
 
 interface postModel {
   dataModel: any;
@@ -211,6 +259,7 @@ export default defineComponent(
 
       const cultureLevelList = ref<SelectProps['options']>();
       const WorkYearTypeList = ref<SelectProps['options']>();
+      const jobHuntList = ref<SelectProps['options']>();
       const companyList = ref<SelectProps['options']>();
       const postStatusList = [{name: '启用', value: 1}, {name: '停用', value: 0}];
       const trialStatusList = [{name: '是', value: true}, {name: '否', value: false}];
@@ -279,6 +328,10 @@ export default defineComponent(
         WorkYearTypeList.value = result;
       });
 
+      get('system/dictionary/getDictionaryItemByCodeList', {code: 'JobHuntType'}).then(result => {
+        jobHuntList.value = result;
+      });
+
       get('companyService/company/getList', {pageIndex: 1, pageSize: 9999}).then(result => {
         companyList.value = result.list;
       })
@@ -289,11 +342,32 @@ export default defineComponent(
         router.push({name: '/companyService/post/index'});
       };
 
+      const inputDataValidate = () => {
+        const mobileReg = /^1[3|4|5|6|7|8|9]\d{9}$/;
+        const landlineReg = /[0-9-()()]{7,18}/;
+        if (postCompany.dataModel.contactMobile != null && postCompany.dataModel.contactMobile.trim() != '') {
+          if (!mobileReg.test(postCompany.dataModel.contactMobile) && !landlineReg.test(postCompany.dataModel.contactMobile)) {
+            message.error("联系人电话格式有误!");
+            return false;
+          }
+        }
+        const emailReg = /^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/;
+        if (postCompany.dataModel.contactEmail != null && postCompany.dataModel.contactEmail.trim() != '') {
+          if (!emailReg.test(postCompany.dataModel.contactEmail)) {
+            message.error("联系人邮箱格式有误!");
+            return false;
+          }
+        }
+        return true;
+      };
+
       const onFinish = () => {
         if(!postCompany.dataModel.hasProfession){
           message.error("请选择完整的岗位信息!")
         }else{
-          // postCompany.dataModel.postName = postCompany.dataModel.professionName;
+          if (!inputDataValidate()) {
+            return;
+          }
           postCompany.dataModel.professionName = null;
           savePost(postCompany.dataModel).then((result) => {
             if (result) {
@@ -323,10 +397,19 @@ export default defineComponent(
       function professionChange(value: any, selectedOptions: any) {
         if (value.length >= 3) {
           postCompany.dataModel.postName = selectedOptions[2].label;
-          // postCompany.dataModel.professionName = selectedOptions[2].label;
         }
       }
 
+      // 企业名称选择变更事件
+      function companyChange(value: any) {
+        getInfo().then((loginUserInfo: any) => {
+          getCompanyById(value, loginUserInfo.userID).then(result => {
+            console.log(result)
+            postCompany.dataModel.welfare = result.bonus
+          })
+        });
+      }
+
       return {
         ...toRefs(postCompany),
         loadData,
@@ -341,7 +424,9 @@ export default defineComponent(
         WorkYearTypeList,
         postCompany,
         isEdit,
-        professionChange
+        jobHuntList,
+        professionChange,
+        companyChange
       }
     },
     created() {

+ 1 - 1
vue/src/views/jobUserManager/jobuser/edit.vue

@@ -634,7 +634,7 @@ export default defineComponent(
         });
       };
       const getCultureList = () => {
-        getSysDictionaryList('CultureLevel').then((data) => {
+        getSysDictionaryList('HighestDegree').then((data) => {
           cultureList.value = data;
         });
       };

+ 117 - 17
vue/src/views/system/users/addUser.vue

@@ -38,6 +38,22 @@
               ></a-select>
             </a-form-item>
           </a-col>
+          <a-col v-if="dataModel.userTypeID === 4" :span="12">
+            <a-form-item
+              label="所属机构"
+              name="datarangeIds"
+              :label-col="{ span: 6 }"
+              :rules="[{ required: true, message: '请选择所属机构!' }]"
+            >
+              <a-select
+                ref="select"
+                v-model:value="dataModel.datarangeIds"
+                :options="institutionList"
+                :field-names="{ label: 'text', value: 'value' }"
+                :allow-clear="true"
+              ></a-select>
+            </a-form-item>
+          </a-col>
           <a-col v-if="dataModel.userTypeID === 5" :span="12">
             <a-form-item
               label="所属县区"
@@ -55,7 +71,7 @@
             </a-form-item>
           </a-col>
         </a-row>
-        <a-row type="flex" :gutter="24">
+        <a-row v-if="dataModel.userTypeID !== 3" type="flex" :gutter="24">
           <a-col :span="12">
             <a-form-item
               label="用户名"
@@ -77,7 +93,7 @@
             </a-form-item>
           </a-col>
         </a-row>
-        <a-row :gutter="24">
+        <a-row type="flex" :gutter="24">
           <a-col :span="12">
             <a-form-item
               label="密码"
@@ -106,19 +122,42 @@
             </a-form-item>
           </a-col>
         </a-row>
+        <div v-if="dataModel.userTypeID === 3" class="search-result-list">
+          <a-table
+            :columns="columns"
+            :data-source="siteUserList"
+            :scroll="{ x: '100%', y: 500 }"
+            :pagination="false"
+            :loading="tableState.loading"
+            :row-key="(record) => record.siteUserID"
+            bordered
+          >
+            <template #bodyCell="{ column, index, record }">
+              <template v-if="column.key === 'operation'">
+                <div class="table-operation">
+                  <a-button type="link" size="small" functioncode="T01010304" @click="onDel(index)"
+                    >删除</a-button
+                  >
+                </div>
+              </template>
+            </template>
+          </a-table>
+        </div>
       </a-form>
     </div>
   </a-modal>
 </template>
 <script lang="ts">
-  import { defineComponent, reactive, ref, toRefs } from 'vue';
-  import { message } from 'ant-design-vue';
-  import type { FormInstance, SelectProps } from 'ant-design-vue';
-  import { getUserByID, saveSysUser } from '@/api/system/user';
-  import { getSysDictionaryList } from '@/api/system/dictionary';
-  import { getRegionCodeList } from '@/api/system/area/index';
-
-  interface userModel {
+import {defineComponent, reactive, ref, toRefs} from 'vue';
+import type {FormInstance, SelectProps} from 'ant-design-vue';
+import {message, TableColumnsType} from 'ant-design-vue';
+import {getUserByID, saveSysUser} from '@/api/system/user';
+import {getSysDictionaryList} from '@/api/system/dictionary';
+import {getRegionCodeList} from '@/api/system/area/index';
+import {getListForAddUser} from '@/api/baseSettings/userInfo';
+import {getInstitutionDataList} from "@/api/baseSettings/institution";
+
+interface userModel {
     dataModel: any;
   }
 
@@ -145,6 +184,24 @@
         loading: false,
       });
       const regionList = ref<SelectProps['options']>();
+      const columns: TableColumnsType = [
+        {
+          title: '序号',
+          align: 'center',
+          key: 'siteUserID',
+          width: 80,
+          customRender: (item) => `${item.index + 1}`,
+        },
+        { title: '用户名', dataIndex: 'siteUserName', key: 'siteUserName', align: 'center' },
+        { title: '账号', dataIndex: 'userNo', key: 'userNo', align: 'center' },
+        { title: '所属驿站', dataIndex: 'siteName', key: 'siteName', align: 'left' },
+        { title: '操作', key: 'operation', fixed: 'right', width: 150, align: 'center' },
+      ];
+      const siteUserList = ref([]);
+      const tableState = reactive({
+        loading: false,
+      });
+      const institutionList = ref<SelectProps['options']>();
 
       const getUserTypeList = async function () {
         const userTypeResult = await getSysDictionaryList('UserType');
@@ -155,6 +212,7 @@
         formState.loading = true;
         await getUserTypeList();
         await getRegionList();
+        await getInstitutionList();
         const reqData = await getUserByID('');
         formData.dataModel = reqData;
         console.log('dataModel', formData.dataModel);
@@ -165,15 +223,34 @@
       const onCommit = async function () {
         isAllowCommit.value = true;
         if (
-          formData.dataModel.name == null ||
-          formData.dataModel.loginID == null ||
-          formData.dataModel.password == null ||
-          formData.dataModel.userTypeID == null ||
-          formData.dataModel.recordStatus == null
+          formData.dataModel.userTypeID != 3 &&
+          (formData.dataModel.name == null ||
+            formData.dataModel.loginID == null ||
+            formData.dataModel.password == null ||
+            formData.dataModel.userTypeID == null ||
+            formData.dataModel.recordStatus == null)
+        ) {
+          message.error('请填写完整的用户信息!');
+          isAllowCommit.value = false;
+        }
+
+        if (
+          formData.dataModel.userTypeID == 3 &&
+          (formData.dataModel.password == null ||
+            formData.dataModel.userTypeID == null ||
+            formData.dataModel.recordStatus == null)
         ) {
           message.error('请填写完整的用户信息!');
           isAllowCommit.value = false;
         }
+
+        if (formData.dataModel.userTypeID == 3 && siteUserList.value.length == 0) {
+          message.error('请添加驿站工作人员!');
+          isAllowCommit.value = false;
+        } else {
+          formData.dataModel.siteUserIdList = siteUserList.value.map((it: any) => it.siteUserID);
+        }
+
         if (isAllowCommit.value) {
           //多选时不需要转类型
           formData.dataModel.datarangeIdList = [formData.dataModel.datarangeIds];
@@ -187,13 +264,31 @@
       };
 
       const getRegionList = async function () {
-        const regionResult: any = await getRegionCodeList();
-        regionList.value = regionResult;
+        regionList.value = await getRegionCodeList();
+      };
+
+      const getInstitutionList = async function () {
+        institutionList.value = await getInstitutionDataList();
+      };
+
+      const getSiteUser = async function () {
+        tableState.loading = true;
+        const result: any = await getListForAddUser(null);
+        siteUserList.value = result;
+        tableState.loading = false;
       };
 
       const userTypeChange = () => {
         formData.dataModel.datarangeIds = null;
         formData.dataModel.datarangeIdList = null;
+
+        if (formData.dataModel.userTypeID == 3) {
+          getSiteUser();
+        }
+      };
+
+      const onDel = (index) => {
+        siteUserList.value.splice(index, 1);
       };
 
       return {
@@ -207,6 +302,11 @@
         userTypeList,
         regionList,
         userTypeChange,
+        columns,
+        siteUserList,
+        tableState,
+        onDel,
+        institutionList,
       };
     },
     created() {},

+ 1 - 1
vue/src/views/system/users/index.vue

@@ -138,7 +138,7 @@
           width: 150,
         },
         {
-          title: '所属区县/驿站',
+          title: '所属区县/机构/驿站',
           dataIndex: 'dataRangeNames',
           key: 'dataRangeNames',
           width: 150,