13404089107
2025-05-28 a60dc30be50598fe2d1acb42f8171ec69e37b436
laboratory/src/views/dataManagement/confirmation-sheet/components/add-test-item.vue
@@ -3,33 +3,33 @@
    <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>
@@ -49,37 +49,59 @@
    dialogVisible: {
      type: Boolean,
      default: false
    },
    editData: {
      type: Object,
      default: () => null
    }
  },
  data() {
    return {
      form: {
        testCode: '',
        testName: '',
        testType: 1,
        methodCode: '',
        methodName: '',
        requirements: ''
        termCode: '',
        termName: '',
        termType: 1,
        termMethodCode: '',
        termMethod: '',
        sampleRequire: '',
        status: 1,
        testId: ''
      },
      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' }
        ]
      }
    }
  },
  watch: {
    dialogVisible(val) {
      if (val && this.editData) {
        // 编辑模式,回显数据
        this.$nextTick(() => {
          this.form = {
            ...this.editData,
            termType: Number(this.editData.termType) // 确保termType是数字类型
          }
        })
      } else if (!val) {
        // 关闭对话框时重置表单
        this.resetForm()
      }
    }
  },
@@ -87,12 +109,28 @@
    submitForm() {
      this.$refs.form.validate((valid) => {
        if (valid) {
          this.$emit('confirm', this.form)
          // 提交前确保termType是数字类型
          const submitData = {
            ...this.form,
            termType: Number(this.form.termType)
          }
          this.$emit('confirm', submitData)
          this.resetForm()
        }
      })
    },
    resetForm() {
      this.$refs.form.resetFields()
      this.form = {
        termCode: '',
        termName: '',
        termType: 1,
        termMethodCode: '',
        termMethod: '',
        sampleRequire: '',
        status: 1,
        testId: ''
      }
    }
  }
}