Newer
Older
<el-row :gutter="20">
<el-col :span="4"><div class="grid-content ep-bg-purple" /></el-col>
<el-col :span="12">
<el-card style="width: 100%">
<template #header>
<div class="card-header">
<span>Your Offer Information</span>
</div>
</template>
<el-form
ref="ruleFormRef"
:model="ruleForm"
:rules="rules"
label-width="180px"
:label-position="'right'"
class="demo-ruleForm"
:size="formSize"
status-icon
>
<el-form-item label="Located City" prop="spaceLocateCity">
<el-input v-model="ruleForm.spaceLocateCity" />
<el-form-item label="Zip Code" prop="zipCode">
<el-input v-model="ruleForm.zipCode" placeholder="24061.." />
<el-col :span="24">
<el-form-item label="Space Type" prop="spaceType">
<el-select
v-model="ruleForm.spaceType"
placeholder="Please select your Space Type"
>
<el-option
label="Apartment (No Roommates)"
value="apt-single"
/>
<el-option
label="Apartment (Shared with Roommates)"
value="apt-share"
/>
<el-option label="Townhouse (No Roommates)" value="th-single" />
<el-option
label="Townhouse (Shared with Roommates)"
value="th-share"
/>
<el-option
label="Single Family House (No Roommates)"
value="sfh-single"
/>
<el-option
label="Single Family House (Shared with Roommates)"
value="sfh-share"
/>
<el-option label="Other" value="other" />
</el-select>
</el-form-item>
</el-col>
<el-form-item
label="Other Type"
v-if="ruleForm.spaceType === 'other'"
:required="ruleForm.spaceType === 'other'"
<el-input v-model="ruleForm.otherSpaceType" />
</el-col>
</el-form-item>
<el-form-item label="Space Available for Offering?">
<el-col :span="2">
<el-form-item prop="offering">
<el-switch v-model="ruleForm.offering" />
</el-form-item>
</el-col>
</el-form-item>
<el-form-item></el-form-item>
<el-form-item
label="Time Window"
v-if="ruleForm.offering"
:required="ruleForm.offering"
type="date"
label="Pick a date"
placeholder="Pick a date"
style="width: 100%"
/>
</el-form-item>
</el-col>
<el-col class="text-center" :span="2">
<span class="text-gray-500"> To </span>
</el-col>
<el-col :span="7">
<el-form-item prop="_availableTimeEnd">
label="Pick a time"
placeholder="Pick a time"
style="width: 100%"
/>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item
label="Max Number of People"
:required="ruleForm.offering"
v-if="ruleForm.offering"
prop="_maxNumberOfPeople"
<el-input v-model="ruleForm.maxNumberOfPeople" />
</el-col>
</el-form-item>
<el-form-item></el-form-item>
<el-form-item label="Space Details:" prop="spaceDetails">
><el-input v-model="ruleForm.spaceDetails" type="textarea"
/></el-col>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm(ruleFormRef)"
>Create</el-button
>
<el-button @click="resetForm(ruleFormRef)">Reset</el-button>
</el-form-item>
</el-form>
</el-card>
</el-col>
<el-col :span="4">
<el-card style="width: 100%"
><template #header>
<div class="card-header">
<span>Match Request</span>
</div>
</template>
</el-card></el-col
>
<el-col :span="4"></el-col>
</el-row>
<script lang="ts" setup>
import { reactive, ref } from "vue";
import type { FormInstance, FormRules } from "element-plus";
import { OfferFormModel } from "@/models/OfferFormModel";
import * as OfferPageService from "@/services/OfferPageService";
// Form verification relate field
const formSize = ref("default");
const ruleFormRef = ref<FormInstance>();
message: "Please give your space location",
trigger: "blur",
{ min: 0, max: 20, message: "Length should be 0 to 20", trigger: "blur" },
message: "Please give your zip code of your space",
trigger: "blur",
// TODO: uncomment it when API connection ready
const userId = -1;
//const ruleForm = reactive(OfferPageService.getUserOfferInfoFromServer(-1));
const ruleForm = reactive(new OfferFormModel());
const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
await formEl.validate((valid, fields) => {
if (valid) {
let result = OfferPageService.createNewUserOffer(userId, ruleForm);
// TODO: Check the return result
console.log("submit!");
} else {
console.log("error submit!", fields);
}
console.log(ruleForm);
});
};
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
const updateFrom = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
await formEl.validate((valid, fields) => {
if (valid) {
let result = OfferPageService.updateOffer(userId, ruleForm);
// TODO: Check the return result
console.log("update submit!");
} else {
console.log("error submit!", fields);
}
console.log(ruleForm);
});
};
const deleteFrom = () => {
// TODO: Check the return result
let result = OfferPageService.deleteOffer(userId, ruleForm.offerId);
console.log("Record deleted");
};
const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return;
formEl.resetFields();
};
const options = Array.from({ length: 10000 }).map((_, idx) => ({
value: `${idx + 1}`,
label: `${idx + 1}`,
}));