Browse Source

Merge remote-tracking branch 'origin/master'

liao-sea 11 months ago
parent
commit
1f32a5e707

+ 3 - 3
h5app/src/components/industrySelection.vue

@@ -1,5 +1,5 @@
 <template>
-  <ion-button id="industryModel" style="color: #02a6f1;font-size: 15px;" fill="clear" @click="loadIndustryID">选择
+  <ion-button id="industryModel" style="color: #02a6f1;font-size: 15px;" fill="clear" @click="loadIndustryID()">选择
   </ion-button>
   <ion-page>
     <ion-content class="ion-padding">
@@ -9,13 +9,13 @@
         <ion-toolbar>
           <ion-item>
             <ion-buttons slot="start">
-              <ion-button fill="clear" @click="onCancel">取消</ion-button>
+              <ion-button fill="clear" @click="onCancel()">取消</ion-button>
             </ion-buttons>
             <ion-label style="font-size: 12px;white-space: pre-wrap; word-wrap: break-word;">
               {{ selectIndustryInfo.text }}
             </ion-label>
             <ion-buttons slot="end">
-              <ion-button fill="clear" :disabled="selectIndustryInfo.value==''" @click="onConfirm">确定</ion-button>
+              <ion-button fill="clear" :disabled="selectIndustryInfo.value==''" @click="onConfirm()">确定</ion-button>
             </ion-buttons>
           </ion-item>
           <ion-item>

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

@@ -1,5 +1,5 @@
 <template>
-  <ion-button id="ocCategoryModal" style="color: #02a6f1;font-size: 15px;" fill="clear" @click="loadOccupationalID">选择
+  <ion-button id="ocCategoryModal" style="color: #02a6f1;font-size: 15px;" fill="clear" @click="loadOccupationalID()">选择
   </ion-button>
   <ion-page>
     <ion-content class="ion-padding">
@@ -8,13 +8,13 @@
         <ion-toolbar>
           <ion-item>
             <ion-buttons slot="start">
-              <ion-button fill="clear" @click="onCancel">取消</ion-button>
+              <ion-button fill="clear" @click="onCancel()">取消</ion-button>
             </ion-buttons>
             <ion-label style="font-size: 12px;white-space: pre-wrap; word-wrap: break-word;">
               {{ selectOccupationInfo.text }}
             </ion-label>
             <ion-buttons slot="end">
-              <ion-button fill="clear" :disabled="selectOccupationInfo.value==''" @click="onConfirm">确定</ion-button>
+              <ion-button fill="clear" :disabled="selectOccupationInfo.value==''" @click="onConfirm()">确定</ion-button>
             </ion-buttons>
           </ion-item>
           <ion-item>

+ 3 - 3
h5app/src/components/postSelection.vue

@@ -1,5 +1,5 @@
 <template>
-  <ion-button id="open-modal" style="color: #02a6f1;font-size: 15px;" fill="clear" @click="loadProfessionInfo">选择
+  <ion-button id="open-modal" style="color: #02a6f1;font-size: 15px;" fill="clear" @click="loadProfessionInfo()">选择
   </ion-button>
   <ion-page >
     <ion-content class="ion-padding">
@@ -8,13 +8,13 @@
         <ion-toolbar>
           <ion-item>
             <ion-buttons slot="start">
-              <ion-button fill="clear" @click="onCancel">取消</ion-button>
+              <ion-button fill="clear" @click="onCancel()">取消</ion-button>
             </ion-buttons>
             <ion-label style="font-size: 12px;white-space: pre-wrap; word-wrap: break-word;">
               {{ selectProfessionInfo.text }}
             </ion-label>
             <ion-buttons slot="end">
-              <ion-button fill="clear" :disabled="selectProfessionInfo.value==''" @click="onConfirm">确定</ion-button>
+              <ion-button fill="clear" :disabled="selectProfessionInfo.value==''" @click="onConfirm()">确定</ion-button>
             </ion-buttons>
           </ion-item>
           <ion-item>

+ 22 - 12
h5app/src/components/postSelectionLike.vue

@@ -1,17 +1,17 @@
 <template>
-  <ion-button id="postSelectionLike" style="color: #02a6f1;font-size: 15px;" fill="clear" @click="onOpen">选择
+  <ion-button id="postSelectionLike" style="color: #02a6f1;font-size: 15px;" fill="clear" @click="onOpen()">选择
   </ion-button>
   <ion-page>
     <ion-content class="ion-padding">
-      <ion-modal trigger="postSelectionLike" :is-open="isOpen" @willPresent="onRest">
+      <ion-modal trigger="postSelectionLike" :is-open="isOpen" @willPresent="onRest()">
         <ion-header class="header-theme2">
           <ion-toolbar>
             <ion-buttons slot="start">
-              <ion-icon :icon="arrowBackOutline" @click="onOpen"></ion-icon>
+              <ion-icon :icon="arrowBackOutline" @click="onOpen()"></ion-icon>
             </ion-buttons>
             <ion-title>岗位名称</ion-title>
             <ion-buttons slot="end">
-              <ion-button fill="clear" @click="onConfirm">确定</ion-button>
+              <ion-button fill="clear" @click="onConfirm()">确定</ion-button>
             </ion-buttons>
           </ion-toolbar>
         </ion-header>
@@ -19,7 +19,7 @@
           <ion-item class="search-item" style="--border-style: unset; --inner-padding-end: 0px;--padding-start: 0px;">
             <ion-input placeholder="请输入岗位名称" class="custom"
                        v-model="searchParams.professionName"
-                       @input="reload" :clear-on-edit="true"
+                       @input="reload()" :clear-on-edit="true"
                        style="border: 1px solid #f2f2f5;border-radius: 14px;--padding-start: 10px;height: 35px;">
               <ion-icon slot="start" :icon="searchOutline" aria-hidden="true"></ion-icon>
             </ion-input>
@@ -28,8 +28,8 @@
             <div class="list-content">
               <ion-list>
                 <ion-item v-for="(record,key) in dataList" :key="key">
-                  <ion-label @click="onSelect(record)" >
-                    <span v-html="formatStr(record.professionName)"></span>({{record.parentProfessionName}})
+                  <ion-label @click="onSelect(record)">
+                    <span v-html="formatStr(record.professionName)"></span>({{ record.parentProfessionName }})
                   </ion-label>
                 </ion-item>
               </ion-list>
@@ -85,15 +85,25 @@ export default defineComponent({
       })
       loading.value = false;
     }
-
+    const reloadBool = ref(true);
     const reload = () => {
       dataList.value = [];
       searchParams.pageIndex = 1;
-      loadData();
+      if(reloadBool.value==false){
+        return;
+      }
+
+      reloadBool.value = false;
+      getProfessionLikeList(searchParams).then(data => {
+        dataList.value = dataList.value.concat(data.list);
+        total.value = data.total;
+        reloadBool.value = true;
+      })
     }
 
     const onScroll = (e: any) => {
       setTimeout(() => {
+        console.log("onScroll:", dataList.value.length)
         e.target.complete();
         if (pagination.value.total.value > pagination.value.current * pagination.value.pageSize) {
           searchParams.pageIndex += 1;
@@ -103,7 +113,7 @@ export default defineComponent({
     }
 
     const onConfirm = () => {
-      if(searchParams.professionName){
+      if (searchParams.professionName) {
         resultInfo.text = searchParams.professionName;
         context.emit("resultInfo", resultInfo);
       }
@@ -130,11 +140,11 @@ export default defineComponent({
     }
 
     const formatStr = (str: any) => {
-      if(!str){
+      if (!str) {
         return "";
       }
 
-      return str.replace(searchParams.professionName,'<span style="color: coral">'+searchParams.professionName+'</span>');
+      return str.replace(searchParams.professionName, '<span style="color: coral">' + searchParams.professionName + '</span>');
     }
 
     return {

+ 3 - 3
h5app/src/components/workCategorySelection.vue

@@ -1,5 +1,5 @@
 <template>
-  <ion-button id="workCategoryModal" style="color: #02a6f1;font-size: 15px;" fill="clear" @click="loadWorkCategoryInfo">选择
+  <ion-button id="workCategoryModal" style="color: #02a6f1;font-size: 15px;" fill="clear" @click="loadWorkCategoryInfo()">选择
   </ion-button>
   <ion-page >
     <ion-content class="ion-padding">
@@ -8,13 +8,13 @@
         <ion-toolbar>
           <ion-item>
             <ion-buttons slot="start">
-              <ion-button fill="clear" @click="onCancel">取消</ion-button>
+              <ion-button fill="clear" @click="onCancel()">取消</ion-button>
             </ion-buttons>
             <ion-label style="font-size: 12px;white-space: pre-wrap; word-wrap: break-word;">
               {{ selectWorkCategoryInfo.text }}
             </ion-label>
             <ion-buttons slot="end">
-              <ion-button fill="clear" :disabled="selectWorkCategoryInfo.value==''" @click="onConfirm">确定</ion-button>
+              <ion-button fill="clear" :disabled="selectWorkCategoryInfo.value==''" @click="onConfirm()">确定</ion-button>
             </ion-buttons>
           </ion-item>
           <ion-item>

+ 4 - 0
h5app/src/views/pages/company/detail.vue

@@ -151,6 +151,10 @@
             <ion-label>岗位名称</ion-label>
             <ion-text>{{ curCompanyPostInfo.professionName }}</ion-text>
           </div>
+          <div class="form-detail">
+            <ion-label>工种名称</ion-label>
+            <ion-text>{{ curCompanyPostInfo.workCategoryName }}</ion-text>
+          </div>
           <div class="form-detail">
             <ion-label>招聘数量(人)</ion-label>
             <ion-text>{{ curCompanyPostInfo.recruitCount }}</ion-text>

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

@@ -19,6 +19,10 @@
           <ion-label>岗位名称</ion-label>
           <ion-text>{{ dataModel.professionName }}</ion-text>
         </div>
+        <div class="form-detail">
+          <ion-label>工种名称</ion-label>
+          <ion-text>{{ dataModel.workCategoryName }}</ion-text>
+        </div>
         <div class="form-detail">
           <ion-label>招聘人数</ion-label>
           <ion-text>{{ dataModel.recruitCount }}</ion-text>

+ 5 - 4
src/main/java/com/hz/employmentsite/controller/baseSettings/LabelController.java

@@ -3,6 +3,7 @@ package com.hz.employmentsite.controller.baseSettings;
 import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.filter.exception.BaseResponse;
 import com.hz.employmentsite.filter.exception.RespGenerstor;
+import com.hz.employmentsite.model.PcLabel;
 import com.hz.employmentsite.services.service.AccountService;
 import com.hz.employmentsite.services.service.baseSettings.LabelService;
 import com.hz.employmentsite.vo.baseSettings.LabelVo;
@@ -34,17 +35,17 @@ public class LabelController {
 
 
     @GetMapping("get")
-    public BaseResponse<LabelVo> get(@RequestParam(required = false) String id) {
+    public BaseResponse<PcLabel> get(@RequestParam(required = false) String id) {
         var data = labelService.getDataById(id);
         if (data == null) {
-            data = new LabelVo();
+            data = new PcLabel();
             data.setLabelID(UUID.randomUUID().toString());
         }
         return RespGenerstor.success(data);
     }
 
-    @PostMapping("save")
-    public BaseResponse<Integer> save(@RequestBody LabelVo data) {
+    @PostMapping("/save")
+    public BaseResponse<Integer> save(@RequestBody PcLabel data) {
         return RespGenerstor.success(labelService.save(data,accountService.getLoginUserID()));
     }
 

+ 18 - 15
src/main/java/com/hz/employmentsite/services/impl/baseSettings/LabelImpl.java

@@ -8,6 +8,7 @@ import com.hz.employmentsite.mapper.cquery.LabelCQuery;
 import com.hz.employmentsite.model.PcLabel;
 import com.hz.employmentsite.model.PcLabelExample;
 import com.hz.employmentsite.services.service.baseSettings.LabelService;
+import com.hz.employmentsite.util.StringUtils;
 import com.hz.employmentsite.vo.baseSettings.LabelVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -21,6 +22,8 @@ public class LabelImpl implements LabelService {
     private LabelCQuery labelCQuery;
     @Autowired
     private PcLabelMapper pcLabelMapper;
+    @Autowired
+    private StringUtils stringUtils;
 
     @Override
     public PageInfo<LabelVo> getLabelList(int pageIndex, int pageSize, String labelID, String labelName, String labelType, String bigType){
@@ -42,24 +45,24 @@ public class LabelImpl implements LabelService {
 //    }
 
     @Override
-    public LabelVo getDataById(String id){
-        LabelVo model = labelCQuery.getLabelList(id, null, null, null).stream().findFirst().orElse(null);
-        if(model==null){
-            throw new BaseException("", "为查询到数据!");
+    public PcLabel getDataById(String id){
+        if(stringUtils.IsNullOrEmpty(id)){
+            return  null;
         }
 
-        return model;
+        return pcLabelMapper.selectByPrimaryKey(id);
     }
 
     @Override
-    public int save(LabelVo data, String userId){
+    public int save(PcLabel data, String userId){
         PcLabel model = pcLabelMapper.selectByPrimaryKey(data.getLabelID());
         if(model == null){
-            model.setLabelID(model.getLabelID());
-            model.setLabelName(model.getLabelName());
-            model.setLabelType(model.getLabelType());
-            model.setBigType(model.getBigType());
-            model.setSortNo(model.getSortNo());
+            model = new PcLabel();
+            model.setLabelID(data.getLabelID());
+            model.setLabelName(data.getLabelName());
+            model.setLabelType(data.getLabelType());
+            model.setBigType(data.getBigType());
+            model.setSortNo(data.getSortNo());
             model.setCreateTime(new Date());
             model.setCreateUserID(userId);
             model.setModifyTime(new Date());
@@ -67,10 +70,10 @@ public class LabelImpl implements LabelService {
 
             return pcLabelMapper.insert(model);
         }else{
-            model.setLabelName(model.getLabelName());
-            model.setLabelType(model.getLabelType());
-            model.setBigType(model.getBigType());
-            model.setSortNo(model.getSortNo());
+            model.setLabelName(data.getLabelName());
+            model.setLabelType(data.getLabelType());
+            model.setBigType(data.getBigType());
+            model.setSortNo(data.getSortNo());
             model.setModifyTime(new Date());
             model.setModifyUserID(userId);
 

+ 3 - 2
src/main/java/com/hz/employmentsite/services/service/baseSettings/LabelService.java

@@ -1,6 +1,7 @@
 package com.hz.employmentsite.services.service.baseSettings;
 
 import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.model.PcLabel;
 import com.hz.employmentsite.vo.baseSettings.LabelVo;
 
 import java.util.List;
@@ -9,11 +10,11 @@ import java.util.List;
 public interface LabelService {
     PageInfo<LabelVo> getLabelList(int pageIndex, int pageSize, String labelID, String labelName, String labelType, String bigType);
 
-    int save(LabelVo data, String userId);
+    int save(PcLabel data, String userId);
 
     int delete(List<String> ids);
 
-    LabelVo getDataById(String id);
+    PcLabel getDataById(String id);
 
     List<LabelVo> getUserLabelList(String jobUserID);
 }

+ 3 - 5
vue/src/api/baseSettings/label.ts

@@ -58,14 +58,12 @@ export function saveLabel(data: any) {
     {
       url: 'label/save',
       method: 'post',
-      data: data,
-    },
-    {
+      data: data
+    }, {
       isNew: true,
       successMsg: '提交成功!',
       errorMsg: '提交失败!'
-    },
-  );
+    })
 }
 
 export function delLabel(data: any) {

+ 40 - 43
vue/src/views/baseSettings/label/edit.vue

@@ -1,8 +1,8 @@
 <template>
   <a-modal
-    :width="800"
+    :width="400"
     v-model:visible="visible"
-    title="title"
+    :title="title"
     :confirm-loading="confirmLoading"
     @ok="handleOk"
     ok-text="提交"
@@ -10,30 +10,29 @@
     :keyboard="false"
     :mask-closable="false"
   >
-    <a-form autocomplete="off">
-      <a-divider orientation="left">基础信息</a-divider>
+    <a-form :model="dataModel" autocomplete="off">
       <a-row :gutter="24">
-        <a-col :span="8">
+        <a-col :span="24">
           <a-form-item label="标签名称" :label-col="{span:6}" name="labelName" v-bind="validateInfos.labelName">
             <a-input v-model:value="dataModel.labelName" placeholder=""/>
           </a-form-item>
         </a-col>
       </a-row>
+<!--      <a-row :gutter="24">-->
+<!--        <a-col :span="24">-->
+<!--          <a-form-item label="标签类型" :label-col="{span:6}" name="userType" v-bind="validateInfos.labelType">-->
+<!--            <a-select-->
+<!--              ref="select" disabled-->
+<!--              v-model:value="dataModel.labelType"-->
+<!--              :options="labelTypeList"-->
+<!--              :field-names="{label:'name',value:'value'}"-->
+<!--            >-->
+<!--            </a-select>-->
+<!--          </a-form-item>-->
+<!--        </a-col>-->
+<!--      </a-row>-->
       <a-row :gutter="24">
-        <a-col :span="8">
-          <a-form-item label="标签类型" :label-col="{span:6}" name="userType" v-bind="validateInfos.labelType">
-            <a-select
-              ref="select"
-              v-model:value="dataModel.labelType"
-              :options="labelTypeList"
-              :field-names="{label:'name',value:'value'}"
-            >
-            </a-select>
-          </a-form-item>
-        </a-col>
-      </a-row>
-      <a-row :gutter="24">
-        <a-col :span="8">
+        <a-col :span="24">
           <a-form-item label="排序号" :label-col="{span:6}" name="sortNo" v-bind="validateInfos.sortNo">
             <a-input v-model:value="dataModel.sortNo" placeholder=""/>
           </a-form-item>
@@ -43,26 +42,22 @@
   </a-modal>
 </template>
 <script lang="ts">
-import {defineComponent, reactive, ref} from "vue";
+import {defineComponent, reactive, ref, toRefs} from "vue";
 import {getLabelByID, saveLabel,} from "@/api/baseSettings/label";
 import {Form} from "ant-design-vue";
 import {getSysDictionaryList} from "@/api/system/dictionary";
-
+interface FormState {
+  dataModel: any;
+}
 export default defineComponent({
-  props: {
-    loadData: {
-      type: Function,
-      default: null
-    }
-  },
-  setup(props) {
+  name: 'editLabel',
+  props:{},
+  setup(props,context) {
     const visible = ref<boolean>(false);
     const confirmLoading = ref<boolean>(false);
     const useForm = Form.useForm;
-    const formState = reactive({
-      loading: false,
-    });
-    const dataModel = ref({labelID: '', labelName: '', labelType: '', bigType: '', sortNo: ''});
+
+    const formState = reactive<FormState>({dataModel: {}});
     const bigType = ref();
     const labelTypeList = ref([]);
     const title = ref('');
@@ -88,24 +83,25 @@ export default defineComponent({
       ]
     });
 
-    const {validate, validateInfos} = useForm(dataModel, rulesRef);
+    const {validate, validateInfos} = useForm(formState.dataModel, rulesRef);
 
-    const show = (id: any, bigType: any, modelTitle: any) => {
+    const show = (id: any, type: any, modelTitle: any) => {
       getLabelTypeList();
 
       title.value = modelTitle;
-      dataModel.value.labelID = id;
-      bigType.value = bigType;
+      formState.dataModel.labelID = id;
+      bigType.value = type;
       loadData();
       visible.value = true;
     };
 
     const handleOk = () => {
       validate().then(() => {
-        saveLabel(dataModel.value).then(result => {
+        saveLabel(formState.dataModel).then(result => {
           if (result) {
             visible.value = false;
-            props.loadData();
+            console.log(props)
+            context.emit("callBack")
           }
         });
       });
@@ -116,9 +112,10 @@ export default defineComponent({
     };
 
     const loadData = () => {
-      getLabelByID(dataModel.value.labelID).then((result: any) => {
-        dataModel.value = result;
-        dataModel.value.bigType = bigType.value;
+      getLabelByID(formState.dataModel.labelID).then((result: any) => {
+        formState.dataModel = result;
+        formState.dataModel.bigType = bigType.value;
+        formState.dataModel.labelType = 2;
       });
     }
 
@@ -129,13 +126,13 @@ export default defineComponent({
     }
 
     return {
-      dataModel,
+      ...toRefs(formState),
+      title,
       visible,
       confirmLoading,
       show,
       handleOk,
       handleCancel,
-      formState,
       validateInfos,
       validate,
       labelTypeList,

+ 27 - 2
vue/src/views/baseSettings/label/selectLabel.vue

@@ -20,7 +20,19 @@
           </a-button>
         </a-col>
       </a-row>
-      <a-divider orientation="left">自定义标签</a-divider>
+          <div style="display: flex;align-items: center;max-width: 50%">
+            <a-divider orientation="left"><span style="padding-left: 22px;">自定义标签</span></a-divider>
+            <a-divider orientation="right">
+              <Space>
+                <a-button @click="onLabelModel()">
+<!--                  <template #icon>-->
+<!--                    <plus-circle-outlined/>-->
+<!--                  </template>-->
+                  新增标签
+                </a-button>
+              </Space>
+            </a-divider>
+          </div>
       <a-row :gutter="24">
         <a-col :span="24">
           <a-button :style="{margin: ' 0px 5px 5px 0px', color: 'black',border: '1px solid rgb(217, 217, 217)' ,background:item.check?'#1890ff':'#fff'}" v-for="item in customLabelList"
@@ -30,13 +42,17 @@
         </a-col>
       </a-row>
     </a-form>
+<edit-label ref="refEditLabel" @callBack="loadData"></edit-label>
   </a-modal>
 </template>
 <script lang="ts">
 import {defineComponent, reactive, ref} from "vue";
 import {getLabelList} from "@/api/baseSettings/label";
+import EditLabel from "@/views/baseSettings/label/edit.vue";
 
 export default defineComponent({
+  name: 'selectLabel',
+  components:{EditLabel},
   props: {
     listLabel: {
       type: Array,
@@ -57,6 +73,7 @@ export default defineComponent({
     });
     const basicsLabelList = ref<any>([]);
     const customLabelList = ref<any>([]);
+    const refEditLabel = ref();
 
     const show = () => {
       loadData();
@@ -91,15 +108,23 @@ export default defineComponent({
       })
     }
 
+    const onLabelModel = ()=>{
+      // labelModelEdit.value.show('', 2, '新增标签');
+      refEditLabel.value.show('',props.bigType,'新增标签')
+    }
+
     return {
       basicsLabelList,
       customLabelList,
       visible,
       confirmLoading,
+      loadData,
       show,
       handleOk,
       handleCancel,
-      formState
+      formState,
+      refEditLabel,
+      onLabelModel
     };
   },
   created() {

+ 2 - 0
vue/src/views/companyService/post/detail.vue

@@ -4,6 +4,7 @@
     <a-descriptions bordered>
       <a-descriptions-item label="企业名称">{{ postInfo.companyName }}</a-descriptions-item>
       <a-descriptions-item label="岗位名称">{{ postInfo.professionName }}</a-descriptions-item>
+      <a-descriptions-item label="工种名称">{{ postInfo.workCategoryName }}</a-descriptions-item>
       <a-descriptions-item label="招聘人数">{{ postInfo.recruitCount }}</a-descriptions-item>
       <a-descriptions-item label="招聘日期">
         {{ postInfo.startTime ? dayjs(postInfo.startTime).format('YYYY-MM-DD') : '' }}
@@ -59,6 +60,7 @@ import {get} from "@/api/common";
 const postInfo = reactive({
   companyName: "",
   professionName: "",
+  workCategoryName: "",
   recruitCount: "",
   startTime: "",
   endTime: "",