Explorar o código

Merge branch 'dev-yc' into dev

ccf %!s(int64=4) %!d(string=hai) anos
pai
achega
9173f0867d

+ 1 - 0
components/header.vue

@@ -1137,6 +1137,7 @@ span.other-icon {
 .dashboard-title {
   color: #515151;
   font-size: 15px;
+  font-weight: normal;
 }
 
 .dashboard-title.on {

+ 90 - 58
pages/frontend/skill_cert/profile.vue

@@ -20,54 +20,56 @@
       </div>
       <div class="item" v-for="(item,index) in conditions" :key="index">
         <span class="text">{{item.text}}</span>
-        <a v-if="item.linkUrl" class="action" :href="item.linkUrl">{{item.linkName}}</a>
+        <a v-if="item.linkUrl" class="action" :href="item.linkUrl" target="view_window">{{item.linkName}}</a>
       </div>
     </div>
     <div class="col-title width-infinity">
       <span class="label">填写表单</span>
     </div>
+    <p class="field-tips">您选择的标签和领域将用于匹配面试官和派单匹配,请谨慎填写</p>
     <div class="field-selector">
       <span class="selector-title">选择领域:</span>
-      <div v-for="(item) in fields" :class="['fields',item.disabled?'tag--disabled':'']" :key="item.occupation_id"
-           @click="onFieldSelected(item.occupation_id)">
+      <div v-for="(item) in fields" class="fields" :key="item.occupation_id"
+           @click="onFieldSelected(item.occupation_id,item.disabled)">
         <div class="tag" v-if="item.selected">
           <span class="text">{{item.occupation_name}}</span>
         </div>
-        <div class="tag tag--unchecked" v-else>
+        <div :class="['tag','tag--unchecked',item.disabled?'tag--disabled':'']" v-else>
           <span class="text text--unchecked">{{item.occupation_name}}</span>
         </div>
       </div>
     </div>
-    <div class="tag-selector">
+    <div class="tag-selector" v-show="currentFieldId">
       <span class="selector-title">选择标签:</span>
       <div class="tag" v-for="(item,index) in tagsSelected" :key="index">
         <span class="text">{{item.skill_name}}</span>
         <img class="icon" src="@/assets/img/skill_cert/icon_remove.png" alt="" @click="onRemoveTag(index)"/>
       </div>
-      <el-input style="display:none;" class="tag-input" v-model="tagText" placeholder="请输入自定义标签" clearable @change="onInputChange"></el-input>
+      <el-input style="display:none;" class="tag-input" v-model="tagText" placeholder="请输入自定义标签" clearable
+                @change="onInputChange"></el-input>
     </div>
-    <div class="tags">
-      <div style="width: 100%;margin-bottom: 15px;font-weight: bold">语言标签:</div>
+    <div class="tags" v-show="currentFieldId">
+      <div style="width: 100%;margin-bottom: 15px;font-weight: bold" v-show="tags_2.length">语言标签:</div>
       <div class="tag" v-for="(item) in tags_2" :key="item.skill_id" @click="onTagSelected(item)">
         <span class="text">{{item.skill_name}}</span>
       </div>
-      <div style="width: 100%;margin-bottom: 15px;font-weight: bold">应用场景/框架/工具等标签:</div>
+      <div style="width: 100%;margin-bottom: 15px;font-weight: bold" v-show="tags_3.length">应用场景/框架/工具等标签:</div>
       <div class="tag" v-for="(item) in tags_3" :key="item.skill_id" @click="onTagSelected(item)">
         <span class="text">{{item.skill_name}}</span>
       </div>
-      <div style="width: 100%;margin-bottom: 15px;font-weight: bold">行业/项目标签:</div>
+      <div style="width: 100%;margin-bottom: 15px;font-weight: bold" v-show="tags_4.length">行业/项目标签:</div>
       <div class="tag" v-for="(item) in tags_4" :key="item.skill_id" @click="onTagSelected(item)">
         <span class="text">{{item.skill_name}}</span>
       </div>
     </div>
-    <div class="level-selector" @click="toLevelsDesc">
+    <div class="level-selector" @click="toLevelsDesc" v-show="currentFieldId">
       <div class="col-title">
         <span class="label">选择认证等级</span>
       </div>
       <span class="action">等级对照表</span>
       <img class="icon" src="@/assets/img/skill_cert/icon_tips.png" alt=""/>
     </div>
-    <div class="level-selector">
+    <div class="level-selector" v-show="currentFieldId">
       <el-select v-model="level" placeholder="认证等级" clearable @change="handleLevelChange">
         <el-option
           v-for="dict in levels"
@@ -77,10 +79,12 @@
         />
       </el-select>
     </div>
-    <div v-if="img_show" class="col-title width-infinity upload-title">
+    <p class="field-tips" v-show="currentFieldId" style="margin-top: 10px">认证收费将支付给面试官,而非平台,详情见等级对照表</p>
+    <div v-show="imgShow" class="col-title width-infinity upload-title">
       <span class="label">上传薪资证明</span>
     </div>
-    <div v-if="img_show" class="width-infinity">
+    <p v-show="imgShow" class="field-tips">仅F5、6需要提供薪资证明(可上传多张),F5: 40W以上年薪;F6:70W以上年薪</p>
+    <div v-show="imgShow" class="width-infinity upload-action">
       <el-upload
         class="upload-demo"
         drag
@@ -97,11 +101,15 @@
         multiple>
         <i class="el-icon-upload"></i>
         <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-        <div class="el-upload__tip" slot="tip">支持2M以内的PNG、JPG、JPEG格式的图片,F5、F6需要提供银行流水截图(F5:40W以上薪资;F6:70W以上薪资)</div>
+        <div class="el-upload__tip" slot="tip" style="display: flex;flex-direction: column">
+          <span>支持2M以内的PNG、JPG、JPEG格式的图片</span>
+          <br/>
+          <a href="https://jishuin.proginn.com/p/763bfbd72778" target="view_window" style="font-size: 15px">查看常见薪水证明以及获取方式</a>
+        </div>
       </el-upload>
     </div>
     <div class="price">
-      <span class="text">¥{{price}}</span>
+      <span class="text">¥{{price||'0.00'}}</span>
       <span class="unit"> /次</span>
     </div>
     <div class="buttons">
@@ -126,9 +134,9 @@
       return {
         rules: [{
           title: '1、认证优势',
-          content: '* 进行过技术认证的用户,将享受平台派单的优先推荐权重' +
+          content: '* 平台派单时,将第一优先考虑进行过技术认证的用户' +
             '<br/>' +
-            '* 技术认证等级标识' +
+            '* 享有技术认证标识,增加客户信任感' +
             '<br/>' +
             '* 依据技术等级将有更高的参考薪酬' +
             '<br/>' +
@@ -143,12 +151,12 @@
         }, {
           title: '3、其他',
           content: '* 最终认证的技术等级以面试官反馈为准' + '<br/>' +
-            '* 认证金额无法退回,请确保已理解以上内容。',
+            '* 认证金额无法退回,请确保已理解所有内容。',
           linkUrl: ''
         },],
         dialogImageUrl: '',
         dialogVisible: false,
-        img_show:false,
+        imgShow: false,
         levels: [],
         conditions: [],
         fields: [],
@@ -184,6 +192,15 @@
         price: ''
       };
     },
+    computed: {
+      currentFieldId() {
+        const field = this.fields.find((ele) => ele.selected);
+        if (!field) {
+          return null
+        }
+        return field.occupation_id;
+      }
+    },
     created() {
       this.conditions = [
         {
@@ -209,6 +226,10 @@
         window.open(`https://jishuin.proginn.com/p/763bfbd71939`)
       },
       onTagSelected(item) {
+        if (this.tagsSelected.length >= 5) {
+          this.$message.info('最多可添加五个标签')
+          return
+        }
         if (this.tagsSelected.find((ele) => {
           return ele.skill_name === item.skill_name;
         })) {
@@ -219,7 +240,10 @@
       onRemoveTag(index) {
         this.tagsSelected.splice(index, 1);
       },
-      onFieldSelected(id) {
+      onFieldSelected(id, disabled) {
+        if (disabled) {
+          return
+        }
         this.fields = this.fields.map((ele) => {
           ele.selected = ele.occupation_id === id;
           return ele;
@@ -230,6 +254,10 @@
       },
       onInputChange(value) {
         if (!value) return;
+        if (this.tagsSelected.length >= 5) {
+          this.$message.info('最多可添加五个标签')
+          return
+        }
         if (this.tagsSelected.find((ele) => {
           return ele.skill_name === value;
         })) {
@@ -242,14 +270,7 @@
         this.tagText = '';
       },
       handleLevelChange(value) {
-        if(value==1105 || value==1106)
-        {
-          this.img_show=true;
-        }
-        else
-        {
-          this.img_show=false;
-        }
+        this.imgShow = value === '1105' || value === '1106';
         const res = this.levels.find((ele) => {
           return ele.item_id === value
         });
@@ -284,18 +305,18 @@
         this.dialogVisible = true;
       },
       submit() {
-        if (!this.tagsSelected.length) {
-          this.$message.error('请选择技能标签!');
-          return
-        }
-        if (!this.level) {
-          this.$message.error('请选择认证等级!');
-          return
-        }
-        if (!this.fileList.length) {
-          this.$message.error('请上传薪资证明!');
-          return
-        }
+        // if (!this.tagsSelected.length) {
+        //   this.$message.error('请选择技能标签!');
+        //   return
+        // }
+        // if (!this.level) {
+        //   this.$message.error('请选择认证等级!');
+        //   return
+        // }
+        // if (this.imgShow && !this.fileList.length) {
+        //   this.$message.error('请上传薪资证明!');
+        //   return
+        // }
         const form = {
           product_type: 12,
           item_id: this.level,
@@ -316,24 +337,28 @@
         });
       },
       async getOccupation() {
-        let res = await this.$axios.$post(`/wapi/pub/occupation`, {type: 2,form_type:1});
-        if (res.data.list && res.data.list.length) {
-          res.data.list[0].selected = true;
-        }
+        let res = await this.$axios.$post(`/wapi/pub/occupation`, {type: 2, form_type: 1});
         this.fields = res.data.list;
       },
       async getSkills() {
-        const id = this.fields.find((ele) => ele.selected).occupation_id;
-        let res = await this.$axios.$post(`/wapi/pub/skill`, {occupation_id: id,form_type:1});
+        const field = this.fields.find((ele) => ele.selected);
+        if (!field) {
+          return
+        }
+        let res = await this.$axios.$post(`/wapi/pub/skill`, {occupation_id: field.occupation_id, form_type: 1});
         this.tags_2 = res.data.list_2;
         this.tags_3 = res.data.list_3;
         this.tags_4 = res.data.list_4;
       },
       async getLevels() {
-        const id = this.fields.find((ele) => ele.selected).occupation_id;
-        let res = await this.$axios.$post(`/uapi/pub/freeworklevel`, {occupation_id: id});
+        const field = this.fields.find((ele) => ele.selected);
+        if (!field) {
+          return
+        }
+        let res = await this.$axios.$post(`/uapi/pub/freeworklevel`, {occupation_id: field.occupation_id});
         this.levels = res.data.list.map((ele) => {
           ele.name += ` ¥${ele.price}`;
+          ele.name += ele.memo?` 【${ele.memo}】`:'';
           return ele
         });
         if (!this.level && this.levels.length) {
@@ -341,7 +366,7 @@
         }
         this.price = this.levels.find((ele) => {
           return ele.item_id === this.level;
-        }).price || '0.00';
+        }).price;
       },
       async getDetail() {
         let res = await this.$axios.$post(`/uapi/cert/info`);
@@ -361,12 +386,6 @@
           return true;
         }
 
-        // this.flowList = this.flowList.map((ele, index) => {
-        //   if (index < this.form.step) {
-        //     ele.selected = true;
-        //   }
-        //   return ele;
-        // })
         if (this.form.occupation_id) {
           this.fields = this.fields.map((ele) => {
             ele.selected = this.form.occupation_id === ele.occupation_id;
@@ -375,6 +394,7 @@
         }
         if (this.form.item_id) {
           this.level = `${this.form.item_id}`;
+          this.imgShow = this.level === '1105' || this.level === '1106';
         }
         this.tagsSelected = this.form.skill;
         if (this.form.img) {
@@ -528,6 +548,16 @@
     }
   }
 
+  .field-tips {
+    width: 100%;
+    margin-top: 5px;
+    font-size: 15px;
+    font-family: PingFangSC, PingFangSC-Regular, sans-serif;
+    font-weight: 400;
+    color: #222222;
+    line-height: 24px;
+  }
+
   .field-selector {
     display: flex;
     align-items: center;
@@ -575,7 +605,6 @@
 
     &--disabled {
       cursor: not-allowed;
-      pointer-events: none;
     }
 
     &--unchecked {
@@ -643,7 +672,10 @@
 
   .upload-title {
     margin-top: 51px;
-    margin-bottom: 14px;
+  }
+
+  .upload-action {
+    margin-top: 20px;
   }
 
   .price {

+ 10 - 4
pages/frontend/skill_cert/resume_improve.vue

@@ -4,10 +4,10 @@
     <flow :dataList="flowList"></flow>
     <div class="page-content">
       <p class="tips col1">
-        1、<a :href="`/wo/${userinfo.uid}`" target="view_window">完善简历</a>,有助于面试官快速了解你哦
+        1、主页简历将直接作为面试依据,请务必在面试前<a :href="`/wo/${userinfo.uid}`" target="view_window">完善简历</a>
       </p>
-      <p class="tips">2、填写可面试时间</p>
-      <el-input class="input" type="textarea" placeholder="请输入..." :autosize="{ minRows: 8}"
+      <p class="tips">2、最近可面试时间</p>
+      <el-input class="input" type="textarea" placeholder="比如:周六周日全天有空;最近每晚7点后都有空" :autosize="{ minRows: 8}"
                 v-model="memo"></el-input>
       <el-button class="submit" type="primary" @click="submit">确认提交</el-button>
       <p class="bottom-tips">* 点击提交后,工作人员将和您确认时间并为您对接面试官</p>
@@ -49,8 +49,14 @@
     },
     methods: {
       submit() {
+        // if (!this.memo) {
+        //   this.$message.error('请填写可面试时间!');
+        //   return
+        // }
         this.$axios.$post(`uapi/cert/memo`, {memo: this.memo}).then((value) => {
-          this.$router.push(`/frontend/skill_cert/ready_interview`);
+          if (value.status === 1) {
+            this.$router.push(`/frontend/skill_cert/ready_interview`);
+          }
         });
       }
     }