86134
2023-11-09 5710f6d9a5ac5998d8368bec99b41c58fa3c4ab2
src/views/quality/rawMaterial/rawMaterial-form.vue
@@ -96,12 +96,15 @@
            </el-row>
        </el-form>
      </div>
      <div class="rawMaterial-detail">
        <el-row style="width:100%;z-index: 10;height:50px;">
            <el-col :span="19">检验项目</el-col>
            <el-col :span="5">
            <el-col :span="18">检验项目</el-col>
            <el-col :span="6">
                <div style="width:100%;text-align: right;">
                    <el-button v-if="dataForm.id==null" size="small" @click="clickAddLine">添加检验行</el-button>
                    <el-button v-if="dataForm.id==null" size="small" @click="clickAddLine()">添加检验项目</el-button>
                    <el-button v-if="resultVal==null || dataForm.id==null" size="small" @click="addTeatValueColumn()">添加检测值列</el-button>
                    <el-button v-if="resultVal==null || dataForm.id==null" size="small" @click="delTeatValueColumn()">删除检测值列</el-button>
                </div>
@@ -109,77 +112,90 @@
        </el-row>
        <el-row style="width:100%;">
            <el-col :span="24">
                <el-table :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}"
                :cell-style="{textAlign:'center'}" ref="table"
                :data="list" border style="width: 100%;" height="400">
                <el-table
                :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}"
                :cell-style="{textAlign:'center'}"
                 ref="table"
                :data="list"
                border
                style="width: 100%;"
                 height="400"
                  row-key="iid"
                  default-expand-all
                  :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
                  <el-table-column type="index" label="序号" width="60">
                  </el-table-column>
                  <el-table-column prop="father" label="检验项目" width="260">
                    <template slot-scope="scope">
                      <el-input :disabled="dataForm.id != null" v-model="scope.row.father" placeholder="请输入检验项目"></el-input>
                    </template>
                  </el-table-column>
                  <el-table-column prop="note" label="检验描述" width="260">
                    <template slot-scope="scope">
                      <el-input :disabled="dataForm.id != null" v-model="scope.row.note" placeholder="检验描述"></el-input>
                      <el-input v-if="scope.row.children" style="width:120px" :disabled="dataForm.id!=null" v-model="scope.row.father" placeholder="请输入检验项目"></el-input>
                    </template>
                  </el-table-column>
                  <el-table-column prop="name" label="项目" width="260">
                    <template slot-scope="scope">
                      <el-select v-if="projectList.length > 0" :disabled="dataForm.id != null" class="inline-input" v-model="scope.row.name"
                      filterable allow-create placeholder="请输入或选择项目名称" style="width:100%" @change="changeName(scope.$index,scope.row)">
                        <el-option v-for="(item,index) in projectList" :key="index" :label="item.name" :value="item.name"/>
                    </el-select>
                      <el-input v-else :disabled="dataForm.id != null" class="inline-input" v-model="scope.row.name"
                    <div v-if="!scope.row.children">
                      <el-input class="inline-input" :disabled="dataForm.id!=null" v-model="scope.row.name"
                        placeholder="请输入项目名称"></el-input>
                    </template>
                  </div>
                      </template>
                  </el-table-column>
                  <el-table-column prop="unit" label="单位" width="260">
                    <template slot-scope="scope">
                    <div v-if="!scope.row.children">
                      <el-input :disabled="dataForm.id != null" v-model="scope.row.unit" placeholder="请输入单位"></el-input>
                    </div>
                    </template>
                  </el-table-column>
                  <el-table-column prop="required" label="标准值" width="260">
                    <template slot-scope="scope">
                      <div v-if="!scope.row.children">
                      <el-input :disabled="dataForm.id != null" v-model="scope.row.required"
                        placeholder="请输入标准值"></el-input>
                      </div>
                    </template>
                  </el-table-column>
                  <el-table-column prop="testValue" label="检测值" min-width="260" v-for="(item, index) in empiricalValueAdd"
                    :key="index">
                  <el-table-column prop="testValue" label="检测值" min-width="260" v-for="(item,index) in empiricalValueAdd" :key="index">
                    <template slot-scope="scope">
                      <div v-if="!scope.row.children">
                      <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="请先选择设备!"
                        placement="top-start">
                        <!-- <el-input :disabled="scope.row.equipmentId == null ||  (dataForm.id!=null&&resultVal!=null)" v-model="scope.row.testValueList[index]"
                          @blur="updateTestValue(scope.row,index)" placeholder="请输入检测值"></el-input> -->
                        <el-autocomplete
                          style="width:100%"
                          :disabled="scope.row.deviceId == null ||  (dataForm.id!=null&&resultVal!=null)"
                          class="inline-input"
                          v-model="scope.row.testValueList[index]"
                          :fetch-suggestions="querySearch"
                          placeholder="请输入检测值"
                          @select="handleSelect"
                        ></el-autocomplete>
                        <el-col v-if="scope.row.itype === '1'">
                            <el-input :disabled="scope.row.deviceId == '' ||  (dataForm.id!=null&&resultVal!=null)"
                                v-model="scope.row.testValueList[index]"
                                placeholder="请输入检测值"></el-input>
                        </el-col>
                          <el-col v-else>
                              <el-select style="width: 100%;"
                              :disabled="scope.row.deviceId == null ||  (dataForm.id!=null&&resultVal!=null)"
                              v-model="scope.row.testValueList[index]" @change="aaa(scope.row)"
                                placeholder="请选择">
                                  <el-option v-for="item in dataVal" :key="item.value" :label="item.label"
                                      :value="item.value">
                                  </el-option>
                              </el-select>
                          </el-col>
                        </el-tooltip>
                      </div>
                    </template>
                  </el-table-column>
                  <el-table-column prop="deviceName" label="试验设备" min-width="260">
                    <template slot-scope="scope">
                        <el-select :disabled="resultVal!=null && dataForm.id!=null" style="width:100%"
                      <div v-if="!scope.row.children">
                        <el-select :disabled="dataForm!=null && resultVal!=null" style="width:100%"
                        v-model="scope.row.deviceId" filterable @change="updateDevice(scope.row,scope.$index)">
                            <el-option v-for="(item,index) in deviceList" 
                            :key="index" :value="item.id" :label="item.code +'-'+ item.name"></el-option>
                        </el-select>
                      </div>
                    </template>
                  </el-table-column>
                  <el-table-column prop="note" label="检验描述" width="260" >
                    <template slot-scope="scope">
                      <div v-if="!scope.row.children">
                      <el-input :disabled="scope.row.deviceId == null ||  (dataForm.id!=null&&resultVal!=null)" v-model="scope.row.note" placeholder="检验描述"></el-input>
                    </div>
                    </template>
                  </el-table-column>
                  <el-table-column fixed="right" v-if="dataForm.id != null" prop="testState" label="结论" min-width="150">
                    <template slot-scope="scope">
                      <span v-if="scope.row.testState == 0" style="color:#F56C6C">不合格</span>
@@ -189,13 +205,18 @@
                  </el-table-column>
                  <el-table-column fixed="right" style="background-color: white;" v-if="dataForm.id == null" label="操作" width="150">
                    <template slot-scope="scope">
                      <el-button type="text" @click="clickDeleteline(scope)">取消</el-button>
                      <div v-if="!scope.row.children">
                          <el-button type="text"  @click="addwaydata(scope)">新增</el-button>
                          <el-button type="text" @click="clickDeleteline(scope)">取消</el-button>
                      </div>
                    </template>
                  </el-table-column>
                </el-table>
            </el-col>
        </el-row>
      </div>
      <div class="rawMaterial-result">
        <el-row>
          <el-col :span="24">检验结论</el-col>
@@ -260,6 +281,15 @@
    },
    data(){
        return{
          dataVal: [{
                label: '是',
                value: '是'
            }, {
                label: '否',
                value: '否'
            }],
          // componentData:{},
            userdata:[],
            currentRow:[],
            userlist:[],
            unqualifiedNum: null,
@@ -287,6 +317,7 @@
                supplier: '',
                rawInsProducts: [{
                  deviceId: 0,
                  father:'',
                  name: '',
                  required: '',
                  testValue: '',
@@ -326,6 +357,7 @@
      this.restaurants = this.loadAll();
      
      console.log(this.dataForm);
    },
    watch:{
      dialogVisible(newVal){
@@ -339,22 +371,21 @@
      querySearch(queryString, cb) {
        var restaurants = this.restaurants;
        var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
        cb(results);
      },
      createFilter(queryString) {
          return (restaurant) => {
            return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
          };
        },
      loadAll(){
        return [
        {"value":"是"},
        {"value":"否"}
      ];},
      handleSelect(item) {
        console.log(item);
      },
      // createFilter(queryString) {
      //     return (restaurant) => {
      //       return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
      //     };
      //   },
      // loadAll(){
      //   return [
      //   {"value":"是"},
      //   {"value":"否"}
      // ];},
      // handleSelect(item) {
      //   console.log(item);
      // },
      changeName(index,row){
        this.projectList.forEach(item=>{
          if(row.name == item.name){
@@ -365,6 +396,7 @@
      },
      // 确认回调
      selectPart(param, nodePart, index) {
        console.log(param)
        if (typeof param !== 'undefined') {
          this.dataForm.code = param.code
          this.dataForm.name = param.name
@@ -376,10 +408,16 @@
          this.dataForm.message = param.message
          this.dataForm.projectName = param.projectName
          this.projectList = param.rawInsProducts == null ? [] : param.rawInsProducts
          console.log(param.rawInsProducts);
          param.rawInsProducts.forEach(item =>{
            item.iid = Math.random()
            console.log(item);
          })
          param.rawInsProducts.forEach(o=>{
            this.clickAddLine(o)
          })
        }
      },
      queryCode(){
        this.paramObj = {
@@ -388,6 +426,8 @@
        this.showPart = true
      },
      updateDevice(row,index){
        console.log(row);
        return
        if(this.dataForm.id != null){
          updateDeviceById({deviceId:row.deviceId,rpId:row.rpId}).then(res=>{
            this.list[index].testValue = ''
@@ -410,6 +450,9 @@
          this.resultVal = resultVal
          this.conclusionTable[0].testState = resultVal
          sessionStorage.setItem("raw-resultVal-"+this.dataForm.id,resultVal)
      },
      aaa(row){
        console.log(row);
      },
      showDialog(){
        let pro = this.list.filter(item => {
@@ -442,25 +485,49 @@
      },
      // 添加行
      clickAddLine(row) {
        let obj = {
          deviceId: null,
          name: "",
          required: "",
          testValue: "",
          unit: "",
          testState: null,
          testValueList: [],
        };
        if(row!=undefined){
          obj.name = row.name
          obj.unit = row.unit
          obj.required = row.required
        if(row){
          let userNameList = []
          row.children.forEach(item => {
            console.log("item--",item);
              item.iid = Math.random()
              let arr = []
              item.testValue = ''
              item.testValueList= []
              if (item.userName) {
                userNameList.push(item.userName)
              }
              if (item.inspectionValue) {
                  arr = item.inspectionValue.split(",")
              }
              item.empiricalValueAddss = arr
              if (arr.length > this.empiricalValueAdd) {
                  this.empiricalValueAdd = arr.length
              }
            console.log("aaaa----",row);
            this.list.push(row)
          })
        }else{
          let ele = {
            father: '',
            iid: Math.random(),
            children:[{
              deviceId: null,
              deviceName: null,
              iid: Math.random(),
              required: null,
              rpId: null,
              name: null,
              unit: null,
              userName: null,
              testValue: null,
              testValueList: [],
              note: null,
              testState: null
            }]
          }
          this.list.push(ele)
        }
        this.list.push(obj);
      },
      // 删除行
      clickDeleteline(scope) {
        this.list.splice(scope.$index, 1);
      },
      delTeatValueColumn(){
        if (this.empiricalValueAdd - 1 === 0) { } else {
@@ -495,6 +562,7 @@
      init(){
        if(this.dataForm.id){
          getObj(this.dataForm.id).then(res=>{
            console.log(res);
            let data = res.data.data
            this.dataForm.name = data.name
            this.dataForm.formTime = data.formTime
@@ -508,27 +576,40 @@
            this.dataForm.createUser = data.createUser
            let userNameList = []
            this.list = []
            data.children.forEach(item=>{
              userNameList.push(item.userName)
              let arr = []
              if(item.testValue != undefined ){
                arr = item.testValue.split(",")
                if(arr.length > this.empiricalValueAdd){
                  this.empiricalValueAdd = arr.length
            data.children.forEach(item => {
              if (item.children) {
                    let ele = {
                      iid: null,
                      father: null,
                      children: []
                    }
                    ele.iid = Math.random()
                    ele.father = item.rpFather
                    item.children.forEach(obj => {
                      console.log(obj);
                      let arr= []
                      if(obj.testValue){
                        arr = obj.testValue.split(",")
                      }
                      let o = {
                        deviceId: obj.deviceId,
                        deviceName: obj.deviceName,
                        iid: Math.random(),
                        required: obj.required,
                        rpId: obj.rpId,
                        name: obj.rpName,
                        unit: obj.rpUnit,
                        userName: obj.userName,
                        testValue: obj.testValue?obj.testValue:'',
                        testValueList: arr,
                        note: obj.note?obj.note:'',
                        testState: obj.testState
                      }
                      ele.children.push(o)
                    })
                    this.list.push(ele)
                }
              }
              this.list.push({
                deviceId: item.deviceId,
                deviceName: item.deviceName,
                name: item.rpName,
                required: item.required,
                testValue: item.testValue,
                unit: item.rpUnit,
                testState: item.testState,
                rpId: item.rpId,
                testValueList: arr
              })
            })
            })
            this.conclusionTable = [{
              code: data.code,
              name: data.name,
@@ -542,18 +623,59 @@
          this.conclusionTable = []
        }
      },
      save(){
        let data = this.dataForm
        data.rawInsProducts = this.list
        data.rawInsProducts.forEach(item=>{
          let val = item.testValueList.join(",")
          item.testValue = val
       // 删除行
       clickDeleteline(scope) {
        console.log(scope);
        let index = this.list.findIndex(el =>{
          return el.children.find(ele => ele.iid == scope.row.iid)
        })
        let childrenIndex = this.list[index].children.findIndex(el => {
          return el.iid == scope.row.iid
        })
        // console.log(this.list);
        console.log(index);
        console.log(childrenIndex);
        this.list[index].children.splice(childrenIndex , 1);
        if(childrenIndex == 0){
          this.list.splice(scope.row,1)
        }
      },
      addwaydata(row){
        console.log(row.row);
       let index = this.list.findIndex(el =>{
          return el.children.find(ele => ele.iid == row.row.iid)
        })
        console.log(index);
        let obj = {
          iid:Math.random(),
          name:'',
          required:'',
          unit:''
        }
        this.list[index].children.push(obj)
      },
      save(){
        console.log(this.dataForm);
        let data = this.dataForm
        console.log(data);
        console.log(this.list);
        data.rawInsProducts = this.list
        // console.log(data.rawInsProducts);
        // data.rawInsProducts.forEach(item=>{
        //   console.log(item);
        //   let val = item.testValueList.join(",")
        //   item.testValue = val
        //   console.log(item.testValue);
        // })
        // console.log(data);
        console.log('=====>');
        addRawInspects(data).then(res=>{
            this.$message.success("保存成功")
            // this.$message.success("保存成功")
            this.$router.go(-1)
        }).catch(error=>{
          this.$message.error(error)
          // this.$message.error(error||'error')
        })
      },
      getDeviceList(){