agentworkshop 0.7.22 → 0.7.24
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.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/0jKrzLuM.js +19 -0
- package/.output/public/_nuxt/{Cor9siSf.js → 6PZPfFcO.js} +1 -1
- package/.output/public/_nuxt/BAfp6tmu.js +14 -0
- package/.output/public/_nuxt/{B-xskWta.js → BCJFMBQ6.js} +1 -1
- package/.output/public/_nuxt/{DNxVTfhe.js → BMb80_tm.js} +1 -1
- package/.output/public/_nuxt/{n3vMFfrv.js → Bc-_IsBP.js} +3 -3
- package/.output/public/_nuxt/BvNJUu3s.js +1 -0
- package/.output/public/_nuxt/C1CSiSBN.js +1 -0
- package/.output/public/_nuxt/CAGL7TNK.js +1 -0
- package/.output/public/_nuxt/{ed5qX-x5.js → CDLv-n51.js} +1 -1
- package/.output/public/_nuxt/CJviSvm-.js +1 -0
- package/.output/public/_nuxt/CLZWFhZC.js +1 -0
- package/.output/public/_nuxt/{Cr9DkD1d.js → CYzpZzB_.js} +1 -1
- package/.output/public/_nuxt/Cb3SnTM8.js +1 -0
- package/.output/public/_nuxt/CjXIpPMR.js +1 -0
- package/.output/public/_nuxt/CmHzfVc5.js +3 -0
- package/.output/public/_nuxt/Cn3J3NXR.js +23 -0
- package/.output/public/_nuxt/Coik560n.js +1 -0
- package/.output/public/_nuxt/{DA4lxCWC2.js → Ct68Z0232.js} +1 -1
- package/.output/public/_nuxt/CuVGPuP1.js +1 -0
- package/.output/public/_nuxt/CxY6LfeN.js +1 -0
- package/.output/public/_nuxt/{CfVAr2nf.js → Cz9gD2Yo.js} +1 -1
- package/.output/public/_nuxt/D6HDb-vN2.js +1 -0
- package/.output/public/_nuxt/{E88a-JCG.js → DGAOugLt.js} +1 -1
- package/.output/public/_nuxt/DKHcFE1i.js +1 -0
- package/.output/public/_nuxt/{BxtpDtzC.js → DNQF_TXX.js} +1 -1
- package/.output/public/_nuxt/DSa2O56y.js +1 -0
- package/.output/public/_nuxt/DUToq-k_.js +1 -0
- package/.output/public/_nuxt/Dfe8vXdG.js +1 -0
- package/.output/public/_nuxt/{0exC4jVL.js → Djir5rSD.js} +2 -2
- package/.output/public/_nuxt/DjtE7AYt.js +1 -0
- package/.output/public/_nuxt/{BBwMH_hG.js → DoAlYsiF.js} +1 -1
- package/.output/public/_nuxt/{DWcEk1ur2.js → DvgKXPgu2.js} +1 -1
- package/.output/public/_nuxt/JOwsShod.js +2 -0
- package/.output/public/_nuxt/X6IraCTB.js +1 -0
- package/.output/public/_nuxt/_id_.C-YXjn8Q.css +1 -0
- package/.output/public/_nuxt/_id_.MbzdFygI.css +1 -0
- package/.output/public/_nuxt/_wsId_.BqWBlY7X.css +1 -0
- package/.output/public/_nuxt/{CYBq3kS7.js → b50gYVZl.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/024de5f7-6a10-4f53-82ab-bc65f3ec9e35.json +1 -0
- package/.output/public/_nuxt/daq.3OKj58HH.css +1 -0
- package/.output/public/_nuxt/dcw.rXH2fc2Z.css +1 -0
- package/.output/public/_nuxt/entry.AZM1Culo.css +1 -0
- package/.output/public/_nuxt/logs.DMOM-iHe.css +1 -0
- package/.output/public/_nuxt/monitor.B--1dPzs.css +1 -0
- package/.output/public/_nuxt/permissions.B1pjGChZ.css +1 -0
- package/.output/public/_nuxt/plugins.DpCuwaJt.css +1 -0
- package/.output/public/_nuxt/tokens.xRb1fSPU.css +1 -0
- package/.output/public/_nuxt/users.DuAt_Zwf.css +1 -0
- package/.output/public/_nuxt/workshop.BJg84pOK.css +1 -0
- package/.output/server/chunks/_/nitro.mjs +777 -798
- package/.output/server/chunks/build/{OmpTerminalPanel-Ban3yJZ4.mjs → OmpTerminalPanel-Cw_Vw9oO.mjs} +3 -3
- package/.output/server/chunks/build/{OmpTerminalPanel-Ban3yJZ4.mjs.map → OmpTerminalPanel-Cw_Vw9oO.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-B9RvEQFC.mjs → _id_-DQDqj-cZ.mjs} +31 -31
- package/.output/server/chunks/build/{_id_-B9RvEQFC.mjs.map → _id_-DQDqj-cZ.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-CqF0R5W5.mjs → _id_-DY6v6sqB.mjs} +135 -135
- package/.output/server/chunks/build/{_id_-CqF0R5W5.mjs.map → _id_-DY6v6sqB.mjs.map} +1 -1
- package/.output/server/chunks/build/{_wsId_-YC2t_fRt.mjs → _wsId_-D38Vx6Ky.mjs} +11 -13
- package/.output/server/chunks/build/{_wsId_-YC2t_fRt.mjs.map → _wsId_-D38Vx6Ky.mjs.map} +1 -1
- package/.output/server/chunks/build/{agents--6bzGtES.mjs → agents-GnmUGZir.mjs} +6 -8
- package/.output/server/chunks/build/agents-GnmUGZir.mjs.map +1 -0
- package/.output/server/chunks/build/button-DEcZFcqN.mjs +1 -1
- package/.output/server/chunks/build/{card-CCPQoKlh.mjs → card-Dipvaykh.mjs} +4 -4
- package/.output/server/chunks/build/{card-CCPQoKlh.mjs.map → card-Dipvaykh.mjs.map} +1 -1
- package/.output/server/chunks/build/{channel-templates-C1Bb-U75.mjs → channel-templates-B4z6v8Z5.mjs} +4 -6
- package/.output/server/chunks/build/channel-templates-B4z6v8Z5.mjs.map +1 -0
- package/.output/server/chunks/build/{checkbox-Dv1kjaUZ.mjs → checkbox-dzcpU_Cd.mjs} +2 -2
- package/.output/server/chunks/build/{checkbox-Dv1kjaUZ.mjs.map → checkbox-dzcpU_Cd.mjs.map} +1 -1
- package/.output/server/chunks/build/{daq-Bhwwz9vp.mjs → daq-B-3xCp_2.mjs} +103 -103
- package/.output/server/chunks/build/{daq-Bhwwz9vp.mjs.map → daq-B-3xCp_2.mjs.map} +1 -1
- package/.output/server/chunks/build/{dcw-CBPaFj2f.mjs → dcw-BL2dhuz7.mjs} +43 -43
- package/.output/server/chunks/build/{dcw-CBPaFj2f.mjs.map → dcw-BL2dhuz7.mjs.map} +1 -1
- package/.output/server/chunks/build/{default-DdV642BY.mjs → default-CLf5m0NE.mjs} +2 -3
- package/.output/server/chunks/build/{default-DdV642BY.mjs.map → default-CLf5m0NE.mjs.map} +1 -1
- package/.output/server/chunks/build/dropdown-vhn1NPFs.mjs +1 -1
- package/.output/server/chunks/build/{input-number-CZ3ZrCsy.mjs → input-number-Bd55elNN.mjs} +3 -3
- package/.output/server/chunks/build/{input-number-CZ3ZrCsy.mjs.map → input-number-Bd55elNN.mjs.map} +1 -1
- package/.output/server/chunks/build/{input-DxDqeyQW.mjs → input-sf_BT6o6.mjs} +553 -5
- package/.output/server/chunks/build/input-sf_BT6o6.mjs.map +1 -0
- package/.output/server/chunks/build/{logs-Bz1p6x_5.mjs → logs-Dto_umFY.mjs} +44 -38
- package/.output/server/chunks/build/logs-Dto_umFY.mjs.map +1 -0
- package/.output/server/chunks/build/menu-WCrlpYVh.mjs +2 -2
- package/.output/server/chunks/build/modal-yvUquPj5.mjs +2 -2
- package/.output/server/chunks/build/{monitor-miqq9xHB.mjs → monitor-Cp4V-H2n.mjs} +70 -192
- package/.output/server/chunks/build/monitor-Cp4V-H2n.mjs.map +1 -0
- package/.output/server/chunks/build/{pages-D9tOoJsf.mjs → pages-Dc2H1QFu.mjs} +2 -3
- package/.output/server/chunks/build/pages-Dc2H1QFu.mjs.map +1 -0
- package/.output/server/chunks/build/{permissions-CxEgXic0.mjs → permissions-BTRW2CVd.mjs} +288 -194
- package/.output/server/chunks/build/permissions-BTRW2CVd.mjs.map +1 -0
- package/.output/server/chunks/build/{plugins-wLIKHcIE.mjs → plugins-DZR0T4Mh.mjs} +17 -17
- package/.output/server/chunks/build/{plugins-wLIKHcIE.mjs.map → plugins-DZR0T4Mh.mjs.map} +1 -1
- package/.output/server/chunks/build/popconfirm-CRaHcz5O.mjs +1 -1
- package/.output/server/chunks/build/{segmented-ChmQZwz6.mjs → segmented-LPPREMtZ.mjs} +336 -5
- package/.output/server/chunks/build/{segmented-ChmQZwz6.mjs.map → segmented-LPPREMtZ.mjs.map} +1 -1
- package/.output/server/chunks/build/{settings-BPBll_7K.mjs → settings-UfGyDgM7.mjs} +6 -8
- package/.output/server/chunks/build/settings-UfGyDgM7.mjs.map +1 -0
- package/.output/server/chunks/build/space-CCBYAkXt.mjs +1 -1
- package/.output/server/chunks/build/switch-CelRXpcy.mjs +1 -1
- package/.output/server/chunks/build/{table-BtksyDlQ.mjs → table-Cswq-l2r.mjs} +5 -5
- package/.output/server/chunks/build/{table-BtksyDlQ.mjs.map → table-Cswq-l2r.mjs.map} +1 -1
- package/.output/server/chunks/build/{tabs-DQv-_-R6.mjs → tabs-BM3tAh_J.mjs} +2 -2
- package/.output/server/chunks/build/{tabs-DQv-_-R6.mjs.map → tabs-BM3tAh_J.mjs.map} +1 -1
- package/.output/server/chunks/build/{tag-A0tZ2Ouq.mjs → tag-NO9jEqKy.mjs} +3 -3
- package/.output/server/chunks/build/{tag-A0tZ2Ouq.mjs.map → tag-NO9jEqKy.mjs.map} +1 -1
- package/.output/server/chunks/build/{teams-DD8ZXTKL.mjs → teams-Cbg27MWW.mjs} +4 -6
- package/.output/server/chunks/build/teams-Cbg27MWW.mjs.map +1 -0
- package/.output/server/chunks/build/{tokens-Dxnuw96_.mjs → tokens-Bmm6rDfj.mjs} +296 -200
- package/.output/server/chunks/build/tokens-Bmm6rDfj.mjs.map +1 -0
- package/.output/server/chunks/build/{users-D6RNylrW.mjs → users-B50HHrfi.mjs} +12 -13
- package/.output/server/chunks/build/users-B50HHrfi.mjs.map +1 -0
- package/.output/server/chunks/build/{workshop-CTcYDq2i.mjs → workshop-81xhz368.mjs} +21 -22
- package/.output/server/chunks/build/workshop-81xhz368.mjs.map +1 -0
- package/.output/server/chunks/routes/renderer.mjs +2 -2
- package/.output/server/chunks/virtual/entry.mjs +53 -21
- package/.output/server/chunks/virtual/entry.mjs.map +1 -1
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/app/app.vue +7 -0
- package/app/assets/css/main.css +318 -162
- package/app/components/workshop/blocks/ClusterArtifact.vue +0 -16
- package/app/pages/daq/[id].vue +919 -938
- package/app/pages/daq/index.vue +1 -22
- package/app/pages/dcw/[id].vue +1 -4
- package/app/pages/dcw/index.vue +1 -30
- package/app/pages/logs/index.vue +99 -87
- package/app/pages/monitor.vue +56 -68
- package/app/pages/permissions/index.vue +86 -82
- package/app/pages/plugins/index.vue +12 -7
- package/app/pages/tokens.vue +94 -96
- package/app/pages/users.vue +10 -18
- package/app/pages/workshop/index.vue +34 -5
- package/i18n/locales/en.ts +4 -1
- package/i18n/locales/zh-CN.ts +6 -1
- package/package.json +1 -1
- package/scripts/_dbg-logs-ui-e2e.py +126 -0
- package/scripts/_dbg-ui-survey.py +52 -0
- package/server/data/daqs.json +101 -101
- package/server/data/dcw-lines.json +7 -0
- package/server/data/dcw-products.json +7 -0
- package/server/data/dcw-recipes.json +22 -0
- package/server/data/dcw-rollback.json +84 -10
- package/server/data/dcw-runs.json +52 -54
- package/server/data/dcw-writes.json +36 -0
- package/server/data/dcws.json +533 -216
- package/server/data/line-runs.json +18 -18
- package/.output/public/_nuxt/BAbAEW0D.js +0 -1
- package/.output/public/_nuxt/BWC4HQHQ.js +0 -1
- package/.output/public/_nuxt/BbZAzXjZ2.js +0 -1
- package/.output/public/_nuxt/BgOhoDTI.js +0 -1
- package/.output/public/_nuxt/BuiGDfMB.js +0 -1
- package/.output/public/_nuxt/BxPPAkGA.js +0 -3
- package/.output/public/_nuxt/C_2bTK0C.js +0 -1
- package/.output/public/_nuxt/CcwJ2mrD2.js +0 -1
- package/.output/public/_nuxt/Ci0uX4c4.js +0 -1
- package/.output/public/_nuxt/D6B0xnjk.js +0 -1
- package/.output/public/_nuxt/DTYBfjRY.js +0 -1
- package/.output/public/_nuxt/DVoWWlUW.js +0 -1
- package/.output/public/_nuxt/Dhqra7NB.js +0 -1
- package/.output/public/_nuxt/DlRO_q5L.js +0 -1
- package/.output/public/_nuxt/DsUUYP292.js +0 -1
- package/.output/public/_nuxt/Dsdy4Ua-.js +0 -1
- package/.output/public/_nuxt/QT54MQV9.js +0 -1
- package/.output/public/_nuxt/RzXYI9FM.js +0 -23
- package/.output/public/_nuxt/UtviM1bg.js +0 -1
- package/.output/public/_nuxt/_id_.C2VHq_vT.css +0 -1
- package/.output/public/_nuxt/_id_.Dswy2p0I.css +0 -1
- package/.output/public/_nuxt/_wsId_.BFyCuUwS.css +0 -1
- package/.output/public/_nuxt/bAFueD6a.js +0 -1
- package/.output/public/_nuxt/builds/meta/e2341fc0-6f3f-4680-abf8-935a7c9fb912.json +0 -1
- package/.output/public/_nuxt/c3mwkHWP.js +0 -14
- package/.output/public/_nuxt/daq.BTdEun-8.css +0 -1
- package/.output/public/_nuxt/dbi5bHkY.js +0 -2
- package/.output/public/_nuxt/dcw.rpqpOYQ8.css +0 -1
- package/.output/public/_nuxt/eHYnGew0.js +0 -19
- package/.output/public/_nuxt/entry.DRUzDwmX.css +0 -1
- package/.output/public/_nuxt/jyQyulh-.js +0 -1
- package/.output/public/_nuxt/logs.BarkrvUp.css +0 -1
- package/.output/public/_nuxt/monitor.CmwpEUCI.css +0 -1
- package/.output/public/_nuxt/permissions.DTRtZeTw.css +0 -1
- package/.output/public/_nuxt/plugins.BcSEwwGb.css +0 -1
- package/.output/public/_nuxt/tokens.BVXU1jOK.css +0 -1
- package/.output/public/_nuxt/users.D8lcLE62.css +0 -1
- package/.output/public/_nuxt/workshop.CbymC2LY.css +0 -1
- package/.output/public/_nuxt/zVkqCZ78.js +0 -1
- package/.output/server/chunks/build/Col-biaNnEPf.mjs +0 -338
- package/.output/server/chunks/build/Col-biaNnEPf.mjs.map +0 -1
- package/.output/server/chunks/build/agents--6bzGtES.mjs.map +0 -1
- package/.output/server/chunks/build/channel-templates-C1Bb-U75.mjs.map +0 -1
- package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs +0 -554
- package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs.map +0 -1
- package/.output/server/chunks/build/input-DxDqeyQW.mjs.map +0 -1
- package/.output/server/chunks/build/logs-Bz1p6x_5.mjs.map +0 -1
- package/.output/server/chunks/build/monitor-miqq9xHB.mjs.map +0 -1
- package/.output/server/chunks/build/pages-D9tOoJsf.mjs.map +0 -1
- package/.output/server/chunks/build/permissions-CxEgXic0.mjs.map +0 -1
- package/.output/server/chunks/build/settings-BPBll_7K.mjs.map +0 -1
- package/.output/server/chunks/build/teams-DD8ZXTKL.mjs.map +0 -1
- package/.output/server/chunks/build/tokens-Dxnuw96_.mjs.map +0 -1
- package/.output/server/chunks/build/useSiteConfig-DJe_KMVr.mjs +0 -27
- package/.output/server/chunks/build/useSiteConfig-DJe_KMVr.mjs.map +0 -1
- package/.output/server/chunks/build/users-D6RNylrW.mjs.map +0 -1
- package/.output/server/chunks/build/workshop-CTcYDq2i.mjs.map +0 -1
- /package/.output/public/_nuxt/{CNs_Ozdc.js → CNs_Ozdc2.js} +0 -0
- /package/.output/public/_nuxt/{Cno6kYiO.js → Cno6kYiO2.js} +0 -0
- /package/.output/public/_nuxt/{DAR70Lf5.js → DAR70Lf52.js} +0 -0
- /package/.output/public/_nuxt/{ORt9oDIy2.js → ORt9oDIy.js} +0 -0
|
@@ -129,12 +129,12 @@ onMounted(load)
|
|
|
129
129
|
|
|
130
130
|
<template>
|
|
131
131
|
<div class="perm-page">
|
|
132
|
-
<header class="
|
|
132
|
+
<header class="aw-page-head">
|
|
133
133
|
<div>
|
|
134
134
|
<p class="aw-kicker">
|
|
135
135
|
agentworkshop / permissions
|
|
136
136
|
</p>
|
|
137
|
-
<h1
|
|
137
|
+
<h1>
|
|
138
138
|
{{ $t('permissions.title') }}
|
|
139
139
|
</h1>
|
|
140
140
|
<p class="pg-sub">
|
|
@@ -149,85 +149,90 @@ onMounted(load)
|
|
|
149
149
|
/>
|
|
150
150
|
</header>
|
|
151
151
|
|
|
152
|
-
<a-
|
|
153
|
-
:
|
|
154
|
-
|
|
155
|
-
row-key="id"
|
|
156
|
-
size="middle"
|
|
157
|
-
:pagination="{ pageSize: 12, showSizeChanger: false }"
|
|
152
|
+
<a-card
|
|
153
|
+
:bordered="false"
|
|
154
|
+
class="table-card"
|
|
158
155
|
>
|
|
159
|
-
<a-table
|
|
160
|
-
:
|
|
161
|
-
|
|
156
|
+
<a-table
|
|
157
|
+
:data-source="filteredUsers"
|
|
158
|
+
:loading="loading"
|
|
159
|
+
row-key="id"
|
|
160
|
+
size="middle"
|
|
161
|
+
:pagination="{ pageSize: 12, showSizeChanger: false }"
|
|
162
162
|
>
|
|
163
|
-
<
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
<
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
<
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
<
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
<
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
<
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
>
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
163
|
+
<a-table-column
|
|
164
|
+
:title="$t('permissions.colUser')"
|
|
165
|
+
data-index="name"
|
|
166
|
+
>
|
|
167
|
+
<template #default="{ record }">
|
|
168
|
+
<a @click.prevent="openDetail(record)">{{ record.name }}</a>
|
|
169
|
+
</template>
|
|
170
|
+
</a-table-column>
|
|
171
|
+
<a-table-column
|
|
172
|
+
:title="$t('permissions.colEmail')"
|
|
173
|
+
data-index="email"
|
|
174
|
+
/>
|
|
175
|
+
<a-table-column
|
|
176
|
+
:title="$t('permissions.colRole')"
|
|
177
|
+
data-index="role"
|
|
178
|
+
>
|
|
179
|
+
<template #default="{ record }">
|
|
180
|
+
<a-tag :color="record.role === 'admin' ? 'green' : record.role === 'editor' ? 'blue' : 'default'">
|
|
181
|
+
{{ record.role }}
|
|
182
|
+
</a-tag>
|
|
183
|
+
</template>
|
|
184
|
+
</a-table-column>
|
|
185
|
+
<a-table-column
|
|
186
|
+
:title="$t('permissions.colStatus')"
|
|
187
|
+
data-index="status"
|
|
188
|
+
>
|
|
189
|
+
<template #default="{ record }">
|
|
190
|
+
<a-tag :color="record.status === 'active' ? 'cyan' : 'red'">
|
|
191
|
+
{{ record.status === 'active' ? $t('permissions.active') : record.status }}
|
|
192
|
+
</a-tag>
|
|
193
|
+
</template>
|
|
194
|
+
</a-table-column>
|
|
195
|
+
<a-table-column
|
|
196
|
+
:title="$t('permissions.colChannels')"
|
|
197
|
+
data-index="channels"
|
|
198
|
+
>
|
|
199
|
+
<template #default="{ record }">
|
|
200
|
+
{{ record.channels.length }}
|
|
201
|
+
</template>
|
|
202
|
+
</a-table-column>
|
|
203
|
+
<a-table-column
|
|
204
|
+
:title="$t('permissions.colGrants')"
|
|
205
|
+
data-index="grants"
|
|
206
|
+
>
|
|
207
|
+
<template #default="{ record }">
|
|
208
|
+
<a-tag
|
|
209
|
+
v-for="g in record.grants"
|
|
210
|
+
:key="g.lineId"
|
|
211
|
+
style="margin-bottom: 2px"
|
|
212
|
+
>
|
|
213
|
+
{{ (lines.find(l => l.id === g.lineId)?.name ?? g.lineId).slice(0, 14) }} · {{ modeTag(g.mode) }}
|
|
214
|
+
</a-tag>
|
|
215
|
+
<span
|
|
216
|
+
v-if="!record.grants.length"
|
|
217
|
+
class="dim"
|
|
218
|
+
>—</span>
|
|
219
|
+
</template>
|
|
220
|
+
</a-table-column>
|
|
221
|
+
<a-table-column
|
|
222
|
+
:title="$t('permissions.colOps')"
|
|
223
|
+
:width="90"
|
|
224
|
+
>
|
|
225
|
+
<template #default="{ record }">
|
|
226
|
+
<a-button
|
|
227
|
+
size="small"
|
|
228
|
+
@click="openDetail(record)"
|
|
229
|
+
>
|
|
230
|
+
{{ $t('permissions.manage') }}
|
|
231
|
+
</a-button>
|
|
232
|
+
</template>
|
|
233
|
+
</a-table-column>
|
|
234
|
+
</a-table>
|
|
235
|
+
</a-card>
|
|
231
236
|
|
|
232
237
|
<a-drawer
|
|
233
238
|
v-model:open="drawerOpen"
|
|
@@ -313,9 +318,8 @@ onMounted(load)
|
|
|
313
318
|
|
|
314
319
|
<style scoped lang="css">
|
|
315
320
|
.perm-page { max-width: 1180px; margin: 0 auto; padding: 24px 20px 48px; }
|
|
316
|
-
.pg-
|
|
317
|
-
.
|
|
318
|
-
.pg-sub { margin: 4px 0 0; opacity: .6; font-size: 12px; }
|
|
321
|
+
.pg-sub { margin: 8px 0 0; font-size: 12.5px; color: var(--ink-faint); }
|
|
322
|
+
.table-card { margin-bottom: 16px; }
|
|
319
323
|
.dim { opacity: .45; }
|
|
320
324
|
.sec { margin: 20px 0 8px; font-size: 13px; font-weight: 700; }
|
|
321
325
|
.detail dt { margin-top: 8px; font-size: 11px; opacity: .5; }
|
|
@@ -88,12 +88,12 @@ onMounted(load)
|
|
|
88
88
|
|
|
89
89
|
<template>
|
|
90
90
|
<div class="plugins-page">
|
|
91
|
-
<header class="
|
|
91
|
+
<header class="aw-page-head">
|
|
92
92
|
<div>
|
|
93
93
|
<p class="aw-kicker">
|
|
94
94
|
agentworkshop / plugins
|
|
95
95
|
</p>
|
|
96
|
-
<h1
|
|
96
|
+
<h1>
|
|
97
97
|
{{ $t('plugins.title') }}
|
|
98
98
|
</h1>
|
|
99
99
|
<p class="pg-sub">
|
|
@@ -136,7 +136,10 @@ onMounted(load)
|
|
|
136
136
|
v-if="!plugins.length && !loading"
|
|
137
137
|
class="pg-empty"
|
|
138
138
|
>
|
|
139
|
-
|
|
139
|
+
<span class="i-tabler-puzzle pg-empty-ico" />
|
|
140
|
+
<p class="pg-empty-t">
|
|
141
|
+
{{ $t('plugins.empty') }}
|
|
142
|
+
</p>
|
|
140
143
|
</div>
|
|
141
144
|
|
|
142
145
|
<div class="pg-grid aw-stagger">
|
|
@@ -232,14 +235,16 @@ onMounted(load)
|
|
|
232
235
|
|
|
233
236
|
<style scoped lang="css">
|
|
234
237
|
.plugins-page { max-width: 1080px; margin: 0 auto; padding: 24px 20px 48px; }
|
|
235
|
-
.pg-
|
|
236
|
-
.pg-title { margin: 0; font-size: 22px; font-weight: 700; letter-spacing: .5px; }
|
|
237
|
-
.pg-sub { margin: 4px 0 0; opacity: .6; font-size: 12px; }
|
|
238
|
+
.pg-sub { margin: 8px 0 0; opacity: .6; font-size: 12.5px; }
|
|
238
239
|
.pg-stats { display: flex; align-items: center; gap: 14px; font-size: 12px; opacity: .85; }
|
|
239
240
|
.pg-stats b { font-size: 15px; }
|
|
240
241
|
.pg-failures { margin-bottom: 16px; }
|
|
241
242
|
.fail-line { font-family: ui-monospace, monospace; font-size: 11px; }
|
|
242
|
-
.pg-empty {
|
|
243
|
+
.pg-empty { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 56px 24px;
|
|
244
|
+
text-align: center; border: 1px dashed var(--line-strong); border-radius: var(--radius-panel);
|
|
245
|
+
background: var(--paper-deep); }
|
|
246
|
+
.pg-empty-ico { font-size: 30px; color: var(--ink-fainter); }
|
|
247
|
+
.pg-empty-t { margin: 0; font-size: 12.5px; color: var(--ink-faint); }
|
|
243
248
|
.pg-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; }
|
|
244
249
|
.pg-card { position: relative; padding: 14px 16px; border: 1px solid var(--aw-border, rgba(128, 152, 199, .25));
|
|
245
250
|
border-radius: 12px; background: var(--aw-card, rgba(255, 255, 255, .04)); cursor: pointer;
|
package/app/pages/tokens.vue
CHANGED
|
@@ -270,17 +270,17 @@ useHead({ title: () => tt('titles.tokens') })
|
|
|
270
270
|
</div>
|
|
271
271
|
|
|
272
272
|
<template v-else>
|
|
273
|
-
<div class="head">
|
|
273
|
+
<div class="aw-page-head">
|
|
274
274
|
<div>
|
|
275
275
|
<p class="aw-kicker">
|
|
276
276
|
agentworkshop / api tokens
|
|
277
277
|
</p>
|
|
278
|
-
<
|
|
278
|
+
<h1>API Token</h1>
|
|
279
279
|
<p class="sub">
|
|
280
280
|
{{ userStore.user?.name }} · {{ $t('tokens.k1upppaw026') }}
|
|
281
281
|
</p>
|
|
282
282
|
</div>
|
|
283
|
-
<a-space>
|
|
283
|
+
<a-space class="head-actions">
|
|
284
284
|
<a-tag
|
|
285
285
|
v-if="userStore.user?.tokenId"
|
|
286
286
|
color="green"
|
|
@@ -297,95 +297,100 @@ useHead({ title: () => tt('titles.tokens') })
|
|
|
297
297
|
</a-space>
|
|
298
298
|
</div>
|
|
299
299
|
|
|
300
|
-
<a-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
class="tok-op"
|
|
343
|
-
:class="{ ok: copyId === record.id }"
|
|
344
|
-
:title="copyId === record.id ? '已复制' : '复制明文'"
|
|
345
|
-
@click="copyRow(record as TokenMeta)"
|
|
346
|
-
>
|
|
347
|
-
<span :class="copyId === record.id ? 'i-tabler-check' : 'i-tabler-copy'" />
|
|
348
|
-
</a-button>
|
|
349
|
-
<!-- 0.7.10 起 token 只存哈希:无明文是常态,不再打「旧版不可见」标签 -->
|
|
350
|
-
</div>
|
|
351
|
-
</template>
|
|
352
|
-
<template v-else-if="column.key === 'createdAt'">
|
|
353
|
-
{{ fmt(record.createdAt) }}
|
|
354
|
-
</template>
|
|
355
|
-
<template v-else-if="column.key === 'lastUsedAt'">
|
|
356
|
-
{{ fmt(record.lastUsedAt) }}
|
|
357
|
-
</template>
|
|
358
|
-
<template v-else-if="column.key === 'action'">
|
|
359
|
-
<a-space>
|
|
360
|
-
<a-button
|
|
361
|
-
type="link"
|
|
362
|
-
size="small"
|
|
363
|
-
@click="openRename(record)"
|
|
364
|
-
>
|
|
365
|
-
<span class="i-tabler-edit" />
|
|
366
|
-
{{ $t('tokens.k3vrpcs009') }}
|
|
367
|
-
</a-button>
|
|
368
|
-
<a-popconfirm
|
|
369
|
-
:title="record.id === userStore.user?.tokenId ? '吊销当前会话 token 将退出登录' : '吊销后立即失效'"
|
|
370
|
-
:ok-text="'吊销'"
|
|
371
|
-
:cancel-text="'取消'"
|
|
372
|
-
@confirm="doRevoke(record)"
|
|
373
|
-
>
|
|
374
|
-
<!-- 安静文本按钮:常态墨灰,悬停转红 —— 红色只留给真实确认瞬间,不再整行批发 -->
|
|
300
|
+
<a-card
|
|
301
|
+
:bordered="false"
|
|
302
|
+
class="table-card"
|
|
303
|
+
>
|
|
304
|
+
<a-spin :spinning="loading">
|
|
305
|
+
<a-table
|
|
306
|
+
:columns="columns"
|
|
307
|
+
:data-source="tokens"
|
|
308
|
+
:pagination="false"
|
|
309
|
+
row-key="id"
|
|
310
|
+
>
|
|
311
|
+
<template #bodyCell="{ column, record }">
|
|
312
|
+
<template v-if="column.key === 'label'">
|
|
313
|
+
<a-space>
|
|
314
|
+
<span class="i-tabler-key text-primary" />
|
|
315
|
+
<span class="font-medium">{{ record.label || $t('tokens.kj3mklm028') }}</span>
|
|
316
|
+
<a-tag
|
|
317
|
+
v-if="record.id === userStore.user?.tokenId"
|
|
318
|
+
color="green"
|
|
319
|
+
>
|
|
320
|
+
{{ $t('tokens.k1defr98007') }}
|
|
321
|
+
</a-tag>
|
|
322
|
+
</a-space>
|
|
323
|
+
</template>
|
|
324
|
+
<template v-else-if="column.key === 'token'">
|
|
325
|
+
<div class="tok-cell">
|
|
326
|
+
<code
|
|
327
|
+
class="tok-val"
|
|
328
|
+
:class="{ revealed: isRevealed(record.id) }"
|
|
329
|
+
:title="isRevealed(record.id) ? '已显示明文,点击眼睛遮回' : '掩码预览'"
|
|
330
|
+
>{{ rowDisplay(record as TokenMeta) }}</code>
|
|
331
|
+
<a-button
|
|
332
|
+
v-if="record.hasPlain"
|
|
333
|
+
type="text"
|
|
334
|
+
size="small"
|
|
335
|
+
class="tok-op"
|
|
336
|
+
:loading="revealingId === record.id"
|
|
337
|
+
:title="isRevealed(record.id) ? '遮回' : '查看明文'"
|
|
338
|
+
@click="toggleRowReveal(record as TokenMeta)"
|
|
339
|
+
>
|
|
340
|
+
<span :class="isRevealed(record.id) ? 'i-tabler-eye-off' : 'i-tabler-eye'" />
|
|
341
|
+
</a-button>
|
|
375
342
|
<a-button
|
|
343
|
+
v-if="record.hasPlain"
|
|
376
344
|
type="text"
|
|
377
345
|
size="small"
|
|
378
|
-
class="tok-
|
|
346
|
+
class="tok-op"
|
|
347
|
+
:class="{ ok: copyId === record.id }"
|
|
348
|
+
:title="copyId === record.id ? '已复制' : '复制明文'"
|
|
349
|
+
@click="copyRow(record as TokenMeta)"
|
|
379
350
|
>
|
|
380
|
-
<span class="i-tabler-
|
|
381
|
-
{{ $t('tokens.k3xmrz010') }}
|
|
351
|
+
<span :class="copyId === record.id ? 'i-tabler-check' : 'i-tabler-copy'" />
|
|
382
352
|
</a-button>
|
|
383
|
-
|
|
384
|
-
|
|
353
|
+
<!-- 0.7.10 起 token 只存哈希:无明文是常态,不再打「旧版不可见」标签 -->
|
|
354
|
+
</div>
|
|
355
|
+
</template>
|
|
356
|
+
<template v-else-if="column.key === 'createdAt'">
|
|
357
|
+
{{ fmt(record.createdAt) }}
|
|
358
|
+
</template>
|
|
359
|
+
<template v-else-if="column.key === 'lastUsedAt'">
|
|
360
|
+
{{ fmt(record.lastUsedAt) }}
|
|
361
|
+
</template>
|
|
362
|
+
<template v-else-if="column.key === 'action'">
|
|
363
|
+
<a-space>
|
|
364
|
+
<a-button
|
|
365
|
+
type="link"
|
|
366
|
+
size="small"
|
|
367
|
+
@click="openRename(record)"
|
|
368
|
+
>
|
|
369
|
+
<span class="i-tabler-edit" />
|
|
370
|
+
{{ $t('tokens.k3vrpcs009') }}
|
|
371
|
+
</a-button>
|
|
372
|
+
<a-popconfirm
|
|
373
|
+
:title="record.id === userStore.user?.tokenId ? '吊销当前会话 token 将退出登录' : '吊销后立即失效'"
|
|
374
|
+
:ok-text="'吊销'"
|
|
375
|
+
:cancel-text="'取消'"
|
|
376
|
+
@confirm="doRevoke(record)"
|
|
377
|
+
>
|
|
378
|
+
<!-- 安静文本按钮:常态墨灰,悬停转红 —— 红色只留给真实确认瞬间,不再整行批发 -->
|
|
379
|
+
<a-button
|
|
380
|
+
type="text"
|
|
381
|
+
size="small"
|
|
382
|
+
class="tok-revoke"
|
|
383
|
+
>
|
|
384
|
+
<span class="i-tabler-trash" />
|
|
385
|
+
{{ $t('tokens.k3xmrz010') }}
|
|
386
|
+
</a-button>
|
|
387
|
+
</a-popconfirm>
|
|
388
|
+
</a-space>
|
|
389
|
+
</template>
|
|
385
390
|
</template>
|
|
386
|
-
</
|
|
387
|
-
</a-
|
|
388
|
-
</a-
|
|
391
|
+
</a-table>
|
|
392
|
+
</a-spin>
|
|
393
|
+
</a-card>
|
|
389
394
|
|
|
390
395
|
<!-- 创建 Token -->
|
|
391
396
|
<a-modal
|
|
@@ -477,16 +482,9 @@ useHead({ title: () => tt('titles.tokens') })
|
|
|
477
482
|
|
|
478
483
|
.auth-card { width: 460px; max-width: 92vw; }
|
|
479
484
|
.auth-card h2 { margin: 0 0 8px; font-family: var(--font-display); }
|
|
480
|
-
.sub { margin: 0 0
|
|
481
|
-
|
|
482
|
-
.
|
|
483
|
-
display: flex;
|
|
484
|
-
align-items: center;
|
|
485
|
-
justify-content: space-between;
|
|
486
|
-
margin-bottom: 16px;
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
h2 { margin: 0 0 4px; font-family: var(--font-display); }
|
|
485
|
+
.sub { margin: 8px 0 0; font-size: 12.5px; color: var(--ink-faint); }
|
|
486
|
+
.head-actions { padding-bottom: 4px; }
|
|
487
|
+
.table-card { margin-bottom: 16px; }
|
|
490
488
|
|
|
491
489
|
.once-banner {
|
|
492
490
|
display: flex;
|
package/app/pages/users.vue
CHANGED
|
@@ -116,9 +116,12 @@ useHead({ title: () => t('titles.users') })
|
|
|
116
116
|
|
|
117
117
|
<template>
|
|
118
118
|
<div class="page-wrap">
|
|
119
|
-
<div class="page-head">
|
|
119
|
+
<div class="aw-page-head">
|
|
120
120
|
<div>
|
|
121
|
-
<
|
|
121
|
+
<p class="aw-kicker">
|
|
122
|
+
agentworkshop / identity
|
|
123
|
+
</p>
|
|
124
|
+
<h1>
|
|
122
125
|
{{ t('users.title') }}
|
|
123
126
|
<a-tag
|
|
124
127
|
color="volcano"
|
|
@@ -127,8 +130,8 @@ useHead({ title: () => t('titles.users') })
|
|
|
127
130
|
<span class="i-tabler-shield-check" />
|
|
128
131
|
admin
|
|
129
132
|
</a-tag>
|
|
130
|
-
</
|
|
131
|
-
<p class="
|
|
133
|
+
</h1>
|
|
134
|
+
<p class="sub">
|
|
132
135
|
{{ $t('users.k1flpho5002') }}
|
|
133
136
|
</p>
|
|
134
137
|
</div>
|
|
@@ -228,21 +231,10 @@ useHead({ title: () => t('titles.users') })
|
|
|
228
231
|
max-width: 1080px;
|
|
229
232
|
margin: 0 auto;
|
|
230
233
|
}
|
|
231
|
-
.
|
|
232
|
-
|
|
233
|
-
align-items: flex-end;
|
|
234
|
-
justify-content: space-between;
|
|
235
|
-
margin-bottom: 16px;
|
|
236
|
-
}
|
|
237
|
-
.page-title {
|
|
238
|
-
display: flex;
|
|
239
|
-
gap: 8px;
|
|
240
|
-
align-items: center;
|
|
241
|
-
margin: 0 0 4px;
|
|
242
|
-
font-size: 24px;
|
|
234
|
+
.admin-tag {
|
|
235
|
+
transform: translateY(-3px);
|
|
243
236
|
}
|
|
244
|
-
.
|
|
245
|
-
.page-sub { margin: 0; font-size: 12.5px; opacity: 0.55; }
|
|
237
|
+
.sub { margin: 8px 0 0; font-size: 12.5px; color: var(--ink-faint); }
|
|
246
238
|
.gate-card {
|
|
247
239
|
display: flex;
|
|
248
240
|
flex-direction: column;
|
|
@@ -413,16 +413,19 @@ useHead({ title: () => t('titles.workshop') })
|
|
|
413
413
|
</div>
|
|
414
414
|
</div>
|
|
415
415
|
|
|
416
|
-
<
|
|
416
|
+
<button
|
|
417
417
|
v-if="wsStore.workspaces.length === 0 && ready"
|
|
418
|
-
class="
|
|
418
|
+
class="ws-empty"
|
|
419
419
|
@click="createOpen = true"
|
|
420
420
|
>
|
|
421
|
+
<span class="i-tabler-layout-2 ws-empty-ico" />
|
|
421
422
|
<span class="aw-empty-title">从一条产线、一个 Agent 开始</span>
|
|
422
423
|
<span class="aw-empty-sub">Workspace 是频道与任务的容器 —— 建立第一个工作区后,你的 Agent 团队即可上线作业。</span>
|
|
423
|
-
<span class="
|
|
424
|
-
|
|
425
|
-
|
|
424
|
+
<span class="pill-btn ws-empty-cta">
|
|
425
|
+
<span class="i-tabler-plus" />
|
|
426
|
+
新建第一个 Workspace
|
|
427
|
+
</span>
|
|
428
|
+
</button>
|
|
426
429
|
</div>
|
|
427
430
|
</a-spin>
|
|
428
431
|
|
|
@@ -560,6 +563,32 @@ useHead({ title: () => t('titles.workshop') })
|
|
|
560
563
|
border-style: dashed;
|
|
561
564
|
}
|
|
562
565
|
|
|
566
|
+
/* 空态:整幅居中构图(跨全部网格列,代替左上角一张小幽灵卡) */
|
|
567
|
+
.ws-empty {
|
|
568
|
+
grid-column: 1 / -1;
|
|
569
|
+
display: flex;
|
|
570
|
+
flex-direction: column;
|
|
571
|
+
gap: 12px;
|
|
572
|
+
align-items: center;
|
|
573
|
+
justify-content: center;
|
|
574
|
+
min-height: min(480px, calc(100vh - 320px));
|
|
575
|
+
padding: 40px 24px;
|
|
576
|
+
text-align: center;
|
|
577
|
+
cursor: pointer;
|
|
578
|
+
background: transparent;
|
|
579
|
+
border: 1px dashed var(--line-strong);
|
|
580
|
+
border-radius: var(--radius-panel);
|
|
581
|
+
transition: background var(--transition-fast), border-color var(--transition-fast);
|
|
582
|
+
}
|
|
583
|
+
.ws-empty:hover {
|
|
584
|
+
background: var(--hover-tint);
|
|
585
|
+
border-color: var(--ink-fainter);
|
|
586
|
+
}
|
|
587
|
+
.ws-empty-ico { font-size: 34px; color: var(--ink-fainter); }
|
|
588
|
+
.aw-empty-title { font-size: 16px; font-weight: 600; color: var(--ink); }
|
|
589
|
+
.aw-empty-sub { max-width: 420px; font-size: 12.5px; line-height: 1.7; color: var(--ink-faint); }
|
|
590
|
+
.ws-empty-cta { margin-top: 6px; pointer-events: none; }
|
|
591
|
+
|
|
563
592
|
.big { font-size: 28px; }
|
|
564
593
|
|
|
565
594
|
.card-head {
|
package/i18n/locales/en.ts
CHANGED
|
@@ -748,6 +748,7 @@ export default {
|
|
|
748
748
|
'thDetail': 'Detail',
|
|
749
749
|
'expand': 'Detail',
|
|
750
750
|
'fold': 'Fold',
|
|
751
|
+
'noDetail': 'None',
|
|
751
752
|
'loading': 'Querying…',
|
|
752
753
|
'empty': 'No matching log entries',
|
|
753
754
|
'src': {
|
|
@@ -766,6 +767,8 @@ export default {
|
|
|
766
767
|
},
|
|
767
768
|
'mSummary': 'Entry content',
|
|
768
769
|
'mSummaryPh': 'e.g. Replaced heater coil of oven #3; extended soaking for current batch by 10 min',
|
|
770
|
+
'mDetail': 'Detail (optional)',
|
|
771
|
+
'mDetailPh': 'Context, handling notes, related ticket… (stored in the log detail)',
|
|
769
772
|
'mSubmit': 'Record',
|
|
770
773
|
'mOk': 'Recorded',
|
|
771
774
|
},
|
|
@@ -1918,7 +1921,7 @@ export default {
|
|
|
1918
1921
|
loadFail: 'Failed to load plugin list',
|
|
1919
1922
|
hasClient: 'Client enhancer',
|
|
1920
1923
|
routes: 'API routes',
|
|
1921
|
-
empty: 'No plugins yet — aw plugin create
|
|
1924
|
+
empty: 'No plugins yet — run aw plugin create my-plugin, or aw plugin enable to turn on examples',
|
|
1922
1925
|
failures: 'Load failures',
|
|
1923
1926
|
loadFailures: '{n} plugin(s) failed to load, see server startup log',
|
|
1924
1927
|
enableFail: 'Toggle failed',
|
package/i18n/locales/zh-CN.ts
CHANGED
|
@@ -705,6 +705,8 @@ export default {
|
|
|
705
705
|
'kind.system': '系统',
|
|
706
706
|
'mSummary': '记录内容',
|
|
707
707
|
'mSummaryPh': '如:更换 3 号烘箱加热丝,当前批次延长保温 10 分钟',
|
|
708
|
+
'mDetail': '详情(可选)',
|
|
709
|
+
'mDetailPh': '补充说明、处置过程、关联单号等(将存入日志详情)',
|
|
708
710
|
'mSubmit': '入册',
|
|
709
711
|
'mOk': '已入册',
|
|
710
712
|
'src.user': '用户',
|
|
@@ -748,6 +750,7 @@ export default {
|
|
|
748
750
|
'thDetail': '详情',
|
|
749
751
|
'expand': '详情',
|
|
750
752
|
'fold': '收起',
|
|
753
|
+
'noDetail': '无',
|
|
751
754
|
'loading': '查询中…',
|
|
752
755
|
'empty': '无匹配日志',
|
|
753
756
|
'src': {
|
|
@@ -766,6 +769,8 @@ export default {
|
|
|
766
769
|
},
|
|
767
770
|
'mSummary': '记录内容',
|
|
768
771
|
'mSummaryPh': '如:更换 3 号烘箱加热丝,当前批次延长保温 10 分钟',
|
|
772
|
+
'mDetail': '详情(可选)',
|
|
773
|
+
'mDetailPh': '补充说明、处置过程、关联单号等(将存入日志详情)',
|
|
769
774
|
'mSubmit': '入册',
|
|
770
775
|
'mOk': '已入册',
|
|
771
776
|
},
|
|
@@ -1917,7 +1922,7 @@ export default {
|
|
|
1917
1922
|
loadFail: '插件列表加载失败',
|
|
1918
1923
|
hasClient: '浏览器增强',
|
|
1919
1924
|
routes: 'API 路由',
|
|
1920
|
-
empty: '暂无插件 —— aw plugin create
|
|
1925
|
+
empty: '暂无插件 —— 执行 aw plugin create my-plugin 创建,或 aw plugin enable 开启内置示例',
|
|
1921
1926
|
failures: '装载失败',
|
|
1922
1927
|
loadFailures: '{n} 个插件装载失败,详情见服务启动日志',
|
|
1923
1928
|
enableFail: '启停操作失败',
|