xuziqiang
5 months ago
9 changed files with 311 additions and 54 deletions
@ -1,10 +1,11 @@ |
|||||
const BASE_URL = '/carbon-smart'; |
import { BASE_URL } from './index'; |
||||
export enum device { |
export enum device { |
||||
queryDeviceTree = `${BASE_URL}/deviceInfo/queryDeviceTree`, |
queryDeviceTree = `${BASE_URL}/deviceInfo/queryDeviceTree`, // 左侧树
|
||||
queryDevicePage = `${BASE_URL}/deviceInfo/queryDevicePage`, |
queryDevicePage = `${BASE_URL}/deviceInfo/queryDevicePage`, // 列表
|
||||
dropArea = `${BASE_URL}/deviceInfo/dropArea`, |
dropArea = `${BASE_URL}/deviceInfo/dropArea`, // 查询下拉区域
|
||||
} |
} |
||||
|
|
||||
export enum group { |
export enum group { |
||||
queryDeviceGroupTree = `${BASE_URL}/deviceGroup/queryDeviceGroupTree`, |
queryDeviceGroupTree = `${BASE_URL}/deviceGroup/queryDeviceGroupTree`, // 左侧树
|
||||
|
creatOrUpdate = `${BASE_URL}/deviceGroup/creatOrUpdate`, // 左侧树节点新增编辑
|
||||
} |
} |
||||
|
@ -0,0 +1,88 @@ |
|||||
|
<template> |
||||
|
<ns-modal |
||||
|
ref="modalRef" |
||||
|
v-bind="extraModalConfig" |
||||
|
destroyOnClose |
||||
|
v-model:visible="visible" |
||||
|
:title="title" |
||||
|
:okButtonProps="buttonProps" |
||||
|
@ok="handleOk"> |
||||
|
<ns-form ref="formRef" :schemas="schemas" :model="formData" formLayout="formVertical" /> |
||||
|
</ns-modal> |
||||
|
</template> |
||||
|
|
||||
|
<script lang="ts" setup> |
||||
|
import { computed, ref, toRefs, watch } from 'vue'; |
||||
|
import { HttpRequestConfig, NsMessage, useApi } from '/nerv-lib/saas'; |
||||
|
import { useRoute } from 'vue-router'; |
||||
|
type Props = { |
||||
|
title?: string; |
||||
|
schemas: Array<any>; |
||||
|
api: string | object | Function; |
||||
|
data?: object; |
||||
|
extraModalConfig?: object; |
||||
|
}; |
||||
|
const route = useRoute(); |
||||
|
const { httpRequest } = useApi(); |
||||
|
|
||||
|
const props = withDefaults(defineProps<Props>(), { |
||||
|
title: '新增', |
||||
|
}); |
||||
|
const { schemas } = toRefs(props); |
||||
|
const formData = ref(); |
||||
|
watch( |
||||
|
() => props?.data, |
||||
|
(val) => { |
||||
|
formData.value = val; |
||||
|
}, |
||||
|
{ |
||||
|
immediate: true, |
||||
|
deep: true, |
||||
|
}, |
||||
|
); |
||||
|
const modalRef = ref(); |
||||
|
const formRef = ref(); |
||||
|
const visible = ref(false); |
||||
|
const validateResult = computed(() => { |
||||
|
return !formRef.value?.validateResult; |
||||
|
}); |
||||
|
const toggle = () => { |
||||
|
visible.value = !visible.value; |
||||
|
}; |
||||
|
|
||||
|
const setLoading = (loading = true) => { |
||||
|
buttonProps.value.loading = loading; |
||||
|
}; |
||||
|
|
||||
|
const handleOk = () => { |
||||
|
setLoading(true); |
||||
|
formRef.value |
||||
|
.triggerSubmit() |
||||
|
.then((data: any) => { |
||||
|
const { api } = props; |
||||
|
const requestConfig: HttpRequestConfig = { method: 'POST' }; |
||||
|
const { params } = route; |
||||
|
|
||||
|
httpRequest({ api, params: data, pathParams: params, requestConfig }) |
||||
|
.then(() => { |
||||
|
NsMessage.success('操作成功', 1, () => { |
||||
|
toggle(); |
||||
|
}); |
||||
|
}) |
||||
|
.finally(() => { |
||||
|
setLoading(false); |
||||
|
}); |
||||
|
}) |
||||
|
.catch(() => {}); |
||||
|
}; |
||||
|
|
||||
|
const buttonProps = ref({ |
||||
|
disabled: validateResult, |
||||
|
loading: false, |
||||
|
}); |
||||
|
|
||||
|
defineExpose({ |
||||
|
toggle, |
||||
|
}); |
||||
|
</script> |
||||
|
<style lang="less"></style> |
Loading…
Reference in new issue