zouyu
2023-09-09 2c4d645aa617a737d636964a7a52a1602e717e30
src/views/experiment/inspectionApplication/index.vue
@@ -5,35 +5,35 @@
            <div class="top-bar">
               <el-form ref="form" :inline="true" :model="searchData">
                  <el-form-item label="申请单号:">
                     <el-input v-model="searchData.applicationnumber" class="input-form" placeholder="请输入申请单号"
                     <el-input size="small" v-model="searchData.applicationnumber" class="input-form" placeholder="请输入申请单号"
                        style="width: 200px; margin-right: 20px;">
                        <i slot="prefix" class="el-input__icon el-icon-search" />
                     </el-input>
                  </el-form-item>
                  <el-form-item label="检验类型:">
                     <el-select v-model="searchData.type" placeholder="全部" style="width: 100px;margin-right: 20px;">
                  <el-form-item label="检验类型:" width="200">
                     <el-select size="small" v-model="searchData.type" placeholder="全部" style="width: 100px;margin-right: 20px;">
                        <el-option v-for="item in typeoptions" :key="item.value" :label="item.label" :value="item.value">
                        </el-option>
                     </el-select>
                  </el-form-item>
                  <el-form-item label="检验结果:" style="margin-right: 20px;">
                     <el-select v-model="searchData.state" placeholder="全部" style="width: 100px;margin-right: 20px;">
                  <el-form-item label="检验结果:" width="200">
                     <el-select size="small" v-model="searchData.state" placeholder="全部" style="width: 100px;margin-right: 20px;">
                        <el-option v-for="item in stateoptions" :key="item.value" :label="item.label" :value="item.value">
                        </el-option>
                     </el-select>
                  </el-form-item>
                  <el-form-item>
                     <el-button type="primary" @click="searchInspections">查询</el-button>
                     <el-button type="primary" plain @click="reset">重置</el-button>
                     <el-button size="small" type="primary" @click="searchInspections">查询</el-button>
                     <el-button size="small" type="primary" plain @click="reset">重置</el-button>
                  </el-form-item>
               </el-form>
               <el-form class="rightBtn">
                  <el-form-item class="createBtn">
                     <el-button type="primary" icon="el-icon-document-add" @click="checkTypeVisible = true"
                     <el-button size="small" type="primary" icon="el-icon-plus" @click="showAddDialog"
                        style="background-color: rgb(1, 102, 226);">新增检验单</el-button>
                  </el-form-item>
                  <el-form-item class="getDataBtn">
                     <el-button type="primary" icon="el-icon-download"
                     <el-button size="small" type="primary" icon="el-icon-download"
                        style="background-color: rgb(1, 102, 226);">导出检验单</el-button>
                  </el-form-item>
               </el-form>
@@ -63,9 +63,9 @@
                     <el-table-column prop="createTime" label="登记日期" min-width="90px" />
                     <el-table-column prop="inspection_status" label="检验结果" min-width="95px">
                        <template slot-scope="scope">
                           <el-tag class="tag" effect="dark" type="danger" disable-transitions
                           <el-tag style="text-align: center;" class="tag" effect="dark" type="danger" disable-transitions
                              v-if="scope.row.inspection_status == 0">不合格</el-tag>
                           <el-tag class="tag" effect="dark" type="success" disable-transitions
                           <el-tag style="text-align: center;" class="tag" effect="dark" type="success" disable-transitions
                              v-else-if="scope.row.inspection_status == 1">合格</el-tag>
                        </template>
                     </el-table-column>
@@ -93,10 +93,10 @@
                     <el-radio-group v-model="type" @click.native="handleRadioChange">
                        <el-radio :style="`background-color: ${type==0?'rgb(170, 236, 214)':'#fff'};border-radius: 10px;`"
                           :label="0" border>原材料检验</el-radio>
                        <el-radio :style="`background-color: ${type==1?'rgb(170, 236, 214)':'#fff'};border-radius: 10px;`"
                           :label="1" border>委托检验</el-radio>
                        <el-radio :style="`background-color: ${type==2?'rgb(170, 236, 214)':'#fff'};border-radius: 10px;`"
                           :label="2" border>成品检验</el-radio>
                           :label="2" border>委托检验</el-radio>
                        <el-radio :style="`background-color: ${type==1?'rgb(170, 236, 214)':'#fff'};border-radius: 10px;`"
                           :label="1" border>成品检验</el-radio>
                     </el-radio-group>
                  </div>
                  <div v-if="type === 0">
@@ -154,20 +154,20 @@
                           <el-col :span="10">
                              <el-form-item label="检验时间:">
                                 <el-date-picker v-model="infoForm.checkdate" type="daterange" range-separator="至"
                                    start-placeholder="开始日期" end-placeholder="结束日期" style="width: 300px;">
                                    start-placeholder="开始日期" value-format="yyyy-MM-dd" end-placeholder="结束日期" style="width: 300px;">
                                 </el-date-picker>
                              </el-form-item>
                           </el-col>
                        </el-row>
                     </el-form>
                  </div>
                  <div v-if="type === 1">
                  <div v-if="type === 2">
                     <el-form :model="commisionSelection" ref="commisionSelection" class="checkTypeForm" label-position="top"
                        label-width="200px" size="mini">
                        <el-row :gutter="100">
                           <el-col :span="10">
                              <el-form-item label="委托编号">
                                 <el-input style="width: 300px" type="text" disabled :value="commisionSelection.entrust_coding"
                                 <el-input style="width: 300px" type="text" disabled :value="commisionSelection.entrustCoding"
                                    placeholder="请输入来料日期" autocomplete="off" />
                              </el-form-item>
                           </el-col>
@@ -196,50 +196,36 @@
                           <el-col :span="10">
                              <el-form-item label="规格型号:">
                                 <el-input style="width: 300px" type="text" disabled :value="commisionSelection.specifications"
                                    placeholder="请输入型号规格" autocomplete="off" />
                                    placeholder="请输入规格型号" autocomplete="off" />
                              </el-form-item>
                           </el-col>
                           <el-col :span="10">
                              <el-form-item label="送达时间">
                                 <el-input style="width: 300px" type="text" disabled :value="commisionSelection.supplier"
                                    placeholder="请输入单位" autocomplete="off" />
                                 <el-input style="width: 300px" type="text" disabled :value="commisionSelection.formTime"
                                    placeholder="请输入送达时间" autocomplete="off" />
                              </el-form-item>
                           </el-col>
                        </el-row>
                        <el-row :gutter="100">
                           <el-col :span="10">
                              <el-form-item label="完成期限">
                                 <el-input style="width: 300px" type="text" disabled :value="commisionSelection.completionDeadline"
                                    placeholder="请输入数量" autocomplete="off" />
                                 <el-input style="width: 300px" type="text" disabled :value="commisionSelection.endTime"
                                    placeholder="请输入完成期限" autocomplete="off" />
                              </el-form-item>
                           </el-col>
                           <el-col :span="10">
                              <el-form-item label="检验日期:">
                                 <el-date-picker v-model="commisionSelection.checkdate" type="daterange" range-separator="至"
                                    start-placeholder="开始日期" end-placeholder="结束日期" style="width: 300px;">
                                    start-placeholder="开始日期" value-format="yyyy-MM-dd" end-placeholder="结束日期" style="width: 300px;">
                                 </el-date-picker>
                              </el-form-item>
                           </el-col>
                        </el-row>
                     </el-form>
                  </div>
                  <div v-if="type === 2">
                  <div v-if="type === 1">
                     <el-form :model="finishedTable" ref="finishedTable" class="checkTypeForm" label-position="top"
                        label-width="200px" size="mini">
                        <el-row :gutter="100">
                           <el-col :span="10">
                              <el-form-item label="来料日期:">
                                 <el-input style="width: 300px" type="text" disabled v-model="finishedTable.deliverydate"
                                    placeholder="请输入来料日期" autocomplete="off" />
                              </el-form-item>
                           </el-col>
                           <el-col :span="10">
                              <el-form-item label="供应商名称:">
                                 <el-input style="width: 300px" type="text" disabled v-model="finishedTable.supplier" placeholder="请输入供应商名称"
                                    autocomplete="off" />
                              </el-form-item>
                           </el-col>
                        </el-row>
                        <el-row :gutter="100">
                           <el-col :span="10">
                              <el-form-item label="成品编码:">
@@ -249,21 +235,23 @@
                           </el-col>
                           <el-col :span="10">
                              <el-form-item label="成品名称:">
                                 <el-input style="width: 300px" type="text" disabled v-model="finishedTable.name" placeholder="请输入成品名称"
                                    autocomplete="off" />
                                 <el-select style="width: 300px" v-model="finishedTable.name" @change="getSpecifications">
                                    <el-option v-for="(item,index) in mList" :key="index" :label="item.name" :value="item.id"></el-option>
                                 </el-select>
                              </el-form-item>
                           </el-col>
                        </el-row>
                        <el-row :gutter="100">
                           <el-col :span="10">
                              <el-form-item label="规格型号:">
                                 <el-input style="width: 300px" type="text" disabled v-model="finishedTable.modelandspecification"
                                    placeholder="请输入规格型号" autocomplete="off" />
                                    <el-cascader style="width: 300px" v-model="finishedTable.modelandspecification"
                                    :options="specificationList" @change="changeSpe"
                                    :props="{label:'name',value:'id',children:'children'}"></el-cascader>
                              </el-form-item>
                           </el-col>
                           <el-col :span="10">
                              <el-form-item label="单位:">
                                 <el-input style="width: 300px" type="text" disabled v-model="finishedTable.unit" placeholder="请输入单位"
                                 <el-input style="width: 300px" type="text" v-model="finishedTable.unit" placeholder="请输入单位"
                                    autocomplete="off" />
                              </el-form-item>
                           </el-col>
@@ -271,14 +259,14 @@
                        <el-row :gutter="100">
                           <el-col :span="10">
                              <el-form-item label="数量:">
                                 <el-input style="width: 300px" type="text" disabled v-model="finishedTable.amount" placeholder="请输入数量"
                                 <el-input style="width: 300px" min="0" type="number" v-model="finishedTable.amount" placeholder="请输入数量"
                                    autocomplete="off" />
                              </el-form-item>
                           </el-col>
                           <el-col :span="10">
                              <el-form-item label="检验时间:">
                                 <el-date-picker v-model="finishedTable.checkdate" type="daterange" range-separator="至"
                                    start-placeholder="开始日期" end-placeholder="结束日期" style="width: 300px;">
                                    start-placeholder="开始日期" value-format="yyyy-MM-dd" end-placeholder="结束日期" style="width: 300px;">
                                 </el-date-picker>
                              </el-form-item>
                           </el-col>
@@ -356,13 +344,13 @@
                  :data="commisionTable" @selection-change="handleSelectionChange" style="width: 100%">
                  <el-table-column type="selection" min-width="10%" />
                  <el-table-column type="index" label="序号" min-width="10%" />
                  <el-table-column prop="entrust_coding" label="委托编号" min-width="10%" />
                  <el-table-column prop="entrustCoding" label="委托编号" min-width="10%" />
                  <el-table-column prop="supplier" label="委托单位" min-width="12%" />
                  <el-table-column prop="mcode" label="样品编号" min-width="8%" />
                  <el-table-column prop="name" label="样品名称" min-width="8%" />
                  <el-table-column prop="specifications" label="规格型号" min-width="12%" />
                  <el-table-column prop="endTime" label="送达时间" min-width="8%" />
                  <el-table-column prop="formTime" label="完成期限" min-width="8%" />
                  <el-table-column prop="formTime" label="送达时间" min-width="8%" />
                  <el-table-column prop="endTime" label="完成期限" min-width="8%" />
                  <el-table-column prop="contacts" label="委托编制人" min-width="8%" />
                  <el-table-column prop="endTime" label="检验日期" min-width="8%" />
                  <el-table-column prop="inspection_status" label="状态" min-width="8%">
@@ -373,11 +361,6 @@
                        <div v-else>
                           <span style="color: red;">待检测</span>
                        </div>
                     </template>
                  </el-table-column>
                  <el-table-column label="操作" min-width="8%">
                     <template slot-scope="scope">
                        <el-button type="text" size="small">删除</el-button>
                     </template>
                  </el-table-column>
               </el-table>
@@ -401,11 +384,16 @@
      addInspect,
      chooseVer,
      lookProByVer,
      delInspect
      delInspect,
      getSpecificationByMaterielId,
      getMaterielList
   } from '@/api/experiment/planAssignments'
   export default {
      data() {
         return {
            speName:"",
            specificationList: [],
            mList:[],
            showDetail: false,
            searchData: {
               applicationnumber: '',
@@ -419,8 +407,6 @@
            rawMaterialTable: [],
            commisionTable: [],
            finishedTable: {
               deliverydate: '',
               supplier: '',
               code: '',
               name: '',
               modelandspecification: '',
@@ -431,7 +417,7 @@
            selectedValue: null,
            infoForm: {},
            commisionSelection: {
               entrust_coding: '',
               entrustCoding: '',
               entrusted: '',
               samples_number: '',
               sample_name: '',
@@ -470,7 +456,7 @@
            pageSize: 10, // 每页的数据条数
            radioValue: '全部',
            checkTypeVisible: false,
            type: 2, // 默认不选中的状态
            type: 1, // 默认不选中的状态
            rawmaterialVisible: false,
            commisionVisible: false,
            tmp: {},
@@ -488,6 +474,30 @@
            handler(val, oldval) {},
            // 深度观察监听
            deep: true
         },
         checkTypeVisible(newVal){
            if(newVal == false){
               this.finishedTable = {
                  code: '',
                  name: '',
                  modelandspecification: '',
                  unit: '',
                  amount: '',
                  checkdate: []
               };
               this.infoForm = {};
               this.commisionSelection = {
                  entrustCoding: '',
                  entrusted: '',
                  samples_number: '',
                  sample_name: '',
                  specifications_models: '',
                  dateSurvey: '',
                  completionDeadline: '',
                  contacts: '',
                  inspectionTime: ''
               };
            }
         }
      },
      created() {
@@ -497,7 +507,54 @@
         if (this.$route.name === 'ForInspectionDetail') this.showDetail = true
      },
      methods: {
         changeSpe(val){
            console.log(val);
            this.tmp.specificationsId = val[val.length-1];
            let arr1 = this.specificationList.filter(item=>{
               return item.id==val[0]
            });
            let arr2 = arr1[0].children.filter(item=>{
               return item.id = val[1]
            })
            let speName = arr1[0].name + "-" + arr2[0].name;
            this.speName = speName;
            console.log(arr1);
            console.log(arr2);
         },
         getSpecifications(val){
            if(val != null){
               this.selectSpecificationByMaterielId(val);
               let item = this.mList.filter(item => {
                     return item.id == val;
               });
               this.finishedTable.code = item[0].code;
               this.tmp.mcode = item[0].code;
               this.tmp.name = item[0].name;
            }
         },
         async selectSpecificationByMaterielId(mId){
            await getSpecificationByMaterielId({id : mId}).then(res=>{
               this.specificationList = res.data.children;
            }).catch(error => {
               this.$message.error(error.message);
            });
         },
         //显示新增检验单模态框
         showAddDialog(){
            this.selectMaterielList();
            this.checkTypeVisible = true
         },
         //获取成品信息
         async selectMaterielList(){
            await getMaterielList().then(res=>{
               this.mList = res.data
            }).catch(error => {
               this.$message.error(error.message);
            });
         },
         async selectAll() {
            const res = selectAll({
               type: 0
            })
@@ -605,7 +662,7 @@
                  })
               }
            }
            this.total = this.inspectionTable.length
            this.total = this.res.data.total;
         },
         reset() {
            this.countSize = 1;
@@ -627,11 +684,11 @@
         },
         handleCommisionSelection() {
            this.commisionSelection = this.tmp
            this.commisionSelection.checkdate = []
            this.commisionVisible = false
         },
         handleRawMaterialSelection() {
            this.infoForm = this.tmp
            console.log(this.infoForm);
            this.rawmaterialVisible = false
         },
         handleRadioChange() {
@@ -654,7 +711,7 @@
                     })
                     this.rawMaterialTable = arr
                  })
               } else if (this.type === 1) {
               } else if (this.type === 2) {
                  this.commisionVisible = true
                  selectAll({
                     type: 2
@@ -666,6 +723,7 @@
                        checkdate.push(item['updateTime'])
                        item['checkdate'] = checkdate // 检验日期
                     })
                     this.commisionTable = res.data
                  })
               }
@@ -673,8 +731,10 @@
         },
         // 新增检验
         async addInspection() {
            let obj = {};
            //原材料
            if (this.type === 0) {
               addInspect({
               obj = {
                  endTime: this.infoForm.checkdate[1],
                  formTime: this.infoForm.formTime,
                  mcode: this.infoForm.mcode,
@@ -687,53 +747,53 @@
                  type: this.type,
                  unit: this.infoForm.unit,
                  version: this.version
               }).then(res => {
                  this.$message({
                     message: '添加成功!',
                     type: 'success'
                  });
                  this.$router.push(`Viewdetails/${res.data}`)
               }).catch(error=>{
                  this.$message.error(error.message);
               })
               }
            }
            if (this.type === 1) {
               const res = await addInspect({
            //委托
            if (this.type === 2) {
               obj = {
                  endTime: this.commisionSelection.checkdate[1],
                  formTime: this.commisionSelection.formTime,
                  mcode: this.commisionSelection.mcode,
                  name: this.commisionSelection.name,
                  num: this.commisionSelection.num,
                  specifications: this.commisionSelection.specifications,
                  specificationId:this.commisionSelection.specificationsId,
                  startTime: this.commisionSelection.checkdate[0],
                  supplier: this.commisionSelection.supplier,
                  type: this.type,
                  unit: this.commisionSelection.unit,
                  version: this.version
               })
               }
            }
            if (this.type === 2) {
               const res = await addInspect({
                  endTime: '2023-08-15',
                  formTime: this.finishedTable.deliverydate,
            //成品
            if (this.type === 1) {
               obj = {
                  supplier:"supplier",
                  formTime: "2023-09-09",
                  endTime: this.finishedTable.checkdate[1],
                  mcode: this.finishedTable.code,
                  name: this.finishedTable.name,
                  name: this.tmp.name,
                  num: parseInt(this.finishedTable.amount),
                  specifications: this.finishedTable.modelandspecification,
                  startTime: '2023-08-14',
                  supplier: this.finishedTable.supplier,
                  specifications: this.speName,
                  specificationId: this.finishedTable.modelandspecification[1],
                  startTime: this.finishedTable.checkdate[0],
                  type: this.type,
                  unit: this.finishedTable.unit,
                  version: this.version
               })
               }
            }
            this.type = 0
            this.checkTypeVisible = false
            // this.$message({
            //    message: '添加成功!',
            //    type: 'success'
            // });
            // this.$router.push({name: 'Viewdetails'})
            addInspect(obj).then(res => {
               this.$message({
                  message: '添加成功!',
                  type: 'success'
               });
               this.type = 1
               this.checkTypeVisible = false
               this.$router.push(`Viewdetails/${res.data}`)
            }).catch(error=>{
               this.$message.error(error.message);
            })
         },
         // 每页条数改变时触发 选择一页显示多少行
         handleSizeChange(val) {
@@ -746,20 +806,9 @@
            this.currentPage = val
            this.selectInspectsList()
         },
         //    //表单校验
         // validateForm(infoForm){
         //    console.log(this.infoForm);
         //    if (infoForm.checkdate == undefined) {
         //         alert('请输入检验时间');
         //       return false;
         //    }
         //    // 校验通过
         //    return true;
         // },
         //确定跳转
         QUEding() {
            if (this.infoForm.checkdate[0] == undefined || this.infoForm.checkdate[1] == undefined) {
            if (this.type==0 &&(this.infoForm.checkdate[0] == undefined || this.infoForm.checkdate[1] == undefined)) {
               this.$message({
                  message: '请选择检验时间',
                  type: 'warning'