فهرست منبع

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

lifanagju_citu 4 هفته پیش
والد
کامیت
6c3965a2df

+ 7 - 12
components/PositionList/index.vue

@@ -15,20 +15,18 @@
             </view>
           </view>
           <!-- 薪酬、工作地、学历、工作经验 -->
-          <view class="d-flex ellipsis" style="max-width: 100%; align-items: baseline;">
-            <view class="ss-m-r-20">
-                <span v-if="!item.job?.payFrom && !item.job?.payTo" class="salary-text MiSans-Bold">面议</span>
-                <span v-else class="salary-text MiSans-Bold">{{ item.job?.payFrom }}-{{ item.job?.payTo }}{{ item.job?.payName ? '/' + item.job?.payName : '' }}</span>
-            </view>
-            <view class="font-size-13">
-              <span class="desc-tag">
+          <view class="ellipsis" style="max-width: 100%; align-items: baseline;">
+            <span class="ss-m-r-20">
+              <span v-if="!item.job?.payFrom && !item.job?.payTo" class="salary-text MiSans-Bold">面议</span>
+              <span v-else class="salary-text MiSans-Bold">{{ item.job?.payFrom }}-{{ item.job?.payTo }}{{ item.job?.payName ? '/' + item.job?.payName : '' }}</span>
+            </span>
+              <span class="desc-tag font-size-13">
                 <span class="MiSans-Normal">{{item.job?.area?.str ?? '全国' }}</span>
                 <span class="divider-mx" v-if="item.job?.eduName">|</span>
                 <span class="MiSans-Normal">{{item.job?.eduName }}</span>
                 <span class="divider-mx" v-if="item.job?.expName">|</span>
                 <span class="MiSans-Normal">{{item.job?.expName }}</span>
               </span>
-            </view>
           </view>
           <!-- 岗位tag  -->
           <view class="ss-m-t-15" v-if="showWelfareTag">
@@ -56,7 +54,7 @@
             v-if="props.showUpdateTime"
             class="font-size-13 color-666 ss-m-t-20 MiSans-Normal d-flex align-center"
           >
-            <image src="/static/img/clock.png" class="ss-m-r-20" style="width: 15px; height: 15px;"></image>
+            <image src="https://minio.menduner.com/dev/2b50f8ccb13045a58c69e96ae1f986234452825b8ae01aba8fa08cabbcf86cd8.png" class="ss-m-r-20" style="width: 15px; height: 15px;"></image>
             更新时间:{{ timesTampChange(item?.job?.refreshTime || item.job?.updateTime, 'Y-M-D h:m') }}
           </view>
         </view>
@@ -129,9 +127,6 @@ const handleClickEnt = (item) => {
   
   font-weight: 600;
   font-size: 30rpx;
-  text-align: center;
-  font-style: normal;
-  text-transform: none;
 }
 
 .sub-li-bottom {

+ 1 - 1
pages.json

@@ -275,7 +275,7 @@
 				{
 					"path": "inviteRecord/index",
 					"style": {
-						"navigationBarTitleText": "新用户邀请记录"
+						"navigationBarTitleText": "我的分享码"
 					}
 				},
 				{

+ 2 - 2
pages/index/communicate.vue

@@ -101,14 +101,14 @@ onLoad(() => {
     return {
       title: '门墩儿 专注顶尖招聘',
       path: '/pages/index/position',
-			imageUrl: '../../static/img/share-poster.jpg'
+			imageUrl: 'https://minio.menduner.com/dev/89f171b91e3056a700d80b26a9dbb4cd6e9677b3f3b4f036a2127f5d5023e9d3.jpg'
     }
   })
 	onShareTimeline(() => {
     return {
       title: '门墩儿 专注顶尖招聘',
       path: '/pages/index/position',
-			imageUrl: '../../static/img/share-poster.jpg'
+			imageUrl: 'https://minio.menduner.com/dev/89f171b91e3056a700d80b26a9dbb4cd6e9677b3f3b4f036a2127f5d5023e9d3.jpg'
     }
   })
 })

+ 2 - 2
pages/index/crowdsourcing.vue

@@ -95,14 +95,14 @@ onLoad(() => {
     return {
       title: '门墩儿 专注顶尖招聘',
       path: '/pages/index/position',
-			imageUrl: '../../static/img/share-poster.jpg'
+			imageUrl: 'https://minio.menduner.com/dev/89f171b91e3056a700d80b26a9dbb4cd6e9677b3f3b4f036a2127f5d5023e9d3.jpg'
     }
   })
 	onShareTimeline(() => {
 		return {
 			title: '门墩儿 专注顶尖招聘',
 			path: '/pages/index/position',
-			imageUrl: '../../static/img/share-poster.jpg'
+			imageUrl: 'https://minio.menduner.com/dev/89f171b91e3056a700d80b26a9dbb4cd6e9677b3f3b4f036a2127f5d5023e9d3.jpg'
 		}
 	})
 })

+ 1 - 1
pages/index/jobFair.vue

@@ -2,7 +2,7 @@
 <template>
   <view>
     <Navbar title="招聘会" />
-    <view class="box defaultBgc" :style="{'padding-top': navbarHeight + 'px'}" style="padding-bottom: 100px;">
+    <view class="box defaultBgc" :style="{'padding-top': navbarHeight + 'px', 'min-height': `calc(100vh - ${(navbarHeight + 100)}px)`}" style="padding-bottom: 100px;">
       <view v-if="items.length">
         <view class="commonBackground"></view>
         <view v-for="val in items" :key="val.id" @tap="handleToJobFairEnterprises(val)" class="list-item defaultBgc default-border">

+ 6 - 4
pages/index/my.vue

@@ -79,6 +79,8 @@ import Navbar from '@/components/Navbar'
 
 // showAuthModal('selectUserType') // 测试
 
+// showAuthModal('selectUserType') // 测试
+
 const navbarHeight = ref(uni.getStorageSync('navbarHeight'))
 
 // 设置自定义tabbar选中值
@@ -108,8 +110,8 @@ const defaultList = [
 	{ title: '学生专区', path: '/pagesA/student/index', key: 'student', defaultHide: true, src: 'https://minio.menduner.com/dev/ec05228053a844dfa89d3bcb3750aaf2571bff4c8e04a5de6dbee2e68200e792.png' },
 	{ title: '面试管理', path: '/pagesA/interview/index', src: 'https://minio.menduner.com/dev/747122b480d8358096e5848d0039cce0c8b8cf2a52f0409d073cc733cf4c0224.png' },
 	{	title: '会员套餐', path: '/pagesA/vipPackage/index', src: 'https://minio.menduner.com/dev/4e9f86f6a48b78c1aca7a6a6b3c5971044275a7f890f73d7c3b981f125378a0f.png'	},		
-	{	title: '我的分享码',	path: '/pagesB/sharePoster/index', src: 'https://minio.menduner.com/dev/32e78eca5e003bb0136d874a973b582581eb4f9d3c746fb11ed3cc7f41a9b0e9.png'	},					
-	{	title: '新用户邀请记录',	path: '/pagesB/inviteRecord/index', src: 'https://minio.menduner.com/dev/53c36e2fb4cb3b7852bcb9ce7584d9f4c1daaed034a065c33fdb4acd2f4b89b8.png'	},
+	// {	title: '我的分享码',	path: '/pagesB/sharePoster/index', src: 'https://minio.menduner.com/dev/32e78eca5e003bb0136d874a973b582581eb4f9d3c746fb11ed3cc7f41a9b0e9.png'	},					
+	{	title: '我的分享码',	path: '/pagesB/inviteRecord/index', src: 'https://minio.menduner.com/dev/32e78eca5e003bb0136d874a973b582581eb4f9d3c746fb11ed3cc7f41a9b0e9.png'	},
 	{ title: '门墩儿商城', appId: 'wx6decdf12f9e7a061', src: 'https://minio.menduner.com/dev/1f83900522317f36618b4b8314c2b6263c30d43ff1c0e8738903f85996f165d3.png' },
 	{ title: '我要招聘', key: 'recruit', src:'https://minio.menduner.com/dev/c8e7d358858eaf9bfe197473751d04d1bc79598b9ce6ecf882ec61c79b0d3bae.png' },
 	{ title: '联系我们', path: '/pagesB/contactUs/index', src: 'https://minio.menduner.com/dev/747122b480d8358096e5848d0039cce0c8b8cf2a52f0409d073cc733cf4c0224.png' },
@@ -151,14 +153,14 @@ onLoad(() => {
     return {
       title: '门墩儿 专注顶尖招聘',
       path: '/pages/index/position',
-			imageUrl: '../../static/img/share-poster.jpg'
+			imageUrl: 'https://minio.menduner.com/dev/89f171b91e3056a700d80b26a9dbb4cd6e9677b3f3b4f036a2127f5d5023e9d3.jpg'
     }
   })
 	onShareTimeline(() => {
     return {
       title: '门墩儿 专注顶尖招聘',
       path: '/pages/index/position',
-			imageUrl: '../../static/img/share-poster.jpg'
+			imageUrl: 'https://minio.menduner.com/dev/89f171b91e3056a700d80b26a9dbb4cd6e9677b3f3b4f036a2127f5d5023e9d3.jpg'
     }
   })
 })

+ 8 - 8
pages/index/position.vue

@@ -93,14 +93,14 @@ onLoad(() => {
     return {
       title: '门墩儿 专注顶尖招聘',
       path: '/pages/index/position',
-      imageUrl: '../../static/img/share-poster.jpg'
+      imageUrl: 'https://minio.menduner.com/dev/89f171b91e3056a700d80b26a9dbb4cd6e9677b3f3b4f036a2127f5d5023e9d3.jpg'
     }
   })
   onShareTimeline(() => {
     return {
       title: '门墩儿 专注顶尖招聘',
       path: '/pages/index/position',
-      imageUrl: '../../static/img/share-poster.jpg'
+      imageUrl: 'https://minio.menduner.com/dev/89f171b91e3056a700d80b26a9dbb4cd6e9677b3f3b4f036a2127f5d5023e9d3.jpg'
     }
   })
   if (!uni.getStorageSync('token')) getRewardEventList()
@@ -131,12 +131,12 @@ const filterList = ref([
 ])
 
 const gridList = [
-  { label: '门墩儿猎头', icon: '/static/img/headhunting.png', path: '/pagesB/headhunting/index' },
-  { label: '精选企业', icon: '/static/img/enterprise.png', path: '/pagesB/recommendEnterprise/index' },
-  { label: '酒店英语', icon: '/static/img/group.png', weiXinPublicUrl: 'https://mp.weixin.qq.com/s/zta8NvNaJOFhPxq9NAE9pw' },
-  // { label: '早报资讯', icon: '/static/img/information.png', id: 'morningNews' },
-  { label: '招聘会', icon: '/static/img/information.png', path: '/pages/index/jobFair' },
-  { label: '了解门墩儿', icon: '/static/img/contact.png', path: '/pagesB/about/index' }
+  { label: '门墩儿猎头', icon: 'https://minio.menduner.com/dev/05655df27929e1420a78d6c97fa3747e17f0cdbd57ae9f816550d498ccf74a7d.png', path: '/pagesB/headhunting/index' },
+  { label: '精选企业', icon: 'https://minio.menduner.com/dev/0b107bc7b6f48d689a2fff9807c43bfe5e09e4de0858ca6fe69bbc8219681901.png', path: '/pagesB/recommendEnterprise/index' },
+  { label: '酒店英语', icon: 'https://minio.menduner.com/dev/b9c388263ada5ab63f901a2bf27adabc2660664660cb5898cf0bbc3f7416c510.png', weiXinPublicUrl: 'https://mp.weixin.qq.com/s/zta8NvNaJOFhPxq9NAE9pw' },
+  // { label: '早报资讯', icon: 'https://minio.menduner.com/dev/b598bf9c973161e090d784ca2df6f7784593d972ce015c475d1c6dcb108c9610.png', id: 'morningNews' },
+  { label: '招聘会', icon: 'https://minio.menduner.com/dev/b598bf9c973161e090d784ca2df6f7784593d972ce015c475d1c6dcb108c9610.png', path: '/pages/index/jobFair' },
+  { label: '了解门墩儿', icon: 'https://minio.menduner.com/dev/028e33e10569238d6f78bd89668f6387f8af60503b71639491e1640e53614411.png', path: '/pagesB/about/index' }
 ]
 
 // 轮播图链接跳转

+ 2 - 2
pages/index/welfare.vue

@@ -122,14 +122,14 @@ onLoad(() => {
     return {
       title: '门墩儿 专注顶尖招聘',
       path: '/pages/index/position',
-      imageUrl: '../../static/img/share-poster.jpg'
+      imageUrl: 'https://minio.menduner.com/dev/89f171b91e3056a700d80b26a9dbb4cd6e9677b3f3b4f036a2127f5d5023e9d3.jpg'
     }
   })
   onShareTimeline(() => {
     return {
       title: '门墩儿 专注顶尖招聘',
       path: '/pages/index/position',
-      imageUrl: '../../static/img/share-poster.jpg'
+      imageUrl: 'https://minio.menduner.com/dev/89f171b91e3056a700d80b26a9dbb4cd6e9677b3f3b4f036a2127f5d5023e9d3.jpg'
     }
   })
 })

+ 4 - 3
pagesA/chart/index.vue

@@ -150,7 +150,7 @@
                 </view>
               </view>
             </view>
-            <view v-else-if="val.payload.type === -1" class="message-text" :class="{ active: val.from_uid === IM.uid}">
+            <view v-else-if="val.payload.type === -1" class="message-text" :class="{ active: val.from_uid === IM.uid}" style="border-radius: 20rpx 20rpx 20rpx 9rpx;">
               {{ val.payload?.content?.text }}
             </view>
             <view v-else class="message-text" :class="{ active: val.from_uid === IM.uid}" 
@@ -894,7 +894,7 @@ onLoad(async (options) => {
       display: flex;
       flex-direction: row;
       align-items: flex-end;
-      justify-content: end;
+      // justify-content: end;
       margin: 16rpx 0;
       position: relative;
       .image {
@@ -916,10 +916,11 @@ onLoad(async (options) => {
       }
       .message-text {
         overflow-wrap: break-word;
-        background-color: #f0f2f5;
+        background-color: #00B760;
         border-radius: 12rpx;
         max-width: 75%;
         padding: 20rpx;
+        color: #fff;
         font-family: MiSans-Normal;
         &.active {
           background: #d5e6e8;

+ 1 - 1
pagesA/collect/company.vue

@@ -2,7 +2,7 @@
   <view>
     <scroll-view class="scrollBox" scroll-y="true" @scrolltolower="loadingMore" style="height: 100vh;">
       <view v-if="items.length">
-        <view v-for="(item, index) in items" :key="index" class="list-item default-border defaultBgc" @click="jumpToEnterpriseDetail(item.id)">
+        <view v-for="(item, index) in items" :key="index" class="list-item default-border list-item-bgc" @click="jumpToEnterpriseDetail(item.id)">
           <view class="d-flex align-center">
             <view class="enterAvatar default-radius default-border">
               <image class="enterAvatar default-radius" :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></image>

+ 2 - 2
pagesA/interview/item.vue

@@ -1,12 +1,12 @@
 <template>
   <view v-if="list.length > 0">
-    <view v-for="(item, index) in list" :key="index" class="list-item defaultBgc default-border">
+    <view v-for="(item, index) in list" :key="index" class="list-item list-item-bgc default-border">
       <view class="sub-li-bottom" @click.stop="jumpToEnterpriseDetail(item.enterprise?.id)">
         <view class="avatarBox">
           <image class="enterAvatar" :src="item.enterprise?.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></image>
         </view>
         <view>
-          <span class="ss-m-x-20 color-66 MiSans-Medium" style="font-weight: bold;">{{ item.contact?.name || ' -- ' }}</span>
+          <span class="ss-m-x-20 color-666 MiSans-Medium">{{ item.contact?.name || ' -- ' }}</span>
           <span class="MiSans-Normal ss-m-r-10">{{ item.contact?.postNameCn }}</span>
           <span class="ss-m-r-10 MiSans-Normal">{{ item.invitePhone }}</span>
         </view>

+ 2 - 2
pagesA/resume/index.vue

@@ -21,8 +21,8 @@
 			<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 v-if="props.resumeAnalysis" class="recomm-button" style="margin-bottom: 0;" :loading="analysisLoading" @click="handleResumeAnalysis">开始解析</button>
-      <button class="recomm-button MiSans-Medium" style="margin-bottom: 0;" @click="handleUpload">微信聊天文件上传</button>
+      <button v-if="props.resumeAnalysis" class="recomm-button" style="margin-bottom: 0; border-radius: 25px;" :loading="analysisLoading" @click="handleResumeAnalysis">开始解析</button>
+      <button class="recomm-button MiSans-Medium" style="margin-bottom: 0; border-radius: 25px;" @click="handleUpload">微信聊天文件上传</button>
       <view class="color-primary font-size-14 ss-m-b-25 ss-m-t-10 MiSans-Normal" style="text-align: center;">上传文件大小不能超过20MB</view>
     </view>
 

+ 54 - 16
pagesA/seenMe/index.vue

@@ -1,5 +1,11 @@
 <template>
-  <view style="height: 100vh; position: relative;">
+  <view
+    style="height: 100vh; position: relative;"
+    :class="{
+      'disable1': userInfo?.vipExpireDate > Date.now() && !userInfo?.entitlement?.viewersList,
+      'disable2': !userInfo?.vipExpireDate || (userInfo?.vipExpireDate && userInfo?.vipExpireDate < Date.now())
+    }"
+  >
     <scroll-view v-if="showList" class="scrollBox" scroll-y="true" @scrolltolower="loadingMore">
       <view v-if="list.length > 0">
         <view v-for="(item, index) in list" :key="index" class="list-item default-border defaultBgc" @click="jumpToEnterpriseDetail(item.enterprise.id)">
@@ -38,16 +44,6 @@
         <image src="https://minio.citupro.com/dev/static/nodata.png" mode="widthFix" style="width: 100vw;height: 100vh;"></image>
       </view>
     </scroll-view>
-    <view v-else class="noviewlist">
-      <view v-if="userInfo?.vipExpireDate > Date.now() && !userInfo?.entitlement?.viewersList">
-        <span class="MiSans-Normal">当前会员套餐的权益不包含谁关注我,</span>
-        <span class="text-line MiSans-Medium" @tap.stop="handleToBuyVip">点击去升级</span>
-      </view>
-      <view v-if="!userInfo?.vipExpireDate || (userInfo?.vipExpireDate && userInfo?.vipExpireDate < Date.now())">
-        <span class="MiSans-Normal">谁关注我为会员权益内容,</span>
-        <span class="text-line MiSans-Medium" @tap.stop="handleToBuyVip">点击去开通</span>
-      </view>
-    </view>
   </view>
 </template>
 
@@ -97,11 +93,11 @@ const loadingMore = () => {
 }
 
 // 跳转会员套餐
-const handleToBuyVip = () => {
-	uni.navigateTo({
-		url: '/pagesA/vipPackage/index'
-	})
-}
+// const handleToBuyVip = () => {
+// 	uni.navigateTo({
+// 		url: '/pagesA/vipPackage/index'
+// 	})
+// }
 </script>
 
 <style scoped lang="scss">
@@ -146,4 +142,46 @@ const handleToBuyVip = () => {
 	padding-bottom: 2px;
 	border-bottom: 1px solid #00B760;
 }
+.disable1 {
+  position: relative;
+  overflow: hidden;
+  padding: 0 30rpx;
+  &::after {
+    content: '当前会员套餐的福利不包含谁关注我';
+    position: absolute;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    font-size: 16px;
+    font-family: 'MiSans-Semibold';
+    color: #fff;
+    top: 0;
+    // border-radius: 12px;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background-color: rgba(0, 0, 0, 0.35);
+  }
+}
+.disable2 {
+  position: relative;
+  overflow: hidden;
+  padding: 0 30rpx;
+  &::after {
+    content: '谁关注我为会员福利内容';
+    position: absolute;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    font-size: 16px;
+    font-family: 'MiSans-Semibold';
+    color: #fff;
+    top: 0;
+    // border-radius: 12px;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background-color: rgba(0, 0, 0, 0.35);
+  }
+}
 </style>

+ 7 - 3
pagesB/companyDetail/index.vue

@@ -30,7 +30,7 @@
           </view>
 
           <!-- 企业信息 -->
-          <view v-if="current === 0" class="ss-m-t-30 ss-m-x-30 ss-p-b-30">
+          <view v-if="current === 0" class="ss-m-t-30 ss-m-x-30 ss-p-b-30" style="min-height: 75vh;">
             <span v-for="(tag, i) in info.tagList" :key="i" class="ss-m-r-10 ss-m-b-10" style="display: inline-block;">
               <uni-tag 
                 :text="tag" 
@@ -240,6 +240,10 @@ const loadingMore = () => {
 onLoad(async (options) => {
   id.value = options?.id || ''
   if (id.value) await getData()
+  if (options?.index) {
+    current.value = Number(options?.index)
+    if (current.value === 1) getPositionList()
+  }
 })
 
 wx.showShareMenu({
@@ -252,7 +256,7 @@ onShareAppMessage(() => {
 	}
   return {
     title: title.value || '门墩儿 专注顶尖招聘',
-    path: '/pagesB/companyDetail/index?id=' + id.value
+    path: `/pagesB/companyDetail/index?id=${id.value}&index=${current.value}`
   }
 })
 onShareTimeline(() => {
@@ -261,7 +265,7 @@ onShareTimeline(() => {
 	}
   return {
     title: title.value || '门墩儿 专注顶尖招聘',
-    path: '/pagesB/companyDetail/index?id=' + id.value
+    path: `/pagesB/companyDetail/index?id=${id.value}&index=${current.value}`
   }
 })
 

+ 1 - 1
pagesB/headhunting/pages/details.vue

@@ -35,7 +35,7 @@
 import Footer from '../components/contact.vue'
 import { ref } from 'vue'
 import { onLoad } from '@dcloudio/uni-app'
-import { serviceData, consultantData } from '@/utils/headhuntingData'
+import { serviceData, consultantData } from '../utils/data.js'
 
 const data = ref({})
 const type = ref('service')

+ 0 - 92
utils/headhuntingData.js → pagesB/headhunting/utils/data.js

@@ -251,96 +251,4 @@ export const consultantData = [
       '姚嘉庆女士对酒店行业及其他相关行业的市场动态、企业需求、人才分布等有深入的了解,这有助于她更准确地把握客户需求,提高寻访效率。她具备出色的人才评估能力,能够准确地判断候选人的专业技能、职业素养、性格特质等是否符合客户企业的要求。同时,她也是一位注重持续学习和自我提升的顶尖猎头顾问,在快速变化的市场动向中不断掌握新的行业知识、招聘技巧和行业动态,以保持自己的专业竞争力。'
     ]
   }
-]
-
-// 见解
-export const articleData = [
-  {
-    id: 'china-needs-more-women-in-executive-leadership',
-    title: '女性领导力崛起:《走进中国女性高管的职场现状》',
-    bgUrl: 'https://minio.citupro.com/dev/menduner/article/Hero-CNWomen-Mar23.jpg',
-    desc: [
-      { text: '高管团队性别多样性是企业价值创造的重要抓手,若女性不能充分发挥自身潜力,企业也无法实现全部潜力。既然性别多样性有助于优化企业管理和业绩表现,如何让更多女性晋升高管层是一个重要的议题。' },
-      { text: '相较于其他国家的女性,中国女性劳动参与率更高,但职业发展却略逊一筹,她们较少能成晋升成为高管,且成功晋升的也多为职能部门的高管。' },
-      { text: '在此份报告中,贝恩携手史宾沙分析归纳了中国女性在职场中面临的四大挑战:肩负更多家庭责任、更加谨慎三思后行、难以融入男性主导的社交圈、受到先入为主的偏见。' },
-      { 
-        text: '我们建议中国企业采取以下行动,提高职场中的性别平等:',
-        children: ['核心高管积极支持并进行背书', '强化并培育包容的企业文化', '打造性别平等的员工支持体系', '帮助职场女性建立社交和人脉']
-      },
-      { 
-        text: '我们也建议有志女性采取以下积极行动,释放自身在职场的领导潜力:',
-        children: ['敢想敢说,转变观念', '勇于发声,自信行事', '主动出击,建立人脉', '打破偏见,自我定义']
-      }
-    ]
-  },
-  {
-    id: 'leadership-for-a-complex-world-planning-for-the-ceo-of-the-future',
-    title: '纷繁复杂世界中的领导力:为未来的首席执行官做好规划',
-    bgUrl: 'https://minio.citupro.com/dev/menduner/article/THMB-CEOoftheFuture.jpg',
-    desc: '随着首席执行官在过去三年间承受了工作的重重压力精疲力尽,并考虑退休,一家大型全球性公司正面临着严峻的领导层和战略层面的挑战。这家公司以高质量产品和卓越客户服务而著称,长期以来一直占据着市场主导地位。然而,为了跟上技术进步、新进入者和富有创新性的竞争对手的步伐,它可谓步履维艰。其文化偏向规避风险和以共识为导向,这使得变革难以实施和维持。与许多公司一样,该公司正在应对2020年代的诸多挑战 - 宏观经济不确定性、地缘政治动荡、供应链中断、人才争夺战、对工作态度的转变、更广泛的社会变革以及ESG(环境、社会和公司治理)压力,包括管理层更多元化的需求。员工流动率居高不下,一名高层领导刚刚因为其他机会辞职。公司股价表现不及整体市场,并且有关股东可能采取激进行动的传闻不绝于耳。'
-  },
-  {
-    id: 'the-evolution-of-the-cfo-role-from-a-global-perspective',
-    title: '全球视角下的CFO角色演变:跨领域高管的洞察与应对策略',
-    isBgFull: true,
-    bgUrl: 'https://minio.citupro.com/dev/menduner/article/PageBanner_Migration_Default.png',
-    startText: '信息高度发达的今天,人们实时知道世界在发生什么,深切感受全球经济、金融和政治的跌宕起伏。从科技巨头到创业企业,从古老的制造业到新生的互联网数字平台,每一个角落都充斥着挑战与机遇。近期,史宾沙(Spencer Stuart)和AICPA&CIMA国际专业注册会计师公会组织了一场CFO讨论会,来自消费品、电商、餐饮服务、新能源汽车、医疗健康服务以及私募基金等不同领域的嘉宾们探讨了热点问题和CFO的角色变化。大家的分享交流不仅显示了市场的复杂性,也展示了应对策略的多元化。本文概况了嘉宾们的主要观点以及我们更广范围与高管交流获得的洞见。',
-    desc: [
-      { 
-        title: '消费服务和电商行业的关键词:',
-        subTitle: '控制成本、集中资源、投资品牌、拓展渠道、调整模式',
-        children: [
-          '疫情后,我曾非常好奇问一位欧洲食品公司的CEO如何看中国市场,他坦言,“我们要成为一家大公司,就必须拓展中国市场,这是世界上少有的单一大市场。”但中国市场竞争激烈,且消费者对于商品的选择变得越来越理性,追求性价比是公认的趋势。一位快消品CFO提到,产品可能定价较低,但并不意味着其利润率低。本土企业在这方面表现良好,而外资企业需要重新考虑其价值链和利润要求,拿出相应对策。',
-          '广阔的市场和科技进步继续促进渠道多元化,线上线下同步快速发展和变化。品牌商已经从传统线下渠道转到电商,但传统电商流量正在被社交电商、兴趣电商、以及抖音、小红书等平台吞噬,挤进这些新兴渠道的品牌商很快发现,在这里知名度高了但盈利能力仍不确定。另一方面,线下渠道也呈现新的机会,一线城市消费者挤爆新开业的连锁会员制仓储店的时候,量贩零食连锁店正在下沉市场蓬勃发展,有的在全国采用加盟制已经开了几千甚至上万家店。',
-          '但是渠道红利并不持续,注重品牌建设和投资高质量产品才是品牌长期成功的关键。在过去几年,有些国产品牌如完美日记主要通过流量和电商平台获得一时的关注,但这种策略很难实现消费者的持续复购。相比之下,另有国产品牌像薇诺娜和珀莱雅通过重点投资研发和特定的渠道建设,逐渐培养了消费者的信任并保证产品质量,从而实现了消费者的重复购买,才能给品牌带来持续发展。',
-          '一位来自国际知名化妆品公司CFO讲到:“为了品牌的长期健康,需要牺牲一些短期利益,包括控制代购和折扣情况,尽管这可能影响股价和短期销售。我们集中资源,关闭不盈利的店铺,专注于有竞争力的品牌,同时对于未来潜力不大的小品牌作出果断决策,缩减规模或退出市场。”',
-          '一位来自知名咖啡连锁品牌的CFO提到,面对价格战,尽管已是性价比较高的外资品牌,仍需要提供更大力度的折扣。从财务角度看,应对策略包括降低成本、提高供应链和市场费用的效率。策略上,公司倾向于通过加盟方式扩展新店,利用强大的供应链支持加盟店稳定增长。',
-          '电商行业在经历了高速增长后,面临增长放缓的挑战,正通过战略投资和拓展业务至相关上下游领域,寻求新增长曲线,同时关注优化成本结构,提升长期的竞争力。比如宝尊收购了Gap品牌大中华区运营权和英国的Hunter Boots在中国和东南亚的IP等,旨在从品牌服务商转向品牌运营商。同时,通过设立区域运营中心,将员工从成本较高的上海迁移到成本较低的城市,有效降低了整体成本,提升了公司的盈利能力。',
-          '我们发现,面对同样的艰难环境,优秀的企业依然能够找到适应市场环境和改善财务状况的方法,灵活的业务模式和高效的运营管理是赢得竞争的关键,展现了企业和组织的韧性。'
-        ]
-      },
-      { 
-        title: '全球化与本土化并行',
-        children: [
-          '受地缘政治的影响,有的知名大公司在中国采取低调态度进行运营与宣传,更倾向于通过第三方来影响政策而非直接亮相;也有跨国公司选择逆势而上,致力于将企业更深入地融入中国市场,从而实现高回报,目标把公司变成一个深受中国市场欢迎、估值可能超过母公司的企业,取得如百胜在中国所实现的成功。',
-          '这些年,很多跨国公司在实施“China for China”的本土化战略,主要是以下四个方面的考虑:一、全球供应链的重构促使企业必须在维持全球视野的同时加强本地市场的布局,才能对市场变化的做出快速反应;二、中国的营销生态系统在国际上是独特的,尤其是电商平台比例、营销策略和供应链灵活度等,因此跨国公司需要专门针对中国市场制定策略;三、中国像美国和欧洲有独立的数据合规和安全体系。如果公司的服务器不位于中国,则无法满足合规要求;四、前几年中国的“热钱”为外资公司利用中国资金在中国市场扩展提供了机会。',
-          '一位具有丰富跨国工作经验的CFO也提到,实施“China for China”的战略,一方面对本地业务和团队是机遇,另一方面也要保持与总部的连接,发挥跨国公司全球的资源和战略协同的优势。过度本土化可能影响董事会对中国市场的预期,认为其是一个较容易进行取舍的市场。所以,需要在全球化和本土化之间找到平衡。'
-        ]
-      },
-      { 
-        title: '供应链的韧性与“出海”策略',
-        children: [
-          '无论是为了寻求发展还是增强供应链的韧性,或是为适应地缘政治变化的影响,更多企业正在放眼全球,重新考虑布局。尽管有些企业思考将生产线迁出中国,但因劳动力成本效率、合规问题及生产力等因素,实际上也不愿意离开中国。同时,也有一些企业选择将部分供应链延伸至东南亚等地区,既能满足下游需求,又保持与中国市场的联系。全球而言,亚洲、非洲等新兴市场仍展现了巨大的消费和投资潜力,这些区域市场可能成为未来增长的关键。特别是在新能源汽车领域,中国企业通过在东南亚、墨西哥等地生产并销售汽车,展现了突出的国际化趋势。如火如荼的跨境电商,借助数字科技和全球化的供应链基础也成为产品进入欧美市场的新渠道。'
-        ]
-      },
-      { 
-        title: '投资逻辑的变化',
-        children: [
-          'CFO们最羡慕的是当下帐上有充足现金的企业。一位创业公司的CFO分享到,以前在讨论创业公司上市的前景时,投资者主要关注两个问题:一是对技术在未来十年内成为重要市场的信心;二是相信公司能成为未来市场的前三名之一。即使未来五六年没有收入,但只要投资者相信这个故事,他们就会投资。然而,现在市场的关注点转向了公司的现金流和造血能力,不再是单纯追求技术或市场的领先地位,更加关心企业是否能够实现自我维持和长期增长。这一变化也促使企业重新评估他们的投资策略。'
-        ]
-      },
-      { 
-        title: 'CFO和财务团队的角色的延展与人才升级',
-        children: [
-          '在这复杂多变的背景下,CFO和财务团队的角色不仅需要掌握传统的财务管理技能,还需要具备更为全面的视野,以理解和预测市场动态以及内外部风险,进而支持企业的战略决策和长期发展。一位来自快消品行业CFO提出了市场周期和风险管理的重要性,强调过去的乐观态度需要重新评估,应对全局性风险需具备清晰的预备方案(Plan B),不仅是对财务健康的维护,更是对企业未来发展的规划,成为与首席执行官(CEO)并肩作战的战略伙伴。为了适应财务职能的转变,CFO需要关注并提升团队的能力,这意味着不仅要培养团队成员对行业和业务的深入了解,还要提高他们的战略思维和前瞻性分析能力。'
-        ]
-      },
-      { 
-        title: 'CFO所需的关键能力',
-        children: [
-          '每当讨论这个话题时,会记录下长长的单子,企业在不同阶段和不同境况下,对CFO核心能力的要求也会有不同的侧重。有些是财务职能独特的,有些是高管都需要具备的,最主要有以下五个方面:',
-          '<strong>一、对市场和客户的深刻理解:</strong>CFO需要对市场周期、自身行业和公司业务具有深入的洞察力,这不仅能够帮助企业在资源可能紧缺的情况下有效地分配资源,还能在变化莫测的市场环境中制定有效的应对策略。',
-          '比如,饮料行业长期看仍在增长,但出现了价值增长落后于量增长的现象,明显的消费降级趋势,而且不同品类和渠道之间的差异化显著。企业面临来自价格管理和电商挑战,包括团购在内的新兴购物模式对价格体系造成干扰,CFO需要把握如何精确投资于新媒体并评估回报成为关键,同时助力直接面向消费者的销售方式来获得更深入的市场洞察。',
-          '<strong>二、思维的体系化、前瞻性和全局观:</strong>这意味着能够全面地理解和掌握财务和业务的各个方面,并能整合这些信息来做出最佳的战略决策。CFO不应仅仅看重短期目标,如上市或控制成本,而应保持全局的视角和系统思维,确保在市场和内部环境变化时,公司的财务体系能够稳健运行,适应新的优先事项。正如一位金融业CFO指出,财务职能从传统的后视镜角色(财务控制和报告),演变为更前置且具有战略性的角色,类似于电动车的车机系统,具备导航和全方位监控的功能。',
-          'CFO不仅在财务决策中起到平衡作用,还需在营销预测、产品研发、定价策略等多方面展现全面掌控力,确保企业能在不确定性中找准发展方向。决策过程中,维持平衡机制的重要性愈发突显。',
-          '随着全球化的不断发展,CFO需要具备全球化视野,掌握跨国运营的知识,并能够准确评估不同市场之间的机遇与风险,以及如何在全球范围内有效分配资源。',
-          '<strong>三、利用技术与数据驱动决策和创造效益:</strong>CFO的能力和韧性在技术和数据驱动的业务环境中得到显著提升,这不仅在财务数据的基础上做出决策,还要能够利用大数据和AI工具进行前瞻性分析和风险评估。',
-          '一位CFO分享了她如何领导财务部门利用杜邦分析,提升销售组织效率和创造收入增量。他们细分销售流程的每一个环节,以识别和利用能够驱动销售的关键因子,从而识别并排除无效因子。然后进行预测管理。如果发现目标销售额低于设定值,财务团队需要和销售团队一起寻找新的创意和机会来填补可能的风险和损失。这样,财务团队直接参与到收入目标的设定和实现中,也要求财务团队具备更广泛的技能,包括市场洞察、战略规划和跨部门协作的能力。',
-          '<strong>四、促进企业创新与发展:</strong>企业越来越倾向于采用创新驱动的发展模式,CFO的角色也在向促进创新和支持企业发展扩展。前瞻性和在财务职能中的战略性前置作用越发重要,CFO需要通过精准的资产配置和有效的资源管理来促进企业的健康发展。一位来自医疗健康行业CFO提到,虽然行业风波不断,但他们依旧致力于财务、运营、渠道管理以及与政府的关系中找到平衡,尤其专注于如何在保持合规的同时,鼓励团队进行尝试和创新。',
-          '<strong>五、卓越的沟通和领导力:</strong>如前所述CFO需要成为企业战略规划和执行过程中的核心参与者,就需要与CEO以及其他高管成员建立紧密的合作关系,共同探索和实施可能影响企业长期发展和股东价值的策略。CFO还需要成为CEO的重要伙伴(copilot),与公司的创始人、大股东以及外部投资者建立和保持良好的关系,将个人想法和策略有效地转化为公司的决策和行动。',
-          '综上所述,CFO的角色将继续向战略规划者、风险管理者以及创新推动者转变,需要具备前瞻性体系化思维、全局视野、强烈的风险意识、高度的领导力和沟通能力,以及对市场、客户、数据和技术的深入理解。同时,要不断地学习和积累经验,培养体系化思维和全局观,有效地管理和领导财务团队,以及与公司管理层、股东和外部投资者建立良好的合作关系。'
-        ]
-      },
-    ]
-  }
 ]

+ 22 - 5
pagesB/inviteRecord/index.vue

@@ -1,8 +1,8 @@
 <template>
 	<layout-page>
-		<scroll-view class="scrollBox" scroll-y="true" @scrolltolower="loadingMore" style="height: calc(100vh - 102rpx);">
-			<view v-if="total" class="totalShow MiSans-Medium">恭喜你,已经成功邀请{{ total }}个新用户啦!</view>
-      <view v-if="items.length" class="listBox">
+		<scroll-view class="scrollBox default-bgc" scroll-y="true" @scrolltolower="loadingMore" style="height: calc(100vh - 150rpx);">
+			<view v-if="total" class="totalShow MiSans-Medium white-bgc">恭喜你,已经成功邀请{{ total }}个新用户啦!</view>
+      <view v-if="items.length" class="listBox white-bgc">
         <!-- <m-list :items="items"></m-list> -->
 				<uni-table ref="table" :loading="loading" border stripe emptyText="暂无更多数据" style="width: 100%;">
 					<uni-tr>
@@ -18,14 +18,20 @@
 				</uni-table>
         <uni-load-more :status="more" />
       </view>
-      <view v-else class="nodata-img-parent">
+      <view v-else class="nodata-img-parent flex-column">
         <image
           src="https://minio.citupro.com/dev/static/nodata.png"
           mode="widthFix"
           style="width: 100vw"
         ></image>
+				<view class="shareText">
+					<span>您还没有邀请新用户</span>
+				</view>
       </view>
     </scroll-view>
+    <view class="bottom-sticky flex-column ss-p-b-30">
+      <button class="recomm-button MiSans-Medium" style="margin-bottom: 0; border-radius: 25px;" @click="toShare">生成分享码</button>
+    </view>
   </layout-page>
 </template>
 
@@ -98,13 +104,24 @@ function loadingMore () {
   pageInfo.value.pageNo++
 	init()
 }
+
+const toShare = () => {
+	uni.navigateTo({ url: '/pagesB/sharePoster/index' })
+}
 </script>
 <style scoped lang="scss">
 .listBox {
 	padding: 30rpx;
 }
 .totalShow {
-	margin: 30rpx 0 0 30rpx;
+	padding: 30rpx 0 0 30rpx;
+	color: #666;
+}
+.nodata-img-parent {
+	flex-direction: column;
+}
+.shareText {
+	margin-bottom: 150rpx;
 	color: #666;
 }
 </style>

+ 46 - 44
pagesB/preferredGroup/index.vue

@@ -1,60 +1,62 @@
 <template>
-	<view v-if="Object.keys(preferred).length > 0" class="ss-p-x-20">
-		<!-- 轮播图 -->
-		<swiper
-      circular
-      :indicator-dots="preferred?.carousel?.length > 1 ? true : false"
-      :autoplay="true"
-      :interval="3000"
-      :duration="500"
-      indicator-active-color="#fff"
-	  	style="height: 180px;"
-    >
-			<swiper-item v-for="(item, index) in preferred.carousel" :key="index">
-        <image :src="item" style="width: 100%; height: 100%" :lazy-load="true" :fade-show="true"></image>
-			</swiper-item>
-		</swiper>
-		<!-- 集团简介 -->
-		<view class="ss-m-t-50">
-			<!-- 标题 -->
-			<uni-title class="ss-m-b-30" type="h1" :title="preferred?.introduce?.title" align="center"></uni-title>
-			<!-- 简介 -->
-			<rich-text class="ss-m-b-30 color-666" :nodes="preferred?.introduce?.describe"></rich-text>
-			<!-- 小图 -->
+	<view v-if="Object.keys(preferred).length > 0">
+		<view class="ss-p-x-20">
+			<!-- 轮播图 -->
 			<swiper
-				v-if="preferred?.introduce?.thumbnail?.length"
 				circular
-				:indicator-dots="true"
+				:indicator-dots="preferred?.carousel?.length > 1 ? true : false"
 				:autoplay="true"
 				:interval="3000"
 				:duration="500"
 				indicator-active-color="#fff"
-				:style="{'height': preferred?.introduce?.thumbnail.length > 1 ? '230px' : '160px'}"
-				class="ss-m-t-50"
+				style="height: 180px;"
 			>
-				<swiper-item v-for="(item, index) in preferred.introduce?.thumbnail" :key="index">
+				<swiper-item v-for="(item, index) in preferred.carousel" :key="index">
 					<image :src="item" style="width: 100%; height: 100%" :lazy-load="true" :fade-show="true"></image>
 				</swiper-item>
 			</swiper>
-
-			<!-- 大图 -->
-			<image class="ss-m-y-30" :src="preferred.introduce?.bigPicture?.url" style="width: 100%;" :lazy-load="true" :fade-show="true" :style="{'height': preferred.introduce?.bigPicture?.height + 'px'}"></image>
-		</view>
-
-		<!-- 品牌介绍 -->
-		<view v-if="preferred?.brandIntroduce?.length" class="ss-m-t-30">
-			<uni-title class="ss-m-b-30 color-666" type="h1" title="品牌介绍" align="center"></uni-title>
-			<uni-swiper-dot class="uni-swiper-dot-box" :info="preferred.brandIntroduce" :current="current" mode="nav" field="content">
-				<swiper :autoplay="true" :interval="5000" class="swiper-box" @change="change" :current="swiperDotIndex" style="height: 172px;">
-					<swiper-item v-for="(item, index) in preferred.brandIntroduce" :key="index">
-						<image :src="item.url" style="width: 100%; height: 100%" :lazy-load="true" :fade-show="true"></image>
-						<view class="swiper-item" :class="'swiper-item' + index">
-							<text style="color: #fff; font-size: 20px;">{{ item.content }}</text>
-						</view>
+			<!-- 集团简介 -->
+			<view class="ss-m-t-50">
+				<!-- 标题 -->
+				<uni-title class="ss-m-b-30" type="h1" :title="preferred?.introduce?.title" align="center"></uni-title>
+				<!-- 简介 -->
+				<rich-text class="ss-m-b-30 color-666" :nodes="preferred?.introduce?.describe"></rich-text>
+				<!-- 小图 -->
+				<swiper
+					v-if="preferred?.introduce?.thumbnail?.length"
+					circular
+					:indicator-dots="true"
+					:autoplay="true"
+					:interval="3000"
+					:duration="500"
+					indicator-active-color="#fff"
+					:style="{'height': preferred?.introduce?.thumbnail.length > 1 ? '230px' : '160px'}"
+					class="ss-m-t-50"
+				>
+					<swiper-item v-for="(item, index) in preferred.introduce?.thumbnail" :key="index">
+						<image :src="item" style="width: 100%; height: 100%" :lazy-load="true" :fade-show="true"></image>
 					</swiper-item>
 				</swiper>
-			</uni-swiper-dot>
-			<view class="color-666 ss-m-t-20 font-size-14">{{ preferred.brandIntroduce[current].desc }}</view>
+
+				<!-- 大图 -->
+				<image class="ss-m-y-30" :src="preferred.introduce?.bigPicture?.url" style="width: 100%;" :lazy-load="true" :fade-show="true" :style="{'height': preferred.introduce?.bigPicture?.height + 'px'}"></image>
+			</view>
+
+			<!-- 品牌介绍 -->
+			<view v-if="preferred?.brandIntroduce?.length" class="ss-m-t-30">
+				<uni-title class="ss-m-b-30 color-666" type="h1" title="品牌介绍" align="center"></uni-title>
+				<uni-swiper-dot class="uni-swiper-dot-box" :info="preferred.brandIntroduce" :current="current" mode="nav" field="content">
+					<swiper :autoplay="true" :interval="5000" class="swiper-box" @change="change" :current="swiperDotIndex" style="height: 172px;">
+						<swiper-item v-for="(item, index) in preferred.brandIntroduce" :key="index">
+							<image :src="item.url" style="width: 100%; height: 100%" :lazy-load="true" :fade-show="true"></image>
+							<view class="swiper-item" :class="'swiper-item' + index">
+								<text style="color: #fff; font-size: 20px;">{{ item.content }}</text>
+							</view>
+						</swiper-item>
+					</swiper>
+				</uni-swiper-dot>
+				<view class="color-666 ss-m-t-20 font-size-14">{{ preferred.brandIntroduce[current].desc }}</view>
+			</view>
 		</view>
 		
 		<!-- 招聘职位 -->

+ 2 - 2
pagesB/recommendEnterprise/index.vue

@@ -2,7 +2,7 @@
   <view style="padding-bottom: 30px;">
     <scroll-view scroll-y="true" @scrolltolower="loadingMore" style="height: 100vh;">
       <view v-if="items.length">
-        <view v-for="(val, index) in items" :key="index" class="list-item defaultBgc default-border">
+        <view v-for="(val, index) in items" :key="index" class="list-item list-item-bgc default-border">
           <view class="d-flex align-center" @click="jumpToEnterpriseDetail(val.enterprise.id)">
             <image class="enterAvatar default-border default-radius" :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;">
@@ -28,7 +28,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 MiSans-Semibold default-text-color" :style="{'max-width': !k.payFrom && !k.payTo ? '65vw' : '50vw'}">{{ formatName(k.name) }}</view>
+                <view class="job-name MiSans-Semibold default-text-color" :style="{'max-width': !k.payFrom && !k.payTo ? '65vw' : '46vw'}">{{ formatName(k.name) }}</view>
                 <span v-if="!k.payFrom && !k.payTo" class="salary-text MiSans-Bold">面议</span>
                 <span v-else class="salary-text MiSans-Bold">{{ k.payFrom }}-{{ k.payTo }}{{ k.payName ? '/' + k.payName : '' }}</span>
               </view>

BIN
static/img/clock.png


BIN
static/img/contact.png


BIN
static/img/enterprise.png


BIN
static/img/gold.png


BIN
static/img/group.png


BIN
static/img/headhunting.png


BIN
static/img/information.png


BIN
static/img/share-poster.jpg


BIN
static/img/ticket.png


+ 3 - 0
static/style/index.scss

@@ -168,6 +168,9 @@
 .white-bgc {
   background-color: #fff;
 }
+.default-bgc {
+  background-color: #f2f4f7;
+}
 
 .ellipsis {
   white-space: nowrap;

+ 2 - 3
utils/avatar.js

@@ -1,6 +1,5 @@
-const male = 'https://minio.citupro.com/dev/menduner/11.png'
-const female = 'https://minio.citupro.com/dev/menduner/7.png'
-const defaultAvatar = 'https://minio.menduner.com/dev/04af7f4a3b8bc90207ecae864b8a6e5bf72b4b3313886cb8cac3f78c82683691.png'
+const male = 'https://minio.menduner.com/dev/d1b0976e90f26a65ac3e953fbb7f111726061e1e1bee490c1d4857c8bc62b157.png'
+const female = 'https://minio.menduner.com/dev/b579246470f8a29b3fcef757f996dac7b7d434fd9271c6c8ecd188216b8d8758.png'
 
 // 根据性别返回默认头像
 // isChatSystem: 系统消息头像