| | |
| | | <el-dialog :visible.sync="dialogVisible" @close="$emit('close')" title="新增检测项" width="50%"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-position="top" class="test-item-form"> |
| | | <div class="form-row"> |
| | | <el-form-item label="检测项编号" prop="testCode" class="form-item"> |
| | | <el-input v-model="form.testCode" placeholder="请输入"></el-input> |
| | | <el-form-item label="检测项编号" prop="termCode" class="form-item"> |
| | | <el-input v-model="form.termCode" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="检测项名称" prop="testName" class="form-item"> |
| | | <el-input v-model="form.testName" placeholder="请输入"></el-input> |
| | | <el-form-item label="检测项名称" prop="termName" class="form-item"> |
| | | <el-input v-model="form.termName" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="form-row"> |
| | | <el-form-item label="定性/定量" prop="testType" class="form-item"> |
| | | <el-radio-group v-model="form.testType"> |
| | | <el-form-item label="定性/定量" prop="termType" class="form-item"> |
| | | <el-radio-group v-model="form.termType"> |
| | | <el-radio :label="1">定性</el-radio> |
| | | <el-radio :label="2">定量</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="form-row"> |
| | | <el-form-item label="检测方法编号" prop="methodCode" class="form-item"> |
| | | <el-input v-model="form.methodCode" placeholder="请输入"></el-input> |
| | | <el-form-item label="检测方法编号" prop="termMethodCode" class="form-item"> |
| | | <el-input v-model="form.termMethodCode" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="检测方法" prop="methodName" class="form-item"> |
| | | <el-input v-model="form.methodName" placeholder="请输入"></el-input> |
| | | <el-form-item label="检测方法" prop="termMethod" class="form-item"> |
| | | <el-input v-model="form.termMethod" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <el-form-item label="收样要求" prop="requirements" class="form-item"> |
| | | <el-form-item label="收样要求" prop="sampleRequire" class="form-item"> |
| | | <el-input |
| | | type="textarea" |
| | | v-model="form.requirements" |
| | | v-model="form.sampleRequire" |
| | | :rows="4" |
| | | placeholder="请输入收样要求..." |
| | | ></el-input> |
| | |
| | | data() { |
| | | return { |
| | | form: { |
| | | testCode: '', |
| | | testName: '', |
| | | testType: 1, |
| | | methodCode: '', |
| | | methodName: '', |
| | | requirements: '' |
| | | termCode: '', |
| | | termName: '', |
| | | termType: 1, |
| | | termMethodCode: '', |
| | | termMethod: '', |
| | | sampleRequire: '' |
| | | }, |
| | | rules: { |
| | | testCode: [ |
| | | termCode: [ |
| | | { required: true, message: '请输入检测项编号', trigger: 'blur' } |
| | | ], |
| | | testName: [ |
| | | termName: [ |
| | | { required: true, message: '请输入检测项名称', trigger: 'blur' } |
| | | ], |
| | | testType: [ |
| | | termType: [ |
| | | { required: true, message: '请选择定性/定量', trigger: 'change' } |
| | | ], |
| | | methodCode: [ |
| | | termMethodCode: [ |
| | | { required: true, message: '请输入检测方法编号', trigger: 'blur' } |
| | | ], |
| | | methodName: [ |
| | | termMethod: [ |
| | | { required: true, message: '请输入检测方法', trigger: 'blur' } |
| | | ], |
| | | requirements: [ |
| | | sampleRequire: [ |
| | | { required: true, message: '请输入收样要求', trigger: 'blur' } |
| | | ] |
| | | } |
| | |
| | | this.$refs.form.validate((valid) => { |
| | | if (valid) { |
| | | this.$emit('confirm', this.form) |
| | | this.resetForm() |
| | | } |
| | | }) |
| | | }, |
| | |
| | | <template #search> |
| | | <el-form :model="form" label-width="140px" inline> |
| | | <el-form-item label="所属项目课题方案:"> |
| | | <el-input v-model="form.planName" placeholder="请输入"></el-input> |
| | | <el-input v-model="form.projectName" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="实验编号:"> |
| | | <el-input v-model="form.planCode" placeholder="请输入"></el-input> |
| | | <el-input v-model="form.experimentCode" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="创建人:"> |
| | | <el-input v-model="form.creator" placeholder="请输入"></el-input> |
| | | <el-form-item label="实验名称:"> |
| | | <el-input v-model="form.experimentName" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="通知时间:"> |
| | | <el-date-picker v-model="form.createTime" type="daterange" range-separator="至" |
| | | start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd"></el-date-picker> |
| | | <el-date-picker v-model="dateRange" type="daterange" range-separator="至" |
| | | start-placeholder="开始日期" end-placeholder="结束日期" |
| | | value-format="yyyy-MM-dd" |
| | | @change="handleDateChange"></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="状态:"> |
| | | <el-select v-model="form.status" placeholder="请选择"> |
| | | <el-option label="待确认" value="待确认"></el-option> |
| | | <el-option label="已确认" value="已确认"></el-option> |
| | | <el-form-item label="状态:" v-if="!isDrafts"> |
| | | <el-select v-model="form.auditStatus" placeholder="请选择"> |
| | | <el-option label="待确认" :value="1"></el-option> |
| | | <el-option label="已通过" :value="2"></el-option> |
| | | <el-option label="已驳回" :value="3"></el-option> |
| | | <el-option label="已撤回" :value="4"></el-option> |
| | | <el-option label="已封存" :value="5"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="" class="search-btn-box"> |
| | |
| | | </template> |
| | | <template #setting> |
| | | <div class="tableTitle"> |
| | | <div class="flex a-center"> |
| | | <div class="title pointer">检验方法确认单列表</div> |
| | | <div class="drafts pointer">草稿箱</div> |
| | | <div class="flex a-center" style="gap: 16px;"> |
| | | <div class="title pointer" :class="{ active: !isDrafts }" @click="switchToDrafts(false)">检验方法确认单列表</div> |
| | | <div class="drafts pointer" :class="{ active: isDrafts }" @click="switchToDrafts(true)">草稿箱</div> |
| | | </div> |
| | | <el-button @click="handleAddPlan" class="el-icon-plus" type="primary"> |
| | | 新增检测方法确认单</el-button> |
| | |
| | | |
| | | <script> |
| | | import reviewDialog from './components/review-dialog.vue'; |
| | | import { getList } from './service' |
| | | export default { |
| | | name: "ConfirmationSheet", |
| | | components: { |
| | |
| | | data() { |
| | | return { |
| | | form: { |
| | | planName: "", |
| | | planCode: "", |
| | | creator: "", |
| | | createTime: [], |
| | | approver: "", |
| | | status: "", |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | projectName: "", |
| | | experimentCode: "", |
| | | experimentName: "", |
| | | startTime: "", |
| | | endTime: "", |
| | | auditStatus: "", |
| | | }, |
| | | dateRange: [], |
| | | isDrafts: false, |
| | | showRevoke:false, |
| | | tableData: [], |
| | | total: 0, |
| | | editorContent: '', // 编辑器内容 |
| | | reviewDialogVisible: true, |
| | | editorContent: '', |
| | | reviewDialogVisible: false, |
| | | dialogType: 'review', |
| | | currentRow: {}, |
| | | sampleData: [], |
| | | }; |
| | | }, |
| | | mounted() { |
| | | |
| | | this.getTableData(); |
| | | }, |
| | | methods: { |
| | | async getTableData() { |
| | | try { |
| | | const params = { ...this.form }; |
| | | if (this.isDrafts) { |
| | | params.auditStatus = -1; |
| | | } |
| | | const res = await getList(params); |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.list || []; |
| | | this.total = res.data.total || 0; |
| | | } |
| | | } catch (error) { |
| | | console.error('获取列表数据失败:', error); |
| | | } |
| | | }, |
| | | handleDateChange(val) { |
| | | if (val) { |
| | | this.form.startTime = val[0]; |
| | | this.form.endTime = val[1]; |
| | | } else { |
| | | this.form.startTime = ''; |
| | | this.form.endTime = ''; |
| | | } |
| | | }, |
| | | resetForm() { |
| | | this.form = { |
| | | planName: "", |
| | | planCode: "", |
| | | creator: "", |
| | | createTime: [], |
| | | approver: "", |
| | | status: "", |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | projectName: "", |
| | | experimentCode: "", |
| | | experimentName: "", |
| | | startTime: "", |
| | | endTime: "", |
| | | auditStatus: "", |
| | | }; |
| | | this.dateRange = []; |
| | | this.getTableData(); |
| | | }, |
| | | handleSearch() { |
| | | // 实现查询逻辑 |
| | | console.log("查询条件:", this.form); |
| | | this.form.pageNum = 1; |
| | | this.getTableData(); |
| | | }, |
| | | switchToDrafts(isDrafts) { |
| | | this.isDrafts = isDrafts; |
| | | this.resetForm(); |
| | | }, |
| | | getStatusType(status) { |
| | | const statusMap = { |
| | |
| | | padding-bottom: 20px; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | |
| | | .title { |
| | | .title, .drafts { |
| | | background: #ffffff; |
| | | border-radius: 8px 8px 0px 0px; |
| | | border: 1px solid #049c9a; |
| | | padding: 16px 29px; |
| | | font-weight: bold; |
| | | font-size: 18px; |
| | | color: #049c9a; |
| | | background: #fafafc; |
| | | border: 1px solid #dcdfe6; |
| | | color: #606266; |
| | | width: unset; |
| | | |
| | | &.active { |
| | | background: #ffffff; |
| | | border: 1px solid #049c9a !important; |
| | | color: #049c9a; |
| | | } |
| | | } |
| | | |
| | | .drafts { |
| | | padding: 16px 65px; |
| | | background: #fafafc; |
| | | border-radius: 8px 8px 0px 0px; |
| | | border: 1px solid #dcdfe6; |
| | | font-weight: 400; |
| | | font-size: 18px; |
| | | color: #606266; |
| | | margin-left: 16px; |
| | | &:not(.active) { |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
New file |
| | |
| | | import axios from '@/utils/request'; |
| | | |
| | | // 列表 |
| | | export const getList = (data) => { |
| | | return axios.post('/t-experiment-dispatch/api/t-experiment-dispatch/pageList', { ...data }) |
| | | } |