zouyu
2023-12-02 cdd1902016ebdeab0a0615693e36b66450202765
src/views/quality/packageinspect/packageInspect-form.vue
@@ -6,7 +6,6 @@
        <h2>编辑-包装检验</h2>
      </div>
      <div class="btn-group header-right">
        <el-button @click="save()" type="primary">保存</el-button>
      </div>
    </div>
    <div class="page-main">
@@ -63,10 +62,14 @@
        </el-form>
      </div>
      <div class="packageInspect-detail">
        <el-row style="width:100%;z-index: 10;height:50px;">
            <el-col :span="22">检验项目</el-col>
        <el-row :gutter="10" style="width:100%;z-index: 10;height:50px;">
            <el-col :span="20">检验项目</el-col>
            <el-col :span="2">
              <el-button style="width:100%" size="small" @click="clickAddLine()">添加检验项目</el-button>
              <el-button v-if="resultVal==''" style="width:100%" size="small" @click="clickAddLine()">添加检验项目</el-button>
            </el-col>
            <el-col :span="2">
              <el-button v-if="resultVal==''" style="width:100%" type="primary"  size="small"
              @click="savePackIns()">保存</el-button>
            </el-col>
        </el-row>
        <el-row style="width:100%;">
@@ -86,40 +89,41 @@
                  </el-table-column>
                  <el-table-column prop="name" label="项目" width="260">
                    <template slot-scope="scope">
                        <el-input v-if="scope.row.children" class="inline-input" style="width:90%;" v-model="scope.row.name"
                        <el-input :readonly="resultVal!=''" v-if="scope.row.children" class="inline-input" style="width:90%;" v-model="scope.row.name"
                          placeholder="请输入项目名称"></el-input>
                    </template>
                  </el-table-column>
                  <el-table-column prop="required" label="要求" width="260">
                    <template slot-scope="scope">
                      <div>
                      <el-input v-model="scope.row.required"
                      <div v-if="!scope.row.children">
                      <el-input :readonly="resultVal!=''" v-model="scope.row.required"
                        placeholder="请输入要求"></el-input>
                      </div>
                    </template>
                  </el-table-column>
                  <el-table-column prop="note" label="检验描述" width="260" >
                    <template slot-scope="scope">
                      <div>
                        <el-input v-model="scope.row.note" placeholder="检验描述"></el-input>
                      <div v-if="!scope.row.children">
                        <el-input :readonly="resultVal!=''" v-model="scope.row.note" placeholder="检验描述"></el-input>
                      </div>
                    </template>
                  </el-table-column>
                  <el-table-column fixed="right" prop="testState" label="结论" min-width="150">
                  <el-table-column prop="testState" label="结论" min-width="150">
                    <template slot-scope="scope">
                        <el-select v-model="scope.row.result">
                        <el-select :disabled="resultVal!=''" @change="changeResult" v-model="scope.row.result" v-if="!scope.row.children">
                            <el-option label="合格" value="合格"></el-option>
                            <el-option label="不合格" value="不合格"></el-option>
                        </el-select>
                    </template>
                  </el-table-column>
                  <el-table-column fixed="right" style="background-color: white;" label="操作" width="200">
                  <el-table-column v-if="resultVal==''" fixed="right" style="background-color: white;" label="操作" width="200">
                    <template slot-scope="scope">
                      <el-button icon="el-icon-circle-check" type="text" @click="savePackIns(scope.row,scope.$index)">保存</el-button>
                      <el-button v-if="scope.row.children" icon="el-icon-circle-plus-outline" type="text" @click="clickAddChildren(scope.row,scope.$index)">添加行</el-button>
                      <el-button v-if="!scope.row.children || scope.row.children.length==0"
                      icon="el-icon-circle-close" type="text"
                      <el-button v-if="!scope.row.children" icon="el-icon-circle-close" type="text"
                      @click="clickDelLine(scope.row,scope.$index,scope.row.children!=null)">取消</el-button>
                      <el-button v-if="scope.row.children" icon="el-icon-circle-close" type="text"
                      @click="clickDelLine(scope.row,scope.$index,scope.row.children!=null)">删除项目</el-button>
                    </template>
                  </el-table-column>
                </el-table>
@@ -132,21 +136,22 @@
        </el-row>
        <el-row style="width:100%">
          <el-col :span="24">
            <el-table border height="90" :data="conclusionTable" ref="conclusion" v-model="conclusion"
            <el-table class="l-mes" border height="90" :data="conclusionTable" ref="conclusion" v-model="conclusion"
            :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}"
            :cell-style="{textAlign:'center'}">
                <el-table-column prop="packageNo" label="包装编号"></el-table-column>
                <el-table-column prop="name" label="物料名称"></el-table-column>
                <el-table-column prop="userName" label="检验员"></el-table-column>
                <el-table-column prop="judgeState" label="检验结论">
                <el-table-column prop="result" label="检验结论">
                  <template slot-scope="scope">
                    <el-tag type="success" v-if="scope.row.testState == '1'">合格</el-tag>
                    <el-tag type="danger" v-else-if="scope.row.testState == '0'">不合格</el-tag>
                    <el-select :disabled="resultVal!=''" style="width:100%" v-model="scope.row.result">
                        <el-option label="合格" value="合格"></el-option>
                        <el-option label="不合格" value="不合格"></el-option>
                    </el-select>
                  </template>
                </el-table-column>
                <el-table-column  label="操作">
                    <template>
                        <el-button type="text" :disabled="resultVal!=null && dataForm.id!=null" @click="showDialog()" size="small">上报</el-button>
                        <el-button type="text" :disabled="resultVal!=''" @click="submitSave()" size="small">上报</el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -154,21 +159,6 @@
        </el-row>
      </div>
    </div>
    <el-dialog
      title="上报"
      :visible.sync="dialogVisible"
      width="30%" class="l-mes">
      <el-row>
        <el-col>
          <span>不合格数量:</span>
          <el-input type="number" v-model="unqualifiedNum" placeholder="请输入不合格数量"/>
        </el-col>
      </el-row>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="submitSave()">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>
@@ -176,6 +166,7 @@
import {
  fetchListById,
  updatePackageInsProduct,
  updatePackageInspectById,
} from '@/api/quality/packageInspect'
export default {
    computed:{},
@@ -184,15 +175,7 @@
    data(){
        return{
            loading: false,
            unqualifiedNum: null,
            dialogVisible:false,
            resultVal: null,
            projectList: [],
            // 添加列
            empiricalValueAdd: 1,
            // 编辑时存储最长的列数字,做删除判断
            empiricalValueAddMaxNumber: 0,
            columnList: [],
            dataForm:{
                id: null,
                packInsNo: null,
@@ -215,9 +198,8 @@
            conclusion: null,
            conclusionTable: [{
              packageNo: '',
              name: '',
              userName: '',
              testState: ''
              result: ''
            }],
            dataRule: {},
        }
@@ -229,80 +211,65 @@
    },
    created(){
      this.dataForm.id = this.$route.query.id
      this.resultVal = this.$route.params.resultVal
      if(!this.resultVal){
        let val = sessionStorage.getItem("packIns-resultVal-"+this.dataForm.id)
        if(val){
          this.resultVal=val
        }
      }
      this.init()
    },
    watch:{
      dialogVisible(newVal){
        if(newVal){
          this.unqualifiedNum = null
        }
      },
      list(){
        this.changeResult()
      }
    },
    methods:{
      checkTestState(){
          let resultVal = '1'
          this.list.forEach(item=>{
              if(item.children){
                item.children.forEach(ele=>{
                  if(ele.testState == 0){
                      resultVal = '0'
                  }
                })
              }
      changeResult(){
        let result = '合格'
        let data = this.list
        if(data){
          data.forEach(item=>{
            if(item.children){
              item.children.forEach(ele=>{
                if(ele.result=='不合格'){
                  result='不合格'
                }
              })
            }
          })
          this.resultVal = resultVal
          this.conclusionTable[0].testState = resultVal
          sessionStorage.setItem("raw-resultVal-"+this.dataForm.id,resultVal)
      },
      showDialog(){
        let size = 0 //不合格项目数量
        this.list.forEach(item=>{
          if(item.children){
            let num = item.children.filter(e=>{
              return e.testState == 0
            }).length
            size+=num
          }
        })
        if (size > 0) {
          this.dialogVisible = true
        }else{
          this.submitSave()
        }
        this.conclusionTable[0].result = result
      },
      //上报
      submitSave(){
        let data = {
          id: this.dataForm.id,
          number: this.unqualifiedNum,
          result: this.conclusionTable[0].result,
        }
        updateRawInspectsById(data).then(res => {
          if(res.data.code == 0 && (res.data.data=='1'|| res.data.data=='0')){
            sessionStorage.setItem("raw-resultVal-"+this.dataForm.id,res.data.data)
        updatePackageInspectById(data).then(res => {
          if(res.data.code === 0){
            this.resultVal = res.data.data
            sessionStorage.setItem("packIns-resultVal-"+this.dataForm.id,res.data.data)
            this.$message.success("上报成功");
          }else{
            this.$message.error("上报失败,",res.data.data);
            this.$message.error("上报失败",res.data.data);
          }
          this.dialogVisible = false
          this.checkTestState()
        });
      },
      // 添加行
      clickAddLine(row) {
          this.list.push({
            pId: '',
            name: '',
            note: '',
            required: '',
            result: '',
            randomId: Math.random(),
            children: []
          })
      },
      //添加子级
      clickAddChildren(row,index){
        console.log(row,index);
        row.children.push({
            name: row.name,
            note: '',
            required: '',
            result: '',
@@ -327,19 +294,34 @@
        }
      },
      //保存检查项
      savePackIns(row,index){
        if(row){
          let obj = {
            name: row.anme,
            note: row.note,
            packageInspectId: row.packageInspectId,
            required: row.required,
            result: row.result,
          }
          updatePackageInsProduct(obj).then(res=>{
            console.log(res);
      savePackIns(){
        if(this.list.length==0){
          this.$message.error("检验项目为空!")
          return
        }else{
          let dataList = []
          this.list.forEach(item=>{
            if(item.children){
              item.children.forEach(ele=>{
                let obj = {
                  id: ele.pid || null,
                  name: item.name,
                  note: ele.note,
                  packageInspectId: this.dataForm.id,
                  required: ele.required,
                  result: ele.result,
                }
                dataList.push(obj)
              })
            }
          })
          updatePackageInsProduct(dataList).then(res=>{
            if(res.status===200){
              this.$message.success("保存成功")
            }
          }).catch(error=>{
            console.log(error);
            this.$message.error("保存失败")
          })
        }
      },
@@ -354,51 +336,44 @@
            this.dataForm.projectName = data.projectName
            this.dataForm.createTime = data.createTime
            this.dataForm.createUser = data.createUser
            this.list = data.packageInsProductS
            this.list = []
            let userNameList = []
            data.packageInsProductS.forEach(item => {
              if (item.children) {
                    let ele = {
                      randomId: Math.random(),
                      name: null,
                      children: []
                    }
                    ele.name = item.name
                    item.children.forEach(obj => {
                      if(obj.userName){
                        userNameList.push(obj.userName)
                      }
                      let o = {
                        name: item.name,
                        randomId: Math.random(),
                        required: obj.required,
                        pid: obj.pid,
                        note: obj.note?obj.note:'',
                        result: obj.presult
                      }
                      ele.children.push(o)
                    })
                    this.list.push(ele)
                }
              })
              this.conclusionTable = [{
                packageNo: data.packageNo,
                userName: Array.from(new Set(userNameList)).join(','),
                result: null
              }]
          }).catch(error=>{
            this.$message.error("获取失败",error)
          })
        }else{
          this.conclusionTable = []
        }
      },
      changeState(row, index) {
          if (row.rpId != null && row.rpId != '') {
            let val = row.testValueList.join(",")
            if (val === undefined || val === '' || val === null) {
                return
            }
            let obj = {
              deviceId: row.deviceId,
              rpId: row.rpId,
              testValue: val,
              note: row.note
            }
            updateRawInsProduct(obj).then(res => {
                if (res.data.code == 0) {
                    this.$message.success("更新成功")
                } else {
                    this.$message.error("更新失败")
                }
                this.init()
            })
          }
      },
      save(){
        let data = this.dataForm
        this.list.forEach(item=>{
          item.children.forEach(c=>{
            c.testValue=c.testValueList.join(",")
          })
        })
        data.packageInsProductS = this.list
        addRawInspects(data).then(res=>{
            this.$message.success("保存成功")
            this.$router.go(-1)
        }).catch(error=>{
          this.$message.error(error)
        })
      },
    },
}