Explorar o código

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

pengjing hai 1 ano
pai
achega
1c8c8397b0

+ 5 - 3
h5app/src/views/pages/userQrCode/index.vue

@@ -12,10 +12,12 @@
       <div class="user_qrcode">
         <div class="qr_item">
           <img src="@/assets/icon/wxQrcode.jpg" :style="imgStyle">
+          <br/>
           <span>关注公众号</span>
         </div>
         <div class="qr_item">
           <img :src="infoQrcodeUrl" :style="imgStyle">
+          <br/>
           <span>扫码登记</span>
         </div>
       </div>
@@ -67,8 +69,8 @@ export default defineComponent({
 
     const updateBrowserWidth = () => {
       const browserWidth = window.innerWidth;
-      imgStyle.value.width = (browserWidth - 20) / 2 + 'px';
-      imgStyle.value.height = (browserWidth - 20) / 2 + 'px';
+      imgStyle.value.width = (browserWidth - 60) / 2 + 'px';
+      imgStyle.value.height = (browserWidth - 60) / 2 + 'px';
     }
 
     const onBack = () => {
@@ -115,7 +117,7 @@ export default defineComponent({
   }
 
   img {
-    padding: 10px;
+    padding: 20px 20px 15px 20px;
   }
 }
 

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

@@ -35,43 +35,44 @@
         <ion-button slot="end" style="height: 33px;width:70px;margin-left: 10px;--box-shadow: none;--border-radius: 14px;" @click="onSearch">搜索</ion-button>
       </ion-item>
       <!-- 滑动数据列表 -->
-      <div v-if="!loading" class="bw-vue-list">
-        <div v-for="(record,key) in dataList" :key="key">
-          <ion-item-sliding style="border-bottom: 1px solid #f1f5f7;border-radius: 0px;">
-            <ion-item>
-              <ion-grid @click="onDetail(record.doWorkID)">
-                <ion-row>
-                  <ion-col>
-                    <ion-label style="display: flex;justify-content: space-between;">
-                      <ion-text>
-                        {{ record.workTime }}工作日志
-                      </ion-text>
-                    </ion-label>
-                  </ion-col>
-                </ion-row>
-                <ion-row>
-                  <ion-col>
-                    <ion-label>
-                      <p>
-                        日志类型:{{ record.logTypeName }}
-                      </p>
-                    </ion-label>
-                  </ion-col>
-                </ion-row>
-              </ion-grid>
-              <span @click="onDetail(record.doWorkID)">
-                <ion-icon :icon="chevronForwardOutline" slots="end"></ion-icon>
-              </span>
-            </ion-item>
-            <ion-item-options>
-              <ion-item-option @click="onEdit(record.doWorkID)">
-                <ion-icon :icon="buildOutline"></ion-icon>
-              </ion-item-option>
-              <ion-item-option color="danger" @click="setDelAlertOpen(true, record.doWorkID)">
-                <ion-icon :icon="trashOutline"></ion-icon>
-              </ion-item-option>
-            </ion-item-options>
-          </ion-item-sliding>
+      <div class="bw-vue-list">
+        <div class="list-content">
+          <ion-list>
+            <div v-for="(record,key) in dataList" :key="key">
+              <ion-item-sliding>
+                <ion-item detail @click="onDetail(record)">
+                  <ion-grid @click="onDetail(record.doWorkID)">
+                    <ion-row>
+                      <ion-col>
+                        <ion-label style="display: flex;justify-content: space-between;">
+                          <ion-text>
+                            {{ record.workTime }}工作日志
+                          </ion-text>
+                        </ion-label>
+                      </ion-col>
+                    </ion-row>
+                    <ion-row>
+                      <ion-col>
+                        <ion-label>
+                          <p>
+                            日志类型:{{ record.logTypeName }}
+                          </p>
+                        </ion-label>
+                      </ion-col>
+                    </ion-row>
+                  </ion-grid>
+                </ion-item>
+                <ion-item-options>
+                  <ion-item-option @click="onEdit(record.doWorkID)">
+                    <ion-icon :icon="buildOutline"></ion-icon>
+                  </ion-item-option>
+                  <ion-item-option color="danger" @click="setDelAlertOpen(true, record.doWorkID)">
+                    <ion-icon :icon="trashOutline"></ion-icon>
+                  </ion-item-option>
+                </ion-item-options>
+              </ion-item-sliding>
+            </div>
+          </ion-list>
         </div>
       </div>
       <b-empty v-if="dataList.length<=0" :loading="loading"/>
@@ -325,9 +326,7 @@ export default defineComponent({
     border-radius: 0 !important;
 
     ion-item {
-      margin-top: 10px;
       font-size: 14px;
-      border: 1px solid rgb(242, 242, 245);
 
       p {
         font-size: 12px;

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

@@ -14,7 +14,7 @@
           <div class="tool-img">
             <img src="@/assets/icon/qzxx.png">
           </div>
-          <div class="tool-title">求职人员信息收集</div>
+          <div class="tool-title">求职人员收集</div>
         </a>
         <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/jobhunt/recommend/list')">
           <div class="tool-img">
@@ -32,13 +32,13 @@
           <div class="tool-img">
             <img src="@/assets/icon/gwxxgl.png">
           </div>
-          <div class="tool-title">岗位信息管理</div>
+          <div class="tool-title">岗位信息</div>
         </a>
         <a class="tool-item box-line" @click="router.push('/tabs/tabMain/recommendMgt/list')">
           <div class="tool-img">
             <img src="@/assets/icon/gwtj.png">
           </div>
-          <div class="tool-title">推荐信息管理</div>
+          <div class="tool-title">推荐</div>
         </a>
         <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/work/task/list')">
           <div class="tool-img">

+ 3 - 1
vue/src/router/asyncModules/companyService.ts

@@ -2,8 +2,10 @@ export default {
   'companyService/enterprise/index': () => import('@/views/companyService/company/index.vue'),
   'companyService/enterprise/add': () => import('@/views/companyService/company/edit.vue'),
   'companyService/enterprise/edit': () => import('@/views/companyService/company/edit.vue'),
+  'companyService/enterprise/detail': () => import('@/views/companyService/company/detail.vue'),
   'companyService/post/index': () => import('@/views/companyService/post/index.vue'),
   'companyService/post/add': () => import('@/views/companyService/post/edit.vue'),
   'companyService/post/edit': () => import('@/views/companyService/post/edit.vue'),
-  'companyService/post/recommend': () => import('@/views/companyService/post/recommend.vue')
+  'companyService/post/recommend': () => import('@/views/companyService/post/recommend.vue'),
+  'companyService/post/detail': () => import('@/views/companyService/post/detail.vue')
 };

+ 95 - 0
vue/src/views/companyService/company/detail.vue

@@ -0,0 +1,95 @@
+<template>
+  <div class="card-edit">
+    <a-divider orientation="left">企业基础信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="统一社会信用代码">{{ companyInfo.companyCode }}</a-descriptions-item>
+      <a-descriptions-item label="企业名称">{{ companyInfo.companyName }}</a-descriptions-item>
+      <a-descriptions-item label="所属驿站">{{ companyInfo.SiteName }}</a-descriptions-item>
+      <a-descriptions-item :span="2" label="企业办公地址">{{ companyInfo.companyAddress }}</a-descriptions-item>
+      <a-descriptions-item label="企业联系人">{{ companyInfo.userName }}</a-descriptions-item>
+      <a-descriptions-item label="企业联系电话">{{ companyInfo.userMobile }}</a-descriptions-item>
+      <a-descriptions-item label="企业状态">{{ companyInfo.recordStatus == 0 ? '停业' : '在营' }}</a-descriptions-item>
+      <a-descriptions-item label="是否缺工">{{ companyInfo.isShortage == 0 ? '否' : '是' }}</a-descriptions-item>
+      <a-descriptions-item label="企业所在经度">{{ companyInfo.longitude }}</a-descriptions-item>
+      <a-descriptions-item label="企业所在纬度">{{ companyInfo.latitude }}</a-descriptions-item>
+    </a-descriptions>
+    <a-divider orientation="left">附件照片</a-divider>
+    <b-upload-file :fileRefId="companyInfo.companyID" :readonly="true" :multiple="true" style="width: 100%;"
+                   :setFileList="setFileList" :accept="'.pdf,.png,.jpg'"></b-upload-file>
+    <a-divider orientation="left">其他信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="法定代表人(负责人)">{{ companyInfo.frName }}</a-descriptions-item>
+      <a-descriptions-item label="营业执照有效期">
+        {{ companyInfo.validDate ? dayjs(companyInfo.validDate).format('YYYY-MM-DD') : '' }}
+      </a-descriptions-item>
+      <a-descriptions-item label="企业邮箱">{{ companyInfo.companyEmail }}</a-descriptions-item>
+      <a-descriptions-item label="企业分类">{{ companyInfo.companyType }}</a-descriptions-item>
+      <a-descriptions-item label="所属县区">{{ companyInfo.regionName }}</a-descriptions-item>
+      <a-descriptions-item label="所属街道">{{ companyInfo.streetName }}</a-descriptions-item>
+      <a-descriptions-item label="企业规模">{{ companyInfo.companyModel }}</a-descriptions-item>
+      <a-descriptions-item label="用工情况(人)">{{ companyInfo.workSituation }}</a-descriptions-item>
+      <a-descriptions-item label="参保人数(人)">{{ companyInfo.insuredCount }}</a-descriptions-item>
+      <a-descriptions-item :span="3" label="经营范围">{{ companyInfo.businScope }}</a-descriptions-item>
+      <a-descriptions-item :span="3" label="企业简介">{{ companyInfo.companyDesc }}</a-descriptions-item>
+    </a-descriptions>
+  </div>
+</template>
+
+<script setup lang="ts">
+
+import {getCompanyById} from "@/api/companyService/company";
+import {onMounted, reactive, ref} from "vue";
+import BUploadFile from "@/components/file/uploadFile.vue";
+import dayjs from "dayjs";
+
+// 企业信息
+const companyInfo = reactive({
+  companyID: "",
+  companyCode: "",
+  companyName: "",
+  SiteName: "",
+  companyAddress: "",
+  userName: "",
+  userMobile: "",
+  recordStatus: null,
+  isShortage: null,
+  longitude: "",
+  latitude: "",
+  frName: "",
+  validDate: "",
+  companyEmail: "",
+  companyType: "",
+  regionName: "",
+  streetName: "",
+  companyModel: "",
+  workSituation: "",
+  insuredCount: "",
+  businScope: "",
+  companyDesc: "",
+})
+// 文件数据
+const fileList = ref();
+
+// 数据加载
+function loadData(id: any) {
+  getCompanyById(id).then(result => {
+    Object.keys(companyInfo).forEach(key => {
+      companyInfo[key] = result[key]
+    })
+  })
+}
+
+// 设置文件列表
+function setFileList(files) {
+  fileList.value = files;
+};
+
+onMounted(() => {
+  const id = history.state.params?.id;
+  loadData(id);
+})
+</script>
+
+<style scoped>
+
+</style>

+ 12 - 7
vue/src/views/companyService/company/index.vue

@@ -101,6 +101,7 @@
         <template #bodyCell="{ column, text, record }">
           <template v-if="column.key === 'operation'">
             <div class="table-operation">
+              <a-button type="link" size="small" @click='onDetail(record)' functioncode="T01020101">查看</a-button>
               <a-button type="link" size="small" @click='onEdit(record)' functioncode="T01020103">编辑</a-button>
               <a-button type="link" size="small" @click="onDel(record)" functioncode="T01020104">删除</a-button>
             </div>
@@ -119,15 +120,14 @@
 </template>
 
 <script lang="ts">
-import {reactive, ref, computed, defineComponent, createVNode} from 'vue';
+import {computed, createVNode, defineComponent, reactive, ref} from 'vue';
 import {DownOutlined, ExclamationCircleOutlined, UpOutlined} from '@ant-design/icons-vue';
-import type {FormInstance} from 'ant-design-vue';
-import type {TableColumnsType, TableProps} from 'ant-design-vue';
-import {getList, del} from '@/api/companyService/company';
+import type {FormInstance, TableColumnsType, TableProps} from 'ant-design-vue';
+import {Modal, SelectProps} from "ant-design-vue";
+import {del, getList} from '@/api/companyService/company';
 import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
 import BImportExcel from '@/components/basic/excel/importExcel/importExcel.vue';
 import {getPaginationTotalTitle} from "@/utils/common";
-import {Modal, SelectProps} from "ant-design-vue";
 import dayjs from "dayjs";
 import {useTabsViewStore} from '@/store/modules/tabsView';
 import {get} from "@/api/common";
@@ -210,7 +210,7 @@ export default defineComponent({
           return item.record.createTime == null ? "" : (dayjs(item.record.createTime).format('YYYY-MM-DD'))
         }
       },
-      {title: '操作', key: 'operation', fixed: 'right', width: 100, align: "center"},
+      {title: '操作', key: 'operation', fixed: 'right', width: 150, align: "center"},
     ];
     const pagination = computed(() => ({
       total: formState.total,
@@ -302,6 +302,10 @@ export default defineComponent({
       tabsViewStore.addTabByPath('/companyService/enterprise/edit', {id: item.companyID});
     };
 
+    const onDetail = (item: any) => {
+      tabsViewStore.addTabByPath('/companyService/enterprise/detail', {id: item.companyID});
+    };
+
     return {
       formRef,
       modalShowRef,
@@ -324,7 +328,8 @@ export default defineComponent({
       importOptions,
       recordStatusList,
       regionList,
-      streetList
+      streetList,
+      onDetail
     };
   },
   created() {

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

@@ -0,0 +1,97 @@
+<template>
+  <div class="card-edit">
+    <a-divider orientation="left">岗位基础信息</a-divider>
+    <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.recruitCount }}</a-descriptions-item>
+      <a-descriptions-item label="招聘日期">
+        {{ postInfo.startTime ? dayjs(postInfo.startTime).format('YYYY-MM-DD') : '' }}
+        至
+        {{ postInfo.endTime ? dayjs(postInfo.endTime).format('YYYY-MM-DD') : '' }}
+      </a-descriptions-item>
+      <a-descriptions-item :span="3" label="招聘地点">{{ postInfo.jobPlace }}</a-descriptions-item>
+    </a-descriptions>
+    <a-divider orientation="left">其他信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="岗位月薪(元)">
+        {{ postInfo.minSalary }}
+        至
+        {{ postInfo.maxSalary }}
+      </a-descriptions-item>
+      <a-descriptions-item label="是否有试用期">{{ postInfo.isTrail ? '是' : '否' }}</a-descriptions-item>
+      <a-descriptions-item label="试用期(月)">{{ postInfo.trailMonths }}</a-descriptions-item>
+      <a-descriptions-item label="试用期月薪(元)">
+        {{ postInfo.trailMinSalary }}
+        至
+        {{ postInfo.trailMaxSalary }}
+      </a-descriptions-item>
+      <a-descriptions-item label="工作年限要求">{{ workYear }}</a-descriptions-item>
+      <a-descriptions-item label="学历要求">{{ postInfo.cultureLevelName }}</a-descriptions-item>
+      <a-descriptions-item :span="3" label="福利待遇">{{ postInfo.welfare }}</a-descriptions-item>
+      <a-descriptions-item :span="3" label="其他要求">{{ postInfo.postDesc }}</a-descriptions-item>
+    </a-descriptions>
+  </div>
+</template>
+
+<script setup lang="ts">
+import {getPostByID} from "@/api/companyService/post";
+import {computed, onMounted, reactive, ref} from "vue";
+import dayjs from "dayjs";
+import {get} from "@/api/common";
+
+// 岗位信息
+const postInfo = reactive({
+  companyName: "",
+  professionName: "",
+  recruitCount: "",
+  startTime: "",
+  endTime: "",
+  jobPlace: "",
+  minSalary: "",
+  maxSalary: "",
+  isTrail: "",
+  trailMonths: "",
+  trailMinSalary: "",
+  trailMaxSalary: "",
+  workYear: "",
+  cultureLevelName: "",
+  welfare: "",
+  postDesc: "",
+})
+// 工作年限数据
+const WorkYearTypeList = ref<Array<any>>([])
+// 获取工作年限
+const workYear = computed(() => {
+  if (postInfo.workYear && WorkYearTypeList.value.length > 0) {
+    const item = WorkYearTypeList.value.find(item => item.value == postInfo.workYear)
+    if (item) {
+      return item.name;
+    }
+  }
+  return postInfo.workYear;
+})
+
+// 数据加载
+function loadData(id: any) {
+  getPostByID(id).then(result => {
+    Object.keys(postInfo).forEach((key) => {
+
+      postInfo[key] = result[key];
+    })
+  })
+}
+
+// 页面初始化
+onMounted(() => {
+  const id = history.state.params?.id;
+  loadData(id);
+  get('system/dictionary/getDictionaryItemByCodeList', {code: 'WorkYearType'}).then(result => {
+    WorkYearTypeList.value = result;
+  });
+})
+</script>
+
+<style scoped>
+
+</style>

+ 11 - 8
vue/src/views/companyService/post/index.vue

@@ -100,6 +100,7 @@
           </template>
           <template v-if="column.key === 'operation'">
             <div class="table-operation">
+              <a-button type="link" size="small" @click='onDetail(record)' functioncode="T01020201">查看</a-button>
               <a-button type="link" size="small" @click='onEdit(record)' functioncode="T01020203">编辑</a-button>
               <a-button type="link" size="small" @click="onDel(record)" functioncode="T01020204">删除</a-button>
               <a-button type="link" size="small"  @click="onRecommendJob(record)" functioncode="T01030207">推荐求职人员</a-button>
@@ -113,16 +114,14 @@
 </template>
 
 <script lang="ts">
-import {reactive, ref, computed, defineComponent, createVNode} from 'vue';
-import {DownOutlined, UpOutlined} from '@ant-design/icons-vue';
-import type {FormInstance} from 'ant-design-vue';
+import {computed, createVNode, defineComponent, reactive, ref} from 'vue';
+import {DownOutlined, ExclamationCircleOutlined, UpOutlined} from '@ant-design/icons-vue';
+import type {FormInstance, TableColumnsType, TableProps} from 'ant-design-vue';
 import {Modal, SelectProps} from 'ant-design-vue';
-import type {TableColumnsType, TableProps} from 'ant-design-vue';
-import {getList, del} from '@/api/companyService/post';
+import {del, getList} from '@/api/companyService/post';
 import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
 import BImportExcel from '@/components/basic/excel/importExcel/importExcel.vue';
 import {getPaginationTotalTitle} from "@/utils/common";
-import {ExclamationCircleOutlined} from '@ant-design/icons-vue';
 import dayjs from 'dayjs';
 import {useRoute} from 'vue-router';
 import {useTabsViewStore} from "@/store/modules/tabsView";
@@ -215,7 +214,7 @@ export default defineComponent({
       {title: '联系人', dataIndex: 'userName', key: 'userName', align: "center"},
       {title: '联系电话', dataIndex: 'userMobile', key: 'userMobile', width: 200, align: "center"},
       {title: '推荐数量', dataIndex: 'recommendNum',key: 'recommendNum',width: 100, align: "center"},
-      {title: '操作', key: 'operation', fixed: 'right', width: 200, align: "center"},
+      {title: '操作', key: 'operation', fixed: 'right', width: 240, align: "center"},
     ];
     const pagination = computed(() => ({
       total: formState.total,
@@ -241,6 +240,9 @@ export default defineComponent({
     const onEdit = (item: any) => {
       tabsViewStore.addTabByPath('/companyService/post/edit', {id: item.postID});
     };
+    const onDetail = (item: any) => {
+      tabsViewStore.addTabByPath('/companyService/post/detail', {id: item.postID});
+    };
 
     const onRecommendJob = (item) =>{
       recommendRef.value.show(item.professionID,item.professionName,item.postID,item.companyName,0,'推荐求职人员');
@@ -330,7 +332,8 @@ export default defineComponent({
       onRecommendInfo,
       expand,
       postStatusList,
-      companyList
+      companyList,
+      onDetail
     };
   },
   created() {