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.
- package/dist/mooho-base-admin-plus.min.esm.js +15776 -15609
- package/dist/mooho-base-admin-plus.min.js +40 -41
- package/dist/setting.js +4 -2
- package/dist/style.css +1 -1
- package/package.json +2 -2
- package/public/setting.js +4 -2
- package/src/api/customModel.js +1 -1
- package/src/api/dataSource.js +1 -1
- package/src/api/dataView.js +1 -1
- package/src/api/i18nText +33 -0
- package/src/api/model.js +1 -1
- package/src/components/home/notice-list.vue +2 -2
- package/src/components/home/shortcut.vue +9 -9
- package/src/components/input/dialog-select.vue +3 -3
- package/src/components/input/item-select.vue +5 -5
- package/src/components/upload/upload-attachment.vue +13 -3
- package/src/components/upload/upload-image.vue +2 -2
- package/src/components/view/column-check.vue +3 -3
- package/src/components/view/column-edit.vue +18 -18
- package/src/components/view/column-select.vue +4 -4
- package/src/components/view/condition-edit.vue +10 -10
- package/src/components/view/filter-edit.vue +30 -13
- package/src/components/view/filter-setting.vue +8 -8
- package/src/components/view/form-setting-layout.vue +24 -24
- package/src/components/view/form-setting.vue +18 -18
- package/src/components/view/group-column.vue +5 -5
- package/src/components/view/group-method.vue +5 -5
- package/src/components/view/modal-form-filter.vue +28 -25
- package/src/components/view/modal-form-sort.vue +32 -27
- package/src/components/view/modal-form.vue +30 -8
- package/src/components/view/modal-table.vue +22 -2
- package/src/components/view/table-filter.vue +18 -11
- package/src/components/view/table-setting.vue +30 -42
- package/src/components/view/view-chart.vue +6 -6
- package/src/components/view/view-form-draggable.vue +3 -3
- package/src/components/view/view-form.vue +23 -13
- package/src/components/view/view-table.vue +83 -39
- package/src/components/workflow/flow-chart.vue +22 -23
- package/src/i18n/index.js +7 -7
- package/src/index.js +13 -8
- package/src/layouts/basic-layout/header-breadcrumb/index.vue +18 -3
- package/src/layouts/basic-layout/header-i18n/index.vue +5 -6
- package/src/layouts/basic-layout/header-notice/index.vue +2 -2
- package/src/layouts/basic-layout/header-search/index.vue +3 -3
- package/src/layouts/basic-layout/header-user/index.vue +18 -18
- package/src/layouts/basic-layout/menu-side/index.vue +9 -3
- package/src/layouts/basic-layout/menu-side/menu-title.vue +5 -4
- package/src/layouts/basic-layout/tabs/index.vue +4 -4
- package/src/libs/request/index.js +18 -4
- package/src/mixins/page.js +72 -18
- package/src/pages/account/login.vue +6 -6
- package/src/pages/common/task-form.vue +33 -33
- package/src/pages/common/todo.vue +1 -1
- package/src/pages/system/apiLog.vue +7 -7
- package/src/pages/system/applicationType.vue +6 -6
- package/src/pages/system/customTable.vue +7 -7
- package/src/pages/system/dict.vue +1 -1
- package/src/pages/system/dictType.vue +4 -4
- package/src/pages/system/entityView.vue +3 -3
- package/src/pages/system/error/404.vue +1 -1
- package/src/pages/system/extendColumn.vue +7 -7
- package/src/pages/system/formView.vue +10 -10
- package/src/pages/system/i18nText.vue +98 -0
- package/src/pages/system/log.vue +4 -4
- package/src/pages/system/openUser.vue +5 -5
- package/src/pages/system/organization.vue +1 -1
- package/src/pages/system/permission.vue +5 -5
- package/src/pages/system/planJob.vue +3 -3
- package/src/pages/system/process.vue +10 -10
- package/src/pages/system/role.vue +18 -18
- package/src/pages/system/rolePropertyEdit.vue +83 -100
- package/src/pages/system/systemData.vue +4 -4
- package/src/pages/system/tableView.vue +17 -17
- package/src/pages/system/taskQueue.vue +13 -6
- package/src/pages/system/user.vue +17 -17
- package/src/pages/template/processPage.vue +22 -22
- package/src/plugins/sweetalert2/index.js +1 -5
- package/src/router/dynamic.js +7 -6
- package/src/store/modules/admin/modules/i18n.js +72 -32
- package/src/store/modules/admin/modules/menu.js +1 -0
- package/src/styles/css/default.css +4 -0
- package/test/api/barcode.js +1 -1
- package/test/api/inbound.js +1 -1
- package/test/api/movePlan.js +1 -1
- package/test/api/outbound.js +1 -1
- package/test/main.js +4 -4
- package/test/router/routes.js +2 -2
- 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
|
|
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
|
|
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('
|
|
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"
|
|
45
|
-
<span class="description">
|
|
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="
|
|
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="
|
|
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="
|
|
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"
|
|
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"
|
|
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('
|
|
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
|
|
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
|
|
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: [
|
|
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
|
-
{{
|
|
18
|
-
<em v-if="menu.subtitle">{{
|
|
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
|
|
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: [
|
|
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('
|
|
24
|
+
{{ $t('Front_Label_Tabs_Left') }}
|
|
25
25
|
</DropdownItem>
|
|
26
26
|
<DropdownItem name="right">
|
|
27
27
|
<Icon type="md-arrow-forward" />
|
|
28
|
-
{{ $t('
|
|
28
|
+
{{ $t('Front_Label_Tabs_Right') }}
|
|
29
29
|
</DropdownItem>
|
|
30
30
|
<DropdownItem name="other">
|
|
31
31
|
<Icon type="md-close" />
|
|
32
|
-
{{ $t('
|
|
32
|
+
{{ $t('Front_Label_Tabs_Other') }}
|
|
33
33
|
</DropdownItem>
|
|
34
34
|
<DropdownItem name="all">
|
|
35
35
|
<Icon type="md-close-circle" />
|
|
36
|
-
{{ $t('
|
|
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
|
-
|
|
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 => {
|
package/src/mixins/page.js
CHANGED
|
@@ -135,28 +135,62 @@ export default {
|
|
|
135
135
|
},
|
|
136
136
|
getEnum(type, id) {
|
|
137
137
|
this.loadEnum(type);
|
|
138
|
-
|
|
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
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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
|
-
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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"
|
|
20
|
-
<button type="button" @click="close" class="exit"
|
|
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('
|
|
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 ? '
|
|
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()"
|
|
25
|
-
<Button type="primary" v-if="isBackable" custom-icon="fa fa-share" @click="back()"
|
|
26
|
-
<Button type="primary" v-if="isRedirectable" custom-icon="fa fa-share" @click="$refs.redirectTaskForm.open()"
|
|
27
|
-
<Button type="primary" v-if="isMessageEnable" custom-icon="fa fa-comment-dots" @click="openMessage()"
|
|
28
|
-
<Button type="info" custom-icon="fa fa-history" @click="$refs.approvalHistoryTable.open({ processInstID: task.processInstID })"
|
|
29
|
-
<Button type="default" custom-icon="fa fa-times" @click="opened = false"
|
|
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()"
|
|
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"
|
|
43
|
-
<span class="description">
|
|
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"
|
|
68
|
-
<Button type="default" custom-icon="fa fa-times" @click="messageOpened = false"
|
|
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
|
-
'
|
|
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('
|
|
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('
|
|
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="
|
|
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="
|
|
10
|
-
<Button size="small" title="
|
|
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"
|
|
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 = '
|
|
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 = '
|
|
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
|
}
|