ZaiZai 1 éve
szülő
commit
0de3d0c1d3

+ 8 - 3
src/views/tentative/material/modules/testSample/dispose.vue

@@ -28,6 +28,7 @@
 import { onMounted, ref, watch } from 'vue'
 import { useAppStore } from '~src/store'
 import { getErtractInfo } from '~api/other'
+import { toPdfPage } from '~uti/btn-auth'
 import { getArrValue, getObjValue, isNullES } from 'js-fast-way'
 import mainApi from '~api/tentative/material/testSample'
 
@@ -109,7 +110,7 @@ const tableColumn = ref([
     { key: 'specificationModel', name: '规格型号', align: 'center' },
     { key: 'materialCount', name: '试样数量', align: 'center' },
     { key: 'expCount', name: '试验数量', align: 'center' },
-    { key: 'key5', name: '废除数量', align: 'center' },
+    { key: 'materialCount', name: '废除数量', align: 'center' },
     { key: 'calculationUnit', name: '计算单位', align: 'center' },
     { key: 'proposedPosition', name: '拟用部位' },
     { key: 'representativeCount', name: '代表数量', align: 'center' },
@@ -148,7 +149,11 @@ const getTableData = async () => {
 }
 
 //查看报告
-const rowView = (row) => {
-
+const rowView = ({ pdfUrl }) => {
+    if (isNullES(pdfUrl)) {
+        window?.$message.error('暂无报告文件')
+    } else {
+        toPdfPage(pdfUrl)
+    }
 }
 </script>

+ 42 - 12
src/views/tentative/material/modules/testSample/leave.vue

@@ -35,13 +35,13 @@
                 <hc-table :column="batchColumn" :datas="batchList" :is-index="false" />
             </div>
             <el-form ref="formRef" :model="formModel" :rules="formRules" label-position="left" label-width="auto">
-                <el-form-item label="处理原因:" prop="key1">
-                    <el-input v-model="formModel.key1" type="textarea" :rows="4" resize="none" />
+                <el-form-item label="处理原因:" prop="repealReason">
+                    <el-input v-model="formModel.repealReason" type="textarea" :rows="4" resize="none" />
                 </el-form-item>
             </el-form>
             <template #footer>
                 <el-button @click="disposeClose">取消</el-button>
-                <el-button hc-btn type="primary" @click="disposeSave">确定</el-button>
+                <el-button hc-btn type="primary" :loading="saveLoading" @click="disposeSave">确定</el-button>
             </template>
         </hc-new-dialog>
     </hc-card-item>
@@ -51,7 +51,8 @@
 import { onMounted, ref, watch } from 'vue'
 import { useAppStore } from '~src/store'
 import { getErtractInfo } from '~api/other'
-import { getArrValue, getObjValue, isNullES } from 'js-fast-way'
+import { toPdfPage } from '~uti/btn-auth'
+import { arrToId, formValidate, getArrValue, getObjValue, isNullES } from 'js-fast-way'
 import mainApi from '~api/tentative/material/testSample'
 
 //参数
@@ -174,7 +175,7 @@ const tableSelection = (rows) => {
 const formRef = ref(null)
 const formModel = ref({})
 const formRules = {
-    key1: {
+    repealReason: {
         required: true,
         trigger: 'blur',
         message: '请填写处理原因',
@@ -184,38 +185,67 @@ const formRules = {
 //弹窗
 const disposeModal = ref(false)
 const batchColumn = ref([
-    { key: 'key1', name: '取样名称' },
+    { key: 'materialName', name: '样品名称' },
     { key: 'key2', name: '留样数量' },
-    { key: 'key3', name: '拟用部位' },
-    { key: 'key4', name: '留样时间' },
+    { key: 'proposedPosition', name: '拟用部位' },
+    { key: 'resamTime', name: '留样时间' },
 ])
 const batchList = ref([])
 
 //批量处理样品
 const batchDispose = () => {
-    batchList.value = tableCheckedKeys.value
+    const rows = tableCheckedKeys.value
+    if (rows.length <= 0) {
+        window.$message.warning('请先勾选要处理的数据')
+        return
+    }
+    formModel.value = {
+        id: arrToId(rows),
+        repealType: 1,
+    }
+    batchList.value = rows
     disposeModal.value = true
 }
 
 //处理样品
 const rowDispose = (row) => {
+    formModel.value = {
+        id: row.id,
+        repealType: 1,
+    }
     batchList.value = []
     disposeModal.value = true
 }
 
 //提交保存
+const saveLoading = ref(false)
 const disposeSave = async () => {
-    disposeClose()
+    const isForm = await formValidate(formRef.value)
+    if (!isForm) return
+    const { error, code, msg } = await mainApi.update(formModel.value)
+    saveLoading.value = false
+    if (!error && code === 200) {
+        window.$message.success('提交成功')
+        disposeClose()
+        getTableData().then()
+    } else {
+        window.$message.error(msg || '操作失败')
+    }
 }
 
 //关闭弹窗
 const disposeClose = () => {
     disposeModal.value = false
     batchList.value = []
+    formModel.value = {}
 }
 
 //查看报告
-const rowView = (row) => {
-
+const rowView = ({ pdfUrl }) => {
+    if (isNullES(pdfUrl)) {
+        window?.$message.error('暂无报告文件')
+    } else {
+        toPdfPage(pdfUrl)
+    }
 }
 </script>

+ 66 - 39
src/views/tentative/material/modules/testSample/testUnder.vue

@@ -22,20 +22,20 @@
         >
             <template #entrustStatus="{ row }">
                 <!-- 未上报 -->
-                <el-button v-if="row.entrustStatus === 1" type="info" size="small">{{ row.entrustStatusName }}</el-button>
+                <el-button v-if="row.entrustStatus === 1" type="info" size="small">{{ row.entrustStatusName || '-' }}</el-button>
                 <!-- 待审批 -->
-                <el-button v-if="row.entrustStatus === 2" type="info" size="small">{{ row.entrustStatusName }}</el-button>
+                <el-button v-if="row.entrustStatus === 2" type="info" size="small">{{ row.entrustStatusName || '-' }}</el-button>
                 <!-- 待试验 -->
-                <el-button v-if="row.entrustStatus === 3" type="primary" size="small">{{ row.entrustStatusName }}</el-button>
+                <el-button v-if="row.entrustStatus === 3" type="primary" size="small">{{ row.entrustStatusName || '-' }}</el-button>
                 <!-- 已通过 -->
-                <el-button v-if="row.entrustStatus === 4" type="success" size="small">{{ row.entrustStatusName }}</el-button>
+                <el-button v-if="row.entrustStatus === 4" type="success" size="small">{{ row.entrustStatusName || '-' }}</el-button>
                 <!-- 已废除 -->
-                <el-button v-if="row.entrustStatus === 5" type="danger" size="small">{{ row.entrustStatusName }}</el-button>
+                <el-button v-if="row.entrustStatus === 5" type="danger" size="small">{{ row.entrustStatusName || '-' }}</el-button>
             </template>
             <template #action="{ row }">
-                <el-link type="primary" @click="rowDispose(row)">样品处理</el-link>
-                <el-link v-if="false" type="primary">填写报告</el-link>
-                <el-link type="danger" @click="rowDel(row)">删除</el-link>
+                <el-link v-if="row.entrustStatus === 4" type="primary" @click="rowDispose(row)">样品处理</el-link>
+                <el-link v-else type="primary" :disabled="!(row.entrustStatus === 1 || row.entrustStatus === 5)" @click="fillReportClick(row)">填写报告</el-link>
+                <el-link type="danger" :disabled="row.entrustStatus === 2" @click="rowDel(row)">删除</el-link>
             </template>
         </hc-table>
         <template #action>
@@ -45,22 +45,22 @@
         <!-- 样品处理 -->
         <hc-new-dialog v-model="disposeModal" is-footer-center title="样品处理" widths="40rem" @close="disposeClose">
             <el-form ref="formRef" :model="formModel" :rules="formRules" label-position="left" label-width="auto">
-                <el-form-item label="处理方式:" prop="key1">
-                    <el-radio-group v-model="formModel.key1">
+                <el-form-item label="处理方式:" prop="repealType">
+                    <el-radio-group v-model="formModel.repealType">
                         <el-radio :value="1">处理</el-radio>
                         <el-radio :value="2">留样</el-radio>
                     </el-radio-group>
                 </el-form-item>
-                <el-form-item v-if="formModel.key1 === 1" label="处理原因:" prop="key2">
-                    <el-input v-model="formModel.key2" type="textarea" :rows="5" resize="none" />
+                <el-form-item v-if="formModel.repealType === 1" label="处理原因:" prop="repealReason">
+                    <el-input v-model="formModel.repealReason" type="textarea" :rows="5" resize="none" />
                 </el-form-item>
-                <el-form-item v-if="formModel.key1 === 2" label="留样时间:" prop="startTime">
+                <el-form-item v-if="formModel.repealType === 2" label="留样时间:" prop="resamStartTime">
                     <hc-date-picker :dates="formTime" clearable @change="formTimeUpdate" />
                 </el-form-item>
             </el-form>
             <template #footer>
                 <el-button @click="disposeClose">取消</el-button>
-                <el-button hc-btn type="primary" @click="disposeSave">确定</el-button>
+                <el-button hc-btn type="primary" :loading="saveLoading" @click="disposeSave">确定</el-button>
             </template>
         </hc-new-dialog>
     </hc-card-item>
@@ -69,9 +69,10 @@
 <script setup>
 import { onMounted, ref, watch } from 'vue'
 import { HcDelMsg } from 'hc-vue3-ui'
+import router from '~src/router/index'
 import { useAppStore } from '~src/store'
 import { getErtractInfo } from '~api/other'
-import { arrToId, getArrValue, getObjValue, isNullES } from 'js-fast-way'
+import { arrToId, formValidate, getArrValue, getObjValue, isNullES } from 'js-fast-way'
 import mainApi from '~api/tentative/material/testSample'
 
 //参数
@@ -86,6 +87,7 @@ const props = defineProps({
 const store = useAppStore()
 const projectId = ref(store.getProjectId)
 const contractId = ref(store.getContractId)
+const contractInfo = ref(store.getContractInfo)
 
 //渲染完成
 onMounted(() => {
@@ -197,17 +199,17 @@ const tableSelection = (rows) => {
 const formRef = ref(null)
 const formModel = ref({})
 const formRules = {
-    key1: {
+    repealType: {
         required: true,
         trigger: 'blur',
         message: '请选择处理方式',
     },
-    key2: {
+    repealReason: {
         required: true,
         trigger: 'blur',
         message: '请填写处理原因',
     },
-    startTime: {
+    resamStartTime: {
         required: true,
         trigger: 'blur',
         message: '请选择留样时间',
@@ -217,9 +219,9 @@ const formRules = {
 //样品处理
 const disposeModal = ref(false)
 const rowDispose = (row) => {
-    console.log(row)
     formModel.value = {
-        key1: 1,
+        id: row.id,
+        repealType: 1,
     }
     disposeModal.value = true
 }
@@ -229,17 +231,28 @@ const formTime = ref(null)
 const formTimeUpdate = ({ arr }) => {
     formTime.value = arr
     if (arr.length > 0) {
-        formModel.value.startTime = arr[0]
-        formModel.value.endTime = arr[1]
+        formModel.value.resamStartTime = arr[0]
+        formModel.value.resamEndTime = arr[1]
     } else {
-        formModel.value.startTime = ''
-        formModel.value.endTime = ''
+        formModel.value.resamStartTime = ''
+        formModel.value.resamEndTime = ''
     }
 }
 
 //确定提交
+const saveLoading = ref(false)
 const disposeSave = async () => {
-    disposeClose()
+    const isForm = await formValidate(formRef.value)
+    if (!isForm) return
+    const { error, code, msg } = await mainApi.update(formModel.value)
+    saveLoading.value = false
+    if (!error && code === 200) {
+        window.$message.success('提交成功')
+        disposeClose()
+        getTableData().then()
+    } else {
+        window.$message.error(msg || '操作失败')
+    }
 }
 
 //关闭弹窗
@@ -251,14 +264,8 @@ const disposeClose = () => {
 //删除
 const rowDel = (row) => {
     HcDelMsg(async (resolve) => {
-        const { error, code, msg } = await mainApi.sampleRemove(row.id)
+        await sampleRemoveApi(row.id)
         resolve()
-        if (!error && code === 200) {
-            window.$message.success('删除成功')
-            getTableData().then()
-        } else {
-            window.$message.error(msg ?? '删除失败')
-        }
     })
 }
 
@@ -270,14 +277,34 @@ const batchDel = () => {
         return
     }
     HcDelMsg(async (resolve) => {
-        const { error, code, msg } = await mainApi.sampleRemove(arrToId(rows))
+        await sampleRemoveApi(arrToId(rows))
         resolve()
-        if (!error && code === 200) {
-            window.$message.success('删除成功')
-            getTableData().then()
-        } else {
-            window.$message.error(msg ?? '删除失败')
-        }
+    })
+}
+
+//删除
+const sampleRemoveApi = async (ids) => {
+    const { error, code, msg } = await mainApi.sampleRemove(ids)
+    if (!error && code === 200) {
+        window.$message.success('删除成功')
+        getTableData().then()
+    } else {
+        window.$message.error(msg ?? '删除失败')
+    }
+}
+
+//填写报告
+const fillReportClick = (row) => {
+    const { contractType } = contractInfo.value
+    const { primaryKeyId } = treeInfo.value
+    router.push({
+        path: '/tentative/detect/test-form',
+        query: {
+            nodeId: primaryKeyId || '',
+            dataType: contractType > 0 ? contractType + '' : '1',
+            commissionId: row.id,
+            isaddType: true,
+        },
     })
 }
 </script>

+ 2 - 0
src/views/tentative/material/modules/testSample/tested.vue

@@ -222,6 +222,7 @@ const rowActionSave = async () => {
     if (!error && code === 200) {
         window.$message.success('创建成功')
         rowActionModalClose()
+        getTableData().then()
         //跳转到试验填报的新增
         const { contractType } = contractInfo.value
         const { primaryKeyId } = treeInfo.value
@@ -278,6 +279,7 @@ const tableDataCancel = async (ids) => {
     const { error, code, msg } = await mainApi.update(form)
     if (!error && code === 200) {
         window.$message.success('取消成功')
+        getTableData().then()
     } else {
         window.$message.error(msg || '创建失败')
     }