|
@@ -1,13 +1,13 @@
|
|
|
<template>
|
|
|
<div class="hc-page-layout-box">
|
|
|
- <div class="hc-layout-left-box" :style="'width:' + leftWidth + 'px;'">
|
|
|
+ <div :style="'width:' + leftWidth + 'px;'" class="hc-layout-left-box">
|
|
|
<div class="hc-project-box">
|
|
|
<div class="hc-project-icon-box">
|
|
|
<HcIcon name="stack"/>
|
|
|
</div>
|
|
|
<div class="ml-2 project-name-box">
|
|
|
- <span class="text-xl text-cut project-alias">{{projectInfo['projectAlias']}}</span>
|
|
|
- <div class="text-xs text-cut project-name">{{projectInfo['name']}}</div>
|
|
|
+ <span class="text-xl text-cut project-alias">{{ projectInfo['projectAlias'] }}</span>
|
|
|
+ <div class="text-xs text-cut project-name">{{ projectInfo['name'] }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="hc-tree-box">
|
|
@@ -15,9 +15,9 @@
|
|
|
<TestTree
|
|
|
:autoExpandKeys="treeAutoExpandKeys"
|
|
|
:projectId="projectId"
|
|
|
+ :tenantId="userInfo?.tenant_id"
|
|
|
:wbsTempId="projectInfo?.referenceWbsTemplateIdTrial"
|
|
|
:wbsType="2"
|
|
|
- :tenantId="userInfo?.tenant_id"
|
|
|
@nodeTap="wbsElTreeClick"/>
|
|
|
</el-scrollbar>
|
|
|
</div>
|
|
@@ -28,43 +28,49 @@
|
|
|
<HcCard :scrollbar="false" actionSize="lg">
|
|
|
<template #header>
|
|
|
<HcTooltip keys="tentative_detect_test_add">
|
|
|
- <el-button type="primary" hc-btn :disabled="!primaryKeyId" @click="addFormModalClick">
|
|
|
+ <el-button :disabled="!primaryKeyId" hc-btn type="primary" @click="addFormModalClick">
|
|
|
<HcIcon name="add-circle"/>
|
|
|
<span>新增</span>
|
|
|
</el-button>
|
|
|
</HcTooltip>
|
|
|
<HcTooltip keys="tentative_detect_test_copy">
|
|
|
- <el-button hc-btn :disabled="tableCheckedKeys.length <= 0" :loading="copyLoading" @click="copyDataClick">
|
|
|
+ <el-button :disabled="tableCheckedKeys.length <= 0" :loading="copyLoading" hc-btn
|
|
|
+ @click="copyDataClick">
|
|
|
<HcIcon name="file-copy-2"/>
|
|
|
<span>复制</span>
|
|
|
</el-button>
|
|
|
</HcTooltip>
|
|
|
<HcTooltip keys="tentative_detect_test_del">
|
|
|
- <el-button hc-btn :disabled="tableCheckedKeys.length <= 0" :loading="removeLoading" @click="delModalClick">
|
|
|
+ <el-button :disabled="tableCheckedKeys.length <= 0" :loading="removeLoading" hc-btn
|
|
|
+ @click="delModalClick">
|
|
|
<HcIcon name="delete-bin-2"/>
|
|
|
<span>删除</span>
|
|
|
</el-button>
|
|
|
</HcTooltip>
|
|
|
<HcTooltip keys="tentative_detect_test_print">
|
|
|
- <el-button hc-btn :disabled="tableCheckedKeys.length <= 0" :loading="printPdfLoading" @click="printPdfClick">
|
|
|
+ <el-button :disabled="tableCheckedKeys.length <= 0" :loading="printPdfLoading" hc-btn
|
|
|
+ @click="printPdfClick">
|
|
|
<HcIcon name="printer"/>
|
|
|
<span>批量打印</span>
|
|
|
</el-button>
|
|
|
</HcTooltip>
|
|
|
<HcTooltip keys="tentative_detect_test_report">
|
|
|
- <el-button hc-btn :disabled="tableCheckedKeys.length <= 0" :loading="reportPdfLoading" @click="reportPdfClick">
|
|
|
+ <el-button :disabled="tableCheckedKeys.length <= 0" :loading="reportPdfLoading" hc-btn
|
|
|
+ @click="reportPdfClick">
|
|
|
<HcIcon name="send-plane-2"/>
|
|
|
<span>批量上报</span>
|
|
|
</el-button>
|
|
|
</HcTooltip>
|
|
|
<HcTooltip keys="tentative_detect_test_quit">
|
|
|
- <el-button hc-btn :disabled="tableCheckedKeys.length <= 0" :loading="quitPdfLoading" @click="quitPdfClick">
|
|
|
+ <el-button :disabled="tableCheckedKeys.length <= 0" :loading="quitPdfLoading" hc-btn
|
|
|
+ @click="quitPdfClick">
|
|
|
<HcIcon name="delete-bin-3"/>
|
|
|
<span>批量废除</span>
|
|
|
</el-button>
|
|
|
</HcTooltip>
|
|
|
<HcTooltip keys="tentative_detect_test_null">
|
|
|
- <el-button hc-btn :disabled="tableCheckedKeys.length <= 0" :loading="printNullPdfLoading" @click="printNullPdfClick">
|
|
|
+ <el-button :disabled="tableCheckedKeys.length <= 0" :loading="printNullPdfLoading" hc-btn
|
|
|
+ @click="printNullPdfClick">
|
|
|
<HcIcon name="printer"/>
|
|
|
<span>打印空表</span>
|
|
|
</el-button>
|
|
@@ -82,18 +88,21 @@
|
|
|
</template>
|
|
|
<template #search>
|
|
|
<div class="w-40">
|
|
|
- <el-input v-model="searchForm.trialUserName" placeholder="请输入试验人员" clearable @keyup="keyUpEvent"/>
|
|
|
+ <el-input v-model="searchForm.trialUserName" clearable placeholder="请输入试验人员"
|
|
|
+ @keyup="keyUpEvent"/>
|
|
|
</div>
|
|
|
<div class="w-40 ml-2">
|
|
|
- <el-select v-model="searchForm.queryStatus" placeholder="请选择是否合格" clearable>
|
|
|
- <el-option v-for="item in qualifiedData" :key="item.value" :label="item['label']" :value="item['value']"/>
|
|
|
+ <el-select v-model="searchForm.queryStatus" clearable placeholder="请选择是否合格">
|
|
|
+ <el-option v-for="item in qualifiedData" :key="item.value" :label="item['label']"
|
|
|
+ :value="item['value']"/>
|
|
|
</el-select>
|
|
|
</div>
|
|
|
<div class="w-64 ml-2">
|
|
|
<HcDatePicker :dates="betweenTime" clearable @change="betweenTimeUpdate"/>
|
|
|
</div>
|
|
|
<div class="w-72 ml-2">
|
|
|
- <el-input v-model="searchForm.queryValue" placeholder="请输入项目名称关键字" clearable @keyup="keyUpEvent"/>
|
|
|
+ <el-input v-model="searchForm.queryValue" clearable placeholder="请输入项目名称关键字"
|
|
|
+ @keyup="keyUpEvent"/>
|
|
|
</div>
|
|
|
<div class="ml-2">
|
|
|
<el-button type="primary" @click="searchClick">
|
|
@@ -102,41 +111,48 @@
|
|
|
</el-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
- <HcTable ref="tableRef" :column="tableColumn" :datas="tableData" :loading="tableLoading" isCheck @selection-change="tableSelection">
|
|
|
+ <HcTable ref="tableRef" :column="tableColumn" :datas="tableData" :loading="tableLoading" isCheck
|
|
|
+ @selection-change="tableSelection">
|
|
|
<template #recordNo="{row}">
|
|
|
- <span class="text-link" @click="tableRowEdit(row,'1')">{{row?.recordNo}}</span>
|
|
|
+ <span class="text-link" @click="tableRowEdit(row,'1')">{{ row?.recordNo }}</span>
|
|
|
</template>
|
|
|
<template #reportNo="{row}">
|
|
|
- <span class="text-link" @click="tableRowEdit(row,'2')">{{row?.reportNo}}</span>
|
|
|
+ <span class="text-link" @click="tableRowEdit(row,'2')">{{ row?.reportNo }}</span>
|
|
|
</template>
|
|
|
<template #trialProjectName="{row}">
|
|
|
- <span class="text-link font-bold" @click="tableRowPdf(row)">{{row?.trialProjectName}}</span>
|
|
|
+ <span class="text-link font-bold" @click="tableRowPdf(row)">{{ row?.trialProjectName }}</span>
|
|
|
</template>
|
|
|
<template #taskStatus="{row}">
|
|
|
<!-- <el-tag :type="`${row.status === 2 ? 'success' : row.status === 0 ? 'warning' : row.status === 1 ? 'danger' : 'info'}`" -->
|
|
|
- <el-tag :type="`${row.taskStatus === '已审批' ? 'success' : row.taskStatus === '待审批' ? 'warning' : row.taskStatus === '已废除' ? 'danger' : 'info'}`"
|
|
|
- class="mx-1" effect="dark" v-if="row['taskStatus']">{{row['taskStatus']}}</el-tag>
|
|
|
+ <el-tag
|
|
|
+ v-if="row['taskStatus']"
|
|
|
+ :type="`${row.taskStatus === '已审批' ? 'success' : row.taskStatus === '待审批' ? 'warning' : row.taskStatus === '已废除' ? 'danger' : 'info'}`"
|
|
|
+ class="mx-1" effect="dark">{{ row['taskStatus'] }}
|
|
|
+ </el-tag>
|
|
|
</template>
|
|
|
<template #detectionCategory="{row}">
|
|
|
<!-- <span>{{getArrKeyValue(categoryData, 'dictKey', 'dictValue', row.detectionCategory)}}</span> -->
|
|
|
- <span>{{row.detectionCategoryName}}</span>
|
|
|
+ <span>{{ row.detectionCategoryName }}</span>
|
|
|
</template>
|
|
|
<template #isUploadCertificate="{row}">
|
|
|
<!-- <span>{{row.isUploadCertificate == 0 ? '是':row.isUploadCertificate == -1?'' : '否'}}</span> -->
|
|
|
- <span>{{row.isUploadCertificateName}}</span>
|
|
|
+ <span>{{ row.isUploadCertificateName }}</span>
|
|
|
</template>
|
|
|
<template #contractId="{row}">
|
|
|
- <span>{{contractInfo?.name}}</span>
|
|
|
+ <span>{{ contractInfo?.name }}</span>
|
|
|
</template>
|
|
|
<template #detectionResult="{row}">
|
|
|
- <span>{{row.detectionResultName }}</span>
|
|
|
+ <span>{{ row.detectionResultName }}</span>
|
|
|
</template>
|
|
|
<template #action="{row}">
|
|
|
<HcTooltip keys="tentative_detect_test_annex">
|
|
|
- <el-button type="primary" size="small" plain @click="viewAttachmentModalClick(row)">附件</el-button>
|
|
|
+ <el-button plain size="small" type="primary" @click="viewAttachmentModalClick(row)">附件
|
|
|
+ </el-button>
|
|
|
</HcTooltip>
|
|
|
<HcTooltip keys="tentative_detect_test_info">
|
|
|
- <el-button type="primary" size="small" plain @click="samplingRecordModalClick(row)">样品信息</el-button>
|
|
|
+ <el-button plain size="small" type="primary" @click="samplingRecordModalClick(row)">
|
|
|
+ 样品信息
|
|
|
+ </el-button>
|
|
|
</HcTooltip>
|
|
|
</template>
|
|
|
</HcTable>
|
|
@@ -147,25 +163,29 @@
|
|
|
</div>
|
|
|
|
|
|
<!--查看附件-->
|
|
|
- <HcDialog :show="viewAttachmentModal" title="查看附件" widths="70rem" :footer="false" isTable @close="viewAttachmentModalClose">
|
|
|
+ <HcDialog :footer="false" :show="viewAttachmentModal" isTable title="查看附件" widths="70rem"
|
|
|
+ @close="viewAttachmentModalClose">
|
|
|
<template #extra>
|
|
|
<HcNewSwitch :datas="tabTypeTab" :keys="tabTypeKey" @change="tabTypeChange"/>
|
|
|
</template>
|
|
|
- <div class="hc-switch-tab-content" v-loading="viewAttachmentLoading">
|
|
|
+ <div v-loading="viewAttachmentLoading" class="hc-switch-tab-content">
|
|
|
<div class="h-full w-full flex">
|
|
|
- <div class="pdf-file-list-box" v-if="viewAttachmentData.length>0">
|
|
|
- <template v-for="item in viewAttachmentData" >
|
|
|
- <div class="file-item" :class="[item.isCheck ? 'cur' : '']" @click="viewCurFile(item)">{{item.fileName||''}}</div>
|
|
|
+ <div v-if="viewAttachmentData.length>0" class="pdf-file-list-box">
|
|
|
+ <template v-for="item in viewAttachmentData">
|
|
|
+ <div :class="[item.isCheck ? 'cur' : '']" class="file-item" @click="viewCurFile(item)">
|
|
|
+ {{ item.fileName || '' }}
|
|
|
+ </div>
|
|
|
</template>
|
|
|
</div>
|
|
|
- <div class="pdf-file-list-box" v-else>
|
|
|
- <HcNoData></HcNoData>
|
|
|
+ <div v-else class="pdf-file-list-box">
|
|
|
+ <HcNoData></HcNoData>
|
|
|
</div>
|
|
|
- <iframe width='80%' height='100%' frameborder='1' :src="attachmentPdfUrl" v-if="attachmentPdfUrl"/>
|
|
|
- <div class="hc-no-table-form" >
|
|
|
+ <iframe v-if="attachmentPdfUrl" :src="attachmentPdfUrl" frameborder='1' height='100%' width='80%'/>
|
|
|
+ <div class="hc-no-table-form">
|
|
|
<div class="table-form-no">
|
|
|
- <HcDragUpload @progress="uploadprogress" @finished="uploadFinished" :datas="uploadData" :fileList="fileListData" @delFile="delFileData"/>
|
|
|
-
|
|
|
+ <HcDragUpload :datas="uploadData" :fileList="fileListData" @delFile="delFileData"
|
|
|
+ @finished="uploadFinished" @progress="uploadprogress"/>
|
|
|
+
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -173,12 +193,18 @@
|
|
|
</HcDialog>
|
|
|
|
|
|
<!--查看样品信息-->
|
|
|
- <HcDialog :show="samplingRecordModal" title="查看样品信息" widths="60%" :footer="false" isTable @close="samplingRecordModalClose">
|
|
|
- <HcTable :column="samplingTableColumn" :datas="samplingTableData" :loading="samplingTableLoading" :isIndex="false"></HcTable>
|
|
|
+ <HcDialog :footer="false" :show="samplingRecordModal" isTable title="查看样品信息" widths="60%"
|
|
|
+ @close="samplingRecordModalClose">
|
|
|
+ <HcTable :column="samplingTableColumn" :datas="samplingTableData" :isIndex="false"
|
|
|
+ :loading="samplingTableLoading"></HcTable>
|
|
|
</HcDialog>
|
|
|
<!--批量上报审批-->
|
|
|
- <HcReportModal title="批量上报审批" url="informationWriteQuery/batchTask" :show="showReportModal" :projectId="projectId" :contractId="contractId" type="wbs" :typeData="reportTypeData"
|
|
|
- :taskName="reportTaskName" :ids="reportIds" :addition="reportAddition" :trialSelfInspectionRecordId="1" @hide="showReportModal = false" @finish="showReportFinish"/>
|
|
|
+ <HcReportModal :addition="reportAddition" :contractId="contractId" :ids="reportIds"
|
|
|
+ :projectId="projectId" :show="showReportModal" :taskName="reportTaskName"
|
|
|
+ :trialSelfInspectionRecordId="1"
|
|
|
+ :typeData="reportTypeData" title="批量上报审批" type="wbs"
|
|
|
+ url="informationWriteQuery/batchTask" @finish="showReportFinish"
|
|
|
+ @hide="showReportModal = false"/>
|
|
|
|
|
|
</div>
|
|
|
</template>
|
|
@@ -188,15 +214,15 @@ import {ref, watch, onMounted} from "vue";
|
|
|
import {useRouter} from 'vue-router'
|
|
|
import {useAppStore} from "~src/store";
|
|
|
import TestTree from "../material/components/TestTree.vue"
|
|
|
-import {getStoreData, setStoreData, delStoreData} from '~src/utils/storage'
|
|
|
+import {getStoreValue, setStoreValue, delStoreValue} from '~src/utils/storage'
|
|
|
import {getArrValue, getArrKeyValue, isString} from "vue-utils-plus";
|
|
|
import HcDragUpload from "./components/HcDragUpload.vue"
|
|
|
import dataApi from "~api/tentative/detect/test";
|
|
|
import {delMessage, rowsToId} from "~uti/tools";
|
|
|
import {getDictionary} from "~api/other";
|
|
|
-import { eVisaTaskCheckApi} from "~api/other"
|
|
|
+import {eVisaTaskCheckApi} from "~api/other"
|
|
|
import wbsApi from "~api/data-fill/wbs"
|
|
|
-import { Loading } from "element-plus/es/components/loading/src/service";
|
|
|
+import {Loading} from "element-plus/es/components/loading/src/service";
|
|
|
import notableform from '~src/assets/view/notableform.svg';
|
|
|
|
|
|
//变量
|
|
@@ -214,7 +240,7 @@ const isBubble = ref(useAppState.getBubble);
|
|
|
watch(() => [
|
|
|
useAppState.getCollapse,
|
|
|
useAppState.getBubble,
|
|
|
-], ([Collapse,bubble]) => {
|
|
|
+], ([Collapse, bubble]) => {
|
|
|
isCollapse.value = Collapse
|
|
|
isBubble.value = bubble
|
|
|
})
|
|
@@ -225,7 +251,7 @@ const getButtonsVal = (value) => {
|
|
|
}
|
|
|
|
|
|
//自动展开缓存
|
|
|
-const treeAutoExpandKeys = ref(getStoreData('testTreeExpandKeys') || [])
|
|
|
+const treeAutoExpandKeys = ref(getStoreValue('testTreeExpandKeys') || [])
|
|
|
const btn_edit = ref(false)
|
|
|
|
|
|
//渲染完成
|
|
@@ -233,7 +259,7 @@ onMounted(() => {
|
|
|
btn_edit.value = getButtonsVal('tentative_detect_test_edit')
|
|
|
setContractType(contractInfo.value?.contractType)
|
|
|
getCategoryData()
|
|
|
-
|
|
|
+
|
|
|
})
|
|
|
|
|
|
const qualifiedData = ref([
|
|
@@ -244,7 +270,7 @@ const qualifiedData = ref([
|
|
|
//获取检测类别类型
|
|
|
const categoryData = ref([])
|
|
|
const getCategoryData = async () => {
|
|
|
- const { data } = await getDictionary({
|
|
|
+ const {data} = await getDictionary({
|
|
|
code: 'trial_detection_category'
|
|
|
})
|
|
|
const arrData = getArrValue(data)
|
|
@@ -268,10 +294,10 @@ const nodeDataInfo = ref({})
|
|
|
const wbsElTreeClick = ({data, keys}) => {
|
|
|
nodeDataInfo.value = data
|
|
|
primaryKeyId.value = data['primaryKeyId'] || ''
|
|
|
- setStoreData('testTreeItem',data)
|
|
|
+ setStoreValue('testTreeItem', data)
|
|
|
//缓存自动展开
|
|
|
treeAutoExpandKeys.value = keys
|
|
|
- setStoreData('testTreeExpandKeys',keys)
|
|
|
+ setStoreValue('testTreeExpandKeys', keys)
|
|
|
//改变搜索表单数据
|
|
|
searchForm.value.nodeId = data['primaryKeyId'];
|
|
|
searchForm.value.current = 1;
|
|
@@ -306,9 +332,9 @@ const betweenTimeUpdate = ({arr}) => {
|
|
|
if (arr.length > 0) {
|
|
|
searchForm.value.startTime = arr[0]
|
|
|
searchForm.value.endTime = arr[1]
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
searchForm.value.startTime = ''
|
|
|
- searchForm.value.endTime =''
|
|
|
+ searchForm.value.endTime = ''
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -336,24 +362,24 @@ const pageChange = ({current, size}) => {
|
|
|
//表格数据
|
|
|
const tableRef = ref(null)
|
|
|
const tableColumn = ref([
|
|
|
- {key:'recordNo', name: '记录编号', width: 220},
|
|
|
- {key:'reportNo', name: '报告编号', width: 220},
|
|
|
- {key:'samplingLocation', name: '取样地点', width: 220},
|
|
|
- {key:'trialProjectName', name: '试验项目名称', width: 220},
|
|
|
- {key:'detectionResult', name: '检测结果', width: 160},
|
|
|
- {key:'taskStatus', name: '任务状态', width: 140},
|
|
|
- {key:'detectionCategory', name: '检测类别', width: 120},
|
|
|
- {key:'isUploadCertificate', name: '是否上传合格证', width: 130},
|
|
|
- {key:'contractId', name: '合同段', width: 220},
|
|
|
- {key:'company', name: '单位', width: 160},
|
|
|
- {key:'specificationNumber', name: '样品编号', width: 220},
|
|
|
- {key:'specificationModel', name: '规格类型', width: 200},
|
|
|
-
|
|
|
+ {key: 'recordNo', name: '记录编号', width: 220},
|
|
|
+ {key: 'reportNo', name: '报告编号', width: 220},
|
|
|
+ {key: 'samplingLocation', name: '取样地点', width: 220},
|
|
|
+ {key: 'trialProjectName', name: '试验项目名称', width: 220},
|
|
|
+ {key: 'detectionResult', name: '检测结果', width: 160},
|
|
|
+ {key: 'taskStatus', name: '任务状态', width: 140},
|
|
|
+ {key: 'detectionCategory', name: '检测类别', width: 120},
|
|
|
+ {key: 'isUploadCertificate', name: '是否上传合格证', width: 130},
|
|
|
+ {key: 'contractId', name: '合同段', width: 220},
|
|
|
+ {key: 'company', name: '单位', width: 160},
|
|
|
+ {key: 'specificationNumber', name: '样品编号', width: 220},
|
|
|
+ {key: 'specificationModel', name: '规格类型', width: 200},
|
|
|
+
|
|
|
//{key:'projectPosition', name: '工程部位及用途', width: 160},
|
|
|
- {key:'projectPositionName', name: '工程部位及用途', width: 160},
|
|
|
- {key:'reportDate', name: '报告日期', width: 170},
|
|
|
- {key:'trialUserName', name: '试验人员', width: 170},
|
|
|
- {key:'action', name: '操作', width: 150, fixed: 'right', align: 'center'},
|
|
|
+ {key: 'projectPositionName', name: '工程部位及用途', width: 160},
|
|
|
+ {key: 'reportDate', name: '报告日期', width: 170},
|
|
|
+ {key: 'trialUserName', name: '试验人员', width: 170},
|
|
|
+ {key: 'action', name: '操作', width: 150, fixed: 'right', align: 'center'},
|
|
|
])
|
|
|
const tableData = ref([])
|
|
|
|
|
@@ -361,7 +387,7 @@ const tableData = ref([])
|
|
|
const tableLoading = ref(false)
|
|
|
const getTableData = async () => {
|
|
|
tableLoading.value = true
|
|
|
- const { error, code, data } = await dataApi.queryPage({
|
|
|
+ const {error, code, data} = await dataApi.queryPage({
|
|
|
...searchForm.value,
|
|
|
projectId: projectId.value,
|
|
|
contractId: contractId.value
|
|
@@ -385,29 +411,29 @@ const tableSelection = (rows) => {
|
|
|
|
|
|
//新增
|
|
|
const addFormModalClick = () => {
|
|
|
- delStoreData('test-form')
|
|
|
+ delStoreValue('test-form')
|
|
|
router.push({
|
|
|
path: '/tentative/detect/test-form',
|
|
|
query: {
|
|
|
nodeId: primaryKeyId.value,
|
|
|
dataType: authBtnTabKey.value,
|
|
|
- isaddType:true,
|
|
|
+ isaddType: true,
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
|
|
|
//编辑
|
|
|
-const tableRowEdit = (row,tabTypeKey) => {
|
|
|
- setStoreData('test-form', row)
|
|
|
- setStoreData('prenodeDataInfo', nodeDataInfo.value)
|
|
|
- console.log(JSON.stringify(nodeDataInfo.value),'JSON.stringify(nodeDataInfo.value)');
|
|
|
+const tableRowEdit = (row, tabTypeKey) => {
|
|
|
+ setStoreValue('test-form', row)
|
|
|
+ setStoreValue('prenodeDataInfo', nodeDataInfo.value)
|
|
|
+ console.log(JSON.stringify(nodeDataInfo.value), 'JSON.stringify(nodeDataInfo.value)');
|
|
|
router.push({
|
|
|
path: '/tentative/detect/test-form',
|
|
|
query: {
|
|
|
id: row.id,
|
|
|
nodeId: row.nodeId,
|
|
|
dataType: row.type,
|
|
|
- tabTypeKey:tabTypeKey
|
|
|
+ tabTypeKey: tabTypeKey
|
|
|
// prenodeDataInfo:JSON.stringify(nodeDataInfo.value)
|
|
|
|
|
|
}
|
|
@@ -417,7 +443,7 @@ const tableRowEdit = (row,tabTypeKey) => {
|
|
|
//预览PDF
|
|
|
const tableRowPdf = ({pdfUrl}) => {
|
|
|
if (pdfUrl) {
|
|
|
- window.open(pdfUrl,'_blank')
|
|
|
+ window.open(pdfUrl, '_blank')
|
|
|
} else {
|
|
|
window.$message?.warning('该数据暂无PDF')
|
|
|
}
|
|
@@ -439,9 +465,9 @@ const copyLoading = ref(false)
|
|
|
const copyDataApi = async (ids) => {
|
|
|
//请求数据
|
|
|
copyLoading.value = true
|
|
|
- const { error, code, msg } = await dataApi.copyData({
|
|
|
+ const {error, code, msg} = await dataApi.copyData({
|
|
|
ids: ids
|
|
|
- },false)
|
|
|
+ }, false)
|
|
|
//处理数据
|
|
|
copyLoading.value = false
|
|
|
if (!error && code === 200) {
|
|
@@ -470,9 +496,9 @@ const removeLoading = ref(false)
|
|
|
const removeDataApi = async (ids) => {
|
|
|
//请求数据
|
|
|
removeLoading.value = true
|
|
|
- const { error, code, msg } = await dataApi.removeData({
|
|
|
+ const {error, code, msg} = await dataApi.removeData({
|
|
|
ids: ids
|
|
|
- },false)
|
|
|
+ }, false)
|
|
|
//处理数据
|
|
|
removeLoading.value = false
|
|
|
if (!error && code === 200) {
|
|
@@ -491,14 +517,14 @@ const printPdfClick = async () => {
|
|
|
const ids = rowsToId(rows)
|
|
|
//请求数据
|
|
|
printPdfLoading.value = true
|
|
|
- const { error, code, msg, data } = await dataApi.printPdf({
|
|
|
+ const {error, code, msg, data} = await dataApi.printPdf({
|
|
|
ids: ids
|
|
|
- },false)
|
|
|
+ }, false)
|
|
|
//处理数据
|
|
|
const pdfUrl = isString(data) ? data || '' : ''
|
|
|
printPdfLoading.value = false
|
|
|
if (!error && code === 200 && pdfUrl) {
|
|
|
- window.open(pdfUrl,'_blank')
|
|
|
+ window.open(pdfUrl, '_blank')
|
|
|
} else {
|
|
|
window.$message?.error(msg || '文件异常')
|
|
|
}
|
|
@@ -513,18 +539,18 @@ const quitPdfClick = async () => {
|
|
|
const rows = tableCheckedKeys.value;
|
|
|
if (rows.length > 0) {
|
|
|
const ids = rowsToId(rows)
|
|
|
- const res1 = rows.some(item => item.taskStatus === '未上报')
|
|
|
- const res2 = rows.some(item => item.taskStatus === '已废除')
|
|
|
- if(res1){
|
|
|
+ const res1 = rows.some(item => item.taskStatus === '未上报')
|
|
|
+ const res2 = rows.some(item => item.taskStatus === '已废除')
|
|
|
+ if (res1) {
|
|
|
window.$message?.warning('未上报的文件不能废除')
|
|
|
- }else if(res2){
|
|
|
- window.$message?.warning('已废除的文件不能再次废除')
|
|
|
- }else{
|
|
|
+ } else if (res2) {
|
|
|
+ window.$message?.warning('已废除的文件不能再次废除')
|
|
|
+ } else {
|
|
|
//请求数据
|
|
|
quitPdfLoading.value = true
|
|
|
- const { error, code, msg, data } = await dataApi.batchAbolish({
|
|
|
+ const {error, code, msg, data} = await dataApi.batchAbolish({
|
|
|
ids: ids
|
|
|
- },false)
|
|
|
+ }, false)
|
|
|
//处理数据
|
|
|
if (!error && code === 200) {
|
|
|
window.$message?.success('废除成功')
|
|
@@ -535,7 +561,7 @@ const quitPdfClick = async () => {
|
|
|
window.$message?.error(msg)
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
} else {
|
|
|
window.$message?.warning('请先勾选需要批量打印的记录')
|
|
|
}
|
|
@@ -553,51 +579,50 @@ const reportTypeData = ref([])
|
|
|
const reportPdfClick = async () => {
|
|
|
const rows = tableCheckedKeys.value;
|
|
|
if (rows.length > 0) {
|
|
|
- const info = getStoreData('prenodeDataInfo') || {}
|
|
|
- const res1 = rows.some(item => item.pdfUrl.length<1)
|
|
|
- const res2 = rows.some(item => item.taskStatus === '待审批'|| item.taskStatus === '已审批')
|
|
|
- if(res1){
|
|
|
- window.$message?.warning('当前数据暂无pdf无法上报')
|
|
|
- }else if(res2){
|
|
|
- window.$message?.warning('已上报的数据无法再次上报')
|
|
|
- }else{
|
|
|
- reportLoading.value = true
|
|
|
- const ids = rowsToId(rows)
|
|
|
- reportIds.value=ids
|
|
|
- const taskCheck = await eVisaTaskCheckApi({
|
|
|
- projectId: projectId.value,
|
|
|
- contractId: contractId.value
|
|
|
- })
|
|
|
- //处理数据
|
|
|
- let newArr = [];
|
|
|
- for (let i = 0; i < rows.length; i++) {
|
|
|
- newArr.push(rows[i]['tableIds'])
|
|
|
- }
|
|
|
- reportTypeData.value = [...newArr];
|
|
|
- console.log( reportTypeData.value,' reportTypeData.value');
|
|
|
- reportLoading.value = false
|
|
|
- if (taskCheck) {
|
|
|
- //初始弹出弹窗,防呆
|
|
|
-
|
|
|
- reportAddition.value = {
|
|
|
- classify: authBtnTabKey.value,
|
|
|
- contractIdRelation: info['contractIdRelation'],
|
|
|
- }
|
|
|
- showReportModal.value = true
|
|
|
- //请求文件题名
|
|
|
- const {data} = await wbsApi.queryDocumentTitle({
|
|
|
- // primaryKeyId: info['primaryKeyId'],
|
|
|
- primaryKeyId: rows[0].id,
|
|
|
- classify: authBtnTabKey.value
|
|
|
- })
|
|
|
- reportTaskName.value = isString(data)? data : ''
|
|
|
-
|
|
|
- } else {
|
|
|
- window.$message?.warning('暂无相关数据')
|
|
|
+ const info = getStoreValue('prenodeDataInfo') || {}
|
|
|
+ const res1 = rows.some(item => item.pdfUrl.length < 1)
|
|
|
+ const res2 = rows.some(item => item.taskStatus === '待审批' || item.taskStatus === '已审批')
|
|
|
+ if (res1) {
|
|
|
+ window.$message?.warning('当前数据暂无pdf无法上报')
|
|
|
+ } else if (res2) {
|
|
|
+ window.$message?.warning('已上报的数据无法再次上报')
|
|
|
+ } else {
|
|
|
+ reportLoading.value = true
|
|
|
+ const ids = rowsToId(rows)
|
|
|
+ reportIds.value = ids
|
|
|
+ const taskCheck = await eVisaTaskCheckApi({
|
|
|
+ projectId: projectId.value,
|
|
|
+ contractId: contractId.value
|
|
|
+ })
|
|
|
+ //处理数据
|
|
|
+ let newArr = [];
|
|
|
+ for (let i = 0; i < rows.length; i++) {
|
|
|
+ newArr.push(rows[i]['tableIds'])
|
|
|
+ }
|
|
|
+ reportTypeData.value = [...newArr];
|
|
|
+ console.log(reportTypeData.value, ' reportTypeData.value');
|
|
|
+ reportLoading.value = false
|
|
|
+ if (taskCheck) {
|
|
|
+ //初始弹出弹窗,防呆
|
|
|
+
|
|
|
+ reportAddition.value = {
|
|
|
+ classify: authBtnTabKey.value,
|
|
|
+ contractIdRelation: info['contractIdRelation'],
|
|
|
}
|
|
|
+ showReportModal.value = true
|
|
|
+ //请求文件题名
|
|
|
+ const {data} = await wbsApi.queryDocumentTitle({
|
|
|
+ // primaryKeyId: info['primaryKeyId'],
|
|
|
+ primaryKeyId: rows[0].id,
|
|
|
+ classify: authBtnTabKey.value
|
|
|
+ })
|
|
|
+ reportTaskName.value = isString(data) ? data : ''
|
|
|
+
|
|
|
+ } else {
|
|
|
+ window.$message?.warning('暂无相关数据')
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
} else {
|
|
|
window.$message?.warning('请先勾选需要批量上报的记录')
|
|
@@ -617,14 +642,14 @@ const printNullPdfClick = async () => {
|
|
|
const ids = rowsToId(rows)
|
|
|
//请求数据
|
|
|
printNullPdfLoading.value = true
|
|
|
- const { error, code, msg, data } = await dataApi.printNullPdf({
|
|
|
+ const {error, code, msg, data} = await dataApi.printNullPdf({
|
|
|
ids: ids
|
|
|
- },false)
|
|
|
+ }, false)
|
|
|
//处理数据
|
|
|
const pdfUrl = isString(data) ? data || '' : ''
|
|
|
printNullPdfLoading.value = false
|
|
|
if (!error && code === 200 && pdfUrl) {
|
|
|
- window.open(pdfUrl,'_blank')
|
|
|
+ window.open(pdfUrl, '_blank')
|
|
|
} else {
|
|
|
window.$message?.error(msg || '文件异常')
|
|
|
}
|
|
@@ -639,155 +664,155 @@ const viewAttachmentLoading = ref(false)
|
|
|
const viewAttachmentId = ref('')
|
|
|
const viewAttachmentData = ref([])
|
|
|
const viewAttachmentModalClick = async ({id}) => {
|
|
|
- viewAttachmentId.value=id
|
|
|
+ viewAttachmentId.value = id
|
|
|
viewAttachmentModal.value = true
|
|
|
- getAttachmentModalClick( viewAttachmentId.value, '1')
|
|
|
+ getAttachmentModalClick(viewAttachmentId.value, '1')
|
|
|
|
|
|
}
|
|
|
-const getCaption =(obj)=> {
|
|
|
+const getCaption = (obj) => {
|
|
|
const index = obj.lastIndexOf("pdf")
|
|
|
-
|
|
|
+
|
|
|
return index
|
|
|
}
|
|
|
|
|
|
//获取附件
|
|
|
-const getAttachmentModalClick = async (id,type) => {
|
|
|
- viewAttachmentLoading.value = true
|
|
|
- const { error, code, data } = await dataApi.ancillaryDocumentsList({id: id,type:type})
|
|
|
- console.log(data,'data');
|
|
|
- viewAttachmentLoading.value = false
|
|
|
- if (!error && code === 200) {
|
|
|
+const getAttachmentModalClick = async (id, type) => {
|
|
|
+ viewAttachmentLoading.value = true
|
|
|
+ const {error, code, data} = await dataApi.ancillaryDocumentsList({id: id, type: type})
|
|
|
+ console.log(data, 'data');
|
|
|
+ viewAttachmentLoading.value = false
|
|
|
+ if (!error && code === 200) {
|
|
|
viewAttachmentData.value = getArrValue(data)
|
|
|
- curFileData.value=viewAttachmentData.value[0]
|
|
|
+ curFileData.value = viewAttachmentData.value[0]
|
|
|
viewCurFile(curFileData.value)
|
|
|
-
|
|
|
+
|
|
|
} else {
|
|
|
viewAttachmentData.value = []
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
-const refeshAttachmentModalClick = async (id,type) => {
|
|
|
- const { error, code, data } = await dataApi.ancillaryDocumentsList({id: id,type:type})
|
|
|
+const refeshAttachmentModalClick = async (id, type) => {
|
|
|
+ const {error, code, data} = await dataApi.ancillaryDocumentsList({id: id, type: type})
|
|
|
//处理数据
|
|
|
viewAttachmentLoading.value = false
|
|
|
if (!error && code === 200) {
|
|
|
viewAttachmentData.value = getArrValue(data)
|
|
|
- if ( viewAttachmentData.value.length<1) {
|
|
|
+ if (viewAttachmentData.value.length < 1) {
|
|
|
// window.$message?.warning('该条记录不存在附件')
|
|
|
- }else{
|
|
|
- viewCurFile( viewAttachmentData.value[0])
|
|
|
+ } else {
|
|
|
+ viewCurFile(viewAttachmentData.value[0])
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
} else {
|
|
|
viewAttachmentData.value = []
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
const attachmentPdfUrl = ref('')
|
|
|
-const curFileData =ref ({})
|
|
|
+const curFileData = ref({})
|
|
|
//类型tab数据和相关处理
|
|
|
const tabTypeKey = ref('1')
|
|
|
const tabTypeTab = ref([
|
|
|
- {key:'1', name: '生产合格证'},
|
|
|
- {key:'2', name: '厂家质检报告'},
|
|
|
- {key:'3', name: '其他文件'},
|
|
|
+ {key: '1', name: '生产合格证'},
|
|
|
+ {key: '2', name: '厂家质检报告'},
|
|
|
+ {key: '3', name: '其他文件'},
|
|
|
]);
|
|
|
const tabTypeChange = (item) => {
|
|
|
console.log(1111111111);
|
|
|
tabTypeKey.value = item?.key
|
|
|
- getAttachmentModalClick( viewAttachmentId.value, item?.key)
|
|
|
- fileListData.value =[]
|
|
|
-
|
|
|
-
|
|
|
+ getAttachmentModalClick(viewAttachmentId.value, item?.key)
|
|
|
+ fileListData.value = []
|
|
|
+
|
|
|
+
|
|
|
refeshAttachmentModalClick(viewAttachmentId.value, tabTypeKey.value)
|
|
|
}
|
|
|
|
|
|
//关闭查看附件
|
|
|
const viewAttachmentModalClose = () => {
|
|
|
viewAttachmentModal.value = false
|
|
|
- curFileData.value=''
|
|
|
- attachmentPdfUrl.value=''
|
|
|
+ curFileData.value = ''
|
|
|
+ attachmentPdfUrl.value = ''
|
|
|
}
|
|
|
const uploadData = ref({})
|
|
|
-const fileListData=ref([])
|
|
|
-const listuploadref=ref('1')
|
|
|
+const fileListData = ref([])
|
|
|
+const listuploadref = ref('1')
|
|
|
//截取文件名称
|
|
|
-const splitFileName=(str)=>{
|
|
|
+const splitFileName = (str) => {
|
|
|
// if(str.indexOf("https://bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload") != -1){
|
|
|
- if(str.indexOf("https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com//upload") != -1){
|
|
|
- let a=str.split('//')[2].split('/')[2]
|
|
|
+ if (str.indexOf("https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com//upload") != -1) {
|
|
|
+ let a = str.split('//')[2].split('/')[2]
|
|
|
return a
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
return str
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
//查看当前文件pdf
|
|
|
const viewCurFile = (item) => {
|
|
|
- console.log(item,'item');
|
|
|
- if(item){
|
|
|
- curFileData.value=item
|
|
|
- let arr=[]
|
|
|
- arr.push({name:item.fileName,url:item.url})
|
|
|
- fileListData.value =getArrValue(arr)
|
|
|
- viewAttachmentData.value.forEach((ele)=>{
|
|
|
- ele.isCheck=false
|
|
|
+ console.log(item, 'item');
|
|
|
+ if (item) {
|
|
|
+ curFileData.value = item
|
|
|
+ let arr = []
|
|
|
+ arr.push({name: item.fileName, url: item.url})
|
|
|
+ fileListData.value = getArrValue(arr)
|
|
|
+ viewAttachmentData.value.forEach((ele) => {
|
|
|
+ ele.isCheck = false
|
|
|
})
|
|
|
- item.isCheck=true
|
|
|
-
|
|
|
+ item.isCheck = true
|
|
|
+
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//上传进度
|
|
|
const uploadprogress = (res) => {
|
|
|
- console.log('进度');
|
|
|
+ console.log('进度');
|
|
|
}
|
|
|
|
|
|
//上传完成
|
|
|
-const uploadFinished = async(res) => {
|
|
|
- const { error, code, data } = await dataApi.updateAncillaryDocument(
|
|
|
+const uploadFinished = async (res) => {
|
|
|
+ const {error, code, data} = await dataApi.updateAncillaryDocument(
|
|
|
{
|
|
|
- selfId:viewAttachmentId.value,
|
|
|
- url:res.link,
|
|
|
+ selfId: viewAttachmentId.value,
|
|
|
+ url: res.link,
|
|
|
type: tabTypeKey.value,
|
|
|
-
|
|
|
+
|
|
|
})
|
|
|
- console.log(data,'data');
|
|
|
- if (!error && code === 200) {
|
|
|
- refeshAttachmentModalClick(viewAttachmentId.value, tabTypeKey.value)
|
|
|
+ console.log(data, 'data');
|
|
|
+ if (!error && code === 200) {
|
|
|
+ refeshAttachmentModalClick(viewAttachmentId.value, tabTypeKey.value)
|
|
|
}
|
|
|
}
|
|
|
//上传文件delFileData
|
|
|
-const delFileData = async(res) => {
|
|
|
- console.log('删除文件',curFileData.value);
|
|
|
- if(curFileData.value.isDel==0){
|
|
|
+const delFileData = async (res) => {
|
|
|
+ console.log('删除文件', curFileData.value);
|
|
|
+ if (curFileData.value.isDel == 0) {
|
|
|
window.$message.warning('该文件不可删除')
|
|
|
- }else{
|
|
|
- const { error, code, data } = await dataApi.removedocuments(
|
|
|
+ } else {
|
|
|
+ const {error, code, data} = await dataApi.removedocuments(
|
|
|
{
|
|
|
- id:curFileData.value.id,
|
|
|
+ id: curFileData.value.id,
|
|
|
})
|
|
|
- if (!error && code === 200) {
|
|
|
+ if (!error && code === 200) {
|
|
|
window.$message.success('删除成功')
|
|
|
refeshAttachmentModalClick(viewAttachmentId.value, tabTypeKey.value)
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//样品信息数据
|
|
|
const samplingTableColumn = ref([
|
|
|
- {key:'materialName', name: '样品名称'},
|
|
|
- {key:'samplingDate', name: '取样时间'},
|
|
|
- {key:'specificationNumber', name: '样品编号'},
|
|
|
- {key:'specificationModel', name: '规格型号'},
|
|
|
- {key:'materialCount', name: '试样数量'},
|
|
|
- {key:'calculationUnit', name: '计算单位'},
|
|
|
- {key:'proposedPosition', name: '拟用部位'},
|
|
|
- {key:'representativeCount', name: '代表数量'},
|
|
|
- {key:'userName', name: '取样人'},
|
|
|
+ {key: 'materialName', name: '样品名称'},
|
|
|
+ {key: 'samplingDate', name: '取样时间'},
|
|
|
+ {key: 'specificationNumber', name: '样品编号'},
|
|
|
+ {key: 'specificationModel', name: '规格型号'},
|
|
|
+ {key: 'materialCount', name: '试样数量'},
|
|
|
+ {key: 'calculationUnit', name: '计算单位'},
|
|
|
+ {key: 'proposedPosition', name: '拟用部位'},
|
|
|
+ {key: 'representativeCount', name: '代表数量'},
|
|
|
+ {key: 'userName', name: '取样人'},
|
|
|
])
|
|
|
const samplingTableData = ref([])
|
|
|
const samplingTableLoading = ref(false)
|
|
@@ -797,7 +822,7 @@ const samplingRecordModal = ref(false)
|
|
|
const samplingRecordModalClick = async ({id}) => {
|
|
|
samplingRecordModal.value = true
|
|
|
samplingTableLoading.value = true
|
|
|
- const { error, code, data } = await dataApi.getSampleList({
|
|
|
+ const {error, code, data} = await dataApi.getSampleList({
|
|
|
id: id
|
|
|
})
|
|
|
//处理数据
|
|
@@ -821,7 +846,7 @@ const onmousedown = () => {
|
|
|
const leftNum = isCollapse.value ? 142 : 272
|
|
|
document.onmousemove = (ve) => {
|
|
|
let diffVal = ve.clientX - leftNum;
|
|
|
- if(diffVal >= 310 && diffVal <= 900) {
|
|
|
+ if (diffVal >= 310 && diffVal <= 900) {
|
|
|
leftWidth.value = diffVal;
|
|
|
}
|
|
|
}
|
|
@@ -843,7 +868,7 @@ const onmousedown = () => {
|
|
|
overflow-y: auto;
|
|
|
height: 100%;
|
|
|
flex: 1;
|
|
|
-
|
|
|
+
|
|
|
.file-item {
|
|
|
position: relative;
|
|
|
cursor: pointer;
|