|
@@ -9,16 +9,17 @@
|
|
|
<h2 class="JobName ellipsis">
|
|
|
{{ info.name }}
|
|
|
</h2>
|
|
|
- <span class="salary w-600">{{ info.payFrom }}-{{ info.payTo }}/{{ positionInfo.payName }}</span>
|
|
|
+ <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>
|
|
|
</view>
|
|
|
<!-- 职位地区 收藏职位 -->
|
|
|
<view class="d-flex justify-space-between mt-5">
|
|
|
<view class="bold" style="font-size: 14px;">
|
|
|
<span>
|
|
|
<span>{{positionInfo?.areaName }}</span>
|
|
|
- <span class="viewider-mx">|</span>
|
|
|
+ <span class="viewider-mx" v-if="positionInfo?.areaName && positionInfo?.eduName">|</span>
|
|
|
<span>{{positionInfo?.eduName }}</span>
|
|
|
- <span class="viewider-mx">|</span>
|
|
|
+ <span class="viewider-mx" v-if="positionInfo?.expName">|</span>
|
|
|
<span>{{positionInfo?.expName }}</span>
|
|
|
</span>
|
|
|
</view>
|
|
@@ -62,7 +63,7 @@
|
|
|
</view>
|
|
|
<view >
|
|
|
<view class="contact-name">{{ info.contact?.name }}</view>
|
|
|
- <view class="contact-info">{{ info.enterprise?.name }} · {{ info.contact?.postNameCn }}</view>
|
|
|
+ <view class="contact-info">{{ info.enterprise?.name }} {{ info.contact?.postNameCn ? '· ' + info.contact?.postNameCn : '' }}</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
<!-- 工作地址 -->
|
|
@@ -75,7 +76,7 @@
|
|
|
class="mr"
|
|
|
size="25"
|
|
|
></uni-icons>
|
|
|
- <span style="color: var(--color-666);font-size: 15px;line-height: 26px;">{{ info.address }}</span>
|
|
|
+ <span style="color: var(--color-666);font-size: 15px;line-height: 26px;">{{ info.address || '暂无' }}</span>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
@@ -83,15 +84,35 @@
|
|
|
</scroll-view>
|
|
|
<!-- 分享 投递 -->
|
|
|
<view class="bottom-sticky" v-if="!loading && jobId">
|
|
|
- <view style="display: flex;justify-content: space-evenly;align-items: center;width: 100%;margin: 20rpx 0;">
|
|
|
- <view @click="handleClickShare" style="display: flex;justify-content: center;flex-direction: column;align-items: center;">
|
|
|
+ <view class="bottom-content">
|
|
|
+ <view @click="handleClickShare" class="bottom-content-tool">
|
|
|
<uni-icons type="redo-filled" size="24" color="#00897B"/>
|
|
|
<span style="color:#00897B;font-weight:bold;">分享</span>
|
|
|
</view>
|
|
|
- <button v-if="delivery" :disabled="true" class="buttons disable">我已投递</button>
|
|
|
- <button v-else class="buttons" @click="handleDelivery">我要投递</button>
|
|
|
+ <button class="btnStyle bgButtons" @tap="handleSend">立即沟通</button>
|
|
|
+ <button v-if="delivery" :disabled="true" class="buttons btnStyle disable">我已投递</button>
|
|
|
+ <button v-else class="buttons btnStyle" @click="handleDelivery">我要投递</button>
|
|
|
</view>
|
|
|
</view>
|
|
|
+ <uni-popup
|
|
|
+ ref="poster"
|
|
|
+ type="center"
|
|
|
+ class="f-straight"
|
|
|
+ style="position: relative;"
|
|
|
+ >
|
|
|
+ <canvas
|
|
|
+ :style="{
|
|
|
+ width:`${appInfo.windowWidth}px;`,
|
|
|
+ height:`${appInfo.windowHeight}px;margin-left:-9999px; margin-top:-99.5vh;`
|
|
|
+ }" canvas-id="firstCanvas" id="firstCanvas"></canvas>
|
|
|
+ <image
|
|
|
+ :style="{ width:`${appInfo.windowWidth}px;`, height:`${appInfo.windowHeight*.9}px;`}"
|
|
|
+ :src="imgSrc"
|
|
|
+ mode="aspectFit"
|
|
|
+ />
|
|
|
+ <!-- <uni-icons v-if="!!imgSrc" type="clear" size="35" color="#FFF" style="position: absolute;top: 10px;right: 28px;" @click="posterClose"></uni-icons> -->
|
|
|
+ </uni-popup>
|
|
|
+
|
|
|
<!-- 选择简历 -->
|
|
|
<uni-popup ref="popup" background-color="#fff" :mask-click="false" >
|
|
|
<view class="dialogBox" style="width: 86vw;">
|
|
@@ -141,6 +162,34 @@
|
|
|
@close="uploadPopup.close()"
|
|
|
></uni-popup-dialog>
|
|
|
</uni-popup>
|
|
|
+
|
|
|
+ <!-- 职位分享 -->
|
|
|
+ <uni-popup ref="sharePopup" type="share">
|
|
|
+ <uni-popup-share title="分享到">
|
|
|
+ <view class="share-pop">
|
|
|
+ <button class="f-straight" open-type="share">
|
|
|
+ <view class="share-round share-round-1" >
|
|
|
+ <uni-icons
|
|
|
+ type="weixin"
|
|
|
+ color="#FFF"
|
|
|
+ size="30"
|
|
|
+ />
|
|
|
+ </view>
|
|
|
+ <view style="font-size:12px;">微信</view>
|
|
|
+ </button>
|
|
|
+ <!-- <button class="f-straight" @click="createPoster">
|
|
|
+ <view class="share-round share-round-2" >
|
|
|
+ <uni-icons
|
|
|
+ type="download-filled"
|
|
|
+ color="#FFF"
|
|
|
+ size="30"
|
|
|
+ />
|
|
|
+ </view>
|
|
|
+ <view style="font-size:12px;">生成海报</view>
|
|
|
+ </button> -->
|
|
|
+ </view>
|
|
|
+ </uni-popup-share>
|
|
|
+ </uni-popup>
|
|
|
</layout-page>
|
|
|
</template>
|
|
|
|
|
@@ -157,20 +206,29 @@ import {
|
|
|
jobCvRelCheckSend,
|
|
|
getPersonJobUnfavorite, // 取消收藏
|
|
|
getPersonJobFavorite, // 收藏
|
|
|
- getJobFavoriteCheck
|
|
|
+ getJobFavoriteCheck,
|
|
|
+ jobCvRelHireSend
|
|
|
} from '@/api/position'
|
|
|
import { getPersonResumeCv, saveResume } from '@/api/user'
|
|
|
import { dealDictObjData } from '@/utils/position'
|
|
|
import { getAccessToken } from '@/utils/request'
|
|
|
-import { onLoad } from '@dcloudio/uni-app';
|
|
|
+import { onLoad,onShareAppMessage,onShareTimeline } from '@dcloudio/uni-app'
|
|
|
+import { prologue, defaultText } from '@/hooks/useIM'
|
|
|
|
|
|
+const sharePopup = ref()
|
|
|
const loading = ref(false)
|
|
|
const loadingText = ref('加载中 . . . ')
|
|
|
|
|
|
-
|
|
|
// 职位详情
|
|
|
const info = ref({})
|
|
|
const positionInfo = ref({})
|
|
|
+
|
|
|
+const isEmployment = ref(null)
|
|
|
+
|
|
|
+const imgSrc = ref('')
|
|
|
+const appInfo = ref({})
|
|
|
+const poster = ref()
|
|
|
+
|
|
|
const getPositionDetail = async () => {
|
|
|
try {
|
|
|
loading.value = true
|
|
@@ -178,13 +236,16 @@ const getPositionDetail = async () => {
|
|
|
info.value = data
|
|
|
positionInfo.value = { ...dealDictObjData({}, info.value), ...info.value }
|
|
|
loading.value = false
|
|
|
- console.log('positionInfo', positionInfo.value)
|
|
|
} finally {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
let jobId = ''
|
|
|
-onLoad((options) => {
|
|
|
+onLoad((options) => {
|
|
|
+ // 是否是众聘
|
|
|
+ if (options.userId) {
|
|
|
+ isEmployment.value = options.userId
|
|
|
+ }
|
|
|
jobId = options?.id || ''
|
|
|
if (jobId) {
|
|
|
loading.value = true
|
|
@@ -228,10 +289,13 @@ const handleDelivery = async () => {
|
|
|
uni.showToast({ title: '您已投递过该职位!', icon: 'none', duration: 2000, })
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
const { data } = await getPersonResumeCv()
|
|
|
resumeList.value = data
|
|
|
// 未上传简历
|
|
|
- if (!resumeList.value?.length) return uploadPopup.value.open()
|
|
|
+ if (!resumeList.value?.length) {
|
|
|
+ return uploadPopup.value.open()
|
|
|
+ }
|
|
|
popup.value.open()
|
|
|
}
|
|
|
const deliverySubmit = async (uploadFile) => {
|
|
@@ -241,7 +305,22 @@ const deliverySubmit = async (uploadFile) => {
|
|
|
uni.showToast({ title: '请选择简历', icon: 'none', duration: 2000, })
|
|
|
return
|
|
|
}
|
|
|
- await jobCvRelSend({ jobId, title: resume.title, url: resume.url, type: info.value.hire ? 1 : 0 })
|
|
|
+
|
|
|
+ if (isEmployment.value) {
|
|
|
+ await jobCvRelHireSend({
|
|
|
+ jobId,
|
|
|
+ url: resume.url,
|
|
|
+ recommendUserId: isEmployment.value
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ await jobCvRelSend({
|
|
|
+ jobId,
|
|
|
+ title: resume.title,
|
|
|
+ url: resume.url,
|
|
|
+ type: info.value.hire ? 1 : 0
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
uni.showToast({ title: '投递成功', icon: 'none', duration: 2000, })
|
|
|
deliveryCheck()
|
|
|
popup.value.close()
|
|
@@ -252,6 +331,35 @@ const popupClose = () => {
|
|
|
popup.value.close()
|
|
|
}
|
|
|
|
|
|
+// 发起聊天
|
|
|
+async function handleSend () {
|
|
|
+ const userId = info.value.contact.userId
|
|
|
+ const enterpriseId = info.value.contact.enterpriseId
|
|
|
+ const textObj = {
|
|
|
+ text: defaultText,
|
|
|
+ positionInfo: positionInfo.value
|
|
|
+ }
|
|
|
+ const channel = await prologue({userId, enterpriseId, text: JSON.stringify(textObj)})
|
|
|
+ console.log('channel', channel)
|
|
|
+ // 跳转
|
|
|
+ const query = {
|
|
|
+ id: userId,
|
|
|
+ name: info.value?.contact?.name,
|
|
|
+ postName: info.value?.contact?.postNameCn,
|
|
|
+ enterpriseName: info.value?.enterprise?.anotherName,
|
|
|
+ enterpriseId: info.value?.enterpriseId,
|
|
|
+ channelId: channel.channel_id,
|
|
|
+ avatar: info.value?.contact?.avatar,
|
|
|
+ sex: info.value?.contact?.sex,
|
|
|
+ }
|
|
|
+ console.log('query', query)
|
|
|
+ const queryStr = Object.keys(query).reduce((r, v) => {
|
|
|
+ return r += `${v}=${encodeURIComponent(query[v])}&`
|
|
|
+ }, '?')
|
|
|
+ uni.navigateTo({
|
|
|
+ url: `/pagesA/chart/index${queryStr.slice(0, -1)}`
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
// 效验求职者是否有收藏该职位
|
|
|
const isCollection = ref(false)
|
|
@@ -308,217 +416,286 @@ const handleUpload = () => {
|
|
|
|
|
|
// 分享
|
|
|
const handleClickShare = () => {
|
|
|
- uni.showToast({ title: '正在努力建设中 . . .', icon: 'none', duration: 2000, })
|
|
|
-}
|
|
|
-
|
|
|
-</script>
|
|
|
-
|
|
|
-<style scoped lang="scss">
|
|
|
-.mb5 { margin-bottom: 5px; }
|
|
|
-.my5 { margin: 5px 0; }
|
|
|
-.my10 { margin: 10px 0; }
|
|
|
-.mt10 { margin-top: 10px; }
|
|
|
-.fs14 { font-size: 14px; }
|
|
|
-.fs15 { font-size: 15px; }
|
|
|
-.box {
|
|
|
- padding: 10px 30rpx 100px;
|
|
|
-}
|
|
|
-
|
|
|
-.JobName {
|
|
|
- color: #37576c;
|
|
|
- font-size: 24px;
|
|
|
- margin-right: 30px;
|
|
|
- margin-top: 1px;
|
|
|
- vertical-align: middle;
|
|
|
- flex: 1;
|
|
|
-}
|
|
|
-
|
|
|
-.tagList {
|
|
|
- width: 100%;
|
|
|
- display: flex;
|
|
|
- flex-wrap: wrap;
|
|
|
- .tagListItem {
|
|
|
- margin: 10rpx 10rpx 10rpx 0;
|
|
|
+ sharePopup.value.open()
|
|
|
+}
|
|
|
+//在点击open-type="share"按钮后会触发以下函数,可以在函数中写需要的逻辑,当然函数的返回值必须是一个对象,用于设置分享卡片的展示形式
|
|
|
+//发送给微信好友
|
|
|
+onShareAppMessage((res) => {
|
|
|
+ let path = `/pagesB/positionDetail/index?id=${info.value.id}`
|
|
|
+ if (info.value.hire) {
|
|
|
+ path += `&userId=${info.value.userId}`
|
|
|
}
|
|
|
+ return {
|
|
|
+ title: '我发现了一个好职位,快来看看吧', //分享的名称
|
|
|
+ path
|
|
|
+ }
|
|
|
+})
|
|
|
+// 获取设备信息
|
|
|
+function getSystemInfo(){
|
|
|
+ return new Promise((resolve, reject) =>{
|
|
|
+ uni.getSystemInfo({
|
|
|
+ success: (result) => {
|
|
|
+ console.log(result)
|
|
|
+ resolve(result)
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ console.log(err)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
}
|
|
|
-.topLine {
|
|
|
- border-top: 1px solid #EDEDED;
|
|
|
- // border-bottom: 1px solid #EDEDED;
|
|
|
- padding-top: 10px;
|
|
|
-}
|
|
|
-.tag {
|
|
|
- padding: 5px 10px;
|
|
|
- background-color: #e2f0ef;
|
|
|
- color: #00897B;
|
|
|
- border-radius: 5px;
|
|
|
- font-size: 14px;
|
|
|
- margin-right: 8px;
|
|
|
- margin-top: 4px;
|
|
|
-}
|
|
|
-.hirePrice {
|
|
|
- padding: 5px 10px;
|
|
|
- background-color: #fc6d5e63;
|
|
|
- color: #ff250e;
|
|
|
- border-radius: 5px;
|
|
|
- font-size: 14px;
|
|
|
- margin-left: 8px;
|
|
|
- margin-top: 4px;
|
|
|
+function roundedRect(ctx, x, y, width, height, radius, color) {
|
|
|
+ ctx.beginPath();
|
|
|
+ ctx.moveTo(x, y + radius);
|
|
|
+ ctx.lineTo(x, y + height - radius);
|
|
|
+ ctx.quadraticCurveTo(x, y + height, x + radius, y + height);
|
|
|
+ ctx.lineTo(x + width - radius, y + height);
|
|
|
+ ctx.quadraticCurveTo(x + width, y + height, x + width, y + height - radius);
|
|
|
+ ctx.lineTo(x + width, y + radius);
|
|
|
+ ctx.quadraticCurveTo(x + width, y, x + width - radius, y);
|
|
|
+ ctx.lineTo(x + radius, y);
|
|
|
+ ctx.quadraticCurveTo(x, y, x, y + radius);
|
|
|
+ // ctx.fillStyle = "#f5f5f5";
|
|
|
+ ctx.fillStyle = color;
|
|
|
+ ctx.fill()
|
|
|
+ ctx.strokeStyle = color
|
|
|
+ ctx.stroke();
|
|
|
+}
|
|
|
+//微信获取图片信息
|
|
|
+function getImageTempRatio (url){
|
|
|
+ return new Promise((resolve, reject)=>{
|
|
|
+ wx.getImageInfo({
|
|
|
+ src:url,
|
|
|
+ success:(res) =>{
|
|
|
+ resolve(res)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
-.htmlCss {
|
|
|
- white-space: pre-wrap;
|
|
|
- word-break: break-all;
|
|
|
- line-height: 28px;
|
|
|
- color: var(--color-333);
|
|
|
- font-size: 15px;
|
|
|
- text-align: justify;
|
|
|
- letter-spacing: 0;
|
|
|
-}
|
|
|
+/**
|
|
|
+ *
|
|
|
+ * @param text 文本
|
|
|
+ * @param x 起始位置x
|
|
|
+ * @param y 起始位置y
|
|
|
+ * @param maxWidth 最大宽度
|
|
|
+ * @param lineHeight 行高
|
|
|
+ * @param ctx 画布上下文
|
|
|
+ * @param type 类型 cut 截断+省略号 wrap 自动换行
|
|
|
+ */
|
|
|
+function wrapText(text, x, y, maxWidth, lineHeight, ctx, type = 'cut') {
|
|
|
+ const words = text.split(' '); // 按空格分割成单词
|
|
|
+ let line = ''
|
|
|
|
|
|
-//底部按钮公用定位
|
|
|
-.bottom-sticky{
|
|
|
- display: flex;
|
|
|
- width:100vw;
|
|
|
- position: fixed;
|
|
|
- bottom:0;
|
|
|
- left: 0;
|
|
|
- background-image:linear-gradient(rgba(255,255,255,1),white);
|
|
|
-}
|
|
|
-
|
|
|
-.buttons{
|
|
|
- width: 60vw;
|
|
|
- height: 44px;
|
|
|
- border-radius: 25px;
|
|
|
- margin: 0;
|
|
|
- color: #fff !important;
|
|
|
- background-color: #00897b !important;
|
|
|
-}
|
|
|
-.disable { background-color: #00897bbe !important; color: #ffffffec !important;}
|
|
|
+ words.forEach((word) => {
|
|
|
+ const testLine = line + word + ' '; // 测试当前行加上新单词
|
|
|
+ const metrics = ctx.measureText(testLine); // 测量文本宽度
|
|
|
+
|
|
|
+ // 检查是否超过最大宽度
|
|
|
+ if (metrics.width > maxWidth && line) {
|
|
|
+ if (type === 'wrap') {
|
|
|
+ ctx.fillText(line, x, y); // 在当前 y 位置绘制当前行
|
|
|
+ line = word + ' '; // 重置行并开始新的一行
|
|
|
+ y += lineHeight; // 更新 y 位置
|
|
|
+ }
|
|
|
+ if (type === 'cut') {
|
|
|
+ line = line.slice(0, -word.length - 2) + '...'; // 截断当前行并添加省略号
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ line = testLine; // 如果没有超出宽度,更新当前行
|
|
|
+ }
|
|
|
+ })
|
|
|
|
|
|
-.noMore{
|
|
|
- margin: 20px 0;
|
|
|
-}
|
|
|
+ // 绘制剩余的文本
|
|
|
+ ctx.fillText(line, x, y)
|
|
|
+}
|
|
|
+// 生成海报
|
|
|
+async function createPoster () {
|
|
|
+ const top = 50
|
|
|
+ const left = 30
|
|
|
+ console.log(info.value)
|
|
|
+ sharePopup.value.close()
|
|
|
+ const res = await getSystemInfo()
|
|
|
+ const { windowWidth, windowHeight } = res
|
|
|
+ appInfo.value = {
|
|
|
+ windowWidth, windowHeight
|
|
|
+ }
|
|
|
+ var context = uni.createCanvasContext('firstCanvas')
|
|
|
+ //底色
|
|
|
+ context.setFillStyle('#03877a')
|
|
|
+ context.fillRect(0,0, windowWidth, windowHeight)
|
|
|
+ // 职位信息
|
|
|
+ // 名称
|
|
|
+ context.setFillStyle('#FFF')
|
|
|
+ context.font = 'normal bold 26px Microsoft YaHei'
|
|
|
+ context.fillText(info.value.name, left, top)
|
|
|
+ // 薪酬
|
|
|
+ context.fillStyle = 'yellow';
|
|
|
+ context.font = 'normal 22px Microsoft YaHei'
|
|
|
+ const payText = `${info.value.payFrom}-${info.value.payTo} / ${positionInfo.value.payName}`
|
|
|
+ const payWidth = context.measureText(payText).width;
|
|
|
+ const rightX = windowWidth - payWidth - left;
|
|
|
+ context.fillText(payText, rightX, top);
|
|
|
+ // 地区|年限|学历
|
|
|
+ const areaText = `${positionInfo.value?.areaName} | ${positionInfo.value?.eduName} | ${positionInfo.value?.expName}`
|
|
|
+ context.setFillStyle('#FFF')
|
|
|
+ context.font = 'normal 14px Microsoft YaHei'
|
|
|
+ const subTitleH = top + 20
|
|
|
+ context.fillText(areaText, left, subTitleH)
|
|
|
+ // 企业信息卡片
|
|
|
+ roundedRect(context, left, subTitleH + 20 , windowWidth - 2 * left , 50, 10, 'rgba(255, 255, 255, 0.45)')
|
|
|
+
|
|
|
+ // 企业信息
|
|
|
+ // const headerMsg = await getImageTempRatio(info.value.contact.avatar)
|
|
|
+ // context.drawImage(
|
|
|
+ // headerMsg.path,
|
|
|
+ // left + 5,
|
|
|
+ // subTitleH + 25,
|
|
|
+ // 40,
|
|
|
+ // 40
|
|
|
+ // )
|
|
|
+ // 企业信息
|
|
|
+ context.setFillStyle('#FFF')
|
|
|
+ context.font = 'normal 16px Microsoft YaHei'
|
|
|
+ const emTextH = subTitleH + 50
|
|
|
+ context.fillText(info.value.enterprise.anotherName, left + 20, emTextH)
|
|
|
+ // 企业地点
|
|
|
+ const _areaText = `${info.value.areaName}`
|
|
|
+ const areaTextW = context.measureText(_areaText).width;
|
|
|
+ const _rightX = windowWidth - areaTextW - left - 20;
|
|
|
+ context.fillText(_areaText, _rightX, emTextH);
|
|
|
+ // 福利
|
|
|
+ // context.setFillStyle('#FFF')
|
|
|
+ context.font = 'normal 14px Microsoft YaHei'
|
|
|
+ const welfareH = emTextH + 40
|
|
|
+ const welfareText = info.value.tagList && info.value.tagList.join(' ') || ''
|
|
|
+ wrapText(welfareText, left, welfareH, windowWidth - 2 * left, 20, context)
|
|
|
+ // 卡片
|
|
|
+ const cardTop = welfareH + 20 // 卡片顶部距离
|
|
|
+ const cardH = windowHeight - cardTop - 100 // 卡片高度
|
|
|
+ roundedRect(context, 10, cardTop , windowWidth - 20 , cardH, 10,'#fff')
|
|
|
+ // 岗位
|
|
|
+ // context.setFillStyle('#000000')
|
|
|
+ // context.setFontSize(20)
|
|
|
+ // context.font = 'normal bold 20px Microsoft YaHei'
|
|
|
+ // context.fillText('111',windowWidth/10, windowHeight * 0.2)
|
|
|
|
|
|
-.date-time{
|
|
|
- color:#d9d0d2;
|
|
|
- float: right;
|
|
|
-}
|
|
|
+ // 地区频率时长薪资
|
|
|
+ // context.setFillStyle('#6c6e7b')
|
|
|
+ // context.setFontSize(15)
|
|
|
+ // context.font = 'normal 15px Microsoft YaHei'
|
|
|
+ // context.fillText(' | ',windowWidth/10, windowHeight * 0.2 + 30)
|
|
|
+ // context.setFontSize(18)
|
|
|
+ // context.font = 'normal 18px Microsoft YaHei'
|
|
|
+ // context.setFillStyle('#f67272')
|
|
|
+ // context.fillText('120/天', windowWidth/10, windowHeight * 0.2 + 60)
|
|
|
+ // 小程序码/ 二维码
|
|
|
+ // context.drawImage(
|
|
|
+ // // image.path,
|
|
|
+ // windowWidth *0.5 - windowWidth/8,
|
|
|
+ // windowHeight * 0.60,
|
|
|
+ // windowWidth/4,
|
|
|
+ // windowWidth/4
|
|
|
+ // )
|
|
|
+
|
|
|
+ context.setFontSize(16)
|
|
|
+ context.fillText('长按二维码查看岗位', windowWidth/3.2, windowHeight * 0.65 + windowWidth/4)
|
|
|
|
|
|
-.viewided-line {
|
|
|
- width: 100%;
|
|
|
- height: 1px;
|
|
|
- background-color: #f0f2f7;
|
|
|
- margin: 20px 0;
|
|
|
+ context.draw(false, () =>{
|
|
|
+ uni.showLoading({
|
|
|
+ title: '加载中……',
|
|
|
+ icon: 'none',
|
|
|
+ })
|
|
|
+ setTimeout(() => {
|
|
|
+ wx.canvasToTempFilePath({
|
|
|
+ canvasId: 'firstCanvas',
|
|
|
+ x:0,
|
|
|
+ y:0,
|
|
|
+ success:(res)=>{
|
|
|
+ console.log('成功', res)
|
|
|
+ imgSrc.value = res.tempFilePath
|
|
|
|
|
|
+ },
|
|
|
+ fail:(err)=>{
|
|
|
+ console.log('canvasToTemp-fail', err)
|
|
|
+ },
|
|
|
+ complete:()=>{
|
|
|
+ uni.hideLoading();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }, 3000)
|
|
|
+ // canvas生成图片
|
|
|
+ poster.value.open()
|
|
|
+ })
|
|
|
}
|
|
|
-.avatarBox{
|
|
|
- max-width: 40px;
|
|
|
- max-height: 40px;
|
|
|
- margin: 0 10px;
|
|
|
-}
|
|
|
-.avatar{
|
|
|
- width: 40px;
|
|
|
- height: 40px;
|
|
|
-}
|
|
|
|
|
|
-.sub-li-bottom {
|
|
|
+
|
|
|
+</script>
|
|
|
+<style scoped lang="scss">
|
|
|
+@import '../../static/style/position/index.scss';
|
|
|
+.bottom-content {
|
|
|
display: flex;
|
|
|
- justify-content:space-between;
|
|
|
+ justify-content: space-evenly;
|
|
|
align-items: center;
|
|
|
- background: linear-gradient(90deg, #f5fcfc 0, #fcfbfa 100%);
|
|
|
- font-size: 13px;
|
|
|
- padding: 5px 30rpx;
|
|
|
-}
|
|
|
-
|
|
|
-.salary {
|
|
|
- color: #fe574a;
|
|
|
- line-height: 41px;
|
|
|
- font-weight: 600;
|
|
|
- height: auto;
|
|
|
- display: inline-block;
|
|
|
- vertical-align: sub;
|
|
|
-}
|
|
|
-.list-shape {
|
|
|
- padding: 10px 30rpx 10px;
|
|
|
- margin-top: 10px;
|
|
|
- background-color: #fff;
|
|
|
- .titleBox {
|
|
|
+ width: 100%;
|
|
|
+ margin: 20rpx 0;
|
|
|
+ .btnStyle {
|
|
|
+ flex: 1;
|
|
|
+ margin-right: 20rpx;
|
|
|
+ }
|
|
|
+ .bgButtons {
|
|
|
+ border: 2rpx solid #00897b;
|
|
|
+ color: #00897b;
|
|
|
+ background: #FFF;
|
|
|
+ border-radius: 50rpx;
|
|
|
+ }
|
|
|
+ &-tool {
|
|
|
+ width: 160rpx;
|
|
|
display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ flex-direction: column;
|
|
|
align-items: center;
|
|
|
- justify-content: space-between;
|
|
|
}
|
|
|
}
|
|
|
-.viewider-mx{
|
|
|
- margin: 0 10rpx;
|
|
|
-}
|
|
|
-.viewider {
|
|
|
- color:#e4d4d2;
|
|
|
-}
|
|
|
-
|
|
|
-//公司名称
|
|
|
-.cer-end{
|
|
|
- position: absolute;
|
|
|
- top: 85%;
|
|
|
- right: 16%;
|
|
|
-}
|
|
|
-.cer-text{
|
|
|
- text-decoration: underline;
|
|
|
- margin: 0 5rpx;
|
|
|
-}
|
|
|
-//一行展示不全...
|
|
|
-.dis{
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
-}
|
|
|
-.showPopup-more{
|
|
|
- width: 26vw;
|
|
|
- white-space: nowrap;
|
|
|
- overflow: hidden;
|
|
|
- text-overflow: ellipsis;
|
|
|
-}
|
|
|
-/* 列表触底暂无更多 */
|
|
|
-.noMore{ text-align:center; color:grey; }
|
|
|
-.mt { margin-top: 10rpx; }
|
|
|
-.mb { margin-bottom: 10rpx; }
|
|
|
-.ml { margin-left: 20rpx; }
|
|
|
-.mr { margin-right: 20rpx; }
|
|
|
-.mr-10{ margin-right: 10rpx; }
|
|
|
-.my-5{ margin: 5px 0; }
|
|
|
-
|
|
|
-
|
|
|
-// 选择简历
|
|
|
-.dialogBox {
|
|
|
- .dialog-title {
|
|
|
+.share-pop {
|
|
|
+ width: 100%;
|
|
|
+ // height:300rpx;
|
|
|
display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- align-items: center;
|
|
|
- color:#767a82;
|
|
|
- padding: 20rpx;
|
|
|
- .title {
|
|
|
- font-weight: bold;
|
|
|
- margin-left: 10rpx;
|
|
|
+ justify-content: center;
|
|
|
+ .f-straight {
|
|
|
+ margin: 40rpx;
|
|
|
+ background: unset;
|
|
|
+ &::after{
|
|
|
+ border:none !important;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- .dialog-content{
|
|
|
- padding: 20rpx;
|
|
|
- padding-bottom: 50rpx;
|
|
|
- .selected {
|
|
|
- background-color: #00897b !important;
|
|
|
+ .share-round {
|
|
|
+ border-radius:50%;
|
|
|
+ height:100rpx;
|
|
|
+ width:100rpx;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
}
|
|
|
- }
|
|
|
- .selectOnline {
|
|
|
- font-size: 14px;
|
|
|
- color: #00897b;
|
|
|
- text-align: center;
|
|
|
- margin-top: 10rpx;
|
|
|
- }
|
|
|
- .dialog-bottom{
|
|
|
- width: 100%;
|
|
|
- height: 44px;
|
|
|
- line-height: 44px;
|
|
|
- text-align: center;
|
|
|
- color: #fff !important;
|
|
|
- background-color: #00897b !important;
|
|
|
+ .share-round-1 {
|
|
|
+ background-color:#22a039;
|
|
|
+ }
|
|
|
+ .share-round-2 {
|
|
|
+ background-color:#3693cd;
|
|
|
+ }
|
|
|
+}
|
|
|
+.preview {
|
|
|
+ position: fixed;
|
|
|
+ z-index: 9;
|
|
|
+ height: 100vh;
|
|
|
+ width: 100vw;
|
|
|
+ left: 0;
|
|
|
+ top: 0;
|
|
|
+ .image {
|
|
|
+ position: absolute;
|
|
|
+ width: 80%;
|
|
|
+ left: 10%;
|
|
|
+ top: 100rpx;
|
|
|
}
|
|
|
}
|
|
|
</style>
|