Explorar el Código

优化测量证书抽屉和检测表单,添加检测/校准日期选择和相关字段,调整数据传递方式

yanghao hace 3 días
padre
commit
e919cbd995

+ 51 - 23
src/views/pms/qhse/MeasureCertDrawer.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <el-drawer
     v-model="drawerVisible"
     title="查看证书"
@@ -11,13 +11,6 @@
         :model="queryParams"
         class="bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-4 pt-4 mb-4">
         <div class="flex items-center gap-4 flex-wrap">
-          <!-- <el-form-item label="仪器名称" prop="measureName">
-            <el-input
-              v-model="queryParams.measureName"
-              placeholder="请输入仪器名称"
-              clearable
-              class="!w-150px" />
-          </el-form-item> -->
           <el-form-item label="证书编码" prop="measureCertNo">
             <el-input
               v-model="queryParams.measureCertNo"
@@ -25,7 +18,20 @@
               clearable
               class="!w-180px" />
           </el-form-item>
+          <el-form-item label="检测/校准日期" prop="detectDate">
+            <el-date-picker
+              v-model="queryParams.detectDate"
+              value-format="YYYY-MM-DD HH:mm:ss"
+              type="daterange"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
+              class="!w-200px" />
+          </el-form-item>
           <el-form-item>
+            <el-button type="primary" plain @click="handleCreate">
+              <Icon icon="ep:plus" class="mr-5px" /> 新增
+            </el-button>
             <el-button @click="handleQuery">
               <Icon icon="ep:search" class="mr-5px" /> 搜索
             </el-button>
@@ -50,12 +56,7 @@
                   {{ scope.$index + 1 }}
                 </template>
               </zm-table-column>
-              <zm-table-column
-                label="仪器名称"
-                align="center"
-                prop="measureName"
-                min-width="160"
-                fixed="left" />
+
               <zm-table-column
                 label="证书编码"
                 align="center"
@@ -72,6 +73,11 @@
                 align="center"
                 prop="detectStandard"
                 min-width="160" />
+              <zm-table-column label="检测/校准内容" align="center" prop="detectContent">
+                <template #default="scope">
+                  <div class="detect-content" v-html="scope.row.detectContent"></div>
+                </template>
+              </zm-table-column>
               <zm-table-column label="有效期" align="center" prop="validityPeriod" width="140">
                 <template #default="scope">
                   <span class="iot-md-date">{{
@@ -79,6 +85,7 @@
                   }}</span>
                 </template>
               </zm-table-column>
+              <zm-table-column label="校准金额" align="center" prop="detectAmount" />
               <zm-table-column label="附件" fixed="right" align="center" prop="file" width="90">
                 <template #default="scope">
                   <el-button
@@ -128,12 +135,15 @@
       </div>
     </template>
   </Dialog>
+
+  <IotMeasureDetectForm ref="formRef" @success="getList" />
 </template>
 
 <script setup lang="ts">
 import { IotMeasureDetectApi } from '@/api/pms/qhse/index'
 import { useTableComponents } from '@/components/ZmTable/useTableComponents'
 import { formatDate } from '@/utils/formatTime'
+import IotMeasureDetectForm from './iotmeasuredetect/IotMeasureDetectForm.vue'
 
 const { ZmTable, ZmTableColumn } = useTableComponents()
 
@@ -141,24 +151,32 @@ defineOptions({ name: 'MeasureCertDrawer' })
 
 const { t } = useI18n()
 
+type MeasureRow = {
+  id: number
+  measureName?: string
+  measureCode?: string
+  deptId?: number | string
+}
+
 const drawerVisible = ref(false)
 const loading = ref(false)
 const list = ref<any[]>([])
 const total = ref(0)
-const currentMeasureId = ref<number | undefined>(undefined)
+const currentMeasure = ref<MeasureRow | null>(null)
 
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
   measureId: undefined as number | undefined,
-  measureName: undefined as string | undefined,
+  detectDate: undefined as string | undefined,
   measureCertNo: undefined as string | undefined
 })
 
 const queryFormRef = ref()
+const formRef = ref()
 
 const getList = async () => {
-  if (!currentMeasureId.value) return
+  if (!currentMeasure.value?.id) return
 
   loading.value = true
   try {
@@ -177,13 +195,23 @@ const handleQuery = () => {
 
 const resetQuery = () => {
   queryFormRef.value?.resetFields()
-  queryParams.measureId = currentMeasureId.value
+  queryParams.measureId = currentMeasure.value?.id
   handleQuery()
 }
 
-const open = async (measureId: number) => {
-  currentMeasureId.value = measureId
-  queryParams.measureId = measureId
+const handleCreate = () => {
+  if (!currentMeasure.value?.id) return
+
+  formRef.value?.open('create', undefined, {
+    measureId: currentMeasure.value.id,
+    measureName: currentMeasure.value.measureName || currentMeasure.value.measureCode || '',
+    deptId: currentMeasure.value.deptId
+  })
+}
+
+const open = async (measureRow: MeasureRow) => {
+  currentMeasure.value = measureRow
+  queryParams.measureId = measureRow.id
   queryParams.measureName = undefined
   queryParams.measureCertNo = undefined
   queryParams.pageNo = 1
@@ -193,12 +221,12 @@ const open = async (measureId: number) => {
 
 const handleClose = () => {
   drawerVisible.value = false
-  currentMeasureId.value = undefined
+  currentMeasure.value = null
   list.value = []
   total.value = 0
 }
 
-const formatDateCorrectly = (timestamp) => {
+const formatDateCorrectly = (timestamp: string | number) => {
   if (!timestamp) return ''
 
   let time = Number(timestamp)

+ 6 - 1
src/views/pms/qhse/index.vue

@@ -672,7 +672,12 @@ const closeDrawer = () => {
 const certDrawerRef = ref()
 
 const viewCert = (row) => {
-  certDrawerRef.value?.open(row.id)
+  certDrawerRef.value?.open({
+    id: row.id,
+    measureName: row.measureName,
+    measureCode: row.measureCode,
+    deptId: row.deptId
+  })
 }
 
 // 抽屉相关响应式数据

+ 10 - 1
src/views/pms/qhse/iotmeasuredetect/IotMeasureDetectForm.vue

@@ -255,11 +255,20 @@ const formRef = ref() // 表单 Ref
 const measureList = ref([])
 
 /** 打开弹窗 */
-const open = async (type: string, id?: number) => {
+const open = async (
+  type: string,
+  id?: number,
+  presetData?: { measureId?: number | string; measureName?: string; deptId?: number | string }
+) => {
   dialogVisible.value = true
   dialogTitle.value = t('action.' + type)
   formType.value = type
   resetForm()
+  if (type === 'create' && presetData) {
+    formData.value.measureId = presetData.measureId || ''
+    formData.value.measureName = presetData.measureName || ''
+    formData.value.deptId = presetData.deptId
+  }
   // 修改时,设置数据
   if (id) {
     formLoading.value = true