You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.2 KiB
Vue
62 lines
1.2 KiB
Vue
<script lang="ts">
|
|
import hwInputView from './viewElements/hw-input-view.vue';
|
|
import hwFormView from './viewElements/hw-form-view.vue';
|
|
import hwTableView from './viewElements/hw-table-view.vue';
|
|
|
|
export default {
|
|
name: 'hw-form',
|
|
components: {
|
|
hwInputView,
|
|
hwFormView,
|
|
hwTableView
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<template>
|
|
<div class="hw-form">
|
|
<div v-for="i in widgetList" :key="i.uuid">
|
|
<component :is="i.type+'-view'" :options="i.options" :tasks="i.tasks" :formData="formData" />
|
|
</div>
|
|
</div>
|
|
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
|
|
const props = defineProps({
|
|
widgetList: Object
|
|
});
|
|
|
|
const { widgetList } = toRefs(props);
|
|
|
|
const formData = ref({ pageVariable: {} });
|
|
provide('globalFormData', formData);
|
|
const formDataOperation = {
|
|
get: (key) => {
|
|
return formData.value.pageVariable[key];
|
|
},
|
|
set: (key, value) => {
|
|
formData.value.pageVariable[key] = value;
|
|
}
|
|
};
|
|
provide('formDataOperation', formDataOperation);
|
|
</script>
|
|
<style scoped lang="less">
|
|
.hw-form {
|
|
min-height: 20px;
|
|
border: 1px dashed #ccc;
|
|
margin: 2px;
|
|
padding: 2px;
|
|
position: relative;
|
|
|
|
&:hover {
|
|
background-color: #0001;
|
|
border-color: #00afff;
|
|
}
|
|
}
|
|
</style>
|
|
|
|
|
|
|