smart-admin-web 10.12.1 → 10.13.0

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 (50) hide show
  1. package/dist/api/index.d.ts +28 -1
  2. package/dist/api/index.js +65 -38
  3. package/dist/api/index.js.map +1 -1
  4. package/dist/api/schema.d.ts +769 -3
  5. package/dist/assets/icons/ph-subset.json.js +1 -1
  6. package/dist/composables/useModule.js +35 -27
  7. package/dist/composables/useModule.js.map +1 -1
  8. package/dist/index.js +250 -249
  9. package/dist/layouts/AppHeader.vue.js +1 -1
  10. package/dist/layouts/AppHeader2.vue.js +306 -292
  11. package/dist/layouts/AppHeader2.vue.js.map +1 -1
  12. package/dist/lib/runtime.js +1 -1
  13. package/dist/locales/en-US.d.ts +49 -1
  14. package/dist/locales/en-US.js +50 -2
  15. package/dist/locales/en-US.js.map +1 -1
  16. package/dist/locales/zh-CN.d.ts +49 -1
  17. package/dist/locales/zh-CN.js +50 -2
  18. package/dist/locales/zh-CN.js.map +1 -1
  19. package/dist/router/index.js +18 -13
  20. package/dist/router/index.js.map +1 -1
  21. package/dist/router/viewRegistry.js +1 -1
  22. package/dist/router/viewRegistry.js.map +1 -1
  23. package/dist/stores/user.d.ts +6 -1
  24. package/dist/stores/user.js.map +1 -1
  25. package/dist/style.css +1 -1
  26. package/dist/types/api.d.ts +59 -0
  27. package/dist/types/api.js.map +1 -1
  28. package/dist/views/dashboard/ShortcutPicker.vue.d.ts +16 -0
  29. package/dist/views/dashboard/ShortcutPicker.vue.js +8 -0
  30. package/dist/views/dashboard/ShortcutPicker.vue.js.map +1 -0
  31. package/dist/views/dashboard/ShortcutPicker2.vue.js +86 -0
  32. package/dist/views/dashboard/ShortcutPicker2.vue.js.map +1 -0
  33. package/dist/views/dashboard/biz.vue.js +2 -2
  34. package/dist/views/dashboard/biz2.vue.js +265 -93
  35. package/dist/views/dashboard/biz2.vue.js.map +1 -1
  36. package/dist/views/dashboard/onlineDuration.d.ts +5 -0
  37. package/dist/views/dashboard/onlineDuration.js +8 -0
  38. package/dist/views/dashboard/onlineDuration.js.map +1 -0
  39. package/dist/views/dashboard/shortcutGroups.d.ts +18 -0
  40. package/dist/views/dashboard/shortcutGroups.js +19 -0
  41. package/dist/views/dashboard/shortcutGroups.js.map +1 -0
  42. package/dist/views/system/tenant/index.vue.d.ts +3 -0
  43. package/dist/views/system/tenant/index.vue.js +8 -0
  44. package/dist/views/system/tenant/index.vue.js.map +1 -0
  45. package/dist/views/system/tenant/index2.vue.js +366 -0
  46. package/dist/views/system/tenant/index2.vue.js.map +1 -0
  47. package/dist/views/system/user/index.vue.js +2 -2
  48. package/dist/views/system/user/index2.vue.js +281 -211
  49. package/dist/views/system/user/index2.vue.js.map +1 -1
  50. package/package.json +1 -1
@@ -0,0 +1,366 @@
1
+ import { defineComponent as V, ref as b, reactive as B, resolveDirective as $, openBlock as P, createElementBlock as T, Fragment as S, createVNode as l, unref as e, withCtx as d, withDirectives as F, createBlock as O, createTextVNode as k, toDisplayString as m, createElementVNode as s, normalizeClass as j, createCommentVNode as L, h as f } from "vue";
2
+ import { useMessage as G, NButton as _, NForm as H, NFormItem as r, NInput as c, NSpace as A, NTag as U, NDatePicker as J, NSwitch as K, NPopconfirm as Q } from "naive-ui";
3
+ import { useI18n as W } from "vue-i18n";
4
+ import { SmartTable as X } from "smart-naive-table";
5
+ import Y from "../../../components/AppIcon.vue.js";
6
+ import Z from "../../../components/FormContainer/index.vue.js";
7
+ /* empty css */
8
+ import ee from "../../../components/StatusSwitch/index.vue.js";
9
+ import { useConfirm as te } from "../../../composables/useConfirm.js";
10
+ import { tenantApi as v } from "../../../api/index.js";
11
+ import { useAuthStore as ae } from "../../../stores/auth.js";
12
+ import { translateError as q } from "../../../utils/error.js";
13
+ const ne = { class: "iso-title" }, oe = { class: "iso-desc" }, le = ["title"], ie = { class: "iso-title" }, de = { class: "iso-desc" }, re = { class: "form-section" }, se = { class: "form-section__title" }, _e = /* @__PURE__ */ V({
14
+ __name: "index",
15
+ setup(ue) {
16
+ const { t } = W(), y = G(), { run: C } = te(), w = ae(), g = b(), N = (n) => ({
17
+ code: n.code,
18
+ name: n.name,
19
+ contactName: n.contactName ?? "",
20
+ contactPhone: n.contactPhone ?? "",
21
+ expireTime: n.expireTime,
22
+ isolationMode: n.isolationMode,
23
+ enabled: n.enabled,
24
+ remark: n.remark ?? ""
25
+ }), z = [
26
+ { type: "index", title: () => t("common.rowNo"), width: 64, align: "center" },
27
+ // 编码列不开搜索:后端 TenantPageInput 只支持按 Name 过滤,开了也是个不生效的搜索框。
28
+ { key: "code", title: () => t("tenant.code") },
29
+ { key: "name", title: () => t("tenant.name"), search: !0 },
30
+ {
31
+ key: "isolationMode",
32
+ title: () => t("tenant.isolationMode"),
33
+ width: 100,
34
+ render: (n) => f(
35
+ U,
36
+ { size: "small", type: n.isolationMode === 1 ? "info" : "default" },
37
+ () => n.isolationMode === 1 ? t("tenant.isolationModeShared") : t("tenant.isolationModeStandalone")
38
+ )
39
+ },
40
+ { key: "contactName", title: () => t("tenant.contactName") },
41
+ { key: "contactPhone", title: () => t("tenant.contactPhone") },
42
+ { key: "expireTime", title: () => t("tenant.expireTime"), format: "date" },
43
+ {
44
+ key: "enabled",
45
+ title: () => t("common.status"),
46
+ width: 90,
47
+ render: (n) => f(ee, {
48
+ value: n.enabled,
49
+ disabled: !w.hasPerm("PUT:/api/v1/sys/tenant/{id}"),
50
+ request: (a) => v.update(n.id, { ...N(n), enabled: a }),
51
+ "onUpdate:value": (a) => {
52
+ n.enabled = a;
53
+ }
54
+ })
55
+ },
56
+ { key: "createTime", title: () => t("common.createTime"), format: "datetime" },
57
+ {
58
+ key: "op",
59
+ title: () => t("common.operation"),
60
+ width: 120,
61
+ fixed: "right",
62
+ hideInSetting: !0,
63
+ render: (n) => f(A, { size: 4, wrapItem: !1 }, () => [
64
+ w.hasPerm("PUT:/api/v1/sys/tenant/{id}") ? f(
65
+ _,
66
+ { size: "small", quaternary: !0, type: "primary", onClick: () => D(n) },
67
+ () => t("common.edit")
68
+ ) : null,
69
+ w.hasPerm("DELETE:/api/v1/sys/tenant/{id}") ? f(
70
+ Q,
71
+ {
72
+ onPositiveClick: () => C(() => v.remove(n.id), t("tenant.deleted")).then((a) => {
73
+ var p;
74
+ a && ((p = g.value) == null || p.refresh());
75
+ })
76
+ },
77
+ {
78
+ trigger: () => f(
79
+ _,
80
+ { size: "small", quaternary: !0, type: "error" },
81
+ () => t("common.delete")
82
+ ),
83
+ default: () => t("tenant.deleteConfirm", { name: n.name })
84
+ }
85
+ ) : null
86
+ ])
87
+ }
88
+ ], h = b(!1), M = b(null), u = b(null), E = {
89
+ code: {
90
+ required: !0,
91
+ whitespace: !0,
92
+ message: () => t("tenant.codeRequired"),
93
+ trigger: ["input", "blur"]
94
+ },
95
+ name: {
96
+ required: !0,
97
+ whitespace: !0,
98
+ message: () => t("tenant.nameRequired"),
99
+ trigger: ["input", "blur"]
100
+ },
101
+ adminAccount: {
102
+ required: !0,
103
+ whitespace: !0,
104
+ message: () => t("tenant.adminAccountRequired"),
105
+ trigger: ["input", "blur"]
106
+ },
107
+ adminPassword: {
108
+ required: !0,
109
+ whitespace: !0,
110
+ message: () => t("tenant.adminPasswordRequired"),
111
+ trigger: ["input", "blur"]
112
+ }
113
+ }, x = () => ({
114
+ code: "",
115
+ name: "",
116
+ contactName: "",
117
+ contactPhone: "",
118
+ isolationMode: 1,
119
+ enabled: !0,
120
+ remark: "",
121
+ adminAccount: "",
122
+ adminPassword: ""
123
+ }), o = B(x());
124
+ function R() {
125
+ u.value = null, Object.assign(o, x()), h.value = !0;
126
+ }
127
+ function D(n) {
128
+ u.value = n.id, Object.assign(o, N(n), { adminAccount: "", adminPassword: "" }), h.value = !0;
129
+ }
130
+ async function I() {
131
+ var n, a;
132
+ await ((n = M.value) == null ? void 0 : n.validate());
133
+ try {
134
+ u.value === null ? await v.add({ ...o }) : await v.update(u.value, { ...o }), y.success(t("tenant.saved")), await ((a = g.value) == null ? void 0 : a.refresh());
135
+ } catch (p) {
136
+ return y.error(q(p)), !1;
137
+ }
138
+ }
139
+ return (n, a) => {
140
+ const p = $("auth");
141
+ return P(), T(S, null, [
142
+ l(e(X), {
143
+ ref_key: "tableRef",
144
+ ref: g,
145
+ "default-page-size": 100,
146
+ columns: z,
147
+ fetcher: e(v).page,
148
+ "flex-height": "",
149
+ "virtual-scroll": "",
150
+ "storage-key": "sys-tenant",
151
+ onError: a[0] || (a[0] = (i) => e(y).error(e(q)(i)))
152
+ }, {
153
+ toolbar: d(() => [
154
+ F((P(), O(e(_), {
155
+ type: "primary",
156
+ onClick: R
157
+ }, {
158
+ icon: d(() => [
159
+ l(Y, {
160
+ icon: "ph:plus",
161
+ size: 16
162
+ })
163
+ ]),
164
+ default: d(() => [
165
+ k(" " + m(e(t)("common.add")), 1)
166
+ ]),
167
+ _: 1
168
+ })), [
169
+ [p, "POST:/api/v1/sys/tenant/add"]
170
+ ])
171
+ ]),
172
+ _: 1
173
+ }, 8, ["fetcher"]),
174
+ l(Z, {
175
+ show: h.value,
176
+ "onUpdate:show": a[11] || (a[11] = (i) => h.value = i),
177
+ title: u.value === null ? e(t)("tenant.addTitle") : e(t)("tenant.editTitle"),
178
+ width: 480,
179
+ "on-confirm": I,
180
+ "confirm-text": e(t)("common.save")
181
+ }, {
182
+ default: d(() => [
183
+ l(e(H), {
184
+ ref_key: "formRef",
185
+ ref: M,
186
+ model: o,
187
+ rules: E,
188
+ "label-placement": "left",
189
+ "label-width": 90
190
+ }, {
191
+ default: d(() => [
192
+ l(e(r), {
193
+ label: e(t)("tenant.code"),
194
+ path: "code"
195
+ }, {
196
+ default: d(() => [
197
+ l(e(c), {
198
+ value: o.code,
199
+ "onUpdate:value": a[1] || (a[1] = (i) => o.code = i),
200
+ disabled: u.value !== null,
201
+ placeholder: e(t)("tenant.codePlaceholder")
202
+ }, null, 8, ["value", "disabled", "placeholder"])
203
+ ]),
204
+ _: 1
205
+ }, 8, ["label"]),
206
+ l(e(r), {
207
+ label: e(t)("tenant.name"),
208
+ path: "name"
209
+ }, {
210
+ default: d(() => [
211
+ l(e(c), {
212
+ value: o.name,
213
+ "onUpdate:value": a[2] || (a[2] = (i) => o.name = i),
214
+ placeholder: e(t)("tenant.name")
215
+ }, null, 8, ["value", "placeholder"])
216
+ ]),
217
+ _: 1
218
+ }, 8, ["label"]),
219
+ l(e(r), {
220
+ label: e(t)("tenant.isolationMode")
221
+ }, {
222
+ default: d(() => [
223
+ l(e(A), {
224
+ vertical: "",
225
+ style: { width: "100%" }
226
+ }, {
227
+ default: d(() => [
228
+ s("div", {
229
+ class: j(["iso-option", { selected: o.isolationMode === 1 }]),
230
+ onClick: a[3] || (a[3] = (i) => o.isolationMode = 1)
231
+ }, [
232
+ s("div", ne, m(e(t)("tenant.isolationModeShared")), 1),
233
+ s("div", oe, m(e(t)("tenant.isolationModeSharedDesc")), 1)
234
+ ], 2),
235
+ s("div", {
236
+ class: "iso-option disabled",
237
+ title: e(t)("tenant.isolationModePhase2")
238
+ }, [
239
+ s("div", ie, [
240
+ k(m(e(t)("tenant.isolationModeStandalone")) + " ", 1),
241
+ l(e(U), {
242
+ size: "tiny",
243
+ type: "warning",
244
+ style: { "margin-left": "6px" }
245
+ }, {
246
+ default: d(() => [
247
+ k(m(e(t)("tenant.isolationModePhase2")), 1)
248
+ ]),
249
+ _: 1
250
+ })
251
+ ]),
252
+ s("div", de, m(e(t)("tenant.isolationModeStandaloneDesc")), 1)
253
+ ], 8, le)
254
+ ]),
255
+ _: 1
256
+ })
257
+ ]),
258
+ _: 1
259
+ }, 8, ["label"]),
260
+ l(e(r), {
261
+ label: e(t)("tenant.contactName")
262
+ }, {
263
+ default: d(() => [
264
+ l(e(c), {
265
+ value: o.contactName,
266
+ "onUpdate:value": a[4] || (a[4] = (i) => o.contactName = i)
267
+ }, null, 8, ["value"])
268
+ ]),
269
+ _: 1
270
+ }, 8, ["label"]),
271
+ l(e(r), {
272
+ label: e(t)("tenant.contactPhone")
273
+ }, {
274
+ default: d(() => [
275
+ l(e(c), {
276
+ value: o.contactPhone,
277
+ "onUpdate:value": a[5] || (a[5] = (i) => o.contactPhone = i)
278
+ }, null, 8, ["value"])
279
+ ]),
280
+ _: 1
281
+ }, 8, ["label"]),
282
+ l(e(r), {
283
+ label: e(t)("tenant.expireTime")
284
+ }, {
285
+ default: d(() => [
286
+ l(e(J), {
287
+ "formatted-value": o.expireTime,
288
+ "onUpdate:formattedValue": a[6] || (a[6] = (i) => o.expireTime = i),
289
+ "value-format": "yyyy-MM-dd",
290
+ type: "date",
291
+ style: { width: "100%" }
292
+ }, null, 8, ["formatted-value"])
293
+ ]),
294
+ _: 1
295
+ }, 8, ["label"]),
296
+ l(e(r), {
297
+ label: e(t)("common.status")
298
+ }, {
299
+ default: d(() => [
300
+ l(e(K), {
301
+ value: o.enabled,
302
+ "onUpdate:value": a[7] || (a[7] = (i) => o.enabled = i)
303
+ }, null, 8, ["value"])
304
+ ]),
305
+ _: 1
306
+ }, 8, ["label"]),
307
+ u.value === null ? (P(), T(S, { key: 0 }, [
308
+ s("div", re, [
309
+ s("div", se, m(e(t)("tenant.initialAdmin")), 1)
310
+ ]),
311
+ l(e(r), {
312
+ label: e(t)("tenant.adminAccount"),
313
+ path: "adminAccount"
314
+ }, {
315
+ default: d(() => [
316
+ l(e(c), {
317
+ value: o.adminAccount,
318
+ "onUpdate:value": a[8] || (a[8] = (i) => o.adminAccount = i),
319
+ placeholder: e(t)("tenant.adminAccountPlaceholder")
320
+ }, null, 8, ["value", "placeholder"])
321
+ ]),
322
+ _: 1
323
+ }, 8, ["label"]),
324
+ l(e(r), {
325
+ label: e(t)("tenant.adminPassword"),
326
+ path: "adminPassword"
327
+ }, {
328
+ default: d(() => [
329
+ l(e(c), {
330
+ value: o.adminPassword,
331
+ "onUpdate:value": a[9] || (a[9] = (i) => o.adminPassword = i),
332
+ type: "password",
333
+ "show-password-on": "click",
334
+ placeholder: e(t)("tenant.adminPasswordPlaceholder")
335
+ }, null, 8, ["value", "placeholder"])
336
+ ]),
337
+ _: 1
338
+ }, 8, ["label"])
339
+ ], 64)) : L("", !0),
340
+ l(e(r), {
341
+ label: e(t)("tenant.remark")
342
+ }, {
343
+ default: d(() => [
344
+ l(e(c), {
345
+ value: o.remark,
346
+ "onUpdate:value": a[10] || (a[10] = (i) => o.remark = i),
347
+ type: "textarea",
348
+ rows: 2
349
+ }, null, 8, ["value"])
350
+ ]),
351
+ _: 1
352
+ }, 8, ["label"])
353
+ ]),
354
+ _: 1
355
+ }, 8, ["model"])
356
+ ]),
357
+ _: 1
358
+ }, 8, ["show", "title", "confirm-text"])
359
+ ], 64);
360
+ };
361
+ }
362
+ });
363
+ export {
364
+ _e as default
365
+ };
366
+ //# sourceMappingURL=index2.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.vue.js","sources":["../../../../src/views/system/tenant/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 租户管理:标准 SmartTable CRUD + 行内启停,多一个\"隔离模式\"分段控件(一期只有共享库可选)\n// + 创建态才出现的初始管理员两个字段(编辑不改已有租户的管理员)。\nimport { h, reactive, ref } from 'vue'\nimport {\n NButton,\n NSpace,\n NInput,\n NDatePicker,\n NPopconfirm,\n NTag,\n NForm,\n NFormItem,\n NSwitch,\n useMessage,\n type FormInst,\n type FormRules,\n} from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport { SmartTable, type SmartTableColumn, type SmartTableInst } from 'smart-naive-table'\nimport AppIcon from '#/components/AppIcon.vue'\nimport FormContainer from '#/components/FormContainer/index.vue'\nimport StatusSwitch from '#/components/StatusSwitch/index.vue'\nimport { useConfirm } from '#/composables/useConfirm'\nimport { tenantApi } from '#/api'\nimport { useAuthStore } from '#/stores/auth'\nimport { translateError } from '#/utils/error'\nimport type { TenantCreateInput, TenantInput, SysTenant } from '#/types/api'\n\nconst { t } = useI18n()\nconst message = useMessage()\nconst { run } = useConfirm()\nconst authStore = useAuthStore()\nconst tableRef = ref<SmartTableInst<SysTenant>>()\n\n// 可空字段落到 '' 而不是 null/undefined:n-input 的 v-model 才能直接绑,不用逐处 as string(同 role.vue 惯例)。\nconst toInput = (r: SysTenant): TenantInput => ({\n code: r.code,\n name: r.name,\n contactName: r.contactName ?? '',\n contactPhone: r.contactPhone ?? '',\n expireTime: r.expireTime,\n isolationMode: r.isolationMode,\n enabled: r.enabled,\n remark: r.remark ?? '',\n})\n\nconst columns: SmartTableColumn<SysTenant>[] = [\n { type: 'index', title: () => t('common.rowNo'), width: 64, align: 'center' },\n // 编码列不开搜索:后端 TenantPageInput 只支持按 Name 过滤,开了也是个不生效的搜索框。\n { key: 'code', title: () => t('tenant.code') },\n { key: 'name', title: () => t('tenant.name'), search: true },\n {\n key: 'isolationMode',\n title: () => t('tenant.isolationMode'),\n width: 100,\n render: r =>\n h(NTag, { size: 'small', type: r.isolationMode === 1 ? 'info' : 'default' }, () =>\n r.isolationMode === 1\n ? t('tenant.isolationModeShared')\n : t('tenant.isolationModeStandalone'),\n ),\n },\n { key: 'contactName', title: () => t('tenant.contactName') },\n { key: 'contactPhone', title: () => t('tenant.contactPhone') },\n { key: 'expireTime', title: () => t('tenant.expireTime'), format: 'date' },\n {\n key: 'enabled',\n title: () => t('common.status'),\n width: 90,\n render: r =>\n h(StatusSwitch, {\n value: r.enabled,\n disabled: !authStore.hasPerm('PUT:/api/v1/sys/tenant/{id}'),\n request: (next: boolean) => tenantApi.update(r.id, { ...toInput(r), enabled: next }),\n 'onUpdate:value': (v: boolean) => {\n r.enabled = v\n },\n }),\n },\n { key: 'createTime', title: () => t('common.createTime'), format: 'datetime' },\n {\n key: 'op',\n title: () => t('common.operation'),\n width: 120,\n fixed: 'right',\n hideInSetting: true,\n render: r =>\n h(NSpace, { size: 4, wrapItem: false }, () => [\n authStore.hasPerm('PUT:/api/v1/sys/tenant/{id}')\n ? h(\n NButton,\n { size: 'small', quaternary: true, type: 'primary', onClick: () => openEdit(r) },\n () => t('common.edit'),\n )\n : null,\n authStore.hasPerm('DELETE:/api/v1/sys/tenant/{id}')\n ? h(\n NPopconfirm,\n {\n onPositiveClick: () =>\n run(() => tenantApi.remove(r.id), t('tenant.deleted')).then(ok => {\n if (ok) tableRef.value?.refresh()\n }),\n },\n {\n trigger: () =>\n h(NButton, { size: 'small', quaternary: true, type: 'error' }, () =>\n t('common.delete'),\n ),\n default: () => t('tenant.deleteConfirm', { name: r.name }),\n },\n )\n : null,\n ]),\n },\n]\n\n// ── 新增/编辑弹窗 ──\nconst show = ref(false)\nconst formRef = ref<FormInst | null>(null)\nconst editingId = ref<number | null>(null)\nconst rules: FormRules = {\n code: {\n required: true,\n whitespace: true,\n message: () => t('tenant.codeRequired'),\n trigger: ['input', 'blur'],\n },\n name: {\n required: true,\n whitespace: true,\n message: () => t('tenant.nameRequired'),\n trigger: ['input', 'blur'],\n },\n adminAccount: {\n required: true,\n whitespace: true,\n message: () => t('tenant.adminAccountRequired'),\n trigger: ['input', 'blur'],\n },\n adminPassword: {\n required: true,\n whitespace: true,\n message: () => t('tenant.adminPasswordRequired'),\n trigger: ['input', 'blur'],\n },\n}\nconst blank = (): TenantCreateInput => ({\n code: '',\n name: '',\n contactName: '',\n contactPhone: '',\n isolationMode: 1,\n enabled: true,\n remark: '',\n adminAccount: '',\n adminPassword: '',\n})\nconst form = reactive<TenantCreateInput>(blank())\n\nfunction openAdd() {\n editingId.value = null\n Object.assign(form, blank())\n show.value = true\n}\nfunction openEdit(r: SysTenant) {\n editingId.value = r.id\n Object.assign(form, toInput(r), { adminAccount: '', adminPassword: '' })\n show.value = true\n}\nasync function save() {\n await formRef.value?.validate()\n try {\n if (editingId.value === null) await tenantApi.add({ ...form })\n else await tenantApi.update(editingId.value, { ...form })\n message.success(t('tenant.saved'))\n await tableRef.value?.refresh()\n } catch (e) {\n message.error(translateError(e))\n return false\n }\n}\n</script>\n\n<template>\n <SmartTable\n ref=\"tableRef\"\n :default-page-size=\"100\"\n :columns=\"columns\"\n :fetcher=\"tenantApi.page\"\n flex-height\n virtual-scroll\n storage-key=\"sys-tenant\"\n @error=\"e => message.error(translateError(e))\"\n >\n <template #toolbar>\n <n-button v-auth=\"'POST:/api/v1/sys/tenant/add'\" type=\"primary\" @click=\"openAdd\">\n <template #icon><AppIcon icon=\"ph:plus\" :size=\"16\" /></template>\n {{ t('common.add') }}\n </n-button>\n </template>\n </SmartTable>\n\n <FormContainer\n v-model:show=\"show\"\n :title=\"editingId === null ? t('tenant.addTitle') : t('tenant.editTitle')\"\n :width=\"480\"\n :on-confirm=\"save\"\n :confirm-text=\"t('common.save')\"\n >\n <n-form ref=\"formRef\" :model=\"form\" :rules=\"rules\" label-placement=\"left\" :label-width=\"90\">\n <n-form-item :label=\"t('tenant.code')\" path=\"code\">\n <n-input\n v-model:value=\"form.code\"\n :disabled=\"editingId !== null\"\n :placeholder=\"t('tenant.codePlaceholder')\"\n />\n </n-form-item>\n <n-form-item :label=\"t('tenant.name')\" path=\"name\">\n <n-input v-model:value=\"form.name\" :placeholder=\"t('tenant.name')\" />\n </n-form-item>\n\n <!-- 隔离模式:一期只有\"共享库\"可选,\"独立库\"置灰并标\"二期开放\"——见设计稿的路线图展示 -->\n <n-form-item :label=\"t('tenant.isolationMode')\">\n <n-space vertical style=\"width: 100%\">\n <div\n class=\"iso-option\"\n :class=\"{ selected: form.isolationMode === 1 }\"\n @click=\"form.isolationMode = 1\"\n >\n <div class=\"iso-title\">{{ t('tenant.isolationModeShared') }}</div>\n <div class=\"iso-desc\">{{ t('tenant.isolationModeSharedDesc') }}</div>\n </div>\n <div class=\"iso-option disabled\" :title=\"t('tenant.isolationModePhase2')\">\n <div class=\"iso-title\">\n {{ t('tenant.isolationModeStandalone') }}\n <n-tag size=\"tiny\" type=\"warning\" style=\"margin-left: 6px\">\n {{ t('tenant.isolationModePhase2') }}\n </n-tag>\n </div>\n <div class=\"iso-desc\">{{ t('tenant.isolationModeStandaloneDesc') }}</div>\n </div>\n </n-space>\n </n-form-item>\n\n <n-form-item :label=\"t('tenant.contactName')\">\n <n-input v-model:value=\"form.contactName as string\" />\n </n-form-item>\n <n-form-item :label=\"t('tenant.contactPhone')\">\n <n-input v-model:value=\"form.contactPhone as string\" />\n </n-form-item>\n <n-form-item :label=\"t('tenant.expireTime')\">\n <n-date-picker\n v-model:formatted-value=\"form.expireTime\"\n value-format=\"yyyy-MM-dd\"\n type=\"date\"\n style=\"width: 100%\"\n />\n </n-form-item>\n <n-form-item :label=\"t('common.status')\">\n <n-switch v-model:value=\"form.enabled\" />\n </n-form-item>\n\n <!-- 初始管理员账号:只在新增时出现,编辑已有租户不改其管理员 -->\n <template v-if=\"editingId === null\">\n <div class=\"form-section\">\n <div class=\"form-section__title\">{{ t('tenant.initialAdmin') }}</div>\n </div>\n <n-form-item :label=\"t('tenant.adminAccount')\" path=\"adminAccount\">\n <n-input\n v-model:value=\"form.adminAccount\"\n :placeholder=\"t('tenant.adminAccountPlaceholder')\"\n />\n </n-form-item>\n <n-form-item :label=\"t('tenant.adminPassword')\" path=\"adminPassword\">\n <n-input\n v-model:value=\"form.adminPassword\"\n type=\"password\"\n show-password-on=\"click\"\n :placeholder=\"t('tenant.adminPasswordPlaceholder')\"\n />\n </n-form-item>\n </template>\n\n <n-form-item :label=\"t('tenant.remark')\">\n <n-input v-model:value=\"form.remark as string\" type=\"textarea\" :rows=\"2\" />\n </n-form-item>\n </n-form>\n </FormContainer>\n</template>\n\n<style scoped>\n.iso-option {\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md, 10px);\n padding: 10px 12px;\n cursor: pointer;\n}\n.iso-option.selected {\n border-color: var(--color-primary);\n background: var(--color-primary-light);\n}\n.iso-option.disabled {\n cursor: not-allowed;\n opacity: 0.6;\n background: var(--color-fill);\n}\n.iso-title {\n font-size: 13px;\n font-weight: 600;\n color: var(--color-text-primary);\n display: flex;\n align-items: center;\n}\n.iso-desc {\n font-size: 11.5px;\n color: var(--color-text-tertiary);\n margin-top: 3px;\n line-height: 1.5;\n}\n</style>\n"],"names":["useI18n","message","useMessage","run","useConfirm","authStore","useAuthStore","tableRef","ref","toInput","r","columns","h","NTag","StatusSwitch","next","tenantApi","v","NSpace","NButton","openEdit","NPopconfirm","ok","_a","show","formRef","editingId","rules","blank","form","reactive","openAdd","save","_b","e","translateError","_createVNode","_unref","SmartTable","_cache","_createBlock","AppIcon","_createTextVNode","FormContainer","$event","NForm","NFormItem","NInput","_createElementVNode","_normalizeClass","_hoisted_1","_toDisplayString","_hoisted_2","_hoisted_4","_hoisted_5","NDatePicker","NSwitch","_createElementBlock","_Fragment","_hoisted_6","_hoisted_7"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import o from "./index2.vue.js";
2
2
  /* empty css */
3
3
  import t from "../../../_virtual/_plugin-vue_export-helper.js";
4
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-48cff6c5"]]);
4
+ const _ = /* @__PURE__ */ t(o, [["__scopeId", "data-v-99109370"]]);
5
5
  export {
6
- m as default
6
+ _ as default
7
7
  };
8
8
  //# sourceMappingURL=index.vue.js.map