|
@@ -0,0 +1,540 @@
|
|
|
|
|
+<template>
|
|
|
|
|
+ <div class="ipqc-record-form" v-loading="loading">
|
|
|
|
|
+ <div v-if="isStandalone" class="page-header">
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <h2>过程统计记录表</h2>
|
|
|
|
|
+ <div class="sub-title">任务编号:{{ taskId }}</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="header-actions">
|
|
|
|
|
+ <el-button @click="handleBack">返回</el-button>
|
|
|
|
|
+ <el-button type="primary" @click="handleSave" :loading="saving">保存</el-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <el-card v-if="!isStandalone" shadow="never" class="form-card">
|
|
|
|
|
+ <template #header>
|
|
|
|
|
+ <div class="card-header">
|
|
|
|
|
+ <span>过程统计记录表</span>
|
|
|
|
|
+ <div class="header-actions">
|
|
|
|
|
+ <el-button plain size="small" @click="handleOpenEditor">打开编辑页面</el-button>
|
|
|
|
|
+ <el-button type="primary" size="small" @click="handleSave" :loading="saving">保存</el-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <div class="form-body">
|
|
|
|
|
+ <el-form label-width="110px">
|
|
|
|
|
+ <div class="form-section">
|
|
|
|
|
+ <div class="section-title">基本信息</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="自动生成" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="产品型号">
|
|
|
|
|
+ <el-input v-model="mainForm.cplx" placeholder="请输入产品型号" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="生产批号">
|
|
|
|
|
+ <el-input v-model="mainForm.scph" placeholder="请输入生产批号" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="物料编码">
|
|
|
|
|
+ <el-input v-model="mainForm.wlbm" placeholder="请输入物料编码" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="物料名称">
|
|
|
|
|
+ <el-input v-model="mainForm.wlmc" placeholder="请输入物料名称" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="工序编码">
|
|
|
|
|
+ <el-input v-model="mainForm.gxbm" placeholder="请输入工序编码" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="工序名称">
|
|
|
|
|
+ <el-input v-model="mainForm.gxmc" placeholder="请输入工序名称" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="生产作业人员">
|
|
|
|
|
+ <el-input v-model="mainForm.sczyry" placeholder="请输入生产作业人员" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="来源单据编号">
|
|
|
|
|
+ <el-input v-model="mainForm.lydjbh" placeholder="请输入来源单据编号" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="检验日期">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="mainForm.jyrq"
|
|
|
|
|
+ type="datetime"
|
|
|
|
|
+ placeholder="请选择时间"
|
|
|
|
|
+ format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
+ style="width: 100%"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="检验人">
|
|
|
|
|
+ <el-input v-model="mainForm.jyr" placeholder="请输入检验人" />
|
|
|
|
|
+ </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>
|
|
|
|
|
+ </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-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" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="检规编号">
|
|
|
|
|
+ <el-input v-model="mainForm.jgbh" placeholder="请输入检规编号" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="检规版本">
|
|
|
|
|
+ <el-input v-model="mainForm.jgbb" placeholder="请输入检规版本" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+
|
|
|
|
|
+ <el-col :span="24">
|
|
|
|
|
+ <el-form-item label="备注">
|
|
|
|
|
+ <el-input v-model="mainForm.bz" type="textarea" :rows="3" placeholder="请输入备注" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ </el-row>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="form-section">
|
|
|
|
|
+ <div class="section-title">
|
|
|
|
|
+ 明细
|
|
|
|
|
+ <div class="section-actions">
|
|
|
|
|
+ <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>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-card>
|
|
|
|
|
+
|
|
|
|
|
+ <div v-else class="form-body">
|
|
|
|
|
+ <el-form label-width="110px">
|
|
|
|
|
+ <div class="form-section">
|
|
|
|
|
+ <div class="section-title">基本信息</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="自动生成" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="产品型号">
|
|
|
|
|
+ <el-input v-model="mainForm.cplx" placeholder="请输入产品型号" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="生产批号">
|
|
|
|
|
+ <el-input v-model="mainForm.scph" placeholder="请输入生产批号" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="物料编码">
|
|
|
|
|
+ <el-input v-model="mainForm.wlbm" placeholder="请输入物料编码" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="物料名称">
|
|
|
|
|
+ <el-input v-model="mainForm.wlmc" placeholder="请输入物料名称" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="工序编码">
|
|
|
|
|
+ <el-input v-model="mainForm.gxbm" placeholder="请输入工序编码" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="工序名称">
|
|
|
|
|
+ <el-input v-model="mainForm.gxmc" placeholder="请输入工序名称" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="生产作业人员">
|
|
|
|
|
+ <el-input v-model="mainForm.sczyry" placeholder="请输入生产作业人员" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="来源单据编号">
|
|
|
|
|
+ <el-input v-model="mainForm.lydjbh" placeholder="请输入来源单据编号" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="检验日期">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="mainForm.jyrq"
|
|
|
|
|
+ type="datetime"
|
|
|
|
|
+ placeholder="请选择时间"
|
|
|
|
|
+ format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
+ style="width: 100%"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="检验人">
|
|
|
|
|
+ <el-input v-model="mainForm.jyr" placeholder="请输入检验人" />
|
|
|
|
|
+ </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>
|
|
|
|
|
+ </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-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" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="检规编号">
|
|
|
|
|
+ <el-input v-model="mainForm.jgbh" placeholder="请输入检规编号" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="8">
|
|
|
|
|
+ <el-form-item label="检规版本">
|
|
|
|
|
+ <el-input v-model="mainForm.jgbb" placeholder="请输入检规版本" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+
|
|
|
|
|
+ <el-col :span="24">
|
|
|
|
|
+ <el-form-item label="备注">
|
|
|
|
|
+ <el-input v-model="mainForm.bz" type="textarea" :rows="3" placeholder="请输入备注" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ </el-row>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="form-section">
|
|
|
|
|
+ <div class="section-title">
|
|
|
|
|
+ 明细
|
|
|
|
|
+ <div class="section-actions">
|
|
|
|
|
+ <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>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+</template>
|
|
|
|
|
+
|
|
|
|
|
+<script setup lang="ts">
|
|
|
|
|
+defineOptions({ name: 'IpqcProcessDetailForm' })
|
|
|
|
|
+
|
|
|
|
|
+import { computed, ref, watch } from 'vue'
|
|
|
|
|
+import { useRoute, useRouter } from 'vue-router'
|
|
|
|
|
+import { useIpqcInspectRecordStore } from '@/store/modules/qms/ipqcInspectRecord'
|
|
|
|
|
+import { UploadFile } from '@/components/UploadFile'
|
|
|
|
|
+
|
|
|
|
|
+const props = defineProps<{ id?: string }>()
|
|
|
|
|
+const route = useRoute()
|
|
|
|
|
+const router = useRouter()
|
|
|
|
|
+const recordStore = useIpqcInspectRecordStore()
|
|
|
|
|
+
|
|
|
|
|
+const loading = ref(false)
|
|
|
|
|
+const saving = ref(false)
|
|
|
|
|
+
|
|
|
|
|
+const taskId = computed(() => props.id || String(route.params.taskId || ''))
|
|
|
|
|
+const isStandalone = computed(() => !props.id)
|
|
|
|
|
+
|
|
|
|
|
+const mainForm = computed(() => {
|
|
|
|
|
+ if (!taskId.value) return recordStore.ensureDraft('temp').main
|
|
|
|
|
+ return recordStore.ensureDraft(taskId.value).main
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
|
|
+const detailRows = computed(() => {
|
|
|
|
|
+ if (!taskId.value) return []
|
|
|
|
|
+ return recordStore.ensureDraft(taskId.value).details
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
|
|
+const fetchData = async () => {
|
|
|
|
|
+ if (!taskId.value) return
|
|
|
|
|
+ loading.value = true
|
|
|
|
|
+ try {
|
|
|
|
|
+ await recordStore.load(taskId.value)
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ loading.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const handleAddRow = () => {
|
|
|
|
|
+ if (!taskId.value) return
|
|
|
|
|
+ recordStore.addDetailRow(taskId.value)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const handleDeleteRow = (index: number) => {
|
|
|
|
|
+ if (!taskId.value) return
|
|
|
|
|
+ recordStore.deleteDetailRow(taskId.value, index)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const handleSave = async () => {
|
|
|
|
|
+ if (!taskId.value) return
|
|
|
|
|
+ saving.value = true
|
|
|
|
|
+ try {
|
|
|
|
|
+ await recordStore.save(taskId.value)
|
|
|
|
|
+ ElMessage.success('保存成功')
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ ElMessage.error('保存失败')
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ saving.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const handleBack = () => { router.back() }
|
|
|
|
|
+
|
|
|
|
|
+const handleOpenEditor = () => {
|
|
|
|
|
+ if (!taskId.value) return
|
|
|
|
|
+ const currentPath = router.currentRoute.value.path || ''
|
|
|
|
|
+ const basePath = currentPath.startsWith('/s6') ? '/s6/ipqc/task/edit' : '/qms/ipqc/task/edit'
|
|
|
|
|
+ router.push(`${basePath}/${taskId.value}`)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const resultOptions = [
|
|
|
|
|
+ { label: '合格', value: 1 },
|
|
|
|
|
+ { label: '不合格', value: 0 },
|
|
|
|
|
+ { label: '待判定', value: 2 }
|
|
|
|
|
+]
|
|
|
|
|
+
|
|
|
|
|
+watch(taskId, () => { fetchData() }, { immediate: true })
|
|
|
|
|
+</script>
|
|
|
|
|
+
|
|
|
|
|
+<style scoped lang="scss">
|
|
|
|
|
+.ipqc-record-form {
|
|
|
|
|
+ padding: 4px 0;
|
|
|
|
|
+}
|
|
|
|
|
+.page-header {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ margin-bottom: 16px;
|
|
|
|
|
+ h2 {
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ font-size: 20px;
|
|
|
|
|
+ }
|
|
|
|
|
+ .sub-title {
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
+ color: var(--el-text-color-secondary);
|
|
|
|
|
+ margin-top: 4px;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+.form-card {
|
|
|
|
|
+ margin-bottom: 16px;
|
|
|
|
|
+}
|
|
|
|
|
+.card-header {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+}
|
|
|
|
|
+.form-body {
|
|
|
|
|
+ padding: 8px 4px 4px;
|
|
|
|
|
+}
|
|
|
|
|
+.section-title {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 8px;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ margin-bottom: 12px;
|
|
|
|
|
+ .section-actions {
|
|
|
|
|
+ margin-left: auto;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+</style>
|