cloud-web-corejs 1.0.66 → 1.0.68

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 (39) hide show
  1. package/package.json +1 -1
  2. package/src/components/excelExport/mixins.js +1 -1
  3. package/src/components/fileLibrary/mixins/indexMixins.js +0 -1
  4. package/src/components/table/index.js +1 -1
  5. package/src/components/xform/form-designer/form-widget/field-widget/baseAttachment-widget.vue +3 -2
  6. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +1 -0
  7. package/src/components/xform/form-designer/form-widget/field-widget/echart-bar-widget.vue +1 -1
  8. package/src/components/xform/form-designer/form-widget/field-widget/echart-category-widget.vue +1 -1
  9. package/src/components/xform/form-designer/form-widget/field-widget/echart-pie-widget.vue +1 -1
  10. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +1 -1
  11. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-bar-mixin.js +12 -1
  12. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-category-mixin.js +6 -0
  13. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-pie-mixin.js +6 -0
  14. package/src/components/xform/form-designer/form-widget/field-widget/table-export-button-widget.vue +5 -1
  15. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +77 -0
  16. package/src/components/xform/form-designer/indexMixin.js +1 -1
  17. package/src/components/xform/form-designer/setting-panel/form-setting.vue +40 -3
  18. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onAfterConfirmFile-editor.vue +30 -0
  19. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onClick-editor.vue +2 -2
  20. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultTime-editor.vue +27 -0
  21. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-bar-editor.vue +160 -69
  22. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-category-editor.vue +184 -82
  23. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-pie-editor.vue +84 -39
  24. package/src/components/xform/form-designer/setting-panel/property-editor/placeholder-editor.vue +1 -1
  25. package/src/components/xform/form-designer/setting-panel/property-editor/showRuleFlag-editor.vue +223 -0
  26. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +62 -0
  27. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +4 -0
  28. package/src/components/xform/form-designer/setting-panel/wfObjConfigDialog.vue +189 -0
  29. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +286 -33
  30. package/src/store/modules/permission.js +1 -1
  31. package/src/utils/request.js +28 -28
  32. package/src/utils/vab.js +1 -1
  33. package/src/views/bd/setting/form_template/batchWfObjConfigDialog.vue +105 -0
  34. package/src/views/bd/setting/form_template/mixins/batchWfObjConfigDialog.js +4 -0
  35. package/src/views/bd/setting/form_template/mixins/wf_list.js +12 -0
  36. package/src/views/bd/setting/form_template/wfObjConfigDialog.vue +254 -0
  37. package/src/views/bd/setting/form_template/wf_list.vue +127 -0
  38. package/src/views/user/outLink/form_view.vue +39 -12
  39. package/src/views/user/outLink/view.vue +28 -23
@@ -0,0 +1,254 @@
1
+ <template>
2
+ <el-dialog
3
+ :title="'设置企业流程对象('+formTemplate.formName+')'"
4
+ :append-to-body="true"
5
+ :modal-append-to-body="true"
6
+ :close-on-click-modal="false"
7
+ :visible.sync="dialogVisible"
8
+ :modal="false"
9
+ custom-class="dialog-style list-dialog dialog-checkbox pd_0"
10
+ width="1200px"
11
+ @close="closeDialog"
12
+ v-el-drag-dialog
13
+ v-el-dialog-center
14
+ >
15
+ <div class="cont">
16
+ <div id="containt">
17
+ <el-form ref="editForm" :model="formData">
18
+ <div class="grid-height" style="height: 500px">
19
+ <vxe-grid
20
+ class="is-pointer"
21
+ ref="table-m1"
22
+ :data="formData.wfObjConfigDTOs"
23
+ v-bind="vxeOption"
24
+ @resizable-change="$vxeTableUtil.onColumnWitchChange"
25
+ @custom="$vxeTableUtil.customHandle"
26
+ >
27
+ <template #form>
28
+ <div class="clearfix screen-btns">
29
+ <div class="fl">
30
+ <vxe-button status="primary" class="button-sty" icon="el-icon-plus"
31
+ @click="openCompanyDialog">
32
+ 新增
33
+ </vxe-button>
34
+ <span class="button-sty tips">{{ $t1('选择表单所在的企业,填写企业对应的流程对象数据。') }}</span>
35
+ </div>
36
+ </div>
37
+ </template>
38
+ <template #objTypeName="{row,rowIndex}">
39
+ <el-form-item :prop="'wfObjConfigDTOs.'+rowIndex+'.objTypeName'"
40
+ :rules="[{ required: true, trigger: 'blur' }]">
41
+ <el-input v-model="row.objTypeName" clearable></el-input>
42
+ </el-form-item>
43
+ </template>
44
+ <template #operate="{row}">
45
+ <a
46
+ href="javascript:void(0);"
47
+ class="a-link"
48
+ @click="openEditDialog(row.id)"
49
+ >
50
+ <el-tooltip :enterable="false" effect="dark" :content="$t2('查看','common.view')" placement="top"
51
+ popper-class="tooltip-skin">
52
+ <i class="el-icon-edit"/>
53
+ </el-tooltip>
54
+ </a>
55
+ </template>
56
+ </vxe-grid>
57
+ </div>
58
+ </el-form>
59
+ </div>
60
+ </div>
61
+ <span slot="footer" class="dialog-footer">
62
+ <el-button type="primary" plain class="button-sty" @click="closeDialog">
63
+ <i class="el-icon-close el-icon"></i>
64
+ 取 消
65
+ </el-button>
66
+ <el-button type="primary" @click="saveData" class="button-sty">
67
+ <i class="el-icon-check el-icon"></i>
68
+ 确 定
69
+ </el-button>
70
+ </span>
71
+ <companyInfoDialog v-if="showCompanyInfoDialog" :visiable.sync="showCompanyInfoDialog"
72
+ @confirm="confirmCompanyDialog" :multi="true" :allCompany="true"/>
73
+ </el-dialog>
74
+ </template>
75
+ <script>
76
+ import companyInfoDialog from "@base/views/user/company_info/dialog.vue";
77
+ import fileObjNotifyEdit from "@base/components/fileLibrary/fileObjNotifyEdit.vue";
78
+
79
+ export default {
80
+ components: {fileObjNotifyEdit, companyInfoDialog},
81
+ props: ['formTemplate'],
82
+ data() {
83
+ return {
84
+ dialogVisible: true,
85
+ formData: {
86
+ objTypeCode: null,
87
+ wfObjConfigDTOs: []
88
+ },
89
+ operateIndex: 0,
90
+ showCompanyInfoDialog: false,
91
+ vxeOption: {}
92
+ }
93
+ },
94
+ created() {
95
+
96
+ },
97
+ mounted() {
98
+ this.formData.objTypeCode = this.formTemplate.objTypeCode;
99
+ this.getListByObjTypeCode();
100
+ this.initTableList()
101
+ },
102
+ methods: {
103
+ getListByObjTypeCode(callback) {
104
+ let formTemplate = this.formTemplate
105
+ this.$http({
106
+ url: `/${formTemplate.serviceName}/wf_obj_config/listByObjTypeCode`,
107
+ method: `post`,
108
+ data: {
109
+ stringOne: formTemplate.objTypeCode
110
+ },
111
+ isLoading: true,
112
+ success: res => {
113
+ let rows = res.objx || [];
114
+ this.formData.wfObjConfigDTOs = rows;
115
+ callback && callback(rows)
116
+ }
117
+ });
118
+ },
119
+ saveData() {
120
+ this.$refs.editForm.$baseValidate(valid => {
121
+ if (valid) {
122
+ this.$baseConfirm(this.$t1('您确定要保存吗?')).then(() => {
123
+ var url = `/${this.formTemplate.serviceName}/wf_obj_config/saveUpdates`;
124
+ this.$http({
125
+ url: url,
126
+ method: `post`,
127
+ data: this.formData,
128
+ isLoading: true,
129
+ success: res => {
130
+ this.$message({
131
+ message: res.content,
132
+ type: 'success',
133
+ duration: 1000
134
+ });
135
+ this.getListByObjTypeCode(rows => {
136
+ this.$emit('confirm', rows)
137
+ this.closeDialog();
138
+ })
139
+ }
140
+ });
141
+ });
142
+ }
143
+ });
144
+ },
145
+ addItem() {
146
+ let formTemplate = this.formTemplate;
147
+ let row = {
148
+ objTypeCode: formTemplate.objTypeCode,
149
+ objTypeName: formTemplate.objTypeName,
150
+ serviceId: formTemplate.serviceName,
151
+ url: "form",
152
+ companyCode: null,
153
+ companyName: null
154
+ }
155
+ this.formData.wfObjConfigDTOs.push(row);
156
+ },
157
+ closeDialog() {
158
+ this.dialogVisible = false;
159
+ this.$emit("update:visiable", false);
160
+ },
161
+ openCompanyDialog() {
162
+ this.showCompanyInfoDialog = true;
163
+ },
164
+ confirmCompanyDialog(rows) {
165
+ if (rows.length) {
166
+ let row = rows[0];
167
+ let formTemplate = this.formTemplate;
168
+ let companyCodes = this.formData.wfObjConfigDTOs.map(item => item.companyCode)
169
+ let items = rows.filter(item => !companyCodes.includes(item.companyCode)).map(item => {
170
+ return {
171
+ objTypeCode: formTemplate.objTypeCode,
172
+ objTypeName: formTemplate.objTypeName,
173
+ serviceId: formTemplate.serviceName,
174
+ url: "form",
175
+ companyCode: row.companyCode,
176
+ companyName: row.companyName
177
+ }
178
+ })
179
+ this.formData.wfObjConfigDTOs.push(...items);
180
+ }
181
+ },
182
+ initTableList() {
183
+ let that = this;
184
+ let tableOption = {
185
+ vue: this,
186
+ tableRef: 'table-m1',
187
+ tableName: 'user_form_template-wfObj-list-m1',
188
+ config: {
189
+ height: "auto"
190
+ },
191
+ columns: [
192
+ {type: 'checkbox', width: 48, resizable: false, fixed: 'left'},
193
+ {
194
+ title: this.$t1('表单类型名称'),
195
+ field: 'objTypeName',
196
+ width: 250,
197
+ slots: {
198
+ default: "objTypeName"
199
+ }
200
+ },
201
+ {
202
+ title: this.$t1('组织名称'),
203
+ field: 'companyName',
204
+ width: 200,
205
+ },
206
+ {
207
+ title: this.$t1('表单类型编码'),
208
+ field: 'objTypeCode',
209
+ width: 200
210
+ },
211
+ {
212
+ title: this.$t1('服务名'),
213
+ field: 'serviceId',
214
+ width: 150
215
+ },
216
+ {
217
+ width: 100,
218
+ fixed: 'right',
219
+ title: '',
220
+ sortable: false,
221
+ slots: {
222
+ default: ({row, rowIndex, $table}) => {
223
+ return [
224
+ <a
225
+ href="javascript:void(0);"
226
+ class="a-link"
227
+ onClick={() => {
228
+ this.formData.wfObjConfigDTOs.splice(rowIndex, 1)
229
+ }}
230
+ >
231
+ <el-tooltip enterable={false} effect="dark" content="删除" placement="top"
232
+ popper-class="tooltip-skin">
233
+ <i class="el-icon-delete"/>
234
+ </el-tooltip>
235
+ </a>
236
+ ];
237
+ }
238
+ }
239
+ }
240
+ ]
241
+ };
242
+ this.$vxeTableUtil.initVxeTable(tableOption).then(opts => {
243
+ this.vxeOption = opts;
244
+ });
245
+ // this.initData();
246
+ },
247
+ }
248
+ }
249
+ </script>
250
+
251
+
252
+ <style scoped>
253
+
254
+ </style>
@@ -0,0 +1,127 @@
1
+ <template>
2
+ <div id="containt">
3
+ <x-tabs ref="xTabs" v-model="activeName" class="tab-box" paneKeyName="formCode">
4
+ <el-tab-pane :label="$t1('常规')" name="first">
5
+ <editView v-if="showEdit" visible-key="showEdit" :_dataId.sync="dataId" :currentFormType="currentFormType"
6
+ :parent-target="_self" @reload="$reloadHandle"
7
+ @openDesignDialog="openDesingerDialogByChild" :readonly="true"></editView>
8
+ </el-tab-pane>
9
+ <el-tab-pane :label="$t1('列表')" name="second">
10
+ <div class="grid-height">
11
+ <vxe-grid
12
+ ref="table-m1"
13
+ v-bind="vxeOption"
14
+ @resizable-change="$vxeTableUtil.onColumnWitchChange"
15
+ @custom="$vxeTableUtil.customHandle"
16
+ >
17
+ <template #form>
18
+ <tableForm :formData.sync="formData" @searchEvent="searchEvent" @resetEvent="resetEvent">
19
+ <template #buttonLeft>
20
+ <vxe-button icon="el-icon-setting" class="button-sty" @click="openBatchWfObjConfigDialog" type="text" status="primary"
21
+ plain>{{ $t1('批量设置企业流程对象') }}
22
+ </vxe-button>
23
+ </template>
24
+ <template #buttonRight>
25
+ <vxe-button icon="el-icon-brush" class="button-sty" @click="resetEvent" type="text" status="primary"
26
+ plain>{{ $t1('重置') }}
27
+ </vxe-button>
28
+ <vxe-button status="warning" icon="el-icon-search" class="button-sty" @click="searchEvent">
29
+ {{ $t1('搜索') }}
30
+ </vxe-button>
31
+ </template>
32
+ <template #menuKindName>
33
+ <vxe-form-item :title="$t1('表单分类') + ':'" field="menuKindName">
34
+ <template v-slot>
35
+ <el-input
36
+ class="search-input"
37
+ max="200"
38
+ v-model="formData.menuKindName"
39
+ @clear="
40
+ formData.menuKindName = null;
41
+ formData.menuKindCode = null;
42
+ "
43
+ v-el-readonly
44
+ clearable
45
+ >
46
+ <i slot="suffix" class="el-input__icon el-icon-search" @click="showMenuKindDialog=true"></i>
47
+ </el-input>
48
+ </template>
49
+ </vxe-form-item>
50
+ </template>
51
+ </tableForm>
52
+ </template>
53
+ <template #tag="{row}">
54
+ <projectTagView v-model="row.formTemplateTagDTOs" :readonly="true"></projectTagView>
55
+ </template>
56
+ </vxe-grid>
57
+ <el-drawer :title="$t1('流程模板')" :visible.sync="showItemView" :modal="false" :wrapperClosable="false"
58
+ :destroy-on-close="true" size="90%" direction="btt">
59
+ <itemList v-if="showItemView" :formTemplate="currentRow"
60
+ @openWfDesignDialog="openWfDesignDialog"></itemList>
61
+ </el-drawer>
62
+ </div>
63
+ </el-tab-pane>
64
+ <template #editTab="{tab,index,reloadTabContent}">
65
+ <el-tab-pane :key="tab.data.id" :label.sync="tab.data.formName" :name="tab.data.formCode"
66
+ :closable="true">
67
+ <editView v-if="tab.showContent" :_dataId="tab.dataId" :currentFormType="currentFormType"
68
+ :parent-target="_self"
69
+ @reload="reloadTabContent" @openDesignDialog="openDesingerDialogByChild"
70
+ :readonly="true"></editView>
71
+ </el-tab-pane>
72
+ </template>
73
+ </x-tabs>
74
+ <el-drawer :title="$t1('表单设计({formName})',{formName})" :visible.sync="showDesingerDialog" :modal="false"
75
+ :destroy-on-close="true"
76
+ size="100%" direction="rtl" :before-close="closeFormDesignwinEvent" :append-to-body="false"
77
+ class="designer-drawer" :class="[isFullscreen ? 'is-fullscreen' : '']" @close="handleFormDesignClose">
78
+ <el-tabs v-model="formDesTabs" type="card" class="tab-boxOnly" :stretch="true">
79
+ <el-tab-pane :label="$t1('设计器')" name="first">
80
+ <designer ref="designer" :formCode.sync="formCode" @reflushTemplateList="reflushTemplateList"></designer>
81
+ </el-tab-pane>
82
+ <el-tab-pane :label="$t1('后端脚本')" name="second">
83
+ <formScriptList :formCode="formCode" :formTemplate="currentFormTemplate"
84
+ v-if="showFormScriptList"></formScriptList>
85
+ </el-tab-pane>
86
+ </el-tabs>
87
+ <el-button class="isFullIcon" v-if="!isFullscreen" @click="handleFullscreen">
88
+ <el-tooltip effect="dark" :content="$t1('全屏')" placement="top">
89
+ <i class="iconfont icon-quanping"></i>
90
+ </el-tooltip>
91
+
92
+ </el-button>
93
+ <el-button class="isFullIcon" v-else @click="handleFullscreen">
94
+ <el-tooltip effect="dark" :content="$t1('缩小')" placement="top">
95
+ <i class="iconfont icon-suoxiao"></i>
96
+ </el-tooltip>
97
+ </el-button>
98
+ </el-drawer>
99
+ <wfObjConfigDialog v-if="showWfObjConfigDialog" :visiable.sync="showWfObjConfigDialog"
100
+ @confirm="confirmWfObjConfigDialog" :formTemplate="formTemplate"/>
101
+ <MenuKindDialog v-if="showMenuKindDialog"
102
+ :visiable.sync="showMenuKindDialog"
103
+ @confirm="confirmInsertMenuKind"
104
+ :param="{ taType: 0 }"
105
+ :multi="false"
106
+ />
107
+
108
+ <batchWfObjConfigDialog v-if="showBatchWfObjConfigDialog" :visiable.sync="showBatchWfObjConfigDialog"
109
+ :formTemplates="formTemplates" @confirm="confirmBatchWfObjConfigDialog"></batchWfObjConfigDialog>
110
+ </div>
111
+ </template>
112
+
113
+ <script>
114
+ import mixin from "./mixins/wf_list";
115
+ import wfObjConfigDialog from "./wfObjConfigDialog.vue";
116
+ import MenuKindDialog from "@base/views/bd/setting/menu_kind/dialog.vue";
117
+ import batchWfObjConfigDialog from "./batchWfObjConfigDialog.vue";
118
+
119
+ export default {
120
+ name: 'form_template:wf_list',
121
+ components: {MenuKindDialog, wfObjConfigDialog,batchWfObjConfigDialog},
122
+ mixins: [mixin]
123
+ }
124
+ </script>
125
+ <style scoped lang="scss">
126
+
127
+ </style>
@@ -64,6 +64,25 @@ export default {
64
64
 
65
65
  delete queryParam.urlmobile;
66
66
  delete queryParam.url;
67
+
68
+ if (purl.indexOf('.html') >= 0) {
69
+ let eUrl = purl;
70
+ let pstr = Object.keys(queryParam).map(key => {
71
+ return key + "=" + queryParam[key]
72
+ }).join("&")
73
+
74
+ if (pstr) {
75
+ if (purl.indexOf('.html?') >= 0) {
76
+ eUrl = eUrl + '&' + pstr
77
+ } else {
78
+ eUrl = eUrl + '?' + pstr
79
+ }
80
+ }
81
+
82
+ location.href = eUrl;
83
+ return
84
+ }
85
+
67
86
  delete queryParam.dataId;
68
87
  delete queryParam.showWfContent;
69
88
  delete queryParam.access_token;
@@ -74,7 +93,6 @@ export default {
74
93
  let url = purl + '.vue';
75
94
  this.queryParam = queryParam;
76
95
  this.showWfContent = true;
77
- await this.initI18n();
78
96
  // this.wfContent = require('@/views' + url).default;
79
97
  let t = "@base/views";
80
98
  let urlArr = [
@@ -82,25 +100,34 @@ export default {
82
100
  '/user/form/view/list.vue',
83
101
  '/user/form/view/edit.vue'
84
102
  ]
85
- if (urlArr.includes(url)) {
86
- this.wfContent = require('@base/views' + url).default;
87
- } else if (url.startsWith(t)) {
88
- let path = url.slice(t.length);
89
- this.wfContent = require('@base/views' + path).default;
90
- } else {
91
- this.wfContent = require('@/views' + url).default;
92
- }
93
-
103
+ this.initUserInfo(() => {
104
+ this.initI18n();
105
+ if (urlArr.includes(url)) {
106
+ this.wfContent = require('@base/views' + url).default;
107
+ } else if (url.startsWith(t)) {
108
+ let path = url.slice(t.length);
109
+ this.wfContent = require('@base/views' + path).default;
110
+ } else {
111
+ this.wfContent = require('@/views' + url).default;
112
+ }
113
+ })
114
+ },
115
+ initUserInfo(callback) {
116
+ this.$store
117
+ .dispatch('user/getInfo2')
118
+ .then(() => {
119
+ callback && callback();
120
+ });
94
121
  },
95
122
  getI18nLang() {
96
123
  let i18nLang = this.$route.query.i18nLang || "zh";
97
124
  return i18nLang;
98
125
  },
99
- initI18n() {
126
+ async initI18n() {
100
127
  let lang = this.getI18nLang();
101
128
  this.$i18n.locale = lang // 设置给本地的i18n插件
102
129
  localStorage.setItem("i18n-lang", lang);
103
- return indexUtil.initI18nMessage("business", lang, true);
130
+ await indexUtil.initI18nMessage("business", lang, true);
104
131
  },
105
132
  login() {
106
133
  let token = this.$route.query.access_token;
@@ -56,17 +56,17 @@ export default {
56
56
  delete queryParam.urlmobile;
57
57
  delete queryParam.url;
58
58
 
59
- if(purl.indexOf('.html')>=0){
59
+ if (purl.indexOf('.html') >= 0) {
60
60
  let eUrl = purl;
61
- let pstr = Object.keys(queryParam).map(key=>{
62
- return key+"="+queryParam[key]
61
+ let pstr = Object.keys(queryParam).map(key => {
62
+ return key + "=" + queryParam[key]
63
63
  }).join("&")
64
64
 
65
- if(pstr){
66
- if(purl.indexOf('.html?')>=0){
67
- eUrl = eUrl+'&'+pstr
68
- }else{
69
- eUrl = eUrl+'?'+pstr
65
+ if (pstr) {
66
+ if (purl.indexOf('.html?') >= 0) {
67
+ eUrl = eUrl + '&' + pstr
68
+ } else {
69
+ eUrl = eUrl + '?' + pstr
70
70
  }
71
71
  }
72
72
 
@@ -81,8 +81,6 @@ export default {
81
81
  delete queryParam.thirdparty_info;
82
82
  delete queryParam.i18nLang;
83
83
 
84
-
85
-
86
84
  let url = purl + '.vue';
87
85
  this.queryParam = queryParam;
88
86
  this.showWfContent = true;
@@ -93,27 +91,34 @@ export default {
93
91
  '/user/form/view/list.vue',
94
92
  '/user/form/view/edit.vue'
95
93
  ]
96
- if (urlArr.includes(url)) {
97
- this.wfContent = require('@base/views' + url).default;
98
- } else if (url.startsWith(t)) {
99
- let path = url.slice(t.length);
100
- this.wfContent = require('@base/views' + path).default;
101
- } else {
102
- this.wfContent = require('@/views' + url).default;
103
- }
104
-
105
- this.initI18n();
106
-
94
+ this.initUserInfo(() => {
95
+ this.initI18n();
96
+ if (urlArr.includes(url)) {
97
+ this.wfContent = require('@base/views' + url).default;
98
+ } else if (url.startsWith(t)) {
99
+ let path = url.slice(t.length);
100
+ this.wfContent = require('@base/views' + path).default;
101
+ } else {
102
+ this.wfContent = require('@/views' + url).default;
103
+ }
104
+ })
105
+ },
106
+ initUserInfo(callback) {
107
+ this.$store
108
+ .dispatch('user/getInfo2')
109
+ .then(() => {
110
+ callback && callback();
111
+ });
107
112
  },
108
113
  getI18nLang() {
109
114
  let i18nLang = this.$route.query.i18nLang || "zh";
110
115
  return i18nLang;
111
116
  },
112
- initI18n() {
117
+ async initI18n() {
113
118
  let lang = this.getI18nLang();
114
119
  this.$i18n.locale = lang // 设置给本地的i18n插件
115
120
  localStorage.setItem("i18n-lang", lang);
116
- indexUtil.initI18nMessage("business", lang, true);
121
+ await indexUtil.initI18nMessage("business", lang, true);
117
122
  },
118
123
  login() {
119
124
  let token = this.$route.query.access_token;