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
@@ -9,13 +9,13 @@
9
9
  <DropdownItem>
10
10
  <label @click="resetPwdOpen">
11
11
  <Icon type="ios-lock" />
12
- <span>修改密码</span>
12
+ <span>{{ $t('Front_Label_Change_Password') }}</span>
13
13
  </label>
14
14
  </DropdownItem>
15
15
  <DropdownItem>
16
16
  <label @click="$refs.form.open(info)">
17
17
  <Icon type="ios-contact" />
18
- <span>个人信息</span>
18
+ <span>{{ $t('Front_Label_User_Info') }}</span>
19
19
  </label>
20
20
  </DropdownItem>
21
21
  <!-- <i-link to="/setting/user">
@@ -32,7 +32,7 @@
32
32
  </i-link> -->
33
33
  <DropdownItem divided name="logout">
34
34
  <Icon type="ios-log-out" />
35
- <span>{{ $t('basicLayout.user.logOut') }}</span>
35
+ <span>{{ $t('Front_Label_Logout') }}</span>
36
36
  </DropdownItem>
37
37
  </DropdownMenu>
38
38
  </template>
@@ -41,25 +41,25 @@
41
41
  <Modal v-model="resetPwdOpened" scrollable>
42
42
  <template #header>
43
43
  <div>
44
- <span class="title">修改密码</span>
45
- <span class="description">Change Password</span>
44
+ <span class="title">{{ $t('Front_Label_Change_Password') }}</span>
45
+ <span class="description">{{ $t('Front_Label_Change_Password_Desc') }}</span>
46
46
  </div>
47
47
  </template>
48
48
  <div class="ivu-ml-8 ivu-mr-8">
49
49
  <Form ref="resetPwdForm" :model="resetPwdData" :rules="resetPwdRule" label-position="top" label-colon=":" class="ivu-mt" @submit.prevent>
50
50
  <Row :gutter="24" type="flex">
51
51
  <Col v-bind="grid24">
52
- <FormItem label="旧密码" key="oldPwd" prop="oldPwd">
52
+ <FormItem :label="$t('Front_Label_Old_Password')" key="oldPwd" prop="oldPwd">
53
53
  <Input type="password" v-model="resetPwdData.oldPwd" />
54
54
  </FormItem>
55
55
  </Col>
56
56
  <Col v-bind="grid24">
57
- <FormItem label="新密码" key="newPwd" prop="newPwd">
57
+ <FormItem :label="$t('Front_Label_New_Password')" key="newPwd" prop="newPwd">
58
58
  <Input type="password" v-model="resetPwdData.newPwd" />
59
59
  </FormItem>
60
60
  </Col>
61
61
  <Col v-bind="grid24">
62
- <FormItem label="确认新密码" key="checkPwd" prop="checkPwd">
62
+ <FormItem :label="$t('Front_Label_Confirm_Password')" key="checkPwd" prop="checkPwd">
63
63
  <Input type="password" v-model="resetPwdData.checkPwd" />
64
64
  </FormItem>
65
65
  </Col>
@@ -67,13 +67,13 @@
67
67
  </Form>
68
68
  </div>
69
69
  <template #footer>
70
- <Button type="primary" custom-icon="fa fa-check" @click="submitChangePwd">保存</Button>
70
+ <Button type="primary" custom-icon="fa fa-check" @click="submitChangePwd">{{ $t('Front_Btn_Save') }}</Button>
71
71
  </template>
72
72
  </Modal>
73
73
  </template>
74
74
  <modal-form ref="form" view-code="UserInfoEdit">
75
75
  <template #footer>
76
- <Button type="primary" custom-icon="fa fa-save" @click="submitUserInfo">保存</Button>
76
+ <Button type="primary" custom-icon="fa fa-save" @click="submitUserInfo">{{ $t('Front_Btn_Save') }}</Button>
77
77
  </template>
78
78
  </modal-form>
79
79
  </span>
@@ -95,19 +95,19 @@
95
95
  oldPwd: {
96
96
  type: 'string',
97
97
  required: true,
98
- message: '请输入旧密码',
98
+ message: this.tParam('Front_Msg_Please_Input|' + this.$t('Front_Label_Old_Password')),
99
99
  trigger: 'blur,change'
100
100
  },
101
101
  newPwd: {
102
102
  type: 'string',
103
103
  required: true,
104
- message: '请输入新密码',
104
+ message: this.tParam('Front_Msg_Please_Input|' + this.$t('Front_Label_New_Password')),
105
105
  trigger: 'blur,change'
106
106
  },
107
107
  checkPwd: {
108
108
  type: 'string',
109
109
  required: true,
110
- message: '请重复新密码',
110
+ message: this.tParam('Front_Msg_Please_Input|' + this.$t('Front_Label_Confirm_Password')),
111
111
  trigger: 'blur,change'
112
112
  }
113
113
  }
@@ -143,17 +143,17 @@
143
143
  let isOK = await this.$refs.resetPwdForm.validate();
144
144
 
145
145
  if (!isOK) {
146
- this.error('有内容不符合要求,请正确填写!');
146
+ this.error('Front_Msg_Form_Validate_Fail');
147
147
  } else {
148
148
  if (this.resetPwdData.newPwd != this.resetPwdData.checkPwd) {
149
- this.error('两次新密码输入不一致!');
149
+ this.error('Front_Msg_Password_Inconsistent');
150
150
  } else {
151
151
  await userlApi.updatePassword({
152
152
  oldPassword: this.resetPwdData.oldPwd,
153
153
  newPassword: this.resetPwdData.newPwd
154
154
  });
155
155
 
156
- this.success('修改成功!', () => {
156
+ this.success('Front_Msg_Success', () => {
157
157
  this.resetPwdOpened = false;
158
158
  });
159
159
  }
@@ -161,10 +161,10 @@
161
161
  },
162
162
  // 保存用户信息
163
163
  submitUserInfo() {
164
- this.confirm('确定要保存吗?', async () => {
164
+ this.confirm('Front_Msg_Sure_To_Save', async () => {
165
165
  await userlApi.updateUser(this.$refs.form.data);
166
166
 
167
- this.success('修改成功!', () => {
167
+ this.success('Front_Msg_Success', () => {
168
168
  this.set(this.$refs.form.data);
169
169
  this.$refs.form.opened = false;
170
170
  });
@@ -25,7 +25,13 @@
25
25
  <i-menu-side-submenu v-else :menu="item" :key="'submenu' + index" />
26
26
  </template>
27
27
  <template v-else>
28
- <Tooltip :content="tTitle(item.title)" placement="right" v-if="item.children === undefined || !item.children.length" :key="index" :theme="siderTheme">
28
+ <Tooltip
29
+ :content="this.layout.showI18n ? this.$t('Permission_' + item.code) : item.title"
30
+ placement="right"
31
+ v-if="item.children === undefined || !item.children.length"
32
+ :key="index"
33
+ :theme="siderTheme"
34
+ >
29
35
  <i-menu-side-item class="i-layout-menu-side-collapse-top-item" :menu="item" hide-title />
30
36
  </Tooltip>
31
37
  <i-menu-side-collapse v-else :menu="item" top-level :key="'collapse' + index" />
@@ -42,7 +48,7 @@
42
48
  import iMenuSideItem from './menu-item.vue';
43
49
  import iMenuSideSubmenu from './submenu.vue';
44
50
  import iMenuSideCollapse from './menu-collapse.vue';
45
- import tTitle from '../mixins/translate-title';
51
+ import mixinPage from '../../../mixins/page';
46
52
 
47
53
  // 元素是否在可视区域
48
54
  function isElementInViewport(el) {
@@ -57,7 +63,7 @@
57
63
 
58
64
  export default {
59
65
  name: 'iMenuSide',
60
- mixins: [tTitle],
66
+ mixins: [mixinPage],
61
67
  components: { iMenuSideItem, iMenuSideSubmenu, iMenuSideCollapse },
62
68
  props: {
63
69
  hideLogo: {
@@ -14,17 +14,18 @@
14
14
  }"
15
15
  v-if="!hideTitle"
16
16
  >
17
- {{ tTitle(menu.title) }}
18
- <em v-if="menu.subtitle">{{ tTitle(menu.subtitle) }}</em>
17
+ {{ this.layout.showI18n ? this.$t('Permission_' + menu.code) : menu.title }}
18
+ <em v-if="menu.subtitle">{{ this.layout.showI18n ? this.$t('Permission_' + menu.code + '_SubName') : menu.subTitle }}</em>
19
19
  </span>
20
20
  </span>
21
21
  </template>
22
22
  <script>
23
- import tTitle from '../mixins/translate-title';
23
+ import mixinPage from '../../../mixins/page';
24
+ // import tTitle from '../mixins/translate-title';
24
25
 
25
26
  export default {
26
27
  name: 'iMenuSideTitle',
27
- mixins: [tTitle],
28
+ mixins: [mixinPage],
28
29
  props: {
29
30
  menu: {
30
31
  type: Object,
@@ -21,19 +21,19 @@
21
21
  <DropdownMenu>
22
22
  <DropdownItem name="left">
23
23
  <Icon type="md-arrow-back" />
24
- {{ $t('basicLayout.tabs.left') }}
24
+ {{ $t('Front_Label_Tabs_Left') }}
25
25
  </DropdownItem>
26
26
  <DropdownItem name="right">
27
27
  <Icon type="md-arrow-forward" />
28
- {{ $t('basicLayout.tabs.right') }}
28
+ {{ $t('Front_Label_Tabs_Right') }}
29
29
  </DropdownItem>
30
30
  <DropdownItem name="other">
31
31
  <Icon type="md-close" />
32
- {{ $t('basicLayout.tabs.other') }}
32
+ {{ $t('Front_Label_Tabs_Other') }}
33
33
  </DropdownItem>
34
34
  <DropdownItem name="all">
35
35
  <Icon type="md-close-circle" />
36
- {{ $t('basicLayout.tabs.all') }}
36
+ {{ $t('Front_Label_Tabs_All') }}
37
37
  </DropdownItem>
38
38
  </DropdownMenu>
39
39
  </template>
@@ -30,11 +30,10 @@ function errorLog(err) {
30
30
  console.log(err);
31
31
  }
32
32
  swal.fire({
33
- title: err.message,
33
+ title: tParam(err.message),
34
34
  icon: 'error',
35
- confirmButtonText: '确定',
36
- confirmButtonColor: '#2d8cf0',
37
- cancelButtonText: '取消'
35
+ confirmButtonText: window.$t('Front_Btn_OK'),
36
+ cancelButtonText: window.$t('Front_Btn_Cancel')
38
37
  });
39
38
  }
40
39
 
@@ -44,6 +43,21 @@ const service = axios.create({
44
43
  // timeout: 5000 // 请求超时时间
45
44
  });
46
45
 
46
+ // 解析多语言带参数
47
+ const tParam = str => {
48
+ let array = str.split('|');
49
+ let result = window.$t(array[0]);
50
+
51
+ if (array.length > 1) {
52
+ for (let i = 0; i < array.length - 1; i++) {
53
+ result = result.replace('{' + i + '}', array[i + 1]);
54
+ result = result.replace('[' + i + ']', window.$t('Model_' + array[i + 1]));
55
+ }
56
+ }
57
+
58
+ return result;
59
+ };
60
+
47
61
  // 请求拦截器
48
62
  service.interceptors.request.use(
49
63
  config => {
@@ -135,28 +135,62 @@ export default {
135
135
  },
136
136
  getEnum(type, id) {
137
137
  this.loadEnum(type);
138
- return this.enums[type][id];
138
+
139
+ if (id == null) {
140
+ return null;
141
+ }
142
+
143
+ if (this.layout.showI18n) {
144
+ return this.$t('Enum_' + type + '_' + id);
145
+ } else {
146
+ return this.enums[type][id];
147
+ }
139
148
  },
140
149
  getEnumList(type) {
141
150
  this.loadEnum(type);
151
+
142
152
  return Object.keys(this.enums[type]).map(key => {
143
- return {
144
- id: key,
145
- name: this.enums[type][key]
146
- };
153
+ if (this.layout.showI18n) {
154
+ return {
155
+ id: key,
156
+ name: this.$t('Enum_' + type + '_' + key)
157
+ };
158
+ } else {
159
+ return {
160
+ id: key,
161
+ name: this.enums[type][key]
162
+ };
163
+ }
147
164
  });
148
165
  },
149
166
  getDict(type, id) {
150
167
  this.loadDict(type);
151
- return this.dicts[type][id];
168
+
169
+ if (id == null) {
170
+ return null;
171
+ }
172
+
173
+ if (this.layout.showI18n) {
174
+ return this.$t('Dict_' + type + '_' + id);
175
+ } else {
176
+ return this.dicts[type][id];
177
+ }
152
178
  },
153
179
  getDictList(type) {
154
180
  this.loadDict(type);
181
+
155
182
  return Object.keys(this.dicts[type]).map(key => {
156
- return {
157
- id: key,
158
- name: this.dicts[type][key]
159
- };
183
+ if (this.layout.showI18n) {
184
+ return {
185
+ id: key,
186
+ name: this.$t('Dict_' + type + '_' + key)
187
+ };
188
+ } else {
189
+ return {
190
+ id: key,
191
+ name: this.dicts[type][key]
192
+ };
193
+ }
160
194
  });
161
195
  },
162
196
  getUserName(id) {
@@ -499,8 +533,10 @@ export default {
499
533
  // 确认框
500
534
  confirm(title, onConfirm) {
501
535
  let swal = this.$swal.fire({
502
- title: title,
536
+ title: this.$t(title),
503
537
  icon: 'question',
538
+ confirmButtonText: this.$t('Front_Btn_OK'),
539
+ cancelButtonText: this.$t('Front_Btn_Cancel'),
504
540
  showCancelButton: true
505
541
  });
506
542
 
@@ -517,8 +553,10 @@ export default {
517
553
  // 带输入的确认框
518
554
  confirmInput(title, inputLabel, onConfirm, preConfirm) {
519
555
  let swal = this.$swal.fire({
520
- title: title,
556
+ title: this.$t(title),
521
557
  input: 'text',
558
+ confirmButtonText: this.$t('Front_Btn_OK'),
559
+ cancelButtonText: this.$t('Front_Btn_Cancel'),
522
560
  inputPlaceholder: inputLabel,
523
561
  icon: 'question',
524
562
  showCancelButton: true,
@@ -538,8 +576,9 @@ export default {
538
576
  // 成功提示
539
577
  success(message, onConfirm) {
540
578
  var swal = this.$swal.fire({
541
- title: message,
542
- icon: 'success'
579
+ title: this.$t(message),
580
+ icon: 'success',
581
+ confirmButtonText: this.$t('Front_Btn_OK')
543
582
  });
544
583
 
545
584
  swal.then(() => {
@@ -553,8 +592,9 @@ export default {
553
592
  // 警告提示
554
593
  warning(message, onConfirm) {
555
594
  var swal = this.$swal.fire({
556
- title: message,
557
- icon: 'warning'
595
+ title: this.$t(message),
596
+ icon: 'warning',
597
+ confirmButtonText: this.$t('Front_Btn_OK')
558
598
  });
559
599
 
560
600
  swal.then(() => {
@@ -568,8 +608,9 @@ export default {
568
608
  // 失败提示
569
609
  error(message, onConfirm) {
570
610
  var swal = this.$swal.fire({
571
- title: message,
572
- icon: 'error'
611
+ title: this.$t(message),
612
+ icon: 'error',
613
+ confirmButtonText: this.$t('Front_Btn_OK')
573
614
  });
574
615
 
575
616
  swal.then(() => {
@@ -659,6 +700,19 @@ export default {
659
700
  } else {
660
701
  return false;
661
702
  }
703
+ },
704
+ // 解析多语言带参数
705
+ tParam(str) {
706
+ let array = str.split('|');
707
+ let result = this.$t(array[0]);
708
+
709
+ if (array.length > 1) {
710
+ for (let i = 0; i < array.length - 1; i++) {
711
+ result = result.replace('{' + i + '}', array[i + 1]);
712
+ }
713
+ }
714
+
715
+ return result;
662
716
  }
663
717
  }
664
718
  };
@@ -8,16 +8,16 @@
8
8
  <div class="right">
9
9
  <div class="logo cf">
10
10
  <img :src="rootPath + 'images/login/logo.png'" />
11
- <h2>{{ sysInfo.title }}</h2>
11
+ <h2>{{ layout.showI18n ? $t('Front_Label_Setting_Info_Title') : sysInfo.title }}</h2>
12
12
  <small></small>
13
13
  </div>
14
- <input type="text" v-model="username" @keyup="submit" class="username" autofocus placeholder="请输入账号" />
15
- <input type="password" v-model="password" @keyup="submit" class="password" placeholder="请输入密码" />
14
+ <input type="text" v-model="username" @keyup="submit" class="username" autofocus :placeholder="$t('Front_Msg_Please_Input_Account')" />
15
+ <input type="password" v-model="password" @keyup="submit" class="password" :placeholder="$t('Front_Msg_Please_Input_Password')" />
16
16
  <!--<div class="remenber">
17
17
  <label for="remenber" class="remenber1"><input type="checkbox" ng-model="remember">记住我</label>
18
18
  </div>-->
19
- <button type="button" @click="submit()" class="sign-in">登录 Login</button>
20
- <button type="button" @click="close" class="exit">退出 Exit</button>
19
+ <button type="button" @click="submit()" class="sign-in">{{ $t('Front_Btn_Login') }}</button>
20
+ <button type="button" @click="close" class="exit">{{ $t('Front_Btn_Exit') }}</button>
21
21
  </div>
22
22
  </div>
23
23
  <div class="cpt">{{ sysInfo.copyright }}</div>
@@ -88,7 +88,7 @@
88
88
  }
89
89
  },
90
90
  close() {
91
- this.confirm('确定要关闭系统吗?\r\nAre you sure to exit?', () => {
91
+ this.confirm('Front_Sure_To_Exit', () => {
92
92
  window.location.href = 'about:blank';
93
93
  window.close();
94
94
  });
@@ -19,28 +19,28 @@
19
19
  <template #footer>
20
20
  <div>
21
21
  <Button v-for="(item, index) in outcomes" :key="index" type="primary" custom-icon="fa fa-check-circle" @click="action(item)">
22
- {{ item.name == null ? '同意' : item.name }}
22
+ {{ item.name == null ? $t('Front_Btn_Agree') : item.name }}
23
23
  </Button>
24
- <Button type="warning" v-if="isRejectable" custom-icon="fa fa-reply" @click="reject()">拒绝</Button>
25
- <Button type="primary" v-if="isBackable" custom-icon="fa fa-share" @click="back()">退回上一步</Button>
26
- <Button type="primary" v-if="isRedirectable" custom-icon="fa fa-share" @click="$refs.redirectTaskForm.open()">转办</Button>
27
- <Button type="primary" v-if="isMessageEnable" custom-icon="fa fa-comment-dots" @click="openMessage()">发表意见</Button>
28
- <Button type="info" custom-icon="fa fa-history" @click="$refs.approvalHistoryTable.open({ processInstID: task.processInstID })">历史</Button>
29
- <Button type="default" custom-icon="fa fa-times" @click="opened = false">关闭</Button>
24
+ <Button type="warning" v-if="isRejectable" custom-icon="fa fa-reply" @click="reject()">{{ $t('Front_Btn_Reject') }}</Button>
25
+ <Button type="primary" v-if="isBackable" custom-icon="fa fa-share" @click="back()">{{ $t('Front_Btn_Back_Previous') }}</Button>
26
+ <Button type="primary" v-if="isRedirectable" custom-icon="fa fa-share" @click="$refs.redirectTaskForm.open()">{{ $t('Front_Btn_Redirect') }}</Button>
27
+ <Button type="primary" v-if="isMessageEnable" custom-icon="fa fa-comment-dots" @click="openMessage()">{{ $t('Front_Btn_Leave_Message') }}</Button>
28
+ <Button type="info" custom-icon="fa fa-history" @click="$refs.approvalHistoryTable.open({ processInstID: task.processInstID })">{{ $t('Front_Btn_History') }}</Button>
29
+ <Button type="default" custom-icon="fa fa-times" @click="opened = false">{{ $t('Front_Btn_Close') }}</Button>
30
30
  </div>
31
31
  </template>
32
32
  </Modal>
33
33
  <modal-table ref="approvalHistoryTable" view-code="ApprovalHistoryModal"></modal-table>
34
34
  <modal-form ref="redirectTaskForm" view-code="RedirectTask">
35
35
  <template #footer>
36
- <Button type="primary" custom-icon="fa fa-check" @click="redirect()">确定</Button>
36
+ <Button type="primary" custom-icon="fa fa-check" @click="redirect()">{{ $t('Front_Btn_OK') }}</Button>
37
37
  </template>
38
38
  </modal-form>
39
39
  <Modal v-model="messageOpened" scrollable>
40
40
  <template #header>
41
41
  <div>
42
- <span class="title">意见发表</span>
43
- <span class="description">Message</span>
42
+ <span class="title">{{ $t('Front_Label_Leave_Message') }}</span>
43
+ <span class="description">{{ $t('Front_Label_Leave_Message_Desc') }}</span>
44
44
  </div>
45
45
  </template>
46
46
  <div class="ivu-ml-8 ivu-mr-8">
@@ -48,12 +48,12 @@
48
48
  <Row :gutter="24" type="flex">
49
49
  <Col v-bind="grid24">
50
50
  <FormItem
51
- label="意见内容"
51
+ :label="$t('Front_Label_Message_Content')"
52
52
  key="message"
53
53
  prop="message"
54
54
  :rules="{
55
55
  required: true,
56
- message: '请输入',
56
+ message: this.tParam('Front_Msg_Please_Input|' + this.$t('Front_Label_Message_Content')),
57
57
  trigger: 'blur,change'
58
58
  }"
59
59
  >
@@ -64,8 +64,8 @@
64
64
  </Form>
65
65
  </div>
66
66
  <template #footer>
67
- <Button type="primary" custom-icon="fa fa-check" @click="submitMessage">提交</Button>
68
- <Button type="default" custom-icon="fa fa-times" @click="messageOpened = false">关闭</Button>
67
+ <Button type="primary" custom-icon="fa fa-check" @click="submitMessage">{{ $t('Front_Btn_Submit') }}</Button>
68
+ <Button type="default" custom-icon="fa fa-times" @click="messageOpened = false">{{ $t('Front_Btn_Close') }}</Button>
69
69
  </template>
70
70
  </Modal>
71
71
  </div>
@@ -214,7 +214,7 @@
214
214
  });
215
215
  });
216
216
  } else {
217
- this.error('配置错误,没有相应的处理界面!');
217
+ this.error('Front_Msg_Setting_Error');
218
218
  return;
219
219
  }
220
220
 
@@ -229,11 +229,11 @@
229
229
  let isOK = await this.form.validate();
230
230
 
231
231
  if (!isOK) {
232
- this.error('有内容不符合要求,请正确填写!');
232
+ this.error('Front_Msg_Form_Validate_Fail');
233
233
  } else {
234
234
  this.confirmInput(
235
- '确认要' + (outcome.name == null ? '同意' : outcome.name) + '该申请吗?',
236
- '备注',
235
+ 'Front_Msg_Sure_To_Application' + '|' + (outcome.name == null ? this.$t('Front_Label_Agree') : outcome.name),
236
+ this.$t('Front_Label_Comment'),
237
237
  async () => {
238
238
  let data = null;
239
239
  if (!this.readonly) {
@@ -246,7 +246,7 @@
246
246
  }
247
247
 
248
248
  await taskApi.do(this.task.id, outcome.id, data, this.comment);
249
- this.success('处理成功!');
249
+ this.success('Front_Msg_Success');
250
250
  this.resetNotice();
251
251
  this.$emit('on-after-action');
252
252
  this.opened = false;
@@ -261,18 +261,18 @@
261
261
  // 拒绝
262
262
  async reject() {
263
263
  this.confirmInput(
264
- '确认要拒绝该申请吗?',
265
- '备注',
264
+ 'Front_Msg_Sure_To_Reject_Application',
265
+ this.$t('Front_Label_Comment'),
266
266
  async () => {
267
267
  await taskApi.reject(this.task.id, this.comment);
268
- this.success('处理成功!');
268
+ this.success('Front_Msg_Success');
269
269
  this.resetNotice();
270
270
  this.$emit('on-after-action');
271
271
  this.opened = false;
272
272
  },
273
273
  comment => {
274
274
  if (!(comment || '').trim()) {
275
- this.warning('请输入拒绝原因!');
275
+ this.warning('Front_Msg_Please_Input_Reject_Reason');
276
276
  return false;
277
277
  } else {
278
278
  this.comment = comment;
@@ -284,18 +284,18 @@
284
284
  // 退回上一步
285
285
  async back() {
286
286
  this.confirmInput(
287
- '确认要退回上一步吗?',
288
- '备注',
287
+ 'Front_Msg_Sure_To_Back_Application',
288
+ this.$t('Front_Label_Comment'),
289
289
  async () => {
290
290
  await taskApi.back(this.task.id, this.comment);
291
- this.success('处理成功!');
291
+ this.success('Front_Msg_Success');
292
292
  this.resetNotice();
293
293
  this.$emit('on-after-action');
294
294
  this.opened = false;
295
295
  },
296
296
  comment => {
297
297
  if (!(comment || '').trim()) {
298
- this.warning('请输入退回原因!');
298
+ this.warning('Front_Msg_Please_Input_Back_Reason');
299
299
  return false;
300
300
  } else {
301
301
  this.comment = comment;
@@ -309,13 +309,13 @@
309
309
  let isOK = await this.$refs.redirectTaskForm.validate();
310
310
 
311
311
  if (!isOK) {
312
- this.error('有内容不符合要求,请正确填写!');
312
+ this.error('Front_Msg_Form_Validate_Fail');
313
313
  } else {
314
314
  let model = this.$refs.redirectTaskForm.data;
315
315
 
316
- this.confirm('确定要将任务转移给 ' + model.target.name + ' 吗?', async () => {
316
+ this.confirm('Front_Msg_Sure_To_Redirect_Application' + '|' + model.target.name, async () => {
317
317
  await taskApi.redirect(this.task.id, model.targetID, model.comment);
318
- this.success('转办成功!');
318
+ this.success('Front_Msg_Success');
319
319
  this.resetNotice();
320
320
  this.$emit('on-after-action');
321
321
  this.$refs.redirectTaskForm.close();
@@ -333,12 +333,12 @@
333
333
  let isOK = await this.$refs.messageForm.validate();
334
334
 
335
335
  if (!isOK) {
336
- this.error('有内容不符合要求,请正确填写!');
336
+ this.error('Front_Msg_Form_Validate_Fail');
337
337
  } else {
338
- this.confirm('确定要发表意见吗?', async () => {
338
+ this.confirm('Front_Msg_Sure_To_Message_Application', async () => {
339
339
  await processInstApi.addMessage(this.task.processInstID, this.messageData.message);
340
340
 
341
- this.success('操作成功!', () => {
341
+ this.success('Front_Msg_Success', () => {
342
342
  this.messageData.message = null;
343
343
  this.messageOpened = false;
344
344
  });
@@ -6,7 +6,7 @@
6
6
  <Card :bordered="false" dis-hover class="ivu-mt">
7
7
  <view-table ref="table" view-code="TodoList">
8
8
  <template #command="{ row }">
9
- <Button size="small" title="详细" type="info" custom-icon="fa fa-file-alt" @click="$refs.taskForm.open(row)"></Button>
9
+ <Button size="small" :title="$t('Front_Btn_Detail')" type="info" custom-icon="fa fa-file-alt" @click="$refs.taskForm.open(row)"></Button>
10
10
  </template>
11
11
  </view-table>
12
12
  </Card>
@@ -6,8 +6,8 @@
6
6
  <Card :bordered="false" dis-hover class="ivu-mt">
7
7
  <view-table ref="table" view-code="ApiLog">
8
8
  <template #command="{ row }">
9
- <Button size="small" title="请求" type="info" custom-icon="fa fa-cloud-upload-alt" @click="openRequest(row)"></Button>
10
- <Button size="small" title="响应" type="info" custom-icon="fa fa-cloud-download-alt" @click="openResponse(row)"></Button>
9
+ <Button size="small" :title="$('Front_Btn_Request')" type="info" custom-icon="fa fa-cloud-upload-alt" @click="openRequest(row)"></Button>
10
+ <Button size="small" :title="$('Front_Btn_Response')" type="info" custom-icon="fa fa-cloud-download-alt" @click="openResponse(row)"></Button>
11
11
  </template>
12
12
  </view-table>
13
13
  </Card>
@@ -38,7 +38,7 @@
38
38
  </div>
39
39
  <template #footer>
40
40
  <div>
41
- <Button type="default" custom-icon="fa fa-times" @click="isShow = false">关闭</Button>
41
+ <Button type="default" custom-icon="fa fa-times" @click="isShow = false">{{ $t('Front_Btn_Close') }}</Button>
42
42
  </div>
43
43
  </template>
44
44
  </Modal>
@@ -64,14 +64,14 @@
64
64
  methods: {
65
65
  openRequest(row) {
66
66
  this.json = JSON.stringify(JSON.parse(row.requestBody), null, 2);
67
- this.title = '请求';
68
- this.description = 'Request';
67
+ this.title = this.$t('Front_Label_Request');
68
+ this.description = this.$t('Front_Label_Request_Desc');
69
69
  this.isShow = true;
70
70
  },
71
71
  openResponse(row) {
72
72
  this.json = JSON.stringify(JSON.parse(row.responseBody), null, 2);
73
- this.title = '返回';
74
- this.description = 'Response';
73
+ this.title = this.$t('Front_Label_Response');
74
+ this.description = this.$t('Front_Label_Response_Desc');
75
75
  this.isShow = true;
76
76
  }
77
77
  }