value
2023-08-30 e51cc97fbc836b1baabd5c24b1c36865f87baf32
src/views/inspectionManagement/commissionInspection/addCommision.vue
@@ -7,54 +7,48 @@
               <div class="tableBox-header">
                  <el-button class="split" @click="dialogueFormVisible = true" type="primary" size="small"
                     style="background-color: rgb(1, 102, 226);">添加样品</el-button>
                  <!-- <el-input v-model="searchData" class="input-form split" placeholder="扫描二维码录入样品..."
                     prefix-icon="el-icon-search" style="width: 200px;">
                  </el-input> -->
                  <el-button type="primary" size="small" style="background-color: rgb(1, 102, 226);">重置</el-button>
                  <!--        <el-input
          v-model="searchData"
          class="input-form split"
          placeholder="扫描二维码录入样品..."
          prefix-icon="el-icon-search"
          style="width: 200px;"
        >
        </el-input>-->
               </div>
               <el-table ref="detectionInfo" :max-height="800" :cell-style="{textAlign: 'center'}"
                  :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}"
                  :data="detectionInfo" style="width: 100%">
                  :data="detectionInfo" style="width: 100%;margin-bottom: 20px;">
                  <el-table-column type="index" label="序号" min-width="10%" />
                  <el-table-column prop="sampleNumber" label="样品编号" min-width="8%" />
                  <el-table-column prop="sampleName" label="样品名称" min-width="10%" />
                  <el-table-column prop="specificationsModels" label="规格型号" min-width="10%" />
                  <el-table-column prop="unit" label="单位" min-width="8%" />
                  <el-table-column prop="samplesNumber" label="数量" min-width="8%" />
                  <el-table-column prop="addway" label="添加方式" min-width="8%">
                  <!-- <el-table-column prop="addway" label="添加方式" min-width="8%">
                     <template slot-scope="scope">
                        <div v-if="scope.row.addway === 0">
                           <el-tag :type='success' disable-transitions>扫描</el-tag>
                           <el-tag type="success" disable-transitions>扫描</el-tag>
                        </div>
                        <div v-if="scope.row.addway === 1">
                           <el-tag :type='primary' disable-transitions>录入</el-tag>
                           <el-tag type="primary" disable-transitions>录入</el-tag>
                        </div>
                        <div v-else></div>
                     </template>
                  </el-table-column>
                  <el-table-column prop="experiment" label="试验" min-width="8%" />
                  </el-table-column> -->
                  <el-table-column prop="remarks" label="备注" min-width="8%" />
                  <el-table-column label="操作" min-width="8%">
                     <template slot-scope="scope">
                        <el-button type="text" size="small">修改</el-button>
                        <el-button type="text" size="small" @click="deleteRow(scope.row)">删除</el-button>
                        <el-button type="text" size="small"
                           @click.native.prevent="deleteRow(scope.$index, detectionInfo)">删除</el-button>
                     </template>
                  </el-table-column>
               </el-table>
               <!-- 分页器 -->
               <div>
                  <el-pagination class="pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange"
                     :current-page="currentPage" :page-sizes="[100, 200, 300, 400]" :page-size="100"
                     layout="total, sizes, prev, pager, next, jumper" :total="400">
                  </el-pagination>
               </div>
            </div>
            <div class="secondBox">
               <el-row class="header">
                  <el-col :span="12">基本信息</el-col>
                  <el-col :span="12" style="font-size: 16px;margin-bottom: 5px;">基本信息</el-col>
                  <el-col :span="12" style="text-align: right;">
                     <!-- 点击返回,当前页面值为false -->
                     <el-button type="primary" size="mini" style="background-color: rgb(1, 102, 226); ">打印委托单</el-button>
                  </el-col>
               </el-row>
               <el-form :model="infoForm" ref="infoForm" class="infoForm" label-position="right" label-width="100px"
@@ -63,50 +57,51 @@
                     <el-row :gutter="200">
                        <el-col :span="5">
                           <el-form-item label="委托编号:">
                              <el-input style="width: 160px" type="text" :value="infoForm.commisioncode" readonly disabled
                                 autocomplete="off" />
                              <el-input style="width: 200px" type="text" :value="infoForm.commisioncode" readonly disabled
                                 autocomplete="off" size="small" />
                           </el-form-item>
                        </el-col>
                        <el-col :span="5">
                           <el-form-item label="委托单位:">
                              <el-input style="width: 160px" v-model="infoForm.department" placeholder="请输入委托单位" />
                              <el-input style="width: 200px" v-model="infoForm.department" placeholder="请输入委托单位" size="small" />
                           </el-form-item>
                        </el-col>
                        <el-col :span="5">
                           <el-form-item label="联系人:">
                              <el-input style="width: 160px" v-model="infoForm.contacter" placeholder="请输入委托单位" />
                              <el-input style="width: 200px" v-model="infoForm.contacter" placeholder="请输入委托单位" size="small" />
                           </el-form-item>
                        </el-col>
                        <el-col :span="5">
                           <el-form-item label="联系电话:">
                              <el-input style="width: 160px" v-model="infoForm.tel" placeholder="请输入联系电话" />
                              <el-input style="width: 200px" v-model="infoForm.tel" placeholder="请输入联系电话" size="small" />
                           </el-form-item>
                        </el-col>
                     </el-row>
                     <el-row :gutter="200">
                        <el-col :span="5">
                           <el-form-item label="联系地址:">
                              <el-input style="width: 160px;" v-model="infoForm.address" placeholder="请输入联系地址"
                                 autocomplete="off" />
                              <el-input style="width: 200px;" v-model="infoForm.address" placeholder="请输入联系地址" autocomplete="off"
                                 size="small" />
                           </el-form-item>
                        </el-col>
                        <el-col :span="5">
                           <el-form-item label="完成期限:">
                              <el-date-picker v-model="infoForm.deadline" type="date" placeholder="选择日期" style="width: 160px;">
                              <el-date-picker v-model="infoForm.deadline" type="date" placeholder="选择日期" style="width: 200px;"
                                 size="small">
                              </el-date-picker>
                           </el-form-item>
                        </el-col>
                        <el-col :span="5">
                           <el-form-item label="送样时间:">
                              <el-date-picker v-model="infoForm.time" type="date" placeholder="选择日期" style="width: 160px;">
                              <el-date-picker v-model="infoForm.time" type="date" placeholder="选择日期" style="width: 200px;">
                              </el-date-picker>
                           </el-form-item>
                        </el-col>
                        <el-col :span="5">
                           <el-form-item label="送样方式:">
                              <el-select style="width: 160px;" v-model="infoForm.way" size="small" placeholder="送样">
                                 <el-option v-for="options in sampleDeliveryMode" :key="options.key"
                                    :value="options.value">{{ options.value }}</el-option>
                              <el-select style="width: 200px;" v-model="infoForm.way" size="small" placeholder="送样">
                                 <el-option v-for="options in sampleDeliveryMode" :key="options.key" :value="options.key"
                                    :label="options.value">{{ options.value }}</el-option>
                              </el-select>
                           </el-form-item>
                        </el-col>
@@ -114,23 +109,26 @@
                     <el-row :gutter="200">
                        <el-col :span="5">
                           <el-form-item label="送样人:">
                              <el-input style="width: 160px;" v-model="infoForm.sender" placeholder="请输入送样人" autocomplete="off" />
                              <el-input style="width: 200px;" v-model="infoForm.sender" placeholder="请输入送样人" autocomplete="off"
                                 size="small" />
                           </el-form-item>
                        </el-col>
                        <el-col :span="5">
                           <el-form-item label="送样人电话:">
                              <el-input style="width: 160px;" v-model="infoForm.sendertel" placeholder="请输入送样人电话"
                                 autocomplete="off" />
                              <el-input style="width: 200px;" v-model="infoForm.sendertel" placeholder="请输入送样人电话"
                                 autocomplete="off" size="small" />
                           </el-form-item>
                        </el-col>
                        <el-col :span="5">
                           <el-form-item label="报告数:">
                              <el-input style="width: 160px;" v-model="infoForm.num" placeholder="请输入报告数" autocomplete="off" />
                              <el-input style="width: 200px;" v-model="infoForm.num" placeholder="请输入报告数" autocomplete="off"
                                 size="small" />
                           </el-form-item>
                        </el-col>
                        <el-col :span="5">
                           <el-form-item label="委托备注:">
                              <el-input style="width: 160px;" v-model="infoForm.other" placeholder="备注" autocomplete="off" />
                              <el-input style="width: 200px;" v-model="infoForm.other" placeholder="备注" autocomplete="off"
                                 size="small" />
                           </el-form-item>
                        </el-col>
                     </el-row>
@@ -138,72 +136,76 @@
                  <div class="submitBtn">
                     <el-button type="primary" size="small" @click="submitInspection"
                        style="background-color: rgb(1, 102, 226);">提交</el-button>
                     <!-- 点击返回,当前页面值为false -->
                     <el-button type="primary" size="mini" style="background-color: rgb(1, 102, 226); ">打印委托单</el-button>
                  </div>
               </el-form>
            </div>
         </div>
         <div class="checkType">
            <el-dialog title="添加指标" :visible.sync="dialogueFormVisible" width="40%">
            <el-dialog title="添加样品" :visible.sync="dialogueFormVisible" width="40%" top="30vh">
               <el-form :model="addPointerForm" ref="addPointerForm" class="addPointerForm" label-position="right"
                  label-width="100px" size="mini">
                  <el-row :gutter="50">
                     <el-col :span="10">
                     <el-col :span="11">
                        <el-form-item label="样品编号:">
                           <el-select style="width: 160px;" v-model="addPointerForm.sampleNumber" size="small"
                              placeholder="请选择样品编号">
                              <el-option v-for="options in samplecodeoptions" :value="options.value"
                                 :key="options.key">{{ options.value }}</el-option>
                           </el-select>
                           <el-input v-model="addPointerForm.sampleNumber" size="small" disabled>
                           </el-input>
                        </el-form-item>
                     </el-col>
                     <el-col :span="10">
                     <el-col :span="11">
                        <el-form-item label="样品名称:">
                           <el-select style="width: 160px;" v-model="addPointerForm.sampleName" size="small"
                              placeholder="请选择样品名称">
                              <el-option v-for="options in sampleoptions" :value="options.value"
                                 :key="options.key">{{ options.value }}</el-option>
                           <el-select v-model="addPointerForm.sampleName" size="small" placeholder="请选择样品名称"
                              @change="upMaterialName">
                              <el-option v-for="options in sampleoptions" :value="options.key" :label="options.value"></el-option>
                           </el-select>
                        </el-form-item>
                     </el-col>
                  </el-row>
                  <el-row :gutter="50">
                     <el-col :span="10">
                        <el-form-item label="规格型号:">
                           <el-select style="width: 160px;" v-model="addPointerForm.specificationsModels" size="small"
                              placeholder="请选择样品名称">
                     <el-col :span="11">
                        <el-form-item label="评定标准:">
                           <el-select v-model="addPointerForm.addway" size="small" placeholder="请选择评定标准">
                              <el-option v-for="options in model_spe_options" :value="options.value"
                                 :key="options.key">{{ options.value }}</el-option>
                           </el-select>
                        </el-form-item>
                     </el-col>
                     <el-col :span="10">
                     <el-col :span="11">
                        <el-form-item label="规格型号:">
                           <el-select v-model="addPointerForm.specificationsModels" size="small" placeholder="请先选择样品名称"
                              @change="getProductList">
                              <el-option v-for="options in model_sta_options" :value="options.key" :label="options.value"
                                 :key="options.key">{{ options.value }}</el-option>
                           </el-select>
                        </el-form-item>
                     </el-col>
                  </el-row>
                  <el-row :gutter="50">
                     <el-col :span="11">
                        <el-form-item label="样品单位:">
                           <el-input style="width: 160px" type="text" v-model="addPointerForm.unit" placeholder="请输入单位"
                              autocomplete="off" />
                           <el-input type="text" v-model="addPointerForm.unit" placeholder="请输入单位" autocomplete="off" />
                        </el-form-item>
                     </el-col>
                  </el-row>
                  <el-row :gutter="50">
                     <el-col :span="10">
                     <el-col :span="11">
                        <el-form-item label="样品数量:">
                           <el-input style="width: 160px" type="text" v-model="addPointerForm.samplesNumber" placeholder="请输入数量"
                              autocomplete="off" />
                        </el-form-item>
                     </el-col>
                     <el-col :span="10">
                        <el-form-item label="备注:">
                           <el-input style="width: 160px" type="text" v-model="addPointerForm.remarks" placeholder="请输入备注"
                              autocomplete="off" />
                           <el-input type="text" v-model="addPointerForm.samplesNumber" placeholder="请输入数量" autocomplete="off" />
                        </el-form-item>
                     </el-col>
                  </el-row>
                  <el-row :gutter="50">
                     <el-col :span="10">
                        <el-form-item label="添加实验:">
                     <el-col :span="11">
                        <el-form-item label="添加项目:">
                           <el-checkbox-group v-model="addPointerForm.experiment" style="display: flex; flex-direction: column;">
                              <el-checkbox v-for="expers in experList" :label="expers.label"
                                 :key="expers.key">{{ expers.label }}</el-checkbox>
                              <el-checkbox v-for="(expers, ai) in productList" :label="expers"
                                 :key="ai">{{ expers }}</el-checkbox>
                           </el-checkbox-group>
                        </el-form-item>
                     </el-col>
                     <el-col :span="11">
                        <el-form-item label="备注:">
                           <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 20}" style="width: 200px;"
                              v-model="addPointerForm.remarks" placeholder="请输入备注" autocomplete="off" />
                        </el-form-item>
                     </el-col>
                  </el-row>
@@ -224,11 +226,10 @@
      getModelSpecification,
      getlink,
      addInspection,
      isIfViewUUID
      isIfViewUUID,
      getProductList,
      getContractsSampleInfo
   } from '@/api/inspection/commisioninspection'
   import {
      time
   } from 'echarts';
   export default {
      data() {
         return {
@@ -272,24 +273,11 @@
               key: '4',
               label: '绝缘部分交流耐压试验'
            }],
            sampleoptions: [{
               key: '1',
               value: '选项1'
            }, {
               key: '2',
               value: '选项2'
            }],
            samplecodeoptions: [{
               key: '1',
               value: ''
            }],
            model_spe_options: [{
               key: '1',
               value: '选项1'
            }, {
               key: '2',
               value: '选项2'
            }],
            sampleoptions: [],
            samplecodeoptions: [],
            model_spe_options: [],
            model_sta_options: [],
            model_options: [],
            sampleDeliveryMode: [{
               key: '1',
               value: '送样'
@@ -297,19 +285,42 @@
               key: '2',
               value: '上门'
            }],
            dialogueFormVisible: false
            dialogueFormVisible: false,
            showDetail: false,
            viewId: null,
            productList: []
         }
      },
      watch: {
         addPointerForm: {
            handler: function(val) {
               if (val.addway != "") {
                  this.model_sta_options = []
                  this.model_options.forEach(a => {
                     if (a.specificationsName == val.addway) {
                        this.model_sta_options = a.children.map(item => {
                           return {
                              key: item.modelId,
                              value: item.modelName
                           }
                        })
                     }
                  })
               }
            },
            deep: true
         }
      },
      created() {
         this.viewId = this.$route.params.viewId
         this.$store.commit('settings/SAVE_LINK', this.viewId)
         this.getlink(this.$route.params.viewId)
         console.log();
         this.getContractsSampleInfo(this.$route.params.viewId)
      },
      mounted() {
         // this.getSampleName()
         // this.getModelSpecification()
         this.getSampleName()
      },
      methods: {
         // 获取链接link
         getlink(viewId) {
            if (viewId == null) {
               this.$message.error('当前链接不在有效期内,系统自动关闭')
@@ -322,28 +333,32 @@
               if (!res.data) {
                  this.$message.error('当前链接不在有效期内,系统自动关闭')
                  this.$router.push('/404')
               } else {
                  this.getContractsSampleInfo()
               }
            })
         },
         async getContractsSampleInfo(viewId) {
            let res = await getContractsSampleInfo({
               viewId
            })
            console.log(res.data);
         },
         async getSampleName() {
            const res = await getSampleName()
            this.sampleoptions = res.data.map((item) => {
               return {
                  key: item.id.toString(),
                  value: item.name
               }
            })
            this.samplecodeoptions = res.data.map((item) => {
               return {
                  key: item.id.toString(),
                  value: item.code
                  value: item.name,
                  code: item.code
               }
            })
         },
         async getModelSpecification() {
         async getModelSpecification(val) {
            const res = await getModelSpecification({
               materialId: '1'
               materialId: val
            })
            this.model_options = res.data
            this.model_spe_options = res.data.map((item) => {
               return {
                  key: item.specificationsId,
@@ -396,11 +411,10 @@
            this.infoForm.commisioncode = res.data
            if (res.data) {
               this.$message({
                  message: '恭喜你!',
                  message: '添加成功!',
                  type: 'success'
               })
               // 跳转页面
               this.$router.push('/inspectionManagement/commissionInspection')
               this.showDetail = true
            } else {
               this.$message.error(res.message)
            }
@@ -411,78 +425,132 @@
         handleCurrentChange(pageNo) {
            this.pageParams.pageNo = pageNo
         },
         deleteRow(row) {
            console.log(row)
            row = null
         deleteRow(index, rows) {
            rows.splice(index, 1);
         },
         upMaterialName(val) {
            this.sampleoptions.forEach(a => {
               if (a.key == val) {
                  this.addPointerForm.sampleNumber = a.code
               }
            })
            this.getModelSpecification(val)
         },
         getProductList(val) {
            getProductList({
               modelId: val
            }).then(res => {
               this.productList = res.data.map(item => {
                  return item.name
               })
            })
         },
         getContractsSampleInfo() {
            getContractsSampleInfo({
               viewId: this.viewId
            }).then(res => {
               if (res.data == null) return
               this.infoForm = {
                  commisioncode: res.data.entrustCoding,
                  deadline: res.data.completionDeadline,
                  address: res.data.contactAddress,
                  tel: res.data.contactNumber,
                  contacter: res.data.contacts,
                  other: res.data.entrustRemarks,
                  department: res.data.entrusted,
                  time: res.data.inspectionTime,
                  detectionInfo: res.data.linkDetectionList,
                  num: res.data.reportNumber,
                  way: '' + res.data.sampleDeliveryMode,
                  sendertel: res.data.sampleDeliveryPhone,
                  sender: res.data.sampleSender
               }
               this.detectionInfo = res.data.linkDetectionList
            })
         }
      }
   }
</script>
<style lang="scss" scoped>
   .add_commision{
      padding: 20px;
   }
   .firstBox {
      .title {
         padding: 15px 10px;
         font-size: 18px;
         background-color: #0166e2;
         color: #fff;
         border-radius: 4px;
      }
   .content-main {
      padding: 20px 40px;
      background-color: #f0f2f5;
      width: 100%;
      height: 100vh;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      // align-items: center;
      .tableBox {
         background-color: #fff;
         padding: 0px 20px;
         margin: 0px -15px;
         flex: 1;
         background: #fff;
         /* padding: 20px 20px 10px 20px; */
         display: flex;
         flex-direction: column;
      .firstBox {
         .title {
            padding: 15px 10px;
            font-size: 18px;
            background-color: #0166e2;
            color: #fff;
            border-radius: 4px;
            margin-bottom: 20px;
         }
         .tableBox-header {
            padding: 20px 0px;
         .tableBox {
            background-color: #fff;
            padding: 0px 20px;
            flex: 1;
            background: #fff;
            /* padding: 20px 20px 10px 20px; */
            display: flex;
            flex-direction: column;
            .split {
               margin-right: 15px;
            .tableBox-header {
               padding: 20px 0px;
               .split {
                  margin-right: 15px;
               }
            }
            .el-table {
               flex: 1;
            }
            >div:nth-child(3) {
               display: flex;
               justify-content: end;
               margin: 10px 0;
            }
         }
      }
         .el-table {
            flex: 1;
      .secondBox {
         .header {
            display: flex;
            justify-content: space-between;
            padding: 10px 20px;
            margin-top: 10px;
         }
         >div:nth-child(3) {
         .submitBtn {
            display: flex;
            justify-content: end;
            margin: 10px 0;
            margin-right: 40px;
            margin-top: 20px;
         }
      }
   }
   .secondBox {
      margin: 0px -15px;
      .infoForm {
         background-color: #fff;
         padding: 20px 50px;
      .header {
         display: flex;
         justify-content: space-between;
         padding: 10px 20px;
         margin-top: 10px;
         .formwrapper {
            margin: 20px 0px;
            padding-left: 30px;
            .el-row {
               margin: 10px 0px;
            }
         }
      }
      .submitBtn {
         display: flex;
         justify-content: end;
         margin-right: 156px;
         margin-top: 20px;
      }
   }
   .infoForm {
      background-color: #fff;
      padding: 20px 50px;
   }
</style>