gaoluyang
2025-02-15 2e4c2b6e96022dc4fd197ac374c7a596a78f4223
src/components/capability/EditForm.vue
@@ -2,6 +2,7 @@
  <div>
    <el-dialog :title="operationType === 'add' ? '新增' : '编辑'" :visible.sync="editFormDia" width="60%" @close="closeDia">
      <el-form ref="editForm" :model="editForm" :rules="editFormRules" label-width="140px">
        <el-row>
        <el-col :span="12">
          <el-form-item label="检验项:" prop="inspectionItem">
            <el-input v-model="editForm.inspectionItem" clearable size="small"></el-input>
@@ -12,6 +13,8 @@
            <el-input v-model="editForm.inspectionItemEn" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        </el-row>
        <el-row>
        <el-col :span="12">
          <el-form-item label="检验子项:" prop="inspectionItemSubclass">
            <el-input v-model="editForm.inspectionItemSubclass" clearable size="small"></el-input>
@@ -22,6 +25,8 @@
            <el-input v-model="editForm.inspectionItemSubclassEn" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        </el-row>
        <el-row>
        <el-col :span="12">
          <el-form-item label="检验对象:" prop="sample">
            <el-cascader v-model="editForm.sample" :options="itemParameterData.cascaderField.sample.tree"
@@ -35,6 +40,8 @@
            <el-input v-model="editForm.price" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        </el-row>
        <el-row>
        <el-col :span="12">
          <el-form-item label="场所:" prop="laboratory">
            <el-select v-model="editForm.laboratory" clearable placeholder="请选择" size="small" style="width: 100%">
@@ -45,10 +52,12 @@
        <el-col :span="12">
          <el-form-item label="试验室:" prop="sonLaboratory">
            <el-select v-model="editForm.sonLaboratory" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in sonLaboratoryList" :key="item.value" :label="item.label" :value="item.value"></el-option>
                <el-option v-for="item in dict.type.sys_sub_lab" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        </el-row>
        <el-row>
        <el-col :span="12">
          <el-form-item label="要求描述:" prop="askTell">
            <el-input v-model="editForm.askTell" clearable size="small"></el-input>
@@ -59,10 +68,12 @@
            <el-input v-model="editForm.ask" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        </el-row>
        <el-row>
        <el-col :span="12">
          <el-form-item label="计量单位:" prop="unit">
            <el-select v-model="editForm.unit" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in unitList" :key="item.value" :label="item.label" :value="item.value"></el-option>
                <el-option v-for="item in dict.type.sys_unit" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
@@ -71,6 +82,8 @@
            <el-input v-model="editForm.manHour" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        </el-row>
        <el-row>
        <el-col :span="12">
          <el-form-item label="预计时间(H):" prop="manDay">
            <el-input v-model="editForm.manDay" clearable size="small"></el-input>
@@ -81,31 +94,28 @@
            <el-input v-model="editForm.manHourGroup" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        </el-row>
        <el-row>
        <el-col :span="12">
          <el-form-item label="检验项类型:" prop="inspectionItemType">
            <el-select v-model="editForm.inspectionItemType" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in inspectionItemTypeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
                <el-option v-for="item in dict.type.inspection_item_type" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="检验值类型:" prop="inspectionValueType">
            <el-select v-model="editForm.inspectionValueType" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in inspectionValueTypeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
                <el-option v-for="item in dict.type.inspection_value_type" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="字典类型:" prop="dic">
            <el-select v-model="editForm.dic" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in dicList" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        </el-row>
        <el-row>
        <el-col :span="12">
          <el-form-item label="特殊标识:" prop="bsm">
            <el-select v-model="editForm.bsm" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in bsmList" :key="item.value" :label="item.label" :value="item.value"></el-option>
                <el-option v-for="item in dict.type.inspection_bsm" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
@@ -116,6 +126,8 @@
            </el-select>
          </el-form-item>
        </el-col>
        </el-row>
        <el-row>
        <el-col :span="12">
          <el-form-item label="检验项分类:" prop="inspectionItemClass">
            <el-input v-model="editForm.inspectionItemClass" clearable size="small"></el-input>
@@ -126,6 +138,8 @@
            <el-input v-model="editForm.inspectionItemClassEn" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        </el-row>
        <el-row>
        <el-col :span="12">
          <el-form-item label="试验方法:" prop="method">
            <el-select v-model="editForm.method" clearable multiple placeholder="请选择" size="small" style="width: 100%">
@@ -143,11 +157,21 @@
            </el-select>
          </el-form-item>
        </el-col>
        </el-row>
        <el-row>
        <el-col :span="12">
          <el-form-item label="收费标准(元/次):" prop="rates">
            <el-input v-model="editForm.rates" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        </el-row>
<!--        <el-col :span="12">-->
<!--          <el-form-item label="字典类型:" prop="dic">-->
<!--            <el-select v-model="editForm.dic" clearable placeholder="请选择" size="small" style="width: 100%">-->
<!--              <el-option v-for="item in dicList" :key="item.value" :label="item.label" :value="item.value"></el-option>-->
<!--            </el-select>-->
<!--          </el-form-item>-->
<!--        </el-col>-->
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeDia">取 消</el-button>
@@ -159,10 +183,20 @@
<script>
import {
  addItemParameter,
  getItemTree,
  getStandardTemplate,
  obtainItemParameterList,
  upItemParameter
} from "@/api/structural/capability";
import {selectStandardMethods} from "@/api/structural/standardMethod";
export default {
  name: "EditForm",
  // import 引入的组件需要注入到对象中才能使用
  components: {},
  dicts: ['sys_sub_lab', 'inspection_item_type', 'sys_unit', 'inspection_value_type', 'inspection_bsm'],
  data() {
    // 这里存放数据
    return {
@@ -196,12 +230,8 @@
      },
      sampleList: [], // 检验对象下拉框
      laboratoryList: [], // 场所下拉框
      sonLaboratoryList: [], // 试验室下拉框
      unitList: [], // 计量单位下拉框
      inspectionItemTypeList: [], // 检验项类型下拉框
      inspectionValueTypeList: [], // 检验值类型下拉框
      dicList: [], // 字典类型下拉框
      bsmList: [], // 特殊标识下拉框
      templateIdList: [], // 原始记录模板下拉框
      methodList: [], // 试验方法下拉框
      radiusListList: [], // 条件下拉框
@@ -240,15 +270,9 @@
    openDia (type, row) {
      this.operationType = type
      this.editFormDia = true
      this.selectEnumByCategory() // 检验项类型
      this.selectEnumByCategoryForSpecial() // 特殊标识
      this.selectEnumByCategoryForInspectionValueType() // 检验值类型
      this.obtainItemParameterList() // 场所类型
      this.selectEnumByCategoryForSLaboratory() // 子实验室
      this.getStandardTemplate() // 原始记录模板下拉框
      this.selectEnumByCategoryForUnit() // 计量单位
      this.selectStandardMethods() // 试验方法
      this.selectDocUnit() // 字典类型
      this.getSelectStandardMethods() // 试验方法
      this.selectTestObjectByName() // 检验对象
      if (type === 'add') {
        this.editForm = {
@@ -277,7 +301,7 @@
            radiusList: [], // 条件
            rates: '', // 条件
        }
        this.$refs.editForm.resetFields()
        this.resetForm('editForm')
      } else {
        this.editForm = this.HaveJson(row)
        this.editForm.sample = JSON.parse(this.editForm.sample)
@@ -293,45 +317,34 @@
          let obj = this.HaveJson(this.editForm)
          obj.method = JSON.stringify(obj.method)
          obj.sample = JSON.stringify(obj.sample)
          console.log('obj.radiusList---', obj.radiusList)
          if (obj.radiusList !== null && obj.radiusList.length > 0) {
            obj.radiusList = JSON.stringify(obj.radiusList)
          }
          if(obj.id){
            // 修改
            this.$axios.post(this.$api.capacityScope.upItemParameter, obj, {
              headers: {
                'Content-Type': 'application/json'
              }
            }).then(res => {
            upItemParameter(obj).then(res => {
              this.editLoad = false
              if (res.code === 201) {
              if (res.code === 500) {
                return
              }
              this.$message.success('修改成功')
              this.editFormDia = false
              this.$parent.refreshTable('page')
              this.$emit('refreshTable')
            }).catch(e => {
              this.editLoad = false
              this.editFormDia = false
            })
          }else{
            // 新增
            this.$axios.post(this.$api.capacityScope.addItemParameter, obj, {
              headers: {
                'Content-Type': 'application/json'
              }
            }).then(res => {
            addItemParameter(obj).then(res => {
              this.editLoad = false
              if (res.code === 201) {
              if (res.code === 500) {
                return
              }
              this.$message.success('添加成功')
              this.editFormDia = false
              this.$parent.refreshTable('page')
              this.$emit('refreshTable')
            }).catch(e => {
              this.editLoad = false
              this.editFormDia = false
            })
          }
        }
@@ -343,13 +356,13 @@
      this.$refs.editForm.resetFields()
    },
    selectTestObjectByName() {
      this.$axios.get(this.$api.capacityScope.getItemTree).then(res => {
      getItemTree().then(res => {
        if (res.data.length > 0) {
        res.data.forEach(a=>{
          this.cascaderFieldData(a)
        })
        this.itemParameterData.cascaderField.sample.tree = res.data
        // this.sampleTree = res.data
        // console.log(2222,res.data)
        }
      })
    },
    cascaderFieldData(val){
@@ -369,9 +382,10 @@
        })
      }
    },
    selectStandardMethods() {
      this.$axios.get(this.$api.standardMethod.selectStandardMethods).then(res => {
    getSelectStandardMethods() {
      selectStandardMethods().then(res => {
        let data = []
          if (res.data.length > 0) {
        res.data.forEach(a => {
          data.push({
            label: a.code,
@@ -379,52 +393,25 @@
          })
        })
        this.methodList = data
      })
    },
    selectDocUnit() {
      this.$axios.post(this.$api.enums.getDic).then(res => {
        this.dicList = res.data.map(m => {
          return {
            label: m,
            value: m
          }
        })
      })
    },
    obtainItemParameterList() {
      this.$axios.get(this.$api.laboratoryScope.obtainItemParameterList).then(res => {
      obtainItemParameterList().then(res => {
        let data = []
        // let data0 = []
          if (res.data.length > 0) {
        res.data.forEach(a => {
          data.push({
            label: a.laboratoryName,
            value: a.id
          })
          // data0.push({
          //   label: a.laboratoryName,
          //   value: a.laboratoryName
          // })
        })
          }
        this.laboratoryList = data
      })
    },
    selectEnumByCategory() {
      this.$axios.post(this.$api.enums.selectEnumByCategory, {
        category: "检验项类型"
      }).then(res => {
        res.data[1].type = 'info'
        this.inspectionItemTypeList = res.data
      })
    },
    selectEnumByCategoryForInspectionValueType() {
      this.$axios.post(this.$api.enums.selectEnumByCategory, {
        category: "检验值类型"
      }).then(res => {
        this.inspectionValueTypeList = res.data
      })
    },
    getStandardTemplate() {
      this.$axios.get(this.$api.StandardTemplate.getStandardTemplate).then(res => {
      getStandardTemplate().then(res => {
        let data = []
        res.data.forEach(a => {
          data.push({
@@ -436,33 +423,12 @@
        this.templateIdList = data
      })
    },
    selectEnumByCategoryForSpecial() {
      this.$axios.post(this.$api.enums.selectEnumByCategory, {
        category: "是否"
      }).then(res => {
        this.bsmList = res.data
      })
    },
    selectEnumByCategoryForSLaboratory() {
      this.$axios.post(this.$api.enums.selectEnumByCategory, {
        category: "子实验室"
      }).then(res => {
        this.sonLaboratoryList = res.data
      })
    },
    selectEnumByCategoryForUnit() {
      this.$axios.post(this.$api.enums.selectEnumByCategory, {
        category: "单位"
      }).then(res => {
        this.unitList = res.data
      })
    },
  },
}
</script>
<style scoped>
>>>.el-dialog__body {
::v-deep .el-dialog__body {
  height: 620px;
  overflow-y: auto;
}