src/api/ecg/devmanage/index.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/ecg/devmanage/DeviceForm.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/ecg/devmanage/device.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/ecg/devmanage/index.ts
@@ -7,6 +7,16 @@ model: string // åå· } // è®¾å¤ VO export interface DeviceVO { id: number // id devId: string // 设å¤ç¼å· category: string // åç±»å brand: string // åç model: string // åå· purchaseDate: Date // éè´æ¥æ } // 设å¤åå· API export const DevModelApi = { // æ¥è¯¢è®¾å¤åå·å页 @@ -38,4 +48,37 @@ exportDevModel: async (params) => { return await request.download({ url: `/ecg/dev-model/export-excel`, params }) } } } // è®¾å¤ API export const DeviceApi = { // æ¥è¯¢è®¾å¤å页 getDevicePage: async (params: any) => { return await request.get({ url: `/ecg/device/page`, params }) }, // æ¥è¯¢è®¾å¤è¯¦æ getDevice: async (id: number) => { return await request.get({ url: `/ecg/device/get?id=` + id }) }, // æ°å¢è®¾å¤ createDevice: async (data: DeviceVO) => { return await request.post({ url: `/ecg/device/create`, data }) }, // ä¿®æ¹è®¾å¤ updateDevice: async (data: DeviceVO) => { return await request.put({ url: `/ecg/device/update`, data }) }, // å é¤è®¾å¤ deleteDevice: async (id: number) => { return await request.delete({ url: `/ecg/device/delete?id=` + id }) }, // 导åºè®¾å¤ Excel exportDevice: async (params) => { return await request.download({ url: `/ecg/device/export-excel`, params }) } } src/views/ecg/devmanage/DeviceForm.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,120 @@ <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="devId"> <el-input v-model="formData.devId" placeholder="请è¾å ¥è®¾å¤ç¼å·" /> </el-form-item> <el-form-item label="åç±»å" prop="category"> <el-input v-model="formData.category" placeholder="请è¾å ¥åç±»å" /> </el-form-item> <el-form-item label="åç" prop="brand"> <el-input v-model="formData.brand" placeholder="请è¾å ¥åç" /> </el-form-item> <el-form-item label="åå·" prop="model"> <el-input v-model="formData.model" placeholder="请è¾å ¥åå·" /> </el-form-item> <el-form-item label="éè´æ¥æ" prop="purchaseDate"> <el-date-picker v-model="formData.purchaseDate" type="date" value-format="x" 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 { DeviceApi, DeviceVO } from '@/api/ecg/devmanage' /** è®¾å¤ è¡¨å */ defineOptions({ name: 'DeviceForm' }) 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, devId: undefined, category: undefined, brand: undefined, model: undefined, purchaseDate: undefined }) const formRules = reactive({ devId: [{ required: true, message: '设å¤ç¼å·ä¸è½ä¸ºç©º', trigger: 'blur' }], category: [{ required: true, message: 'åç±»åä¸è½ä¸ºç©º', trigger: 'blur' }], brand: [{ required: true, message: 'åçä¸è½ä¸ºç©º', trigger: 'blur' }], model: [{ 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 DeviceApi.getDevice(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 DeviceVO if (formType.value === 'create') { await DeviceApi.createDevice(data) message.success(t('common.createSuccess')) } else { await DeviceApi.updateDevice(data) message.success(t('common.updateSuccess')) } dialogVisible.value = false // åéæä½æåçäºä»¶ emit('success') } finally { formLoading.value = false } } /** é置表å */ const resetForm = () => { formData.value = { id: undefined, devId: undefined, category: undefined, brand: undefined, model: undefined, purchaseDate: undefined } formRef.value?.resetFields() } </script> src/views/ecg/devmanage/device.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,233 @@ <template> <ContentWrap> <!-- æç´¢å·¥ä½æ --> <el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px" > <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="category"> <el-input v-model="queryParams.category" placeholder="请è¾å ¥åç±»å" clearable @keyup.enter="handleQuery" class="!w-240px" /> </el-form-item> <el-form-item label="åç" prop="brand"> <el-input v-model="queryParams.brand" placeholder="请è¾å ¥åç" clearable @keyup.enter="handleQuery" class="!w-240px" /> </el-form-item> <el-form-item label="åå·" prop="model"> <el-input v-model="queryParams.model" placeholder="请è¾å ¥åå·" clearable @keyup.enter="handleQuery" class="!w-240px" /> </el-form-item> <el-form-item label="éè´æ¥æ" prop="purchaseDate"> <el-date-picker v-model="queryParams.purchaseDate" 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="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:device:create']" > <Icon icon="ep:plus" class="mr-5px" /> æ°å¢ </el-button> <el-button type="success" plain @click="handleExport" :loading="exportLoading" v-hasPermi="['ecg:device: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="devId" /> <el-table-column label="åç±»å" align="center" prop="category" /> <el-table-column label="åç" align="center" prop="brand" /> <el-table-column label="åå·" align="center" prop="model" /> <el-table-column label="éè´æ¥æ" align="center" prop="purchaseDate" /> <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:device:update']" > ç¼è¾ </el-button> <el-button link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['ecg:device: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> <!-- 表åå¼¹çªï¼æ·»å /ä¿®æ¹ --> <DeviceForm ref="formRef" @success="getList" /> </template> <script setup lang="ts"> import { dateFormatter } from '@/utils/formatTime' import download from '@/utils/download' import { DeviceApi, DeviceVO } from '@/api/ecg/devmanage' import DeviceForm from './DeviceForm.vue' /** è®¾å¤ å表 */ defineOptions({ name: 'Device' }) const message = useMessage() // æ¶æ¯å¼¹çª const { t } = useI18n() // å½é å const loading = ref(true) // å表çå è½½ä¸ const list = ref<DeviceVO[]>([]) // åè¡¨çæ°æ® const total = ref(0) // åè¡¨çæ»é¡µæ° const queryParams = reactive({ pageNo: 1, pageSize: 10, devId: undefined, category: undefined, brand: undefined, model: undefined, purchaseDate: [], createTime: [] }) const queryFormRef = ref() // æç´¢ç表å const exportLoading = ref(false) // 导åºçå è½½ä¸ /** æ¥è¯¢å表 */ const getList = async () => { loading.value = true try { const data = await DeviceApi.getDevicePage(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 DeviceApi.deleteDevice(id) message.success(t('common.delSuccess')) // å·æ°å表 await getList() } catch {} } /** å¯¼åºæé®æä½ */ const handleExport = async () => { try { // 导åºçäºæ¬¡ç¡®è®¤ await message.exportConfirm() // åèµ·å¯¼åº exportLoading.value = true const data = await DeviceApi.exportDevice(queryParams) download.excel(data, '设å¤.xls') } catch { } finally { exportLoading.value = false } } /** åå§å **/ onMounted(() => { getList() }) </script>