Преглед на файлове

Merge branch 'master' of https://git.citupro.com/zhengnaiwen_citu/menduner-uniapp

lifanagju_citu преди 6 месеца
родител
ревизия
010e08da16

+ 4 - 2
components/PositionList/index.vue

@@ -9,7 +9,7 @@
             <view style="display: flex;align-items: center;">
               <view v-if="item.job?.hire" class="iconfont icon-a-1_zhaopin ss-m-r-10" style="color: #e03506; font-size: 25px;"></view>
               <rich-text v-if="item.job?.name?.indexOf('style') !== -1" class="job-name" :nodes="item.job.name"></rich-text>
-              <view v-else class="job-name">{{item.job?.name}}</view>
+              <view v-else class="job-name">{{ formatName(item.job?.name) }}</view>
             </view>
           </view>
           <!-- 薪酬、工作地、学历、工作经验 -->
@@ -58,7 +58,7 @@
             <image class="enterAvatar ml" :src="item.enterprise?.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></image>
           </view>
           <view class="ss-m-l-35">
-            <view class="mr">{{ item.enterprise?.anotherName || item.enterprise.name }}</view>
+            <view class="mr">{{ formatName(item.enterprise?.anotherName || item.enterprise.name) }}</view>
             <span class="color-999">{{ item.enterprise?.industryName || '' }}</span>
             <span class="divider tag-gap1" v-if="item.enterprise?.industryName && item.enterprise?.scaleName"> | </span>
             <span class="mr color-999">{{ item.enterprise?.scaleName || '' }}</span>
@@ -77,6 +77,8 @@
 <script setup>
 import { commissionCalculation } from '@/utils/position'
 import { timesTampChange } from '@/utils/date'
+import { formatName } from '@/utils/getText'
+
 const props = defineProps({
   list: { type: Array, default: () => [] },
   noMore: { type: Boolean, default: false },

+ 6 - 0
pages.json

@@ -297,6 +297,12 @@
 				},
 				{
 					"path": "about/index",
+					"style": {
+						"navigationBarTitleText": "了解门墩儿"
+					}
+				},
+				{
+					"path": "contactUs/index",
 					"style": {
 						"navigationBarTitleText": "联系我们"
 					}

+ 3 - 2
pages/index/communicate.vue

@@ -23,7 +23,7 @@
 						<view class="box-content-names">
 							<view class="name">
 								{{ item.thatName }}
-								<text class="nameSub">{{ item.enterpriseAnotherName }}</text>
+								<text class="nameSub">{{ formatName(item.enterpriseAnotherName) }}</text>
 								<span class="line" v-if="item.postNameCn && item.enterpriseAnotherName"></span>
 								<text class="nameSub">{{ item.postNameCn }}</text>
 							</view>
@@ -52,6 +52,7 @@ import { getUserAvatar } from '@/utils/avatar'
 import { timesTampChange } from '@/utils/date'
 import { userStore } from '@/store/user'
 import { useIMStore } from '@/store/im'
+import { formatName } from '@/utils/getText'
 
 const IM = useIMStore()
 
@@ -111,7 +112,7 @@ const handleTo = (item) => {
 		id: userInfoVo?.userInfoResp?.userId,
 		name: thatName,
 		postName: postNameCn,
-		enterpriseName: enterpriseAnotherName,
+		enterpriseName: formatName(enterpriseAnotherName),
 		enterpriseId: userInfoVo?.userInfoResp?.enterpriseId,
 		channelID: channel_id,
 		channelType: channel_type,

+ 2 - 1
pages/index/crowdsourcing.vue

@@ -48,6 +48,7 @@ import { getJobAdvertisedHire } from '@/api/position.js'
 import { dealDictArrayData } from '@/utils/position.js'
 import PositionList from '@/components/PositionList'
 import { getWebContent } from '@/api/common'
+import { formatName } from '@/utils/getText'
 import { onShow, onLoad, onShareAppMessage, onShareTimeline } from '@dcloudio/uni-app'
 // 设置自定义tabbar选中值
 onShow(() => {
@@ -138,7 +139,7 @@ async function getList () {
 				enterprise: {
 					welfareList: e.tagList,
 					logoUrl: e.logoUrl,
-					anotherName: e.anotherName,
+					anotherName: formatName(e.anotherName),
 					industryName: e.industryName,
 					scaleName: e.scaleName
 				}

+ 1 - 0
pages/index/my.vue

@@ -112,6 +112,7 @@ const list = ref([
 	{	title: '新用户邀请记录',	path: '/pagesB/inviteRecord/index'	},
 	{ title: '门墩儿商城', appId: 'wx6decdf12f9e7a061' },
 	{ title: '我要招聘', key: 'recruit' },
+	{ title: '联系我们', path: '/pagesB/contactUs/index' },
 	{ title: '协议中心', path: '/pagesB/agreement/index', open: true }
 ])
 watch(

+ 1 - 1
pages/index/position.vue

@@ -124,7 +124,7 @@ const gridList = [
   { label: '精选企业', icon: '/static/img/enterprise.png', path: '/pagesB/recommendEnterprise/index' },
   { label: '酒店英语', icon: '/static/img/group.png', path: '' },
   { label: '早报资讯', icon: '/static/img/information.png', id: 'morningNews' },
-  { label: '联系我们', icon: '/static/img/contact.png', path: '/pagesB/about/index' }
+  { label: '了解门墩儿', icon: '/static/img/contact.png', path: '/pagesB/about/index' }
 ]
 
 // 跳转企业详情

+ 4 - 3
pagesA/chart/index.vue

@@ -6,7 +6,7 @@
         <text class="subText">
           {{ info?.postName && info?.postName !== 'null' && info?.postName !== 'undefined' ? info.postName : '' }}
           <text v-if="info?.postName && info?.postName !== 'null' && info?.postName !== 'undefined' && info.enterpriseName" class="gun">|</text>
-          {{ info.enterpriseName }}
+          {{ formatName(info.enterpriseName) }}
         </text>
       </view>
       <!-- <view class="box-top-content" v-if="interview.length">
@@ -46,7 +46,7 @@
           <view class="box-main-time">{{ timesTampChange(+(val.timestamp.padEnd(13, '0'))) }}</view>
           <template v-if="val.payload?.type === 102">
             <view class="jobCard">
-              <view class="jobCard-title"> {{ val.payload?.content?.positionInfo?.name }}</view>
+              <view class="jobCard-title"> {{ formatName(val.payload?.content?.positionInfo?.name) }}</view>
               <view
                 v-if="!val.payload?.content?.positionInfo?.payFrom && !val.payload?.content?.positionInfo?.payTo"
                 class="jobCard-subtitle">
@@ -79,7 +79,7 @@
                 </v-avatar>
                 {{ val.payload?.content?.positionInfo?.contact?.name }}
                 {{ val.payload?.content?.positionInfo?.contact?.postNameCn }}
-                {{ val.payload?.content?.positionInfo?.enterprise?.anotherName || val.payload?.content?.positionInfo?.enterprise?.name }}
+                {{ formatName(val.payload?.content?.positionInfo?.enterprise?.anotherName || val.payload?.content?.positionInfo?.enterprise?.name) }}
               </view>
               <div class="jobCard-subtitle text-right">
                 地址:{{ val.payload?.content?.positionInfo?.address }}
@@ -217,6 +217,7 @@ import { initConnect, send, initChart, getMoreMessages, toChannel } from '@/hook
 import { getDict } from '@/hooks/useDictionaries'
 import { timesTampChange } from '@/utils/date'
 import { getUserAvatar } from '@/utils/avatar'
+import { formatName } from '@/utils/getText'
 import { preview } from '@/utils/preview'
 import { getPersonResumeCv, saveResume } from '@/api/user'
 import { uploadFile } from '@/api/file'

+ 2 - 1
pagesA/collect/company.vue

@@ -7,7 +7,7 @@
             <view class="d-flex align-center">
               <image :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" style="width: 50px; height: 50px; object-fit: contain"></image>
               <view style="flex: 1;" class="ss-m-l-30">
-                <view class="enterprise-name ellipsis">{{ item.name }}</view>
+                <view class="enterprise-name ellipsis">{{ formatName(item.anotherName || item.name) }}</view>
                 <view class="ss-m-y-15 font-size-12">
                   <span class="tag-gap color-666">
                     <span>{{item.industryName }}</span>
@@ -43,6 +43,7 @@
 import { ref } from 'vue'
 import { getSubscribeEnterprise } from '@/api/user'
 import { dealDictArrayData } from '@/utils/position'
+import { formatName } from '@/utils/getText'
 
 const items = ref([])
 const status = ref('more')

+ 2 - 1
pagesA/interview/item.vue

@@ -15,7 +15,7 @@
       <!-- 职位信息 -->
       <view class="list-shape">
         <view class="titleBox my-5" @click="toDetail(1, item)">
-          <span style="font-size: 16px;font-weight: 700; color: #345768;">{{item.job?.name}}</span>
+          <span style="font-size: 16px;font-weight: 700; color: #345768;">{{ formatName(item.job?.name) }}</span>
           <span v-if="!item.job?.payFrom && !item.job?.payTo" class="salary-text">面议</span>
           <span v-else class="salary-text">{{ item.job?.payFrom }}-{{ item.job?.payTo }}{{ item.job?.payName ? '/' + item.job?.payName : '' }}</span>
         </view>
@@ -40,6 +40,7 @@
 
 <script setup>
 import { timesTampChange } from '@/utils/date'
+import { formatName } from '@/utils/getText'
 
 const emits = defineEmits(['action'])
 const props = defineProps({

+ 4 - 2
pagesA/recommendation/list.vue

@@ -15,9 +15,9 @@
 				<span v-else>面议</span>
 			</view>
 			<view class="list-company" style="border-radius: 0 0 12px 12px;">
-				<text>{{ item.enterprise?.anotherName }}</text>
+				<text>{{ formatName(item.enterprise?.anotherName) }}</text>
 				<text>{{ item.enterprise?.anotherName && item.job?.name ? ' · ' : '' }}</text>
-				<text>{{ item.job?.name }}</text>
+				<text>{{ formatName(item.job?.name) }}</text>
 			</view>
 		</view>
 	</view>
@@ -25,6 +25,8 @@
 
 <script setup>
 import { timesTampChange } from '@/utils/date'
+import { formatName } from '@/utils/getText'
+
 const props = defineProps({
 	items: {
 		type: Array,

+ 2 - 1
pagesA/resume/index.vue

@@ -21,7 +21,7 @@
 			<image src="https://minio.citupro.com/dev/static/nodata.png" mode="widthFix" style="width: 100vw;height: 100vh;"></image>
 		</view>
     <view class="bottom-sticky flex-column">
-      <button class="recomm-button" style="margin-bottom: 0;" :loading="analysisLoading" @click="handleResumeAnalysis">开始解析</button>
+      <!-- <button class="recomm-button" style="margin-bottom: 0;" :loading="analysisLoading" @click="handleResumeAnalysis">开始解析</button> -->
       <button class="recomm-button" style="margin-bottom: 0;" @click="handleUpload">微信聊天文件上传</button>
       <view class="color-primary font-size-14 ss-m-b-25 ss-m-t-10" style="text-align: center;">上传文件大小不能超过20MB</view>
     </view>
@@ -39,6 +39,7 @@ import { getPersonResumeCv, saveResume, deleteResume } from '@/api/user'
 import { uploadFile } from '@/api/file'
 import { timesTampChange } from '@/utils/date'
 import { preview } from '@/utils/preview'
+
 const emit = defineEmits(['submit'])
 const props = defineProps({
   resumeAnalysis: { type: Boolean, default: false }

+ 2 - 1
pagesA/seenMe/index.vue

@@ -17,7 +17,7 @@
             <view class="d-flex align-center">
               <image :src="item.enterprise.logoUrl" style="width: 50px; height: 50px;"></image>
               <view style="flex: 1;" class="ss-m-l-30">
-                <view class="enterprise-name ellipsis">{{ item.enterprise.anotherName || item.enterprise.name }}</view>
+                <view class="enterprise-name ellipsis">{{ formatName(item.enterprise.anotherName || item.enterprise.name) }}</view>
                 <!-- 行业规模 -->
                 <view class="ss-m-y-15 font-size-12">
                   <span class="tag-gap color-666">
@@ -58,6 +58,7 @@ import { getInterestedMePage } from '@/api/user'
 import { dealDictObjData } from '@/utils/position'
 import { getUserAvatar } from '@/utils/avatar'
 import { timesTampChange } from '@/utils/date'
+import { formatName } from '@/utils/getText'
 
 const status = ref('more')
 const queryParams = ref({

+ 4 - 3
pagesB/companyDetail/index.vue

@@ -4,7 +4,7 @@
       <view class="f-horizon">
         <image style="width: 80px; height: 80px;" :src="info.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></image>
         <view class="f-straight ss-m-l-10" style="flex: 1;position: relative;">
-          <view class="title-des font-weight-bold" style="max-width: 45vw;">{{ info.anotherName }}</view>
+          <view class="title-des font-weight-bold" style="max-width: 60vw;">{{ formatName(info.anotherName || info.name) }}</view>
           <view class="color-999 ellipsis font-size-14" style="max-width: 60vw;">
             <span>{{ !!info.industryName? info.industryName : ''}}</span>
             <span class="ss-m-x-10" v-if="info?.industryName && info?.scaleName"> | </span>
@@ -119,6 +119,7 @@ import { getJobAdvertisedSearch } from '@/api/position'
 import { getAccessToken } from '@/utils/request'
 import PositionList from '@/components/PositionList'
 import { checkIsImage } from '@/utils'
+import { formatName } from '@/utils/getText'
 
 const current = ref(0)
 const items = ['企业介绍', '招聘职位']
@@ -172,7 +173,7 @@ const handleFollow = async () => {
 // 企业详情
 const getData = async () => {
   const { data } = await getEnterpriseDetails(id.value)
-  title.value = data.enterprise.anotherName || data.enterprise.name
+  title.value = formatName(data.enterprise.anotherName || data.enterprise.name)
   info.value = data.enterprise ? { ...data, ...dealDictObjData({}, data.enterprise) } : data
   getCollectionStatus()
 }
@@ -242,7 +243,7 @@ const videoErrorCallback = (e) =>{
 <style scoped lang="scss">
 .title-des {
   color: #37576c;
-  font-size: 20px;
+  font-size: 17px;
   margin-right: 30px;
   margin-top: 1px;
   vertical-align: middle;

+ 11 - 0
pagesB/contactUs/index.vue

@@ -0,0 +1,11 @@
+<template>
+  <ContactUs :showTitle="false" />
+</template>
+
+<script setup>
+// 联系我们
+import ContactUs from '../headhunting/components/contact.vue'
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 7 - 1
pagesB/headhunting/components/contact.vue

@@ -1,6 +1,6 @@
 <template>
   <view class="main">
-    <uni-title type="h1" title="联系我们" align="center"></uni-title>
+    <uni-title v-if="showTitle" type="h1" title="联系我们" align="center"></uni-title>
     <view class="main-footer">
       <uni-title type="h3" title="欢迎关注,了解门墩儿的新动态。"></uni-title>
       <view class="subTitle">门墩儿在所有主流社交媒体都有账号。欢迎关注我们,以便了解关于发展趋势和领导力问题的最新见解。</view>
@@ -21,6 +21,12 @@
 </template>
 
 <script setup>
+	defineProps({ 
+		showTitle: {
+			type: Boolean,
+			default: true
+		}
+	})
 
 </script>
 

+ 4 - 2
pagesB/inviteRecord/list.vue

@@ -16,9 +16,9 @@
 				{{ item.job?.payTo }}
 			</view>
 			<view class="list-company">
-				<text>{{ item.enterprise?.anotherName }}</text>
+				<text>{{ formatName(item.enterprise?.anotherName) }}</text>
 				<text>{{ item.enterprise?.anotherName && item.job?.name ? ' · ' : '' }}</text>
-				<text>{{ item.job?.name }}</text>
+				<text>{{ formatName(item.job?.name) }}</text>
 			</view>
 		</view>
 	</view>
@@ -26,6 +26,8 @@
 
 <script setup>
 import { timesTampChange } from '@/utils/date'
+import { formatName } from '@/utils/getText'
+
 const props = defineProps({
 	items: {
 		type: Array,

+ 48 - 22
pagesB/positionDetail/index.vue

@@ -5,7 +5,7 @@
         <view v-if="loading" class="vertical80-center">{{ loadingText }}</view>
         <view v-else>
           <!-- 职位名称 + 薪资 -->
-          <h2 class="JobName">{{ info.name }}</h2>
+          <h2 class="JobName">{{ formatName(info.name) }}</h2>
           <view style="text-align: end;">
             <span v-if="!info.payFrom && !info.payTo" class="salary w-600">面议</span>
             <span v-else class="salary w-600">{{ info.payFrom }}-{{ info.payTo }}/{{ positionInfo.payName }}</span>
@@ -50,7 +50,7 @@
             </view>
             <view >
               <view class="contact-name">{{ info.contact?.name }}</view>
-              <view class="contact-info">{{ info.enterprise?.anotherName || info.enterprise?.name }} {{ info.contact?.postNameCn ? '· ' + info.contact?.postNameCn : '' }}</view>
+              <view class="contact-info">{{ formatName(info.enterprise?.anotherName || info.enterprise?.name) }} {{ info.contact?.postNameCn ? '· ' + info.contact?.postNameCn : '' }}</view>
             </view>
           </view>
           <!-- 岗位职责 -->
@@ -182,6 +182,18 @@
       </uni-popup-share>
     </uni-popup>
 
+    <!-- 当前是赏金职位时,询问是否登录,不登录则没有赏金 -->
+    <uni-popup ref="loginPopup" type="dialog">
+			<uni-popup-dialog 
+        type="warn" 
+        cancelText="取消" 
+        confirmText="登录" 
+        title="系统提示" 
+        content="当前为赏金职位,不登录进行分享将无法获得赏金,是否登录?" 
+        @confirm="handleLoginConfirm"
+				@close="handleLoginClose" />
+		</uni-popup>
+
     <view class="hideCanvasView">
       <canvas class="shareCanvas" canvas-id="shareCanvas" style="width: 452px; height: 362px;"></canvas>
     </view>
@@ -212,6 +224,7 @@ import { onLoad, onShareAppMessage, onShow } from '@dcloudio/uni-app'
 import { prologue, defaultText } from '@/hooks/useIM'
 import { userStore } from '@/store/user'
 import { getSubscribeTemplateList } from '@/api/common'
+import { formatName } from '@/utils/getText'
 
 const useUserStore = userStore()
 const sharePopup = ref()
@@ -331,7 +344,7 @@ const createPoster = async () => {
   
   // 岗位名称
   context.setFillStyle('#333333')
-  dealWords(context, 25, positionInfo.value?.name, 350, 40, 30, 2)
+  dealWords(context, 25, formatName(positionInfo.value?.name), 350, 40, 30, 2)
 
   // 工作地区、工作经验、学历要求
   context.setFillStyle('#6c6e7b')
@@ -362,7 +375,7 @@ const createPoster = async () => {
 
   // 企业名称
   context.setFillStyle('#000000')
-  dealWords(context, 25, anotherName, 250, 150, 210, 2, true)
+  dealWords(context, 25, formatName(anotherName), 250, 150, 210, 2, true)
 
   // 企业行业类型、规模
   context.setFontSize(20)
@@ -564,8 +577,8 @@ async function handleSend () {
 		postName: info.value?.contact?.postNameCn,
 		enterpriseName: info.value?.enterprise?.anotherName,
 		enterpriseId: info.value?.enterpriseId,
-		channelID: channel.channel_id,
-		channelType: channel.channel_type,
+		channelID: channel.channelID,
+		channelType: channel.channelType,
 		avatar: info.value?.contact?.avatar,
 		sex: info.value?.contact?.sex,
 	}
@@ -638,25 +651,38 @@ const handleUpload = () => {
 }
 
 // 分享
+const loginPopup = ref()
 const handleClickShare = () => {
-  if (!getAccessToken()) {
-    uni.showToast({
-      title:'请先登录',
-      icon: 'none'
-    })
-    showAuthModal()
-    return
-  }
-  if (showNecessaryInfoPopup()) {
-		uni.showToast({
-			title: '请先完善基本信息',
-			icon: 'none'
-		})
-		showAuthModal('necessaryInfo')
-		return
-	}
+  // if (!getAccessToken()) {
+  //   uni.showToast({
+  //     title:'请先登录',
+  //     icon: 'none'
+  //   })
+  //   showAuthModal()
+  //   return
+  // }
+  // if (showNecessaryInfoPopup()) {
+	// 	uni.showToast({
+	// 		title: '请先完善基本信息',
+	// 		icon: 'none'
+	// 	})
+	// 	showAuthModal('necessaryInfo')
+	// 	return
+	// }
+
+  // 如果当前职位是赏金职位且没有登录的状态,则弹窗询问是否需要登录;普通职位登录与不登录都可直接分享
+  if (!getAccessToken() && info.value.hire) return loginPopup.value.open()
   sharePopup.value.open()
 }
+
+// 取消则直接弹窗分享
+const handleLoginClose = () => {
+  sharePopup.value.open()
+}
+// 确认则弹窗登录
+const handleLoginConfirm = () => {
+  showAuthModal()
+}
 </script>
 
 <style scoped lang="scss">

+ 3 - 2
pagesB/recommendEnterprise/index.vue

@@ -6,7 +6,7 @@
           <view class="d-flex align-center" @click="handleToEnterprise(val)">
             <image class="enterAvatar" :src="val.enterprise.logoUrl ? val.enterprise.logoUrl : 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></image>
             <view class="ss-m-l-20" style="flex: 1;">
-              <view class="font-size-16 enterpriseName">{{ val.enterprise.anotherName || val.enterprise.name }}</view>
+              <view class="font-size-16 enterpriseName">{{ formatName(val.enterprise.anotherName || val.enterprise.name) }}</view>
               <view class="ss-m-t-5">
                 <span class="color-999">{{ val.enterprise?.industryName || '' }}</span>
                 <span class="divider tag-gap1" v-if="val.enterprise?.industryName && val.enterprise?.scaleName"> | </span>
@@ -29,7 +29,7 @@
           <view>
             <view class="list-shape" v-for="(k, i) in val.jobList" :key="k.id" @click="handleToPosition(k)" :style="{'padding-bottom': i !== val.jobList.length - 1 ? '10px' : ''}">
               <view class="titleBox my-5">
-                <view class="job-name">{{ k.name }}</view>
+                <view class="job-name">{{ formatName(k.name) }}</view>
                 <span v-if="!k.payFrom && !k.payTo" class="salary-text">面议</span>
                 <span v-else class="salary-text">{{ k.payFrom }}-{{ k.payTo }}{{ k.payName ? '/' + k.payName : '' }}</span>
               </view>
@@ -58,6 +58,7 @@
 import { ref }  from 'vue'
 import { getHotEnterprise } from '@/api/enterprise'
 import { dealDictObjData, dealDictArrayData } from '@/utils/position'
+import { formatName } from '@/utils/getText'
 
 const more = ref('more')
 const items = ref([])

+ 5 - 0
utils/getText.js

@@ -55,3 +55,8 @@ export const dealCanBeInputtedSave = (formItem, params) => {
   }
   else { params[formItem.key] = formItem.value; params[formItem.itemTextName] = formItem[formItem.itemTextName] }
 }
+
+// 格式化企业名称、职位名称
+export const formatName = (name) => {
+  return name ? name.replace(/&amp;/g, '&') : ''
+}