src/api/ecg/jobrecord/index.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/ecg/doctor/components/DevRentPanel.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/ecg/doctor/components/JobRecordPanel.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/ecg/jobrecord/JobRecordForm.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/ecg/jobrecord/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/ecg/jobrecord/index.ts
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,48 @@ import request from '@/config/axios' // å·¥ä½è®°å½ VO export interface JobRecordVO { id: number // id jobType: number // ä½ä¸ç±»å docId: number // å»çç¼å· docName: string // å»çåç§° devId: string // 设å¤ç¼å· patId: string // æ£è ç¼å· patName: string // æ£è åç§° jobTime: Date // ä½ä¸æ¶é´ summary: number // ä½ä¸æ¦è¦ remark: string // 夿³¨ } // å·¥ä½è®°å½ API export const JobRecordApi = { // æ¥è¯¢å·¥ä½è®°å½å页 getJobRecordPage: async (params: any) => { return await request.get({ url: `/ecg/job-record/page`, params }) }, // æ¥è¯¢å·¥ä½è®°å½è¯¦æ getJobRecord: async (id: number) => { return await request.get({ url: `/ecg/job-record/get?id=` + id }) }, // æ°å¢å·¥ä½è®°å½ createJobRecord: async (data: JobRecordVO) => { return await request.post({ url: `/ecg/job-record/create`, data }) }, // ä¿®æ¹å·¥ä½è®°å½ updateJobRecord: async (data: JobRecordVO) => { return await request.put({ url: `/ecg/job-record/update`, data }) }, // å é¤å·¥ä½è®°å½ deleteJobRecord: async (id: number) => { return await request.delete({ url: `/ecg/job-record/delete?id=` + id }) }, // 导åºå·¥ä½è®°å½ Excel exportJobRecord: async (params) => { return await request.download({ url: `/ecg/job-record/export-excel`, params }) } } src/views/ecg/doctor/components/DevRentPanel.vue
@@ -39,7 +39,8 @@ <el-input v-model="formData.remark" placeholder="请è¾å ¥å¤æ³¨" /> </el-form-item> </el-form> <el-button @click="submitForm" type="primary" :disabled="formLoading">ç¡® å®</el-button> <el-button @click="submitForm" type="primary" :disabled="formLoading">è£ æº</el-button> <el-button @click="submitDismantleForm" type="primary" :disabled="formLoading">ææº</el-button> <el-button @click="dialogVisible = false">å æ¶</el-button> </template> <script setup lang="ts"> @@ -128,6 +129,10 @@ } } const submitDismantleForm = async () => { } /** é置表å */ const resetForm = () => { formData.value = { src/views/ecg/doctor/components/JobRecordPanel.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ <script setup lang="ts"> import {defineComponent, PropType} from "vue"; import {PatientStatisticVO, RoomBedVO} from "@/api/ecg/doctor"; import {dateFormatter} from "@/utils/formatTime"; defineComponent({ name: 'JobRecordPanel' }) const props = defineProps({ room: { type: Object as PropType<RoomBedVO>, required: true }, patientStatistic: { type: Object as PropType<PatientStatisticVO>, required: true } }) </script> <template> </template> <style scoped lang="scss"> .mytitle { display: flex; justify-content: space-between; } </style> src/views/ecg/jobrecord/JobRecordForm.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,140 @@ <template> <Dialog :title="dialogTitle" v-model="dialogVisible"> <el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading" > <el-form-item label="ä½ä¸ç±»å" prop="jobType"> <el-select v-model="formData.jobType" placeholder="è¯·éæ©ä½ä¸ç±»å"> <el-option label="è¯·éæ©åå ¸çæ" value="" /> </el-select> </el-form-item> <el-form-item label="å»çç¼å·" prop="docId"> <el-input v-model="formData.docId" placeholder="请è¾å ¥å»çç¼å·" /> </el-form-item> <el-form-item label="å»çåç§°" prop="docName"> <el-input v-model="formData.docName" placeholder="请è¾å ¥å»çåç§°" /> </el-form-item> <el-form-item label="设å¤ç¼å·" prop="devId"> <el-input v-model="formData.devId" placeholder="请è¾å ¥è®¾å¤ç¼å·" /> </el-form-item> <el-form-item label="æ£è ç¼å·" prop="patId"> <el-input v-model="formData.patId" placeholder="请è¾å ¥æ£è ç¼å·" /> </el-form-item> <el-form-item label="æ£è åç§°" prop="patName"> <el-input v-model="formData.patName" placeholder="请è¾å ¥æ£è åç§°" /> </el-form-item> <el-form-item label="ä½ä¸æ¶é´" prop="jobTime"> <el-date-picker v-model="formData.jobTime" type="date" value-format="x" placeholder="éæ©ä½ä¸æ¶é´" /> </el-form-item> <el-form-item label="ä½ä¸æ¦è¦" prop="summary"> <el-input v-model="formData.summary" placeholder="请è¾å ¥ä½ä¸æ¦è¦" /> </el-form-item> <el-form-item label="夿³¨" prop="remark"> <el-input v-model="formData.remark" placeholder="请è¾å ¥å¤æ³¨" /> </el-form-item> </el-form> <template #footer> <el-button @click="submitForm" type="primary" :disabled="formLoading">ç¡® å®</el-button> <el-button @click="dialogVisible = false">å æ¶</el-button> </template> </Dialog> </template> <script setup lang="ts"> import { JobRecordApi, JobRecordVO } from '@/api/ecg/jobrecord' /** å·¥ä½è®°å½ 表å */ defineOptions({ name: 'JobRecordForm' }) const { t } = useI18n() // å½é å const message = useMessage() // æ¶æ¯å¼¹çª const dialogVisible = ref(false) // å¼¹çªçæ¯å¦å±ç¤º const dialogTitle = ref('') // å¼¹çªçæ é¢ const formLoading = ref(false) // 表åçå è½½ä¸ï¼1ï¼ä¿®æ¹æ¶çæ°æ®å è½½ï¼2ï¼æäº¤çæé®ç¦ç¨ const formType = ref('') // 表åçç±»åï¼create - æ°å¢ï¼update - ä¿®æ¹ const formData = ref({ id: undefined, jobType: undefined, docId: undefined, docName: undefined, devId: undefined, patId: undefined, patName: undefined, jobTime: undefined, summary: undefined, remark: undefined }) const formRules = reactive({ jobType: [{ required: true, message: 'ä½ä¸ç±»åä¸è½ä¸ºç©º', trigger: 'change' }], docId: [{ required: true, message: 'å»çç¼å·ä¸è½ä¸ºç©º', trigger: 'blur' }] }) const formRef = ref() // 表å Ref /** æå¼å¼¹çª */ const open = async (type: string, id?: number) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type resetForm() // ä¿®æ¹æ¶ï¼è®¾ç½®æ°æ® if (id) { formLoading.value = true try { formData.value = await JobRecordApi.getJobRecord(id) } finally { formLoading.value = false } } } defineExpose({ open }) // æä¾ open æ¹æ³ï¼ç¨äºæå¼å¼¹çª /** æäº¤è¡¨å */ const emit = defineEmits(['success']) // å®ä¹ success äºä»¶ï¼ç¨äºæä½æååçåè° const submitForm = async () => { // æ ¡éªè¡¨å await formRef.value.validate() // æäº¤è¯·æ± formLoading.value = true try { const data = formData.value as unknown as JobRecordVO if (formType.value === 'create') { await JobRecordApi.createJobRecord(data) message.success(t('common.createSuccess')) } else { await JobRecordApi.updateJobRecord(data) message.success(t('common.updateSuccess')) } dialogVisible.value = false // åéæä½æåçäºä»¶ emit('success') } finally { formLoading.value = false } } /** é置表å */ const resetForm = () => { formData.value = { id: undefined, jobType: undefined, docId: undefined, docName: undefined, devId: undefined, patId: undefined, patName: undefined, jobTime: undefined, summary: undefined, remark: undefined } formRef.value?.resetFields() } </script> src/views/ecg/jobrecord/index.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,284 @@ <template> <ContentWrap> <!-- æç´¢å·¥ä½æ --> <el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px" > <el-form-item label="ä½ä¸ç±»å" prop="jobType"> <el-select v-model="queryParams.jobType" placeholder="è¯·éæ©ä½ä¸ç±»å" clearable class="!w-240px" > <el-option label="è¯·éæ©åå ¸çæ" value="" /> </el-select> </el-form-item> <el-form-item label="å»çç¼å·" prop="docId"> <el-input v-model="queryParams.docId" placeholder="请è¾å ¥å»çç¼å·" clearable @keyup.enter="handleQuery" class="!w-240px" /> </el-form-item> <el-form-item label="å»çåç§°" prop="docName"> <el-input v-model="queryParams.docName" placeholder="请è¾å ¥å»çåç§°" clearable @keyup.enter="handleQuery" class="!w-240px" /> </el-form-item> <el-form-item label="设å¤ç¼å·" prop="devId"> <el-input v-model="queryParams.devId" placeholder="请è¾å ¥è®¾å¤ç¼å·" clearable @keyup.enter="handleQuery" class="!w-240px" /> </el-form-item> <el-form-item label="æ£è ç¼å·" prop="patId"> <el-input v-model="queryParams.patId" placeholder="请è¾å ¥æ£è ç¼å·" clearable @keyup.enter="handleQuery" class="!w-240px" /> </el-form-item> <el-form-item label="æ£è åç§°" prop="patName"> <el-input v-model="queryParams.patName" placeholder="请è¾å ¥æ£è åç§°" clearable @keyup.enter="handleQuery" class="!w-240px" /> </el-form-item> <el-form-item label="ä½ä¸æ¶é´" prop="jobTime"> <el-date-picker v-model="queryParams.jobTime" 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-220px" /> </el-form-item> <el-form-item label="ä½ä¸æ¦è¦" prop="summary"> <el-input v-model="queryParams.summary" placeholder="请è¾å ¥ä½ä¸æ¦è¦" clearable @keyup.enter="handleQuery" class="!w-240px" /> </el-form-item> <el-form-item label="夿³¨" prop="remark"> <el-input v-model="queryParams.remark" placeholder="请è¾å ¥å¤æ³¨" clearable @keyup.enter="handleQuery" class="!w-240px" /> </el-form-item> <el-form-item label="å建æ¶é´" prop="createTime"> <el-date-picker v-model="queryParams.createTime" 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-220px" /> </el-form-item> <el-form-item> <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> æç´¢</el-button> <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> éç½®</el-button> <el-button type="primary" plain @click="openForm('create')" v-hasPermi="['ecg:job-record:create']" > <Icon icon="ep:plus" class="mr-5px" /> æ°å¢ </el-button> <el-button type="success" plain @click="handleExport" :loading="exportLoading" v-hasPermi="['ecg:job-record:export']" > <Icon icon="ep:download" class="mr-5px" /> å¯¼åº </el-button> </el-form-item> </el-form> </ContentWrap> <!-- å表 --> <ContentWrap> <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <el-table-column label="id" align="center" prop="id" /> <el-table-column label="ä½ä¸ç±»å" align="center" prop="jobType" /> <el-table-column label="å»çç¼å·" align="center" prop="docId" /> <el-table-column label="å»çåç§°" align="center" prop="docName" /> <el-table-column label="设å¤ç¼å·" align="center" prop="devId" /> <el-table-column label="æ£è ç¼å·" align="center" prop="patId" /> <el-table-column label="æ£è åç§°" align="center" prop="patName" /> <el-table-column label="ä½ä¸æ¶é´" align="center" prop="jobTime" :formatter="dateFormatter" width="180px" /> <el-table-column label="ä½ä¸æ¦è¦" align="center" prop="summary" /> <el-table-column label="夿³¨" align="center" prop="remark" /> <el-table-column label="å建æ¶é´" align="center" prop="createTime" :formatter="dateFormatter" width="180px" /> <el-table-column label="æä½" align="center" min-width="120px"> <template #default="scope"> <el-button link type="primary" @click="openForm('update', scope.row.id)" v-hasPermi="['ecg:job-record:update']" > ç¼è¾ </el-button> <el-button link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['ecg:job-record:delete']" > å é¤ </el-button> </template> </el-table-column> </el-table> <!-- å页 --> <Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" @pagination="getList" /> </ContentWrap> <!-- 表åå¼¹çªï¼æ·»å /ä¿®æ¹ --> <JobRecordForm ref="formRef" @success="getList" /> </template> <script setup lang="ts"> import { dateFormatter } from '@/utils/formatTime' import download from '@/utils/download' import { JobRecordApi, JobRecordVO } from '@/api/ecg/jobrecord' import JobRecordForm from './JobRecordForm.vue' /** å·¥ä½è®°å½ å表 */ defineOptions({ name: 'JobRecord' }) const message = useMessage() // æ¶æ¯å¼¹çª const { t } = useI18n() // å½é å const loading = ref(true) // å表çå è½½ä¸ const list = ref<JobRecordVO[]>([]) // åè¡¨çæ°æ® const total = ref(0) // åè¡¨çæ»é¡µæ° const queryParams = reactive({ pageNo: 1, pageSize: 10, jobType: undefined, docId: undefined, docName: undefined, devId: undefined, patId: undefined, patName: undefined, jobTime: [], summary: undefined, remark: undefined, createTime: [] }) const queryFormRef = ref() // æç´¢ç表å const exportLoading = ref(false) // 导åºçå è½½ä¸ /** æ¥è¯¢å表 */ const getList = async () => { loading.value = true try { const data = await JobRecordApi.getJobRecordPage(queryParams) list.value = data.list total.value = data.total } finally { loading.value = false } } /** æç´¢æé®æä½ */ const handleQuery = () => { queryParams.pageNo = 1 getList() } /** éç½®æé®æä½ */ const resetQuery = () => { queryFormRef.value.resetFields() handleQuery() } /** æ·»å /ä¿®æ¹æä½ */ const formRef = ref() const openForm = (type: string, id?: number) => { formRef.value.open(type, id) } /** å é¤æé®æä½ */ const handleDelete = async (id: number) => { try { // å é¤çäºæ¬¡ç¡®è®¤ await message.delConfirm() // åèµ·å é¤ await JobRecordApi.deleteJobRecord(id) message.success(t('common.delSuccess')) // å·æ°å表 await getList() } catch {} } /** å¯¼åºæé®æä½ */ const handleExport = async () => { try { // 导åºçäºæ¬¡ç¡®è®¤ await message.exportConfirm() // åèµ·å¯¼åº exportLoading.value = true const data = await JobRecordApi.exportJobRecord(queryParams) download.excel(data, 'å·¥ä½è®°å½.xls') } catch { } finally { exportLoading.value = false } } /** åå§å **/ onMounted(() => { getList() }) </script>