From 09de14bc21f2feb7c799db8b9b14499fdbc7c0c9 Mon Sep 17 00:00:00 2001 From: "YEJIAXING-PC\\lenovo" <591141169@qq.com> Date: Fri, 21 Feb 2025 18:43:23 +0800 Subject: [PATCH] =?UTF-8?q?APP=E8=87=AA=E5=8A=A8=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=EF=BC=8C=E4=B8=8D=E8=A6=81=E6=AF=8F=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=E9=83=BD=E9=87=8D=E6=96=B0=E5=AE=89=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/systemInstallPackage/index.ts | 57 +++++ .../system/systemInstallPackage/index.vue | 212 ++++++++++++++++++ .../systemInstallPackage.data.ts | 133 +++++++++++ 3 files changed, 402 insertions(+) create mode 100644 src/api/system/systemInstallPackage/index.ts create mode 100644 src/views/system/systemInstallPackage/index.vue create mode 100644 src/views/system/systemInstallPackage/systemInstallPackage.data.ts diff --git a/src/api/system/systemInstallPackage/index.ts b/src/api/system/systemInstallPackage/index.ts new file mode 100644 index 0000000..4b2793e --- /dev/null +++ b/src/api/system/systemInstallPackage/index.ts @@ -0,0 +1,57 @@ +import request from '@/config/axios' + +export interface SystemInstallPackageVO { + id: number + installPackageName: string + installPackageVersion: number + installPackageUrl: string + isForcedUpdate: string + updateContent: string + remark: string +} + +// 查询安装包信息列表 +export const getSystemInstallPackagePage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/eam/system-install-package/senior', data }) + } else { + return await request.get({ url: `/eam/system-install-package/page`, params }) + } +} + +// 查询安装包信息详情 +export const getSystemInstallPackage = async (id: number) => { + return await request.get({ url: `/eam/system-install-package/get?id=` + id }) +} + +// 新增安装包信息 +export const createSystemInstallPackage = async (data: SystemInstallPackageVO) => { + return await request.post({ url: `/eam/system-install-package/create`, data }) +} + +// 修改安装包信息 +export const updateSystemInstallPackage = async (data: SystemInstallPackageVO) => { + return await request.put({ url: `/eam/system-install-package/update`, data }) +} + +// 删除安装包信息 +export const deleteSystemInstallPackage = async (id: number) => { + return await request.delete({ url: `/eam/system-install-package/delete?id=` + id }) +} + +// 导出安装包信息 Excel +export const exportSystemInstallPackage = async (params) => { + return await request.download({ url: `/eam/system-install-package/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/eam/system-install-package/get-import-template' }) +} + +// 返回最新版本安装包信息 +export const returnNewFileSystemInstallPackage = async (data: SystemInstallPackageVO) => { + return await request.post({ url: `/eam/system-install-package/returnNewFile`, data }) +} \ No newline at end of file diff --git a/src/views/system/systemInstallPackage/index.vue b/src/views/system/systemInstallPackage/index.vue new file mode 100644 index 0000000..6f4b0a7 --- /dev/null +++ b/src/views/system/systemInstallPackage/index.vue @@ -0,0 +1,212 @@ +<template> + <ContentWrap> + <!-- 搜索工作栏 --> + <Search :schema="SystemInstallPackage.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" /> + </ContentWrap> + + <!-- 列表头部 --> + <TableHead + :HeadButttondata="HeadButttondata" + @button-base-click="buttonBaseClick" + :routeName="routeName" + @updataTableColumns="updataTableColumns" + @searchFormClick="searchFormClick" + :allSchemas="SystemInstallPackage.allSchemas" + /> + + <!-- 列表 --> + <ContentWrap> + <Table + :columns="tableColumns" + :data="tableObject.tableList" + :loading="tableObject.loading" + :pagination="{ + total: tableObject.total + }" + v-model:pageSize="tableObject.pageSize" + v-model:currentPage="tableObject.currentPage" + v-model:sort="tableObject.sort" + > + <template #installPackageName="{row}"> + <el-button type="primary" link @click="openDetail(row, '安装包名称', row.installPackageName)"> + <span>{{ row.installPackageName }}</span> + </el-button> + </template> + <template #action="{ row }"> + <ButtonBase :Butttondata="butttondata" @button-base-click="buttonTableClick($event,row)" /> + </template> + </Table> + </ContentWrap> + + <!-- 表单弹窗:添加/修改 --> + <BasicForm + ref="basicFormRef" + :sumFormDataByForm ="(formRef,formModel)=>{ + console.log(formModel) + const {uploadFile} = formModel + formRef.value.setValues({ + installPackageUrl:uploadFile + }) + }" + @success="formsSuccess" + :rules="SystemInstallPackageRules" + :formAllSchemas="SystemInstallPackage.allSchemas" + :apiUpdate="SystemInstallPackageApi.updateSystemInstallPackage" + :apiCreate="SystemInstallPackageApi.createSystemInstallPackage" + @searchTableSuccess="searchTableSuccess" + :isBusiness="false" + /> + + <!-- 详情 --> + <Detail ref="detailRef" :isBasic="true" :allSchemas="SystemInstallPackage.allSchemas" /> + +</template> + +<script setup lang="ts"> +// import download from '@/utils/download' +import { SystemInstallPackage,SystemInstallPackageRules } from './systemInstallPackage.data' +import * as SystemInstallPackageApi from '@/api/system/systemInstallPackage' +import * as defaultButtons from '@/utils/disposition/defaultButtons' +import TableHead from '@/components/TableHead/src/TableHead.vue' +import Detail from '@/components/Detail/src/Detail.vue' + +defineOptions({ name: 'SystemInstallPackage' }) + +const message = useMessage() // 消息弹窗 +const { t } = useI18n() // 国际化 + +const route = useRoute() // 路由信息 +const routeName = ref() +routeName.value = route.name +const tableColumns = ref(SystemInstallPackage.allSchemas.tableColumns) + +// 查询页面返回 +const searchTableSuccess = (formField, searchField, val, formRef) => { + nextTick(() => { + const setV = {} + setV[formField] = val[0][searchField] + formRef.setValues(setV) + }) +} + +// 字段设置 更新主列表字段 +const updataTableColumns = (val) => { + tableColumns.value = val +} + +const { tableObject, tableMethods } = useTable({ + getListApi: SystemInstallPackageApi.getSystemInstallPackagePage // 分页接口 +}) + +// 获得表格的各种操作 +const { getList, setSearchParams } = tableMethods + +// 列表头部按钮 +const HeadButttondata = [ + defaultButtons.defaultAddBtn(null), // 新增 + defaultButtons.defaultFreshBtn(null), // 刷新 + defaultButtons.defaultFilterBtn(null), // 筛选 + defaultButtons.defaultSetBtn(null), // 设置 +] +// 头部按钮事件 +const buttonBaseClick = (val, item) => { + if (val == 'add') { // 新增 + openForm('create') + } else if (val == 'refresh') { // 刷新 + getList() + } else if (val == 'filtrate') { // 筛选 + } else { // 其他按钮 + console.log('其他按钮', item) + } +} + +// 列表-操作按钮 +const butttondata = [ + defaultButtons.mainListEditBtn(null), // 编辑 + defaultButtons.mainListDeleteBtn(null), // 删除 +] + +// 列表-操作按钮事件 +const buttonTableClick = async (val, row) => { + if (val == 'edit') { // 编辑 + openForm('update', row) + } else if (val == 'delete') { // 删除 + handleDelete(row.id) + } +} + +/** 添加/修改操作 */ +const basicFormRef = ref() +const openForm = (type: string, row?: any) => { + if('create'==type){ + const currentTime = new Date().getTime() + const fileId = SystemInstallPackage.allSchemas.formSchema.find(item=>item.field=='fileId') + const uploadFile = SystemInstallPackage.allSchemas.formSchema.find(item=>item.field=='uploadFile') + if(fileId){ + fileId['value'] = currentTime + } + if(uploadFile){ + uploadFile['componentProps']['upData']['tableId'] = currentTime + uploadFile['componentProps']['modelValue']= [] + uploadFile['value'] = '' + + } + }else if(type=='update'){ + const uploadFile = SystemInstallPackage.allSchemas.formSchema.find(item=>item.field=='uploadFile') + uploadFile['componentProps']['modelValue']= [{ + name: row.installPackageUrl, + url: row.installPackageUrl, + }] + uploadFile['value'] = row.installPackageUrl + } + basicFormRef.value.open(type, row) +} + +// form表单提交 +const formsSuccess = async (formType,data) => { + if (formType === 'create') { + // delete data['uploadFile'] + await SystemInstallPackageApi.createSystemInstallPackage(data) + message.success(t('common.createSuccess')) + } else { + await SystemInstallPackageApi.updateSystemInstallPackage(data) + message.success(t('common.updateSuccess')) + } + basicFormRef.value.dialogVisible = false + getList() +} + +/** 详情操作 */ +const detailRef = ref() +const openDetail = (row: any, titleName: any, titleValue: any) => { + detailRef.value.openDetail(row, titleName, titleValue, 'basicSystemInstallPackage') +} + +/** 删除按钮操作 */ +const handleDelete = async (id: number) => { + try { + // 删除的二次确认 + await message.delConfirm() + // 发起删除 + await SystemInstallPackageApi.deleteSystemInstallPackage(id) + message.success(t('common.delSuccess')) + // 刷新列表 + await getList() + } catch {} +} + +// 筛选提交 +const searchFormClick = (searchData) => { + tableObject.params = { + isSearch: true, + filters: searchData.filters + } + getList() // 刷新当前列表 +} + +/** 初始化 **/ +onMounted(async () => { + getList() +}) + +</script> diff --git a/src/views/system/systemInstallPackage/systemInstallPackage.data.ts b/src/views/system/systemInstallPackage/systemInstallPackage.data.ts new file mode 100644 index 0000000..68cea48 --- /dev/null +++ b/src/views/system/systemInstallPackage/systemInstallPackage.data.ts @@ -0,0 +1,133 @@ +import type { CrudSchema } from '@/hooks/web/useCrudSchemas' +import { dateFormatter } from '@/utils/formatTime' + +// 表单校验 +export const SystemInstallPackageRules = reactive({ + installPackageName: [required], + installPackageVersion: [required], + installPackageUrl: [required], + isForcedUpdate: [required], +}) + +export const SystemInstallPackage = useCrudSchemas(reactive<CrudSchema[]>([ + { + label: 'id', + field: 'id', + sort: 'custom', + isForm:false, + }, + { + label: '安装包名称', + field: 'installPackageName', + sort: 'custom', + isSearch: true, + }, + { + label: '安装包版本', + field: 'installPackageVersion', + sort: 'custom', + form: { + component: 'InputNumber', + componentProps: { + min: 0, + precision: 6 + } + }, + }, + { + label: '安装路径', + field: 'installPackageUrl', + sort: 'custom', + form: { + value:'', + componentProps: { + // disabled: true + }, + } + }, + { + label: '是否强制更新', + field: 'isForcedUpdate', + sort: 'custom', + dictType: DICT_TYPE.TRUE_FALSE, + dictClass: 'string', + isTable: true, + table: { + width: 140 + }, + form: { + component: 'Switch', + value: 'TRUE', + componentProps: { + inactiveValue: 'FALSE', + activeValue: 'TRUE' + } + }, + }, + { + label: '更新内容', + field: 'updateContent', + sort: 'custom', + }, + { + label: '附件id', + field: 'fileId', + sort: 'custom', + isForm:false, + form: { + componentProps: { + disabled: true + }, + value:'', + } + }, + { + label: '备注', + field: 'remark', + sort: 'custom', + }, + { + label: '上传附件', + field: 'uploadFile', + sort: 'custom', + form: { + component: 'UploadFile', + value:'', + componentProps: { + modelValue:'', + upData:{ + tableId: '', + tableName: '' + }, + limit:1, + fileType:['apk'], + fileSize:100 + } + }, + }, + { + label: '创建时间', + field: 'createTime', + sort: 'custom', + formatter: dateFormatter, + isSearch: true, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, + isForm: false, + }, + { + label: '操作', + field: 'action', + isForm: false, + table: { + width: 150, + fixed: 'right' + } + } +]))