@hostlink/nuxt-light 1.54.6 → 1.55.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/README.md +120 -120
  2. package/dist/module.json +1 -1
  3. package/dist/runtime/components/L/CustomField/Add.vue +40 -42
  4. package/dist/runtime/components/L/CustomField/List.vue +5 -5
  5. package/dist/runtime/components/L/Database/create-table-dialog.vue +33 -34
  6. package/dist/runtime/components/L/Fieldset.vue +8 -11
  7. package/dist/runtime/components/L/ForgetPasswordDialog.vue +26 -27
  8. package/dist/runtime/components/L/Revision.vue +89 -93
  9. package/dist/runtime/components/L/Storage.vue +7 -7
  10. package/dist/runtime/components/L/System/Setting/authentication.d.vue.ts +1 -5
  11. package/dist/runtime/components/L/System/Setting/authentication.vue +16 -16
  12. package/dist/runtime/components/L/System/Setting/authentication.vue.d.ts +1 -5
  13. package/dist/runtime/components/L/System/Setting/developer.vue +10 -11
  14. package/dist/runtime/components/L/System/Setting/forget-password.vue +9 -9
  15. package/dist/runtime/components/L/System/Setting/general.vue +9 -9
  16. package/dist/runtime/components/L/System/Setting/mail.d.vue.ts +1 -5
  17. package/dist/runtime/components/L/System/Setting/mail.vue +28 -32
  18. package/dist/runtime/components/L/System/Setting/mail.vue.d.ts +1 -5
  19. package/dist/runtime/components/L/System/Setting/modules.d.vue.ts +1 -5
  20. package/dist/runtime/components/L/System/Setting/modules.vue +6 -6
  21. package/dist/runtime/components/L/System/Setting/modules.vue.d.ts +1 -5
  22. package/dist/runtime/components/L/System/Setting/security.d.vue.ts +1 -5
  23. package/dist/runtime/components/L/System/Setting/security.vue +38 -41
  24. package/dist/runtime/components/L/System/Setting/security.vue.d.ts +1 -5
  25. package/dist/runtime/components/L/User/eventlog.vue +5 -5
  26. package/dist/runtime/components/L/User/overview.vue +19 -19
  27. package/dist/runtime/components/L/User/userlog.vue +1 -1
  28. package/dist/runtime/components/L/ValidationInput.vue +14 -14
  29. package/dist/runtime/components/MyTest.vue +3 -3
  30. package/dist/runtime/components/l-action-btn.vue +4 -4
  31. package/dist/runtime/components/l-add-btn.vue +3 -3
  32. package/dist/runtime/components/l-alert.vue +8 -8
  33. package/dist/runtime/components/l-app-main.d.vue.ts +1 -5
  34. package/dist/runtime/components/l-app-main.vue +170 -171
  35. package/dist/runtime/components/l-app-main.vue.d.ts +1 -5
  36. package/dist/runtime/components/l-app.vue +27 -27
  37. package/dist/runtime/components/l-audit-card.vue +8 -8
  38. package/dist/runtime/components/l-back-btn.vue +6 -6
  39. package/dist/runtime/components/l-banner.d.vue.ts +1 -1
  40. package/dist/runtime/components/l-banner.vue +10 -10
  41. package/dist/runtime/components/l-banner.vue.d.ts +1 -1
  42. package/dist/runtime/components/l-bar.vue +3 -3
  43. package/dist/runtime/components/l-btn.vue +4 -4
  44. package/dist/runtime/components/l-card.d.vue.ts +1 -9
  45. package/dist/runtime/components/l-card.vue +31 -31
  46. package/dist/runtime/components/l-card.vue.d.ts +1 -9
  47. package/dist/runtime/components/l-checkbox.vue +3 -3
  48. package/dist/runtime/components/l-col.vue +5 -5
  49. package/dist/runtime/components/l-customizer.d.vue.ts +2 -2
  50. package/dist/runtime/components/l-customizer.vue +95 -96
  51. package/dist/runtime/components/l-customizer.vue.d.ts +2 -2
  52. package/dist/runtime/components/l-date-picker.d.vue.ts +1 -1
  53. package/dist/runtime/components/l-date-picker.vue +17 -17
  54. package/dist/runtime/components/l-date-picker.vue.d.ts +1 -1
  55. package/dist/runtime/components/l-delete-btn.vue +1 -1
  56. package/dist/runtime/components/l-dialog-database-field-add.vue +25 -26
  57. package/dist/runtime/components/l-drag-drop-container.vue +5 -5
  58. package/dist/runtime/components/l-drag-drop-group.vue +1 -1
  59. package/dist/runtime/components/l-drag-drop.vue +6 -6
  60. package/dist/runtime/components/l-edit-btn.vue +2 -2
  61. package/dist/runtime/components/l-editor.d.vue.ts +1 -5
  62. package/dist/runtime/components/l-editor.vue +41 -41
  63. package/dist/runtime/components/l-editor.vue.d.ts +1 -5
  64. package/dist/runtime/components/l-facebook-button.vue +2 -2
  65. package/dist/runtime/components/l-fav-menu.vue +14 -14
  66. package/dist/runtime/components/l-field.vue +3 -3
  67. package/dist/runtime/components/l-file-manager-labels.vue +11 -11
  68. package/dist/runtime/components/l-file-manager-move.vue +67 -67
  69. package/dist/runtime/components/l-file-manager-preview.vue +22 -22
  70. package/dist/runtime/components/l-file-manager.vue +243 -248
  71. package/dist/runtime/components/l-file-upload.d.vue.ts +1 -1
  72. package/dist/runtime/components/l-file-upload.vue +25 -25
  73. package/dist/runtime/components/l-file-upload.vue.d.ts +1 -1
  74. package/dist/runtime/components/l-file.d.vue.ts +1 -5
  75. package/dist/runtime/components/l-file.vue +8 -8
  76. package/dist/runtime/components/l-file.vue.d.ts +1 -5
  77. package/dist/runtime/components/l-form-dialog.vue +27 -27
  78. package/dist/runtime/components/l-form.d.vue.ts +1 -33
  79. package/dist/runtime/components/l-form.vue +11 -11
  80. package/dist/runtime/components/l-form.vue.d.ts +1 -33
  81. package/dist/runtime/components/l-group-select.vue +22 -22
  82. package/dist/runtime/components/l-icon-picker.vue +35 -38
  83. package/dist/runtime/components/l-input-select.vue +4 -4
  84. package/dist/runtime/components/l-input-xlsx.vue +30 -31
  85. package/dist/runtime/components/l-input.d.vue.ts +1 -1
  86. package/dist/runtime/components/l-input.vue +23 -23
  87. package/dist/runtime/components/l-input.vue.d.ts +1 -1
  88. package/dist/runtime/components/l-item.vue +18 -18
  89. package/dist/runtime/components/l-link.vue +3 -3
  90. package/dist/runtime/components/l-list.vue +12 -12
  91. package/dist/runtime/components/l-login.d.vue.ts +1 -5
  92. package/dist/runtime/components/l-login.vue +57 -57
  93. package/dist/runtime/components/l-login.vue.d.ts +1 -5
  94. package/dist/runtime/components/l-menu.vue +33 -34
  95. package/dist/runtime/components/l-microsoft-button.d.vue.ts +1 -11
  96. package/dist/runtime/components/l-microsoft-button.vue +68 -68
  97. package/dist/runtime/components/l-microsoft-button.vue.d.ts +1 -11
  98. package/dist/runtime/components/l-page.vue +21 -21
  99. package/dist/runtime/components/l-repeater.d.vue.ts +36 -0
  100. package/dist/runtime/components/l-repeater.vue +153 -0
  101. package/dist/runtime/components/l-repeater.vue.d.ts +36 -0
  102. package/dist/runtime/components/l-row.vue +5 -5
  103. package/dist/runtime/components/l-save-btn.vue +2 -2
  104. package/dist/runtime/components/l-select.vue +1 -1
  105. package/dist/runtime/components/l-small-box.vue +9 -9
  106. package/dist/runtime/components/l-statistic.vue +9 -9
  107. package/dist/runtime/components/l-tab.vue +10 -10
  108. package/dist/runtime/components/l-table.d.vue.ts +1 -1
  109. package/dist/runtime/components/l-table.vue +176 -190
  110. package/dist/runtime/components/l-table.vue.d.ts +1 -1
  111. package/dist/runtime/components/l-tabs.vue +9 -9
  112. package/dist/runtime/components/l-test2.vue +3 -3
  113. package/dist/runtime/components/l-time-picker.d.vue.ts +1 -1
  114. package/dist/runtime/components/l-time-picker.vue +18 -18
  115. package/dist/runtime/components/l-time-picker.vue.d.ts +1 -1
  116. package/dist/runtime/components/l-view-btn.vue +2 -2
  117. package/dist/runtime/components/user-list.vue +3 -3
  118. package/dist/runtime/composables/mytest.js +2 -2
  119. package/dist/runtime/composables/tc2sc.js +85 -85
  120. package/dist/runtime/formkit/Checkbox.d.vue.ts +0 -1
  121. package/dist/runtime/formkit/Checkbox.vue +6 -6
  122. package/dist/runtime/formkit/Checkbox.vue.d.ts +0 -1
  123. package/dist/runtime/formkit/DatePicker.d.vue.ts +0 -1
  124. package/dist/runtime/formkit/DatePicker.vue +11 -11
  125. package/dist/runtime/formkit/DatePicker.vue.d.ts +0 -1
  126. package/dist/runtime/formkit/Editor.vue +7 -7
  127. package/dist/runtime/formkit/File.d.vue.ts +0 -1
  128. package/dist/runtime/formkit/File.vue +6 -6
  129. package/dist/runtime/formkit/File.vue.d.ts +0 -1
  130. package/dist/runtime/formkit/FilePicker.d.vue.ts +0 -1
  131. package/dist/runtime/formkit/FilePicker.vue +6 -6
  132. package/dist/runtime/formkit/FilePicker.vue.d.ts +0 -1
  133. package/dist/runtime/formkit/FileUpload.d.vue.ts +0 -1
  134. package/dist/runtime/formkit/FileUpload.vue +6 -6
  135. package/dist/runtime/formkit/FileUpload.vue.d.ts +0 -1
  136. package/dist/runtime/formkit/Form.d.vue.ts +1 -3
  137. package/dist/runtime/formkit/Form.vue +15 -13
  138. package/dist/runtime/formkit/Form.vue.d.ts +1 -3
  139. package/dist/runtime/formkit/GroupSelect.d.vue.ts +0 -1
  140. package/dist/runtime/formkit/GroupSelect.vue +7 -7
  141. package/dist/runtime/formkit/GroupSelect.vue.d.ts +0 -1
  142. package/dist/runtime/formkit/Input.d.vue.ts +1 -1
  143. package/dist/runtime/formkit/Input.vue +11 -11
  144. package/dist/runtime/formkit/Input.vue.d.ts +1 -1
  145. package/dist/runtime/formkit/InputSelect.d.vue.ts +1 -1
  146. package/dist/runtime/formkit/InputSelect.vue +7 -7
  147. package/dist/runtime/formkit/InputSelect.vue.d.ts +1 -1
  148. package/dist/runtime/formkit/InputXlsx.vue +4 -4
  149. package/dist/runtime/formkit/OptionGroup.vue +5 -5
  150. package/dist/runtime/formkit/Radio.vue +4 -4
  151. package/dist/runtime/formkit/Repeater.d.vue.ts +1 -1
  152. package/dist/runtime/formkit/Repeater.vue +49 -37
  153. package/dist/runtime/formkit/Repeater.vue.d.ts +1 -1
  154. package/dist/runtime/formkit/Select.d.vue.ts +0 -1
  155. package/dist/runtime/formkit/Select.vue +6 -6
  156. package/dist/runtime/formkit/Select.vue.d.ts +0 -1
  157. package/dist/runtime/formkit/Textarea.d.vue.ts +1 -1
  158. package/dist/runtime/formkit/Textarea.vue +11 -11
  159. package/dist/runtime/formkit/Textarea.vue.d.ts +1 -1
  160. package/dist/runtime/formkit/TimePicker.d.vue.ts +0 -1
  161. package/dist/runtime/formkit/TimePicker.vue +10 -10
  162. package/dist/runtime/formkit/TimePicker.vue.d.ts +0 -1
  163. package/dist/runtime/formkit/Toggle.vue +3 -3
  164. package/dist/runtime/formkit/index.js +1 -1
  165. package/dist/runtime/index.d.ts +39 -39
  166. package/dist/runtime/locales/en.json +9 -9
  167. package/dist/runtime/locales/zh-hk.json +213 -213
  168. package/dist/runtime/pages/CustomField/[custom_field_id]/edit.vue +33 -38
  169. package/dist/runtime/pages/CustomField/index.vue +12 -14
  170. package/dist/runtime/pages/EventLog/_eventlog_id/view.vue +36 -36
  171. package/dist/runtime/pages/EventLog/index.vue +7 -7
  172. package/dist/runtime/pages/FileManager/index.vue +4 -4
  173. package/dist/runtime/pages/MailLog/index.vue +18 -18
  174. package/dist/runtime/pages/Permission/add.vue +13 -13
  175. package/dist/runtime/pages/Permission/all.vue +63 -68
  176. package/dist/runtime/pages/Permission/export.vue +9 -10
  177. package/dist/runtime/pages/Permission/index.vue +4 -4
  178. package/dist/runtime/pages/Role/_name/update-child.vue +4 -4
  179. package/dist/runtime/pages/Role/add.vue +7 -7
  180. package/dist/runtime/pages/Role/add2.vue +30 -30
  181. package/dist/runtime/pages/Role/index.vue +41 -33
  182. package/dist/runtime/pages/System/database/backup.vue +72 -72
  183. package/dist/runtime/pages/System/database/check.vue +72 -72
  184. package/dist/runtime/pages/System/database/event.vue +51 -51
  185. package/dist/runtime/pages/System/database/process.vue +21 -21
  186. package/dist/runtime/pages/System/database/restore.vue +110 -110
  187. package/dist/runtime/pages/System/database/table.vue +67 -69
  188. package/dist/runtime/pages/System/fs.vue +99 -99
  189. package/dist/runtime/pages/System/index.vue +16 -18
  190. package/dist/runtime/pages/System/mailtest.vue +12 -12
  191. package/dist/runtime/pages/System/menu/index.vue +142 -144
  192. package/dist/runtime/pages/System/package.vue +11 -11
  193. package/dist/runtime/pages/System/phpinfo.vue +3 -3
  194. package/dist/runtime/pages/System/setting.vue +28 -30
  195. package/dist/runtime/pages/System/test.vue +12 -12
  196. package/dist/runtime/pages/System/view_as.vue +21 -22
  197. package/dist/runtime/pages/SystemValue/_systemvalue_id/edit.vue +6 -6
  198. package/dist/runtime/pages/SystemValue/add.vue +7 -7
  199. package/dist/runtime/pages/SystemValue/index.vue +4 -4
  200. package/dist/runtime/pages/Translate/index.vue +38 -38
  201. package/dist/runtime/pages/User/_user_id/change-password.vue +17 -18
  202. package/dist/runtime/pages/User/_user_id/edit.vue +28 -28
  203. package/dist/runtime/pages/User/_user_id/update-role.vue +7 -8
  204. package/dist/runtime/pages/User/_user_id/view.vue +27 -30
  205. package/dist/runtime/pages/User/add.vue +35 -35
  206. package/dist/runtime/pages/User/index.vue +11 -11
  207. package/dist/runtime/pages/User/profile.vue +45 -46
  208. package/dist/runtime/pages/User/setting/bio-auth.vue +22 -22
  209. package/dist/runtime/pages/User/setting/favorite.vue +61 -62
  210. package/dist/runtime/pages/User/setting/index.vue +6 -6
  211. package/dist/runtime/pages/User/setting/information.vue +6 -6
  212. package/dist/runtime/pages/User/setting/menu.vue +165 -165
  213. package/dist/runtime/pages/User/setting/open_id.vue +161 -161
  214. package/dist/runtime/pages/User/setting/password.vue +19 -19
  215. package/dist/runtime/pages/User/setting/style.vue +104 -106
  216. package/dist/runtime/pages/User/setting/two-factor-auth.vue +176 -176
  217. package/dist/runtime/pages/User/setting.vue +32 -32
  218. package/dist/runtime/pages/UserLog/index.vue +4 -4
  219. package/package.json +63 -63
@@ -74,76 +74,76 @@ const handleFix = async (tableName) => {
74
74
  </script>
75
75
 
76
76
  <template>
77
- <l-page>
78
-
79
- <div class="q-mb-md">
80
- <h5 class="q-ma-none">Database Check Results</h5>
81
- </div>
82
-
83
- <q-table :rows="system.database.checkResult" :columns="tableColumns" row-key="table" flat bordered
84
- class="q-mb-lg" v-model:expanded="expanded" :pagination.sync="{ rowsPerPage: 0 }" hide-bottom>
85
- <template #body="props">
86
- <q-tr :props="props"
87
- :class="{ 'bg-red-1': props.row.status === 'DIFFERENT', 'bg-green-1': props.row.status === 'OK' }">
88
- <q-td auto-width>
89
- <q-btn size="sm" flat dense round
90
- :icon="expanded.includes(props.row.table) ? 'expand_less' : 'expand_more'"
91
- @click="toggleExpanded(props.row.table)" />
92
- </q-td>
93
- <q-td key="table" :props="props" class="text-weight-bold">
94
- {{ props.row.table }}
95
- </q-td>
96
- <q-td key="status" :props="props">
97
- <q-chip :label="props.row.status" :color="getStatusColor(props.row.status)" text-color="white"
98
- size="sm" />
99
- </q-td>
100
- <q-td key="count" :props="props">
101
- <q-chip v-if="props.row.differences.length > 0" :label="props.row.differences.length"
102
- color="warning" text-color="white" size="sm" />
103
- <span v-else class="text-positive">✓</span>
104
- </q-td>
105
- <q-td key="action" :props="props">
106
- <q-btn v-if="props.row.status !== 'OK'" label="Fix" size="sm" color="primary"
107
- @click="handleFix(props.row.table)" />
108
- </q-td>
109
- </q-tr>
110
-
111
- <!-- Differences Details Expansion -->
112
- <q-tr v-show="expanded.includes(props.row.table)" :props="props">
113
- <q-td colspan="100%" class="q-pa-none">
114
- <div class="q-pa-md bg-grey-1">
115
- <q-table v-if="props.row.differences.length > 0" :rows="props.row.differences"
116
- :columns="diffColumns" row-key="column" flat dense class="q-mb-md"
117
- :pagination.sync="{ rowsPerPage: 0 }" hide-bottom>
118
- <template #body-cell-type="cellProps">
119
- <q-td :props="cellProps">
120
- <q-chip :label="cellProps.row.type"
121
- :color="getDiffTypeColor(cellProps.row.type)" text-color="white"
122
- size="sm" />
123
- </q-td>
124
- </template>
125
- <template #body-cell-details="cellProps">
126
- <q-td :props="cellProps">
127
- <q-expansion-item header-class="text-caption" expand-icon-class="text-caption"
128
- dense>
129
- <template #header>
130
- <span class="text-caption">{{ getDiffDetails(cellProps.row) }}</span>
131
- </template>
132
- <pre class="q-ma-none text-caption">{{
133
- JSON.stringify(cellProps.row.differences || cellProps.row.current ||
134
- cellProps.row.expected, null,
135
- 2) }}
136
- </pre>
137
- </q-expansion-item>
138
- </q-td>
139
- </template>
140
- </q-table>
141
- <div v-else class="text-positive text-weight-bold">✓ No Differences</div>
142
- </div>
143
- </q-td>
144
- </q-tr>
145
- </template>
146
- </q-table>
147
-
148
- </l-page>
77
+ <l-page>
78
+
79
+ <div class="q-mb-md">
80
+ <h5 class="q-ma-none">Database Check Results</h5>
81
+ </div>
82
+
83
+ <q-table :rows="system.database.checkResult" :columns="tableColumns" row-key="table" flat bordered
84
+ class="q-mb-lg" v-model:expanded="expanded" :pagination.sync="{ rowsPerPage: 0 }" hide-bottom>
85
+ <template #body="props">
86
+ <q-tr :props="props"
87
+ :class="{ 'bg-red-1': props.row.status === 'DIFFERENT', 'bg-green-1': props.row.status === 'OK' }">
88
+ <q-td auto-width>
89
+ <q-btn size="sm" flat dense round
90
+ :icon="expanded.includes(props.row.table) ? 'expand_less' : 'expand_more'"
91
+ @click="toggleExpanded(props.row.table)" />
92
+ </q-td>
93
+ <q-td key="table" :props="props" class="text-weight-bold">
94
+ {{ props.row.table }}
95
+ </q-td>
96
+ <q-td key="status" :props="props">
97
+ <q-chip :label="props.row.status" :color="getStatusColor(props.row.status)" text-color="white"
98
+ size="sm" />
99
+ </q-td>
100
+ <q-td key="count" :props="props">
101
+ <q-chip v-if="props.row.differences.length > 0" :label="props.row.differences.length"
102
+ color="warning" text-color="white" size="sm" />
103
+ <span v-else class="text-positive">✓</span>
104
+ </q-td>
105
+ <q-td key="action" :props="props">
106
+ <q-btn v-if="props.row.status !== 'OK'" label="Fix" size="sm" color="primary"
107
+ @click="handleFix(props.row.table)" />
108
+ </q-td>
109
+ </q-tr>
110
+
111
+ <!-- Differences Details Expansion -->
112
+ <q-tr v-show="expanded.includes(props.row.table)" :props="props">
113
+ <q-td colspan="100%" class="q-pa-none">
114
+ <div class="q-pa-md bg-grey-1">
115
+ <q-table v-if="props.row.differences.length > 0" :rows="props.row.differences"
116
+ :columns="diffColumns" row-key="column" flat dense class="q-mb-md"
117
+ :pagination.sync="{ rowsPerPage: 0 }" hide-bottom>
118
+ <template #body-cell-type="cellProps">
119
+ <q-td :props="cellProps">
120
+ <q-chip :label="cellProps.row.type"
121
+ :color="getDiffTypeColor(cellProps.row.type)" text-color="white"
122
+ size="sm" />
123
+ </q-td>
124
+ </template>
125
+ <template #body-cell-details="cellProps">
126
+ <q-td :props="cellProps">
127
+ <q-expansion-item header-class="text-caption" expand-icon-class="text-caption"
128
+ dense>
129
+ <template #header>
130
+ <span class="text-caption">{{ getDiffDetails(cellProps.row) }}</span>
131
+ </template>
132
+ <pre class="q-ma-none text-caption">{{
133
+ JSON.stringify(cellProps.row.differences || cellProps.row.current ||
134
+ cellProps.row.expected, null,
135
+ 2) }}
136
+ </pre>
137
+ </q-expansion-item>
138
+ </q-td>
139
+ </template>
140
+ </q-table>
141
+ <div v-else class="text-positive text-weight-bold">✓ No Differences</div>
142
+ </div>
143
+ </q-td>
144
+ </q-tr>
145
+ </template>
146
+ </q-table>
147
+
148
+ </l-page>
149
149
  </template>
@@ -36,55 +36,55 @@ const getEvent = async (name) => {
36
36
  </script>
37
37
 
38
38
  <template>
39
- <l-page>
40
-
41
- <q-table :rows="system.database.events" :pagination="{ rowsPerPage: 0 }" v-model:selected="selected"
42
- row-key="Name" selection="single" />
43
-
44
- <!-- 顯示選中的事件詳細內容 -->
45
- <div v-if="eventDetail" class="q-mt-md">
46
- <q-card>
47
- <q-card-section>
48
- <div class="text-h6">事件詳細資料 - {{ eventDetail.Event }}</div>
49
- </q-card-section>
50
- <q-card-section>
51
- <div class="row q-gutter-md">
52
- <div class="col-12 col-md-6">
53
- <q-card flat bordered>
54
- <q-card-section>
55
- <div class="text-subtitle1 text-weight-bold">基本資訊</div>
56
- <q-separator class="q-my-sm" />
57
- <div class="q-gutter-sm">
58
- <div><strong>事件名稱:</strong> {{ eventDetail.Event }}</div>
59
- <div>
60
- <strong>SQL 模式:</strong>
61
- <div class="q-mt-xs text-caption"
62
- style="word-break: break-all; line-height: 1.3;">
63
- {{ eventDetail.sql_mode }}
64
- </div>
65
- </div>
66
- <div><strong>時區:</strong> {{ eventDetail.time_zone }}</div>
67
- <div><strong>字符集:</strong> {{ eventDetail.character_set_client }}</div>
68
- <div><strong>連接校對:</strong> {{ eventDetail.collation_connection }}</div>
69
- <div><strong>資料庫校對:</strong> {{ eventDetail['Database Collation'] }}</div>
70
- </div>
71
- </q-card-section>
72
- </q-card>
73
- </div>
74
- <div class="col-12 col-md-6">
75
- <q-card flat bordered>
76
- <q-card-section>
77
- <div class="text-subtitle1 text-weight-bold">事件定義</div>
78
- <q-separator class="q-my-sm" />
79
- <pre class="q-pa-sm bg-grey-1" style="white-space: pre-wrap; font-size: 12px;">{{
80
- eventDetail['Create Event'] }}</pre>
81
- </q-card-section>
82
- </q-card>
83
- </div>
84
- </div>
85
- </q-card-section>
86
- </q-card>
87
- </div>
88
-
89
- </l-page>
39
+ <l-page>
40
+
41
+ <q-table :rows="system.database.events" :pagination="{ rowsPerPage: 0 }" v-model:selected="selected"
42
+ row-key="Name" selection="single" />
43
+
44
+ <!-- 顯示選中的事件詳細內容 -->
45
+ <div v-if="eventDetail" class="q-mt-md">
46
+ <q-card>
47
+ <q-card-section>
48
+ <div class="text-h6">事件詳細資料 - {{ eventDetail.Event }}</div>
49
+ </q-card-section>
50
+ <q-card-section>
51
+ <div class="row q-gutter-md">
52
+ <div class="col-12 col-md-6">
53
+ <q-card flat bordered>
54
+ <q-card-section>
55
+ <div class="text-subtitle1 text-weight-bold">基本資訊</div>
56
+ <q-separator class="q-my-sm" />
57
+ <div class="q-gutter-sm">
58
+ <div><strong>事件名稱:</strong> {{ eventDetail.Event }}</div>
59
+ <div>
60
+ <strong>SQL 模式:</strong>
61
+ <div class="q-mt-xs text-caption"
62
+ style="word-break: break-all; line-height: 1.3;">
63
+ {{ eventDetail.sql_mode }}
64
+ </div>
65
+ </div>
66
+ <div><strong>時區:</strong> {{ eventDetail.time_zone }}</div>
67
+ <div><strong>字符集:</strong> {{ eventDetail.character_set_client }}</div>
68
+ <div><strong>連接校對:</strong> {{ eventDetail.collation_connection }}</div>
69
+ <div><strong>資料庫校對:</strong> {{ eventDetail['Database Collation'] }}</div>
70
+ </div>
71
+ </q-card-section>
72
+ </q-card>
73
+ </div>
74
+ <div class="col-12 col-md-6">
75
+ <q-card flat bordered>
76
+ <q-card-section>
77
+ <div class="text-subtitle1 text-weight-bold">事件定義</div>
78
+ <q-separator class="q-my-sm" />
79
+ <pre class="q-pa-sm bg-grey-1" style="white-space: pre-wrap; font-size: 12px;">{{
80
+ eventDetail['Create Event'] }}</pre>
81
+ </q-card-section>
82
+ </q-card>
83
+ </div>
84
+ </div>
85
+ </q-card-section>
86
+ </q-card>
87
+ </div>
88
+
89
+ </l-page>
90
90
  </template>
@@ -32,25 +32,25 @@ onUnmounted(() => {
32
32
  </script>
33
33
 
34
34
  <template>
35
- <l-page title="System Database Process">
36
- <q-table :rows="data?.database?.processList || []" hide-bottom v-bind="$light.styles.table" :loading="loading">
37
- <template #top-left>
38
- <q-btn label="Reload" outline color="primary" icon="sym_o_refresh" @click="refresh"></q-btn>
39
- </template>
40
- <template #top-right>
41
- <q-select label="Auto Refresh" v-model="autoRefresh" :options="[
42
- { label: 'Off', value: 0 },
43
- { label: '5s', value: 5000 },
44
- { label: '10s', value: 10000 },
45
- { label: '30s', value: 30000 },
46
- { label: '1m', value: 60000 },
47
- { label: '5m', value: 300000 },
48
- { label: '10m', value: 600000 },
49
- { label: '30m', value: 1800000 },
50
- { label: '1h', value: 3600000 }
51
- ]" @update:model-value="autoRefresh && refresh()" outlined dense style="min-width: 200px" map-options
52
- emit-value></q-select>
53
- </template>
54
- </q-table>
55
- </l-page>
35
+ <l-page title="System Database Process">
36
+ <q-table :rows="data?.database?.processList || []" hide-bottom v-bind="$light.styles.table" :loading="loading">
37
+ <template #top-left>
38
+ <q-btn label="Reload" outline color="primary" icon="sym_o_refresh" @click="refresh"></q-btn>
39
+ </template>
40
+ <template #top-right>
41
+ <q-select label="Auto Refresh" v-model="autoRefresh" :options="[
42
+ { label: 'Off', value: 0 },
43
+ { label: '5s', value: 5000 },
44
+ { label: '10s', value: 10000 },
45
+ { label: '30s', value: 30000 },
46
+ { label: '1m', value: 60000 },
47
+ { label: '5m', value: 300000 },
48
+ { label: '10m', value: 600000 },
49
+ { label: '30m', value: 1800000 },
50
+ { label: '1h', value: 3600000 }
51
+ ]" @update:model-value="autoRefresh && refresh()" outlined dense style="min-width: 200px" map-options
52
+ emit-value></q-select>
53
+ </template>
54
+ </q-table>
55
+ </l-page>
56
56
  </template>
@@ -90,116 +90,116 @@ onMounted(() => {
90
90
  </script>
91
91
 
92
92
  <template>
93
- <l-page title="資料庫還原">
94
- <div class="import-container">
95
- <!-- 頁面說明 -->
96
- <l-card class="info-card">
97
- <div class="card-header">
98
- <h5 class="card-title">
99
- <q-icon name="sym_o_info" class="text-primary" />
100
- 還原說明
101
- </h5>
102
- </div>
103
- <div class="card-content">
104
- <p class="description">
105
- 資料庫還原功能可以從 SQL 備份檔案恢復資料庫內容。
106
- 請確保上傳的 SQL 檔案來源可信且格式正確。
107
- </p>
108
- </div>
109
- </l-card>
110
-
111
- <!-- 當前資料庫資訊 -->
112
- <l-card class="status-card">
113
- <div class="card-header">
114
- <h5 class="card-title">
115
- <q-icon name="sym_o_database" class="text-secondary" />
116
- 當前資料庫資訊
117
- </h5>
118
- </div>
119
- <div class="card-content">
120
- <div class="info-grid">
121
- <div class="info-item" v-if="databaseInfo">
122
- <q-icon name="sym_o_storage" class="info-icon" />
123
- <div class="info-content">
124
- <span class="info-label">資料庫類型</span>
125
- <span class="info-value">{{ databaseInfo.type || '未知' }}</span>
126
- </div>
127
- </div>
128
- <div class="info-item" v-if="databaseInfo">
129
- <q-icon name="sym_o_storage" class="info-icon" />
130
- <div class="info-content">
131
- <span class="info-label">當前大小</span>
132
- <span class="info-value">{{ databaseInfo.sizeBytes ? (databaseInfo.sizeBytes / 1024 /
133
- 1024).toFixed(2) + ' MB' : '計算中...' }}</span>
134
- </div>
135
- </div>
136
- <div class="info-item" v-if="databaseInfo && databaseInfo.version">
137
- <q-icon name="sym_o_info" class="info-icon" />
138
- <div class="info-content">
139
- <span class="info-label">資料庫版本</span>
140
- <span class="info-value">{{ databaseInfo.version }}</span>
141
- </div>
142
- </div>
143
- </div>
144
- </div>
145
- </l-card>
146
-
147
- <!-- 安全警告 -->
148
- <l-alert type="negative" class="security-alert">
149
- <template #prefix>
150
- <q-icon name="sym_o_warning" />
151
- </template>
152
- <strong>重要警告:</strong>還原資料庫將會完全覆蓋現有資料,此操作無法復原。建議在還原前先進行當前資料庫的備份。
153
- </l-alert>
154
-
155
- <!-- 檔案上傳區域 -->
156
- <l-card class="upload-card">
157
- <div class="card-header">
158
- <h5 class="card-title">
159
- <q-icon name="sym_o_upload" class="text-primary" />
160
- 選擇備份檔案
161
- </h5>
162
- </div>
163
- <div class="card-content">
164
- <div class="upload-area" :class="{ 'has-file': selectedFile }">
165
- <input ref="fileInput" type="file" accept=".sql,application/sql" @change="onFileChange"
166
- class="file-input" id="sql-file-input" />
167
-
168
- <div v-if="!selectedFile" class="upload-placeholder">
169
- <q-icon name="sym_o_cloud_upload" class="upload-icon" />
170
- <p class="upload-text">點擊選擇 SQL 檔案</p>
171
- <p class="upload-hint">支援 .sql 格式的檔案</p>
172
- <label for="sql-file-input" class="upload-button">
173
- <l-btn label="選擇檔案" icon="sym_o_folder_open" color="primary" />
174
- </label>
175
- </div>
176
-
177
- <div v-else class="file-info">
178
- <div class="file-details">
179
- <q-icon name="sym_o_description" class="file-icon" />
180
- <div class="file-content">
181
- <span class="file-name">{{ selectedFile.name }}</span>
182
- <span class="file-size">{{ formatFileSize(selectedFile.size) }}</span>
183
- </div>
184
- </div>
185
- <l-btn icon="sym_o_close" color="negative" flat round @click="clearFile"
186
- class="remove-btn" />
187
- </div>
188
- </div>
189
- </div>
190
- </l-card>
191
-
192
- <!-- 還原按鈕區域 -->
193
- <div class="restore-section">
194
- <l-btn :label="isUploading ? '正在還原中...' : '開始還原資料庫'" icon="sym_o_restore" color="primary" size="lg"
195
- :loading="isUploading" :disabled="isUploading || !selectedFile" @click="onClickRestore"
196
- class="restore-btn" />
197
- <p class="restore-hint">
198
- 請確認已備份當前資料庫,還原操作將無法復原
199
- </p>
200
- </div>
201
- </div>
202
- </l-page>
93
+ <l-page title="資料庫還原">
94
+ <div class="import-container">
95
+ <!-- 頁面說明 -->
96
+ <l-card class="info-card">
97
+ <div class="card-header">
98
+ <h5 class="card-title">
99
+ <q-icon name="sym_o_info" class="text-primary" />
100
+ 還原說明
101
+ </h5>
102
+ </div>
103
+ <div class="card-content">
104
+ <p class="description">
105
+ 資料庫還原功能可以從 SQL 備份檔案恢復資料庫內容。
106
+ 請確保上傳的 SQL 檔案來源可信且格式正確。
107
+ </p>
108
+ </div>
109
+ </l-card>
110
+
111
+ <!-- 當前資料庫資訊 -->
112
+ <l-card class="status-card">
113
+ <div class="card-header">
114
+ <h5 class="card-title">
115
+ <q-icon name="sym_o_database" class="text-secondary" />
116
+ 當前資料庫資訊
117
+ </h5>
118
+ </div>
119
+ <div class="card-content">
120
+ <div class="info-grid">
121
+ <div class="info-item" v-if="databaseInfo">
122
+ <q-icon name="sym_o_storage" class="info-icon" />
123
+ <div class="info-content">
124
+ <span class="info-label">資料庫類型</span>
125
+ <span class="info-value">{{ databaseInfo.type || '未知' }}</span>
126
+ </div>
127
+ </div>
128
+ <div class="info-item" v-if="databaseInfo">
129
+ <q-icon name="sym_o_storage" class="info-icon" />
130
+ <div class="info-content">
131
+ <span class="info-label">當前大小</span>
132
+ <span class="info-value">{{ databaseInfo.sizeBytes ? (databaseInfo.sizeBytes / 1024 /
133
+ 1024).toFixed(2) + ' MB' : '計算中...' }}</span>
134
+ </div>
135
+ </div>
136
+ <div class="info-item" v-if="databaseInfo && databaseInfo.version">
137
+ <q-icon name="sym_o_info" class="info-icon" />
138
+ <div class="info-content">
139
+ <span class="info-label">資料庫版本</span>
140
+ <span class="info-value">{{ databaseInfo.version }}</span>
141
+ </div>
142
+ </div>
143
+ </div>
144
+ </div>
145
+ </l-card>
146
+
147
+ <!-- 安全警告 -->
148
+ <l-alert type="negative" class="security-alert">
149
+ <template #prefix>
150
+ <q-icon name="sym_o_warning" />
151
+ </template>
152
+ <strong>重要警告:</strong>還原資料庫將會完全覆蓋現有資料,此操作無法復原。建議在還原前先進行當前資料庫的備份。
153
+ </l-alert>
154
+
155
+ <!-- 檔案上傳區域 -->
156
+ <l-card class="upload-card">
157
+ <div class="card-header">
158
+ <h5 class="card-title">
159
+ <q-icon name="sym_o_upload" class="text-primary" />
160
+ 選擇備份檔案
161
+ </h5>
162
+ </div>
163
+ <div class="card-content">
164
+ <div class="upload-area" :class="{ 'has-file': selectedFile }">
165
+ <input ref="fileInput" type="file" accept=".sql,application/sql" @change="onFileChange"
166
+ class="file-input" id="sql-file-input" />
167
+
168
+ <div v-if="!selectedFile" class="upload-placeholder">
169
+ <q-icon name="sym_o_cloud_upload" class="upload-icon" />
170
+ <p class="upload-text">點擊選擇 SQL 檔案</p>
171
+ <p class="upload-hint">支援 .sql 格式的檔案</p>
172
+ <label for="sql-file-input" class="upload-button">
173
+ <l-btn label="選擇檔案" icon="sym_o_folder_open" color="primary" />
174
+ </label>
175
+ </div>
176
+
177
+ <div v-else class="file-info">
178
+ <div class="file-details">
179
+ <q-icon name="sym_o_description" class="file-icon" />
180
+ <div class="file-content">
181
+ <span class="file-name">{{ selectedFile.name }}</span>
182
+ <span class="file-size">{{ formatFileSize(selectedFile.size) }}</span>
183
+ </div>
184
+ </div>
185
+ <l-btn icon="sym_o_close" color="negative" flat round @click="clearFile"
186
+ class="remove-btn" />
187
+ </div>
188
+ </div>
189
+ </div>
190
+ </l-card>
191
+
192
+ <!-- 還原按鈕區域 -->
193
+ <div class="restore-section">
194
+ <l-btn :label="isUploading ? '正在還原中...' : '開始還原資料庫'" icon="sym_o_restore" color="primary" size="lg"
195
+ :loading="isUploading" :disabled="isUploading || !selectedFile" @click="onClickRestore"
196
+ class="restore-btn" />
197
+ <p class="restore-hint">
198
+ 請確認已備份當前資料庫,還原操作將無法復原
199
+ </p>
200
+ </div>
201
+ </div>
202
+ </l-page>
203
203
  </template>
204
204
 
205
205
  <style scoped>