src/api/data/channel/http/index.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/utils/dict.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/data/channel/http/HttpApiForm.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/data/channel/http/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/data/channel/http/index.ts
@@ -29,7 +29,7 @@ // 新增HttpApi export const createHttpApi = (data: HttpApiVO) => { return request.post({ url: '/data/channel/http/api/add', data }) return request.post({ url: '/data/channel/http/api/create', data }) } // 修改HttpApi src/utils/dict.ts
@@ -247,5 +247,6 @@ OPCUA_SECURITY_POLICY = 'opcua_security_policy', OPCUA_SECURITY_MODE = 'opcua_security_mode', OPCUA_CONNECTION_TYPE = 'opcua_connection_type', HTTP_METHOD = 'http_method', } src/views/data/channel/http/HttpApiForm.vue
@@ -9,51 +9,47 @@ > <el-row> <el-col :span="12"> <el-form-item label="名称" prop="name"> <el-input v-model="formData.name" placeholder="请输入名称" /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="编码" prop="code"> <el-input v-model="formData.code" placeholder="请输入编码" /> <el-input v-model="formData.code" placeholder="请输入编码"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="名称" prop="name"> <el-input v-model="formData.name" placeholder="请输入名称"/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="24"> <el-form-item label="url" prop="url"> <el-input v-model="formData.url" placeholder="请输入url" /> <el-input v-model="formData.url" placeholder="请输入url"/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="方法" prop="method"> <el-input v-model="formData.method" placeholder="请输入方法" /> <el-form-item label="请求方法" prop="method"> <el-select v-model="formData.method" placeholder="请选择"> <el-option v-for="dict in getStrDictOptions(DICT_TYPE.HTTP_METHOD)" :key="dict.value" :label="dict.label" :value="dict.value" /> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="采集类型" prop="collectType"> <el-input v-model="formData.collectType" placeholder="请输入采集类型" /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="参数" prop="param"> <el-input v-model="formData.param" placeholder="请输入参数" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="描述" prop="descp"> <el-input v-model="formData.descp" placeholder="请输入描述" /> <el-input v-model="formData.param" placeholder="请输入参数"/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="状态" prop="status"> <el-input v-model="formData.status" placeholder="请输入状态" /> <el-col :span="24"> <el-form-item label="描述" prop="descp"> <el-input v-model="formData.descp" placeholder="请输入描述" type="textarea" maxlength="100" show-word-limit/> </el-form-item> </el-col> </el-row> @@ -66,16 +62,81 @@ </template> <script lang="ts" setup> import * as HttpApi from '@/api/data/channel/http' import { DICT_TYPE, getStrDictOptions, getBoolDictOptions } from '@/utils/dict' defineOptions({ name: 'DataHttpApiForm' }) defineOptions({name: 'DataHttpApiForm'}) 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({ 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, name: undefined, code: undefined, url: undefined, method: undefined, collectType: undefined, param: undefined, descp: undefined, status: undefined }) const formRules = reactive({ name: [{required: true, message: '名称不能为空', trigger: 'blur'}], code: [{required: true, message: '编码不能为空', trigger: 'blur'}], url: [{required: true, message: 'url不能为空', 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 HttpApi.getHttpApi(id) } finally { formLoading.value = false } } } defineExpose({open}) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 const submitForm = async () => { // 校验表单 if (!formRef) return const valid = await formRef.value.validate() if (!valid) return // 提交请求 formLoading.value = true try { const data = formData.value as unknown as HttpApi.HttpApiVO if (formType.value === 'create') { await HttpApi.createHttpApi(data) message.success(t('common.createSuccess')) } else { await HttpApi.updateHttpApi(data) message.success(t('common.updateSuccess')) } dialogVisible.value = false // 发送操作成功的事件 emit('success') } finally { formLoading.value = false } } /** 重置表单 */ const resetForm = () => { formData.value = { id: undefined, name: undefined, code: undefined, @@ -85,71 +146,7 @@ param: undefined, descp: undefined, status: undefined }) const formRules = reactive({ name: [{ required: true, message: '名称不能为空', trigger: 'blur' }], code: [{ required: true, message: '编码不能为空', trigger: 'blur' }], url: [{ required: true, message: 'url不能为空', 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 HttpApi.getHttpApi(id) } finally { formLoading.value = false } } } defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 const submitForm = async () => { // 校验表单 if (!formRef) return const valid = await formRef.value.validate() if (!valid) return // 提交请求 formLoading.value = true try { const data = formData.value as unknown as HttpApi.HttpApiVO if (formType.value === 'create') { await HttpApi.createHttpApi(data) message.success(t('common.createSuccess')) } else { await HttpApi.updateHttpApi(data) message.success(t('common.updateSuccess')) } dialogVisible.value = false // 发送操作成功的事件 emit('success') } finally { formLoading.value = false } } /** 重置表单 */ const resetForm = () => { formData.value = { id: undefined, name: undefined, code: undefined, url: undefined, method: undefined, collectType: undefined, param: undefined, descp: undefined, status: undefined } formRef.value?.resetFields() } formRef.value?.resetFields() } </script> src/views/data/channel/http/index.vue
@@ -19,20 +19,20 @@ </el-form-item> <el-form-item> <el-button @click="handleQuery"> <Icon icon="ep:search" class="mr-5px" /> <Icon icon="ep:search" class="mr-5px"/> 搜索 </el-button> <el-button @click="resetQuery"> <Icon icon="ep:refresh" class="mr-5px" /> <Icon icon="ep:refresh" class="mr-5px"/> 重置 </el-button> <el-button type="primary" plain @click="openForm('create')" v-hasPermi="['system:tenant:create']" v-hasPermi="['data:channel-http:create']" > <Icon icon="ep:plus" class="mr-5px" /> <Icon icon="ep:plus" class="mr-5px"/> 新增 </el-button> </el-form-item> @@ -42,22 +42,19 @@ <!-- 列表 --> <ContentWrap> <el-table v-loading="loading" :data="list"> <el-table-column label="名称" align="center" prop="name" /> <el-table-column label="编码" align="center" prop="code" /> <el-table-column label="url" align="center" prop="url" /> <el-table-column label="方法" align="center" prop="method" /> <el-table-column label="采集类型" align="center" prop="collectType" /> <el-table-column label="参数" align="center" prop="param" /> <el-table-column label="描述" align="center" prop="descp" /> <el-table-column label="状态" align="center" prop="status" /> <el-table-column label="名称" align="center" prop="name"/> <el-table-column label="编码" align="center" prop="code"/> <el-table-column label="url" header-align="center" align="left" min-width="300" prop="url"/> <el-table-column label="方法" align="center" prop="method"/> <el-table-column label="参数" align="center" prop="param"/> <el-table-column label="描述" header-align="center" align="left" min-width="300" prop="descp"/> <el-table-column label="操作" align="center" min-width="110" fixed="right"> <template #default="scope"> <el-button link type="primary" @click="openForm('update', scope.row.id)" v-hasPermi="['system:tenant:update']" v-hasPermi="['data:channel-http:update']" > 编辑 </el-button> @@ -65,7 +62,7 @@ link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['system:tenant:delete']" v-hasPermi="['data:channel-http:delete']" > 删除 </el-button> @@ -82,75 +79,75 @@ </ContentWrap> <!-- 表单弹窗:添加/修改 --> <HttpApiForm ref="formRef" @success="getList" /> <HttpApiForm ref="formRef" @success="getList"/> </template> <script lang="ts" setup> import * as HttpApi from '@/api/data/channel/http' import HttpApiForm from './HttpApiForm.vue' defineOptions({name: 'DataHttp'}) defineOptions({name: 'DataHttpApi'}) const message = useMessage() // 消息弹窗 const {t} = useI18n() // 国际化 const message = useMessage() // 消息弹窗 const {t} = useI18n() // 国际化 const loading = ref(true) // 列表的加载中 const total = ref(0) // 列表的总页数 const list = ref([]) // 列表的数据 const queryParams = reactive({ pageNo: 1, pageSize: 10, name: undefined }) const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 const loading = ref(true) // 列表的加载中 const total = ref(0) // 列表的总页数 const list = ref([]) // 列表的数据 const queryParams = reactive({ pageNo: 1, pageSize: 10, name: undefined }) const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 /** 查询列表 */ const getList = async () => { loading.value = true try { const page = await HttpApi.getHttpApiPage(queryParams) list.value = page.list total.value = page.total } finally { loading.value = false } /** 查询列表 */ const getList = async () => { loading.value = true try { const page = await HttpApi.getHttpApiPage(queryParams) list.value = page.list total.value = page.total } finally { loading.value = false } } /** 搜索按钮操作 */ const handleQuery = () => { queryParams.pageNo = 1 getList() } /** 搜索按钮操作 */ const handleQuery = () => { queryParams.pageNo = 1 getList() } /** 重置按钮操作 */ const resetQuery = () => { queryFormRef.value.resetFields() handleQuery() } /** 重置按钮操作 */ const resetQuery = () => { queryFormRef.value.resetFields() handleQuery() } /** 添加/修改操作 */ const formRef = ref() const openForm = (type: string, id?: number) => { formRef.value.open(type, id) } /** 添加/修改操作 */ const formRef = ref() const openForm = (type: string, id?: number) => { formRef.value.open(type, id) } /** 删除按钮操作 */ const handleDelete = async (id: number) => { try { // 删除的二次确认 await message.delConfirm() // 发起删除 await HttpApi.deleteHttpApi(id) message.success(t('common.delSuccess')) // 刷新列表 await getList() } catch { } } /** 初始化 **/ onMounted(async () => { /** 删除按钮操作 */ const handleDelete = async (id: number) => { try { // 删除的二次确认 await message.delConfirm() // 发起删除 await HttpApi.deleteHttpApi(id) message.success(t('common.delSuccess')) // 刷新列表 await getList() }) } catch { } } /** 初始化 **/ onMounted(async () => { await getList() }) </script>