Pārlūkot izejas kodu

Web兼职详情优化(部分)

xinfeng 6 gadi atpakaļ
vecāks
revīzija
226e4c035b

+ 140 - 94
assets/css/job/_post_id.scss

@@ -11,98 +11,22 @@
     }
   }
   .contentArea {
-    margin: 0 auto;
+    margin: 0 auto 50px auto;
     width: 1000px;
     min-height: 450px;
     background: rgba(255, 255, 255, 1);
     padding: 45px 20px;
-    display: flex;
-    justify-content: space-between;
-    .leftArea {
-      width: 740px;
+
+    .jobTitleArea {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
       .jobTitle {
         font-size: 22px;
         font-weight: 500;
         color: rgba(34, 34, 34, 1);
         line-height: 30px;
       }
-      .publishTime, .workTime, .skills {
-        margin-top: 13px;
-        height: 20px;
-        font-size: 14px;
-        font-weight: 600;
-        color: rgba(51, 51, 51, 1);
-        line-height: 20px;
-        color: #333333;
-        span {
-          margin-left: 5px;
-          font-size: 14px;
-          color: rgba(51, 51, 51, 1);
-          line-height: 20px;
-          color: #333333;
-          font-weight: 400;
-        }
-      }
-      .publishTime {
-        margin-top: 23px;
-      }
-      .desc {
-        min-height: 160px;
-        margin-top: 40px;
-        .descTitle {
-          font-size: 13px;
-          font-weight: 600;
-          color: rgba(51, 51, 51, 1);
-          line-height: 27px;
-          color: #333;
-        }
-        .descValue {
-          font-size: 13px;
-          font-weight: 400;
-          color: rgba(51, 51, 51, 1);
-          line-height: 27px;
-          color: #333;
-        }
-      }
-      .btnArea {
-        margin-top: 16px;
-        .btn {
-          width: 165px;
-          height: 40px;
-          background: rgba(48, 142, 255, 1);
-          box-shadow: 0px 2px 6px 0px rgba(48, 142, 255, 0.3);
-          border-radius: 2px;
-          display: flex;
-          justify-content: center;
-          align-items: center;
-          cursor: pointer;
-          p {
-            height: 20px;
-            font-size: 14px;
-            font-weight: 500;
-            color: rgba(255, 255, 255, 1);
-            line-height: 20px;
-          }
-          &.submitNow {
-            background: rgba(48, 142, 255, 1);
-            box-shadow: 0px 2px 6px 0px rgba(48, 142, 255, 0.3);
-            p {
-              color: rgba(255, 255, 255, 1);
-            }
-          }
-
-          &.noneClick {
-            opacity: 0.7;
-            cursor: not-allowed;
-          }
-        }
-      }
-    }
-    .rightArea {
-      display: flex;
-      align-items: flex-end;
-      flex-direction: column;
-
       .jobPrice {
         height: 30px;
         font-size: 22px;
@@ -111,12 +35,34 @@
         line-height: 30px;
         text-align: right;
       }
+    }
+
+    .workTime, .skills {
+      margin-top: 17px;
+      height: 20px;
+      font-size: 14px;
+      font-weight: 600;
+      color: rgba(51, 51, 51, 1);
+      line-height: 20px;
+      color: #333333;
+      span {
+        margin-left: 5px;
+        font-size: 14px;
+        color: rgba(51, 51, 51, 1);
+        line-height: 20px;
+        color: #333333;
+        font-weight: 400;
+      }
+    }
+    .publishUser {
+      display: flex;
+      align-items: center;
+      margin-top: 20px;
+
       .userInfo {
         text-align: right;
-        margin-top: 25px;
         min-width: 140px;
         display: flex;
-        flex-direction: column;
         align-items: center;
         cursor: pointer;
         .img {
@@ -130,6 +76,7 @@
           }
         }
         .name {
+          margin-left: 10px;
           text-align: center;
           height: 20px;
           font-size: 14px;
@@ -139,6 +86,109 @@
           margin-top: 4px;
         }
       }
+      .publishTime {
+        margin-left: 43px;
+        width:79px;
+        height:20px;
+        font-size:14px;
+        font-weight:400;
+        color:rgba(51,51,51,1);
+        line-height:20px;
+      }
+    }
+
+    .desc {
+      min-height: 40px;
+      margin-top: 40px;
+      .descTitle {
+        font-size: 13px;
+        font-weight: 600;
+        color: rgba(51, 51, 51, 1);
+        line-height: 27px;
+        color: #333;
+      }
+      .descValue {
+        font-size: 13px;
+        font-weight: 400;
+        color: rgba(51, 51, 51, 1);
+        line-height: 27px;
+        color: #333;
+      }
+    }
+
+    .companyInfoArea {
+      margin-top: 26px;
+      .companyTitle {
+        height:27px;
+        font-size:15px;
+        font-weight:600;
+        color:rgba(51,51,51,1);
+        line-height:27px;
+      }
+      .companyInfo {
+        margin-top: 5px;
+        display: flex;
+        align-items: center;
+        .img {
+          width: 36px;
+          height: 36px;
+          img {
+            width: 36px;
+            height: 36px;
+            border-radius: 2px;
+          }
+        }
+        .ctitle {
+          margin-left: 5px;
+          height:27px;
+          font-size:14px;
+          font-weight:400;
+          color:rgba(51,51,51,1);
+          line-height:27px;
+        }
+      }
+    }
+
+    .btnArea {
+      margin-top: 32px;
+      .btn {
+        width: 165px;
+        height: 40px;
+        background: rgba(48, 142, 255, 1);
+        box-shadow: 0px 2px 6px 0px rgba(48, 142, 255, 0.3);
+        border-radius: 2px;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        cursor: pointer;
+        p {
+          height: 20px;
+          font-size: 14px;
+          font-weight: 500;
+          color: rgba(255, 255, 255, 1);
+          line-height: 20px;
+        }
+        &.submitNow {
+          background: rgba(48, 142, 255, 1);
+          box-shadow: 0px 2px 6px 0px rgba(48, 142, 255, 0.3);
+          p {
+            color: rgba(255, 255, 255, 1);
+          }
+        }
+
+        &.noneClick {
+          opacity: 0.7;
+          cursor: not-allowed;
+        }
+      }
+    }
+
+    .rightArea {
+      display: flex;
+      align-items: flex-end;
+      flex-direction: column;
+
+
 
       .qrcode {
         margin: 50px auto 0 auto;
@@ -192,7 +242,6 @@
       overflow-y: scroll;
       -webkit-overflow-scrolling: touch;
 
-
       .header {
         overflow: hidden;
         padding-top: remtovw(.72);
@@ -473,9 +522,7 @@
           }
         }
 
-
-
-        &.myJobDetail  {
+        &.myJobDetail {
           display: flex;
           width: 100%;
           align-items: center;
@@ -503,7 +550,6 @@
             }
           }
 
-
         }
       }
       .tips-wrapper {
@@ -600,11 +646,11 @@
         }
 
         &.applyBtn {
-          background:rgba(255,255,255,1);
-          box-shadow:0px 1px 8px 0px rgba(13,24,36,0.07);
-          border-radius:pxtovw(2);
-          font-weight:500;
-          color:#333;
+          background: rgba(255, 255, 255, 1);
+          box-shadow: 0px 1px 8px 0px rgba(13, 24, 36, 0.07);
+          border-radius: pxtovw(2);
+          font-weight: 500;
+          color: #333;
         }
       }
     }

+ 36 - 22
assets/css/job/index.scss

@@ -221,16 +221,18 @@
             margin-top: 5px;
             flex-shrink: 0;
             width: 90%;
-            height:25px;
-            line-height: 25px;
+            min-height: 20px;
+            max-height: 40px;
+            line-height: 20px;
             font-size:13px;
             font-weight:500;
             color:rgba(102,102,102,1);
             text-align: left;
-            word-break: keep-all;
-            white-space: nowrap;
+            display: -webkit-box;
             overflow: hidden;
             text-overflow: ellipsis;
+            -webkit-box-orient: vertical;
+            -webkit-line-clamp: 2;
           }
           .labelList {
             margin-top: 5px;
@@ -254,35 +256,47 @@
               }
             }
           }
-          .companyInfo {
+          .bottomArea {
             margin-top: 20px;
-            display: flex;
             width: 100%;
-            justify-content: flex-start;
+            display: flex;
+            justify-content: space-between;
             align-items: center;
-            cursor: pointer;
-            .logo {
-              width:20px;
-              height:20px;
-              font-size: 0;
-              img {
+
+            .companyInfo {
+              display: flex;
+              width: 70%;
+              justify-content: flex-start;
+              align-items: center;
+              .logo {
                 width:20px;
                 height:20px;
-                border-radius: 2px;
+                font-size: 0;
+                img {
+                  width:20px;
+                  height:20px;
+                  border-radius: 2px;
+                }
+              }
+              .companyName {
+                margin-left: 7px;
+                height:18px;
+                font-size:13px;
+                font-weight:400;
+                color:rgba(51,51,51,1);
+                line-height:18px;
+                text-align: left;
               }
             }
-            .companyName {
-              margin-left: 7px;
-              height:18px;
-              font-size:13px;
+            .publishTime {
+              flex-shrink: 0;
+              height:20px;
+              font-size:14px;
               font-weight:400;
               color:rgba(51,51,51,1);
-              line-height:18px;
-              text-align: left;
+              line-height:20px;
             }
-
           }
-
         }
         .noneData {
           min-height: 100px;

+ 273 - 0
components/job/download.vue

@@ -0,0 +1,273 @@
+<template>
+  <div :class="{connectUs: !mobile, connectUsMobile: mobile}">
+    <div class="toastBox" v-if="isShowToast">
+      <div class="toastArea">
+        <div class="title">行业解决方案专属客服</div>
+        <div class="tips">填写联系方式 立即与专属客服进行沟通</div>
+        <div class="nameCell">
+          <p class="label">联系人</p>
+          <input type="text" v-model="name" maxlength="10">
+        </div>
+        <div class="phoneCell">
+          <p class="label">电话</p>
+          <input type="number" v-model="phone" oninput="if(value.length>5)value=value.slice(0,11)">
+        </div>
+        <div class="submitBtn" @click="handleSubmit">
+          <p>提 交</p>
+        </div>
+        <div class="closeIcon" @click="close"/>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: ["source", "isShowToast", "sourceId"],
+  components: {},
+  data() {
+    return {
+      name: "",
+      phone: "",
+      mobile: this.$deviceType.isMobile()
+    };
+  },
+  computed: {},
+  mounted() {
+    const {realname = '', login_mobile = '', mobile=''} = this.$store.state.userinfo || {}
+    this.name = realname
+    this.phone = login_mobile || mobile
+  },
+  methods: {
+    close() {
+      this.$emit('close')
+    },
+    handleSubmit() {
+      if (!this.name || !this.phone || this.phone.length < 6) {
+        return this.$message.error('请填写完整的信息')
+      }
+      const UA = ['Mobile 浏览器', 'PC 浏览器', 'Android', 'IOS']
+      let agent = 'PC 浏览器'
+      if (this.$deviceType.android) {
+        agent = 'Android'
+      } else if (this.$deviceType.ios) {
+        agent = 'IOS'
+      } else if (this.$deviceType.isMobile()) {
+        agent = 'Mobile 浏览器'
+      }
+      const { name, phone, source, sourceId } = this
+      let p = {
+        name, phone, from: source, agent
+      }
+      if (sourceId) {
+        p.id = sourceId
+      }
+      this.$axios.$post('/api/user/create_not_login_user', p).then(res => {
+        this.$message.success(res.info || '提交成功')
+        this.$emit('close')
+        if (res.status === 1) {
+          this.name = ''
+          this.phone = ''
+        }
+      }).catch(e => {
+        this.$message.error('提交失败,请重试!')
+      })
+    }
+  }
+};
+</script>
+
+<style lang="scss">
+  @import "~@/assets/css/scssCommon.scss";
+.connectUs {
+  .toastBox {
+    position: fixed;
+    width: 100vw;
+    height: 100vh;
+    background-color: rgba(0, 0, 0, 0.8);
+    z-index: 888;
+    left: 0;
+    top: 0;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+
+    .toastArea {
+      position: relative;
+      width: 446px;
+      height: 403px;
+      background: rgba(255, 255, 255, 1);
+      border-radius: 3px;
+      padding: 30px 47px;
+
+      .title {
+        font-size: 19px;
+        font-weight: 500;
+        color: rgba(34, 34, 34, 1);
+        line-height: 26px;
+        text-align: center;
+      }
+
+      .tips {
+        margin-top: 8px;
+        margin-bottom: 14px;
+        font-size: 12px;
+        font-weight: 400;
+        color: rgba(153, 153, 153, 1);
+        line-height: 17px;
+        text-align: center;
+      }
+
+      .nameCell, .phoneCell {
+        margin-top: 25px;
+
+        .label {
+          font-size: 14px;
+          font-weight: 500;
+          color: rgba(25, 34, 46, 1);
+          line-height: 20px;
+        }
+        input {
+          margin-top: 5px;
+          padding: 10px;
+          width: 352px;
+          height: 48px;
+          background: rgba(255, 255, 255, 1);
+          border-radius: 3px;
+          border: 1px solid rgba(221, 225, 230, 1);
+        }
+      }
+      .nameCell {
+        margin-top: 39px;
+      }
+
+      .submitBtn {
+        margin-top: 18px;
+        width: 352px;
+        height: 48px;
+        background: rgba(48, 142, 255, 1);
+        box-shadow: 0 2px 6px 0 rgba(48, 142, 255, 0.3);
+        border-radius: 2px;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        cursor: pointer;
+        p {
+          font-size: 14px;
+          font-weight: 500;
+          color: rgba(255, 255, 255, 1);
+          line-height: 20px;
+        }
+      }
+
+      .closeIcon {
+        position: absolute;
+        right: 20px;
+        top: 34px;
+        width: 16px;
+        height: 16px;
+        background: url('~@/assets/img/credit/closeIcon.png') no-repeat;
+        background-size: cover;
+        cursor: pointer;
+      }
+    }
+
+  }
+
+}
+.connectUsMobile {
+  .toastBox {
+    position: fixed;
+    width: 100vw;
+    height: 100vh;
+    background-color: rgba(0, 0, 0, 0.8);
+    z-index: 888;
+    left: 0;
+    top: 0;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+
+    .toastArea {
+      position: relative;
+      width: pxtovw(355);
+      height: pxtovw(403);
+      background: rgba(255, 255, 255, 1);
+      border-radius: pxtovw(3);
+      padding: pxtovw(30) pxtovw(30);
+
+      .title {
+        font-size: pxtovw(19);
+        font-weight: 500;
+        color: rgba(34, 34, 34, 1);
+        line-height: pxtovw(26);
+        text-align: center;
+      }
+
+      .tips {
+        margin-top: pxtovw(8);
+        margin-bottom: pxtovw(14);
+        font-size: pxtovw(12);
+        font-weight: 400;
+        color: rgba(153, 153, 153, 1);
+        line-height: pxtovw(17);
+        text-align: center;
+      }
+
+      .nameCell, .phoneCell {
+        margin-top: pxtovw(25);
+
+        .label {
+          font-size: pxtovw(14);
+          font-weight: 500;
+          color: rgba(25, 34, 46, 1);
+          line-height: pxtovw(20);
+        }
+        input {
+          margin-top: pxtovw(5);
+          padding: pxtovw(10);
+          width: pxtovw(295);
+          height: pxtovw(48);
+          background: rgba(255, 255, 255, 1);
+          border-radius: pxtovw(3);
+          border: pxtovw(1) solid rgba(221, 225, 230, 1);
+        }
+      }
+      .nameCell {
+        margin-top: pxtovw(39);
+      }
+
+      .submitBtn {
+        margin-top: pxtovw(18);
+        width: pxtovw(295);
+        height: pxtovw(48);
+        background: rgba(48, 142, 255, 1);
+        box-shadow: 0 pxtovw(2) pxtovw(6) 0 rgba(48, 142, 255, 0.3);
+        border-radius: pxtovw(2);
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        cursor: pointer;
+        p {
+          font-size: pxtovw(14);
+          font-weight: 500;
+          color: rgba(255, 255, 255, 1);
+          line-height: pxtovw(20);
+        }
+      }
+
+      .closeIcon {
+        position: absolute;
+        right: pxtovw(20);
+        top: pxtovw(34);
+        width: pxtovw(16);
+        height: pxtovw(16);
+        background: url('~@/assets/img/credit/closeIcon.png') no-repeat;
+        background-size: cover;
+        cursor: pointer;
+      }
+    }
+
+  }
+}
+</style>

+ 81 - 69
pages/job/detail/_id.vue

@@ -34,8 +34,8 @@
       </div>
 
       <!--发布者&&是企业身份,增加招聘数据展示-->
-      <div class="data-wrapper myJobDetail"  @click="jumpToDetail('communicated')" v-if="recruitData.role==='owner'">
-      <!--<div class="data-wrapper myJobDetail">-->
+      <div class="data-wrapper myJobDetail" @click="jumpToDetail('communicated')" v-if="recruitData.role==='owner'">
+        <!--<div class="data-wrapper myJobDetail">-->
         <div class="data-title">招聘数据</div>
         <div class="value-box">
           <div class="left">已投递: <span>{{recruitData.countApplied || 0}}</span>
@@ -56,7 +56,7 @@
         <div class="data-title">公司信息</div>
         <div class="value-box">
           <div class="left">
-            <img :src="defaultIcon(recruitData.companyInfo && recruitData.companyInfo.logo)" alt="" />
+            <img :src="defaultIcon(recruitData.companyInfo && recruitData.companyInfo.logo)" alt=""/>
           </div>
           <div class="center">
             <div class="ctitle" :class="calcCompanyVip"><p>{{recruitData.companyInfo.name}}</p></div>
@@ -96,7 +96,8 @@
       <!--不是发布者-->
       <template v-else-if="recruitData.role==='developer'">
         <div class="btn-list" v-if="recruitData.status==='3'">
-          <div class="btn-item applyBtn" @click="handleSendClick()" :class="{none: Number(recruitData.applicationState) === 1}">
+          <div class="btn-item applyBtn" @click="handleSendClick()"
+            :class="{none: Number(recruitData.applicationState) === 1}">
             {{Number(recruitData.applicationState) === 1 ? '已投递': '投递'}}
           </div>
           <div class="btn-item " @click="handleContactClick()">
@@ -126,32 +127,18 @@
         :href="item.url"
         :title="item.name"
       >
-        <p v-if="index!==breadcrumbList.length-1">{{item.name}} <span>&nbsp;>&nbsp;</span> </p>
+        <p v-if="index!==breadcrumbList.length-1">{{item.name}} <span>&nbsp;>&nbsp;</span></p>
         <h1 v-else>{{item.name}}</h1>
       </a>
     </div>
     <div class="contentArea">
-      <div class="leftArea">
+      <div class="jobTitleArea">
         <div class="jobTitle">{{recruitData.title}}</div>
-        <div class="publishTime">发布时间:<span>{{recruitData.auditAtFormat}}</span></div>
-        <div class="workTime">经验要求:<span>{{recruitData.experienceName}}</span></div>
-        <div class="skills">技能要求:<span>{{recruitData.skills.map(s=> s.name).join(',')}}</span></div>
-        <div class="desc">
-          <div class="descTitle">
-            工作描述:
-          </div>
-          <div class="descValue" v-html="whiteSpace(recruitData.description)">>
-
-          </div>
-        </div>
-        <div class="btnArea">
-          <div class="btn submitNow" :class="{noneClick: recruitData.role === 'owner'}" @click="showGoAppTipsHandler">
-            <p>立即申请</p>
-          </div>
-        </div>
-      </div>
-      <div class="rightArea">
         <div class="jobPrice">{{recruitData.salaryName}}</div>
+      </div>
+      <div class="skills">技能要求:<span>{{recruitData.skills.map(s=> s.name).join(',')}}</span></div>
+      <div class="workTime">经验要求:<span>{{recruitData.experienceName}}</span></div>
+      <div class="publishUser">
         <div class="userInfo" @click="jumpToCompany">
           <div class="img" :class="calcUserVip">
             <img :src="defaultIcon(recruitData.ownerInfo && recruitData.ownerInfo.iconUrl)" alt="">
@@ -160,16 +147,41 @@
             {{recruitData.ownerInfo.nickname}}
           </div>
         </div>
-        <div class="qrcode" v-if="qrCodeBase64">
-          <img class="code" :src="qrCodeBase64" alt="">
-          <img class="logo" src="~@/assets/img/job/logo_icon_reverse2.jpg" alt="">
+        <div class="publishTime"><span>{{recruitData.auditAtFormat}}</span></div>
+      </div>
+      <div class="desc">
+        <div class="descTitle">
+          工作描述:
+        </div>
+        <div class="descValue" v-html="whiteSpace(recruitData.description)">>
+
+        </div>
+      </div>
+
+      <div class="companyInfoArea">
+        <div class="companyTitle">公司信息</div>
+        <div class="companyInfo">
+          <div class="img">
+            <img :src="defaultIcon(recruitData.companyInfo && recruitData.companyInfo.logo)" alt=""/>
+          </div>
+          <div class="ctitle" :class="calcCompanyVip"><p>{{recruitData.companyInfo.name}}</p></div>
+        </div>
+      </div>
+      <div class="btnArea">
+        <div class="btn submitNow" :class="{noneClick: recruitData.role === 'owner'}" @click="showGoAppTipsHandler">
+          <p>立即申请</p>
         </div>
-        <p class="tips">使用程序员客栈APP,扫描二维码,</p>
-        <p class="tips">直接与雇主沟通!</p>
       </div>
     </div>
+    <!--<div class="rightArea">-->
+    <!--<div class="qrcode" v-if="qrCodeBase64">-->
+    <!--<img class="code" :src="qrCodeBase64" alt="">-->
+    <!--<img class="logo" src="~@/assets/img/job/logo_icon_reverse2.jpg" alt="">-->
+    <!--</div>-->
+    <!--<p class="tips">使用程序员客栈APP,扫描二维码,</p>-->
+    <!--<p class="tips">直接与雇主沟通!</p>-->
+    <!--</div>-->
     <BottomBanner></BottomBanner>
-
     <SeoFooter style="margin-top: 30px;" :data="footer"/>
   </div>
 </template>
@@ -196,7 +208,7 @@
   const PERSONAL = 2;
   export default {
     name: "JobListSeoDetail",
-    components: {SeoFooter, BottomBanner},
+    components: { SeoFooter, BottomBanner },
     data() {
       return {
         showConfirm: false,
@@ -218,11 +230,11 @@
           'content': `${this.recruitData.title}`
         } ],
         link: [
-          { rel: 'canonical', href:  this.nowUrl},
+          { rel: 'canonical', href: this.nowUrl },
         ]
       }
     },
-    async asyncData({...params}) {
+    async asyncData({ ...params }) {
       try {
         params.store.commit("updateNoneCommonFooter", true)
       } catch ( e ) {
@@ -246,9 +258,9 @@
 
       /** 处理面包屑导航 **/
       let dealBreadcrumbList = [
-          { name: '首页', url: "/" },
-          { name: '兼职招聘', url: "/job/" },
-          { name: recruitData.title, url: `/job/detail/${recruitData.id}.html` },
+        { name: '首页', url: "/" },
+        { name: '兼职招聘', url: "/job/" },
+        { name: recruitData.title, url: `/job/detail/${recruitData.id}.html` },
       ]
 
       let dealSeoFooterObj = new DealSeoFooter(params, recruitData)
@@ -256,7 +268,7 @@
 
       let nowUrl = ""
       try {
-        const { headers: {host} } = params.app.context.req || {};
+        const { headers: { host } } = params.app.context.req || {};
         let { fullPath } = params.app.context.route
         //设置baseLink
         if (host.indexOf('local') !== -1) {
@@ -264,7 +276,7 @@
         } else {
           nowUrl = 'https://' + host + fullPath
         }
-      } catch (e) {
+      } catch ( e ) {
         console.log(e)
       }
 
@@ -330,34 +342,34 @@
       }
       //处理分享信息
       //
-     if (this.$deviceType.app) {
-       try {
-         // briefIntroduction: "全球不哈的吧"
-         // description: "测试公司介绍"
-         // logo: "https://inn.proginn.com/useralbum/666709/5e43f82e9fe94/recordsay1581512750.jpg"
-         // name: "程序员"
-         // shortName: ""
-         // uid: "666709"
-         // website: "http://jjjjjj"
-         let {companyInfo: {name, shortName, logo}, description, occupationName, workTypeName,salaryName } = this.recruitData
-         let companyName = shortName || name
-         if (companyName.length > 7) {
-           companyName = companyName.slice(0, 7) + '...'
-         }
-         let shareData = {
-           title: `【程序员客栈】强烈推荐!${companyName}正在招聘${workTypeName}兼职${occupationName}工程师,待遇${salaryName}!`,
-           description: "找程序员上程序员客栈~ ",
-           logo_url: logo
-         }
-         console.log("分享信息", shareData )
-         if (this.$deviceType.android) {
-           shareData = JSON.stringify(shareData)
-         }
-         window.app_event.load_share_data(shareData)
-       } catch (e) {
-         console.log("处理分享信息 error ", e)
-       }
-     }
+      if (this.$deviceType.app) {
+        try {
+          // briefIntroduction: "全球不哈的吧"
+          // description: "测试公司介绍"
+          // logo: "https://inn.proginn.com/useralbum/666709/5e43f82e9fe94/recordsay1581512750.jpg"
+          // name: "程序员"
+          // shortName: ""
+          // uid: "666709"
+          // website: "http://jjjjjj"
+          let { companyInfo: { name, shortName, logo }, description, occupationName, workTypeName, salaryName } = this.recruitData
+          let companyName = shortName || name
+          if (companyName.length > 7) {
+            companyName = companyName.slice(0, 7) + '...'
+          }
+          let shareData = {
+            title: `【程序员客栈】强烈推荐!${companyName}正在招聘${workTypeName}兼职${occupationName}工程师,待遇${salaryName}!`,
+            description: "找程序员上程序员客栈~ ",
+            logo_url: logo
+          }
+          console.log("分享信息", shareData)
+          if (this.$deviceType.android) {
+            shareData = JSON.stringify(shareData)
+          }
+          window.app_event.load_share_data(shareData)
+        } catch ( e ) {
+          console.log("处理分享信息 error ", e)
+        }
+      }
     },
     methods: {
       async getRecruit() {
@@ -440,7 +452,7 @@
       },
       async handleContactClick() {
         // 是否是APP
-        if ( this.judgeToDownloadApp() ) {
+        if (this.judgeToDownloadApp()) {
           return
         }
         if (this.recruitData.loginStatus === -99) {
@@ -473,7 +485,7 @@
       /** 投递 **/
       async handleSendClick() {
         // 是否是APP
-        if ( this.judgeToDownloadApp() ) {
+        if (this.judgeToDownloadApp()) {
           return
         }
         const { applicationState, id } = this.recruitData
@@ -580,7 +592,7 @@
       },
       //创建二维码
       createCode(url) {
-        console.log('warn' ,url)
+        console.log('warn', url)
         qrcode.toDataURL(url, {
           width: 250,
           margin: 0,

+ 8 - 4
pages/job/index.vue

@@ -66,12 +66,16 @@
                 <div class="workDesc">{{item.description}}</div>
                 <div class="labelList">
                   <div class="label" v-for="skill in (item.skills || [])"><p>{{skill.name}}</p></div>
+                  <div class="label"><p>{{item.experienceName}}</p></div>
                 </div>
-                <div class="companyInfo" @click.stop="jumpToCompanyInfo(item)">
-                  <div class="logo">
-                    <img :src="item.companyInfo.logo" alt=""/>
+                <div class="bottomArea">
+                  <div class="companyInfo">
+                    <div class="logo">
+                      <img :src="item.companyInfo.logo" alt=""/>
+                    </div>
+                    <div class="companyName">{{item.companyInfo.name || item.companyInfo.shortName}}</div>
                   </div>
-                  <div class="companyName">{{item.companyInfo.name || item.companyInfo.shortName}}</div>
+                  <div class="publishTime">{{item.createdAtFormat}}</div>
                 </div>
               </nuxt-link>
               <div v-if="dataList.length === 0" class="noneData">