zzw
2023-11-17 d6e4a1f930946ecaecaec3a3daa9d07dd370e9b1
编号
4个文件已修改
1个文件已添加
244 ■■■■ 已修改文件
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/utils/GetShowDictList.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/project/service/SoftwareTestOrderService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/commonJS/commonFile.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/project/SoftwareTestOrder.vue 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/pages/view.vue 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/utils/GetShowDictList.java
@@ -17,16 +17,21 @@
    @Autowired
    private  SysDictTypeService sysDictTypeService;
    public  String getShowDictList(String values, String DictTYpe) {
    public String getShowDictList(String values, String DictTYpe, Boolean enter) {
        List<DictDto> userDicts = sysDictTypeService.getUserDicts();
        DictDto testType1Dict = userDicts.stream()
                .filter(c -> c.getDictType().equals(DictTYpe))
                .collect(Collectors.toList()).get(0);
        values = "," + values + ",";
        String result = "";
        int i = 0;
        for (DictItemDto dictItemDto : ((DictLeafDto) testType1Dict).getDataList()) {
            String value = dictItemDto.getDictValue();
            String desc = (values.contains("," + value + ",") ? "☑" : "□") + dictItemDto.getDictLabel();
            i++;
            if (enter && i < ((DictLeafDto) testType1Dict).getDataList().size()) {
                desc = desc + "\r\n";
            }
            result = result + desc;
        }
        return result;
modules/mainPart/src/main/java/com/zt/life/modules/project/service/SoftwareTestOrderService.java
@@ -17,6 +17,7 @@
import com.zt.life.modules.sysBaseInfo.service.TestAgencyInfoService;
import com.zt.life.sys.service.SysOssConfigService;
import com.zt.modules.coderule.service.SysCodeRuleService;
import com.zt.modules.oss.service.SysOssService;
import com.zt.modules.sys.service.SysDictTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -62,6 +63,9 @@
    @Autowired
    private SysOssConfigService sysOssConfigService;
    @Autowired
    private SysOssService sysOssService;
    /**
     * 分页查询
     *
@@ -70,6 +74,9 @@
     */
    public List<SoftwareTestOrder> page(QueryFilter queryFilter) {
        List<SoftwareTestOrder> list = baseDao.getList(queryFilter.getQueryParams());
        if (list != null && list.size() > 0) {
            sysOssService.setListOsses(list, "test_order");
        }
        return list;
    }
@@ -215,36 +222,35 @@
            dataObj.getSoftwareTestOrder().setTestType22(testType22);
            //通用字典列表字符串生成
            String criticalLevelStr = getShowDictList.getShowDictList(dataObj.getProject().getCriticalLevel().toString(), "critical_level");
            String criticalLevelStr = getShowDictList.getShowDictList(dataObj.getProject().getCriticalLevel().toString(), "critical_level", false);
            dataObj.getSoftwareTestOrder().setCriticalLevelStr(criticalLevelStr);
           for (SoftwareTestOrderMeasured measured : dataObj.getMeasuredList()) {
               String value = measured.getIsMeasured();
               String isMeasuredStr = getShowDictList.getShowDictList(value, "is_or_not");
                String isMeasuredStr = getShowDictList.getShowDictList(value, "is_or_not", false);
               measured.setIsMeasuredStr(isMeasuredStr);
           }
            String sortwareTypeStr = getShowDictList.getShowDictList(dataObj.getProject().getSoftwareType(), "software_type");
            String sortwareTypeStr = getShowDictList.getShowDictList(dataObj.getProject().getSoftwareType(), "software_type", false);
            dataObj.getSoftwareTestOrder().setSortwareTypeStr(sortwareTypeStr);
            String testBasisStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getTestBasis(), "test_basis");
            String testBasisStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getTestBasis(), "test_basis", false);
            dataObj.getSoftwareTestOrder().setTestBasisStr(testBasisStr);
            String testStandardStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getTestStandard(), "test_standard");
            String testStandardStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getTestStandard(), "test_standard", true);
            dataObj.getSoftwareTestOrder().setTestStandardStr(testStandardStr);
            String testLevelStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getTestLevel().toString(), "test_level");
            String testLevelStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getTestLevel().toString(), "test_level", false);
            dataObj.getSoftwareTestOrder().setTestLevelStr(testLevelStr);
            String test =dataObj.getSoftwareTestOrder().getOtherRequire();
            String otherRequireStr = getShowDictList.getShowDictList(test, "other_require");
            String otherRequireStr = getShowDictList.getShowDictList(test, "other_require", false);
            dataObj.getSoftwareTestOrder().setOtherRequireStr(otherRequireStr);
            String articleNatureStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getArticleNature(), "article_nature");
            String articleNatureStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getArticleNature(), "article_nature", false);
            dataObj.getSoftwareTestOrder().setArticleNatureStr(articleNatureStr);
            String sampleStatusStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getSampleStatus(), "is_or_not");
            String sampleStatusStr = getShowDictList.getShowDictList(dataObj.getSoftwareTestOrder().getSampleStatus(), "is_or_not", false);
            dataObj.getSoftwareTestOrder().setSampleStatusStr(sampleStatusStr);
            WordFile wordFile = new WordFile();
web/src/commonJS/commonFile.js
@@ -106,7 +106,7 @@
}
function setAccessoryFormat2(row, pageMarker,that) {
function setAccessoryFormatSingle(row, pageMarker,that) {
  if (row.accessoryMap) {
    let data = '';
    for (let key in row.accessoryMap) {
@@ -119,6 +119,7 @@
      }
      let fileId = /_zt_oss_id=(\d+)/.exec(url);
      fileId = fileId ? fileId[1] : ''; // 获取匹配的内容,如果为空则赋值为空字符串
      alert(fileId)
      let pageMarker2 = pageMarker
      if (suffixName == 'pdf' || suffixName == 'doc' || suffixName == 'docx' || suffixName == 'jpg' || suffixName == 'jpeg' || suffixName == 'png' || suffixName == 'xls' || suffixName == 'xlsx') {
        if (suffixName == 'pdf') {
@@ -134,6 +135,7 @@
          pageMarker2 = pageMarker + '-xls'
          that.xlsName =fileName;
        }
        alert(pageMarker2)
        return openPreviewDialog(fileId, suffixName, document.getElementById(pageMarker2), pageMarker2);
      } else {
        return alert("文件类型不支持预览")
@@ -145,7 +147,7 @@
  }
}
function setAccessoryFormat3(row, pageMarker,that) {
function setAccessoryFormatByForm(row, pageMarker,that) {
  if (row.files.groups[0].fields[0].files[0]) {
    let data = '';
    let url = row.files.groups[0].fields[0].files[0].url;
@@ -182,4 +184,4 @@
  }
}
export {setAccessoryFormatComm, setAccessoryFormat2, setAccessoryFormat3}
export {setAccessoryFormatComm, setAccessoryFormatSingle, setAccessoryFormatByForm}
web/src/views/modules/project/SoftwareTestOrder.vue
@@ -35,8 +35,10 @@
          <zt-table-column-dict prop="testStandard" min-width="420" label="测试标准" dict="test_standard"/>
          <zt-table-column-dict prop="articleNature" width="120px" label="物品性质" dict="article_nature"/>
          <zt-table-column-handle :table="table" width="150px" edit-perm="project:update" delete-perm="project::delete">
            <template slot-scope="scope">
              <zt-table-button @click="testOlderView()">预览</zt-table-button>
            <template v-slot="{ row }">
              <zt-table-button size="small" type="primary"
                               @click="preview(row)">预览
              </zt-table-button>
            </template>
          </zt-table-column-handle>
        </el-table>
@@ -46,28 +48,9 @@
                       @refreshDataList="table.query"
                       @setProjectInfo="openAddWin">
        </ProjectSelect>
      </zt-table-wraper>
      <div v-show="isOpenDocPreviewDialog" class="preview-dialog">
        <button @click="closePreviewDialog('doc')" class="close-button">关闭</button>
        <div id="SoftwareTestOrder-doc" style="overflow: auto; width: 100%; height: 90%;"></div>
        <div class="file-name">{{ docName }}</div>
      </div>
      <div v-show="isOpenPdfPreviewDialog" class="preview-dialog">
        <button @click="closePreviewDialog('pdf')" class="close-button">关闭</button>
        <iframe id="SoftwareTestOrder-pdf" src="" style="margin:0;padding:0;width:100%;height:90%;"></iframe>
        <div class="file-name">{{ pdfName }}</div>
      </div>
      <div v-show="isOpenImgPreviewDialog" class="preview-dialog">
        <button @click="closePreviewDialog('img')" class="close-button">关闭</button>
        <img id="SoftwareTestOrder-img" src="" style="margin:0;padding:0;width:100%;height:90%;">
        <div class="file-name">{{ imgName }}</div>
      </div>
      <div v-show="isOpenXlsPreviewDialog" class="preview-dialog">
        <button @click="closePreviewDialog('xls')" class="close-button">关闭</button>
        <div id="SoftwareTestOrder-xls" style="margin:0;padding:0;width:100%;height:90%;"></div>
        <div class="file-name">{{ xlsName }}</div>
      </div>
      <View ref="view22" :pageMarkerfun="SoftwareTestOrder">
      </View>
    </div>
  </el-card>
</template>
@@ -75,19 +58,11 @@
<script>
import AddOrUpdate from './SoftwareTestOrder-AddOrUpdate'
import ProjectSelect from "./Project-select.vue"
import {setAccessoryFormat2} from '@/commonJS/commonFile'
import View from '@/views/pages/view.vue'
export default {
  data() {
    return {
      isOpenDocPreviewDialog:false,
      isOpenPdfPreviewDialog:false,
      isOpenImgPreviewDialog:false,
      isOpenXlsPreviewDialog:false,
      docName:'',
      pdfName:'',
      imgName:'',
      xlsName:'',
      dataForm: {
        testBasis: '',
        testType: '',
@@ -98,7 +73,8 @@
  },
  components: {
    AddOrUpdate,
    ProjectSelect
    ProjectSelect,
    View
  },
  methods: {
    add() {
@@ -108,32 +84,11 @@
      console.log(row.id, 'row.id')
      this.$refs.addOrUpdate.$refs.dialog.init(null, {id: null, projectId: row.id})
    },
    testOlderView(row){
      return setAccessoryFormat2(row, 'SoftwareTestOrder', this)
    },
    closePreviewDialog(file) {
      if (file == 'doc') {
        this.docName = '';
        this.isOpenDocPreviewDialog = false; // 关闭弹窗
        const docElement = document.getElementById('SoftwareTestOrder-doc');
        docElement.innerHTML = '';
      } else if (file == 'pdf') {
        this.pdfName = '';
        this.isOpenPdfPreviewDialog = false;
        let iframe = document.getElementById('SoftwareTestOrder-pdf');
        iframe.src = '';
      } else if (file == 'img') {
        this.imgName = '';
        this.isOpenImgPreviewDialog = false;
        let img = document.getElementById('SoftwareTestOrder-img');
        img.src = '';
      } else if (file == 'xls') {
        this.xlsName = '';
        this.isOpenXlsPreviewDialog = false;
        let excelElement = document.getElementById('SoftwareTestOrder-xls');
        excelElement.innerHTML = '';
    preview(row){
      console.log(row,'preview(row)');
      this.$refs.view22.setAccessoryFormatSingle(row)
      }
    },
  }
}
</script>
web/src/views/pages/view.vue
New file
@@ -0,0 +1,132 @@
<template>
  <div>
    <div v-show="isOpenDocPreviewDialog" class="preview-dialog">
      <button @click="closePreviewDialog('doc')" class="close-button">关闭</button>
      <div :id="pageMarkerfun+'-doc'" style="overflow: auto; width: 100%; height: 90%;"></div>
      <div class="file-name">{{ docName }}</div>
    </div>
    <div v-show="isOpenPdfPreviewDialog" class="preview-dialog">
      <button @click="closePreviewDialog('pdf')" class="close-button">关闭</button>
      <iframe :id="pageMarkerfun+'-pdf'" src="" style="margin:0;padding:0;width:100%;height:90%;"></iframe>
      <div class="file-name">{{ pdfName }}</div>
    </div>
    <div v-show="isOpenImgPreviewDialog" class="preview-dialog">
      <button @click="closePreviewDialog('img')" class="close-button">关闭</button>
      <img :id="pageMarkerfun+'-img'" src="" style="margin:0;padding:0;width:100%;height:90%;">
      <div class="file-name">{{ imgName }}</div>
    </div>
    <div v-show="isOpenXlsPreviewDialog" class="preview-dialog">
      <button @click="closePreviewDialog('xls')" class="close-button">关闭</button>
      <div :id="pageMarkerfun+'-xls'" style="margin:0;padding:0;width:100%;height:90%;"></div>
      <div class="file-name">{{ xlsName }}</div>
    </div>
  </div>
</template>
<script>
  import {setAccessoryFormatSingle} from '@/commonJS/commonFile'
  export default {
    props: {
      pageMarkerfun: {
        default: ''
      }
    },
    data() {
      return {
        isOpenDocPreviewDialog: false,
        isOpenPdfPreviewDialog: false,
        isOpenImgPreviewDialog: false,
        isOpenXlsPreviewDialog: false,
        docName: '',
        pdfName: '',
        imgName: '',
        xlsName: ''
      }
    },
    created() {
      this.$EventBus.$on(this.pageMarkerfun+'-doc', () => {
        this.isOpenDocPreviewDialog = true
      })
      this.$EventBus.$on(this.pageMarkerfun +'-pdf', () => {
        this.isOpenPdfPreviewDialog = true
      })
      this.$EventBus.$on(this.pageMarkerfun +'-img', () => {
        this.isOpenImgPreviewDialog = true
      })
      this.$EventBus.$on(this.pageMarkerfun +'-xls', () => {
        this.isOpenXlsPreviewDialog = true
      })
    },
    methods: {
      setAccessoryFormatSingle(row) {
        console.log(row, 'setAccessoryFormatSingle(row)');
        return setAccessoryFormatSingle(row, this.pageMarkerfun, this)
      },
      closePreviewDialog(file) {
        if (file == 'doc') {
          this.docName = ''
          this.isOpenDocPreviewDialog = false // 关闭弹窗
          const docElement = document.getElementById(this.pageMarkerfun +'-doc')
          docElement.innerHTML = ''
        } else if (file == 'pdf') {
          this.pdfName = ''
          this.isOpenPdfPreviewDialog = false;
          let iframe = document.getElementById(this.pageMarkerfun +'-pdf')
          iframe.src = ''
        } else if (file == 'img') {
          this.imgName = '';
          this.isOpenImgPreviewDialog = false;
          let img = document.getElementById(this.pageMarkerfun +'-img')
          img.src = ''
        } else if (file == 'xls') {
          this.xlsName = ''
          this.isOpenXlsPreviewDialog = false;
          let excelElement = document.getElementById(this.pageMarkerfun+'-xls')
          excelElement.innerHTML = ''
        }
      }
    }
  }
</script>
<style>
  /* 弹窗样式 */
  .preview-dialog {
    z-index: 100;
    width: 1200px;
    height: 700px;
    position: fixed;
    top: 120px;
    right: 10px;
    background: gray;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
  }
  .close-button {
    position: absolute;
    top: 10px;
    right: 10px;
    border: none;
    font-size: 18px;
    color: snow;
    cursor: pointer;
    background: #062944;
  }
  .file-name {
    position: absolute;
    top: 10px;
    left: 50%;
    transform: translateX(-50%);
    border: none;
    font-size: 18px;
    color: snow;
    cursor: pointer;
    background: #062944;
  }
  img {
    object-fit: contain;
  }
</style>