ZaiZai 1 年之前
父節點
當前提交
dc7d614320
共有 3 個文件被更改,包括 239 次插入178 次删除
  1. 223 177
      src/views/tentative/collect/test.vue
  2. 6 0
      src/views/tentative/detect/test-form.vue
  3. 10 1
      src/views/tentative/detect/test.vue

+ 223 - 177
src/views/tentative/collect/test.vue

@@ -1,126 +1,105 @@
 <template>
-    <div class="hc-page-layout-box">
-        <div :style="`width:${leftWidth}px;`" class="hc-layout-left-box bg-white">
-            <div class="hc-tree-box ">
-                <div class="title_box">
-                    汇总分类
-                </div>
-                <el-scrollbar>
-                    <div v-for="(item, index) in testOpt" :key="item.id" class="mt-4" :class="item.id === curItem?.id ? 'bg-slate-200' : ''" @click="handleItem(item)">
-                        <i v-if="true" class="ri-circle-fill" />
-                        <i v-else class="ri-arrow-right-s-fill" style="font-size: larger;" />
-                        {{ item.className }}
-                        <span v-if="false" class="ml-4 bg-blue-100">222</span>
-                    </div>
-                    <!-- <HcLazyTree :auto-expand-keys="treeAutoExpandKeys" is-type @load="treeLoadNode" @node-tap="wbsElTreeClick" /> -->
-                </el-scrollbar>
-            </div>
-            <!-- 左右拖动 -->
-            <div class="horizontal-drag-line" @mousedown="onmousedown" />
-        </div>
-        <div class="hc-page-content-box">
-            <HcNewCard :scrollbar="false" action-size="lg">
-                <template #extra>
-                    <HcTooltip keys="tentative_collect_test_print">
-                        <el-button hc-btn color="#567722" @click="addClick">
-                            <HcIcon name="add" />
-                            <span>新增</span>
-                        </el-button>
-                    </HcTooltip>
-                    <HcTooltip keys="tentative_collect_test_download">
-                        <el-button hc-btn color="#A16222" :loading="downLoading" :disabled="tableCheckedKeys.length === 0" @click="downClick">
-                            <HcIcon name="download" />
-                            <span>下载</span>
-                        </el-button>
-                    </HcTooltip>
-                    <HcTooltip keys="tentative_collect_test_del">
-                        <el-button hc-btn color="#e03997" :disabled="tableCheckedKeys.length === 0" @click="delModalClick">
-                            <HcIcon name="delete-bin-2" />
-                            <span>删除</span>
-                        </el-button>
-                    </HcTooltip>
-                </template>
+    <hc-body split class="hc-tentative-collect-test-body">
+        <template #left>
+            <hc-card scrollbar>
                 <template #header>
-                    <div class="w-64">
-                        <el-select
-                            v-model="searchForm.contractId"
-                            placeholder="请选择"
-                            @change="changeContract"
-                        >
-                            <el-option
-                                v-for="item in contractOptions"
-                                :key="item.id"
-                                :label="item.contractName"
-                                :value="item.id"
-                            />
-                        </el-select>
-                    </div>
-                    <div class="w-64 ml-2">
-                        <el-select v-model="searchForm.detectionType" block clearable placeholder="检测类别" @change="changeType">
-                            <el-option
-                                v-for="item in typeData" :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="text-18px">汇总分类</div>
                 </template>
-                <HcTable
-                    ref="tableRef" :column="tableColumn" :datas="tableData" :loading="tableLoading"
-                    is-new :index-style="{ width: 60 }" is-check :check-style="{ width: 29 }"
-                    @selection-change="tableSelection"
+                <div
+                    v-for="(item) in testOpt" :key="item.id" class="mb-4"
+                    :class="item.id === curItem?.id ? 'bg-slate-200' : ''" @click="handleItem(item)"
                 >
-                    <template #action="{ row }">
-                        <el-button
-                            hc-btn
-                            type="primary"
-                            @click="viewPdf(row)"
-                        >
-                            <HcIcon name="eye" />
-                            <span>查看</span>
-                        </el-button>
-                    </template>
-                </HcTable>
-                <template #action>
-                    <HcPages :pages="searchForm" @change="pageChange" />
+                    <i class="ri-circle-fill" />
+                    {{ item.className }}
+                </div>
+            </hc-card>
+        </template>
+        <hc-card>
+            <template #header>
+                <div class="w-50">
+                    <el-select v-model="searchForm.contractId" placeholder="请选择" @change="changeContract">
+                        <el-option
+                            v-for="item in contractOptions" :key="item.id" :label="item.contractName"
+                            :value="item.id"
+                        />
+                    </el-select>
+                </div>
+                <div class="ml-2 w-40">
+                    <el-select
+                        v-model="searchForm.detectionType" clearable block placeholder="检测类别"
+                        @change="changeType"
+                    >
+                        <el-option v-for="item in typeData" :key="item.value" :label="item.label" :value="item.value" />
+                    </el-select>
+                </div>
+                <div class="ml-2 w-40">
+                    <el-select v-model="searchForm.key1" clearable block placeholder="单位类型">
+                        <el-option label="测试1" value="1" />
+                        <el-option label="测试2" value="2" />
+                    </el-select>
+                </div>
+                <div class="ml-2 w-64">
+                    <HcDatePicker :dates="betweenTime" clearable @change="betweenTimeUpdate" />
+                </div>
+            </template>
+            <template #extra>
+                <HcTooltip keys="tentative_collect_test_print">
+                    <el-button hc-btn color="#567722" @click="addClick">
+                        <HcIcon name="add" />
+                        <span>新增</span>
+                    </el-button>
+                </HcTooltip>
+                <HcTooltip keys="tentative_collect_test_download">
+                    <el-button
+                        hc-btn color="#A16222" :loading="downLoading" :disabled="tableCheckedKeys.length === 0"
+                        @click="downClick"
+                    >
+                        <HcIcon name="download" />
+                        <span>下载</span>
+                    </el-button>
+                </HcTooltip>
+                <HcTooltip keys="tentative_collect_test_del">
+                    <el-button hc-btn color="#e03997" :disabled="tableCheckedKeys.length === 0" @click="delModalClick">
+                        <HcIcon name="delete-bin-2" />
+                        <span>删除</span>
+                    </el-button>
+                </HcTooltip>
+            </template>
+            <HcTable
+                ref="tableRef" :column="tableColumn" :datas="tableData" :loading="tableLoading"
+                is-new :index-style="{ width: 60 }" is-check :check-style="{ width: 29 }"
+                @selection-change="tableSelection"
+            >
+                <template #action="{ row }">
+                    <el-link type="primary" @click="viewPdf(row)">查看</el-link>
+                    <el-link type="primary" @click="relatedSearchClick(row)">查阅关联</el-link>
                 </template>
-            </HcNewCard>
-        </div>
+            </HcTable>
+            <template #action>
+                <HcPages :pages="searchForm" @change="pageChange" />
+            </template>
+        </hc-card>
+
+        <!-- 新增/编辑 -->
         <hc-new-dialog
-            v-model="addFormShow" :loading="addFormLoading" title="新增分类"
-            widths="30rem" @close="addModalClose" @save="addModalSave"
+            v-model="addFormShow" :loading="addFormLoading" title="新增分类" widths="30rem"
+            @close="addModalClose" @save="addModalSave"
         >
             <el-form
-                ref="addFormRef" :model="addFormModal" :rules="addFormRules"
-                label-position="left" label-width="auto" size="large"
+                ref="addFormRef" :model="addFormModal" :rules="addFormRules" label-position="left"
+                label-width="auto" size="large"
             >
                 <el-form-item class="mb-0" label="合同段:" prop="contractId">
-                    <el-select
-                        v-model="addFormModal.contractId"
-                        placeholder="请选择"
-                    >
+                    <el-select v-model="addFormModal.contractId" placeholder="请选择">
                         <el-option
-                            v-for="item in contractOptions"
-                            :key="item.id"
-                            :label="item.contractName"
+                            v-for="item in contractOptions" :key="item.id" :label="item.contractName"
                             :value="item.id"
                         />
                     </el-select>
                 </el-form-item>
                 <el-form-item class="mb-0 mt-4" label="汇总类别:" prop="classId">
-                    <el-select
-                        v-model="addFormModal.classId"
-                        placeholder="请选择"
-                    >
-                        <el-option
-                            v-for="item in testOpt"
-                            :key="item.id"
-                            :label="item.className"
-                            :value="item.id"
-                        />
+                    <el-select v-model="addFormModal.classId" placeholder="请选择">
+                        <el-option v-for="item in testOpt" :key="item.id" :label="item.className" :value="item.id" />
                     </el-select>
                 </el-form-item>
                 <el-form-item class="mb-0 mt-4" label="报告时间:">
@@ -128,31 +107,35 @@
                 </el-form-item>
             </el-form>
             <el-form-item class="mb-0 mt-4" label="单位类型:" prop="unitType	">
-                <el-select
-                    v-model="addFormModal.unitType	"
-                    placeholder="请选择"
-                >
-                    <el-option
-                        v-for="item in unitOpt"
-                        :key="item.id"
-                        :label="item.name"
-                        :value="item.id"
-                    />
+                <el-select v-model="addFormModal.unitType	" placeholder="请选择">
+                    <el-option v-for="item in unitOpt" :key="item.id" :label="item.name" :value="item.id" />
                 </el-select>
             </el-form-item>
             <el-form-item class="mb-0 mt-4" label="检测类型:" prop="detectionType">
-                <el-select
-                    v-model="addFormModal.detectionType"
-                    placeholder="请选择"
-                >
-                    <el-option
-                        v-for="item in typeData" :key="item.value" :label="item.label"
-                        :value="item.value"
-                    />
+                <el-select v-model="addFormModal.detectionType" placeholder="请选择">
+                    <el-option v-for="item in typeData" :key="item.value" :label="item.label" :value="item.value" />
                 </el-select>
             </el-form-item>
         </hc-new-dialog>
-    </div>
+
+        <!-- 查阅关联 -->
+        <hc-dialog
+            v-model="isRelatedSearch" :footer="false" is-table title="查阅关联" widths="80%" :padding="false"
+            @close="relatedSearchModalClose"
+        >
+            <div class="hc-related-search-box relative mt-10px">
+                <hc-card-item title="样品信息">
+                    <hc-table :column="relatedColumn1" :datas="relatedData1" :is-index="false" />
+                </hc-card-item>
+                <hc-card-item title="委托单信息" class="mt-14px">
+                    <hc-table :column="relatedColumn2" :datas="relatedData2" :is-index="false" />
+                </hc-card-item>
+                <hc-card-item title="设备采集信息" class="mt-14px">
+                    <hc-table :column="relatedColumn3" :datas="relatedData3" :is-index="false" />
+                </hc-card-item>
+            </div>
+        </hc-dialog>
+    </hc-body>
 </template>
 
 <script setup>
@@ -171,9 +154,6 @@ const contractId = ref(useAppState.getContractId)
 
 const isCollapse = ref(useAppState.getCollapse)
 
-
-
-
 const contractOptions = ref([])
 //监听
 watch(() => [
@@ -182,14 +162,12 @@ watch(() => [
     isCollapse.value = Collapse
 })
 
-
-
 //渲染完成
 onMounted(async () => {
-   await gettypeData()
-   await getContractOpt()
-   await getTextOpt()
-   getTableData()
+    await gettypeData()
+    await getContractOpt()
+    await getTextOpt()
+    getTableData()
 })
 
 //搜索表单
@@ -203,16 +181,14 @@ const getContractOpt = async () => {
     const { error, code, data } = await getContractList({
         contractId: contractId.value,
         projectId: projectId.value,
-
     })
     //判断状态
     if (!error && code === 200) {
         let resdata = getArrValue(data)
-       contractOptions.value = resdata
-       if ( contractOptions.value.length > 0) {
-        searchForm.value.contractId = contractOptions.value[0].id
-       }
-
+        contractOptions.value = resdata
+        if (contractOptions.value.length > 0) {
+            searchForm.value.contractId = contractOptions.value[0].id
+        }
     } else {
         contractOptions.value = []
     }
@@ -226,16 +202,16 @@ const getTextOpt = async () => {
     if (!error && code === 200) {
         let resdata = getArrValue(data)
         testOpt.value = resdata
-        if ( testOpt.value.length > 0) {
-        curItem.value = testOpt.value[0]
-       }
+        if (testOpt.value.length > 0) {
+            curItem.value = testOpt.value[0]
+        }
 
     } else {
         testOpt.value = []
     }
 }
 const curItem = ref(null)
-const handleItem = (item)=>{
+const handleItem = (item) => {
     curItem.value = item
     getTableData()
 }
@@ -277,10 +253,10 @@ const addbetweenTimeUpdate = ({ arr, query }) => {
 }
 
 //选择检测类别
-const changeType = ()=>{
+const changeType = () => {
     getTableData()
 }
-const changeContract = ()=>{
+const changeContract = () => {
     getTableData()
 }
 
@@ -299,8 +275,8 @@ const tableColumn = ref([
     { key: 'classIdName', name: '汇总类别' },
     { key: 'detectionTypeName', name: '检测类型' },
     { key: 'summaryDateName', name: '汇总日期' },
-    { key: 'action', name: '操作', width:100 },
-
+    { key: 'key1', name: '单位类型' },
+    { key: 'action', name: '操作', width: 100 },
 ])
 
 //获取数据
@@ -314,16 +290,15 @@ const getTableData = async () => {
     if (curItem.value) {
         const { error, code, data } = await getPage({
             ...searchForm.value,
-            classId:curItem.value?.id,
+            classId: curItem.value?.id,
         })
         //判断状态
         if (!error && code === 200) {
-            let resdata = getArrValue(data['records'])
-        tableData.value = resdata
-        searchForm.value.total = data['total']
-
+            tableData.value = getArrValue(data?.records)
+            searchForm.value.total = data?.total ?? 0
         } else {
             tableData.value = []
+            searchForm.value.total = 0
         }
     } else {
         window.$message.warning('请先选择汇总分类')
@@ -358,15 +333,15 @@ const removeContractTreeNode = async () => {
     })
 
     const { error, code, msg } = await removeByIds({
-        ids: arrToId( tableCheckedKeys.value),
+        ids: arrToId(tableCheckedKeys.value),
     })
     loadingInstance.close()
     if (!error && code === 200) {
         window?.$message?.success('删除成功')
-            getTableData()
+        getTableData()
     } else {
-            window.$message.error(msg)
-     }
+        window.$message.error(msg)
+    }
 }
 //左右拖动,改变树形结构宽度
 const leftWidth = ref(382)
@@ -384,7 +359,7 @@ const onmousedown = () => {
     }
 }
 //查看pdf
-const viewPdf = (row)=>{
+const viewPdf = (row) => {
     const { pdfUrl } = row
     if (pdfUrl) {
         toPdfPage(pdfUrl)
@@ -397,12 +372,12 @@ const viewPdf = (row)=>{
 const addFormModal = ref({})
 const addFormShow = ref(false)
 const addFormLoading = ref(false)
-const addClick = ()=>{
+const addClick = () => {
 
     addFormShow.value = true
 
 }
-const addModalClose = ()=>{
+const addModalClose = () => {
     addFormShow.value = false
     addFormModal.value = {}
 
@@ -411,42 +386,113 @@ const addModalClose = ()=>{
 const addFormRules = ref(null)
 const addFormRef = ref(null)
 
-const addModalSave = async ()=>{
+const addModalSave = async () => {
     console.log(addFormModal.value)
     addFormLoading.value = true
     const { error, code, msg } = await save({
-            ...addFormModal.value,
+        ...addFormModal.value,
 
-     })
-     addFormLoading.value = false
-        //判断状态
-        if (!error && code === 200) {
-         window.$message.success(msg)
-         addFormShow.value = false
-         getTableData()
+    })
+    addFormLoading.value = false
+    //判断状态
+    if (!error && code === 200) {
+        window.$message.success(msg)
+        addFormShow.value = false
+        getTableData()
 
-        }
+    }
 }
 const unitOpt = ref([
-    { name:'施工', id:'1' },
+    { name: '施工', id: '1' },
 ])
 const downLoading = ref(false)
-const downClick = async ()=>{
+const downClick = async () => {
     downLoading.value = true
     const { error, code, data } = await download({
-            ids: arrToId( tableCheckedKeys.value),
-        })
-        downLoading.value = false
+        ids: arrToId(tableCheckedKeys.value),
+    })
+    downLoading.value = false
 
     const res = isString(data) ? data || '' : ''
     if (!error && code === 200 && res) {
         window.open(res, '_blank')
     }
 }
+
+//关联查阅
+const isRelatedSearch = ref(false)
+const relatedSearchClick = (row) => {
+    isRelatedSearch.value = true
+}
+
+//样品信息
+const relatedColumn1 = [
+    { key: 'key1', name: '取样名称' },
+    { key: 'key2', name: '取样日期' },
+    { key: 'key3', name: '取样编号' },
+    { key: 'key4', name: '规格型号' },
+    { key: 'key5', name: '试样数量' },
+    { key: 'key6', name: '计算单位' },
+    { key: 'key7', name: '拟用部位' },
+    { key: 'key8', name: '代表数量' },
+    { key: 'key9', name: '取样人' },
+    { key: 'key10', name: '入库时间' },
+    { key: 'key11', name: '试验时间' },
+    { key: 'key12', name: '样品处理' },
+    { key: 'key13', name: '时间(或处理原因)' },
+]
+const relatedData1 = ref([])
+
+//委托单信息
+const relatedColumn2 = [
+    { key: 'key1', name: '委托单位' },
+    { key: 'key2', name: '委托单编号' },
+    { key: 'key3', name: '委托名称' },
+    { key: 'key4', name: '委托状态' },
+]
+const relatedData2 = ref([])
+
+//设备采集信息
+const relatedColumn3 = [
+    { key: 'key1', name: '工程部位' },
+    { key: 'key2', name: '设备名称' },
+    { key: 'key3', name: '设备采集编号' },
+    { key: 'key4', name: '试验日期' },
+    { key: 'key5', name: '样品编号' },
+    { key: 'key6', name: '试验类型' },
+    { key: 'key7', name: '承压面积(mm2)' },
+    { key: 'key8', name: '试件尺寸(mm)' },
+    { key: 'key9', name: '设计强度(MPa)' },
+    { key: 'key10', name: '龄期(d)' },
+    { key: 'key11', name: '荷载1(KN)' },
+    { key: 'key12', name: '荷载1(KN)' },
+    { key: 'key13', name: '荷载2(KN)' },
+    { key: 'key14', name: '荷载3(KN)' },
+    { key: 'key15', name: '荷载4(KN)' },
+    { key: 'key16', name: '荷载5(KN)' },
+    { key: 'key17', name: '荷载6(KN)' },
+    { key: 'key18', name: '其余荷载(KN)' },
+    { key: 'key19', name: '强度代表值(MPa)' },
+    {
+        name: '最大力总延伸(%)',
+        children: [
+            { key: 'key20', name: '1' },
+            { key: 'key21', name: '2' },
+            { key: 'key22', name: '3' },
+        ],
+    },
+    { key: 'key23', name: '试验结果是否合格', width: 100, align: 'center' },
+]
+const relatedData3 = ref([])
+
+//关闭关联查阅
+const relatedSearchModalClose = () => {
+    isRelatedSearch.value = false
+}
 </script>
 
 <style lang="scss" scoped>
-.title_box{
+.title_box {
     font-size: 24px;
     font-weight: bolder;
 }

+ 6 - 0
src/views/tentative/detect/test-form.vue

@@ -46,6 +46,12 @@
                 </el-dropdown>
             </template>
             <template #search>
+                <div v-if="authBtnTabKey === '3'" class="mr-5 w-40">
+                    <el-select v-model="listItemBaseData.key1" placeholder="选择标段" filterable clearable block>
+                        <el-option label="测试1" value="1" />
+                        <el-option label="测试2" value="2" />
+                    </el-select>
+                </div>
                 <div class="mr-5 w-32">
                     <el-select v-model="tabTypeKey" block @change="tabTypeChange">
                         <el-option v-for="item in tabTypeTab" :key="item.key" :label="item.name" :value="item.key" />

+ 10 - 1
src/views/tentative/detect/test.vue

@@ -109,6 +109,12 @@
                             @keyup="keyUpEvent"
                         />
                     </div>
+                    <div v-if="authBtnTabKey === '3'" class="ml-2 w-50">
+                        <el-select v-model="searchForm.contractId" placeholder="选择合同段" filterable clearable block>
+                            <el-option label="测试1" value="1" />
+                            <el-option label="测试2" value="2" />
+                        </el-select>
+                    </div>
                     <div class="ml-2 w-40">
                         <el-select v-model="searchForm.queryStatus" clearable placeholder="请选择是否合格">
                             <el-option
@@ -117,9 +123,12 @@
                             />
                         </el-select>
                     </div>
-                    <div class="ml-2 w-64">
+                    <div v-if="authBtnTabKey !== '3'" class="ml-2 w-64">
                         <HcDatePicker :dates="betweenTime" clearable @change="betweenTimeUpdate" />
                     </div>
+                    <div v-if="authBtnTabKey === '3'" class="ml-2 w-150px">
+                        <el-date-picker v-model="searchForm.date" class="block" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" clearable placeholder="报告时间" />
+                    </div>
                     <div class="ml-2 w-72">
                         <el-input
                             v-model="searchForm.queryValue" clearable placeholder="请输入项目名称关键字"