|
|
@@ -24,31 +24,15 @@
|
|
|
<div class="form-body">
|
|
|
<el-form label-width="110px">
|
|
|
<div class="form-section">
|
|
|
- <div class="section-title">基本信息</div>
|
|
|
+ <div class="section-title">
|
|
|
+ 基本信息
|
|
|
+ <div class="form-meta">
|
|
|
+ <div>表单编号:{{ mainForm.bdbh || '-' }}</div>
|
|
|
+ <div>表单版本:{{ mainForm.bbh || '-' }}</div>
|
|
|
+ <div>表单生效日期:{{ mainForm.sxrq || '-' }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="表单编号">
|
|
|
- <el-input v-model="mainForm.bdbh" placeholder="请输入表单编号" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="版本号">
|
|
|
- <el-input v-model="mainForm.bbh" placeholder="请输入版本号" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="生效日期">
|
|
|
- <el-date-picker
|
|
|
- v-model="mainForm.sxrq"
|
|
|
- type="date"
|
|
|
- placeholder="请选择日期"
|
|
|
- format="YYYY-MM-DD"
|
|
|
- value-format="YYYY-MM-DD"
|
|
|
- style="width: 100%"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="单据编号">
|
|
|
<el-input v-model="mainForm.djbh" placeholder="自动生成" />
|
|
|
@@ -110,37 +94,65 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="检验人">
|
|
|
- <el-input v-model="mainForm.jyr" placeholder="请输入检验人" />
|
|
|
+ <el-form-item label="检验员">
|
|
|
+ <el-input v-model="mainForm.jyr" readonly />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="最大样本量">
|
|
|
- <el-input-number v-model="mainForm.ybl" :min="0" controls-position="right" style="width: 100%" />
|
|
|
+ <el-form-item label="检验数量">
|
|
|
+ <el-input v-model="mainForm.jysl" readonly />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="合格数量">
|
|
|
+ <el-input v-model="mainForm.jyhgsl" @input="handleMainIntInput('jyhgsl')" placeholder="请输入合格数量" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="结果判定">
|
|
|
- <el-select v-model="mainForm.jgpd" placeholder="请选择结果判定" style="width: 100%">
|
|
|
- <el-option v-for="option in resultOptions" :key="option.value" :label="option.label" :value="option.value" />
|
|
|
+ <el-form-item label="不合格数量">
|
|
|
+ <el-input v-model="mainForm.jybhgsl" @input="handleMainIntInput('jybhgsl')" placeholder="请输入不合格数量" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="处理方式">
|
|
|
+ <el-select v-model="mainForm.clfs" placeholder="请选择处理方式" style="width: 100%">
|
|
|
+ <el-option v-for="option in clfsOptions" :key="option.value" :label="option.label" :value="option.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="留样数量">
|
|
|
+ <el-input v-model="mainForm.lysl" @input="handleMainIntInput('lysl')" placeholder="请输入留样数量" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="破坏数量">
|
|
|
+ <el-input v-model="mainForm.phsl" @input="handleMainIntInput('phsl')" placeholder="请输入破坏数量" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="判断">
|
|
|
+ <el-select v-model="mainForm.pd" placeholder="请选择判断" style="width: 100%">
|
|
|
+ <el-option v-for="option in judgeOptions" :key="option.value" :label="option.label" :value="option.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="附件">
|
|
|
- <UploadFile v-model="mainForm.fj" :limit="1" :file-type="['pdf','doc','docx','xls','xlsx','png','jpg']" :is-show-tip="false" />
|
|
|
+ <UploadFile v-model="mainForm.fj" :limit="5" :is-show-tip="false" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="检规编号">
|
|
|
- <el-input v-model="mainForm.jgbh" placeholder="请输入检规编号" />
|
|
|
+ <el-input v-model="mainForm.jgbh" readonly />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="检规版本">
|
|
|
- <el-input v-model="mainForm.jgbb" placeholder="请输入检规版本" />
|
|
|
+ <el-input v-model="mainForm.jgbb" readonly />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
@@ -159,60 +171,45 @@
|
|
|
<el-button type="primary" size="small" @click="handleAddRow">新增行</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <el-table :data="detailRows" border>
|
|
|
- <el-table-column label="检验项目" width="200">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model="row.jyxm" placeholder="请输入检验项目" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="检验标准" width="220">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model="row.jybz" placeholder="请输入检验标准" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="样本1" width="140">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model="row.j1" placeholder="请输入样本1" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="样本2" width="140">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model="row.j2" placeholder="请输入样本2" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="样本3" width="140">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model="row.j3" placeholder="请输入样本3" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="判定" width="120">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-select v-model="row.pd" placeholder="选择" style="width: 100%">
|
|
|
- <el-option v-for="option in resultOptions" :key="option.value" :label="option.label" :value="option.value" />
|
|
|
- </el-select>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="检验数量" width="140">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input-number v-model="row.jysl" :min="0" controls-position="right" style="width: 100%" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="不合格数" width="140">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input-number v-model="row.bhgsl" :min="0" controls-position="right" style="width: 100%" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="备注" min-width="200">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model="row.bz" placeholder="请输入备注" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="操作" width="90">
|
|
|
- <template #default="{ $index }">
|
|
|
- <el-button link type="danger" size="small" @click="handleDeleteRow($index)">删除</el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
+ <el-table :data="detailRows" border>
|
|
|
+ <el-table-column label="操作" width="90">
|
|
|
+ <template #default="{ $index }">
|
|
|
+ <el-button link type="danger" size="small" @click="handleDeleteRow($index)">删除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="检验项目" min-width="200">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-input v-model="row.jyxm" type="textarea" :autosize="{ minRows: 1, maxRows: 4 }" readonly />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="检验标准" min-width="240">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-input v-model="row.jybz" type="textarea" :autosize="{ minRows: 1, maxRows: 4 }" readonly />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="判断" width="120">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-select v-model="row.pd" placeholder="选择" style="width: 100%">
|
|
|
+ <el-option v-for="option in judgeOptions" :key="option.value" :label="option.label" :value="option.value" />
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="样本量" width="120">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-input v-model="row.jypc" @input="handleRowIntInput(row, 'jypc')" placeholder="数量" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ v-for="index in sampleColumnCount"
|
|
|
+ :key="`sample-${index}`"
|
|
|
+ :label="`样本${index}`"
|
|
|
+ width="120"
|
|
|
+ >
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-input v-model="row[`j${index}`]" @input="handleRowIntInput(row, `j${index}`)" placeholder="数值" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
</div>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
@@ -221,31 +218,15 @@
|
|
|
<div v-else class="form-body">
|
|
|
<el-form label-width="110px">
|
|
|
<div class="form-section">
|
|
|
- <div class="section-title">基本信息</div>
|
|
|
+ <div class="section-title">
|
|
|
+ 基本信息
|
|
|
+ <div class="form-meta">
|
|
|
+ <div>表单编号:{{ mainForm.bdbh || '-' }}</div>
|
|
|
+ <div>表单版本:{{ mainForm.bbh || '-' }}</div>
|
|
|
+ <div>表单生效日期:{{ mainForm.sxrq || '-' }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="表单编号">
|
|
|
- <el-input v-model="mainForm.bdbh" placeholder="请输入表单编号" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="版本号">
|
|
|
- <el-input v-model="mainForm.bbh" placeholder="请输入版本号" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="生效日期">
|
|
|
- <el-date-picker
|
|
|
- v-model="mainForm.sxrq"
|
|
|
- type="date"
|
|
|
- placeholder="请选择日期"
|
|
|
- format="YYYY-MM-DD"
|
|
|
- value-format="YYYY-MM-DD"
|
|
|
- style="width: 100%"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="单据编号">
|
|
|
<el-input v-model="mainForm.djbh" placeholder="自动生成" />
|
|
|
@@ -307,37 +288,65 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="检验人">
|
|
|
- <el-input v-model="mainForm.jyr" placeholder="请输入检验人" />
|
|
|
+ <el-form-item label="检验员">
|
|
|
+ <el-input v-model="mainForm.jyr" readonly />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="最大样本量">
|
|
|
- <el-input-number v-model="mainForm.ybl" :min="0" controls-position="right" style="width: 100%" />
|
|
|
+ <el-form-item label="检验数量">
|
|
|
+ <el-input v-model="mainForm.jysl" readonly />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="结果判定">
|
|
|
- <el-select v-model="mainForm.jgpd" placeholder="请选择结果判定" style="width: 100%">
|
|
|
- <el-option v-for="option in resultOptions" :key="option.value" :label="option.label" :value="option.value" />
|
|
|
+ <el-form-item label="合格数量">
|
|
|
+ <el-input v-model="mainForm.jyhgsl" @input="handleMainIntInput('jyhgsl')" placeholder="请输入合格数量" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="不合格数量">
|
|
|
+ <el-input v-model="mainForm.jybhgsl" @input="handleMainIntInput('jybhgsl')" placeholder="请输入不合格数量" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="处理方式">
|
|
|
+ <el-select v-model="mainForm.clfs" placeholder="请选择处理方式" style="width: 100%">
|
|
|
+ <el-option v-for="option in clfsOptions" :key="option.value" :label="option.label" :value="option.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="留样数量">
|
|
|
+ <el-input v-model="mainForm.lysl" @input="handleMainIntInput('lysl')" placeholder="请输入留样数量" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="破坏数量">
|
|
|
+ <el-input v-model="mainForm.phsl" @input="handleMainIntInput('phsl')" placeholder="请输入破坏数量" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="判断">
|
|
|
+ <el-select v-model="mainForm.pd" placeholder="请选择判断" style="width: 100%">
|
|
|
+ <el-option v-for="option in judgeOptions" :key="option.value" :label="option.label" :value="option.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="附件">
|
|
|
- <UploadFile v-model="mainForm.fj" :limit="1" :file-type="['pdf','doc','docx','xls','xlsx','png','jpg']" :is-show-tip="false" />
|
|
|
+ <UploadFile v-model="mainForm.fj" :limit="5" :is-show-tip="false" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="检规编号">
|
|
|
- <el-input v-model="mainForm.jgbh" placeholder="请输入检规编号" />
|
|
|
+ <el-input v-model="mainForm.jgbh" readonly />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="检规版本">
|
|
|
- <el-input v-model="mainForm.jgbb" placeholder="请输入检规版本" />
|
|
|
+ <el-input v-model="mainForm.jgbb" readonly />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
@@ -357,56 +366,41 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<el-table :data="detailRows" border>
|
|
|
- <el-table-column label="检验项目" width="200">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model="row.jyxm" placeholder="请输入检验项目" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="检验标准" width="220">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model="row.jybz" placeholder="请输入检验标准" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="样本1" width="140">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model="row.j1" placeholder="请输入样本1" />
|
|
|
+ <el-table-column label="操作" width="90">
|
|
|
+ <template #default="{ $index }">
|
|
|
+ <el-button link type="danger" size="small" @click="handleDeleteRow($index)">删除</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="样本2" width="140">
|
|
|
+ <el-table-column label="检验项目" min-width="200">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input v-model="row.j2" placeholder="请输入样本2" />
|
|
|
+ <el-input v-model="row.jyxm" type="textarea" :autosize="{ minRows: 1, maxRows: 4 }" readonly />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="样本3" width="140">
|
|
|
+ <el-table-column label="检验标准" min-width="240">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input v-model="row.j3" placeholder="请输入样本3" />
|
|
|
+ <el-input v-model="row.jybz" type="textarea" :autosize="{ minRows: 1, maxRows: 4 }" readonly />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="判定" width="120">
|
|
|
+ <el-table-column label="判断" width="120">
|
|
|
<template #default="{ row }">
|
|
|
<el-select v-model="row.pd" placeholder="选择" style="width: 100%">
|
|
|
- <el-option v-for="option in resultOptions" :key="option.value" :label="option.label" :value="option.value" />
|
|
|
+ <el-option v-for="option in judgeOptions" :key="option.value" :label="option.label" :value="option.value" />
|
|
|
</el-select>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="检验数量" width="140">
|
|
|
+ <el-table-column label="样本量" width="120">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input-number v-model="row.jysl" :min="0" controls-position="right" style="width: 100%" />
|
|
|
+ <el-input v-model="row.jypc" @input="handleRowIntInput(row, 'jypc')" placeholder="数量" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="不合格数" width="140">
|
|
|
+ <el-table-column
|
|
|
+ v-for="index in sampleColumnCount"
|
|
|
+ :key="`sample-${index}`"
|
|
|
+ :label="`样本${index}`"
|
|
|
+ width="120"
|
|
|
+ >
|
|
|
<template #default="{ row }">
|
|
|
- <el-input-number v-model="row.bhgsl" :min="0" controls-position="right" style="width: 100%" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="备注" min-width="200">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-model="row.bz" placeholder="请输入备注" />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="操作" width="90">
|
|
|
- <template #default="{ $index }">
|
|
|
- <el-button link type="danger" size="small" @click="handleDeleteRow($index)">删除</el-button>
|
|
|
+ <el-input v-model="row[`j${index}`]" @input="handleRowIntInput(row, `j${index}`)" placeholder="数值" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
@@ -423,11 +417,13 @@ import { computed, ref, watch } from 'vue'
|
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
|
import { useIpqcInspectRecordStore } from '@/store/modules/qms/ipqcInspectRecord'
|
|
|
import { UploadFile } from '@/components/UploadFile'
|
|
|
+import { useUserStore } from '@/store/modules/user'
|
|
|
|
|
|
const props = defineProps<{ id?: string }>()
|
|
|
const route = useRoute()
|
|
|
const router = useRouter()
|
|
|
const recordStore = useIpqcInspectRecordStore()
|
|
|
+const userStore = useUserStore()
|
|
|
|
|
|
const loading = ref(false)
|
|
|
const saving = ref(false)
|
|
|
@@ -450,6 +446,14 @@ const fetchData = async () => {
|
|
|
loading.value = true
|
|
|
try {
|
|
|
await recordStore.load(taskId.value)
|
|
|
+ if (!mainForm.value.jyr) {
|
|
|
+ mainForm.value.jyr = userStore.getUser?.nickname || ''
|
|
|
+ }
|
|
|
+ detailRows.value.forEach((row: any) => {
|
|
|
+ const sampleFromInput = toInt(row.jypc)
|
|
|
+ const sampleFromValues = getRowSampleMax(row)
|
|
|
+ row.__maxSampleCount = Math.min(20, Math.max(sampleFromInput, sampleFromValues))
|
|
|
+ })
|
|
|
} finally {
|
|
|
loading.value = false
|
|
|
}
|
|
|
@@ -465,6 +469,60 @@ const handleDeleteRow = (index: number) => {
|
|
|
recordStore.deleteDetailRow(taskId.value, index)
|
|
|
}
|
|
|
|
|
|
+const toInt = (value: unknown) => {
|
|
|
+ if (value === null || value === undefined || value === '') return 0
|
|
|
+ const num = Number(String(value).replace(/[^\d]/g, ''))
|
|
|
+ return Number.isNaN(num) ? 0 : num
|
|
|
+}
|
|
|
+
|
|
|
+const normalizeInt = (value: unknown) => {
|
|
|
+ if (value === null || value === undefined) return ''
|
|
|
+ const text = String(value).replace(/[^\d]/g, '')
|
|
|
+ return text
|
|
|
+}
|
|
|
+
|
|
|
+const handleMainIntInput = (field: string) => {
|
|
|
+ ;(mainForm.value as any)[field] = normalizeInt((mainForm.value as any)[field])
|
|
|
+ if (field === 'jyhgsl') {
|
|
|
+ const total = toInt(mainForm.value.jysl)
|
|
|
+ const qualified = toInt(mainForm.value.jyhgsl)
|
|
|
+ mainForm.value.jybhgsl = String(Math.max(total - qualified, 0)) as any
|
|
|
+ }
|
|
|
+ if (field === 'jybhgsl') {
|
|
|
+ const total = toInt(mainForm.value.jysl)
|
|
|
+ const unqualified = toInt(mainForm.value.jybhgsl)
|
|
|
+ mainForm.value.jyhgsl = String(Math.max(total - unqualified, 0)) as any
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const getRowSampleMax = (row: any) => {
|
|
|
+ let max = 0
|
|
|
+ for (let i = 1; i <= 20; i += 1) {
|
|
|
+ if (row[`j${i}`] !== undefined && row[`j${i}`] !== '') {
|
|
|
+ max = Math.max(max, i)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return max
|
|
|
+}
|
|
|
+
|
|
|
+const handleRowIntInput = (row: any, field: string) => {
|
|
|
+ row[field] = normalizeInt(row[field])
|
|
|
+ if (field === 'jypc') {
|
|
|
+ const input = Math.min(20, toInt(row.jypc))
|
|
|
+ const currentMax = row.__maxSampleCount || 0
|
|
|
+ row.__maxSampleCount = Math.max(currentMax, input)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const sampleColumnCount = computed(() => {
|
|
|
+ let max = 0
|
|
|
+ detailRows.value.forEach((row: any) => {
|
|
|
+ const rowMax = row.__maxSampleCount || toInt(row.jypc) || 0
|
|
|
+ if (rowMax > max) max = rowMax
|
|
|
+ })
|
|
|
+ return Math.min(20, Math.max(1, max))
|
|
|
+})
|
|
|
+
|
|
|
const handleSave = async () => {
|
|
|
if (!taskId.value) return
|
|
|
saving.value = true
|
|
|
@@ -487,10 +545,15 @@ const handleOpenEditor = () => {
|
|
|
router.push(`${basePath}/${taskId.value}`)
|
|
|
}
|
|
|
|
|
|
-const resultOptions = [
|
|
|
+const judgeOptions = [
|
|
|
{ label: '合格', value: 1 },
|
|
|
- { label: '不合格', value: 0 },
|
|
|
- { label: '待判定', value: 2 }
|
|
|
+ { label: '不合格', value: 0 }
|
|
|
+]
|
|
|
+
|
|
|
+const clfsOptions = [
|
|
|
+ { label: '退货', value: '0' },
|
|
|
+ { label: '挑选', value: '1' },
|
|
|
+ { label: '让步接收', value: '2' }
|
|
|
]
|
|
|
|
|
|
watch(taskId, () => { fetchData() }, { immediate: true })
|
|
|
@@ -518,6 +581,18 @@ watch(taskId, () => { fetchData() }, { immediate: true })
|
|
|
.form-card {
|
|
|
margin-bottom: 16px;
|
|
|
}
|
|
|
+.section-title {
|
|
|
+ display: flex;
|
|
|
+ align-items: flex-start;
|
|
|
+ justify-content: space-between;
|
|
|
+ font-weight: 600;
|
|
|
+}
|
|
|
+.form-meta {
|
|
|
+ text-align: right;
|
|
|
+ font-size: 12px;
|
|
|
+ color: var(--el-text-color-secondary);
|
|
|
+ line-height: 1.6;
|
|
|
+}
|
|
|
.card-header {
|
|
|
display: flex;
|
|
|
align-items: center;
|