Xiao_123 il y a 7 mois
Parent
commit
39a8518006

+ 11 - 5
src/layout/personal/footer.vue

@@ -1,11 +1,17 @@
 <template>
   <div class="box">
     <div class="top wid d-flex justify-space-between">
-      <div class="left">
-        <h4>联系我们</h4>
-        <div class="mt-4 size">
-          <div>苏州识喜识谊信息科技有限公司</div>
-          <div class="my-2">公司地址&nbsp;苏州工业园区林泉街399号东南大学国家大学科技园(苏州)南工院(2#)304室</div>
+      <div class="left d-flex justify-space-between">
+        <div>
+          <h4>联系我们</h4>
+          <div class="mt-4 size">
+            <div>苏州识喜识谊信息科技有限公司</div>
+            <div class="my-2">公司地址&nbsp;苏州工业园区林泉街399号东南大学国家大学科技园(苏州)南工院(2#)304室</div>
+          </div>
+        </div>
+        <div class="d-flex flex-column align-center ml-15 mr-10">
+          <v-img :width="100" cover aspect-ratio="16/9" src="https://minio.citupro.com/dev/menduner/tianSenWxQrCode.png" style="height: 100px;"></v-img>
+          <div class="size mt-2">添加menduner企业微信</div>
         </div>
       </div>
       <div class="center">

+ 8 - 2
src/styles/personal/navBar.scss

@@ -9,10 +9,16 @@
 
 .vipBox {
   .avatar {
-    border: 1px solid gold;
+    border: 1px solid #b29701;
   }
   .userName {
-    color: #a18a0f;
+    font-weight: bold;
+    background: -webkit-linear-gradient(45deg, #333, #b29701);
+    background: linear-gradient(45deg, #333, #b29701);
+    -webkit-background-clip: text;
+    background-clip: text;
+    -webkit-text-fill-color: transparent;
+    // text-fill-color: transparent;
   }
 }
 

+ 7 - 2
src/views/recruit/enterprise/hirePosition/components/add.vue

@@ -70,8 +70,13 @@ const handleSave = async () => {
   const baseInfo = await baseInfoRef.value[0].getQuery()
   if (baseInfo === 'failed') return
   const requirement = await jobRequirementsRef.value[0].getQuery()
-  if (!baseInfo.expireTime || !baseInfo.hirePrice) {
-    Snackbar.warning('请将必填项填写完整')
+  if (!baseInfo.hirePrice) {
+    Snackbar.warning('请填写点数')
+    window.scrollTo({ top: 0, behavior: 'smooth' })
+    return
+  }
+  if (!baseInfo.expireTime && !baseInfo.soFar) {
+    Snackbar.warning('请选择职位过期时间')
     window.scrollTo({ top: 0, behavior: 'smooth' })
     return
   }

+ 35 - 2
src/views/recruit/enterprise/hirePosition/components/baseInfo.vue

@@ -34,6 +34,21 @@
         </v-menu>
         <v-btn v-if="showTemplateBtn" class="ml-3 half-button" color="primary" style="margin-top: 2px;" @click="useJobTemplate(item)">职位模板</v-btn>
       </template>
+      <template #expireTime="{ item }">
+        <div>
+          <v-checkbox-btn
+            v-model="soFar"
+            color="primary"
+            label="长期有效"
+            class="ml-2"
+            :disabled="false"
+            :style="`line-height: ${item.dense === 'default' ? 56 : item.dense === 'comfortable' ? 48 : 40 }px;`"
+            style="width: 110px;"
+            hide-details
+            @update:modelValue="v => handleSoFarChange(v, item)"
+          ></v-checkbox-btn>
+        </div>
+      </template>
     </CtForm>
 
     <CtDialog :visible="show" :widthType="1" titleClass="text-h6" title="众聘岗位规则说明" :footer="false" @close="show = false">
@@ -110,8 +125,10 @@ const items = ref({
       key: 'expireTime',
       value: null,
       format: 'YYYY-MM-DD',
+      disabledDate: true,
       labelWidth: 120,
-      label: '到期时间 *'
+      label: '到期时间 *',
+      slotName: 'expireTime',
     },
     {
       type: 'wangEditor',
@@ -152,6 +169,7 @@ watch(
         return
       }
       if (e.noParam) return
+      if (e.key === 'expireTime' && !val[e.key]) return handleSoFarChange(true, e)
       e.value = val[e.key]
       e.change && e.change(e.value)
     })
@@ -221,14 +239,24 @@ const hirePriceChange = (value, key) => {
   }
 }
 
+const soFar = ref(false)
+// 长期有效
+const handleSoFarChange = (bool, item) => {
+  soFar.value = bool
+  item.value = null
+  item.disabled = bool ? true : false
+  item.label = bool ? '到期时间' : '到期时间 *'
+}
+
 const getQuery = async () => {
   const { valid } = await formPageRef.value.formRef.validate()
   if (!valid) return
   const obj = {
+    soFar: soFar.value,
     hire: true
   }
   items.value.options.forEach(e => {
-    if (e.noParam) return
+    if (e.noParam || e.value === null) return
     else obj[e.key] = e.value
   })
   if (!obj.content) {
@@ -239,6 +267,11 @@ const getQuery = async () => {
     Snackbar.warning('请填写岗位要求')
     return 'failed'
   }
+
+if (!obj.expireTime && !soFar.value) {
+  Snackbar.warning('请填写到期时间')
+  return 'failed'
+}
   
   query = Object.assign(query, obj)
   return query

+ 2 - 2
src/views/recruit/enterprise/hirePosition/components/item.vue

@@ -32,9 +32,9 @@
       <div class="bottom pa-5 d-flex justify-space-between align-center">
         <div>
           {{ $t('position.refreshTime') }} :{{ timesTampChange(val.updateTime, 'Y-M-D') }}
-          <span v-if="val.expireTime">
+          <span v-if="tab === 1">
             <span class="septal-line"></span>
-            到期时间:{{ timesTampChange(val.expireTime, 'Y-M-D') }}
+            到期时间:{{ val.expireTime ? timesTampChange(val.expireTime, 'Y-M-D') : '长期有效' }}
           </span>
         </div>
         <div class="d-flex align-center">

+ 4 - 4
src/views/recruit/enterprise/hirePosition/components/jobRequirements.vue

@@ -105,7 +105,7 @@ const items = ref({
       items: []
     },
     {
-      type: 'text',
+      type: 'number',
       key: 'payFrom',
       value: '',
       col: 4,
@@ -122,13 +122,13 @@ const items = ref({
         },
         value => {
           const payTo = items.value.options.find(e => e.key === 'payTo').value
-          if (Number(value) < payTo ? Number(payTo) : 0) return true
+          if (!payTo || (Number(value) < payTo ? Number(payTo) : 0)) return true
           return '应低于最高薪资'
         }
       ]
     },
     {
-      type: 'text',
+      type: 'number',
       key: 'payTo',
       value: '',
       col: 4,
@@ -146,7 +146,7 @@ const items = ref({
         },
         value => {
           const payFrom = items.value.options.find(e => e.key === 'payFrom').value
-          if (Number(value) > payFrom ? Number(payFrom) : 0) return true
+          if (!payFrom || (Number(value) > payFrom ? Number(payFrom) : 0)) return true
           return '应高于最低薪资'
         }
       ]

+ 1 - 0
src/views/recruit/enterprise/positionManagement/components/baseInfo.vue

@@ -84,6 +84,7 @@ const items = ref({
       value: null,
       format: 'YYYY-MM-DD',
       label: '到期时间 *',
+      disabledDate: true,
       labelWidth: 120,
       slotName: 'expireTime',
     },

+ 2 - 2
src/views/recruit/enterprise/positionManagement/components/item.vue

@@ -48,9 +48,9 @@
       <div class="bottom pa-5 d-flex justify-space-between align-center">
         <div>
           {{ $t('position.refreshTime') }} :{{ timesTampChange(val.updateTime, 'Y-M-D') }}
-          <span v-if="val.expireTime">
+          <span>
             <span class="septal-line"></span>
-            到期时间:{{ timesTampChange(val.expireTime, 'Y-M-D') }}
+            到期时间:{{ val.expireTime ? timesTampChange(val.expireTime, 'Y-M-D') : '长期有效' }}
           </span>
         </div>
         <div class="d-flex">

+ 2 - 2
src/views/recruit/enterprise/positionManagement/components/jobRequirements.vue

@@ -122,7 +122,7 @@ const items = ref({
         },
         value => {
           const payTo = items.value.options.find(e => e.key === 'payTo').value
-          if (Number(value) < payTo ? Number(payTo) : 0) return true
+          if (!payTo || (Number(value) < payTo ? Number(payTo) : 0)) return true
           return '应低于最高薪资'
         }
       ]
@@ -146,7 +146,7 @@ const items = ref({
         },
         value => {
           const payFrom = items.value.options.find(e => e.key === 'payFrom').value
-          if (Number(value) > payFrom ? Number(payFrom) : 0) return true
+          if (!payFrom || (Number(value) > payFrom ? Number(payFrom) : 0)) return true
           return '应高于最低薪资'
         }
       ]

+ 6 - 6
src/views/recruit/personal/PersonalCenter/resume/online/components/jobIntention.vue

@@ -139,8 +139,8 @@ const items = ref({
       type: 'number',
       key: 'payFrom',
       value: '',
-      col: 6,
-      label: '期望薪资(最低要求) *',
+      col: 4,
+      label: '最低薪资 *',
       suffix: '元',
       rules: [
         value => {
@@ -153,7 +153,7 @@ const items = ref({
         },
         value => {
           const payTo = items.value.options.find(e => e.key === 'payTo').value
-          if (Number(value) < payTo ? Number(payTo) : 0) return true
+          if (!payTo || (Number(value) < payTo ? Number(payTo) : 0)) return true
           return '应低于最高薪资'
         }
       ]
@@ -162,8 +162,8 @@ const items = ref({
       type: 'number',
       key: 'payTo',
       value: '',
-      col: 6,
-      label: '期望薪资(最高要求) *',
+      col: 4,
+      label: '最高薪资 *',
       flexStyle: 'mx-3',
       suffix: '元',
       rules: [
@@ -177,7 +177,7 @@ const items = ref({
         },
         value => {
           const payFrom = items.value.options.find(e => e.key === 'payFrom').value
-          if (Number(value) > payFrom ? Number(payFrom) : 0) return true
+          if (!payFrom || (Number(value) > payFrom ? Number(payFrom) : 0)) return true
           return '应高于最低薪资'
         }
       ]

+ 13 - 6
src/views/recruit/personal/home/index.vue

@@ -25,12 +25,14 @@
   </div>
   <!-- 快速填写简易人才信息-弹窗 -->
   <simplePage v-if="showSimplePage" :closeable="true" closeText="暂时跳过" @close="handleInfoClose" @simpleInfoReady="handleUpdateInfo"></simplePage>
-  <v-dialog v-model="adDialog" max-width="700" :persistent="false">
-    <div style="cursor: pointer;" @click="adClick">
-      <v-img src="./img/adImg.jpg" :width="700" style="height: 400px;border-radius: 4px;"></v-img>
-    </div>
-    <div class="text-center mt-5">
-      <span style="color: white; font-size: 30px;" class="mdi mdi-close-circle-outline cursor-pointer" @click="adDialog = false"></span>
+  <v-dialog
+    v-model="adDialog"
+    max-width="900"
+    :persistent="false"
+  >
+    <div style="cursor: pointer; margin: 0 auto; position: relative;" @click="adClick">
+      <v-img src="./img/adImg.jpg" :width="adImgWidth" style="height: auto;border-radius: 4px;"></v-img>
+      <span style="color: white; font-size: 40px; position: absolute; right: 0px; top: 0px;" class="mdi mdi-close-circle-outline cursor-pointer px-3" @click="adDialog = false"></span>
     </div>
   </v-dialog>
 </template>
@@ -84,6 +86,11 @@ const handleOpenAdvertise = () => {
   window.open('https://mp.weixin.qq.com/s/Us_cWsRpGQBnLFBrZGynLA')
 }
 
+const adImgWidth = ref(document?.documentElement?.clientWidth ?
+  Math.floor(document.documentElement.clientWidth/2.2) > 500 ?
+  Math.floor(document.documentElement.clientWidth/2.2) : 500
+  : 900
+)
 
 const adDialog = ref(false)
 onMounted(() => {