detail.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <div class="app-container">
  3. <el-row :gutter="20">
  4. <el-col :span="12" v-for="(item, index) in formItems.slice(0, 6)" :key="index">
  5. <el-form-item :label="item.label" label-width="125px" label-position="left">
  6. <el-input v-model="data.form[item.prop]" disabled class="small-input" />
  7. </el-form-item>
  8. </el-col>
  9. <el-col :span="24">
  10. <el-form-item label="住所" label-width="125px" label-position="left">
  11. <el-input v-model="data.form.address1" disabled class="address-input" />
  12. </el-form-item>
  13. </el-col>
  14. <el-col :span="12" v-for="(item, index) in formItems.slice(6)" :key="index + 6">
  15. <el-form-item :label="item.label" label-width="125px" label-position="left">
  16. <el-input v-model="data.form[item.prop]" disabled class="small-input" />
  17. </el-form-item>
  18. </el-col>
  19. </el-row>
  20. </div>
  21. </template>
  22. <script setup>
  23. import { reactive} from 'vue';
  24. import { useRoute } from 'vue-router';
  25. import { getCustomerDetail } from "@/api/fcbi/customer.js";
  26. // ルート情報の取得
  27. const route = useRoute();
  28. // ルートパラメータから顧客IDを取得
  29. const customerId = route.params.customerId;
  30. const data = reactive({
  31. form: {},
  32. queryParams: {},
  33. });
  34. // フォーム項目の定義(ラベルと対応するデータプロパティ)
  35. const formItems = [
  36. { label: '顧客名', prop: 'customerName' },
  37. { label: '顧客名(カナ)', prop: 'customerNameKana' },
  38. { label: '性別', prop: 'genderFlagDesc' },
  39. { label: '生年月日', prop: 'birthDate' },
  40. { label: '郵便番号', prop: 'postalCode' },
  41. { label: 'お電話番号', prop: 'mobilePhone' },
  42. { label: 'メールアドレス', prop: 'email' },
  43. { label: '会員レベル', prop: 'memberLevelFlagDesc' },
  44. { label: '直近購入年月', prop: 'lastPurchaseMonth' },
  45. { label: '最終購入日', prop: 'lastPurchaseDate' },
  46. { label: '購入頻度', prop: 'purchaseFrequency' },
  47. { label: '累計有効購入金額', prop: 'totalValidSpending' },
  48. { label: 'DM対象', prop: 'dmTargetFlagDesc' },
  49. { label: 'DM配信', prop: 'dmAllowedFlagDesc' },
  50. { label: 'メール配信', prop: 'emailAllowedFlagDesc' },
  51. { label: 'SMS配信', prop: 'smsAllowedFlagDesc' },
  52. ];
  53. // 顧客詳細の取得
  54. const fetchCustomerDetail = async () => {
  55. const requestData = { customerId };
  56. const response = await getCustomerDetail(requestData);
  57. if (response.code === 200) {
  58. data.form = response.data || {};
  59. }
  60. };
  61. // ページ読み込み時に顧客詳細情報を取得
  62. fetchCustomerDetail();
  63. </script>
  64. <style>
  65. .small-input,
  66. .address-input {
  67. width: 100%;
  68. }
  69. </style>