Browse Source

app企业岗位信息页面搭建

liao-sea 11 months ago
parent
commit
8bb19bf4c1

+ 4 - 0
h5app/src/router/index.ts

@@ -48,6 +48,10 @@ const routes: Array<RouteRecordRaw> = [
                 path: 'tabMain/company/list',
                 component: () => import('@/views/pages/company/list.vue')
             },
+            {
+                path: 'tabMain/company/detail',
+                component: () => import('@/views/pages/company/detail.vue')
+            },
             {
                 path: 'tabMain/company/menu',
                 component: () => import('@/views/pages/company/menu.vue')

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

@@ -0,0 +1,214 @@
+<template>
+  <ion-page>
+    <ion-header class="header-theme2">
+      <ion-toolbar>
+        <ion-buttons slot="start">
+          <ion-icon :icon="arrowBackOutline" @click="onBack"></ion-icon>
+        </ion-buttons>
+        <ion-title>
+          企业信息详情
+        </ion-title>
+      </ion-toolbar>
+    </ion-header>
+    <ion-content>
+      <div class="bw-vue-form">
+        <div class="form-detail">
+          <ion-label>企业名称</ion-label>
+          <ion-text>{{ dataModel.companyName }}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>统一信用代码</ion-label>
+          <ion-text>{{ dataModel.companyCode }}</ion-text>
+        </div>
+        <div class="form-detail">
+          <ion-label>企业地址</ion-label>
+          <ion-text>{{ dataModel.companyAddress }}</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-text>{{ dataModel.userName }}</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.companyDesc }}</ion-text>
+        </div>
+      </div>
+    </ion-content>
+    <ion-footer>
+    </ion-footer>
+  </ion-page>
+</template>
+<script lang="ts">
+import {defineComponent, ref, reactive, watch, toRefs} from "vue";
+import {getCompanyById} from "@/api/company";
+import {useRoute, useRouter} from "vue-router";
+import {onIonViewDidEnter} from "@ionic/vue";
+import {arrowBackOutline} from 'ionicons/icons';
+
+
+interface FormData{
+  dataModel:any
+}
+export default defineComponent({
+  name: 'CompanyMenu',
+  setup() {
+    const router = useRouter();
+    const route = useRoute();
+    const loading = ref<boolean>(false);
+    const formData = reactive<FormData>({
+      dataModel: {
+        companyID:null,
+        companyName:null
+      }
+    });
+    const onBack=()=>{
+      router.push({path:'./list',query:{reload:1}});
+    };
+
+    const onPathForward = (pathValue:string,statusValue:any)=>{
+      router.push({path: pathValue, query: {reload:1,id:formData.dataModel.companyID,status:statusValue}});
+    };
+
+    const loadData = async (companyID:any)=>{
+      loading.value = true;
+      const reqData = await getCompanyById(companyID);
+      formData.dataModel = reqData;
+      console.log("dataModel",formData.dataModel);
+      loading.value = false;
+    };
+
+    const reload = (companyID:any) => {
+      loadData(companyID);
+    };
+
+    watch(() => route.query, () => {
+      if (route.query.reload) {
+        reload(route.query.id);
+      }
+    });
+
+    onIonViewDidEnter(() => {
+      if (route.query.reload) {
+        reload(route.query.id)
+      }
+    });
+
+
+    return {
+      ...toRefs(formData),
+      arrowBackOutline,
+      route,
+      loading,
+      onPathForward,
+      onBack,
+      loadData,
+      router,
+    }
+  },
+  mounted() {
+    const companyID = this.route.query.id;
+    this.loadData(companyID);
+  }
+});
+</script>
+
+<style lang="less">
+ion-item {
+  --border-width: 0;
+  --border-style: none;
+
+  ion-label, ion-input, ion-select, ion-datetime-button {
+    font-size: 14px !important;
+  }
+}
+
+.stepFlex {
+  margin: 0;
+  display: flex;
+  width: 100%;
+
+  .stepFlex-item {
+    position: relative;
+    flex: 1;
+    text-align: center;
+    margin-top: -10px;
+
+    .stepFlex-item-label {
+      padding-top: 60px;
+      font-size: 14px;
+
+      .stepFlex-item-label-title {
+        margin-top: 30px;
+      }
+
+      .stepFlex-item-label-desc {
+        margin-top: 5px;
+        color: #b9b9bd;
+      }
+    }
+  }
+
+  .greenCircle {
+    top: calc(50% - 15px);
+    left: calc(50% - 4px);
+    position: absolute;
+    z-index: 2;
+    width: 10px;
+    height: 10px;
+    border-radius: 50%;
+    background-color: #31A2FE;
+  }
+
+  .now {
+    top: calc(50% - 18px);
+    left: calc(50% - 8px);
+    position: absolute;
+    z-index: 3;
+    width: 16px;
+    height: 16px;
+    border-radius: 50%;
+    background-color: #31A2FE;
+    border: 4px solid #c5e8f9;
+  }
+
+  .grayCircle {
+    top: calc(50% - 15px);
+    left: calc(50% - 4px);
+    position: absolute;
+    z-index: 2;
+    width: 10px;
+    height: 10px;
+    border-radius: 50%;
+    background-color: #ccc;
+  }
+
+  .greenLine {
+    width: 100%;
+    top: calc(50% - 11px);
+    left: calc(50% - 2px);
+    height: 2px;
+    background-color: #31A2FE;
+    position: absolute;
+  }
+
+  .grayLine {
+    height: 0;
+    border: 1px dashed #ccc;
+    width: 100%;
+    top: calc(50% - 11px);
+    left: calc(50% - 2px);
+    position: absolute;
+  }
+
+}
+
+
+</style>

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

@@ -289,7 +289,6 @@ export default defineComponent({
       {value: 0, name: '否'},
     ];
 
-
     const getCompanyModelList = async function(){
       const companyModelResult :any = await getSysDictionaryList("CompanyModel");
       companyModelList.value = companyModelResult;
@@ -395,10 +394,7 @@ export default defineComponent({
     };
 
     const onBack=()=>{
-      if(isAdd.value)
         router.push({path: './list', query: {reload:1}});
-      else if(curStepData.value.statusVal==1)
-        router.push({path: './menu', query: {reload:1,id:formState.dataModel.companyID,status:2}});
     }
 
     const getRegionListData = () => {

+ 23 - 44
h5app/src/views/pages/company/list.vue

@@ -18,46 +18,26 @@
         <ion-button slot="end" style="height: 33px;width: 70px;margin-left: 10px;--box-shadow: none;--border-radius: 14px;" @click="reload" >搜索
         </ion-button>
       </ion-item>
-      <ion-list class="list-content">
-        <ion-item v-for="(record,key) in dataList" :key="key" detail @click="onEdit(record.companyID)">
-          <ion-grid>
-            <ion-row>
-              <ion-col>
-                <ion-label style="display: flex;justify-content: space-between;">
-                  <ion-text>
-                    {{ record.companyName }}
-                  </ion-text>
-                  <ion-label slot="end">
-                    <ion-text style="text-align:right;color:#3a7be0;">◆</ion-text>
-                    <ion-text style="text-align:right;">正在跟进</ion-text>
-                  </ion-label>
-                </ion-label>
-              </ion-col>
-            </ion-row>
-            <ion-row>
-              <ion-col>
-                <ion-label>
-                  <p>
-                    最新跟进时间:{{ dayjs(record.modifyTime).format("YYYY-MM-DD")}}
-                  </p>
-                </ion-label>
-              </ion-col>
-            </ion-row>
-            <ion-row>
-              <ion-col>
-                <ion-label style="display: flex;justify-content: space-between;">
-                  <p>
-                    参保人数:{{ record.insuredCount==null?"0":record.insuredCount }}人
-                  </p>
-                  <p>
-                    岗位数量:{{ record.postCount }}
-                  </p>
-                </ion-label>
-              </ion-col>
-            </ion-row>
-          </ion-grid>
-        </ion-item>
-      </ion-list>
+
+      <div class="bw-vue-list">
+        <div class="list-content">
+          <ion-list>
+            <ion-item v-for="(record,key) in dataList" :key="key" detail @click="onDetail(record.companyID)">
+              <ion-label>
+                <div class="multi-title">
+                  <h2>{{ record.companyName }}</h2>
+                </div>
+                <p>地点:{{record.companyAddress}}</p>
+                <p>联系人:{{record.userName}}</p>
+                <div class="multi-title">
+                  <p>联系电话:{{record.userMobile}}</p>
+                  <p>岗位数量:{{ record.postCount }}</p>
+                </div>
+              </ion-label>
+            </ion-item>
+          </ion-list>
+        </div>
+      </div>
       <b-empty v-if="dataList.length<=0" :loading="loading"/>
       <ion-infinite-scroll threshold="100px" @ionInfinite="onScroll($event)">
         <ion-infinite-scroll-content
@@ -130,8 +110,8 @@ export default defineComponent({
       router.push({path: './edit', query: {reload: 1,id: null,status: 1}});
     }
 
-    const onEdit = (companyID:string) => {
-      router.push({path: './menu', query: {reload: 1,id: companyID,status: 2}});
+    const onDetail = (companyID:string) => {
+      router.push({path: './detail', query: {reload: 1,id: companyID}});
     }
 
 
@@ -156,7 +136,7 @@ export default defineComponent({
       searchParams,
       onBack,
       onAdd,
-      onEdit,
+      onDetail,
       onScroll,
       loadData,
       reload,
@@ -182,7 +162,6 @@ export default defineComponent({
     ion-item {
       margin-top: 10px;
       font-size: 14px;
-      border: 1px solid rgb(242, 242, 245);
 
       p {
         font-size: 12px;

+ 2 - 1
src/main/resources/mapping/cquery/CompanyCQuery.xml

@@ -2,9 +2,10 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.hz.employmentsite.mapper.cquery.CompanyCQuery">
     <select id="getList" resultType="com.hz.employmentsite.vo.companyService.CompanyVo">
-        select company.*,city.name as regionName,area.name as streetName,sys_cmodel.Name as companyModelType,
+        select company.*,city.name as regionName,area.name as streetName,sys_cmodel.Name as companyModelType,site.SiteName,
         (select count(*) from pc_post where CompanyID=company.CompanyID) as postCount,u.`Name` as createUserName from pc_company company
         left join sys_user u on u.UserID = company.CreateUserID
+        left join pc_site site on  company.SiteID = site.SiteID
         left join (select * from sys_dictionary_item where DictionaryCode ='CompanyModel') sys_cmodel on company.CompanyModel = sys_cmodel.Value
         left join area_code city on company.RegionCode = city.code
         left join area_code area on company.StreetCode = area.code

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

@@ -6,7 +6,7 @@
         <a-col flex="800px">
           <a-form-item label="企业名称" :label-col="{ span: 3}"
                        name="companyID" :rules="[{ required: true, message: '请选择关联企业!' }]" >
-            <a-select 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" >
               <a-select-option v-for="item in companyList" :label="item.companyName" :value="item.companyID"
                                :key="item.companyID">
                 <span>{{ item.companyName }}</span>
@@ -207,7 +207,7 @@ export default defineComponent(
 
       const fullpath = router.currentRoute.value.fullPath;
       const tabsViewStore = useTabsViewStore();
-      const isEdit = ref(false);
+      const isEdit = ref<boolean>(false);
 
       const cultureLevelList = ref<SelectProps['options']>();
       const WorkYearTypeList = ref<SelectProps['options']>();
@@ -301,7 +301,9 @@ export default defineComponent(
 
       }
 
+
       const loadData = (id: any) => {
+        isEdit.value = id != null;
         getFirstProfessionList();
         getPostByID(id).then(result => {
           console.log(result);