zhuo
2025-03-19 cf4d0c947dbe409871910b92d26ba7513e2b4f4e
Merge remote-tracking branch 'origin/dev' into dev
已修改4个文件
226 ■■■■■ 文件已修改
src/components/Table/lims-table.vue 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/index/scroll-paging.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionTask/index.vue 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Table/lims-table.vue
@@ -12,7 +12,8 @@
      <el-table-column v-for="(item, index) in column" :key="index" :column-key="item.columnKey"
        :filter-method="item.filterHandler" :filter-multiple="item.filterMultiple" :filtered-value="item.filteredValue"
        :filters="item.filters" :fixed="item.fixed" :label="item.label" :prop="item.prop"
        :show-overflow-tooltip="true"
                       :show-overflow-tooltip="item.dataType === 'action' || item.dataType === 'slot' ? false : true"
                       :min-width="item.dataType == 'action' ? btnWidth : getTitleWidth(item)"
        :sortable="item.sortable ? true : false" :type="item.type" :width="item.dataType == 'action' ? btnWidth : getTitleWidth(item)" align="center">
        <!-- <div class="123" v-if="item.type == ''"> -->
        <template v-if="item.hasOwnProperty('colunmTemplate')" :slot="item.colunmTemplate" slot-scope="scope">
@@ -307,11 +308,13 @@
    getTitleWidth(row) {
      if (row.label.includes('时间') || row.label.includes('编号') || row.label.includes('样品名称') || row.label.includes('零件')) {
        return 160
      } else if (row.label.includes('操作')) {
        return row.width
      } else {
        const span = document.createElement('span');
        span.innerText = row.label;
        document.body.appendChild(span);
        const width = `${span.offsetWidth + 30}px`;
        const width = `${span.offsetWidth + 50}px`;
        document.body.removeChild(span);
        return width;
@@ -464,28 +467,6 @@
          };
        }
      }
      // // 特殊的合并行
      // if (
      //   this.data.spanConfig != undefined &&
      //   this.data.spanConfig.special &&
      //   this.data.spanConfig.special.main &&
      //   this.data.spanConfig.special.rows &&
      //   this.data.spanConfig.special.rows.length > 0
      // ) {
      //   let i = null;
      //   let obj = this.data.spanConfig.special.rows.find((item, index) => {
      //     i = index;
      //     return item.index == columnIndex;
      //   });
      //   if (obj) {
      //     const _row = this.specialSpanList[i].arr[rowIndex];
      //     const _col = _row > 0 ? 1 : 0;
      //     return {
      //       rowspan: _row,
      //       colspan: _col,
      //     };
      //   }
      // }
    },
  },
};
@@ -501,7 +482,7 @@
  cursor: pointer;
}
>>>.cell {
  padding: 0px !important;
  padding: 0 !important;
}
.cell {
  white-space: nowrap;
src/components/index/scroll-paging.vue
@@ -34,7 +34,6 @@
      deep:true,
      handler(){
        this.isLoding = false
        console.log(this.isLoding)
      }
    }
  },
src/views/business/inspectionTask/index.vue
@@ -50,7 +50,50 @@
        </div>
        <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading"
          :rowClassName="rowClassName" :height="'calc(100vh - 300px)'" @pagination="pagination"
          key="tableData0"></lims-table>
          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>
            <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>
            <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>
            <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">原始记录</el-button>
            <el-popover placement="bottom" trigger="hover" style="margin-left: 6px">
              <template #reference>
                <el-button link type="text" size="small">更多</el-button>
              </template>
              <div>
                <el-button :disabled="scope.row.insState != 3" 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" size="small" type="text">上传</el-button>
                </el-upload>
                <el-button :disabled="scope.row.insState != 3" type="text" size="small" @click="handleRestore(scope.row)">还原</el-button>
                <el-button :disabled="scope.row.insState != 3" type="text" size="small" @click="handleIssued(scope.row)">查看报告</el-button>
              </div>
            </el-popover>
          </div>
        </lims-table>
      </div>
    </div>
    <el-dialog :visible.sync="claimVisible" title="提示" width="400px">
@@ -184,6 +227,7 @@
} from "@/api/business/inspectionTask.js";
import { mapGetters } from "vuex";
import {getRetestResult} from "@/api/business/rawMaterialOrder";
import {upReportUrl} from "@/api/business/insReport";
export default {
  name: 'InspectionTask',
  components: {
@@ -363,76 +407,12 @@
        { label: "检验开始时间", prop: "insTime", width: "140px" },
        { label: "理由", prop: "verifyTell", width: "140px" },
        {
          dataType: "action",
          fixed: "right",
          label: "操作",
          operation: [
            {
              name: "数据查看",
              type: "text",
              clickFun: (row) => {
                this.handleDataLook(row);
              },
            },
            {
              name: "修改检验值",
              type: "text",
              clickFun: (row) => {
                this.editInspection(row);
              },
              disabled: (row) => {
                return (row.userName == null || row.insState == 3 || row.insState == 5) && this.checkPermi(['update:product:onPlan'])
              },
            },
            // {
            //   name: "查看工时",
            //   type: "text",
            //   clickFun: (row) => {
            //     this.viewManHour(row);
            //   },
            //   showHide: (row) => {
            //     return this.checkPermi(['get:working:hours:byOrder'])
            //   },
            // },
            {
              name: "检验",
              type: "text",
              clickFun: (row) => {
                this.handleInspection(row);
              },
              disabled: (row) => {
                return (
                  row.userName == null ||
                  row.insState == 3 ||
                  row.insState == 5 ||
                  (row.userName && !row.userName.includes(this.nickName))
                );
              },
            },
            {
              name: "交接",
              type: "text",
              clickFun: (row) => {
                this.handleConnect(row);
              },
              disabled: (row) => {
                return (
                  row.userName == null ||
                  row.insState == 5 ||
                  row.insState == 3 ||
                  (row.userName && !row.userName.includes(this.nickName))
                );
              },
            },
            {
              name: "原始记录",
              type: "text",
              clickFun: (row) => {
                this.viewInspectInfo(row);
              },
            },
          ],
        },
          dataType: "slot",
          slot: "action",
          width: '340px',
          label: "操作"
        }
      ],
      page: {
        total: 0,
@@ -638,6 +618,56 @@
      this.page.current = 1;
      this.queryParams.typeSource = this.tabIndex;
      this.getList();
    },
    // 下载报告
    download(row) {
      let url = (row.urlS===null||row.urlS==='')?row.url:row.urlS
      const link = document.createElement('a');
      link.href = this.javaApi + url;
      link.target = '_blank';
      document.body.appendChild(link);
      link.click();
    },
    // 还原操作
    handleRestore(row) {
      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) {
      // todo: 查看报告组件
      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;
    },
    // 查看产业链信息
    openInfoDialog(row) {
@@ -913,6 +943,29 @@
        });
      });
    },
    beforeUpload (file) {
      if (file.size > 1024 * 1024 * 10) {
        this.$message.error('上传文件不超过10M');
        this.$refs.upload.clearFiles()
        return false;
      } else {
        return true;
      }
    },
    onError(error, file, fileList, index) {
      this.$message.error('文件上传失败,请重试');
    },
    onExceed() {
      this.$message.warning("超出文件个数");
    },
    handleSuccessUp(response) {
      if (response.code == 200) {
        this.$refs.upload.clearFiles()
        this.$message.success("上传成功");
      } else {
        this.$message.error(response.message);
      }
    },
  },
};
</script>
src/views/index.vue
@@ -353,7 +353,6 @@
        month: month,
      }
      currentUserWorkHourCount(params).then(res => {
        console.log(res)
        this.totalHour = res.data.totalHour
        this.materialPieSeries[0].data[0].value = res.data.subsidiaryHour
        this.materialPieSeries[0].data[1].value = res.data.yieldHour