打印员工信息

打印员工信息


目标 完成个人信息和工作信息的打印功能

新建打印页面及路由

创建页面组件

<template>
  <div class="dashboard-container"id="myPrint">
    <div class="app-container">
      <el-card>
        <el-breadcrumbseparator="/"class="titInfo ">
          <el-breadcrumb-item:to="{ path: '/' }">首页</el-breadcrumb-item>
          <el-breadcrumb-item>
            <router-link:to="{'path':'/employees'}">员工管理</router-link>
          </el-breadcrumb-item>
          <el-breadcrumb-item>打印</el-breadcrumb-item>
        </el-breadcrumb>
        <divv-if="type === 'personal'">
          <h2class="centInfo">员工信息表</h2>
          <tablecellspacing="0"width="100%"class="tableList">
            <trclass="title">
              <tdcolspan="8"class="centInfo">基本信息</td>
            </tr>
            <tr>
              <thstyle="width:10%">姓名</th>
              <tdcolspan="6"style="width:80%">{{ formData.username }}</td>
              <tdrowspan="5"style="width:10%"><imgstyle="width:155px;height:218px":src="formData.staffPhoto"></td>
​
            </tr>
            <tr>
              <th>性别</th>
              <tdcolspan="6">{{ formData.sex }}</td>
            </tr>
            <tr>
              <th>手机</th>
              <tdcolspan="6">{{ formData.mobile }}</td>
            </tr>
            <tr>
              <th>出生日期</th>
              <tdcolspan="6">{{ formData.dateOfBirth | formatDate }}</td>
            </tr>
            <tr>
              <th>最高学历</th>
              <tdcolspan="6">{{ formData.theHighestDegreeOfEducation }}</td>
            </tr>
            <tr>
              <thstyle="width:10%">是否可编辑</th>
              <tdstyle="width:35%">{{ formData.isItEditable }}</td>
              <thstyle="width:10%">是否隐藏号码</th>
              <tdcolspan="5"style="width:45%">{{ formData.doYouHideNumbers }}</td>
            </tr>
            <tr>
              <th>国家地区</th>
              <td>{{ formData.nationalArea }}</td>
              <th>护照号</th>
              <tdcolspan="5">{{ formData.passportNo }}</td>
            </tr>
            <tr>
              <th>身份证号</th>
              <td>{{ formData.idNumber }}</td>
              <th>身份证照片</th>
              <tdcolspan="5">{{ formData.iDCardPhoto }}</td>
            </tr>
            <tr>
              <th>籍贯</th>
              <td>{{ formData.nativePlace }}</td>
              <th>民族</th>
              <tdcolspan="5">{{ formData.nation }}</td>
            </tr>
            <tr>
              <th>英文名</th>
              <td>{{ formData.englishName }}</td>
              <th>婚姻状况</th>
              <tdcolspan="5">{{ formData.maritalStatus }}</td>
            </tr>
            <tr>
              <th>员工照片</th>
              <td>{{ formData.staffPhoto }}</td>
              <th>生日</th>
              <tdcolspan="5">{{ formData.birthday }}</td>
            </tr>
            <tr>
              <th>属相</th>
              <td>{{ formData.zodiac }}</td>
              <th>年龄</th>
              <tdcolspan="5">{{ formData.age }}</td>
            </tr>
            <tr>
              <th>星座</th>
              <td>{{ formData.constellation }}</td>
              <th>血型</th>
              <tdcolspan="5">{{ formData.bloodType }}</td>
            </tr>
            <tr>
              <th>户籍所在地</th>
              <td>{{ formData.domicile }}</td>
              <th>政治面貌</th>
              <tdcolspan="5">{{ formData.politicalOutlook }}</td>
            </tr>
            <tr>
              <th>入党时间</th>
              <td>{{ formData.timeToJoinTheParty }}</td>
              <th>存档机构</th>
              <tdcolspan="5">{{ formData.archivingOrganization }}</td>
            </tr>
            <tr>
              <th>子女状态</th>
              <td>{{ formData.stateOfChildren }}</td>
              <th>子女有无商业保险</th>
              <tdcolspan="5">{{ formData.doChildrenHaveCommercialInsurance }}</td>
            </tr>
            <tr>
              <th>有无违法违纪行为</th>
              <td>{{ formData.isThereAnyViolationOfLawOrDiscipline }}</td>
              <th>有无重大病史</th>
              <tdcolspan="5">{{ formData.areThereAnyMajorMedicalHistories }}</td>
            </tr>
            <trclass="title">
              <tdcolspan="8"class="centInfo">通讯信息</td>
            </tr>
            <tr>
              <th>QQ</th>
              <td>{{ formData.qQ }}</td>
              <th>微信</th>
              <tdcolspan="5">{{ formData.weChat }}</td>
            </tr>
            <tr>
              <th>居住证城市</th>
              <td>{{ formData.residenceCardCity }}</td>
              <th>居住证办理日期</th>
              <tdcolspan="5">{{ formData.dateOfResidencePermit }}</td>
            </tr>
            <tr>
              <th>居住证截止日期</th>
              <td>{{ formData.residencePermitDeadline }}</td>
              <th>现居住地</th>
              <tdcolspan="5">{{ formData.placeOfResidence }}</td>
            </tr>
            <tr>
              <th>通讯地址</th>
              <td>{{ formData.postalAddress }}</td>
              <th>联系手机</th>
              <tdcolspan="5">{{ formData.contactTheMobilePhone }}</td>
            </tr>
            <tr>
              <th>个人邮箱</th>
              <td>{{ formData.personalMailbox }}</td>
              <th>紧急联系人</th>
              <tdcolspan="5">{{ formData.emergencyContact }}</td>
            </tr>
            <tr>
              <th>紧急联系电话</th>
              <tdcolspan="7">{{ formData.emergencyContactNumber }}</td>
            </tr>
            <trclass="title">
              <tdcolspan="8"class="centInfo">账号信息</td>
            </tr>
            <tr>
              <th>社保电脑号</th>
              <td>{{ formData.socialSecurityComputerNumber }}</td>
              <th>公积金账号</th>
              <tdcolspan="5">{{ formData.providentFundAccount }}</td>
            </tr>
            <tr>
              <th>银行卡号</th>
              <td>{{ formData.bankCardNumber }}</td>
              <th>开户行</th>
              <tdcolspan="5">{{ formData.openingBank }}</td>
            </tr>
            <trclass="title">
              <tdcolspan="8"class="centInfo">教育信息</td>
            </tr>
            <tr>
              <th>学历类型</th>
              <td>{{ formData.educationalType }}</td>
              <th>毕业学校</th>
              <tdcolspan="5">{{ formData.graduateSchool }}</td>
            </tr>
            <tr>
              <th>入学时间</th>
              <td>{{ formData.enrolmentTime }}</td>
              <th>毕业时间</th>
              <tdcolspan="5">{{ formData.graduationTime }}</td>
            </tr>
            <tr>
              <th>专业</th>
              <td>{{ formData.major }}</td>
              <th>毕业证书</th>
              <tdcolspan="5">{{ formData.graduationCertificate }}</td>
            </tr>
            <tr>
              <th>学位证书</th>
              <tdcolspan="7">{{ formData.certificateOfAcademicDegree }}</td>
            </tr>
            <trclass="title">
              <tdcolspan="8"class="centInfo">从业信息</td>
            </tr>
            <tr>
              <th>上家公司</th>
              <td>{{ formData.homeCompany }}</td>
              <th>职称</th>
              <tdcolspan="5">{{ formData.title }}</td>
            </tr>
            <tr>
              <th>简历</th>
              <td>{{ formData.resume }}</td>
              <th>有无竞业限制</th>
              <tdcolspan="5">{{ formData.isThereAnyCompetitionRestriction }}</td>
            </tr>
            <tr>
              <th>前公司离职证明</th>
              <td>{{ formData.proofOfDepartureOfFormerCompany }}</td>
              <th>备注</th>
              <tdcolspan="5">{{ formData.remarks }}</td>
            </tr>
          </table>
          <divclass="foot">签字:___________日期:___________</div>
        </div>
        <divv-else>
          <h2class="centInfo">岗位信息表</h2>
          <tablecellspacing="0"width="100%"class="tableList">
            <trclass="title">
              <tdcolspan="4"class="centInfo">基本信息</td>
            </tr>
            <tr>
              <thstyle="width:10%">姓名</th>
              <tdstyle="width:40%">{{ formData.username }}</td>
              <thstyle="width:10%">入职日期</th>
              <tdstyle="width:40%">{{ formData.dateOfEntry }}</td>
            </tr>
            <tr>
              <th>部门</th>
              <td>{{ formData.departmentName }}</td>
              <th>岗位</th>
              <td>{{ formData.post }}</td>
            </tr>
            <tr>
              <th>工作邮箱</th>
              <td>{{ formData.workMailbox }}</td>
              <th>工号</th>
              <td>{{ formData.workNumber }}</td>
            </tr>
            <tr>
              <th>转正日期</th>
              <td>{{ formData.dateOfCorrection }}</td>
              <th>转正状态</th>
              <td>{{ formData.stateOfCorrection }}</td>
            </tr>
            <tr>
              <th>职级</th>
              <td>{{ formData.rank }}</td>
              <th>汇报对象</th>
              <td>{{ formData.reportName }}</td>
            </tr>
            <tr>
              <th>HRBP</th>
              <td>{{ formData.hRBP }}</td>
              <th>聘用形式</th>
              <td>{{ formData.formOfEmployment }}</td>
            </tr>
​
            <tr>
              <th>管理形式</th>
              <td>{{ formData.formOfManagement }}</td>
              <th>调整司龄</th>
              <td>{{ formData.adjustmentAgedays }}</td>
            </tr>
            <tr>
              <th>司龄</th>
              <td>{{ formData.ageOfDivision }}</td>
              <th>首次参加工作时间</th>
              <td>{{ formData.workingTimeForTheFirstTime }}</td>
            </tr>
​
            <tr>
              <th>调整工龄天</th>
              <td>{{ formData.adjustmentOfLengthOfService }}</td>
              <th>工龄</th>
              <td>{{ formData.workingYears }}</td>
            </tr>
            <tr>
              <th>纳税城市</th>
              <td>{{ formData.taxableCity }}</td>
              <th>转正评价</th>
              <td>{{ formData.correctionEvaluation }}</td>
            </tr>
            <trclass="title">
              <tdcolspan="4"class="centInfo">合同信息</td>
            </tr>
            <tr>
              <th>首次合同开始时间</th>
              <td>{{ formData.initialContractStartTime }}</td>
              <th>首次合同结束时间</th>
              <td>{{ formData.firstContractTerminationTime }}</td>
            </tr>
            <tr>
              <th>现合同开始时间</th>
              <td>{{ formData.currentContractStartTime }}</td>
              <th>现合同结束时间</th>
              <td>{{ formData.closingTimeOfCurrentContract }}</td>
            </tr>
​
            <tr>
              <th>合同期限</th>
              <td>{{ formData.contractPeriod }}</td>
              <th>合同文件</th>
              <td>{{ formData.contractDocuments }}</td>
            </tr>
            <tr>
              <th>续签次数</th>
              <tdcolspan="3">{{ formData.renewalNumber }}</td>
            </tr>
            <trclass="title">
              <tdcolspan="4"class="centInfo">招聘信息</td>
            </tr>
            <tr>
              <th>其他招聘渠道</th>
              <td>{{ formData.otherRecruitmentChannels }}</td>
              <th>招聘渠道</th>
              <td>{{ formData.recruitmentChannels }}</td>
            </tr>
            <tr>
              <th>社招校招</th>
              <td>{{ formData.socialRecruitment }}</td>
              <th>推荐企业人</th>
              <td>{{ formData.recommenderBusinessPeople }}</td>
            </tr>
          </table>
          <divclass="foot">签字:___________日期:___________</div>
        </div>
      </el-card>
    </div>
  </div>
</template>
​
<script>
import { getPersonalDetail, getJobDetail } from'@/api/employees'
import { getUserDetailById } from'@/api/user'
exportdefault {
  data() {
    return {
      formData: {},
      userId: this.$route.params.id,
      type: this.$route.query.type// 打印类型
    }
  },
  // 创建完毕状态
  created() {
    this.type==='personal'?this.getPersonalDetail() : this.getJobDetail()
  },
  // 组件更新
  methods: {
    asyncgetPersonalDetail() {
      this.formData=awaitgetPersonalDetail(this.userId) // 获取个人基本信息
    },
    asyncgetJobDetail() {
      constuserInfo=awaitgetUserDetailById(this.userId)
      constjobInfo=awaitgetJobDetail(this.userId) // 获取个人基本信息
      this.formData= { ...userInfo, ...jobInfo }
    }
  }
}
</script>
​
<stylelang="scss">
.foot {
  padding: 30px0;
  text-align: right;
}
</style>

该页面内容实际上就是读取个人和详情的接口数据,根据传入的type类型决定显示个人还是岗位

type为personal时显示个人,为job时显示岗位

新建打印页面路由

{
    path: 'print/:id', // 二级默认路由
    component: () =>import('@/views/employees/print'), // 按需加载
    hidden: true,
    meta: {
      title: '打印', // 标记当前路由规则的中文名称 后续在做左侧菜单时 使用
      icon: 'people'
    }
  }

完成详情到打印的跳转

个人

<el-rowtype="flex"justify="end">
            <el-tooltipcontent="打印个人基本信息">
                <router-link:to="`/employees/print/${userId}?type=personal`">
                  <iclass="el-icon-printer"/>
                </router-link>
             </el-tooltip>
  </el-row>

岗位

  <el-rowtype="flex"justify="end">
              <el-tooltipcontent="打印岗位信息">
                <router-link:to="`/employees/print/${userId}?type=job`">
                  <iclass="el-icon-printer"  />
                </router-link>
              </el-tooltip>
    </el-row>

利用vue-print-nb进行打印

首先,打印功能我们借助一个比较流行的插件

$ npm i vue-print-nb
它的用法是

首先注册该插件

import Print from'vue-print-nb'
Vue.use(Print);

使用v-print指令的方式进行打印

  <el-row type="flex" justify="end">
          <el-button v-print="printObj" size="small" type="primary">打印</el-button>
   </el-row>
   printObj: {
        id: 'myPrint'
   }

最终,我们看到的效果

提交代码

本节任务打印员工信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值