<template>
<div class="app-container">
<!-- 搜索表单 -->
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px">
<el-form-item label="客户名称" prop="customerName">
<input type="text" v-model="queryParams.customerName" placeholder="请输入客户名称" clearable size="small" @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="项目名称" prop="projectName">
<input type="text" v-model="queryParams.projectName" placeholder="请输入项目名称" clearable size="small" @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="成品料号" prop="batteryFinishedPartNumber">
<input type="text" v-model="queryParams.batteryFinishedPartNumber" placeholder="请输入成品料号" clearable size="small" @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="半成品料号" prop="pcbSemiFinishedPartNumber">
<input type="text" v-model="queryParams.pcbSemiFinishedPartNumber" placeholder="请输入半成品料号" clearable size="small" @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="丝印" prop="mainBoardSilkScreen">
<input type="text" v-model="queryParams.mainBoardSilkScreen" placeholder="请输入丝印" clearable size="small" @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="文档版次" prop="materialColor">
<input type="text" v-model="queryParams.materialColor" placeholder="请输入文档版次" clearable size="small" @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<!-- 操作按钮 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['cms:specificationdata:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['cms:specificationdata:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['cms:specificationdata:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['cms:specificationdata:export']">导出列表</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"/>
</el-row>
<!-- 表格 -->
<el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="30" align="center"/>
<el-table-column label="ID" fixed="left" width="50" prop="id" align="center"/>
<el-table-column label="项目名称" fixed="left" prop="projectName" align="center" sortable width="130"/>
<el-table-column label="电芯品牌" prop="cellBrand" align="center" width="130"/>
<el-table-column label="电芯型号" prop="cellModel" align="center"/>
<el-table-column label="丝印" prop="mainBoardSilkScreen" align="center" width="130"/>
<el-table-column label="料号" prop="mainBoardPartNumber" align="center" width="100"/>
<el-table-column label="客户名称" prop="customerName" align="center"/>
<el-table-column label="文档版次" prop="revision" align="center"/>
<el-table-column label="更新人" prop="updateBy" align="center" width="100" sortable/>
<el-table-column label="更新时间" prop="updateTime" align="center" width="100" sortable>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updateTime || scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="PCB顶图" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="scope.row.pcbPlacementDiagramTopImg" type="text" icon="el-icon-document" @click="previewFile(scope.row.pcbPlacementDiagramTopImg)">查看顶图</el-button>
<span v-else>—</span>
</template>
</el-table-column>
<el-table-column label="PCB底图" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="scope.row.pcbPlacementDiagramBottomImg" type="text" icon="el-icon-document" @click="previewFile(scope.row.pcbPlacementDiagramBottomImg)">查看底图</el-button>
<span v-else>—</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="160">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-download" @click="handleExportWord(scope.row)" v-hasPermi="['cms:specificationdata:export']">导出</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['cms:specificationdata:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-document-copy" @click="handleCopy(scope.row)" v-hasPermi="['cms:specificationdata:add']">复制</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['cms:specificationdata:remove']">删除</el-button>
<el-button size="mini" type="text" icon="el-icon-download" v-show="scope.row.dwgLocalPath" @click="handleDownload(scope.row)" v-hasPermi="['cms:specificationdata:export']">下载附件</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList"/>
<!-- 添加/编辑对话框 -->
<el-dialog
:title="title"
:visible.sync="open"
:before-close="cancel"
:close-on-click-modal="false"
width="95%"
top="5vh"
append-to-body
>
<el-tabs type="border-card">
<h1 style="text-align: center; margin-bottom: 100px;">生产规格书</h1>
<!-- 基本信息 -->
<el-row :gutter="20">
<el-col :span="6">
<div class="grid-content">
<label class="label-cell">客户名称:</label>
<input type="text" v-model="specForm.customerName" />
</div>
</el-col>
<el-col :span="6">
<div class="grid-content">
<label class="label-cell">项目名称:</label>
<input type="text" v-model="specForm.projectName" />
</div>
</el-col>
<el-col :span="6">
<div class="grid-content">
<label class="label-cell">成品料号:</label>
<input type="text" v-model="specForm.batteryFinishedPartNumber" />
</div>
</el-col>
<el-col :span="6">
<div class="grid-content">
<label class="label-cell">半成品料号:</label>
<input type="text" v-model="specForm.pcbSemiFinishedPartNumber" />
</div>
</el-col>
</el-row>
<!-- 保密等级 -->
<h4>保密等级:</h4>
<div style="text-align: center; margin: 20px;">
<label>
<input type="radio" disabled> 绝密
</label>
<label>
<input type="radio" disabled> 机密
</label>
<label>
<input type="radio" checked disabled> 内部公开
</label>
<label>
<input type="radio" disabled> 外部公开
</label>
</div>
<!-- 审批信息 -->
<h4>审批信息</h4>
<table class="spec-table">
<tr>
<th>拟制/日期<br>电子工程师</th>
<th>审核/日期<br>直接上级</th>
<th>审核/日期<br>DQE</th>
<th>审核/日期<br>NPI</th>
<th>批准/日期<br>经理</th>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<!-- 文件修正记录 -->
<h4>文件修正记录</h4>
<div id="app">
<table class="spec-table">
<thead>
<tr>
<th>序号</th>
<th>版次</th>
<th>变更日期</th>
<th>变更内容</th>
<th>拟制</th>
<th>审核</th>
<th>批准</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in versionRecordList" :key="item.id">
<td>{{ index + 1 }}</td>
<td><input type="text" v-model="item.revision" /></td>
<td><input type="text" v-model="item.updateTime" /></td>
<td><input type="text" v-model="item.changeDescription" /></td>
<td><input type="text" v-model="item.updateBy" /></td>
<td><input type="text" v-model="item.reviewedBy" /></td>
<td><input type="text" v-model="item.approvedBy" /></td>
</tr>
</tbody>
</table>
<div style="text-align: center">
<button @click="addRow">+</button>
</div>
</div>
<hr class="divider">
<!-- 目录 -->
<div class="directory-container">
<h2>目录</h2>
<ul class="spec-directory">
<li>1 引言</li>
<li>1.1 编写目的</li>
<li>1.2 适用范围</li>
<li>2 版本说明</li>
<li>2.1 硬件版本</li>
<li>2.2 软件版本</li>
<li>2.3 上位机软件版本</li>
<li>3 PCB贴片图</li>
<li>4 PCM测试及检验规范</li>
<li>4.1 PCM端口示意图</li>
<li>4.2 烧录</li>
<li>4.3 PCM测试</li>
<li>4.4 PCBA半成品工艺要求</li>
<li>5 半成品测试及检验规范</li>
<li>5.1 电芯配组要求</li>
<li>5.2 PCM组装上电顺序</li>
<li>5.3 输出端口定义</li>
<li>5.4 功能测试及检验标准</li>
<li>6 成品测试及检验规范</li>
<li>6.1 成品检测项目及标准</li>
<li>6.2 成品结构尺寸</li>
<li>6.3 成品打码规则</li>
<li>6.4 追溯要求</li>
<li>附录一</li>
<li>附录二</li>
</ul>
</div>
<hr class="divider">
<!-- 引言 -->
<h3>1 引言</h3>
<p>本文主要描述该项目产品的生产性能要求说明,明确整个产品在PCM、半成品、成品的性能测试标准及要求。</p>
<h4>1.1 编写目的</h4>
<p>本文档描述了本产品的生产过程性能测试要求及标准、工艺要求等。方便生产相关人员对本产品的制造和检验。</p>
<h4>1.2 适用范围</h4>
<p>本规格书适用于欣动能源科技有限公司设计的产品生产技术规范,适用于与之相关的生产和检验。</p>
<hr class="divider">
<!-- 版本说明 -->
<h4>2 版本说明</h4>
<h5>2.1 硬件版本</h5>
<table class="spec-table">
<thead>
<tr>
<th>序号</th>
<th>PCB</th>
<th>丝印</th>
<th>料号</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>主板</td>
<td><input type="text" v-model="specForm.mainBoardSilkScreen" /></td>
<td><input type="text" v-model="specForm.mainBoardPartNumber" /></td>
<td></td>
</tr>
<tr>
<td>2</td>
<td>采集板</td>
<td>/</td>
<td>/</td>
<td></td>
</tr>
<tr>
<td>3</td>
<td>灯板</td>
<td>/</td>
<td>/</td>
<td></td>
</tr>
</tbody>
</table>
<h5>2.2 软件版本</h5>
<table class="spec-table">
<thead>
<tr>
<th>序号</th>
<th>PCM</th>
<th>软件</th>
<th>版本信息</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr><td>1</td><td rowspan="10">主板</td><td>Bootloader</td><td>/</td><td></td></tr>
<tr><td>2</td><td>应用程序</td><td>/</td><td></td></tr>
<tr><td>3</td><td>一体程序</td><td>/</td><td></td></tr>
<tr><td rowspan="3">4</td><td rowspan="3">固件信息</td>
<td>/</td><td rowspan="3"></td>
</tr>
<tr><td>/</td></tr>
<tr><td>/</td></tr>
<tr><td>5</td><td>烧录芯片选型</td><td>/</td><td></td></tr>
<tr><td>6</td><td>固件烧录软件</td><td>/</td><td></td></tr>
<tr><td>7</td><td>通讯设备</td><td>/</td><td></td></tr>
</tbody>
</table>
<h5>2.3 上位机软件版本</h5>
<h5 style="text-align: center;">生产上位机</h5>
<table class="spec-table">
<thead>
<tr>
<th>序号</th>
<th>上位机</th>
<th>版本</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr><td>1</td><td>Bin对比上位机</td><td>/</td><td></td></tr>
<tr><td>2</td><td>通讯/升级上位机</td><td>/</td><td></td></tr>
<tr><td>3</td><td>自动对比上位机</td><td>/</td><td></td></tr>
<tr><td>4</td><td>通信设备</td><td>/</td><td></td></tr>
</tbody>
</table>
<h5 style="text-align: center;">生产文件</h5>
<table class="spec-table">
<thead>
<tr>
<th>序号</th>
<th>上位机</th>
<th>版本</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr><td>1</td><td>Bin对比上位机</td><td>/</td><td></td></tr>
<tr><td>2</td><td>通讯/升级上位机模板</td><td>/</td><td></td></tr>
<tr><td>3</td><td>PCM自动对比模板</td><td>/</td><td></td></tr>
<tr><td>4</td><td>半成品自动对比模板</td><td>/</td><td></td></tr>
<tr><td>4</td><td>成品自动对比模板</td><td>/</td><td></td></tr>
</tbody>
</table>
<!-- PCB贴片图 -->
<hr class="divider">
<h4>3 PCB贴片图</h4>
<div>
<label>顶面</label>
<input type="file" @change="uploadPcbTopImage" />
<label>底面</label>
<input type="file" @change="uploadPcbBottomImage" />
</div>
<!-- PCM测试及检验规范 -->
<hr class="divider">
<h4>4 PCM测试及检验规范</h4>
<h5>4.1 PCM端口示意图</h5>
<input type="file" @change="uploadPcmPortImage" />
<hr class="divider">
<h5>4.2 烧录</h5>
<p>不涉及</p>
<hr class="divider">
<h5>4.3 PCM测试</h5>
<table class="spec-table">
<thead>
<tr>
<th colspan="2">检验项目</th>
<th>性能要求</th>
<th>必检项</th>
<th>抽检项</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="16">充电保护</td>
<td>过充电保护电压</td>
<td>4.175±0.025V</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td>每节电芯</td>
</tr>
<tr>
<td>过充电保护延时</td>
<td>1.0±0.5S</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>过充电保护释放电压</td>
<td>4.075±0.025V</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td>每节电芯</td>
</tr>
<tr>
<td>过充电保护电压2</td>
<td>4.25±0.025V</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td>每节电芯</td>
</tr>
<tr>
<td>过充电保护延时2</td>
<td>1.0±0.5S</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>过放电保护电压</td>
<td>2.80±0.03V</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td>每节电芯</td>
</tr>
<tr>
<td>过放电保护延时</td>
<td>1.0±0.5 S</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>过放电保护释放电压</td>
<td>3.0±0.03V</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td>每节电芯</td>
</tr>
<tr>
<td>充电过流保护</td>
<td>6.67±1.67A</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>充电过电流保护延时</td>
<td>500±200ms</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>放电过流保护1</td>
<td>16.67±2A</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>放电过电流保护1延时</td>
<td>200±100ms</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>放电过流保护2</td>
<td>33.2±4A</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>放电过电流保护2延时</td>
<td>20±10ms</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>短路保护</td>
<td>66±7A</td>
<td><input type="checkbox" disabled/></td>
<td><input type="checkbox" checked disabled /></td>
<td></td>
</tr>
<tr>
<td>短路保护延时</td>
<td><1000us</td>
<td><input type="checkbox" disabled/></td>
<td><input type="checkbox" checked disabled /></td>
<td></td>
</tr>
<tr>
<td rowspan="2">充放电</td>
<td>充电测试</td>
<td>16.6V/5.3A@5S</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td>单边测试法满足5.3A@5S即可</td>
</tr>
<tr>
<td>正常放电</td>
<td>1A@2S</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td rowspan="4">阻值测试</td>
<td>NTC1阻值测试</td>
<td>当前电池温度在附录一R-T表中所对应的阻值在该温度±3℃所对应的阻值范围内</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td>测试方法:检测测试点 RT1和B-1间阻值,并判断其是否在当前电池温度±3℃所对应的阻值范围内。生产时需检测并控制环境温度,按附录一 R-T表灵活调整阻值范围。(例,电池温度为25℃时,对应阻值范围为8.8KΩ~11.4KΩ)</td>
</tr>
<tr>
<td>B-与P-之间阻值</td>
<td>≤40mΩ</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td>不包括外部测试设备等阻值</td>
</tr>
<tr>
<td>B+与P+之间阻值</td>
<td>≤20mΩ</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td>不包括外部测试设备等阻值</td>
</tr>
<tr>
<td>NTC与P-端子间阻值</td>
<td>当前电池温度在附录二R-T表中所对应的阻值在该温度±3℃所对应的阻值范围内</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td>NTC和P-端子之间阻值,需要在在当前电池温度±3℃所对应的阻值范围内。参考附录二R-T表灵活调整阻值范围。(例,电池温度为 25℃时,对应阻值范围为8.8KΩ ~11.3KΩ)</td>
</tr>
<tr>
<td rowspan="2">功耗</td>
<td>工作功耗</td>
<td>≤40uA</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td>工作模式</td>
</tr>
<tr>
<td>休眠功耗</td>
<td>≤15uA</td>
<td><input type="checkbox" disabled/></td>
<td><input type="checkbox" checked disabled /></td>
<td>设备欠压保护32±8S后进入休眠模式</td>
</tr>
</tbody>
</table>
<h5>4.4 PCBA半成品工艺要求</h5>
<div>
<label>参见受控的 PCBA 半成品检验标准</label>
</div>
<h4>5 半成品测试及检验规范</h4>
<h5>5.1 电芯配组要求</h5>
<table class="spec-table">
<thead>
<tr>
<th>序号</th>
<th>检查项</th>
<th>要求</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>电芯型号</td>
<td><input type="text" v-model="specForm.cellModel" /></td>
<td><input type="text" v-model="specForm.cellBrand" /></td>
</tr>
<tr>
<td>2</td>
<td>内阻差</td>
<td>
<input type="text" v-model="specForm.maxCellInternalResistanceMohm" />
</td>
<td>单个电芯内阻≤<input type="text" v-model="specForm.maxCellGroupResistanceDiffMohm" style="display: inline-block; width: 200px;" /></td>
</tr>
<tr>
<td>3</td>
<td>电压差</td>
<td>
<input type="text" v-model="specForm.maxCellGroupVoltageDiffMv" />
</td>
<td>根据电芯来料检验标准</td>
</tr>
<tr>
<td>4</td>
<td>容量差</td>
<td>
<input type="text" v-model="specForm.maxCellGroupCapacityDiffMah" />
</td>
<td>容量差由电芯供应商管控</td>
</tr>
<tr>
<td>5</td>
<td>档位/批次</td>
<td>同一组电芯组为同一批次电芯,容量档位不能混用</td>
<td></td>
</tr>
</tbody>
</table>
<h5>5.2 PCM组装上电顺序</h5>
<div><label>1)电芯上电顺序:<input type="text" v-model="specForm.cellPowerOnSequence" style="display: inline-block; width: 250px;" />;</label></div>
<div><label>2)组装成半成品后,在半成品测试之前需焊接JP点。</label></div>
<div><label>注:上电后不允许在PCM上焊接任何接线或端子</label></div>
<h5>5.3 输出端口定义</h5>
<table class="spec-table">
<thead>
<tr>
<th>Terminal<br>端子</th>
<th>Name<br>名称</th>
<th>Description<br>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>Pin1</td>
<td>P+</td>
<td>UL1007 20AWG 红</td>
</tr>
<tr>
<td>Pin2</td>
<td>P+</td>
<td>UL1007 20AWG 红</td>
</tr>
<tr>
<td>Pin3</td>
<td>NTC</td>
<td>UL1007 24AWG 白</td>
</tr>
<tr>
<td>Pin4</td>
<td>P-</td>
<td>UL1007 20AWG 黑</td>
</tr>
<tr>
<td>Pin5</td>
<td>P-</td>
<td>UL1007 20AWG 黑</td>
</tr>
<tr>
<th colspan="3">Battery pack output port diagram/电池组输出端口图</th>
</tr>
<tr>
<td colspan="3"> <input type="file" @change="uploadBatteryPackOutputPortDiagramImg" /></td>
</tr>
</tbody>
</table>
<h5>5.4 功能测试及检验标准</h5>
<table class="spec-table">
<thead>
<tr>
<th colspan="2">检验项目</th>
<th>性能要求</th>
<th>必检项</th>
<th>抽检项</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="14">功能测试</td>
<td>充电过流保护</td>
<td><input type="text" v-model="specForm.chargeOvercurrentProtection" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection1" /></td>
<td><input type="checkbox" v-model="specForm.sampling1" /></td>
<td></td>
</tr>
<tr>
<td>充电过电流保护延时</td>
<td><input type="text" v-model="specForm.chargeOvercurrentDelay" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection2" /></td>
<td><input type="checkbox" v-model="specForm.sampling2" /></td>
<td></td>
</tr>
<tr>
<td>放电过流保护1</td>
<td><input type="text" v-model="specForm.level1DischargeOvercurrentProtection" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection3" /></td>
<td><input type="checkbox" v-model="specForm.sampling3" /></td>
<td></td>
</tr>
<tr>
<td>放电过电流保护1延时</td>
<td><input type="text" v-model="specForm.level1DischargeOvercurrentDelay" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection4" /></td>
<td><input type="checkbox" v-model="specForm.sampling4" /></td>
<td></td>
</tr>
<tr>
<td>放电过流保护2</td>
<td><input type="text" v-model="specForm.level2DischargeOvercurrentProtection" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection5" /></td>
<td><input type="checkbox" v-model="specForm.sampling5" /></td>
<td></td>
</tr>
<tr>
<td>放电过电流保护2延时</td>
<td><input type="text" v-model="specForm.level2DischargeOvercurrentDelay" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection6" /></td>
<td><input type="checkbox" v-model="specForm.sampling6" /></td>
<td></td>
</tr>
<tr>
<td>短路保护</td>
<td><input type="text" v-model="specForm.shortCircuitProtection" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection7" /></td>
<td><input type="checkbox" v-model="specForm.sampling7" /></td>
<td></td>
</tr>
<tr>
<td>短路保护延时</td>
<td><input type="text" v-model="specForm.shortCircuitDelay" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection8" /></td>
<td><input type="checkbox" v-model="specForm.sampling8" /></td>
<td></td>
</tr>
<tr>
<td>充电测试</td>
<td><input type="text" v-model="specForm.normalCharging" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection9" /></td>
<td><input type="checkbox" v-model="specForm.sampling9" /></td>
<td></td>
</tr>
<tr>
<td>正常放电</td>
<td><input type="text" v-model="specForm.normalDischarging" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection10" /></td>
<td><input type="checkbox" v-model="specForm.sampling10" /></td>
<td></td>
</tr>
<tr>
<td>开路电压</td>
<td><input type="text" v-model="specForm.openCircuitVoltage" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection11" /></td>
<td><input type="checkbox" v-model="specForm.sampling11" /></td>
<td>单节3.6-3.7V</td>
</tr>
<tr>
<td>PACK 内阻</td>
<td><input type="text" v-model="specForm.packInternalResistanceMohm" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection12" /></td>
<td><input type="checkbox" v-model="specForm.sampling12" /></td>
<td>不包括测试线材阻值</td>
</tr>
<tr>
<td>JP点连通性测试</td>
<td><input type="text" v-model="specForm.jPpointContinuityTest" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection13" /></td>
<td><input type="checkbox" v-model="specForm.sampling13" /></td>
<td>测试点TD与B-之间电压</td>
</tr>
<tr>
<td>NTC与P-端子间阻值</td>
<td>当前电池温度在附录二R-T表中所对应的阻值在该温度±3℃所对应的阻值范围内</td>
<td><input type="checkbox" v-model="specForm.requiredInspection14" /></td>
<td><input type="checkbox" v-model="specForm.sampling14" /></td>
<td>NTC和P-端子之间阻值,需要在在当前电池温度±3℃所对应的阻值范围内...</td>
</tr>
<tr>
<td rowspan="5">全程活化</td>
<td>CC-CV充电</td>
<td colspan="3"><input type="text" v-model="specForm.fullCcCvCharging" style="width: 250px;" /></td>
<td rowspan="7">试产阶段需全程活化,量产后可由团队评估是否简易活化</td>
</tr>
<tr>
<td>搁置</td>
<td colspan="3"><input type="text" v-model="specForm.fullStandby" style="width: 250px;" /></td>
</tr>
<tr>
<td>恒流放电</td>
<td colspan="3"><input type="text" v-model="specForm.fullConstantCurrentDischarge" style="width: 250px;" /></td>
</tr>
<tr>
<td>搁置</td>
<td colspan="3"><input type="text" v-model="specForm.fullStandby" style="width: 250px;" /></td>
</tr>
<tr>
<td>充电至出货电压</td>
<td colspan="3"><input type="text" v-model="specForm.fullChargeToShipmentVoltage" style="width: 250px;" /></td>
</tr>
<tr>
<td rowspan="2">简易活化</td>
<td>充电至出货电压</td>
<td colspan="3"><input type="text" v-model="specForm.quickChargeToShipmentVoltage" style="width: 250px;" /></td>
</tr>
<tr>
<td>搁置</td>
<td colspan="3"><input type="text" v-model="specForm.quickStandby" style="width: 250px;" /></td>
</tr>
<tr>
<td>活化标准</td>
<td>放电容量</td>
<td><input type="text" v-model="specForm.standardDischargeCapacity" style="width: 250px;" /></td>
<td><input type="checkbox" v-model="specForm.requiredInspection15" /></td>
<td><input type="checkbox" v-model="specForm.sampling15" /></td>
<td>全程活化放电容量</td>
</tr>
</tbody>
</table>
<div>
备注:
<div style="padding-left: 2em;">
1. 如果半成品测试项和成品测试项相同,团队可以根据不良率评估是否进行删减;
</div>
<div style="padding-left: 2em;">
2. 试产阶段需全部活化,是否快速活化由团队决定。
</div>
</div>
<h4>6 成品测试及检验规范</h4>
<h5>6.1 成品检测项目及标准</h5>
<table class="spec-table">
<thead>
<tr>
<th colspan="2">检验项目</th>
<th>性能要求</th>
<th>测试类型</th>
<th>必检项</th>
<th>抽检项</th>
<th >备注</th>
</tr>
</thead>
<tbody>
<!-- 保护测试 -->
<tr>
<td rowspan="8">保护测试</td>
<td>充电过流保护</td>
<td>6.67±1.67A</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>充电过电流保护延时</td>
<td>500±200ms</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>放电过流保护1</td>
<td>16.67±2A</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>放电过电流保护1延时</td>
<td>200±100ms</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>放电过流保护2</td>
<td>33.2±4A</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>放电过电流保护2延时</td>
<td>20±10ms</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>短路保护</td>
<td>66±7A</td>
<td><input type="checkbox" disabled /></td>
<td><input type="checkbox" checked disabled/></td>
<td></td>
</tr>
<tr>
<td>短路保护延时</td>
<td><1000us</td>
<td><input type="checkbox" disabled /></td>
<td><input type="checkbox" checked disabled/></td>
<td></td>
</tr>
<!-- 功能测试 -->
<tr>
<td rowspan="2">功能测试</td>
<td>充电测试</td>
<td>16.6V/5.3A@5S</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<tr>
<td>正常放电</td>
<td>1A@2S</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
<!-- 阻值测试 -->
<tr>
<td rowspan="2">阻值测试</td>
<td>Pack内阻</td>
<td><120mΩ</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td>不包括测试线材阻值</td>
</tr>
<tr>
<td>NTC与P-端子间阻值</td>
<td>当前电池温度在附录二R-T表中所对应的阻值在该温度±3℃所对应的阻值范围内</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td>NTC和P-端子之间阻值,需要在在当前电池温度±3℃所对应的阻值范围内。参考附录二R-T表灵活调整阻值范围。(例,电池温度为 25℃时,对应阻值范围为8.8KΩ ~11.3KΩ)</td>
</tr>
<!-- 出货电压 -->
<tr>
<td colspan="2">出货电压</td>
<td>14.4~15.2V</td>
<td><input type="checkbox" checked disabled /></td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
</tbody>
</table>
<!-- 备注 -->
<div style="margin: 10px 0; font-style: italic;">
注:对于成测与半测相同项,量产后,可根据实际情况进行分工测试。
</div>
<!-- 成品结构尺寸 -->
<h5>6.2 成品结构尺寸</h5>
<p>参见受控的成品检验标准文件</p>
<!-- 成品打码规则 -->
<h5>6.3 成品打码规则</h5>
<p>参见受控的成品打码规则文件</p>
<!-- 追溯要求 -->
<h5>6.4 追溯要求</h5>
<table class="spec-table">
<thead>
<tr>
<th>序号</th>
<th>品类</th>
<th>是否需要</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>电芯</td>
<td><input type="checkbox" disabled checked/></td>
<td></td>
</tr>
<tr>
<td>2</td>
<td>PCM测试数据</td>
<td><input type="checkbox" disabled checked/></td>
<td></td>
</tr>
<tr>
<td>3</td>
<td>老化测试数据</td>
<td><input type="checkbox" disabled checked/></td>
<td></td>
</tr>
<tr>
<td>4</td>
<td>成品测试数据</td>
<td><input type="checkbox" disabled checked/></td>
<td></td>
</tr>
<tr>
<td>5</td>
<td>气密性检测数据</td>
<td><input type="checkbox" disabled/></td>
<td></td>
</tr>
</tbody>
</table>
<!-- 附录上传 -->
<hr class="divider">
<h4>附录</h4>
<div>
<label>附录一</label>
<input type="file" @change="uploadNtcTable1" />
</div>
<div>
<label>附录二</label>
<input type="file" @change="uploadNtcTable2" />
</div>
</el-tabs>
<div style="text-align: right; margin-top: 20px;">
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="submitForm">提交</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listData, getData, delData, addData, updateData } from "@/api/cms/specificationData";
import { parseTime } from "@/utils";
import { getToken } from "@/utils/auth";
export default {
name: "SpecificationData",
data() {
return {
// 加载状态
loading: true,
// 单选/多选状态
single: true,
multiple: true,
// 显示搜索区域
showSearch: true,
// 数据总条数
total: 0,
// 数据列表
dataList: [],
// 控制弹出层显示
open: false,
// 弹出层标题
title: "",
// 文件上传地址和头部
uploadUrl: process.env.VUE_APP_BASE_API + "/api/upload",
uploadHeaders: {
Authorization: "Bearer " + getToken()
},
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
customerName: "",
projectName: "",
batteryFinishedPartNumber: "",
pcbSemiFinishedPartNumber: "",
mainBoardSilkScreen: "",
materialColor: ""
},
// 表单数据
specForm: {
id: null,
customerName: "",
projectName: "",
batteryFinishedPartNumber: "",
pcbSemiFinishedPartNumber: "",
mainBoardSilkScreen: "",
mainBoardPartNumber: "",
revision: "",
updateTime: "",
changeDescription: "",
updateBy: "",
reviewedBy: "",
approvedBy: "",
confidentialLevel: "内部公开",
materialColor: "",
pcbPlacementDiagramTopImg: "",
pcbPlacementDiagramBottomImg: "",
topImgList: [],
bottomImgList: [],
// 功能测试字段
chargeOvercurrentProtection: "",
chargeOvercurrentDelay: "",
level1DischargeOvercurrentProtection: "",
level1DischargeOvercurrentDelay: "",
level2DischargeOvercurrentProtection: "",
level2DischargeOvercurrentDelay: "",
shortCircuitProtection: "",
shortCircuitDelay: "",
normalCharging: "",
normalDischarging: "",
openCircuitVoltage: "",
packInternalResistanceMohm: "",
jPpointContinuityTest: "",
standardDischargeCapacity: "",
fullCcCvCharging: "",
fullStandby: "",
fullConstantCurrentDischarge: "",
fullChargeToShipmentVoltage: "",
quickChargeToShipmentVoltage: "",
quickStandby: "",
cellPowerOnSequence: "",
cellModel: "",
cellBrand: "",
maxCellInternalResistanceMohm: "",
maxCellGroupResistanceDiffMohm: "",
maxCellGroupVoltageDiffMv: "",
maxCellGroupCapacityDiffMah: "",
// 必检项
requiredInspection1: false,
requiredInspection2: false,
requiredInspection3: false,
requiredInspection4: false,
requiredInspection5: false,
requiredInspection6: false,
requiredInspection7: false,
requiredInspection8: false,
requiredInspection9: false,
requiredInspection10: false,
requiredInspection11: false,
requiredInspection12: false,
requiredInspection13: false,
requiredInspection14: false,
requiredInspection15: false,
// 抽检项
sampling1: false,
sampling2: false,
sampling3: false,
sampling4: false,
sampling5: false,
sampling6: false,
sampling7: false,
sampling8: false,
sampling9: false,
sampling10: false,
sampling11: false,
sampling12: false,
sampling13: false,
sampling14: false,
sampling15: false
},
// 版本记录列表
versionRecordList: [
{
id: 1,
serialNumber: 1,
revision: "",
updateTime: "",
changeDescription: "",
updateBy: "",
reviewedBy: "",
approvedBy: ""
}
],
// 表单验证规则
rules: {
customerName: [
{ required: true, message: "客户名称不能为空", trigger: "blur" }
],
projectName: [
{ required: true, message: "项目名称不能为空", trigger: "blur" }
],
batteryFinishedPartNumber: [
{ required: true, message: "成品料号不能为空", trigger: "blur" }
],
pcbSemiFinishedPartNumber: [
{ required: true, message: "半成品料号不能为空", trigger: "blur" }
],
mainBoardSilkScreen: [
{ required: true, message: "丝印不能为空", trigger: "blur" }
]
},
// 多选选中数据
ids: []
};
},
created() {
this.getList();
},
methods: {
parseTime,
// 获取数据列表
getList() {
this.loading = true;
listData(this.queryParams).then(response => {
this.dataList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 搜索查询
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
// 重置查询
resetQuery() {
// 清空表单输入框内容(Element UI 提供的方法)
if (this.$refs.queryForm) {
this.$refs.queryForm.resetFields();
}
// 强制重置 queryParams 数据
this.queryParams = {
pageNum: 1,
pageSize: 10,
customerName: "",
projectName: "",
batteryFinishedPartNumber: "",
pcbSemiFinishedPartNumber: "",
mainBoardSilkScreen: "",
materialColor: ""
};
// 重新加载数据
this.handleQuery();
},
// 多选框变化
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
// 新增按钮点击
handleAdd() {
this.resetForm();
this.open = true;
this.title = "新增";
},
// 修改按钮点击
handleUpdate(row) {
const id = row.id || this.ids[0];
getData(id).then(response => {
this.specForm = response.data;
this.open = true;
this.title = "修改生产规格书";
});
},
// 删除按钮点击
handleDelete(row) {
const ids = row.id ? [row.id] : this.ids;
this.$confirm('是否确认删除编号为"' + ids.join(",") + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
delData(ids).then(() => {
this.getList();
this.$message.success("删除成功");
});
});
},
// 导出按钮点击
handleExport() {
this.download('cms/specificationdata/export', { ...this.queryParams }, `data_${new Date().getTime()}.xlsx`);
},
// 导出 Word 文档
handleExportWord(row) {
const id = row.id || this.ids[0];
getData(id).then(response => {
this.specForm = response.data;
// 这里可以添加导出 Word 的逻辑(如调用接口或前端库)
this.$message.success("导出成功");
});
},
// 下载附件
handleDownload(row) {
const name = row.dwgLocalPath.substring(row.dwgLocalPath.lastIndexOf("-") + 1);
const urlParts = row.dwgLocalPath.split("specificationDwg");
const url = '/profile/specificationDwg' + urlParts[1];
const a = document.createElement('a');
a.setAttribute('download', name);
a.setAttribute('href', process.env.VUE_APP_BASE_API + url);
a.click();
},
// 重置表单
resetForm() {
this.specForm = {
id: null,
customerName: "",
projectName: "",
batteryFinishedPartNumber: "",
pcbSemiFinishedPartNumber: "",
mainBoardSilkScreen: "",
mainBoardPartNumber: "",
revision: "",
updateTime: "",
changeDescription: "",
updateBy: "",
reviewedBy: "",
approvedBy: "",
confidentialLevel: "内部公开",
materialColor: "",
pcbPlacementDiagramTopImg: "",
pcbPlacementDiagramBottomImg: "",
topImgList: [],
bottomImgList: [],
chargeOvercurrentProtection: "",
chargeOvercurrentDelay: "",
level1DischargeOvercurrentProtection: "",
level1DischargeOvercurrentDelay: "",
level2DischargeOvercurrentProtection: "",
level2DischargeOvercurrentDelay: "",
shortCircuitProtection: "",
shortCircuitDelay: "",
normalCharging: "",
normalDischarging: "",
openCircuitVoltage: "",
packInternalResistanceMohm: "",
jPpointContinuityTest: "",
standardDischargeCapacity: "",
fullCcCvCharging: "",
fullStandby: "",
fullConstantCurrentDischarge: "",
fullChargeToShipmentVoltage: "",
quickChargeToShipmentVoltage: "",
quickStandby: "",
cellPowerOnSequence: "",
cellModel: "",
cellBrand: "",
maxCellInternalResistanceMohm: "",
maxCellGroupResistanceDiffMohm: "",
maxCellGroupVoltageDiffMv: "",
maxCellGroupCapacityDiffMah: "",
requiredInspection1: false,
requiredInspection2: false,
requiredInspection3: false,
requiredInspection4: false,
requiredInspection5: false,
requiredInspection6: false,
requiredInspection7: false,
requiredInspection8: false,
requiredInspection9: false,
requiredInspection10: false,
requiredInspection11: false,
requiredInspection12: false,
requiredInspection13: false,
requiredInspection14: false,
requiredInspection15: false,
sampling1: false,
sampling2: false,
sampling3: false,
sampling4: false,
sampling5: false,
sampling6: false,
sampling7: false,
sampling8: false,
sampling9: false,
sampling10: false,
sampling11: false,
sampling12: false,
sampling13: false,
sampling14: false,
sampling15: false
};
this.versionRecordList = [
{
revision: "",
updateTime: "",
changeDescription: "",
updateBy: "",
reviewedBy: "",
approvedBy: ""
}
];
},
addRow() {
const newSerialNumber = this.versionRecordList.length + 1;
this.versionRecordList.push({
id: this.nextId++,
serialNumber: newSerialNumber,
revision: '',
updateTime: '',
changeDescription: '',
updateBy: '',
reviewedBy: '',
approvedBy: ''
});
},
// 提交表单
submitForm() {
this.$refs.form.validate(valid => {
if (valid) {
if (this.specForm.id) {
updateData(this.specForm).then(() => {
this.$message.success("修改成功");
this.open = false;
this.getList();
});
} else {
addData(this.specForm).then(() => {
this.$message.success("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
// 取消按钮
cancel() {
this.open = false;
this.resetForm();
},
// 上传图片成功回调
handleTopImgSuccess(response) {
this.specForm.pcbPlacementDiagramTopImg = response.url;
},
handleBottomImgSuccess(response) {
this.specForm.pcbPlacementDiagramBottomImg = response.url;
},
// 上传图片前检查
beforeImgUpload(file) {
const isValid = file.type.startsWith("image/");
if (!isValid) this.$message.error("只能上传图片文件");
return isValid;
},
// 上传超出限制
handleExceed(files) {
this.$message.warning(`最多上传 1 个文件,本次选择了 ${files.length} 个文件`);
},
// 文件上传方法
uploadPcbTopImage(file) {
console.log('上传PCB顶部图片', file);
},
uploadPcbBottomImage(file) {
console.log('上传PCB底部图片', file);
},
uploadPcmPortImage(file) {
console.log('上传PCM端口图', file);
},
uploadBatteryPackOutputPortDiagramImg(file) {
console.log('上传电池组输出端口图', file);
},
uploadNtcTable1(file) {
console.log('上传NTC表1', file);
},
uploadNtcTable2(file) {
console.log('上传NTC表2', file);
}
}
};
</script>
<style lang="scss" scoped>
$app-main-bg: #f9f9f9;
$app-border-color: #ebeef5;
$app-primary-color: #409EFF;
$app-success-color: #67c23a;
$app-danger-color: #f56c6c;
$app-warning-color: #e6a23c;
$app-font-family: "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;
.app-container {
padding: 20px;
font-family: $app-font-family;
background-color: $app-main-bg;
}
// 表单区域优化
.el-form {
background-color: #ffffff;
padding: 20px;
border-radius: 10px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
margin-bottom: 20px;
transition: all 0.3s ease-in-out;
}
.el-form-item {
margin-bottom: 20px;
}
.el-input,
.el-select {
width: 100%;
max-width: 250px;
}
.el-input__inner {
border-radius: 6px;
height: 36px;
font-size: 14px;
}
// 按钮组样式
.mb8 {
margin-bottom: 12px;
}
// 表格区域优化
.el-table {
width: 100%;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
margin-bottom: 20px;
}
.el-table-column {
text-align: center;
}
.el-table__header-wrapper th {
background-color: $app-primary-color;
color: #fff;
font-weight: bold;
border-bottom: none;
}
.el-table__row:hover {
background-color: #f5f7fa;
}
.el-table__row {
transition: background-color 0.3s ease;
}
// 分页样式
.pagination-container {
margin-top: 20px;
display: flex;
justify-content: center;
}
// 弹出层样式
.el-dialog {
border-radius: 10px;
overflow: hidden;
.el-dialog__header {
background-color: $app-primary-color;
color: #fff;
padding: 15px 20px;
font-size: 16px;
font-weight: bold;
}
.el-dialog__body {
padding: 20px;
background-color: #fcfdff;
border-top: 1px solid $app-border-color;
border-bottom: 1px solid $app-border-color;
}
}
.el-tabs {
border: none;
}
// 表格样式(用于规格书内容)
.spec-table {
width: 100%;
border-collapse: collapse;
margin-bottom: 20px;
font-size: 14px;
th,
td {
border: 1px solid $app-border-color;
padding: 10px;
text-align: center;
}
th {
background-color: lighten($app-primary-color, 30%);
color: #333;
font-weight: bold;
}
td {
background-color: #fff;
}
}
// 分界线
.divider {
border: 0;
height: 1px;
background: #eee;
margin: 30px 0;
}
// 目录样式
.directory-container {
max-width: 600px;
margin: 0 auto;
padding: 0 20px;
box-sizing: border-box;
}
.directory-container h2 {
text-align: center;
margin-bottom: 16px;
color: $app-primary-color;
}
.spec-directory {
list-style: none;
padding: 0;
margin: 0;
line-height: 1.6;
}
.spec-directory li {
text-align: left;
margin: 6px 0;
padding-left: 45%;
position: relative;
font-weight: 500;
&::before {
padding-left: 43%;
content: "•";
position: absolute;
left: 0;
top: 0;
color: $app-primary-color;
font-size: 16px;
}
}
// 按钮样式
.el-button--primary {
background-color: $app-primary-color;
border-color: $app-primary-color;
color: #fff;
}
.el-button--success {
background-color: $app-success-color;
border-color: $app-success-color;
color: #fff;
}
.el-button--danger {
background-color: $app-danger-color;
border-color: $app-danger-color;
color: #fff;
}
.el-button--warning {
background-color: $app-warning-color;
border-color: $app-warning-color;
color: #fff;
}
.el-button {
border-radius: 6px;
padding: 9px 15px;
font-size: 13px;
transition: all 0.3s ease-in-out;
&:hover {
opacity: 0.9;
}
i {
margin-right: 5px;
}
}
// 响应式布局
@media (max-width: 768px) {
.el-input,
.el-select {
width: 100%;
}
.el-form-item__content {
width: 100%;
}
.spec-directory li {
padding-left: 10px;
margin: 8px 0;
&::before {
display: none;
}
}
}
</style>
5.4 功能测试及检验标准的必检项 抽检项只能选一项
最新发布