首页 > 编程知识 正文

工资表怎么画

时间:2023-11-21 06:28:44 阅读:290186 作者:BRJS

想要画好一份漂亮的工资表,需要从以下几个方面进行考虑和实践。

一、表格样式

工资表的主体部分一般都是表格,因此表格的样式设计至关重要,要考虑美观性,同时也要保证表格数据的清晰易读。

我们可以使用CSS对表格进行自定义样式,例如给表头和数据行分别设置不同背景色,并添加一些阴影效果,使得整个表格看起来更加分明。

<table class="salary">
  <thead>
    <tr>
      <th>姓名</th>
      <th>基本工资</th>
      <th>奖金</th>
      <th>扣款</th>
      <th>实发工资</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>10000</td>
      <td>2000</td>
      <td>-1000</td>
      <td>11000</td>
    </tr>
    <tr>
      <td>李四</td>
      <td>8000</td>
      <td>1500</td>
      <td>-800</td>
      <td>8700</td>
    </tr>
  </tbody>
</table>

<style>
  .salary {
    border-collapse: collapse;
    box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);
    width: 100%;
    text-align: center;
  }
  
  .salary thead {
    background-color: #f5f5f5;
  }
  
  .salary th {
    padding: 10px;
    font-weight: bold;
  }
  
  .salary tbody tr:nth-child(even) {
    background-color: #f9f9f9;
  }
  
  .salary td {
    padding: 10px;
  }
</style>

二、数据统计

工资表中一般需要统计各种不同类型的数据,例如基本工资、奖金、扣款、税金等等。

我们可以使用JavaScript编写相应的计算脚本,以便在填写工资表时自动计算出各项数据的值,并在表格中显示出来。

<form>
  <label>姓名:<input type="text" name="name"></label>
  <label>基本工资:<input type="number" name="basicSalary"></label>
  <label>奖金:<input type="number" name="bonus"></label>
  <label>扣款:<input type="number" name="deduction"></label>
  <label>税金:<input type="number" name="tax"></label>
  <button type="button" onclick="calculateSalary()">计算工资</button>
</form>

<table class="salary">
  <thead>
    <tr>
      <th>姓名</th>
      <th>基本工资</th>
      <th>奖金</th>
      <th>扣款</th>
      <th>税金</th>
      <th>应发工资</th>
      <th>实发工资</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><span id="name"></span></td>
      <td><span id="basicSalary"></span></td>
      <td><span id="bonus"></span></td>
      <td><span id="deduction"></span></td>
      <td><span id="tax"></span></td>
      <td><span id="totalSalary"></span></td>
      <td><span id="actualSalary"></span></td>
    </tr>
  </tbody>
</table>

<script>
  function calculateSalary() {
    const name = document.getElementsByName('name')[0].value;
    const basicSalary = Number(document.getElementsByName('basicSalary')[0].value);
    const bonus = Number(document.getElementsByName('bonus')[0].value);
    const deduction = Number(document.getElementsByName('deduction')[0].value);
    const tax = Number(document.getElementsByName('tax')[0].value);
    const totalSalary = basicSalary + bonus + deduction;
    const actualSalary = totalSalary - tax;
    
    document.getElementById('name').innerHTML = name;
    document.getElementById('basicSalary').innerHTML = basicSalary.toFixed(2);
    document.getElementById('bonus').innerHTML = bonus.toFixed(2);
    document.getElementById('deduction').innerHTML = deduction.toFixed(2);
    document.getElementById('tax').innerHTML = tax.toFixed(2);
    document.getElementById('totalSalary').innerHTML = totalSalary.toFixed(2);
    document.getElementById('actualSalary').innerHTML = actualSalary.toFixed(2);
  }
</script>

三、导出功能

在制作完工资表之后,很可能需要将其导出成PDF或Excel格式,以方便后续的打印或者归档。

我们可以使用一些第三方库或者插件,例如jspdf或者exceljs,来实现工资表的导出功能。

以jspdf为例,可以使用其提供的API将表格内容渲染到PDF文档中,然后将文档保存到本地。

<button type="button" onclick="exportSalary()">导出工资单</button>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.min.js"></script>
<script>
  function exportSalary() {
    const doc = new jsPDF();
    doc.autoTable({ html: '#salary-table' });
    doc.save('salary.pdf');
  }
</script>

四、数据交互

如果工资表使用的是在线形式,那么我们还需要考虑如何进行数据交互。

这时候可以使用Ajax等技术,将表格数据发送到服务器上进行保存或者更新。

<form onsubmit="saveSalary(event)">
  <!-- 表单内容 -->
  <button type="submit">提交工资单</button>
</form>

<script>
  function saveSalary(event) {
    event.preventDefault();
    const formData = new FormData(event.target);
    
    fetch('/api/saveSalary', {
      method: 'POST',
      body: formData
    })
      .then(response => response.json())
      .then(data => {
        console.log(data);
        // 处理保存成功后的响应
      })
      .catch(error => console.error(error));
  }
</script>

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。