zouyu
2023-08-30 ed40d9fbd886c5c0fb0f3b0adeb1be1b3240a1dc
src/views/inspectionManagement/reportForInspection/index.vue
@@ -40,9 +40,51 @@
            <el-form-item>
              <el-button type="primary" @click="search">查询</el-button>
              <el-button type="primary" plain @click="reset">重置</el-button>
              <el-button type="primary" icon="el-icon-plus" @click="addReportVisible = true">新增</el-button>
            </el-form-item>
            </el-form>
        </div>
        <el-dialog
          title="新增原材料报检"
          :visible.sync="addReportVisible"
          width="40%">
          <el-form v-model="insertData" :inline="true" label-position="right" label-width="80px">
            <el-form-item label="来料日期:">
              <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.supplierName" />
            </el-form-item>
            <el-form-item label="材料名称:">
              <el-select v-model="insertData.mName" placeholder="请选择材料名称">
                  <el-option v-for="(item,index) in 5" :key="index" :label="item" :value="item"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="材料编码:">
              <el-input disabled v-model="insertData.mCode" />
            </el-form-item>
            <el-form-item label="规格型号:">
              <el-cascader
                v-model="insertData.specificationsNumber"
                :options="childrenOptions"
                @change="handleChange"></el-cascader>
            </el-form-item>
            <el-form-item label="单位:">
              <el-input type="text" v-model="insertData.unit" />
            </el-form-item>
            <el-form-item label="数量:">
              <el-input type="number" v-model="insertData.num" />
            </el-form-item>
          </el-form>
          <span slot="footer" class="dialog-footer">
            <el-button @click="addReportVisible = false">取 消</el-button>
            <el-button type="primary" @click="insert()">确 定</el-button>
          </span>
        </el-dialog>
        <div class="library-table">
          <div class="table-header">
            <div class="search-bar">
@@ -51,7 +93,7 @@
              </el-radio-group>
            </div>
            <div class="generateInsp">
              <el-button @click="showNewPage = true" type="primary" size="mini" icon="el-icon-document" style="background-color: rgb(1, 102, 226);">生成报检单</el-button>
              <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">
@@ -62,11 +104,13 @@
              :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"
                min-width="10%"
              />
                :selectable="checkSelect"
                min-width="5%">
              </el-table-column>
              <el-table-column
                type="index"
                label="序号"
@@ -123,15 +167,22 @@
                min-width="8%"
              />
              <el-table-column
                prop="condition"
                prop="type"
                label="状态"
                min-width="8%"
              >
              <template slot-scope="scope">
                <span :style="{ color: scope.row.condition === 1 ? 'green' : 'red' }">
                  {{ scope.row.condition === 1 ? '已检测':'未检测' }}
                <span :style="{ color: scope.row.type === 1 ? 'green' : 'red' }">
                  {{ scope.row.type === 1 ? '已报检':'未报检' }}
                </span>
              </template>
              </el-table-column>
              <el-table-column
                label="操作"
                min-width="8%">
                <template slot-scope="scope">
                  <el-button type="text" size="small" @click="removeFun(scope.row,scope.$index)">删除</el-button>
                </template>
              </el-table-column>
            </el-table>
            <!-- 分页器 -->
@@ -149,38 +200,61 @@
          </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">
                  <el-form-item label="来料日期:">
                    <el-input  style="width: 180px;" :value="inspectionForm.createTime" disabled autocomplete="off" />
                    <el-input  style="width: 180px;" :value="inspectionForm.formTime" disabled autocomplete="off" />
                  </el-form-item>
                </el-col>
                <el-col  :span="8">
                  <el-form-item label="供应商名称:">
                    <el-input style="width: 180px;" :value="inspectionForm.supplier_name" disabled autocomplete="off" />                  </el-form-item>
                    <el-input style="width: 180px;" :value="inspectionForm.supplier" disabled autocomplete="off" />                  </el-form-item>
                </el-col>
                <el-col  :span="8">
                  <el-form-item label="样品编号:">
                    <el-input style="width: 180px;" :value="inspectionForm.materialCoding" disabled autocomplete="off" />
                    <el-input style="width: 180px;" :value="inspectionForm.code" disabled autocomplete="off" />
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row >
                <el-col  :span="8">
                  <el-form-item label="样品名称:" >
                    <el-input style="width: 180px;" :value="inspectionForm.materialName" disabled autocomplete="off" />
                    <el-input style="width: 180px;" :value="inspectionForm.name" disabled autocomplete="off" />
                  </el-form-item>
                </el-col>
                <el-col  :span="8">
                  <el-form-item label="规格型号:">
                    <el-input style="width: 180px;" :value="inspectionForm.specificationsModels" disabled autocomplete="off" />
                    <el-input style="width: 180px;" :value="inspectionForm.specifications" disabled autocomplete="off" />
                  </el-form-item>
                </el-col>
                <el-col  :span="8">
@@ -192,17 +266,17 @@
              <el-row >
                <el-col  :span="8">
                  <el-form-item label="数量:" >
                    <el-input style="width: 180px;" :value="inspectionForm.quantity" disabled autocomplete="off" />
                    <el-input style="width: 180px;" :value="inspectionForm.num" disabled autocomplete="off" />
                  </el-form-item>
                  </el-col>
                  <el-col :span="8">
                    <el-form-item label="报检日期:" >
                      <el-input style="width: 180px;" :value="inspectionForm.dateSurvey" disabled autocomplete="off" />
                      <el-input style="width: 180px;" :value="inspectionForm.endTime" disabled autocomplete="off" />
                    </el-form-item>
                  </el-col>
                  <el-col :span="8">
                    <el-form-item label="报检人:">
                        <el-input style="width: 180px;" :value="inspectionForm.surveyor" disabled autocomplete="off" />
                        <el-input style="width: 180px;" :value="inspectionForm.userName" disabled autocomplete="off" />
                    </el-form-item>
                  </el-col>
                </el-row>
@@ -213,7 +287,7 @@
          <div class="header">
            <span style="font-size: 14px">检验项目</span>
            <div>
            <el-button  type="primary" plain size="mini">保存</el-button>
            <!-- <el-button  type="primary" plain size="mini">保存</el-button> -->
            <el-button @click="showNewPage = false" type="primary" plain size="mini" icon="el-icon-back">返回</el-button>
          </div>
          </div>
@@ -223,24 +297,24 @@
              :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}"
              :data="inspectionItems">
            <el-table-column type="index" label="序号" width="60"></el-table-column>
            <el-table-column prop="project" label="项目" width="250"></el-table-column>
            <el-table-column prop="name" label="项目" width="250"></el-table-column>
            <el-table-column prop="unit" label="单位" width="125"></el-table-column>
            <el-table-column prop="standardVal" label="标准值" width="125"></el-table-column>
            <el-table-column prop="controlVal" label="内测值" width="125"></el-table-column>
            <el-table-column prop="detectionVal" label="检验值" width="125"></el-table-column>
            <el-table-column prop="checker" label="检验人">
            <el-table-column prop="required" label="标准值" width="125"></el-table-column>
            <el-table-column prop="internal" label="内测值" width="125"></el-table-column>
            <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 in checkeroptions" :key="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 in deviceoptions" :key="item.value" :label="item.label">{{ item.label }}</el-option>
              <template slot-scope="scope">
                <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>
              </template>
            </el-table-column>
          </el-table>
        </div>
@@ -249,10 +323,32 @@
</template>
<script>
import { getRawMaterialList } from '@/api/inspection/rawmaterial'
import { getRawMaterialList,
  addInspect,
  selectInspectsListById,
  selectUser,
  selectEquipment,
  deleteMaterial,
  addMaterial
 } from '@/api/inspection/rawmaterial'
export default {
  data() {
    return {
      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 : {},
      checkData:[],
      form: [],
      searchData: {
        code: '',
@@ -260,15 +356,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,
@@ -286,15 +403,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: '国网山东省电力有限公司',
@@ -313,91 +430,135 @@
      total:20,
      data: '',
      showNewPage: false,
      inspectionForm:{
        createTime: '2023-07-28',
        supplier_name: '国网山东省电力有限公司',
        materialCoding: 'BP214274',
        materialName: '铝包钢绞线',
        specificationsModels: 'JLHA/G1A-185/30-26/7',
        unit: '吨',
        quantity: 21,
        dateSurvey: '2023-08-02',
        surveyor: '黄小明',
        inspectionDate: '2023-12-09',
      },
      inspectionForm:{},
      inspectionItems:[{
        project:'导线外径',
        unit: 'mm',
        standardVal: '30.0',
        controlVal: '30.0',
        detectionVal: '30.0',
        device:'',
        checker: '',
      },{
        project:'导线外径',
        unit: 'mm',
        standardVal: '30.0',
        controlVal: '30.0',
        detectionVal: '30.0',
        device:'',
        checker: ''
      },{
        project:'导线外径',
        unit: 'mm',
        standardVal: '30.0',
        controlVal: '30.0',
        detectionVal: '30.0',
        device:'',
        checker: ''
      },{
        project:'导线外径',
        unit: 'mm',
        standardVal: '30.0',
        controlVal: '30.0',
        detectionVal: '30.0',
        device:'',
        checker: ''
      },{
        project:'导线外径',
        unit: 'mm',
        standardVal: '30.0',
        controlVal: '30.0',
        detectionVal: '30.0',
        device:'',
        checker: ''
      },{
        project:'导线外径',
        unit: 'mm',
        standardVal: '30.0',
        controlVal: '30.0',
        detectionVal: '30.0',
        device:'',
        checker: ''
        index: 1,
        name: "aaa",
        unit: "KB",
        required: "1",
        internal: "2",
        testValue: "3",
        userName:"",
        device: ""
      }]
    }
  },
  created(){
    this.getRawMaterialList()
  },
  mounted(){
  },
  methods: {
    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(() => {
          console.log(row.id);
          this.deleteMaterialFun(row,index);
        }).catch(() => {});
    },
    checkSelect(row,index){
      if(row.type === 1){
        return false;
      }else{
        return true;
      }
    },
    handleSelectionChange(val){
      this.checkData = val;
    },
    //生成报检单按钮
    addReportBtn(){
        if(this.checkData.length < 1){
          this.$message.error("请选择一条数据!");
        }else{
          if(this.checkData.length > 1){
            this.$message.error("最多选择一条数据!");
          }else{
            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){
      let res = await addInspect(param);
      const res2 = await selectInspectsListById({ id : res.data});
      this.resultData = res2.data;
      this.inspectionForm = res2.data;
      this.inspectionItems = res2.data.insProducts;
    },
    // 获取分页列表数据
    async getRawMaterialList(){
      const res = await getRawMaterialList({pageNo: this.currentPage,pageSize:this.pageSize})
      // console.log(res)
      this.inspectionTable = res.data.row
      this.data = res.data.row
      this.total = res.data.total
    },
    async search(){
      this.radioValue = this.searchData.state
      const res = await getRawMaterialList({condition: this.searchData.state,
      const res = await getRawMaterialList({type: this.searchData.state,
        createTime:this.searchData.date,
        materialCoding:this.searchData.code,
        materialName: this.searchData.name,
        pageNo: this.currentPage,
        pageSize: this.pageSize
      })
      // console.log(res)
      this.inspectionTable = res.data.row
      this.data = res.data.row
      this.total = res.data.total
@@ -412,25 +573,27 @@
      this.getRawMaterialList()
    },
    radioclick(){
      this.searchData.state = this.radioValue
      // console.log(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) {
      console.log(`每页 ${val} 条`)
      this.pageSize = val
      this.getRawMaterialList({pageNo: this.currentPage,pageSize:this.pageSize})
    },
    // 当前页改变时触发 跳转其他页
    handleCurrentChange(val) {
      console.log(`当前页: ${val}`)
      this.currentPage = val
      this.getRawMaterialList({pageNo: this.currentPage,pageSize:this.pageSize})
    }
@@ -438,7 +601,7 @@
}
</script>
<style scoped>
<style scoped lang="scss">
.content-main{
  height: 100%;
  .top-bar{
@@ -446,7 +609,7 @@
    background: #fff;
    display: flex;
    justify-content: space-between;
    padding: 5px 24px 0px 24px;
    padding: 24px 24px 0px 24px;
    .sermargin{
        margin-right: 60px;
    }