diff --git a/admin_view/nuxt-project/components/Menu.vue b/admin_view/nuxt-project/components/Menu.vue index 80bf09427..e53094717 100644 --- a/admin_view/nuxt-project/components/Menu.vue +++ b/admin_view/nuxt-project/components/Menu.vue @@ -169,6 +169,11 @@ export default { title: "調理工程申請", icon: "restaurant", click: "/cooking_process_order", + }, + { + title: "火気使用申請", + icon: "local_fire_department", + click: "/fire_equipment_orders", } ], // 操作系 diff --git a/admin_view/nuxt-project/pages/fire_equipment_orders/_id.vue b/admin_view/nuxt-project/pages/fire_equipment_orders/_id.vue new file mode 100644 index 000000000..972dc5133 --- /dev/null +++ b/admin_view/nuxt-project/pages/fire_equipment_orders/_id.vue @@ -0,0 +1,214 @@ + + + diff --git a/admin_view/nuxt-project/pages/fire_equipment_orders/index.vue b/admin_view/nuxt-project/pages/fire_equipment_orders/index.vue new file mode 100644 index 000000000..9db343b96 --- /dev/null +++ b/admin_view/nuxt-project/pages/fire_equipment_orders/index.vue @@ -0,0 +1,265 @@ + + + diff --git a/admin_view/nuxt-project/pages/order_status_check/index.vue b/admin_view/nuxt-project/pages/order_status_check/index.vue index 1203da967..1dcd76b10 100644 --- a/admin_view/nuxt-project/pages/order_status_check/index.vue +++ b/admin_view/nuxt-project/pages/order_status_check/index.vue @@ -92,6 +92,11 @@
✖️
+ +
+
+
✖️
+
@@ -116,9 +121,9 @@
✖️
- -
-
+ +
+
✖️
@@ -151,6 +156,7 @@ export default { "アナウンス", "模擬店平面図", "調理工程", + "火気使用申請", ], groups: [], unregisteredGroups: [], @@ -371,10 +377,11 @@ export default { }, // 申請しないデータかどうかを判定するメソッド isUnregistered(groupId, orderType) { - return this.unregisteredGroups.some(item => + return this.unregisteredGroups.some(item => item.group_id === groupId && item.order_type === orderType ); }, + }, }; diff --git a/api/app/controllers/api/v1/groups_api_controller.rb b/api/app/controllers/api/v1/groups_api_controller.rb index bb0008ea9..4d73e3bc0 100644 --- a/api/app/controllers/api/v1/groups_api_controller.rb +++ b/api/app/controllers/api/v1/groups_api_controller.rb @@ -98,4 +98,14 @@ def get_search_groups end end + def get_groups_for_fire_equipment_order + fes_year_id = params[:fes_year_id] + if fes_year_id.present? && fes_year_id.to_i != 0 + @groups = Group.where(fes_year_id: fes_year_id).order(:id) + else + @groups = Group.all.order(:id) + end + render json: { data: @groups } + end + end diff --git a/api/app/controllers/api/v1/order_status_check_api_controller.rb b/api/app/controllers/api/v1/order_status_check_api_controller.rb index 88e2c7f21..d3d5ef1b7 100644 --- a/api/app/controllers/api/v1/order_status_check_api_controller.rb +++ b/api/app/controllers/api/v1/order_status_check_api_controller.rb @@ -26,7 +26,8 @@ def fit_group_index_for_admin_view(groups) "public_relation": group.public_relation.nil? ? nil : group.public_relation.id, "venue_map": group.venue_map.nil? ? nil : group.venue_map.id, "announcement": group.announcement.nil? ? nil : group.announcement.status, - "cooking_process_order": group.cooking_process_order.nil? ? nil : group.cooking_process_order.id + "cooking_process_order": group.cooking_process_order.nil? ? nil : group.cooking_process_order.id, + "fire_equipment_order": group.fire_equipment_orders.count == 0 ? nil : group.fire_equipment_orders[0].status } } end diff --git a/api/app/controllers/api/v1/output_csv_controller.rb b/api/app/controllers/api/v1/output_csv_controller.rb index 25104cb50..493ce5ad4 100644 --- a/api/app/controllers/api/v1/output_csv_controller.rb +++ b/api/app/controllers/api/v1/output_csv_controller.rb @@ -413,13 +413,13 @@ def output_users_csv @groups = Group.where(fes_year_id: params[:fes_year_id]).preload(:user, :sub_rep, user: :user_detail) # 必要な関連を事前にロード filename_year = FesYear.find(params[:fes_year_id]).year_num end - + @categories = [] for i in 1..6 do group = @groups.where(group_category_id: i) @categories << group end - + bom = "\uFEFF" csv_data = CSV.generate(bom) do |csv| column_name = %w(参加団体形式 団体番号 団体名 氏名 電話番号 メールアドレス 備考欄) @@ -452,10 +452,10 @@ def output_users_csv end end end - + send_data(csv_data, filename: "連絡先リスト_#{filename_year}年度.csv") end - + def output_announcements_csv @announcements = Announcement.all @@ -506,16 +506,15 @@ def output_public_relations_csv csv_data = CSV.generate(bom) do |csv| column_name = %w(参加団体名 PR文 URL アナウンス有無) csv << column_name - @public_relations.each do |public_relations| - # データが存在しない場合はスキップする - if public_relations.nil? + @public_relations.each do |public_relation| + if public_relation.nil? next end column_values = [ - public_relations.group.name, - public_relations.blurb, - public_relations.picture_path, - public_relations.is_announcement_requested ? "有" : "無", + public_relation.group.name, + public_relation.blurb, + public_relation.picture_path, + public_relation.is_announcement_requested ? "有" : "無", ] csv << column_values end @@ -523,4 +522,35 @@ def output_public_relations_csv send_data(csv_data, filename:"参加団体PR申請_#{filename_year}年度.csv") end + def output_fire_equipment_orders_csv + if params[:fes_year_id].to_i == 0 + @fire_equipment_orders = FireEquipmentOrder.all + filename_year = "全" + else + fes_year = FesYear.find(params[:fes_year_id]) + @fire_equipment_orders = FireEquipmentOrder.joins(:group).where(groups: { fes_year_id: fes_year.id }) + filename_year = fes_year.year_num + end + bom = "\uFEFF" + csv_data = CSV.generate(bom) do |csv| + column_name = %w(ID 団体名 火気の名称 火気の台数 燃料 使用用途 備考) + csv << column_name + @fire_equipment_orders.each do |order| + next if order.nil? + group_name = order.group&.name || "" + column_values = [ + order.id, + group_name, + order.name, + order.quantity, + order.fuel_japanese, + order.usage, + order.remark, + ] + csv << column_values + end + end + send_data(csv_data, filename: "火気使用申請_#{filename_year}年度.csv") + end + end diff --git a/api/app/controllers/fire_equipment_orders_controller.rb b/api/app/controllers/fire_equipment_orders_controller.rb index 29edd5394..28d51fcce 100644 --- a/api/app/controllers/fire_equipment_orders_controller.rb +++ b/api/app/controllers/fire_equipment_orders_controller.rb @@ -4,13 +4,26 @@ class FireEquipmentOrdersController < ApplicationController # GET /fire_equipment_orders def index - @fire_equipment_orders = FireEquipmentOrder.all - render json: fmt(ok, @fire_equipment_orders) + fes_year_id = params[:fes_year_id] + if fes_year_id.present? && fes_year_id.to_i != 0 + @fire_equipment_orders = FireEquipmentOrder.joins(:group).where(groups: { fes_year_id: fes_year_id }) + else + @fire_equipment_orders = FireEquipmentOrder.includes(:group).all + end + orders_with_fuel_japanese = @fire_equipment_orders.map do |order| + order.as_json(include: { group: { only: [:id, :name] } }).merge( + fuel_japanese: order.fuel_japanese + ) + end + render json: fmt(ok, orders_with_fuel_japanese) end # GET /fire_equipment_orders/:id def show - render json: fmt(ok, @fire_equipment_order) + order_with_fuel_japanese = @fire_equipment_order.as_json(include: { group: { only: [:id, :name] } }).merge( + fuel_japanese: @fire_equipment_order.fuel_japanese + ) + render json: fmt(ok, order_with_fuel_japanese) end # POST /fire_equipment_orders diff --git a/api/app/models/fire_equipment_order.rb b/api/app/models/fire_equipment_order.rb index a4e0b9d8e..9a5d6f9e0 100644 --- a/api/app/models/fire_equipment_order.rb +++ b/api/app/models/fire_equipment_order.rb @@ -1,4 +1,19 @@ class FireEquipmentOrder < ApplicationRecord + belongs_to :group # enum gas_bottle: ガスボンベ、lp_gas: LPガス、charcoal: 炭 enum fuel: { gas_bottle: 1, lp_gas: 2, charcoal: 3 } + + FUEL_TRANSLATIONS = { + 'gas_bottle' => 'ガスボンベ', + 'lp_gas' => 'LPガス', + 'charcoal' => '炭' + }.freeze + + def fuel_japanese + FUEL_TRANSLATIONS[self.fuel] || self.fuel.to_s + end + + def self.fuel_options_for_select + FUEL_TRANSLATIONS.map { |key, value| [value, key] } + end end diff --git a/api/config/routes.rb b/api/config/routes.rb index b5ee93e9e..d425ec983 100644 --- a/api/config/routes.rb +++ b/api/config/routes.rb @@ -244,6 +244,9 @@ get "get_cooking_process_order_by_food_product_id/:food_product_id" => "cooking_process_orders_api#get_cooking_process_order_by_food_product_id" get "get_groups_have_no_cooking_process_order" => "groups_api#get_groups_have_no_cooking_process_order" + #---火気使用申請 + get "get_groups_for_fire_equipment_order" => "groups_api#get_groups_for_fire_equipment_order" + #---実行委員担当者申請ページ get "get_contact_person_index_for_admin_view" => "contact_persons_api#get_contact_person_index_for_admin_view" get "get_contact_person_show_for_admin_view/:id" => "contact_persons_api#get_contact_person_show_for_admin_view" @@ -288,6 +291,12 @@ get "get_announcements_csv" => "output_csv#output_announcements_csv" get "get_cooking_process_orders_csv" => "output_csv#output_cooking_process_orders_csv" get "get_public_relations_csv/:fes_year_id" => "output_csv#output_public_relations_csv" + get "get_fire_equipment_orders_csv/:fes_year_id" => "output_csv#output_fire_equipment_orders_csv" + + #---pdf出力 + get "output_pdf/rental_items" => "print_pdf#rental_items_pdf" + get "output_pdf/power_orders" => "print_pdf#power_orders_pdf" + get "get_project_check_list_pdf/:group_id" => "output_pdf#output_project_check_list_pdf" # ダッシュボード get "dashboard" => "dashboard_api#get_dashboard_info" @@ -342,4 +351,4 @@ end end -end \ No newline at end of file +end