Przeglądaj źródła

Merge branch 'dev' of https://git.citupro.com/zhengnaiwen_citu/menduner into dev

lifanagju_citu 6 miesięcy temu
rodzic
commit
3afebc9d4e

+ 2 - 2
src/components/Position/longCompany.vue

@@ -7,7 +7,7 @@
             <v-img :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
           </div>
           <h3 :class="{'default-active': item.active }" class="cursor-pointer" @click="handleClickEnterprise(item, 'briefIntroduction')">{{ item.anotherName }}</h3>
-          <p>{{ item.industryName }}<span v-if="item.scaleName" class="mx-2">|</span>{{ item.scaleName }}</p>
+          <p>{{ item.industryName }}<span v-if="item.industryName && item.scaleName" class="mx-2">|</span>{{ item.scaleName }}</p>
         </div>
         <div v-if="item.active">
           <v-btn class="half-button ml-3" color="primary" size="small" @click.stop="handleCancel(item)">取消收藏</v-btn>
@@ -17,7 +17,7 @@
         <div class="chipBox">
           <div class="d-inline-block" v-for="(val, i) in item.welfareList" :key="i">
             <span>{{ val }}</span>
-            <span class="mx-1" v-if="i !== item.welfareList.length - 1 && val && item.welfareList[i + 1]">|</span>
+            <span class="septal-line" v-if="i !== item.welfareList.length - 1 && val && item.welfareList[i + 1]"></span>
           </div>
         </div>
         <div class="position" @click="handleClickEnterprise(item, 'recruitmentPositions')">

+ 2 - 1
src/layout/personal/navBar.vue

@@ -33,7 +33,8 @@
         
         <div class="d-flex user-nav">
           <div class="btns d-flex align-center" v-if="!getToken() && showLoginBtn">
-            <v-btn class="half-button" border color="primary" size="small" @click="handleLogin">{{ $t('login.loginOrRegister') }}</v-btn>
+            <!-- <v-btn class="half-button" border color="primary" size="small" @click="handleLogin">{{ $t('login.loginOrRegister') }}</v-btn> -->
+            <v-btn color="primary" style="color: #fff !important; background-color: #00897B;" @click="handleLogin">{{ $t('login.loginOrRegister') }}</v-btn>
           </div>
           
           <!-- 头像用户名 -->

+ 17 - 20
src/styles/personal/navBar.css

@@ -7,6 +7,23 @@
   }
 }
 
+.vipBox .avatar {
+  border: 1px solid #b29701;
+}
+
+.vipBox .avatar:hover {
+  border: 2px solid var(--v-primary-base);
+}
+
+.vipBox .userName {
+  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;
+}
+
 .user-nav .nav-resume-tools {
   display: inline-block;
   vertical-align: middle;
@@ -126,26 +143,6 @@
   font-weight: 700;
 }
 
-.user-nav .btns .btn-outline {
-  border-radius: 8px;
-  text-align: center;
-  font-size: 14px;
-  height: 26px;
-  line-height: 26px;
-  min-width: 0;
-  padding: 0 11px;
-  margin-left: 14px;
-  background-color: transparent;
-}
-
-.user-nav .btn {
-  display: inline-block;
-  box-sizing: content-box;
-  border: 1px solid var(--v-primary-base);
-  letter-spacing: 1px;
-  cursor: pointer;
-}
-
 .user-nav a {
   text-decoration: none;
 }

Plik diff jest za duży
+ 0 - 0
src/styles/personal/navBar.min.css


+ 14 - 14
src/styles/personal/navBar.scss

@@ -140,22 +140,22 @@
   // line-height: 49px;
 }
 .user-nav .btns .btn-outline {
-  border-radius: 8px;
-  text-align: center;
-  font-size: 14px;
-  height: 26px;
-  line-height: 26px;
-  min-width: 0;
-  padding: 0 11px;
-  margin-left: 14px;
-  background-color: transparent;
+  // border-radius: 8px;
+  // text-align: center;
+  // font-size: 14px;
+  // height: 26px;
+  // line-height: 26px;
+  // min-width: 0;
+  // padding: 0 11px;
+  // margin-left: 14px;
+  // background-color: transparent;
 }
 .user-nav .btn {
-  display: inline-block;
-  box-sizing: content-box;
-  border: 1px solid var(--v-primary-base);
-  letter-spacing: 1px;
-  cursor: pointer;
+  // display: inline-block;
+  // box-sizing: content-box;
+  // border: 1px solid var(--v-primary-base);
+  // letter-spacing: 1px;
+  // cursor: pointer;
 }
 .user-nav a {
   text-decoration: none;

+ 2 - 2
src/views/common/loginDialog.vue

@@ -32,8 +32,8 @@
           {{ $t('login.loginOrRegister') }}
         </v-btn>
         <div class="login-tips mt-3 font-size-14">
-            <v-icon v-if="isAgree" size="18" color="primary" class="mr-2" @click="isAgree = !isAgree">mdi-check-circle</v-icon>
-            <v-icon v-else size="18" color="grey" class="mr-2" @click="isAgree = !isAgree">mdi-circle-outline</v-icon>
+            <v-icon v-if="isAgree" size="25" color="primary" class="mr-1" @click="isAgree = !isAgree">mdi-check-circle</v-icon>
+            <v-icon v-else size="25" color="grey" class="mr-1" @click="isAgree = !isAgree">mdi-circle-outline</v-icon>
             {{ $t('login.agreeLogin') }}
             <span class="color" style="cursor: pointer;" @click="windowOpen('/userAgreement')"> [{{ $t('login.userAgreement') }}] </span>和
             <span class="color" style="cursor: pointer;" @click="windowOpen('/privacyPolicy')">[{{ $t('login.privacyPolicy') }}]</span>

+ 2 - 2
src/views/login/index.vue

@@ -61,8 +61,8 @@
             {{ $t('login.login') }}
           </v-btn>
           <div class="login-tips mt-3">
-              <v-icon v-if="isAgree" size="18" color="primary" class="mr-2" @click="isAgree = !isAgree">mdi-check-circle</v-icon>
-              <v-icon v-else size="18" color="grey" class="mr-2" @click="isAgree = !isAgree">mdi-circle-outline</v-icon>
+              <v-icon v-if="isAgree" size="25" color="primary" class="mr-1" @click="isAgree = !isAgree">mdi-check-circle</v-icon>
+              <v-icon v-else size="25" color="grey" class="mr-1" @click="isAgree = !isAgree">mdi-circle-outline</v-icon>
               {{ $t('login.agreeLogin') }}
               <span class="color" style="cursor: pointer;" @click="windowOpen('/userAgreement')"> [{{ $t('login.userAgreement') }}] </span>和
               <span class="color" style="cursor: pointer;" @click="windowOpen('/privacyPolicy')">[{{ $t('login.privacyPolicy') }}]</span>

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

@@ -42,7 +42,7 @@
         </div>
         <div class="d-flex align-center">
           <span v-if="val.status === '1' && tab === 2" class="cursor-pointer actions" @click="toPay(val)">职位已关闭,点击激活职位</span>
-          <span v-if="(val.status-0) === 99" class="cursor-pointer color-primary" @click="toPay(val)">去支付</span>
+          <span v-if="(val.status-0) === 99" class="cursor-pointer color-primary" @click="toPay(val)">发布</span>
           <span v-if="(val.status - 0) !== 99 && val.status !== '1' && tab === 1" class="cursor-pointer actions" @click="handleAction(0, val)">{{ $t('common.close') }}</span>
           <span v-if="tab !== 3 && val.edit" class="lines"></span>
           <span v-if="tab !== 3 && val.edit" class="cursor-pointer actions" @click="handleEdit(val)">编辑</span>

+ 1 - 1
src/views/recruit/enterprise/hirePosition/index.vue

@@ -62,7 +62,7 @@ const exportLoading = ref(false)
 const tab = ref(1)
 
 const tabList = [
-  { label: '待支付', value: 0, status: 99 },
+  { label: '待发布', value: 0, status: 99 },
   { label: t('position.recruitmentInProgress'), value: 1, status: 0 },
   { label: t('position.closed'), value: 2, status: 1 },
   { label: t('position.expiredPosition'), value: 3 }

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

@@ -161,8 +161,9 @@ const paySuccess = async () => {
 
 const handlePayClose = () => {
   Snackbar.warning('您已取消支付')
+  itemData.value = {}
   showConfirmPaymentDialog.value = false
-  handleCancel()
+  router.push({ path: '/recruit/enterprise/position', query: { key: 0 }})
 }
 
 // 获取编辑的职位详情

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

@@ -60,7 +60,7 @@
               <span class="cursor-pointer actions" @click="handleAction(0, '', val)">{{ $t('common.close') }}</span>
             </div>
             <!-- <div v-if="tab === 3" class="cursor-pointer actions" @click="handleUpdateExpireTime(val)">修改到期时间</div> -->
-            <span v-if="(val.status-0) === 99" class="cursor-pointer color-primary" @click="toPay(val)">去支付</span>
+            <span v-if="(val.status-0) === 99" class="cursor-pointer color-primary" @click="toPay(val)">发布</span>
             <span class="lines" v-if="tab !== 2 && tab !== 3"></span>
             <span v-if="tab === 2" class="cursor-pointer actions" @click="handleAction(1, '', val, val)">激活</span>
             <span class="lines" v-if="tab === 2"></span>
@@ -190,7 +190,15 @@ const spuId = ref('')
 const spuName = ref('')
 const operateObj = ref({})
 // 支付
-const toPay = (val) => {
+const toPay = async (val) => {
+  // 待发布且有额度的激活职位即可
+  if (baseInfo.value.entitlement?.publishJobCount > 0) {
+    await enableJobAdvertised([val.id])
+    Snackbar.success('发布成功')
+    emit('refresh', 1)
+    return
+  }
+
   operateObj.value = val
   spuId.value = val.id || ''
   spuName.value = val.name || ''

+ 3 - 1
src/views/recruit/enterprise/positionManagement/index.vue

@@ -75,7 +75,7 @@ const exportLoading = ref(false)
 const uploadFile = ref()
 const tab = ref(1)
 const tabList = [
-  { label: '待支付', value: 0, status: 99 },
+  { label: '待发布', value: 0, status: 99 },
   { label: t('position.recruitmentInProgress'), value: 1, status: 0 },
   { label: t('position.closed'), value: 2, status: 1 },
   { label: t('position.expiredPosition'), value: 3 }
@@ -85,6 +85,8 @@ store.$subscribe((mutation, state) => {
   if (Object.keys(state.entBaseInfo).length) baseInfo.value = state.entBaseInfo
 })
 
+if (router.currentRoute.value.query?.key) tab.value = Number(router.currentRoute.value.query.key)
+
 const items = ref([])
 const textItem = ref({
   type: 'text',

+ 1 - 1
src/views/recruit/enterprise/tradingOrder/components/trading/balance.vue

@@ -24,7 +24,7 @@ import { getEnterpriseCurrencyPage } from '@/api/recruit/enterprise/member/point
 const dataList = ref([])
 const headers = [
   { title: '交易类型', key: 'title', sortable: false },
-  { title: '支出M豆', key: 'price', value: item => (item.price / 100) + 'M豆', sortable: false },
+  { title: '交易M豆', key: 'price', value: item => (item.price / 100) + 'M豆', sortable: false },
   { title: '交易后剩余M豆', key: 'balance', value: item => (item.balance / 100) + 'M豆', sortable: false },
   { title: '交易时间', key: 'createTime', value: item =>  timesTampChange(item.createTime), sortable: false }
 ]

+ 2 - 2
src/views/recruit/personal/PersonalCenter/jobFeedback/components/interview/item.vue

@@ -23,10 +23,10 @@
       </div>
     </div>
     <div class="info-content">
-        <div class="font-size-16 color-333 mr-5" style="width: 322px;">
+        <div class="font-size-16 color-333 mr-5" style="width: 470px;">
           <div v-if="tab === '1' || tab === '98'" class="font-size-13 mb-1" :style="{'color': tab === '1' ? 'var(--v-primary-base)' : 'var(--v-error-base)'}">您已于{{ timesTampChange(val.updateTime, 'Y-M-D h:m') }}{{ tab === '1' ? '接受' : '拒绝'}}了此面试邀请</div>
           <div>面试时间:{{ timesTampChange(val.time, 'Y-M-D h:m') }}</div>
-          <div class="mt-3 ellipsis" style="max-width: 322px;">面试地点:{{ val.address }}</div>
+          <div class="mt-3 ellipsis" style="max-width: 470px;">面试地点:{{ val.address }}</div>
         </div>
         <div class="job-info color-666">
           <div class="job-name ellipsis" style="max-width: 410px;">

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

@@ -115,7 +115,6 @@
 import CtForm from '@/components/CtForm'
 import Snackbar from '@/plugins/snackbar'
 import { getDict } from '@/hooks/web/useDictionaries'
-// import { timesTampChange } from '@/utils/date'
 import { updatePersonAvatar, saveResumeBasicInfo } from '@/api/recruit/personal/resume'
 import { useUserStore } from '@/store/user'
 import { uploadFile } from '@/api/common'
@@ -123,7 +122,7 @@ import { getUserAvatar } from '@/utils/avatar'
 import { useI18n } from '@/hooks/web/useI18n'
 import portrait from './portrait.vue'
 import { checkEmail } from '@/utils/validate'
-import { ref } from 'vue';
+import { ref } from 'vue'
 defineOptions({name: 'resume-components-basicInfo'})
 const emit = defineEmits(['complete'])
 
@@ -394,7 +393,6 @@ const handleSave = async () => {
   if (!valid) return
   const obj = {}
   items.value.options.forEach(e => {
-    // if (e.type === 'datepicker') obj[e.key] = getTimeStamp(e.value)
     obj[e.key] = e.value
   })
   if (!obj.sex) return Snackbar.warning('请先选择您的性别')
@@ -407,26 +405,16 @@ const handleSave = async () => {
 
 }
 
-// 获取字典内容
-const getDictData = async (dictTypeName) => {
-  const item = items.value.options.find(e => e.dictTypeName === dictTypeName)
-  if (item) {
-    const { data } = await getDict(dictTypeName)
-    item.items = data
-  }
-}
-
-items.value.options.forEach((e, index) => {
+items.value.options.forEach(async (e, index) => {
   if ((index + 2) % 2 === 0) e.flexStyle = 'mr-3'
-  if (e.dictTypeName) getDictData(e.dictTypeName) // 查字典set options
+  if (e.dictTypeName) {
+    const { data } = await getDict(e.dictTypeName)
+    e.items = data
+  }
   const infoExist = baseInfo.value && Object.keys(baseInfo.value).length
   if (infoExist && baseInfo.value[e.key]) e.value = baseInfo.value[e.key]
-  // 日期相关
-  // if (e.type === 'datepicker') e.value = timesTampChange(e.value, 'Y-M-D')
   if (e.value === undefined || e.value === null || e.value === '') completeStatus = false
 })
-// 完成度展示
-  
 getDict('areaTreeData', null, 'areaTreeData').then(({ data }) => {
   data = data?.length && data || []
   if (!data?.length) return console.error('areaTreeData获取失败!')

+ 3 - 3
src/views/recruit/personal/PersonalCenter/resume/online/index.vue

@@ -16,9 +16,9 @@
     </div>
     <div class="pt-3 contentBox px-1" id="contentBox" ref="scrollBox">
       <component
-        v-for="(val, index) in items"
-        :key="val.id"
-        :is="paths[index]"
+        v-for="(val, index) in paths"
+        :key="index"
+        :is="val"
         @complete="complete"
       />
     </div>

+ 2 - 2
src/views/register/person.vue

@@ -9,8 +9,8 @@
       <div v-if="!isMobile" class="font-size-14 tips color-primary cursor-pointer text-end" @click="router.push('/login')">已有账号?去登录</div>
       <v-btn :loading="loading" color="primary" class="white--text mt-5" min-width="370" @click="handleRegister">{{ isCompany ? '下一步' : '注册' }}</v-btn>
       <div class="login-tips mt-3" v-if="!isCompany">
-        <v-icon v-if="isAgree" size="18" color="primary" class="mr-2" @click="isAgree = !isAgree">mdi-check-circle</v-icon>
-        <v-icon v-else size="18" color="grey" class="mr-2" @click="isAgree = !isAgree">mdi-circle-outline</v-icon>
+        <v-icon v-if="isAgree" size="25" color="primary" class="mr-1" @click="isAgree = !isAgree">mdi-check-circle</v-icon>
+        <v-icon v-else size="25" color="grey" class="mr-1" @click="isAgree = !isAgree">mdi-circle-outline</v-icon>
         点击注册即代表您同意
         <span class="color" style="cursor: pointer;" @click="windowOpen('/userAgreement')"> [{{ $t('login.userAgreement') }}] </span>和
         <span class="color" style="cursor: pointer;" @click="windowOpen('/privacyPolicy')">[{{ $t('login.privacyPolicy') }}]</span>

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików