licp
2024-09-29 55008d09e47511bcb241eb909dff3e36c89099db
src/components/view/a5-capacity-scope.vue
@@ -46,6 +46,9 @@
  >>> .el-upload-dragger {
    width: 100% !important;
  }
  .mb-10 {
    margin-bottom: 10px;
  }
</style>
<template>
@@ -146,6 +149,255 @@
        <el-button type="primary" @click="submitUpload()" :loading="uploading">上 传</el-button>
      </span>
    </el-dialog>
    <el-dialog :title="addTitle" :visible.sync="addVisible" width="50%">
      <span slot="footer" class="dialog-footer">
        <el-row :gutter="20">
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>检验项:</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="addForm.inspectionItem"></el-input></div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">检验项EN:</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="addForm.inspectionItemEn"></el-input></div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">检验子项:</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="addForm.inspectionItemSubclass"></el-input></div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">检验子项EN:</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="addForm.inspectionItemSubclassEn"></el-input></div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">检验对象:</div>
              <div class="search_input">
                <el-cascader v-model="addForm.sample" :options="itemParameterData.cascaderField.sample.tree" :show-all-levels="false"
                placeholder="请选择"  clearable
                size="small" filterable style="width: 100%;" :props="{
              value:'name',
              label:'name',
              checkStrictly: true,
              multiple: true
            }"></el-cascader>
              </div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">单价(元):</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="addForm.price"></el-input></div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">场所:</div>
              <div class="search_input">
                <el-select v-model="addForm.laboratory" placeholder="请选择" size="small" style="width: 100%;">
                  <el-option
                    v-for="item in itemParameterData.selectField.laboratory.select"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    clearable>
                  </el-option>
                </el-select>
              </div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>试验室:</div>
              <div class="search_input">
                <el-select v-model="addForm.sonLaboratory" placeholder="请选择" size="small" style="width: 100%;">
                  <el-option
                    v-for="item in itemParameterData.selectField.sonLaboratory.select"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    clearable>
                  </el-option>
                </el-select>
              </div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">要求描述:</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="addForm.askTell"></el-input></div>
            </div>
          </el-col><el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">要求值:</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="addForm.ask"></el-input></div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>计量单位:</div>
              <div class="search_input">
                <el-select v-model="addForm.unit" placeholder="请选择" size="small" style="width: 100%;">
                  <el-option
                    v-for="item in itemParameterData.selectField.unit.select"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    clearable>
                  </el-option>
                </el-select>
              </div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">工时(H):</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="addForm.manHour"></el-input></div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>预计时间(H):</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="addForm.manDay"></el-input></div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">工时分组:</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="addForm.manHourGroup"></el-input></div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>检验项类型:</div>
              <div class="search_input">
                <el-select v-model="addForm.inspectionItemType" placeholder="请选择" size="small" style="width: 100%;">
                  <el-option
                    v-for="item in itemParameterData.selectField.inspectionItemType.select"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    clearable>
                  </el-option>
                </el-select>
              </div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>检验值类型:</div>
              <div class="search_input">
                <el-select v-model="addForm.inspectionValueType" placeholder="请选择" size="small" style="width: 100%;">
                  <el-option
                    v-for="item in itemParameterData.selectField.inspectionValueType.select"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    clearable>
                  </el-option>
                </el-select>
              </div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">字典类型:</div>
              <div class="search_input">
                <el-select v-model="addForm.dic" placeholder="请选择" size="small" style="width: 100%;">
                  <el-option
                    v-for="item in itemParameterData.selectField.dic.select"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    clearable>
                  </el-option>
                </el-select>
              </div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">特殊标识:</div>
              <div class="search_input">
                <el-select v-model="addForm.bsm" placeholder="请选择" size="small" style="width: 100%;">
                  <el-option
                    v-for="item in itemParameterData.selectField.bsm.select"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    clearable>
                  </el-option>
                </el-select>
              </div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>原始记录模板:</div>
              <div class="search_input">
                <el-select v-model="addForm.templateId" placeholder="请选择" size="small" style="width: 100%;">
                  <el-option
                    v-for="item in itemParameterData.selectField.templateId.select"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    clearable>
                  </el-option>
                </el-select>
              </div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">检验项分类:</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="addForm.inspectionItemClass"></el-input></div>
            </div>
          </el-col><el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label">检验项分类EN:</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="addForm.inspectionItemClassEn"></el-input></div>
            </div>
          </el-col>
          <el-col :span="12" class="mb-10">
            <div class="search_thing">
              <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>试验方法:</div>
              <div class="search_input">
                <el-select v-model="addForm.method" placeholder="请选择" size="small" style="width: 100%;" multiple>
                  <el-option
                    v-for="item in itemParameterData.selectField.method.select"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    clearable>
                  </el-option>
                </el-select>
              </div>
            </div>
          </el-col>
        </el-row>
        <el-button @click="addVisible = false">取 消</el-button>
        <el-button type="primary" @click="addItem" :loading="uploading">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>
@@ -157,6 +409,7 @@
    },
    data() {
      return {
        addVisible:false,
        logining:false,
        radio: '-1',
        showItemParameter: true,
@@ -176,10 +429,10 @@
          select: true,
          row: 2,
          do: [{
            id: 'update',
            id: '111',
            font: '编辑',
            type: 'text',
            method: 'doDiy',
            method: 'handleEdit',
            field: []
          }, {
            id: 'delete',
@@ -312,7 +565,6 @@
        itemParameterEntityCopy: {},
        testObjectDataEntityCopy: {},
        upIndex: 0,
        addDia: false,
        addPower: true,
        select: 0,
        laboratory: [],
@@ -353,6 +605,61 @@
        fileList: [],
        token: null,
        uploading: false,
        addForm:{
          inspectionItem:null,
          inspectionItemEn:null,
          inspectionItemSubclass:null,
          inspectionItemSubclassEn:null,
          sample:[],
          price:null,
          laboratory:null,
          sonLaboratory:null,
          askTell:null,
          ask:null,
          unit:null,
          manHour:null,
          manDay:null,
          manHourGroup:null,
          inspectionItemType:null,
          inspectionValueType:null,
          dic:null,
          bsm:null,
          templateId:null,
          inspectionItemClass:null,
          inspectionItemClassEn:null,
          method:[]
        },
        addTitle:'新增'
      }
    },
    watch: {
      'addVisible'(val){
        if(!val){
          this.addForm = {
          inspectionItem:null,
          inspectionItemEn:null,
          inspectionItemSubclass:null,
          inspectionItemSubclassEn:null,
          sample:[],
          price:null,
          laboratory:null,
          sonLaboratory:null,
          askTell:null,
          ask:null,
          unit:null,
          manHour:null,
          manDay:null,
          manHourGroup:null,
          inspectionItemType:null,
          inspectionValueType:null,
          dic:null,
          bsm:null,
          templateId:null,
          inspectionItemClass:null,
          inspectionItemClassEn:null,
          method:[]
        }
        }
      }
    },
    created() {
@@ -448,9 +755,94 @@
      },
      openAdd() {
        if (this.radio === '0') {
          this.$refs.itemParameterTable.openAddDia(this.$api.capacityScope.addItemParameter);
          // this.$refs.itemParameterTable.openAddDia(this.$api.capacityScope.addItemParameter);
          this.addTitle = '新增'
          this.addVisible = true
        } else {
          this.$refs.testObjectTable.openAddDia(this.$api.capacityScope.addTestObject);
        }
      },
      handleEdit(row){
        this.addTitle = '编辑'
        this.addForm = this.HaveJson(row)
        this.addForm.sample = JSON.parse(this.addForm.sample)
        this.addVisible = true
      },
      addItem(){
        if(!this.addForm.inspectionItem){
          this.$message.error('请输入检验项')
          return
        }
        if(!this.addForm.sonLaboratory){
          this.$message.error('请选择试验室')
          return
        }
        if(!this.addForm.unit){
          this.$message.error('请选择计量单位')
          return
        }
        if(!this.addForm.manDay){
          this.$message.error('请选择预计时间')
          return
        }
        if(!this.addForm.inspectionItemType){
          this.$message.error('请选择检验项类型')
          return
        }
        if(!this.addForm.inspectionValueType){
          this.$message.error('请选择检验值类型')
          return
        }
        if(!this.addForm.templateId){
          this.$message.error('请选择原始记录模板')
          return
        }
        if(!this.addForm.method){
          this.$message.error('请选择试验方法')
          return
        }
        let obj = this.HaveJson(this.addForm)
        obj.method = JSON.stringify(obj.method)
        obj.sample = JSON.stringify(obj.sample)
        this.uploading = true
        if(obj.id){
          // 修改
          this.$axios.post(this.$api.capacityScope.upItemParameter, obj, {
          headers: {
            'Content-Type': 'application/json'
          }
        }).then(res => {
          this.uploading = false
          if (res.code === 201) {
            return
          }
          this.$message.success('修改成功')
          this.addDia = false
          this.refreshTable()
          this.addVisible = false
        }).catch(e => {
          this.uploading = false
          this.addVisible = false
        })
        }else{
          // 新增
          this.$axios.post(this.$api.capacityScope.addItemParameter, obj, {
          headers: {
            'Content-Type': 'application/json'
          }
        }).then(res => {
          this.uploading = false
          if (res.code === 201) {
            return
          }
          this.$message.success('添加成功')
          this.addDia = false
          this.refreshTable()
          this.addVisible = false
        }).catch(e => {
          this.uploading = false
          this.addVisible = false
        })
        }
      },
      selectEnumByCategory() {
@@ -532,6 +924,7 @@
              value: a.laboratoryName
            })
          })
          this.laboratoryList = data0
          this.itemParameterData.selectField.laboratory.select = data0
          this.itemParameterData.tagField.laboratory.select = data0
          this.testObjectData.selectField.laboratoryId.select = data
@@ -550,6 +943,7 @@
          })
          this.itemParameterData.selectField.method.select = data
          this.itemParameterData.tagField.method.select = data
          return
        })
      },
      selectTestObjectByName() {
@@ -558,6 +952,8 @@
            this.cascaderFieldData(a)
          })
          this.itemParameterData.cascaderField.sample.tree = res.data
          // this.sampleTree = res.data
          // console.log(2222,res.data)
        })
      },
      cascaderFieldData(val){