yuyu
2023-08-31 e28bc4fced1c347a48326dcfbb944fdbd6e4660a
src/views/inspectionManagement/reportForInspection/index.vue
@@ -29,18 +29,32 @@
            </el-form>
         </div>
         <el-dialog title="新增原材料报检" :visible.sync="addReportVisible" width="40%">
            <el-form v-model="insertData" label-position="left" label-width="80px">
               <el-form-item label="标准类型">
                  <el-input v-model="insertData.materialName" />
            <el-form ref="addMaterialForm" :rules="insertRule" :model="insertData" :inline="true" label-position="right"
               label-width="80px">
               <el-form-item label="来料日期:" prop="fromDate">
                  <el-date-picker v-model="insertData.fromDate" type="date" value-format="yyyy-MM-dd"></el-date-picker>
               </el-form-item>
               <el-form-item label="物料名称">
                  <el-input v-model="insertData.materialName" />
               <el-form-item label="供货商名称:" prop="supplierName">
                  <el-input v-model="insertData.supplierName" />
               </el-form-item>
               <el-form-item label="执行标准">
                  <el-input v-model="insertData.standardName" />
               <el-form-item label="材料名称:" prop="mName">
                  <el-select v-model="insertData.mName" placeholder="请选择材料名称" @change="(val)=>{getSpecification(val)}">
                     <el-option v-for="(item,index) in materialList" :key="index" :label="item.name"
                        :value="item.id"></el-option>
                  </el-select>
               </el-form-item>
               <el-form-item label="规格型号">
                  <el-input v-model="insertData.specificationsName" />
               <el-form-item label="材料编码:" prop="mCode">
                  <el-input disabled v-model="insertData.mCode" />
               </el-form-item>
               <el-form-item label="规格型号:" prop="specificationsNumber">
                  <el-cascader v-model="insertData.specificationsNumber" :options="childrenOptions"
                     :props="{label: 'Name', value: 'Name'}" separator="-"></el-cascader>
               </el-form-item>
               <el-form-item label="单位:" prop="unit">
                  <el-input type="text" v-model="insertData.unit" />
               </el-form-item>
               <el-form-item label="数量:" prop="num">
                  <el-input type="number" v-model="insertData.num"/>
               </el-form-item>
            </el-form>
            <span slot="footer" class="dialog-footer">
@@ -60,10 +74,9 @@
                  <el-button @click="addReportBtn" type="primary" size="mini" icon="el-icon-document"
                     style="background-color: rgb(1, 102, 226);">生成报检单</el-button>
               </div>
            </div>
            <div class="table-box">
               <el-table ref="inspectionTable" :max-height="800" :cell-style="{textAlign: 'center'}"
               <el-table ref="inspectionTable" :max-height="600" :cell-style="{textAlign: 'center'}"
                  :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}"
                  :data="inspectionTable" style="width: 100%" @selection-change="handleSelectionChange">
                  <el-table-column type="selection" :selectable="checkSelect" min-width="5%">
@@ -88,26 +101,44 @@
                  </el-table-column>
                  <el-table-column label="操作" min-width="8%">
                     <template slot-scope="scope">
                        <el-button type="text" size="small" @click="removeFun(scope.row)">删除</el-button>
                        <el-button type="text" size="small" @click="removeFun(scope.row,scope.$index)">删除</el-button>
                     </template>
                  </el-table-column>
               </el-table>
               <!-- 分页器 -->
               <div>
                  <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
                     :current-page="currentPage" :page-sizes="[5, 10, 15, 20]" :page-size="pageSize"
                     :current-page="currentPage" :page-sizes="[10, 15, 20,30]" :page-size="pageSize"
                     layout="total, sizes, prev, pager, next, jumper" :total="total">
                  </el-pagination>
               </div>
            </div>
         </div>
      </div>
      <el-dialog title="选择日期" :visible.sync="addReportDialog" width="30%">
         <el-form :model="addInspectionForm" :rules="addInspectionFormRules" rule="addInspectionForm">
            <el-form-item label="检验日期" label-width="100px" prop="inspectionDate">
               <el-date-picker v-model="addInspectionForm.inspectionDate" type="daterange" value-format="yyyy-MM-dd"
                  range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
               </el-date-picker>
            </el-form-item>
            <el-form-item label="版本" label-width="100px" prop="version">
               <el-select v-model="addInspectionForm.version" placeholder="请选择版本">
                  <el-option v-for="(item,index) in 5" :key="index" :value="item" :label="item"></el-option>
               </el-select>
            </el-form-item>
         </el-form>
         <div slot="footer" class="dialog-footer">
            <el-button @click="resetForm('addInspectionForm')">取 消</el-button>
            <el-button type="primary" @click="confirmBtn('addInspectionForm')">确 定</el-button>
         </div>
      </el-dialog>
      <!-- 生成报检单 -->
      <div class="newPage" v-if="showNewPage">
         <!-- 新增页面 -->
         <div class="inspectionForm">
            <el-form :model="inspectionForm" ref="inspectionForm" label-position="right" label-width="100px" size="mini">
            <el-form :model="inspectionForm" label-position="right" label-width="100px" size="mini">
               <div class="formwrapper">
                  <el-row>
                     <el-col :span="8">
@@ -182,17 +213,19 @@
               <el-table-column prop="testValue" label="检验值" width="125"></el-table-column>
               <el-table-column prop="userName" label="检验人">
                  <template slot-scope="scope">
                     <el-select v-model="scope.row.checker" size="small" slot="append" style="width: 260px;">
                        <el-option v-for="(item,index) in checkeroptions" :key="index" :value="item.value"
                           :label="item.label">{{ item.label }}</el-option>
                     <el-select @blur="blurOptions(scope.row)" v-model="scope.row.check" size="small" slot="append"
                        style="width: 260px;">
                        <el-option v-for="(item,index) in checkeroptions" :key="index" :value="item.id"
                           :label="item.name"></el-option>
                     </el-select>
                  </template>
               </el-table-column>
               <el-table-column prop="device" label="试验设备">
                  <template slot-scope="scope">
                     <el-select v-model="scope.row.device" size="small" slot="append" style="width: 260px;">
                        <el-option v-for="(item,index) in deviceoptions" :key="index" :value="item.value"
                           :label="item.label">{{ item.label }}</el-option>
                     <el-select @blur="blurOptions(scope.row)" v-model="scope.row.device" size="small" slot="append"
                        style="width: 260px;">
                        <el-option v-for="(item,index) in deviceoptions" :key="index" :value="item.id"
                           :label="item.equipmentName"></el-option>
                     </el-select>
                  </template>
               </el-table-column>
@@ -206,14 +239,32 @@
   import {
      getRawMaterialList,
      addInspect,
      selectInspectsListById
      selectInspectsListById,
      selectUser,
      selectEquipment,
      deleteMaterial,
      addMaterial,
      getMaterielName,
      getSpecification
   } from '@/api/inspection/rawmaterial'
   export default {
      data() {
         return {
            insertData: {
            userName: "",
            devices: "",
            addInspectionForm: {
               inspectionDate: ['2023-08-01', '2023-08-31'],
               version: 5
            },
            addInspectionFormRules: {
               inspectionDate: [{
                  required: true,
                  message: '请选择日期区间',
                  trigger: 'change'
               }],
            },
            addReportDialog: false,
            insertData: {},
            addReportVisible: false,
            checked: false,
            resultData: {},
@@ -225,15 +276,36 @@
               state: '',
               date: ''
            },
            childrenOptions: [{
               value: 'zhinan',
               label: '指南',
               children: [{
                  value: 'shejiyuanze',
                  label: '设计原则',
                  children: [{
                     value: 'yizhi',
                     label: '一致'
                  }, {
                     value: 'fankui',
                     label: '反馈'
                  }, {
                     value: 'xiaolv',
                     label: '效率'
                  }, {
                     value: 'kekong',
                     label: '可控'
                  }]
               }]
            }],
            options: [{
               value: 0,
               value: null,
               label: '全部'
            }, {
               value: 1,
               label: '已检验'
               label: '已报检'
            }, {
               value: 2,
               label: '待检验'
               value: 0,
               label: '未报检'
            }],
            deviceoptions: [{
               value: 0,
@@ -251,15 +323,15 @@
            }],
            radioOptions: [{
               label: '全部',
               value: 0
               value: null
            }, {
               value: 1,
               label: '已检验'
               label: '已报检'
            }, {
               value: 2,
               label: '待检验'
               value: 0,
               label: '未报检'
            }],
            radioValue: 0,
            radioValue: null,
            inspectionTable: [{
               createTime: '2023-07-28',
               supplier_name: '国网山东省电力有限公司',
@@ -274,28 +346,103 @@
               condition: 1
            }],
            currentPage: 1,
            pageSize: 5,
            pageSize: 10,
            total: 20,
            data: '',
            showNewPage: false,
            inspectionForm: {},
            inspectionItems: []
            inspectionItems: [{
               index: 1,
               name: "aaa",
               unit: "KB",
               required: "1",
               internal: "2",
               testValue: "3",
               userName: "",
               device: ""
            }],
            insertRule: {
               fromDate: [{
                  required: true,
                  message: '请选择来料日期',
                  trigger: 'blur'
               }],
               supplierName: [{
                  required: true,
                  message: '请输入供应商名称',
                  trigger: 'blur'
               }],
               mName: [{
                  required: true,
                  message: '请选择物料名称',
                  trigger: 'blur'
               }],
               mCode: [{
                  required: true,
                  message: '请选择物料',
                  trigger: 'blur'
               }],
               specificationsNumber: [{
                  required: true,
                  message: '请选择规格型号',
                  trigger: 'blur'
               }],
               unit: [{
                  required: true,
                  message: '请输入单位',
                  trigger: 'blur'
               }],
               num: [{
                  required: true,
                  message: '请输入报检数量',
                  trigger: 'blur'
               }]
            },
            materialList: []
         }
      },
      created() {
         this.getRawMaterialList()
      },
      mounted() {
         this.getMaterielName()
      },
      methods: {
         removeFun(row) {
         handleChange() {
         },
         async deleteMaterialFun(row, index) {
            let formData = new FormData();
            formData.append("deleteId", row.id)
            await deleteMaterial(formData).then(() => {
               this.inspectionTable.splice(index, 1);
               this.$message.success("删除成功");
            }).catch(error => {
               this.$message.error(error.message);
            });
         },
         blurOptions(row) {
            console.log("更新", row);
         },
         async initNewSelection() {
            const res = await selectUser();
            const res2 = await selectEquipment();
            this.checkeroptions = res.data;
            this.deviceoptions = res2.data;
         },
         resetForm(formName) {
            // this.addInspectionForm.inspectionDate = [],
            // this.$refs[formName].resetFields();
            this.addReportDialog = false
         },
         removeFun(row, index) {
            this.$confirm('确认删除该数据吗?', '提示', {
               confirmButtonText: '确定',
               cancelButtonText: '取消',
               type: 'warning'
            }).then(() => {
               this.$message({
                  type: 'success',
                  message: '删除成功!'
               });
               console.log(row.id);
               this.deleteMaterialFun(row, index);
            }).catch(() => {});
         },
         checkSelect(row, index) {
@@ -310,40 +457,46 @@
         },
         //生成报检单按钮
         addReportBtn() {
            let arr = this.checkData;
            if (arr.length < 1) {
            if (this.checkData.length < 1) {
               this.$message.error("请选择一条数据!");
            } else {
               if (arr.length > 1) {
               if (this.checkData.length > 1) {
                  this.$message.error("最多选择一条数据!");
               } else {
                  //添加报检单
                  let val = arr[0];
                  let obj = {
                     "endTime": val.dateSurvey,
                     "experiment": "",
                     "formTime": val.createTime,
                     "id": val.id,
                     "mcode": val.materialCoding,
                     "name": val.materialName,
                     "num": val.quantity,
                     "specifications": val.specificationsModels,
                     "startTime": val.inspectionDate,
                     "supplier": val.supplierName,
                     "type": val.type,
                     "unit": val.unit,
                     "version": val.version
                  }
                  this.createReport(obj);
                  this.showNewPage = true;
                  this.addReportDialog = true;
               }
            }
         },
         //生成报检单确认按钮
         confirmBtn(formName) {
            let dateArr = this.addInspectionForm.inspectionDate;
            //添加报检单
            let val = this.checkData[0];
            let obj = {
               "endTime": dateArr[1],
               "experiment": "",
               "formTime": val.createTime,
               "id": val.id,
               "mcode": val.materialCoding,
               "name": val.materialName,
               "num": val.quantity,
               "specifications": val.specificationsModels,
               "startTime": dateArr[0],
               "supplier": val.supplierName,
               "type": val.type,
               "unit": val.unit,
               "version": val.version
            }
            // this.createReport(obj);
            this.addReportDialog = false;
            this.initNewSelection();
            this.showNewPage = true;
         },
         //生成报价单
         async createReport(param) {
            await addInspect(param);
            let res = await addInspect(param);
            const res2 = await selectInspectsListById({
               id: 59
               id: res.data
            });
            this.resultData = res2.data;
            this.inspectionForm = res2.data;
@@ -363,7 +516,7 @@
         async search() {
            this.radioValue = this.searchData.state
            const res = await getRawMaterialList({
               condition: this.searchData.state,
               type: this.searchData.state,
               createTime: this.searchData.date,
               materialCoding: this.searchData.code,
               materialName: this.searchData.name,
@@ -384,14 +537,19 @@
            this.getRawMaterialList()
         },
         radioclick() {
            this.searchData.state = this.radioValue
            this.inspectionTable = this.data.filter((item) => {
               return item.condition === this.radioValue
            })
            console.log(this.inspectionTable);
            if (this.radioValue === 0) {
               this.inspectionTable = this.data
            }
            this.total = this.inspectionTable.length
         },
         getAllTableData() {
            this.getRawMaterialList()
         },
         getCheckData() {
         },
         getUnCheckData() {
         },
         // 每页条数改变时触发 选择一页显示多少行
         handleSizeChange(val) {
@@ -407,6 +565,53 @@
            this.getRawMaterialList({
               pageNo: this.currentPage,
               pageSize: this.pageSize
            })
         },
         insert() {
            this.$refs['addMaterialForm'].validate((valid) => {
               if (valid) {
                  var str = {
                     "dateSurvey": this.insertData.fromDate,
                     "materialCoding": this.insertData.mCode,
                     "materialName": this.insertData.mName,
                     "quantity": this.insertData.num,
                     "specificationsModels": this.insertData.specificationsNumber[0] + '-' + this.insertData
                        .specificationsNumber[1],
                     "supplierName": this.insertData.supplierName,
                     "type": 0,
                     "unit": this.insertData.unit
                  }
                  this.materialList.forEach(a => {
                     if (a.id == str.materialName) {
                        str.materialName = a.name
                     }
                  })
                  addMaterial(str).then(res => {
                     this.$message.success('添加成功')
                     this.addReportVisible = false
                     this.getRawMaterialList()
                  })
               } else {
                  return false;
               }
            });
         },
         getMaterielName() {
            getMaterielName().then(res => {
               this.materialList = res.data
            })
         },
         getSpecification(val) {
            this.materialList.forEach(a => {
               if (a.id == val) {
                  this.insertData.mCode = a.code
               }
            })
            getSpecification({
               materialId: val
            }).then(res => {
               this.childrenOptions = JSON.parse(JSON.stringify(res.data).replaceAll('specifications', '').replaceAll(
                  'model', ''))
            })
         }
      }
@@ -510,4 +715,4 @@
         }
      }
   }
</style>
</style>