gaoluyang
2025-02-24 0aff7a59f983affb78507e1dbd66489d44b7c5ce
检验任务-进货验证联调
已修改5个文件
已添加1个文件
1353 ■■■■■ 文件已修改
public/index.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/inspectionTask.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionReview/index.vue 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionTask/inspection.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/reportPreparation/index.vue 1221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/unpass/components/PurchaseVerification.vue 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/index.html
@@ -225,6 +225,7 @@
      </div>
    </div>
  </body>
  <script type='text/javascript' src='http://192.168.21.53:9001/web-apps/apps/api/documents/api.js'></script>
  <script src="<%= BASE_URL %>luckysheet/plugins/js/plugin.js"></script>
  <script src="<%= BASE_URL %>luckysheet/luckysheet.umd.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.min.js"></script>
src/api/business/inspectionTask.js
@@ -213,7 +213,7 @@
  return request({
    url: "/insOrderPlan/verifyPlan",
    method: "post",
    data: data,
    params: data,
  });
}
src/views/business/inspectionReview/index.vue
@@ -24,7 +24,7 @@
    </div>
    <div>
      <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading"
                  :rowClassName="rowClassName" :height="'calc(100vh - 250px)'" @pagination="pagination"
                  :rowClassName="rowClassName" :height="'calc(100vh - 270px)'" @pagination="pagination"
                  key="tableData0"></lims-table>
    </div>
<!--    <div style="width: 100%;height: 100%;" v-if="activeFace >0 && isCopper == null">-->
@@ -50,6 +50,10 @@
        <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
      </div>
    </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;" />
    </el-dialog>
  </div>
</template>
@@ -61,9 +65,12 @@
import {selectInsOrderPlanList, selectUserCondition} from "@/api/business/inspectionTask";
import {mapGetters} from "vuex";
import {upReportUrl} from "@/api/business/insReport";
import {delfile} from "@/api/business/rawMaterialOrder";
import filePreview from "@/components/Preview/filePreview.vue";
export default {
  components: {
    filePreview,
    onlyoffice,
    limsTable,
    // ShowInfo,
@@ -74,6 +81,7 @@
  },
  data() {
    return {
      lookDialogVisible: false,
      alone: false,
      tabList: [],
      active: 1,
@@ -232,6 +240,14 @@
      issuedVisible: false,
      fullscreen: false,
      option:null,
      orderTypeList: [
        {label: '委托试验', value: 'Customer-ordered test'},
        {label: '抽检', value: '抽检'},
        {label: '进厂检验', value: '进厂检验'},
        {label: '季度检验', value: 'Quarterly inspection'},
      ],
      urgencyLevel: [],
      inspectionTaskState: [],
    }
  },
  created() {
@@ -353,36 +369,46 @@
    },
    // è¿˜åŽŸæ“ä½œ
    handleRestore(row) {
      upReportUrl({id: row.insReportId}).then(res => {
        if (res.code === 200) {
          this.$message.success('操作成功')
          this.refreshTable('page')
        }
      })
      this.$confirm('是否还原当前报告?', "警告", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        upReportUrl({id: row.insReportId}).then(res => {
          if (res.code === 200) {
            this.$message.success('还原成功')
            this.refreshTable()
          }
        })
      }).catch(() => { })
    },
    // æŸ¥çœ‹æŠ¥å‘Š
    handleIssued(row) {
      this.currentInfo = row;
      let fileName = row.url
      let fileType = "docx"
      if (row.tempUrlPdf != null || row.tempUrlPdf === '') {
        fileName = row.tempUrlPdf
        fileType = "pdf"
      }
      fileName = fileName.replace('/word/','')
      const userName = JSON.parse(localStorage.getItem("user")).name;
      this.option = {
        url: this.javaApi + "/word/" + fileName,
        isEdit: false,
        fileType: fileType,
        title: fileName,
        lang: 'zh-CN',
        isPrint: false,
        user_id: 1,
        user_name: userName,
        editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName
      }
      this.issuedVisible = true;
      if (!row.tempUrlPdf) return this.$message.warning('文件未上传')
      this.currentInfo = row
      this.lookDialogVisible = true
      // this.currentInfo = row;
      // let fileName = row.url
      // let fileType = "docx"
      // if (row.tempUrlPdf != null || row.tempUrlPdf === '') {
      //   fileName = row.tempUrlPdf
      //   fileType = "pdf"
      // }
      // fileName = fileName.replace('/word/','')
      // const userName = this.nickName
      // this.option = {
      //   url: this.javaApi + "/word/" + fileName,
      //   isEdit: false,
      //   fileType: fileType,
      //   title: fileName,
      //   lang: 'zh-CN',
      //   isPrint: false,
      //   user_id: 1,
      //   user_name: userName,
      //   editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName
      // }
      // this.issuedVisible = true;
    },
    getAuthorizedPerson() {
      selectUserCondition({ type: 1 }).then((res) => {
src/views/business/inspectionTask/inspection.vue
@@ -18,13 +18,9 @@
      </el-col>
      <el-col :span="16" style="text-align: right">
        <el-button size="small" type="primary" @click="refreshView">刷新</el-button>
        <el-button v-if="typeSource === 1" size="small" type="primary" @click="openPurchase">进货验证</el-button>
        <el-button v-if="state === 1 && typeSource === 1" size="small" type="primary"
          @click="openUnPassDialog('add')">不合格处理</el-button>
        <el-button size="small" type="primary" @click="
          sampleVisible = true;
        uploadSample();
        ">样品切换</el-button>
        <el-button v-if="typeSource == 1" size="small" type="primary" @click="openPurchase">进货验证</el-button>
        <el-button v-if="state == 1 && typeSource == 1" size="small" type="primary" @click="openUnPassDialog('add')">不合格处理</el-button>
        <el-button size="small" type="primary" @click="sampleVisible = true;uploadSample();">样品切换</el-button>
        <el-button v-if="state == 1" size="small" type="primary" @click="taskVisible = true">任务切换</el-button>
        <el-button v-if="state == 1" size="small" type="primary" @click="addVerifyDia = true">提交</el-button>
        <!-- å¤æ ¸ -->
@@ -73,7 +69,7 @@
        </el-form-item>
        <el-form-item label="备注:">
          <!--          <span style="color:red">{{ insOrder.remark?insOrder.remark:'-' }}</span>-->
          <el-input v-model="insOrder.remark" :disabled="state !== 1" clearable placeholder="请输入" size="small"
          <el-input v-model="insOrder.remark" :disabled="state != 1" clearable placeholder="请输入" size="small"
            @blur="subOtherForm(insOrder.remark, 'remark')"></el-input>
          <!-- <el-tag v-if="currentKey">{{ insOrder.remark }}</el-tag> -->
        </el-form-item>
@@ -1065,7 +1061,7 @@
    },
    // æ‰“开进货验证弹框
    openPurchase() {
      const operationType = this.state === 1 ? "add" : "view";
      const operationType = this.state == 1 ? "add" : "view";
      this.purchaseDialog = true;
      const item = {
        id: this.currentSample.id,
@@ -3112,7 +3108,7 @@
  align-items: center;
}
</style>
<style>
<style scoped>
/* .inspection .el-form-item__label {
  color: #000;
} */
src/views/business/reportPreparation/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1221 @@
<template>
  <div class="inspection_order">
    <div v-show="activeFace === 0 && state===0" style="width: 100%;height: 100%;">
      <div>
        <el-row class="title">
          <el-col :span="12" style="padding-left: 20px;text-align: left;">报告编制</el-col>
        </el-row>
      </div>
      <div class="search" style="position: relative;">
        <div class="search_thing">
          <div class="search_label">报告编号:</div>
          <div class="search_input"><el-input v-model="componentData.entity.code" clearable placeholder="请输入"
                                              size="small" @keyup.enter.native="refreshTable()"></el-input></div>
        </div>
        <div class="search_thing">
          <div class="search_label">状态:</div>
          <div class="search_input">
            <el-select v-model="componentData.entity.queryStatus" clearable size="small" style="width: 100%;" @change="refreshTable()">
              <el-option v-for="(a, i) in queryStatusList" :key="i" :label="a.label" :value="a.value"></el-option>
            </el-select>
          </div>
        </div>
        <div class="search_thing">
          <div class="search_label">下单类别:</div>
          <div class="search_input">
            <el-select v-model="componentData.entity.typeSource" clearable size="small" style="width: 100%;" @change="refreshTable()">
              <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option>
            </el-select>
          </div>
        </div>
        <div class="search_thing">
          <div class="search_label">检验类别:</div>
          <div class="search_input">
            <el-select v-model="componentData.entity.orderType" clearable size="small" style="width: 100%;" @change="refreshTable()">
              <el-option v-for="(a, i) in orderTypeList" :key="i" :label="a.label" :value="a.value"></el-option>
            </el-select>
          </div>
        </div>
        <div class="search_thing" style="padding-left: 30px;">
          <el-button size="small" @click="refresh()">重 ç½®</el-button>
          <el-button size="small" type="primary" @click="refreshTable()">查 è¯¢</el-button>
          <el-button :loading="outLoading" size="small" style="margin-right: 16px;" type="primary" @click="handleDowns">批量下载</el-button>
        </div>
      </div>
      <!-- <input id="input" type="file" accept=".doc,.docx"></input> -->
      <div class="table">
        <el-table @selection-change="handleChange" :data="valueTableData" style="width: 100%" height="calc(100vh - 21em)" v-loading="tableLoading">
          <!-- è¡¨æ ¼åˆ— -->
          <el-table-column type="selection" width="55"></el-table-column>
          <el-table-column header-align="center" align="center" width="70" prop="prop" label="序号" type="index"></el-table-column>
          <el-table-column prop="code" label="报告编号" min-width="180">
            <template slot-scope="scope">
              <el-button type="text" @click="selectAllByOne(scope.row)">{{scope.row.code}}</el-button>
            </template>
          </el-table-column>
          <el-table-column prop="typeSource" label="下单类别" min-width="120">
            <template slot-scope="scope">
              <el-tag type="info" v-if="scope.row.typeSource === 1" disable-transitions>原材料下单</el-tag>
              <el-tag type="info" v-if="scope.row.typeSource === 0" disable-transitions>成品下单</el-tag>
            </template>
          </el-table-column>
          <el-table-column prop="orderType" label="检验类别" min-width="150">
            <template slot-scope="scope">
              <el-tag type="success" v-if="scope.row.orderType === 'Customer-ordered test'" disable-transitions>委托试验</el-tag>
              <el-tag v-if="scope.row.orderType === '抽检'" disable-transitions>抽检</el-tag>
              <el-tag type="info" v-if="scope.row.orderType === '进厂检验'" disable-transitions>进厂检验</el-tag>
              <el-tag type="warning" v-if="scope.row.orderType === 'Quarterly inspection'" disable-transitions>季度检验</el-tag>
            </template>
          </el-table-column>
          <el-table-column prop="createTime" label="创建时间" min-width="150"></el-table-column>
          <el-table-column prop="writeUserName" label="提交人" min-width="110"></el-table-column>
          <el-table-column prop="writeTime" label="提交时间" min-width="150"></el-table-column>
          <el-table-column prop="state" label="提交状态" min-width="110">
            <template slot-scope="scope">
              <el-tag type="danger" v-if="scope.row.state === 0" disable-transitions>待提交</el-tag>
              <el-tag type="success" v-if="scope.row.state === 1" disable-transitions>已提交</el-tag>
            </template>
          </el-table-column>
          <el-table-column prop="examineUser" label="审核人" width="110"></el-table-column>
          <el-table-column prop="examineTime" label="审核时间" width="180"></el-table-column>
          <el-table-column prop="isExamine" label="审核状态" width="110">
            <template slot-scope="scope">
              <el-tag type="danger" v-if="scope.row.isExamine === 0" disable-transitions>不通过</el-tag>
              <el-tag type="success" v-if="scope.row.isExamine === 1" disable-transitions>通过</el-tag>
            </template>
          </el-table-column>
          <el-table-column prop="examineTell" label="审核备注" width="180"></el-table-column>
          <el-table-column prop="ratifyUser" label="批准人" width="110"></el-table-column>
          <el-table-column prop="ratifyTime" label="批准时间" width="180"></el-table-column>
          <el-table-column prop="isRatify" label="批准状态" width="110">
            <template slot-scope="scope">
              <el-tag type="danger" v-if="scope.row.isRatify === 0" disable-transitions>不批准</el-tag>
              <el-tag type="success" v-if="scope.row.isRatify === 1" disable-transitions>批准</el-tag>
            </template>
          </el-table-column>
          <el-table-column prop="ratifyTell" label="批准备注" width="180"></el-table-column>
          <!-- æ“ä½œæŒ‰é’® -->
          <el-table-column label="操作" fixed="right" min-width="360" align="center">
            <template slot-scope="scope">
              <el-button size="small" type="text" @click="viewIssued(scope.row)">查看报告</el-button>
              <el-upload ref='upload1'
                         style="display: inline"
                         :action="fileAction1 +'?id='+ scope.row.id"
                         :auto-upload="true"
                         :before-upload="fileBeforeUpload1"
                         :headers="headers" :on-error="onError1"
                         :on-success="handleSuccessUp1"
                         :show-file-list="false"
                         accept='.doc,.docx'>
                <el-button size="small" type="text" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName">上传</el-button>
                <!--                <span>上传</span>-->
              </el-upload>
              <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="handleRestore(scope.row)">还原</el-button>
              <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="sendBackTask(scope.row)">退回任务</el-button>
              <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="handle(scope.row)">提交</el-button>
              <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 ||scope.row.isExamine == 1 || userName !== scope.row.examineUser" @click="handleIssued(scope.row)">审核</el-button>
              <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 || scope.row.isExamine == 0 || scope.row.isExamine == null || scope.row.isRatify == 1 || userName !== scope.row.ratifyUser" @click="handleApprove(scope.row)">批准</el-button>
              <el-popover placement="bottom" :width="170" trigger="hover">
                <template #reference>
                  <el-button link type="text" size="small">更多</el-button>
                </template>
                <div>
                  <el-button style="margin-left: 10px" type="text" size="small" @click="download(scope.row)">下载</el-button>
                  <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">原始记录</el-button>
                  <el-button type="text" size="small" @click="handleFileLook(scope.row)">附件上传</el-button>
                </div>
              </el-popover>
            </template>
          </el-table-column>
        </el-table>
        <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page.current"
                       style="margin-right: 5%;" :page-sizes="[10, 20, 30, 50, 100]" :page-size="page.size"
                       layout="->,total, sizes, prev, pager, next, jumper" :total="total">
        </el-pagination>
      </div>
    </div>
    <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="claimVisible" title="在线编制"
               width="22cm">
      <div class="full-screen">
        <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px"
           @click="fullscreen=true;"></i>
        <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;">
      </div>
      <Word v-if="claimVisible" ref="Word" :class="{fullscreen:fullscreen}" :value="value" style="height:70vh" />
      <span slot="footer" class="dialog-footer">
        <el-button @click="claimVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="confirmClaim">ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="issuedVisible" title="报告审核"
               width="80vw">
      <div class="full-screen">
        <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i>
        <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" >
      </div>
      <div v-if="issuedVisible" style="height: 80vh;">
        <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
      </div>
      <span slot="footer" class="dialog-footer">
                <el-button :disabled="loadingIssued" @click="issuedReasonVisible=true">不通过</el-button>
                <el-button type="primary" @click="subIssued">通 è¿‡</el-button>
            </span>
    </el-dialog>
    <el-dialog :modal-append-to-body="false" :visible.sync="issuedReasonVisible" title="不通过原因" width="400px">
      <div class="search_thing">
        <div class="search_label">不通过原因:</div>
        <div class="search_input"><el-input v-model="reason" clearable placeholder="请输入" size="small"></el-input></div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button :disabled="loadingIssuedReason" @click="issuedReasonVisible=false">取消</el-button>
                <el-button :loading="loadingIssuedReason" type="primary" @click="handleIssuedReason">确定</el-button>
            </span>
    </el-dialog>
    <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="approveVisible" title="报告批准" width="80vw">
      <div class="full-screen">
        <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i>
        <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" >
      </div>
      <div v-if="approveVisible" style="height: 80vh;">
        <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
      </div>
      <span slot="footer" class="dialog-footer">
                <el-button :disabled="loadingApprove" @click="approveReasonVisible=true">不批准</el-button>
                <el-button :loading="loadingApprove" type="primary" @click="subApprove">批 å‡†</el-button>
            </span>
    </el-dialog>
    <el-dialog :modal-append-to-body="false" :visible.sync="approveReasonVisible" title="不批准原因" width="400px">
      <div class="search_thing">
        <div class="search_label">不批准原因:</div>
        <div class="search_input"><el-input v-model="reason" clearable placeholder="请输入" size="small"></el-input></div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button :disabled="loadingApproveReason" @click="approveReasonVisible=false">取消</el-button>
                <el-button :loading="loadingApproveReason" type="primary" @click="handleApproveReason">确定</el-button>
            </span>
    </el-dialog>
    <el-dialog :close-on-click-modal="false" :visible.sync="addApproverDia" title="指定批准人员"
               width="400px"
               @close="closeAddApproverDia">
      <div class="body" style="display: flex;padding: 10px;align-items: center;">
        <div class="search_label" style="width: 150px;"><span class="required-span">*</span>批准人:</div>
        <div class="search_input" style="width: 100%;">
          <el-select v-model="approver" clearable filterable placeholder="请选择" size="small" style="width: 100%;">
            <el-option v-for="(item,i) in approverList" :key="i" :label="item.label" :value="item.value">
            </el-option>
          </el-select>
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeAddApproverDia">取 æ¶ˆ</el-button>
        <el-button :loading="loadingIssued" type="primary" @click="submitAddApprover">ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <el-dialog :close-on-click-modal="false" :visible.sync="addVerifyDia"
               title="指定审核人员"
               width="400px"
               @close="closeAddVerifyDia">
      <div class="body" style="display: flex;padding: 10px;align-items: center;">
        <div class="search_label" style="width: 150px;"><span class="required-span">*</span>审核人:</div>
        <div class="search_input" style="width: 100%;">
          <el-select v-model="verifyUser" clearable filterable placeholder="请选择" size="small" style="width: 100%;">
            <el-option v-for="(item,i) in approverList" :key="i" :label="item.label" :value="item.value">
            </el-option>
          </el-select>
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeAddVerifyDia">取 æ¶ˆ</el-button>
        <el-button :loading="loadingVerify" type="primary" @click="handleSubmit">ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <div v-if="activeFace >0 && isCopper === null" style="width: 100%;height: 100%;">
      <Add :active="activeFace" :currentId="currentId" :examine="examine"/>
    </div>
    <div v-if="activeFace >0 && isCopper === 0" style="width: 100%;height: 100%;">
      <CustomsInspection :active="activeFace" :currentId="currentId" :customsInspection="customsInspection" :isReport="isReport"/>
    </div>
    <div v-if="activeFace >0 && isCopper === 1" style="width: 100%;height: 100%;">
      <CopperOrder :active="activeFace" :currentId="currentId"></CopperOrder>
    </div>
    <!--产业链信息查看-->
    <ShowInfo v-if="showInfoDialog" ref="showInfoDialog" :showInfoDialog="showInfoDialog"></ShowInfo>
    <!--报告查看-->
    <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="viewIssuedVisible" title="报告查看"
               width="80vw">
      <div class="full-screen">
        <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i>
        <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" >
      </div>
      <div v-if="viewIssuedVisible" style="height: 80vh;">
        <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
      </div>
    </el-dialog>
    <!--检验任务信息查看-->
    <Inspection v-if="state>0" :key="InspectionKey" :inspectorList="inspectorList" :orderId="orderId"
                :sonLaboratory="sonLaboratory" :state="state"
                :typeSource="typeSource"
                @goback="goback" @refreshView="refreshView"/>
    <!--附件查看-->
    <el-dialog :visible.sync="filesDialogVisible" title="附件查看" width="80%" @closed="closeFilesLook">
      <div style="display: flex;justify-content: space-between;">
        <el-upload ref='upload'
                   :action="fileAction"
                   :auto-upload="true"
                   :before-upload="fileBeforeUpload" :data="{orderId: filesLookInfo.insOrderId}"
                   :headers="headers" :on-error="onError"
                   :on-success="handleSuccessUp"
                   :show-file-list="false"
                   accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;">
          <el-button size="small" style="height: 38px" type="primary">附件上传</el-button>
        </el-upload>
      </div>
<!--      <div v-if="filesDialogVisible" style="height: 70vh;overflow-y: auto;">-->
<!--        <ValueTable :key="upIndex"-->
<!--                    ref="fileList"-->
<!--                    :componentData="fileComponentData"-->
<!--                    :delUrl="$api.insOrderPlan.delfile"-->
<!--                    :url="$api.insOrderPlan.getFileList"-->
<!--                    class="value-table"/>-->
<!--      </div>-->
    </el-dialog>
  </div>
</template>
<script>
import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue";
// import ShowInfo from "../do/b1-material-ins-order/showInfo.vue";
import file from "@/utils/file";
export default {
  components: {onlyoffice},
  data() {
    return {
      componentData: {
        entity: {
          queryStatus: null,
          code: null,
          typeSource: null,
          orderBy: {
            field: 'id',
            order: 'desc'
          }
        },
        isIndex: true,
        showSelect: true,
        select: true,
        selectMethod: 'handleChange',
        do: [
          {
            id: '',
            font: '查看报告',
            type: 'text',
            method: 'viewIssued',
          },
          {
            id: 'download',
            font: '下载',
            type: 'text',
            method: 'download'
          }, {
            id: 'handleUpload',
            font: '上传',
            type: 'upload',
            uploadConfig: {
              url: this.$api.insReport.inReport,
              accept: '.docx'
            },
            method: 'handleUpload',
            disabFun: (row, index) => {
              return row.state != 0 || userName != row.writeUserName
            }
          },
          {
            id: 'handleRestore',
            font: '还原',
            type: 'text',
            method: 'handleRestore',
            disabFun: (row, index) => {
              return row.state != 0 || JSON.parse(localStorage.getItem("user")).name != row.writeUserName
            }
          },
          {
            id: 'sendBackTask',
            font: '退回任务',
            type: 'text',
            method: 'sendBackTask',
            disabFun: (row, index) => {
              return row.state != 0 || JSON.parse(localStorage.getItem("user")).name != row.writeUserName
            }
          },
          {
            id: 'handle',
            font: '提交',
            type: 'text',
            method: 'handle',
            disabFun: (row, index) => {
              return row.state != 0 || JSON.parse(localStorage.getItem("user")).name != row.writeUserName
            }
          },
          {
            id: 'handleIssued',
            font: '审核',
            type: 'text',
            method: 'handleIssued',
            disabFun: (row, index) => {
              return row.state == null || row.state == 0 || row.isExamine == 1 || JSON.parse(localStorage.getItem("user")).name != row.examineUser
            }
          }, {
            id: 'handleApprove',
            font: '批准',
            type: 'text',
            method: 'handleApprove',
            disabFun: (row, index) => {
              return row.state == null || row.state == 0 || row.isExamine == 0 || row.isExamine == null || row.isRatify == 1 || JSON.parse(localStorage.getItem("user")).name != row.ratifyUser
            }
          },
          {
            id: '',
            font: '原始记录',
            type: 'text',
            method: 'viewInspectInfo',
          },
          {
            id: '',
            font: '附件上传',
            type: 'text',
            method: 'handleFileLook',
          }
        ],
        linkEvent: {
          code: {
            method: 'selectAllByOne'
          }
        },
        tagField: {
          isRatify: {
            select: [{
              value: 0,
              type: 'danger',
              label: '不批准'
            }, {
              value: 1,
              type: 'success',
              label: '批准'
            }]
          },
          isExamine: {
            select: [{
              value: 0,
              type: 'danger',
              label: '不通过'
            }, {
              value: 1,
              type: 'success',
              label: '通过'
            }]
          },
          state: {
            select: [{
              value: 0,
              type: 'danger',
              label: '待提交'
            }, {
              value: 1,
              type: 'success',
              label: '已提交'
            }]
          },
          typeSource: {
            select: [{
              value: 0,
              label: '成品下单',
              type: 'info'
            },{
              value: 1,
              label: '原材料下单',
              type: 'info'
            }]
          },
          queryStatus: {
            select: [{
              value: 0,
              label: '待提交',
              type: 'info'
            },{
              value: 1,
              label: '待审核',
              type: 'info'
            },{
              value: 2,
              label: '待批准',
              type: 'info'
            }]
          },
          orderType: {
            select: [{
              value: 'Customer-ordered test',
              label: '委托试验',
              type: 'success',
              effect: 'plain'
            },{
              value: '抽检',
              label: '抽检',
              type: '',
              effect: 'plain'
            },{
              value: '进厂检验',
              label: '进厂检验',
              type: 'info',
              effect: 'plain'
            },{
              value: 'Quarterly inspection',
              label: '季度检验',
              type: 'warning',
              effect: 'plain'
            }]
          }
        },
        selectField: {},
        requiredAdd: [],
        needSort: ['createTime', 'state', 'writeTime', 'isExamine', 'examineTime', 'ratifyTime'],
        requiredUp: []
      },
      page: {
        current: 1,
        size: 20,
      },
      total: null,
      entityCopy: {},
      upIndex: 0,
      statusList: [],
      claimVisible: false,
      issuedVisible: false,
      issuedReasonVisible: false,
      approveVisible: false,
      approveReasonVisible: false,
      fullscreen: false,
      loadingApproveReason: false,
      loadingApprove: false,
      loadingIssuedReason: false,
      loadingIssued: false,
      value: ``,
      reason: '',
      currentInfo: null,
      option:null,
      mutiList:[],
      outLoading:false,
      inLoading:false,
      addApproverDia: false, // æŒ‡å®šå®¡æ‰¹äººå‘˜å¼¹æ¡†
      approver: '', // å®¡æ‰¹äººå‘˜
      approverId: '', // å®¡æ‰¹äººå‘˜
      approverList: [],
      addVerifyDia: false, // æŒ‡å®šå®¡æ ¸äººå‘˜å¼¹æ¡†
      verifyUser: null, // å®¡æ ¸äººå‘˜
      loadingVerify: false, // å®¡æ ¸äººå‘˜
      typeSourceList: [
        {label: '成品下单', value: 0},
        {label: '原材料下单', value: 1},
      ],
      orderTypeList: [
        {label: '委托试验', value: 'Customer-ordered test'},
        {label: '抽检', value: '抽检'},
        {label: '进厂检验', value: '进厂检验'},
        {label: '季度检验', value: 'Quarterly inspection'},
      ],
      showInfoDialog: false, // äº§ä¸šé“¾ä¿¡æ¯æŸ¥çœ‹
      isReport: 1,
      activeFace: 0, // 1:下单,2:查看,3:审核,默认为0
      customsInspection: {},
      currentId: null,
      examine: null,
      viewIssuedVisible: false,
      queryStatusList: [
        {label: '待提交', value: 0},
        {label: '待审核', value: 1},
        {label: '待批准', value: 2},
      ],
      state: 0,
      orderId: 0,
      inspectorList: [],//检验人员列表
      InspectionKey: 1,
      typeSource: null,// 0:成品下单,1:原材料下单
      sonLaboratory: '', // è¯•验室
      filesDialogVisible: false,
      filesLookInfo: {},
      fileComponentData: {
        entity: {
          insOrderId:''
        },
        isIndex: true,
        showSelect: false,
        select: false,
        sort: false,
        init:false,
        do: [
          {
            id: 'parent',
            font: '下载',
            type: 'text',
            method: 'handleDown'
          },{
            id: 'delete',
            font: '删除',
            type: 'text',
            method: 'doDiy',
          }
        ],
        isPage: false,
        linkEvent: {},
        tagField: {
          type:{
            select:[
              {
                value: 1,
                label: '图片'
              },
              {
                value: 2,
                label: '文件'
              }
            ]
          }
        },
        currentId: '',
        selectField: {},
        requiredAdd: [],
        requiredUp: []
      },
      isCopper: null,
      tableLoading: false,
      valueTableData: [],
      userName: ''
    }
  },
  computed: {
    headers() {
      return {
        'token': sessionStorage.getItem('token')
      }
    },
    action() {
      return this.javaApi + this.$api.insReport.upAll
    },
    fileAction() {
      return this.javaApi + this.$api.insOrderPlan.uploadFile
    },
    fileAction1() {
      return this.javaApi + this.$api.insReport.inReport
    }
  },
  mounted() {
    this.entityCopy = this.HaveJson(this.componentData.entity)
    this.userName = JSON.parse(localStorage.getItem("user")).name
    this.getPower()
    this.refreshTable()
  },
  methods: {
    handleChange(arr){
      this.mutiList = arr
    },
    // æŸ¥çœ‹æ£€éªŒæ•°æ®
    viewInspectInfo (row) {
      //当前检验任务的检验人列表
      let inspectorList = []
      if(row.userName){
        inspectorList = row.userName.split(',')
      }
      let user = JSON.parse(localStorage.getItem('user'))
      if(user){
        inspectorList.push(user.name)
      }
      this.inspectorList = inspectorList
      this.state = 3;
      this.typeSource = row.typeSource
      this.orderId = row.insOrderId
      this.sonLaboratory = row.sonLaboratory
    },
    goback() {
      this.state = 0
      this.refreshTable('page')
    },
    handleFileLook (row) {
      this.filesLookInfo = row
      this.filesDialogVisible = true
      this.fileComponentData.entity.insOrderId = row.insOrderId
      this.$nextTick(() => {
        this.$refs['fileList'].selectList()
      })
    },
    closeFilesLook () {
      this.filesDialogVisible = false
    },
    handleSuccessUp(response, ) {
      this.upLoading = false;
      if (response.code == 200) {
        this.$message.success('上传成功');
        this.$refs.fileList.selectList()
      }
    },
    handleSuccessUp1(response, ) {
      if (response.code == 200) {
        this.$message.success('上传成功');
      }
    },
    handleDown(row){
      this.$axios.post(this.$api.insOrderPlan.downFile, {
        id: row.id,
      }).then(res => {
        if (res.code === 200) {
          let url = '';
          if(res.data.type==1){
            url = this.javaApi+'/img/'+res.data.fileUrl
            file.downloadIamge(url,row.fileName)
          }else{
            url = this.javaApi+'/word/'+res.data.fileUrl
            const link = document.createElement('a');
            link.href = url;
            link.download = row.fileName;
            link.click();
          }
        }
      }).catch(error => {
      })
    },
    // åˆ·æ–°é¡µé¢
    refreshView () {
      this.InspectionKey++
    },
    // æŸ¥çœ‹äº§ä¸šé“¾ä¿¡æ¯
    openInfoDialog (row) {
      this.showInfoDialog = true
      this.$nextTick(() => {
        this.$refs.showInfoDialog.getInfo(row.ifsInventoryId)
      })
    },
    handleDowns(){
      if(this.mutiList.length==0){
        this.$message.error('请选择报告')
        return
      }
      let str = this.mutiList.map(m=>m.id).join(',')
      this.outLoading = true
      this.$axios.get(this.$api.insReport.downAll+'?ids='+str).then(res => {
        this.outLoading = false
        this.$message.success('导出成功')
        // const blob = new Blob([res],{ type: 'application/octet-stream' });
        // const url = URL.createObjectURL(blob);
        // const link = document.createElement('a');
        // link.href = url;
        // link.download = '报告.zip';
        // link.click();
        const link = document.createElement('a');
        link.href = this.javaApi + res.message;
        link.target = '_blank';
        document.body.appendChild(link);
        link.click();
      })
    },
    beforeUpload(file){
      const isZip = file.type === 'application/zip' || file.name.endsWith('.zip');
      if (!isZip) {
        this.$message.error('上传文件只能是 ZIP æ ¼å¼!');
      }
      if(isZip){
        this.inLoading = true;
      }
      return isZip;
    },
    fileBeforeUpload(file) {
      let flag = true
      if (file.size > 1024 * 1024 * 10) {
        this.$message.error('上传文件不超过10M');
        this.$refs.upload.clearFiles()
        flag = false
      }
      if (!flag) {
        return Promise.reject(flag); //正确的终止
      }
    },
    fileBeforeUpload1(file) {
      let flag = true
      if (file.size > 1024 * 1024 * 10) {
        this.$message.error('上传文件不超过10M');
        this.$refs.upload1.clearFiles()
        flag = false
      }
      if (!flag) {
        return Promise.reject(flag); //正确的终止
      }
    },
    handleSuccess(response,){
      this.inLoading = false;
      if (response.code == 200) {
        this.$message.success('导入成功')
        this.refreshTable()
      }else{
        this.$message.error(response.message)
      }
    },
    onError(err, file, fileList,type) {
      this.$message.error('上传失败')
      this.$refs.upload.clearFiles()
    },
    onError1(err, file, fileList,type) {
      this.$message.error('上传失败')
      this.$refs.upload1.clearFiles()
    },
    refreshTable(e) {
      this.tableLoading = false
      this.$axios.post(this.$api.insReport.pageInsReport, {
        page: this.page,
        entity: this.componentData.entity
      }, {
        headers: {
          'Content-Type': 'application/json'
        }
      }).then(res => {
        this.tableLoading = false
        if (res.code === 201) {
          return
        }
        this.total = res.data.body.total
        this.valueTableData = res.data.body.records
      })
    },
    handleSizeChange(val) {
      this.page.size = val
      this.refreshTable();
    },
    handleCurrentChange(val) {
      this.page.current = val
      this.refreshTable();
    },
    refresh() {
      this.componentData.entity = this.HaveJson(this.entityCopy)
      this.refreshTable();
    },
    async handleWeave(row) {
      let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS
      fileName = fileName.replace('/word/','')
      const userName = JSON.parse(localStorage.getItem("user")).name;
      //参考vabOnlyOffice组件参数配置
      const { href } = this.$router.resolve({
        path: `/wordEdit`,
        query: {
          url: this.javaApi + "/word/" + fileName,
          isEdit: true,
          fileType: "docx",
          title: fileName,
          lang: 'zh-CN',
          isPrint: true,
          user_id: 1,
          user_name: userName,
          editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName
        }
      })
      window.open(href, '_blank');
    },
    // æƒé™åˆ†é…
    getPower(radio) {
      let power = JSON.parse(sessionStorage.getItem('power'))
      let edit = false
      let up = false
      let res = false
      let sub = false
      let issued = true
      let approve = true
      for (var i = 0; i < power.length; i++) {
        if (power[i].menuMethod == 'upReportFile') {
          edit = true
        }
        if (power[i].menuMethod == 'inReport') {
          up = true
        }
        if (power[i].menuMethod == 'upReportUrl') {
          res = true
        }
        if (power[i].menuMethod == 'writeReport') {
          sub = true
        }
        if (power[i].menuMethod == 'ratifyReport') {
          approve = true
        }
        if (power[i].menuMethod == 'examineReport') {
          issued = true
        }
      }
      if (!approve) {
        this.componentData.do.splice(6, 1)
      }
      if (!issued) {
        this.componentData.do.splice(5, 1)
      }
      if (!sub) {
        this.componentData.do.splice(4, 1)
      }
      if (!res) {
        this.componentData.do.splice(3, 1)
      }
      if (!up) {
        this.componentData.do.splice(2, 1)
      }
      if (!edit) {
        this.componentData.do.splice(0, 1)
      }
    },
    confirmClaim() {
      // console.log(this.$refs.Word.getValue())
    },
    playOrder(num) {
      this.activeFace = num
    },
    async selectAllByOne(row) {
      this.isCopper = row.isCopper
      this.customsInspection = row
      this.activeFace = 2;
      this.examine = 1;
      this.isReport = 1
      this.currentId = parseInt(row.insOrderId)
    },
    download(row) {
      let url = row.urlS ? row.urlS : row.url;
      const link = document.createElement('a');
      link.href = this.javaApi + url;
      link.target = '_blank';
      document.body.appendChild(link);
      link.click();
    },
    // è¿˜åŽŸæ“ä½œ
    handleRestore(row) {
      this.$axios.post(this.$api.insReport.upReportUrl, {
        id: row.id
      }).then(res => {
        if (res.code === 200) {
          this.$message.success('操作成功')
          this.refreshTable('page')
        }
      })
    },
    // å®¡æ ¸æŒ‰é’®
    handleIssued(row) {
      this.currentInfo = row;
      let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS
      let fileType = "docx"
      if (row.tempUrlPdf != null || row.tempUrlPdf === '') {
        fileName = row.tempUrlPdf
        fileType = "pdf"
      }
      fileName = fileName.replace('/word/','')
      const userName = JSON.parse(localStorage.getItem("user")).name;
      this.option = {
        url: this.javaApi + "/word/" + fileName,
        isEdit: false,
        fileType: fileType,
        title: fileName,
        lang: 'zh-CN',
        isPrint: false,
        user_id: 1,
        user_name: userName,
        editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName
      }
      this.issuedVisible = true;
    },
    // æŸ¥çœ‹pdf报告
    viewIssuedPdf(row) {
      this.currentInfo = row;
      let url = row.tempUrlPdf
      if(url){
        url = url.split('.')[0]+'.pdf'
        const link = document.createElement('a');
        link.href = this.javaApi + url;
        link.target = '_blank';
        document.body.appendChild(link);
        link.click();
      }
    },
    // æŸ¥çœ‹æŠ¥å‘Š
    viewIssued(row) {
      this.currentInfo = row;
      let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS
      let fileType = "docx"
      if (row.tempUrlPdf != null || row.tempUrlPdf === '') {
        fileName = row.tempUrlPdf
        fileType = "pdf"
      }
      fileName = fileName.replace('/word/','')
      const userName = JSON.parse(localStorage.getItem("user")).name;
      this.option = {
        url: this.javaApi + "/word/" + fileName,
        isEdit: false,
        fileType: fileType,
        title: fileName,
        lang: 'zh-CN',
        isPrint: false,
        user_id: 1,
        user_name: userName,
        editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName
      }
      this.viewIssuedVisible = true;
    },
    // é€€å›žåˆ°ä»»åŠ¡
    sendBackTask(row) {
      this.$confirm('确认退回到检验任务?退回后需重新提交复核', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.upLoad = true
        this.$axios.post(this.$api.insReport.sendBackTask+'?id='+row.id).then(res => {
          this.upLoad = false
          if (res.code === 201) {
            return
          }
          this.$message.success('退回成功!')
          this.refreshTable('page')
        }).catch(err => {
          this.upLoad = false
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },
    // å®¡æ ¸é€šè¿‡
    submitAddApprover () {
      if (!this.approver) {
        this.$message.error('请选择审批人')
        return
      }
      this.loadingIssued = true;
      this.$axios.post(this.$api.insReport.examineReport, {
        id: this.currentInfo.id,
        userId: this.approver,
        isExamine: 1
      }).then(res => {
        this.loadingIssued = false;
        if (res.code === 201) {
          return
        }
        this.$message.success('提交成功')
        this.refreshTable('page')
        this.currentInfo = null;
        this.addApproverDia = false
        this.issuedVisible = false;
      }).catch(e => {
        this.$message.error('提交失败')
        this.loadingIssued = false;
      })
    },
    closeAddApproverDia () {
      this.addApproverDia = false
      this.approver = ''
    },
    // ç‚¹å‡»é€šè¿‡ï¼Œéœ€è¦é€‰æ‹©æ‰¹å‡†äººå‘˜
    subIssued() {
      this.getAuthorizedPerson()
      this.addApproverDia = true
    },
    // èŽ·å–äººå‘˜åˆ—è¡¨
    getAuthorizedPerson() {
      this.$axios.get(this.$api.user.selectQualityUserList).then(res => {
        let data = []
        let userName = JSON.parse(localStorage.getItem("user")).name;
        res.data.forEach(a => {
          // if(a.name !== userName) {
          data.push({
            label: a.name,
            value: a.id
          })
          // }
        })
        this.approverList = data
      })
    },
    // æ‰¹å‡†æŒ‰é’®
    handleApprove(row) {
      this.currentInfo = row;
      let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS
      let fileType = "docx"
      if (row.tempUrlPdf != null || row.tempUrlPdf === '') {
        fileName = row.tempUrlPdf
        fileType = "pdf"
      }
      fileName = fileName.replace('/word/','')
      const userName = JSON.parse(localStorage.getItem("user")).name;
      this.option = {
        url: this.javaApi + "/word/" + fileName,
        isEdit: false,
        fileType: fileType,
        title: fileName,
        lang: 'zh-CN',
        isPrint: false,
        user_id: 1,
        user_name: userName,
        editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName
      }
      this.approveVisible = true;
    },
    // æ‰¹å‡†é€šè¿‡
    subApprove() {
      this.loadingApprove = true;
      this.$axios.post(this.$api.insReport.ratifyReport, {
        id: this.currentInfo.id,
        isRatify: 1
      }).then(res => {
        this.loadingApprove = false;
        if (res.code == 201) {
          this.$message.error('批准失败')
          return
        }
        this.$message.success('已批准')
        this.refreshTable('page')
        this.currentInfo = null;
        this.approveVisible = false;
      })
    },
    handle (row) {
      this.getAuthorizedPerson()
      this.currentInfo = row;
      this.addVerifyDia = true
    },
    // æäº¤å®¡æ ¸äººæ“ä½œ
    handleSubmit(row) {
      this.loadingVerify = true
      this.$axios.post(this.$api.insReport.writeReport, {
        id: this.currentInfo.id,
        userId: this.verifyUser,
      }).then(res => {
        this.loadingVerify = false
        if (res.code === 201) {
          return
        }
        this.addVerifyDia = false
        this.$message.success('提交成功')
        this.refreshTable('page')
      }).catch(e => {
        this.loadingVerify = false
        this.$message.error('提交失败')
      })
    },
    closeAddVerifyDia () {
      this.addVerifyDia = false
      this.verifyUser = ''
    },
    // å®¡æ ¸ä¸é€šè¿‡åŽŸå› æäº¤
    handleIssuedReason() {
      if (!this.reason) {
        return this.$message.error('请输入原因')
      }
      this.loadingIssuedReason = true;
      this.$axios.post(this.$api.insReport.examineReport, {
        id: this.currentInfo.id,
        isExamine: 0,
        examineTell: this.reason
      }).then(res => {
        this.loadingIssuedReason = false;
        if (res.code === 201) {
          return
        }
        this.$message.success('操作成功')
        this.refreshTable('page')
        this.currentInfo = null;
        this.reason = '';
        this.issuedVisible = false;
        this.issuedReasonVisible = false;
      }).catch(e => {
        this.$message.error('操作失败')
        this.loadingIssuedReason = false;
      })
    },
    // ä¸æ‰¹å‡†åŽŸå› æäº¤
    handleApproveReason() {
      if (!this.reason) {
        return this.$message.error('请输入原因')
      }
      this.loadingApproveReason = true
      this.$axios.post(this.$api.insReport.ratifyReport, {
        id: this.currentInfo.id,
        isRatify: 0,
        examineTell: this.reason
      }).then(res => {
        this.loadingApproveReason = false
        if (res.code === 201) {
          return
        }
        this.$message.success('操作成功')
        this.refreshTable('page')
        this.currentInfo = null;
        this.reason = '';
        this.approveVisible = false;
        this.approveReasonVisible = false;
      }).catch(e => {
        this.$message.error('操作失败')
        this.loadingIssuedReason = false;
      })
    }
  }
}
</script>
<style scoped>
.title {
  height: 60px;
  line-height: 60px;
}
.search {
  background-color: #fff;
  height: 80px;
  display: flex;
  align-items: center;
}
.search_thing {
  display: flex;
  align-items: center;
  height: 50px;
}
.search_label {
  width: 120px;
  font-size: 14px;
  text-align: right;
}
.search_input {
  width: calc(100% - 120px);
}
.table {
  margin-top: 10px;
  background-color: #fff;
  width: calc(100% - 40px);
  height: calc(100% - 60px - 80px - 10px - 40px);
  padding: 20px;
}
.el-form-item {
  margin-bottom: 16px;
}
.full-screen {
  position: absolute;
  right: 52px;
  top: 22px;
}
.btns {
  position: absolute;
  right: 40px;
  top: 50%;
  transform: translate(0, -50%);
  display: flex;
  align-items: center;
}
.fullscreen {
  height: 82vh
}
</style>
src/views/business/unpass/components/PurchaseVerification.vue
@@ -1,10 +1,10 @@
<template>
  <div>
    <el-dialog title="进货验证原始记录" :visible.sync="isShow" width="1000px" :show-close="false" :close-on-click-modal="false"
      style="max-height: 96vh; margin-top: 2vh" :modal-append-to-body="false" :close-on-press-escape="false">
    <el-dialog title="进货验证原始记录" :visible.sync="isShow" width="70%" :show-close="false" :close-on-click-modal="false"
               :modal-append-to-body="false" :close-on-press-escape="false">
      <div class="search">
        <el-form :inline="true" :model="purchaseForm" label-position="right" :rules="purchaseFormRules"
          ref="purchaseForm" class="form-inline" label-width="130px">
          ref="purchaseForm" class="form-inline" label-width="120px">
          <el-row>
            <el-col :span="8">
              <el-form-item label="检验编号:">
@@ -55,50 +55,49 @@
          </h4>
          <div class="title">一、供方产品检测报告的基本信息确认</div>
          <el-form-item label="材料名称:" prop="basicName">
            <el-radio-group v-model="purchaseForm.basicName" :disabled="operationType === 'view'" v-removeAriaHidden>
            <el-radio-group v-model="purchaseForm.basicName" :disabled="operationType === 'view'">
              <el-radio label="1">符合</el-radio>
              <el-radio label="2">不符合</el-radio>
              <el-radio label="3">不适用</el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item label="规格型号:" prop="basicModel">
            <el-radio-group v-model="purchaseForm.basicModel" :disabled="operationType === 'view'" v-removeAriaHidden>
            <el-radio-group v-model="purchaseForm.basicModel" :disabled="operationType === 'view'">
              <el-radio label="1">符合</el-radio>
              <el-radio label="2">不符合</el-radio>
              <el-radio label="3">不适用</el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item label="材料批号:" prop="basicBatchNo">
            <el-radio-group v-model="purchaseForm.basicBatchNo" :disabled="operationType === 'view'" v-removeAriaHidden>
            <el-radio-group v-model="purchaseForm.basicBatchNo" :disabled="operationType === 'view'">
              <el-radio label="1">符合</el-radio>
              <el-radio label="2">不符合</el-radio>
              <el-radio label="3">不适用</el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item label="执行标准:" prop="basicStandard">
            <el-radio-group v-model="purchaseForm.basicStandard" :disabled="operationType === 'view'"
              v-removeAriaHidden>
            <el-radio-group v-model="purchaseForm.basicStandard" :disabled="operationType === 'view'">
              <el-radio label="1">符合</el-radio>
              <el-radio label="2">不符合</el-radio>
              <el-radio label="3">不适用</el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item label="生产日期:" prop="basicDate">
            <el-radio-group v-model="purchaseForm.basicDate" :disabled="operationType === 'view'" v-removeAriaHidden>
            <el-radio-group v-model="purchaseForm.basicDate" :disabled="operationType === 'view'">
              <el-radio label="1">符合</el-radio>
              <el-radio label="2">不符合</el-radio>
              <el-radio label="3">不适用</el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item label="供货数量:" prop="basicNumber">
            <el-radio-group v-model="purchaseForm.basicNumber" :disabled="operationType === 'view'" v-removeAriaHidden>
            <el-radio-group v-model="purchaseForm.basicNumber" :disabled="operationType === 'view'">
              <el-radio label="1">符合</el-radio>
              <el-radio label="2">不符合</el-radio>
              <el-radio label="3">不适用</el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item label="材料颜色:" prop="basicColor">
            <el-radio-group v-model="purchaseForm.basicColor" :disabled="operationType === 'view'" v-removeAriaHidden>
            <el-radio-group v-model="purchaseForm.basicColor" :disabled="operationType === 'view'">
              <el-radio label="1">符合</el-radio>
              <el-radio label="2">不符合</el-radio>
              <el-radio label="3">不适用</el-radio>
@@ -130,7 +129,7 @@
                <el-table-column prop="inspectionItem" label="验证项目" width="300"></el-table-column>
                <el-table-column prop="result" label="验证结果">
                  <template slot-scope="scope">
                    <el-radio-group v-model="scope.row.result" v-removeAriaHidden :disabled="operationType === 'view'">
                    <el-radio-group v-model="scope.row.result" :disabled="operationType === 'view'">
                      <el-radio label="1">符合</el-radio>
                      <el-radio label="2">不符合</el-radio>
                      <el-radio label="3">不适用</el-radio>
@@ -149,9 +148,7 @@
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="$emit('resetPurchaseDialog')">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="handlePurchase" :loading="handlePurchaseLoading"
          v-if="operationType === 'add'">ç¡®
          å®š</el-button>
        <el-button type="primary" @click="handlePurchase" :loading="handlePurchaseLoading" v-if="operationType === 'add'">确定</el-button>
      </span>
    </el-dialog>
    <el-dialog title="待验证项目" :visible.sync="factoryVerifyItemDia" width="1000px"
@@ -247,6 +244,7 @@
  // æ–¹æ³•集合
  methods: {
    async getInsOrder(operationType, item) {
      console.log('operationType----', operationType)
      this.operationType = operationType
      this.info = item
      // æŸ¥è¯¢å·²æäº¤çš„æ•°æ®
@@ -346,7 +344,6 @@
.headLine>>>.el-form-item__content {
  width: 68%;
}
>>>.el-form-item__content {
  display: inline-block;
}
@@ -370,7 +367,7 @@
}
>>>.el-dialog__body {
  max-height: 700px;
  max-height: 600px;
  overflow-y: auto;
}
</style>