feat(All):Initial
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
<script setup lang="ts">
|
||||
import {reactive, ref} from "vue";
|
||||
import {FormInst} from "naive-ui";
|
||||
import {t} from "@/language";
|
||||
import {CESIUM_DEFAULT_MAP, CESIUM_DEFAULT_MAP_TYPE} from "@/config/cesium";
|
||||
|
||||
const formRef = ref<FormInst | null>(null);
|
||||
const form = reactive({
|
||||
token: "",
|
||||
map: "Amap",
|
||||
mapType: "satellite",
|
||||
markMap: true
|
||||
})
|
||||
const rules = {
|
||||
token: {required: true, message: t("cesium['Please Enter Cesium Token']"), trigger: ['input', 'blur']}
|
||||
}
|
||||
|
||||
function getData(){
|
||||
return {...form};
|
||||
}
|
||||
|
||||
function validate(){
|
||||
return new Promise((resolve,reject) => {
|
||||
formRef.value?.validate((errors) => {
|
||||
if (!errors) {
|
||||
resolve('')
|
||||
}
|
||||
else {
|
||||
reject(errors)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
getData,validate
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<n-form :model="form" :rules="rules" label-placement="left" label-align="left" label-width="120" size="small" ref="formRef">
|
||||
<!-- cesium token -->
|
||||
<n-form-item label="Cesium Token" path="token">
|
||||
<n-input v-model:value="form.token" :placeholder="t('cesium.Please Enter Cesium Token')" />
|
||||
</n-form-item>
|
||||
|
||||
<!-- 默认底图 -->
|
||||
<n-form-item :label="t('cesium.Default base map')">
|
||||
<n-select v-model:value="form.map" :options="CESIUM_DEFAULT_MAP" />
|
||||
</n-form-item>
|
||||
|
||||
<!-- 默认底图类型 -->
|
||||
<n-form-item :label="t('cesium.Base map type')">
|
||||
<n-select v-model:value="form.mapType" :options="CESIUM_DEFAULT_MAP_TYPE" />
|
||||
</n-form-item>
|
||||
|
||||
<n-form-item label=" " v-if="form.mapType === 'satellite'">
|
||||
<n-checkbox v-model:checked="form.markMap">
|
||||
{{ t('cesium.Mark map') }}
|
||||
</n-checkbox>
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
</template>
|
||||
|
||||
<style scoped lang="less">
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,87 @@
|
||||
<script lang="ts" setup>
|
||||
import {ref, watch} from "vue";
|
||||
import {t} from "@/language";
|
||||
import {defaultProjectInfo} from "@astral3d/engine";
|
||||
import {SCENE_TYPE} from "@/utils/common/constant";
|
||||
|
||||
const props = withDefaults(defineProps<{
|
||||
value:ISceneFetchData | null
|
||||
}>(),{
|
||||
value:null
|
||||
})
|
||||
|
||||
const DefaultSceneData = defaultProjectInfo().sceneInfo;
|
||||
|
||||
const formRef = ref();
|
||||
const form = ref<ISceneFetchData>({...DefaultSceneData,hasDrawing: DefaultSceneData.hasDrawing ? 1 : 0});
|
||||
const rules = {
|
||||
sceneName: {required: true, message: t("layout.sider.project.please enter the scene name"), trigger: ['input', 'blur']}
|
||||
}
|
||||
|
||||
watch(() => props.value,(newVal) => {
|
||||
if(newVal === null){
|
||||
Object.keys(DefaultSceneData).forEach(key => {
|
||||
form.value[key] = DefaultSceneData[key];
|
||||
})
|
||||
}else{
|
||||
Object.keys(newVal).forEach(key => {
|
||||
// createTime & updateTime no replace
|
||||
if(["createTime","updateTime"].includes(key)) return;
|
||||
|
||||
form.value[key] = newVal[key];
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
function getData():ISceneFetchData{
|
||||
return {...form.value};
|
||||
}
|
||||
|
||||
function validate(){
|
||||
return new Promise((resolve,reject) => {
|
||||
formRef.value?.validate((errors) => {
|
||||
if (!errors) {
|
||||
resolve('')
|
||||
}
|
||||
else {
|
||||
reject(errors)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
getData,validate
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<n-form ref="formRef" :model="form" :rules="rules" size="small" class="max-w-100%"
|
||||
label-placement="left" label-width="100">
|
||||
<!-- 场景名称 -->
|
||||
<n-form-item :label="t('scene.Name')" path="sceneName">
|
||||
<n-input v-model:value="form.sceneName"
|
||||
:placeholder="t('layout.sider.project.please enter the scene name')" />
|
||||
</n-form-item>
|
||||
|
||||
<!-- 场景分类 -->
|
||||
<n-form-item :label="t('scene.Classification')">
|
||||
<n-select v-model:value="form.sceneType" filterable tag :options="SCENE_TYPE" />
|
||||
</n-form-item>
|
||||
|
||||
<!-- 场景描述 -->
|
||||
<n-form-item :label="t('scene.Introduction')">
|
||||
<n-input v-model:value="form.sceneIntroduction" type="textarea"
|
||||
:placeholder="t('layout.sider.project[\'please enter the scene introduction\']')" />
|
||||
</n-form-item>
|
||||
|
||||
<!-- 场景版本 -->
|
||||
<n-form-item :label="t('other.Version')">
|
||||
<n-input-number v-model:value="form.sceneVersion" button-placement="both" class="text-center" />
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
</template>
|
||||
|
||||
<style scoped lang="less">
|
||||
</style>
|
||||
Reference in New Issue
Block a user