mooho-base-admin-plus 0.1.70 → 0.4.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 (88) hide show
  1. package/dist/mooho-base-admin-plus.min.esm.js +15776 -15609
  2. package/dist/mooho-base-admin-plus.min.js +40 -41
  3. package/dist/setting.js +4 -2
  4. package/dist/style.css +1 -1
  5. package/package.json +2 -2
  6. package/public/setting.js +4 -2
  7. package/src/api/customModel.js +1 -1
  8. package/src/api/dataSource.js +1 -1
  9. package/src/api/dataView.js +1 -1
  10. package/src/api/i18nText +33 -0
  11. package/src/api/model.js +1 -1
  12. package/src/components/home/notice-list.vue +2 -2
  13. package/src/components/home/shortcut.vue +9 -9
  14. package/src/components/input/dialog-select.vue +3 -3
  15. package/src/components/input/item-select.vue +5 -5
  16. package/src/components/upload/upload-attachment.vue +13 -3
  17. package/src/components/upload/upload-image.vue +2 -2
  18. package/src/components/view/column-check.vue +3 -3
  19. package/src/components/view/column-edit.vue +18 -18
  20. package/src/components/view/column-select.vue +4 -4
  21. package/src/components/view/condition-edit.vue +10 -10
  22. package/src/components/view/filter-edit.vue +30 -13
  23. package/src/components/view/filter-setting.vue +8 -8
  24. package/src/components/view/form-setting-layout.vue +24 -24
  25. package/src/components/view/form-setting.vue +18 -18
  26. package/src/components/view/group-column.vue +5 -5
  27. package/src/components/view/group-method.vue +5 -5
  28. package/src/components/view/modal-form-filter.vue +28 -25
  29. package/src/components/view/modal-form-sort.vue +32 -27
  30. package/src/components/view/modal-form.vue +30 -8
  31. package/src/components/view/modal-table.vue +22 -2
  32. package/src/components/view/table-filter.vue +18 -11
  33. package/src/components/view/table-setting.vue +30 -42
  34. package/src/components/view/view-chart.vue +6 -6
  35. package/src/components/view/view-form-draggable.vue +3 -3
  36. package/src/components/view/view-form.vue +23 -13
  37. package/src/components/view/view-table.vue +83 -39
  38. package/src/components/workflow/flow-chart.vue +22 -23
  39. package/src/i18n/index.js +7 -7
  40. package/src/index.js +13 -8
  41. package/src/layouts/basic-layout/header-breadcrumb/index.vue +18 -3
  42. package/src/layouts/basic-layout/header-i18n/index.vue +5 -6
  43. package/src/layouts/basic-layout/header-notice/index.vue +2 -2
  44. package/src/layouts/basic-layout/header-search/index.vue +3 -3
  45. package/src/layouts/basic-layout/header-user/index.vue +18 -18
  46. package/src/layouts/basic-layout/menu-side/index.vue +9 -3
  47. package/src/layouts/basic-layout/menu-side/menu-title.vue +5 -4
  48. package/src/layouts/basic-layout/tabs/index.vue +4 -4
  49. package/src/libs/request/index.js +18 -4
  50. package/src/mixins/page.js +72 -18
  51. package/src/pages/account/login.vue +6 -6
  52. package/src/pages/common/task-form.vue +33 -33
  53. package/src/pages/common/todo.vue +1 -1
  54. package/src/pages/system/apiLog.vue +7 -7
  55. package/src/pages/system/applicationType.vue +6 -6
  56. package/src/pages/system/customTable.vue +7 -7
  57. package/src/pages/system/dict.vue +1 -1
  58. package/src/pages/system/dictType.vue +4 -4
  59. package/src/pages/system/entityView.vue +3 -3
  60. package/src/pages/system/error/404.vue +1 -1
  61. package/src/pages/system/extendColumn.vue +7 -7
  62. package/src/pages/system/formView.vue +10 -10
  63. package/src/pages/system/i18nText.vue +98 -0
  64. package/src/pages/system/log.vue +4 -4
  65. package/src/pages/system/openUser.vue +5 -5
  66. package/src/pages/system/organization.vue +1 -1
  67. package/src/pages/system/permission.vue +5 -5
  68. package/src/pages/system/planJob.vue +3 -3
  69. package/src/pages/system/process.vue +10 -10
  70. package/src/pages/system/role.vue +18 -18
  71. package/src/pages/system/rolePropertyEdit.vue +83 -100
  72. package/src/pages/system/systemData.vue +4 -4
  73. package/src/pages/system/tableView.vue +17 -17
  74. package/src/pages/system/taskQueue.vue +13 -6
  75. package/src/pages/system/user.vue +17 -17
  76. package/src/pages/template/processPage.vue +22 -22
  77. package/src/plugins/sweetalert2/index.js +1 -5
  78. package/src/router/dynamic.js +7 -6
  79. package/src/store/modules/admin/modules/i18n.js +72 -32
  80. package/src/store/modules/admin/modules/menu.js +1 -0
  81. package/src/styles/css/default.css +4 -0
  82. package/test/api/barcode.js +1 -1
  83. package/test/api/inbound.js +1 -1
  84. package/test/api/movePlan.js +1 -1
  85. package/test/api/outbound.js +1 -1
  86. package/test/main.js +4 -4
  87. package/test/router/routes.js +2 -2
  88. package/src/i18n/locale.js +0 -102
@@ -7,7 +7,15 @@
7
7
  @slot 顶部
8
8
  -->
9
9
  <slot name="top"></slot>
10
- <Form v-if="tableView.filterEnable && filterEnable" :model="filter" :label-width="layout.filterWidth" label-colon=":" label-position="right" class="filter" @submit.prevent>
10
+ <Form
11
+ v-if="tableView.filterEnable && filterEnable"
12
+ :model="filter"
13
+ :label-width="tableView.filterTitleWidth ? tableView.filterTitleWidth : layout.filterWidth"
14
+ label-colon=":"
15
+ label-position="right"
16
+ class="filter"
17
+ @submit.prevent
18
+ >
11
19
  <div ref="filterCommand">
12
20
  <Row :gutter="24" type="flex" justify="end">
13
21
  <!--
@@ -20,14 +28,7 @@
20
28
  @slot 自定义筛选栏
21
29
  -->
22
30
  <slot name="customFilter"></slot>
23
- <table-filter
24
- ref="tableFilter"
25
- :data="filter"
26
- :columns="filterColumns"
27
- :isDataSource="tableView.isDataSource"
28
- :keywordEnable="tableView.keywordEnable"
29
- @on-keyup="onKeyup"
30
- >
31
+ <table-filter ref="tableFilter" :data="filter" :columns="filterColumns" :table-view="tableView" @on-keyup="onKeyup">
31
32
  <template #column="{ filter, column }">
32
33
  <!--
33
34
  @slot 筛选栏自定义列
@@ -40,8 +41,10 @@
40
41
  </table-filter>
41
42
  <Col v-bind="getGrid(tableView.filterWidth)" :style="{ 'text-align': tableView.filterAlign == null ? 'left' : tableView.filterAlign.toLowerCase() }">
42
43
  <FormItem :label-width="0">
43
- <Button type="info" v-if="tableView.keywordEnable || filterColumns.length > 0" custom-icon="fa fa-search" @click="search()" size="small">查询</Button>
44
- <Button type="primary" v-if="tableView.createEnable && createEnable" custom-icon="fa fa-plus" @click="create()" size="small">新建</Button>
44
+ <Button type="info" v-if="tableView.keywordEnable || filterColumns.length > 0" custom-icon="fa fa-search" @click="search()" size="small">
45
+ {{ $t('Front_Btn_Search') }}
46
+ </Button>
47
+ <Button type="primary" v-if="tableView.createEnable && createEnable" custom-icon="fa fa-plus" @click="create()" size="small">{{ $t('Front_Btn_New') }}</Button>
45
48
  <!--
46
49
  @slot 筛选栏按钮
47
50
  -->
@@ -52,19 +55,26 @@
52
55
  @on-click="moreClick"
53
56
  >
54
57
  <Button type="info" size="small">
55
- 更多...
58
+ {{ $t('Front_Btn_More') }}
56
59
  <Icon type="ios-arrow-down" />
57
60
  </Button>
58
61
  <template #list>
59
62
  <DropdownMenu>
60
- <DropdownItem v-if="tableView.exportEnable" name="exportExcel">导出 Excel</DropdownItem>
61
- <DropdownItem v-if="tableView.exportPdfEnable" name="exportPdf">导出 PDF</DropdownItem>
62
- <DropdownItem v-if="tableView.printEnable" name="print">打印</DropdownItem>
63
- <DropdownItem v-if="tableView.batchEditEnable" name="batchEdit">批量编辑</DropdownItem>
63
+ <DropdownItem v-if="tableView.exportEnable" name="exportExcel">{{ $t('Front_Btn_Export_Excel') }}</DropdownItem>
64
+ <DropdownItem v-if="tableView.exportPdfEnable" name="exportPdf">{{ $t('Front_Btn_Export_PDF') }}</DropdownItem>
65
+ <DropdownItem v-if="tableView.printEnable" name="print">{{ $t('Front_Btn_Print') }}</DropdownItem>
66
+ <DropdownItem v-if="tableView.batchEditEnable" name="batchEdit">{{ $t('Front_Btn_Batch_Edit') }}</DropdownItem>
64
67
  </DropdownMenu>
65
68
  </template>
66
69
  </Dropdown>
67
- <Button type="error" title="筛选设置" custom-icon="fa fa-filter" size="small" v-if="settingEnable && allow('permission/tableView')" @click="filterSettingOpen" />
70
+ <Button
71
+ type="error"
72
+ :title="$t('Front_Btn_Filter_Setting')"
73
+ custom-icon="fa fa-filter"
74
+ size="small"
75
+ v-if="settingEnable && allow('permission/tableView')"
76
+ @click="filterSettingOpen"
77
+ />
68
78
  <Button v-if="tableView.fullEnable" type="info" title="全屏" custom-icon="fa fa-expand-arrows-alt" size="small" @click="isFullScreen = !isFullScreen" />
69
79
  </FormItem>
70
80
  </Col>
@@ -359,7 +369,7 @@
359
369
  />
360
370
  </template>
361
371
  <template v-else-if="column.controlType === 'Placeholder'"></template>
362
- <template v-else>暂不支持此控件 {{ column.controlType }}</template>
372
+ <template v-else>{{ $t('Front_Label_Control_Type_Not_Supported') }} {{ column.controlType }}</template>
363
373
  </template>
364
374
  </template>
365
375
  <template #command="{ row, index }">
@@ -373,7 +383,7 @@
373
383
  <Button
374
384
  v-if="judge(tableView.editEnable, tableView.editEnableJson, rowData(row, index)) && editEnable && !readonly"
375
385
  size="small"
376
- title="编辑"
386
+ :title="$t('Front_Btn_Edit')"
377
387
  type="primary"
378
388
  custom-icon="fa fa-edit"
379
389
  @click="edit(rowData(row, index), index)"
@@ -381,7 +391,7 @@
381
391
  <Button
382
392
  v-if="judge(tableView.removeEnable, tableView.removeEnableJson, rowData(row, index)) && removeEnable && !readonly"
383
393
  size="small"
384
- title="删除"
394
+ :title="$t('Front_Btn_Remove')"
385
395
  type="warning"
386
396
  custom-icon="fa fa-trash-alt"
387
397
  @click="remove(rowData(row, index), index)"
@@ -410,7 +420,14 @@
410
420
  </template>
411
421
  </Table>
412
422
  <div class="ivu-mt ivu-text-right">
413
- <Button class="ivu-fr" type="error" title="设置" custom-icon="fa fa-cog" v-if="settingEnable && allow('permission/tableView')" @click="tableSettingOpen"></Button>
423
+ <Button
424
+ class="ivu-fr"
425
+ type="error"
426
+ :title="$t('Front_Btn_Setting')"
427
+ custom-icon="fa fa-cog"
428
+ v-if="settingEnable && allow('permission/tableView')"
429
+ @click="tableSettingOpen"
430
+ ></Button>
414
431
  <Page
415
432
  show-sizer
416
433
  show-total
@@ -425,7 +442,7 @@
425
442
  </div>
426
443
  <modal-table ref="dialogTable" v-if="dialogActive">
427
444
  <template #command="{ row }">
428
- <Button size="small" title="选择" type="primary" custom-icon="fa fa-check-square-o" @click="dialogCheck(row)"></Button>
445
+ <Button size="small" :title="$t('Front_Btn_Select')" type="primary" custom-icon="fa fa-check-square-o" @click="dialogCheck(row)"></Button>
429
446
  </template>
430
447
  </modal-table>
431
448
  <table-setting ref="tableSetting" v-if="tableSettingActive" :is-setting="true" @on-change="viewCode => init(viewCode)" />
@@ -435,18 +452,27 @@
435
452
  <modal-form ref="modalForm" :saveEnable="false" v-if="inited"></modal-form>
436
453
  <modal-table ref="batchEditTable" :embedded="true" :static="true" :footerEnable="true" v-if="inited">
437
454
  <template #footer>
438
- <Button type="primary" custom-icon="fa fa-save" @click="batchSave()">保存</Button>
439
- <Button type="default" custom-icon="fa fa-times" @click="$refs.batchEditTable.close()">关闭</Button>
455
+ <Button type="primary" custom-icon="fa fa-save" @click="batchSave()">{{ $t('Front_Btn_Save') }}</Button>
456
+ <Button type="default" custom-icon="fa fa-times" @click="$refs.batchEditTable.close()">{{ $t('Front_Btn_Close') }}</Button>
440
457
  </template>
441
458
  </modal-table>
442
- <Modal title="预览" v-model="preview" scrollable :mask-closable="layout.maskClosable" :draggable="layout.draggable" :sticky="true" :reset-drag-position="true" width="70%">
459
+ <Modal
460
+ :title="$t('Front_Label_Preview')"
461
+ v-model="preview"
462
+ scrollable
463
+ :mask-closable="layout.maskClosable"
464
+ :draggable="layout.draggable"
465
+ :sticky="true"
466
+ :reset-drag-position="true"
467
+ width="70%"
468
+ >
443
469
  <div style="text-align: center">
444
470
  <a href="#" :download="imageUrl" onClick="return false;">
445
471
  <img :src="getImgUrl(imageUrl)" v-if="preview" style="max-width: 100%" />
446
472
  </a>
447
473
  </div>
448
474
  <template #footer>
449
- <Button type="default" custom-icon="fa fa-times" @click="preview = false">关闭</Button>
475
+ <Button type="default" custom-icon="fa fa-times" @click="preview = false">{{ $t('Front_Btn_Close') }}</Button>
450
476
  </template>
451
477
  </Modal>
452
478
  </div>
@@ -549,12 +575,14 @@
549
575
  // 默认视图代码
550
576
  if (this.viewCode) {
551
577
  // 初始化
552
- await this.init(this.viewCode);
578
+ setTimeout(async () => {
579
+ await this.init(this.viewCode);
553
580
 
554
- /**
555
- * 初始化完成事件
556
- */
557
- this.$emit('after-init');
581
+ /**
582
+ * 初始化完成事件
583
+ */
584
+ this.$emit('after-init');
585
+ });
558
586
  }
559
587
 
560
588
  if (this.viewCode && this.autoLoad) {
@@ -798,7 +826,7 @@
798
826
  if (typeof onFail === 'function') {
799
827
  onFail();
800
828
  } else {
801
- this.error('视图代码不存在!' + viewCode);
829
+ this.error('Front_Msg_View_Code_Not_Exist' + viewCode);
802
830
  }
803
831
  return;
804
832
  }
@@ -829,9 +857,13 @@
829
857
  return getColumns(view, item);
830
858
  });
831
859
 
860
+ this.columns.forEach(column => {
861
+ column.name = this.getNameI18n(column);
862
+ });
863
+
832
864
  if (this.tableView.snEnable) {
833
865
  this.columns.unshift({
834
- title: '序号',
866
+ title: this.$t('Front_Label_Sn'),
835
867
  slot: 'sn',
836
868
  align: 'center',
837
869
  width: 60
@@ -1126,7 +1158,7 @@
1126
1158
  * @public
1127
1159
  */
1128
1160
  remove(row, index) {
1129
- this.confirm('确定要删除该项吗?', async () => {
1161
+ this.confirm('Front_Msg_Sure_To_Delete_Item', async () => {
1130
1162
  if (this.embedded) {
1131
1163
  this.staticData.splice((this.current - 1) * this.size + index, 1);
1132
1164
  this.loadData();
@@ -1143,7 +1175,7 @@
1143
1175
  await modelApi.remove(this.tableView.model, row.id);
1144
1176
  }
1145
1177
 
1146
- this.success('操作成功!', () => {
1178
+ this.success('Front_Msg_Success', () => {
1147
1179
  this.loadData();
1148
1180
  });
1149
1181
  }
@@ -1280,7 +1312,7 @@
1280
1312
  let value = this.parseData(row, column.code);
1281
1313
 
1282
1314
  if (value == null || !(String(value) || '').trim()) {
1283
- this.error('' + (i + 1) + '' + column.name + ' 必须输入!');
1315
+ this.error('Front_Msg_Row_Column_Required|' + (i + 1) + '|' + column.name);
1284
1316
  return false;
1285
1317
  }
1286
1318
  }
@@ -1368,7 +1400,7 @@
1368
1400
  })
1369
1401
  );
1370
1402
  } else if (name === 'batchEdit') {
1371
- this.error('不支持此操作!');
1403
+ this.error('Front_Msg_Not_Supported');
1372
1404
  }
1373
1405
  } else {
1374
1406
  if (name === 'exportExcel') {
@@ -2214,7 +2246,7 @@
2214
2246
  return;
2215
2247
  }
2216
2248
 
2217
- this.confirm('确定要保存吗?', async () => {
2249
+ this.confirm('Front_Msg_Sure_To_Save', async () => {
2218
2250
  let data = this.$refs.batchEditTable.data;
2219
2251
 
2220
2252
  if (this.tableView.isCustom) {
@@ -2223,7 +2255,7 @@
2223
2255
  await modelApi.batchSave(this.tableView.model, data);
2224
2256
  }
2225
2257
 
2226
- this.success('操作成功!', () => {
2258
+ this.success('Front_Msg_Success', () => {
2227
2259
  this.$refs.batchEditTable.close();
2228
2260
  this.loadData();
2229
2261
  });
@@ -2248,6 +2280,18 @@
2248
2280
  });
2249
2281
 
2250
2282
  return result;
2283
+ },
2284
+ // 获取多语言名称
2285
+ getNameI18n(column) {
2286
+ if (column) {
2287
+ if (this.layout.showI18n) {
2288
+ if (column.code) {
2289
+ return this.$t('DataView_' + this.tableView.code + '_' + column.code);
2290
+ }
2291
+ } else {
2292
+ return column.name;
2293
+ }
2294
+ }
2251
2295
  }
2252
2296
  }
2253
2297
  };
@@ -5,8 +5,8 @@
5
5
  <template #header>
6
6
  <div>
7
7
  <slot name="header">
8
- <span class="title">{{ data.process ? data.process.name : '流程定义' }}</span>
9
- <span class="description">Process Defination</span>
8
+ <span class="title">{{ data.process ? data.process.name : $t('Front_Label_Process_Definition') }}</span>
9
+ <span class="description"></span>
10
10
  </slot>
11
11
  </div>
12
12
  </template>
@@ -312,17 +312,17 @@
312
312
  <template #footer>
313
313
  <div>
314
314
  <slot name="footer">
315
- <Button type="primary" custom-icon="fa fa-save" @click="save">保存</Button>
316
- <Button type="primary" custom-icon="fa fa-upload" @click="publish">发布</Button>
315
+ <Button type="primary" custom-icon="fa fa-save" @click="save">{{ $t('Front_Btn_Save') }}</Button>
316
+ <Button type="primary" custom-icon="fa fa-upload" @click="publish">{{ $t('Front_Btn_Publish') }}</Button>
317
317
  </slot>
318
- <Button type="default" custom-icon="fa fa-times" @click="close">关闭</Button>
318
+ <Button type="default" custom-icon="fa fa-times" @click="close">{{ $t('Front_Btn_Close') }}</Button>
319
319
  </div>
320
320
  </template>
321
321
  </Modal>
322
322
  <modal-form ref="interactiveForm" view-code="InteractiveActivityEdit" @on-change="interactiveFormChange">
323
323
  <template #footer>
324
- <Button type="primary" custom-icon="fa fa-save" @click="saveActivity">确定</Button>
325
- <Button type="warning" custom-icon="fa fa-times" @click="removeActivity">删除</Button>
324
+ <Button type="primary" custom-icon="fa fa-save" @click="saveActivity">{{ $t('Front_Btn_OK') }}</Button>
325
+ <Button type="warning" custom-icon="fa fa-times" @click="removeActivity">{{ $t('Front_Btn_Remove') }}</Button>
326
326
  </template>
327
327
  <template #bottom>
328
328
  <view-table
@@ -355,26 +355,26 @@
355
355
  </modal-form>
356
356
  <modal-form ref="serviceForm" view-code="ServiceActivityEdit">
357
357
  <template #footer>
358
- <Button type="primary" custom-icon="fa fa-save" @click="saveActivity">确定</Button>
359
- <Button type="warning" custom-icon="fa fa-times" @click="removeActivity">删除</Button>
358
+ <Button type="primary" custom-icon="fa fa-save" @click="saveActivity">{{ $t('Front_Btn_OK') }}</Button>
359
+ <Button type="warning" custom-icon="fa fa-times" @click="removeActivity">{{ $t('Front_Btn_Remove') }}</Button>
360
360
  </template>
361
361
  </modal-form>
362
362
  <modal-form ref="activityForm" view-code="ActivityEdit">
363
363
  <template #footer>
364
- <Button type="primary" custom-icon="fa fa-save" @click="saveActivity">确定</Button>
365
- <Button type="warning" custom-icon="fa fa-times" @click="removeActivity">删除</Button>
364
+ <Button type="primary" custom-icon="fa fa-save" @click="saveActivity">{{ $t('Front_Btn_OK') }}</Button>
365
+ <Button type="warning" custom-icon="fa fa-times" @click="removeActivity">{{ $t('Front_Btn_Remove') }}</Button>
366
366
  </template>
367
367
  </modal-form>
368
368
  <modal-form ref="judgementOutcomeForm" view-code="JudgementOutcomeEdit">
369
369
  <template #footer>
370
- <Button type="primary" custom-icon="fa fa-save" @click="saveOutcome">确定</Button>
371
- <Button type="warning" custom-icon="fa fa-times" @click="removeOutcome">删除</Button>
370
+ <Button type="primary" custom-icon="fa fa-save" @click="saveOutcome">{{ $t('Front_Btn_OK') }}</Button>
371
+ <Button type="warning" custom-icon="fa fa-times" @click="removeOutcome">{{ $t('Front_Btn_Remove') }}</Button>
372
372
  </template>
373
373
  </modal-form>
374
374
  <modal-form ref="outcomeForm" view-code="OutcomeEdit">
375
375
  <template #footer>
376
- <Button type="primary" custom-icon="fa fa-save" @click="saveOutcome">确定</Button>
377
- <Button type="warning" custom-icon="fa fa-times" @click="removeOutcome">删除</Button>
376
+ <Button type="primary" custom-icon="fa fa-save" @click="saveOutcome">{{ $t('Front_Btn_OK') }}</Button>
377
+ <Button type="warning" custom-icon="fa fa-times" @click="removeOutcome">{{ $t('Front_Btn_Remove') }}</Button>
378
378
  </template>
379
379
  </modal-form>
380
380
  </div>
@@ -460,16 +460,16 @@
460
460
  },
461
461
  // 保存
462
462
  save() {
463
- this.confirm('确定要保存一个未激活的新版本吗?', async () => {
463
+ this.confirm('Front_Msg_Sure_To_Save_Process', async () => {
464
464
  await processDefApi.save(this.data);
465
- this.success('保存成功!');
465
+ this.success('Front_Msg_Success');
466
466
  });
467
467
  },
468
468
  // 发布
469
469
  publish() {
470
- this.confirm('确定要发布一个新版本并激活吗?', async () => {
470
+ this.confirm('Front_Msg_Sure_To_Publish_Process', async () => {
471
471
  await processDefApi.publish(this.data);
472
- this.success('发布成功!');
472
+ this.success('Front_Msg_Success');
473
473
  this.opened = false;
474
474
  });
475
475
  },
@@ -616,7 +616,6 @@
616
616
  return outcome.activityFromPid == this.activityFrom.pid && outcome.activityToPid == activity.pid;
617
617
  })
618
618
  ) {
619
- this.error('结果已存在,不能重复创建!');
620
619
  return;
621
620
  }
622
621
 
@@ -746,7 +745,7 @@
746
745
 
747
746
  if (this.editActivity.activityType == 'Interactive') {
748
747
  let data = this.$refs.interactiveForm.getFullData();
749
- data.destinationRoleParam = JSON.stringify(this.$refs.destinationRoleParamTable.data);
748
+ data.destinationRoleParam = JSON.stringify(this.$refs.destinationRoleParamTable.getData());
750
749
  this.data.activities.splice(index, 1, data);
751
750
  this.$refs.interactiveForm.close();
752
751
  } else if (this.editActivity.activityType == 'Service') {
@@ -759,7 +758,7 @@
759
758
  },
760
759
  // 删除活动
761
760
  removeActivity() {
762
- this.confirm('确定要删除该节点及全部关联结果吗?', () => {
761
+ this.confirm('Front_Msg_Sure_To_Remove_Activity', () => {
763
762
  let index = this.data.activities.findIndex(item => {
764
763
  return item.pid == this.editActivity.pid;
765
764
  });
@@ -799,7 +798,7 @@
799
798
  },
800
799
  // 删除结果
801
800
  removeOutcome() {
802
- this.confirm('确定要删除该结果吗?', () => {
801
+ this.confirm('Front_Msg_Sure_To_Remove_Outcome', () => {
803
802
  let index = this.data.outcomes.findIndex(item => {
804
803
  return item.pid == this.editOutcome.pid;
805
804
  });
package/src/i18n/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  import { createI18n } from 'vue-i18n/index';
2
- import store from '../store/index';
3
- import messages from './locale';
2
+ //import store from '../store/index';
3
+ //import messages from './locale';
4
4
 
5
- store.dispatch('admin/i18n/getLocale');
5
+ //store.dispatch('admin/i18n/getLocale');
6
6
 
7
- const locale = store.state.admin.i18n.locale;
7
+ //const locale = store.state.admin.i18n.locale;
8
8
 
9
9
  export default createI18n({
10
10
  allowComposition: true,
11
11
  globalInjection: true,
12
- legacy: false,
13
- locale,
14
- messages
12
+ legacy: false
13
+ // locale,
14
+ // messages
15
15
  });
package/src/index.js CHANGED
@@ -58,6 +58,7 @@ import NoticeList from './components/home/notice-list.vue';
58
58
  import modelApi from './api/model';
59
59
  import dataSourceApi from './api/dataSource';
60
60
  import taskApi from './api/task';
61
+ import applicationApi from './api/application';
61
62
 
62
63
  // 使用样式,修改主题可以在 styles 目录下创建新的主题包并修改 iView 默认的 less 变量
63
64
  // 参考 https://www.iviewui.com/docs/guide/theme
@@ -108,15 +109,18 @@ const components = {
108
109
 
109
110
  const install = function (app) {
110
111
  if (install.installed) return;
111
- //locale.use(opts.locale);
112
- //locale.i18n(opts.i18n);
113
112
 
114
- //if (window) window.$t = (key, value) => i18n.t(key, value);
113
+ if (window) {
114
+ //window.$app = getCurrentInstance();
115
+ window.$t = i18n.global.t;
116
+ }
115
117
 
116
- app.use(plugins);
118
+ app.use(store);
119
+ app.use(i18n);
117
120
  app.use(ViewUIPlus, {
118
121
  i18n
119
122
  });
123
+ app.use(plugins);
120
124
 
121
125
  app.mixin(mixinApp);
122
126
  //Vue.use(ckEditor);
@@ -159,9 +163,9 @@ Object.keys(files).forEach(key => {
159
163
  // 第一次进入时,取菜单数据用于更新
160
164
  let isFirstRouteChange = true;
161
165
 
162
- const created = async () => {
163
- // 加载设置
164
- //await store.dispatch('admin/setting/init');
166
+ const created = async vue => {
167
+ // 加载多语言
168
+ await store.dispatch('admin/i18n/load', vue);
165
169
  // 初始化动态路由
166
170
  //let dynamicRoutes = await dynamicRouter.init(router, pages, layout);
167
171
  // 处理路由 得到每一级的路由设置
@@ -189,9 +193,10 @@ const routeChanged = to => {
189
193
  //store.dispatch('admin/menu/getMenuList', to);
190
194
  }
191
195
 
196
+ // TODO 权限判断
192
197
  //this.appRouteChange(to, from);
193
198
  };
194
199
 
195
200
  export default API;
196
201
 
197
- export { pages, App, store, i18n, setting, basicLayout, lodop, request, mixinPage, modelApi, dataSourceApi, taskApi, util, createRouter, created, routeChanged };
202
+ export { pages, App, store, i18n, setting, basicLayout, lodop, request, mixinPage, modelApi, dataSourceApi, taskApi, applicationApi, util, createRouter, created, routeChanged };
@@ -8,7 +8,7 @@
8
8
  <i-menu-head-title :item="item" :hide-icon="!showBreadcrumbIcon" />
9
9
  </BreadcrumbItem>
10
10
  <BreadcrumbItem>
11
- <i-menu-head-title :item="siderMenuObject[activePath]" :hide-icon="!showBreadcrumbIcon" />
11
+ <i-menu-head-title :item="currentTitle()" :hide-icon="!showBreadcrumbIcon" />
12
12
  </BreadcrumbItem>
13
13
  </Breadcrumb>
14
14
  </template>
@@ -43,7 +43,14 @@
43
43
  items.forEach(i => {
44
44
  newItems.push(this.siderMenuObject[i]);
45
45
  });
46
- items = items.filter(item => item);
46
+
47
+ if (Setting.layout.showI18n) {
48
+ newItems.forEach(item => {
49
+ item.title = this.$t('Permission_' + item.code);
50
+ });
51
+ }
52
+
53
+ //items = items.filter(item => item);
47
54
  return newItems;
48
55
  },
49
56
  // 第一级,默认是 menu/header.js 中的第一项
@@ -51,7 +58,7 @@
51
58
  return Setting.info.title;
52
59
  },
53
60
  topItem() {
54
- return this.header.find(item => item.name === this.headerName);
61
+ return Setting.layout.showI18n ? this.$t('Front_Label_Setting_Info_Title') : Setting.info.title;
55
62
  },
56
63
  // 得到所有侧边菜单,并转为平级,查询图标及显示对应内容
57
64
  allSiderMenu() {
@@ -84,6 +91,14 @@
84
91
  this.breadcrumbWidth = parseInt(getStyle($breadcrumb.$el, 'width'));
85
92
  }
86
93
  });
94
+ },
95
+ currentTitle() {
96
+ let item = this.siderMenuObject[this.activePath];
97
+ if (Setting.layout.showI18n && item) {
98
+ item.title = this.$t('Permission_' + item.code);
99
+ }
100
+
101
+ return item;
87
102
  }
88
103
  },
89
104
  watch: {
@@ -5,16 +5,15 @@
5
5
  </span>
6
6
  <template #list>
7
7
  <DropdownMenu>
8
- <DropdownItem v-for="item in languages" :key="item.locale" :name="item.locale" :selected="locale === item.locale">
9
- <img v-if="item.icon" :src="item.icon" />
10
- <span>{{ item.language }}</span>
8
+ <DropdownItem v-for="(item, key) in languages" :key="key" :name="key" :selected="locale === key">
9
+ <span>{{ item }}</span>
11
10
  </DropdownItem>
12
11
  </DropdownMenu>
13
12
  </template>
14
13
  </Dropdown>
15
14
  </template>
16
15
  <script>
17
- import Setting from '../../../setting';
16
+ //import Setting from '../../../setting';
18
17
  import { mapState, mapActions } from 'vuex';
19
18
 
20
19
  export default {
@@ -27,11 +26,11 @@
27
26
  },
28
27
  data() {
29
28
  return {
30
- languages: Setting.i18n.list
29
+ //languages: Setting.i18n.list
31
30
  };
32
31
  },
33
32
  computed: {
34
- ...mapState('admin/i18n', ['locale']),
33
+ ...mapState('admin/i18n', ['locale', 'languages']),
35
34
  ...mapState('admin/layout', ['isMobile'])
36
35
  },
37
36
  methods: {
@@ -15,7 +15,7 @@
15
15
  </template>
16
16
 
17
17
  <NotificationTab
18
- title="待办"
18
+ :title="$t('Front_Label_Todo')"
19
19
  name="task"
20
20
  :count="taskCount"
21
21
  :loaded-all="taskFilter.page * taskFilter.per >= taskCount"
@@ -35,7 +35,7 @@
35
35
  />
36
36
  </NotificationTab>
37
37
  <NotificationTab
38
- title="通知"
38
+ :title="$t('Front_Label_Notification')"
39
39
  name="notification"
40
40
  :count="unreadCount"
41
41
  :loaded-all="notificationFilter.page * notificationFilter.per >= notificationCount"
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <span v-if="isDesktop" class="i-layout-header-trigger i-layout-header-trigger-min i-layout-header-trigger-in i-layout-header-trigger-nohover">
3
- <input class="i-layout-header-search" type="text" :placeholder="$t('basicLayout.search.placeholder')" />
3
+ <input class="i-layout-header-search" type="text" :placeholder="$t('Front_Label_Search')" />
4
4
  </span>
5
5
  <Dropdown v-else trigger="click" class="i-layout-header-search-drop" ref="dropdown">
6
6
  <span class="i-layout-header-trigger i-layout-header-trigger-min">
@@ -10,10 +10,10 @@
10
10
  <DropdownMenu>
11
11
  <Row align="middle">
12
12
  <Col flex="auto" class="ivu-pl-4">
13
- <Input size="large" prefix="ios-search" :placeholder="$t('basicLayout.search.placeholder')" />
13
+ <Input size="large" prefix="ios-search" :placeholder="$t('Front_Label_Search')" />
14
14
  </Col>
15
15
  <Col flex="80px" class="ivu-text-center">
16
- <span @click="handleCloseSearch">{{ $t('basicLayout.search.cancel') }}</span>
16
+ <span @click="handleCloseSearch">{{ $t('Front_Btn_Cancel') }}</span>
17
17
  </Col>
18
18
  </Row>
19
19
  </DropdownMenu>