deslrey
2 天以前 e642f80b8718f9315ff75edb1db773da239bf926
src/views/business/inspectionTask/index.vue
@@ -3,25 +3,34 @@
    <div style="height: 100%">
      <div class="search">
        <el-form :model="queryParams" ref="queryParams" size="small" :inline="true">
          <el-form-item label="批号" prop="updateBatchNo" v-if="tabIndex!==0">
          <el-form-item label="批号" prop="updateBatchNo" v-if="tabIndex !== 0">
            <el-input v-model="queryParams.updateBatchNo" clearable placeholder="请输入" size="small"
                      @keyup.enter.native="refreshTable()">
              @keyup.enter.native="refreshTable()">
            </el-input>
          </el-form-item>
          <el-form-item label="委托编号" prop="entrustCode">
            <el-input v-model="queryParams.entrustCode" clearable placeholder="请输入" size="small"
                      @keyup.enter.native="refreshTable()"></el-input>
              @keyup.enter.native="refreshTable()"></el-input>
          </el-form-item>
          <el-form-item label="检验状态" prop="insState">
            <el-select v-model="queryParams.insState" size="small" style="width: 100%" @change="refreshTable()">
              <el-option v-for="(a, i) in dict.type.inspection_task_state" :key="i" :label="a.label"
                         :value="a.value"></el-option>
                :value="a.value"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="供应商名称" prop="supplierName" v-if="tabIndex===2">
            <el-input v-model="queryParams.supplierName" clearable placeholder="请输入" size="small"
                      @keyup.enter.native="goSearch">
            </el-input>
          <el-form-item label="物料属性" prop="materialProp">
            <el-select clearable size="small" v-model="queryParams.materialProp" style="width: 100%">
              <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label"
                :value="dict.value"">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label=" 供应商名称" prop="supplierName" v-if="tabIndex === 2">
                <el-input v-model="queryParams.supplierName" clearable placeholder="请输入" size="small"
                  @keyup.enter.native="goSearch">
                </el-input>
          </el-form-item>
          <el-form-item>
            <el-button size="mini" type="primary" @click="refreshTable()">查询</el-button>
@@ -40,7 +49,7 @@
            </ul>
            <div>
              <el-checkbox v-model="alone" class="view-self-checkbox"
                           @change="changeCheckBox"><span>我的任务</span></el-checkbox>
                @change="changeCheckBox"><span>我的任务</span></el-checkbox>
            </div>
          </div>
          <div class="center-title">
@@ -48,53 +57,50 @@
            <span>{{ page.total }}</span>
          </div>
        </div>
        <lims-table :tableData="tableData" :column="column" :page="page"
          :rowClassName="rowClassName" :height="'calc(100vh - 300px)'" @pagination="pagination"
          key="tableData0">
        <lims-table :tableData="tableData" :column="column" :page="page" :rowClassName="rowClassName"
          :height="'calc(100vh - 300px)'" @pagination="pagination" key="tableData0">
          <div slot="action" slot-scope="scope">
            <el-button size="small" type="text" @click="handleDataLook(scope.row)">数据查看</el-button>
            <el-button type="text" size="small"
                       :disabled="(scope.row.userName == null || scope.row.insState == 3 || scope.row.insState == 5) && checkPermi(['update:product:onPlan'])"
                       @click="editInspection(scope.row)">修改检验值</el-button>
              :disabled="(scope.row.userName == null || scope.row.insState == 3 || scope.row.insState == 5) && checkPermi(['update:product:onPlan'])"
              @click="editInspection(scope.row)">修改检验值</el-button>
            <el-button type="text" size="small" :disabled="(
                  scope.row.userName == null ||
                  scope.row.insState == 3 ||
                  scope.row.insState == 5 ||
                  (scope.row.userName && !scope.row.userName.includes(nickName))
                )"
                       @click="handleInspection(scope.row)">检验</el-button>
              scope.row.userName == null ||
              scope.row.insState == 3 ||
              scope.row.insState == 5 ||
              (scope.row.userName && !scope.row.userName.includes(nickName))
            )" @click="handleInspection(scope.row)">检验</el-button>
            <el-button type="text" size="small" :disabled="(
                  scope.row.userName == null ||
                  scope.row.insState == 5 ||
                  scope.row.insState == 3 ||
                  (scope.row.userName && !scope.row.userName.includes(nickName))
                )"
                       @click="handleConnect(scope.row)">交接</el-button>
              scope.row.userName == null ||
              scope.row.insState == 5 ||
              scope.row.insState == 3 ||
              (scope.row.userName && !scope.row.userName.includes(nickName))
            )" @click="handleConnect(scope.row)">交接</el-button>
            <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">原始记录</el-button>
            <el-popover placement="bottom" trigger="hover" style="margin-left: 6px" :disabled="(scope.row.insState != 3 || scope.row.userName == null ||(scope.row.userName && !scope.row.userName.includes(nickName)))">
            <el-popover placement="bottom" trigger="hover" style="margin-left: 6px"
              :disabled="(scope.row.insState != 3 || scope.row.userName == null || (scope.row.userName && !scope.row.userName.includes(nickName)))">
              <template #reference>
                <el-button link type="text" size="small" :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
                  (scope.row.userName && !scope.row.userName.includes(nickName)))">更多</el-button>
              </template>
              <div>
                <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" style="margin-left: 10px" type="text" size="small" @click="download(scope.row)">下载报告</el-button>
                <el-upload ref='upload'
                           :action="javaApi + '/insReport/inReport'"
                           :before-upload="beforeUpload"
                           :data="{id: scope.row.insReportId}"
                           :headers="uploadHeader" :on-error="onError"
                           :on-success="handleSuccessUp"
                           :show-file-list="false"
                           style="display: inline;margin: 0 6px"
                           accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'>
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" style="margin-left: 10px"
                  type="text" size="small" @click="download(scope.row)">下载报告</el-button>
                <el-upload ref='upload' :action="javaApi + '/insReport/inReport'" :before-upload="beforeUpload"
                  :data="{ id: scope.row.insReportId }" :headers="uploadHeader" :on-error="onError"
                  :on-success="handleSuccessUp" :show-file-list="false" style="display: inline;margin: 0 6px"
                  accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'>
                  <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" size="small" type="text">上传</el-button>
                    (scope.row.userName && !scope.row.userName.includes(nickName)))" size="small"
                    type="text">上传</el-button>
                </el-upload>
                <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small" @click="handleRestore(scope.row)">还原</el-button>
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small"
                  @click="handleRestore(scope.row)">还原</el-button>
                <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small" @click="handleIssued(scope.row)">查看报告</el-button>
                  (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small"
                  @click="handleIssued(scope.row)">查看报告</el-button>
              </div>
            </el-popover>
          </div>
@@ -166,7 +172,7 @@
        </el-button>
      </div>
      <el-table :data="bindTableData" style="width: 100%" height="70vh" v-loading="bindTableDataLoading"
                :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border>
        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border>
        <el-table-column prop="inspectionItemClass" label="检验项分类" width="150">
        </el-table-column>
        <el-table-column prop="inspectionItem" label="检验项" width="150">
@@ -182,7 +188,7 @@
    </el-dialog>
    <el-dialog :visible.sync="bindAddDialogVisible" title="选择绑定" width="600px">
      <el-table :data="bindAddTableData" style="width: 100%" height="60vh"
                :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
        @selection-change="handleBindAddSelectionChange">
        <el-table-column type="selection" width="55"> </el-table-column>
        <el-table-column prop="inspectionItemClass" label="检验项分类" width="150">
@@ -208,13 +214,14 @@
    <!--查看工时弹框-->
    <viewManHourDia ref="viewManHourDia"></viewManHourDia>
    <!--不合格复测查看弹框-->
    <un-pass-retest-result v-if="retestVisible" :retestInfo="retestInfo" :retestVisible="retestVisible" @closeRetestLook="closeRetestLook"></un-pass-retest-result>
    <un-pass-retest-result v-if="retestVisible" :retestInfo="retestInfo" :retestVisible="retestVisible"
      @closeRetestLook="closeRetestLook"></un-pass-retest-result>
    <!--报告查看-->
    <el-dialog title="报告查看" :visible.sync="issuedVisible" width="80vw" :modal-append-to-body="false"
               :fullscreen="fullscreen">
      :fullscreen="fullscreen">
      <div class="full-screen">
        <i class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen = true;"
           v-if="!fullscreen"></i>
          v-if="!fullscreen"></i>
        <img src="@/assets/images/no-full.svg" alt="" v-else style="cursor: pointer;" @click="fullscreen = false;">
      </div>
      <div style="height: 80vh;" v-if="issuedVisible">
@@ -223,7 +230,7 @@
    </el-dialog>
    <el-dialog title="查看附件" :visible.sync="lookDialogVisible" width="800px" top="5vh" fullscreen>
      <filePreview v-if="lookDialogVisible" :fileUrl="javaApi + '/word/' + currentInfo.tempUrlPdf" :currentFile="{}"
                   style="max-height: 90vh;overflow-y: auto;" />
        style="max-height: 90vh;overflow-y: auto;" />
    </el-dialog>
  </div>
</template>
@@ -248,8 +255,8 @@
  selectSampleAndProductByOrderId,
} from "@/api/business/inspectionTask.js";
import { mapGetters } from "vuex";
import {getRetestResult} from "@/api/business/rawMaterialOrder";
import {upReportUrl} from "@/api/business/insReport";
import { getRetestResult } from "@/api/business/rawMaterialOrder";
import { upReportUrl } from "@/api/business/insReport";
import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue";
import filePreview from "@/components/Preview/filePreview.vue";
import tab from "../../../plugins/tab";
@@ -262,7 +269,7 @@
    viewManHourDia,
    UnPassRetestResult
  },
  dicts: ["urgency_level", "inspection_task_state"],
  dicts: ["urgency_level", "inspection_task_state", 'material_prop_type'],
  computed: {
    ...mapGetters(["nickName", "userId"]),
  },
@@ -369,6 +376,21 @@
        },
        { label: "样品名称", prop: "sample", width: "160px" },
        {
          label: '物料属性',
          prop: 'materialProp',
          formatData: (params) => {
            if (!params) return null
            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
              const item = this.dict.type.material_prop_type[i]
              if (item.value == params) {
                return item.label
              }
            }
            return null
          }
        },
        {
          label: "下单类别",
          prop: "typeSource",
          width: "100px",
@@ -376,9 +398,9 @@
          formatData: (params) => {
            if (params == 0) {
              return "外购下单";
            } else if(params==1) {
            } else if (params == 1) {
              return "原材料下单";
            }else{
            } else {
              return "委托下单";
            }
          },
@@ -532,7 +554,7 @@
                this.getRetestResultInfo(row);
              },
              disabled: (row) => {
                return row.insResult!=0
                return row.insResult != 0
              },
            },
            {
@@ -665,7 +687,7 @@
    },
    // 下载报告
    download(row) {
      let url = (row.urlS===null||row.urlS==='')?row.url:row.urlS
      let url = (row.urlS === null || row.urlS === '') ? row.url : row.urlS
      const link = document.createElement('a');
      link.href = this.javaApi + url;
      link.target = '_blank';
@@ -699,7 +721,7 @@
        fileName = row.tempUrlPdf
        fileType = "pdf"
      }
      fileName = fileName.replace('/word/','')
      fileName = fileName.replace('/word/', '')
      const userName = this.nickName
      this.option = {
        url: this.javaApi + "/word/" + fileName,
@@ -747,7 +769,7 @@
    },
    handleTab(m, i) {
      this.tabIndex = i;
      this.typeSource =m.value;
      this.typeSource = m.value;
      this.queryParams.sonLaboratory = "";
      this.refreshTable();
    },
@@ -915,13 +937,13 @@
      });
    },
    // 查看不合格复测结果
    getRetestResultInfo (row) {
      getRetestResult({insProductId: row.insProductId}).then(res => {
    getRetestResultInfo(row) {
      getRetestResult({ insProductId: row.insProductId }).then(res => {
        this.retestVisible = true
        this.retestInfo = res.data
      })
    },
    closeRetestLook () {
    closeRetestLook() {
      this.retestVisible = false
    },
    // 绑定检验项绑定
@@ -990,7 +1012,7 @@
        });
      });
    },
    beforeUpload (file) {
    beforeUpload(file) {
      if (file.size > 1024 * 1024 * 10) {
        this.$message.error('上传文件不超过10M');
        this.$refs.upload.clearFiles()
@@ -1061,6 +1083,7 @@
  border-color: #3a7bfa;
  color: #3a7bfa;
}
.center-options {
  display: flex;
  align-items: center;