Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
5b33c3d
feat: 火気使用申請UI実装
hikahana Jun 29, 2025
4a74430
feat: dashboardに付与
hikahana Jun 29, 2025
a507c24
feat: Add fire equipment order statistics to dashboard API
hikahana Jun 29, 2025
31123c6
feat: 火気使用申請、addmodal用取得API
hikahana Jun 29, 2025
5dcce1b
wip: 動作未検証、csv出力
hikahana Jun 29, 2025
7453611
feat: Add routes for fire equipment order and related CSV outputs
hikahana Jun 29, 2025
7c51e83
機能追加: 火気使用申請APIでfes_year_idによる絞り込みと団体情報の付与に対応
hikahana Jul 6, 2025
d7316f4
feat: 火気使用申請のCSV出力を改善(燃料の日本語変換・nilデータ対応)
hikahana Jul 6, 2025
abd0002
fix: 修正火気使用申請の表示と入力フォームの改善(燃料選択肢の追加とデータ取得の修正)
hikahana Jul 6, 2025
9077b6f
feat: Enhance order status check UI and API to include fire equipment…
hikahana Jul 18, 2025
121de5d
refactor: Update terminology from "使用方法" to "使用用途" in UI and CSV outp…
hikahana Jul 18, 2025
50c7a18
refactor: Update terminology from "品目" and "数量" to "火気の名称" and "火気の台数…
hikahana Jul 18, 2025
dca695b
refactor: Update CSV output columns for public relations and fire equ…
hikahana Jul 18, 2025
f7ee90a
refactor: Replace fuel name retrieval with direct Japanese translatio…
hikahana Jul 18, 2025
c7b21c0
refactor: 燃料翻訳ロジックをFireEquipmentOrderモデルに統合し、FuelTranslatable concernを削除
hikahana Jul 20, 2025
cf583da
Merge branch 'gm3/develop' into feat/hikahana/fire-equpment-admin-ui
hikahana Jul 20, 2025
b004376
refactor: ダッシュボードUIから未使用の防火器具申請セクションを削除
hikahana Jul 20, 2025
10671e9
fix: インデント修正
hikahana Jul 20, 2025
a56146c
fix: 火気使用申請の申請状況を正式なものに訂正
hikahana Jul 20, 2025
ea87213
fix: AIの生産物だから削除
hikahana Jul 20, 2025
b0ddf32
fix: nilを返すように
hikahana Jul 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions admin_view/nuxt-project/components/Menu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,11 @@ export default {
title: "調理工程申請",
icon: "restaurant",
click: "/cooking_process_order",
},
{
title: "火気使用申請",
icon: "local_fire_department",
click: "/fire_equipment_orders",
}
],
// 操作系
Expand Down
214 changes: 214 additions & 0 deletions admin_view/nuxt-project/pages/fire_equipment_orders/_id.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
<template>
<div class="main-content">
<SubHeader
v-bind:pageTitle="fireEquipmentOrder.name"
pageSubTitle="火気使用申請一覧"
>
<CommonButton iconName="edit" :on_click="openEditModal">
編集
</CommonButton>
<CommonButton iconName="delete" :on_click="openDeleteModal">
削除
</CommonButton>
</SubHeader>
<Row>
<Card padding="40px 150px" gap="20px">
<Row justify="start">
<h4>基本情報</h4>
</Row>
<VerticalTable>
<tr>
<th>ID</th>
<td>{{ fireEquipmentOrder.id }}</td>
</tr>
<tr>
<th>団体</th>
<td>{{ fireEquipmentOrder.group.name }}</td>
</tr>
<tr>
<th>火気の名称</th>
<td>{{ fireEquipmentOrder.name }}</td>
</tr>
<tr>
<th>火気の台数</th>
<td>{{ fireEquipmentOrder.quantity }}</td>
</tr>
<tr>
<th>燃料</th>
<td>{{ fireEquipmentOrder.fuel_japanese }}</td>
</tr>
<tr>
<th>使用用途</th>
<td>{{ fireEquipmentOrder.usage }}</td>
</tr>
<tr>
<th>持ち帰り</th>
<td>{{ fireEquipmentOrder.is_takeaway ? 'はい' : 'いいえ' }}</td>
</tr>
<tr>
<th>備考</th>
<td>{{ fireEquipmentOrder.remark }}</td>
</tr>
<tr>
<th>登録日時</th>
<td>{{ fireEquipmentOrder.created_at | formatDate }}</td>
</tr>
<tr>
<th>編集日時</th>
<td>{{ fireEquipmentOrder.updated_at | formatDate }}</td>
</tr>
</VerticalTable>
</Card>
</Row>

<EditModal
@close="closeEditModal"
v-if="isOpenEditModal"
title="火気使用申請の編集"
>
<template v-slot:form>
<div>
<h3>火気の名称</h3>
<input v-model="name" placeholder="入力してください" />
</div>
<div>
<h3>火気の台数</h3>
<input v-model="quantity" type="number" placeholder="入力してください" />
</div>
<div>
<h3>燃料</h3>
<select v-model="fuel">
<option value="">選択してください</option>
<option value="gas_bottle">ガスボンベ</option>
<option value="lp_gas">LPガス</option>
<option value="charcoal">炭</option>
</select>
</div>
<div>
<h3>使用用途</h3>
<input v-model="usage" placeholder="入力してください" />
</div>
<div>
<h3>持ち帰り</h3>
<input type="checkbox" v-model="isTakeaway" />
</div>
<div>
<h3>備考</h3>
<textarea v-model="remark" placeholder="入力してください"></textarea>
</div>
</template>
<template v-slot:method>
<CommonButton iconName="edit" :on_click="edit">登録</CommonButton>
</template>
</EditModal>

<DeleteModal
@close="closeDeleteModal"
v-if="isOpenDeleteModal"
title="火気使用申請の削除"
>
<template v-slot:method>
<YesButton iconName="delete" :on_click="destroy">はい</YesButton>
<NoButton iconName="close" :on_click="closeDeleteModal"
>いいえ</NoButton
>
</template>
</DeleteModal>

<SnackBar v-if="isOpenSnackBar" @close="closeSnackBar">
{{ message }}
</SnackBar>
</div>
</template>

<script>
import { mapState } from "vuex";
export default {
data() {
return {
isOpenEditModal: false,
isOpenDeleteModal: false,
isOpenSnackBar: false,
message: "",
// form fields
name: "",
quantity: 1,
fuel: "",
usage: "",
isTakeaway: false,
remark: "",
};
},
async asyncData({ $axios, route }) {
const routeId = route.path.replace("/fire_equipment_orders/", "");
const url = "/fire_equipment_orders/" + routeId;
const response = await $axios.$get(url);
return {
fireEquipmentOrder: response.data,
routeId: routeId,
};
},
computed: {
...mapState({
roleID: (state) => state.users.role,
}),
},
methods: {
openEditModal() {
this.name = this.fireEquipmentOrder.name;
this.quantity = this.fireEquipmentOrder.quantity;
this.fuel = this.fireEquipmentOrder.fuel;
this.usage = this.fireEquipmentOrder.usage;
this.isTakeaway = this.fireEquipmentOrder.is_takeaway;
this.remark = this.fireEquipmentOrder.remark;
this.isOpenEditModal = true;
},
closeEditModal() {
this.isOpenEditModal = false;
},
openDeleteModal() {
this.isOpenDeleteModal = true;
},
closeDeleteModal() {
this.isOpenDeleteModal = false;
},
openSnackBar(message) {
this.message = message;
this.isOpenSnackBar = true;
setTimeout(this.closeSnackBar, 2000);
},
closeSnackBar() {
this.isOpenSnackBar = false;
},
async reload() {
const url = "/fire_equipment_orders/" + this.routeId;
const response = await this.$axios.$get(url);
this.fireEquipmentOrder = response.data;
},
async edit() {
const url = "/fire_equipment_orders/" + this.routeId;
const params = {
fire_equipment_order: {
name: this.name,
quantity: this.quantity,
fuel: this.fuel,
usage: this.usage,
is_takeaway: this.isTakeaway,
remark: this.remark,
}
};
await this.$axios.$put(url, params).then(() => {
this.openSnackBar("申請を編集しました");
this.reload();
this.closeEditModal();
});
},
async destroy() {
const url = "/fire_equipment_orders/" + this.routeId;
await this.$axios.$delete(url);
this.$router.push("/fire_equipment_orders");
},

},
};
</script>
Loading