value
2023-08-24 4914eba9ef62675e1dea9bf85e84f9913b0cfb08
src/views/inspectionManagement/commissionInspection/index.vue
@@ -1,364 +1,343 @@
<template>
  <div>
    <div v-if="!showDetail">
      <div class="content-main">
          <div class="top-bar">
              <el-form ref="form" :inline="true" :model="searchData">
              <el-form-item label="委托编号:" class="sermargin">
                <el-input
                  v-model="searchData.code"
                  class="input-form"
                  placeholder="请输入"
                >
                </el-input>
              </el-form-item>
              <el-form-item label="样品名称:" class="sermargin">
                <el-input
                  v-model="searchData.name"
                  class="input-form"
                  placeholder="请输入"
                >
                </el-input>
              </el-form-item>
              <el-form-item label="委托单位:" style="margin-right: 20px;">
                <el-select v-model="searchData.department" placeholder="全部">
                  <el-option
                    v-for="item in options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item>
                <el-button type="primary" @click="search">查询</el-button>
                <el-button type="primary" plain @click="reset">重置</el-button>
              </el-form-item>
              </el-form>
              <el-form>
                <el-button class="rightBtn" type="primary" @click="goToaddCommision">新增委托</el-button>
              </el-form>
          </div>
          <div class="library-table">
            <div class="table-header">
              <div class="search-bar">
                <el-radio-group v-model="radioValue" @change="radioclick">
                <el-radio-button v-for="item in conditionsOptions" :key="item.value" :label="item.value">
                {{ item.label }}
              </el-radio-button>
              </el-radio-group>
              </div>
              <div class="generateInsp">
                <el-button 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="commisionTable"
                :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="commisionTable"
                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="entrusted"
                  label="委托单位"
                  min-width="12%"
                />
                <el-table-column
                  prop="samples_number"
                  label="样品编号"
                  min-width="8%"
                />
                <el-table-column
                  prop="sample_name"
                  label="样品名称"
                  min-width="8%"
                />
                <el-table-column
                  prop="specifications_models"
                  label="规格型号"
                  min-width="12%"
                />
                <el-table-column
                  prop="dateSurvey"
                  label="送达时间"
                  min-width="8%"
                />
                <el-table-column
                  prop="completionDeadline"
                  label="完成期限"
                  min-width="8%"
                />
                <el-table-column
                  prop="contacts"
                  label="委托编制人"
                  min-width="8%"
                />
                <el-table-column
                  prop="inspectionTime"
                  label="检验日期"
                  min-width="8%"
                />
                <el-table-column
                  prop="inspection_status"
                  label="状态"
                  min-width="8%">
                  <template slot-scope="scope">
                    <div v-if="scope.row.inspection_status === 1">
                      <span style="color: green;">已检测</span>
                    </div>
                    <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" @click="handleClick(scope.row)">删除</el-button>
                  </template>
                </el-table-column>
              </el-table>
              <!-- 分页器 -->
              <div>
                <el-pagination
                  @size-change="handleSizeChange"
                  @current-change="handleCurrentChange"
                  :current-page="currentPage"
                  :page-sizes="[5, 10, 20]"
                  :page-size="pageSize"
                  layout="total, sizes, prev, pager, next, jumper"
                  :total="total">
                </el-pagination>
              </div>
            </div>
          </div>
      </div>
  </div>
    <div v-else>
      <router-view />
    </div>
  </div>
   <div>
      <div v-if="!showDetail">
         <div class="content-main">
            <div class="top-bar">
               <el-form ref="form" :inline="true" :model="searchData">
                  <el-form-item label="委托编号:" class="sermargin">
                     <el-input v-model="searchData.code" class="input-form" placeholder="请输入">
                     </el-input>
                  </el-form-item>
                  <el-form-item label="样品名称:" class="sermargin">
                     <el-input v-model="searchData.name" class="input-form" placeholder="请输入">
                     </el-input>
                  </el-form-item>
                  <el-form-item label="委托单位:" style="margin-right: 20px;">
                     <el-select v-model="searchData.department" placeholder="全部">
                        <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
                        </el-option>
                     </el-select>
                  </el-form-item>
                  <el-form-item>
                     <el-button type="primary" @click="search">查询</el-button>
                     <el-button type="primary" plain @click="reset">重置</el-button>
                  </el-form-item>
               </el-form>
               <el-form>
                  <el-popover placement="left" width="130" trigger="click">
                     <div class="vue_qr_div">
                        <span style="color: #0078ff;">扫描二维码<br />获取委托单</span>
                        <vue-qr :text="viewId" :size="100" :margin="0" style="margin-top: 10px;">
                        </vue-qr>
                     </div>
                     <el-button slot="reference" class="rightBtn" type="primary" @click="goToaddCommision">新增委托</el-button>
                  </el-popover>
               </el-form>
            </div>
            <div class="library-table">
               <div class="table-header">
                  <div class="search-bar">
                     <el-radio-group v-model="radioValue" @change="radioclick">
                        <el-radio-button v-for="item in conditionsOptions" :key="item.value" :label="item.value">
                           {{ item.label }}
                        </el-radio-button>
                     </el-radio-group>
                  </div>
                  <div class="generateInsp">
                     <el-button 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="commisionTable" :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="commisionTable" 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="entrusted" label="委托单位" min-width="12%" />
                     <el-table-column prop="samples_number" label="样品编号" min-width="8%" />
                     <el-table-column prop="sample_name" label="样品名称" min-width="8%" />
                     <el-table-column prop="specifications_models" label="规格型号" min-width="12%" />
                     <el-table-column prop="dateSurvey" label="送达时间" min-width="8%" />
                     <el-table-column prop="completionDeadline" label="完成期限" min-width="8%" />
                     <el-table-column prop="contacts" label="委托编制人" min-width="8%" />
                     <el-table-column prop="inspectionTime" label="检验日期" min-width="8%" />
                     <el-table-column prop="inspection_status" label="状态" min-width="8%">
                        <template slot-scope="scope">
                           <div v-if="scope.row.inspection_status === 1">
                              <span style="color: green;">已检测</span>
                           </div>
                           <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" @click="handleClick(scope.row)">删除</el-button>
                        </template>
                     </el-table-column>
                  </el-table>
                  <!-- 分页器 -->
                  <div>
                     <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
                        :current-page="currentPage" :page-sizes="[5, 10, 20]" :page-size="pageSize"
                        layout="total, sizes, prev, pager, next, jumper" :total="total">
                     </el-pagination>
                  </div>
               </div>
            </div>
         </div>
      </div>
      <div v-else>
         <router-view />
      </div>
   </div>
</template>
<script>
import { getCommisionList } from '@/api/inspection/commisioninspection'
export default {
  data() {
    return {
      form: [],
      searchData: {
        code: '',
        name: '',
        department: ''
      },
      options: [{
        value: '1',
        label: '部门1'
      }],
      radioValue: 0,
      commisionTable: [{
        specifications_models: "GGXH-AAAAA",
        inspectionTime: "2023-08-03",
        id: 2,
        samples_number: 0,
        dateSurvey: "2023-08-03",
        entrusted: "阿里巴巴",
        completionDeadline: "2023-08-03",
        contacts: "小黑",
        entrust_coding: "SL20230803000003",
        sample_name: "发动机",
        inspection_status: 1
      }],
      conditionsOptions: [
        {
          label: '全部',
          value: 0
        },
        {
          label: '已检验',
          value: 1
        },
        {
          label: '待检验',
          value: 2
        }
      ],
      currentPage: 1,
      pageSize: 5,
      total: 100,
      showDetail: false
    }
  },
  created() {
    this.getCommisionList()
  },
  updated() {
    if (this.$router.currentRoute.name === 'AddCommision') {
      // console.log(this.$router.currentRoute.name)
      this.showDetail = true
    }
  },
  methods: {
    async getCommisionList(){
      const res = await getCommisionList({pageNo:this.currentPage, pageSize:this.pageSize})
      this.commisionTable = res.data.row
      this.total = res.data.total
      // console.log(res)
       // 获取所有的委托单位名称
      const allDepartmentNames = [...new Set(this.commisionTable.map(item => item.entrusted))]
      // 将allDepartmentNames转换为options需要的格式
      this.options = allDepartmentNames.map(name => ({ value: name, label: name }))
   import {
      getCommisionList,
      getViewUUID,
      selectViewUUID
   } from '@/api/inspection/commisioninspection'
   import vueQr from 'vue-qr'
   export default {
      components: {
         vueQr
      },
      data() {
         return {
            form: [],
            searchData: {
               code: '',
               name: '',
               department: ''
            },
            options: [{
               value: '1',
               label: '部门1'
            }],
            radioValue: 0,
            commisionTable: [{
               specifications_models: "GGXH-AAAAA",
               inspectionTime: "2023-08-03",
               id: 2,
               samples_number: 0,
               dateSurvey: "2023-08-03",
               entrusted: "阿里巴巴",
               completionDeadline: "2023-08-03",
               contacts: "小黑",
               entrust_coding: "SL20230803000003",
               sample_name: "发动机",
               inspection_status: 1
            }],
            conditionsOptions: [{
                  label: '全部',
                  value: 0
               },
               {
                  label: '已检验',
                  value: 1
               },
               {
                  label: '待检验',
                  value: 2
               }
            ],
            currentPage: 1,
            pageSize: 5,
            total: 100,
            showDetail: false,
            day: 1,
            viewId: ''
         }
      },
      created() {
         this.getCommisionList()
      },
      updated() {
         if (this.$router.currentRoute.name === 'AddCommision') {
            // console.log(this.$router.currentRoute.name)
            this.showDetail = true
         }
      },
      methods: {
         async getCommisionList() {
            const res = await getCommisionList({
               pageNo: this.currentPage,
               pageSize: this.pageSize
            })
            this.commisionTable = res.data.row
            this.total = res.data.total
            // console.log(res)
            // 获取所有的委托单位名称
            const allDepartmentNames = [...new Set(this.commisionTable.map(item => item.entrusted))]
            // 将allDepartmentNames转换为options需要的格式
            this.options = allDepartmentNames.map(name => ({
               value: name,
               label: name
            }))
    },
    // 查询方法
    async search() {
    // 将搜索条件作为参数传递给getCommisionList方法
    let res
    if(this.radioValue === 0){
      res = await getCommisionList({
        pageNo: this.currentPage,
        pageSize: this.pageSize,
        entrustCoding: this.searchData.code,
        sampleName: this.searchData.name,
        entrusted: this.searchData.department,
      })
    }else{
      res = await getCommisionList({
        pageNo: this.currentPage,
        pageSize: this.pageSize,
        entrustCoding: this.searchData.code,
        sampleName: this.searchData.name,
        entrusted: this.searchData.department,
        inspectionStatus: this.radioValue
      })
    }
      // console.log(res)
      this.commisionTable = res.data.row
      this.total = res.data.total
    },
         },
         // 查询方法
         async search() {
            // 将搜索条件作为参数传递给getCommisionList方法
            let res
            if (this.radioValue === 0) {
               res = await getCommisionList({
                  pageNo: this.currentPage,
                  pageSize: this.pageSize,
                  entrustCoding: this.searchData.code,
                  sampleName: this.searchData.name,
                  entrusted: this.searchData.department,
               })
            } else {
               res = await getCommisionList({
                  pageNo: this.currentPage,
                  pageSize: this.pageSize,
                  entrustCoding: this.searchData.code,
                  sampleName: this.searchData.name,
                  entrusted: this.searchData.department,
                  inspectionStatus: this.radioValue
               })
            }
            // console.log(res)
            this.commisionTable = res.data.row
            this.total = res.data.total
         },
    // 重置方法
    reset() {
      // 重置搜索条件
      this.searchData.code = ''
      this.searchData.name = ''
      this.searchData.department = ''
      this.radioValue = 0
      // 重新获取数据
      this.getCommisionList()
    },
    async radioclick(){
      // 处理点击radio的时间
      console.log('radioValue',this.radioValue)
      if(this.radioValue === 0){
        this.getCommisionList()
      }else{
        const res = await getCommisionList({pageNo:this.currentPage, pageSize:this.pageSize, inspectionStatus: this.radioValue})
        // console.log(res)
        this.commisionTable = res.data.row
        this.total = res.data.total
      }
    },
    // 每页条数改变时触发 选择一页显示多少行
    async handleSizeChange(val) {
      // console.log(`每页 ${val} 条`)
      this.currentPage = 1
      this.pageSize = val
      if(this.radioValue === 0){
        this.getCommisionList()
      }else{
        const res = await getCommisionList({pageNo:this.currentPage, pageSize:this.pageSize, inspectionStatus: this.radioValue})
        this.commisionTable = res.data.row
        this.total = res.data.total
      }
    },
    // 当前页改变时触发 跳转其他页
    async handleCurrentChange(val) {
      // console.log(`当前页: ${val}`)
      this.currentPage = val
      if(this.radioValue === 0){
        this.getCommisionList()
      }else{
        const res = await getCommisionList({pageNo:this.currentPage, pageSize:this.pageSize, inspectionStatus: this.radioValue})
        this.commisionTable = res.data.row
        this.total = res.data.total
      }
    },
    goToaddCommision() {
      this.$router.push('/inspectionManagement/commissionInspection/addCommision')
      this.showDetail = true
    }
  }
}
         // 重置方法
         reset() {
            // 重置搜索条件
            this.searchData.code = ''
            this.searchData.name = ''
            this.searchData.department = ''
            this.radioValue = 0
            // 重新获取数据
            this.getCommisionList()
         },
         async radioclick() {
            // 处理点击radio的时间
            console.log('radioValue', this.radioValue)
            if (this.radioValue === 0) {
               this.getCommisionList()
            } else {
               const res = await getCommisionList({
                  pageNo: this.currentPage,
                  pageSize: this.pageSize,
                  inspectionStatus: this.radioValue
               })
               // console.log(res)
               this.commisionTable = res.data.row
               this.total = res.data.total
            }
         },
         // 每页条数改变时触发 选择一页显示多少行
         async handleSizeChange(val) {
            // console.log(`每页 ${val} 条`)
            this.currentPage = 1
            this.pageSize = val
            if (this.radioValue === 0) {
               this.getCommisionList()
            } else {
               const res = await getCommisionList({
                  pageNo: this.currentPage,
                  pageSize: this.pageSize,
                  inspectionStatus: this.radioValue
               })
               this.commisionTable = res.data.row
               this.total = res.data.total
            }
         },
         // 当前页改变时触发 跳转其他页
         async handleCurrentChange(val) {
            // console.log(`当前页: ${val}`)
            this.currentPage = val
            if (this.radioValue === 0) {
               this.getCommisionList()
            } else {
               const res = await getCommisionList({
                  pageNo: this.currentPage,
                  pageSize: this.pageSize,
                  inspectionStatus: this.radioValue
               })
               this.commisionTable = res.data.row
               this.total = res.data.total
            }
         },
         goToaddCommision() {
            // this.$router.push('/inspectionManagement/commissionInspection/addCommision')
            // this.showDetail = true
            selectViewUUID({
               day: this.day
            }).then(res => {
               this.viewId = res.data
            })
         }
      }
   }
</script>
<style scoped>
   .top-bar {
      margin: -25px -15px;
      background: #fff;
      display: flex;
      justify-content: space-between;
      padding: 5px 24px 0px 24px;
.top-bar{
    margin: -25px -15px;
    background: #fff;
    display: flex;
    justify-content: space-between;
    padding: 5px 24px 0px 24px;
    .sermargin{
      margin-right: 60px;
    }
  }
.rightBtn{
    background-color: rgb(1, 102, 226);
}
.library-table{
      background-color: #fff;
      flex: 1;
      margin: 0px -15px;
      margin-top: 40px;
      display: flex;
      flex-direction: column;
      .table-header{
        padding: 20px;
        display: flex;
        justify-content: space-between;
        .el-form-item{
          margin-bottom: 30px !important;
        }
      }
      .table-box{
          padding: 0px 20px;
          margin-top: 0px;
          flex: 1;
          background: #fff;
          /* padding: 20px 20px 10px 20px; */
          display: flex;
          flex-direction: column;
          .el-table {
            flex: 1;
          }
          >div:nth-child(2){
            display: flex;
            justify-content: end;
            margin: 10px 0;
          }
      }
    }
      .sermargin {
         margin-right: 60px;
      }
   }
</style>
   .rightBtn {
      background-color: rgb(1, 102, 226);
   }
   .library-table {
      background-color: #fff;
      flex: 1;
      margin: 0px -15px;
      margin-top: 40px;
      display: flex;
      flex-direction: column;
      .table-header {
         padding: 20px;
         display: flex;
         justify-content: space-between;
         .el-form-item {
            margin-bottom: 30px !important;
         }
      }
      .table-box {
         padding: 0px 20px;
         margin-top: 0px;
         flex: 1;
         background: #fff;
         /* padding: 20px 20px 10px 20px; */
         display: flex;
         flex-direction: column;
         .el-table {
            flex: 1;
         }
         >div:nth-child(2) {
            display: flex;
            justify-content: end;
            margin: 10px 0;
         }
      }
   }
   .vue_qr_div{
      text-align: center;
   }
</style>