cloud-web-corejs-haier 1.0.4 → 1.0.6
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/package.json +7 -4
- package/src/App.vue +30 -34
- package/src/api/user.js +8 -0
- package/src/components/Tinymce/index.vue +112 -71
- package/src/components/VabUpload/image-viewer.vue +2 -2
- package/src/components/VabUpload/index.js +1 -1
- package/src/components/VabUpload/mixins.js +1 -1
- package/src/components/VabUpload/privateProfileDialogMixins.js +1 -1063
- package/src/components/VabUpload/view.vue +6 -2
- package/src/components/base-textarea/index.vue +104 -0
- package/src/components/baseAlert/mixins.js +1 -1
- package/src/components/baseAttachment/mixins.js +2 -1
- package/src/components/baseInputExport/index.vue +19 -12
- package/src/components/baseInputExport/mixins.js +1 -1
- package/src/components/baseTabs/mixins.js +1 -1
- package/src/components/code-editor/index.vue +102 -63
- package/src/components/confirmDialog/index.vue +24 -17
- package/src/components/confirmDialog/mixins.js +1 -1
- package/src/components/errorMsg/index.vue +42 -34
- package/src/components/errorMsg/mixins.js +1 -1
- package/src/components/excelExport/index.js +1 -2
- package/src/components/excelExport/mixins.js +1 -1
- package/src/components/fileLibrary/fileObjAuthDialog.vue +179 -89
- package/src/components/fileLibrary/filterDialog.vue +45 -21
- package/src/components/fileLibrary/index.vue +579 -238
- package/src/components/fileLibrary/mixins/fileObjAuthDialogMixin.js +4 -1
- package/src/components/fileLibrary/mixins/indexMixins.js +3 -0
- package/src/components/scriptDescription/button.vue +12 -4
- package/src/components/scriptTest/mixins.js +1 -1
- package/src/components/table/index.js +1 -1
- package/src/components/table/plugins/extend-cell-area/vxe-table-extend-cell-area.es6.min.js +11028 -0
- package/src/components/table/plugins/extend-cell-area/vxe-table-extend-cell-area.min.css +200 -0
- package/src/components/tempStorage/index.vue +1 -1
- package/src/components/vb-tabs/x-tabs.vue +0 -1
- package/src/components/wf/content.vue +32 -36
- package/src/components/wf/mixins/setCandidateDialog2.js +1 -1
- package/src/components/wf/mixins/wfFlowEleScriptDialog.js +131 -3
- package/src/components/wf/setCandidateDialog2.vue +76 -66
- package/src/components/wf/wf.js +2176 -1
- package/src/components/wf/wfFlowEleScriptDialog.vue +5 -1
- package/src/components/wf/wfStartDialog.vue +6 -10
- package/src/components/wf/wfUtil.js +279 -1
- package/src/components/xform/form-designer/designer.js +1 -1
- package/src/components/xform/form-designer/form-widget/components/gantt/index.vue +16 -1
- package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +1 -1
- package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +17 -4
- package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +1 -1
- package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +247 -187
- package/src/components/xform/form-designer/form-widget/field-widget/gantt-widget.vue +2 -0
- package/src/components/xform/form-designer/form-widget/field-widget/html-text-widget.vue +6 -2
- package/src/components/xform/form-designer/form-widget/field-widget/static-content-wrapper.vue +10 -0
- package/src/components/xform/form-designer/form-widget/field-widget/text-widget.vue +65 -4
- package/src/components/xform/form-designer/setting-panel/form-setting.vue +132 -118
- package/src/components/xform/form-designer/setting-panel/property-editor/autoValueEnabled-editor.vue +1 -1
- package/src/components/xform/form-designer/setting-panel/property-editor/formatType-editor.vue +137 -0
- package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +124 -50
- package/src/components/xform/form-designer/setting-panel/propertyRegister.js +1 -0
- package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +5 -1
- package/src/components/xform/form-render/index.vue +8 -0
- package/src/components/xform/form-render/indexMixin copy.js +3462 -0
- package/src/components/xform/form-render/indexMixin.js +3496 -1
- package/src/components/xform/mixins/defaultHandle.js +1 -1
- package/src/components/xform/utils/format.js +14 -4
- package/src/components/xform/utils/formula-util.js +0 -4
- package/src/components/xform/utils/util.js +1 -1
- package/src/index.js +215 -190
- package/src/lang/index.js +56 -51
- package/src/lang/locale/en/login.js +20 -0
- package/src/lang/locale/zh/login.js +20 -0
- package/src/layout/components/Sidebar/default.vue +1423 -1266
- package/src/layout/components/TagsView/index.vue +37 -11
- package/src/layout/components/createCompany/createCompanyDialog.vue +157 -0
- package/src/layout/components/extractedCode/viewDialog.vue +1 -0
- package/src/layout/defaultLayout.vue +1 -1
- package/src/layout/index.vue +3 -5
- package/src/mixins/table/index.js +151 -0
- package/src/permission.js +1 -18
- package/src/router/modules/customer.js +3 -8
- package/src/store/getters.js +24 -23
- package/src/store/modules/user.js +1 -30
- package/src/utils/index.js +1 -6
- package/src/utils/vab.js +1 -1
- package/src/views/bd/setting/config_manage/list.vue +36 -19
- package/src/views/bd/setting/form_script/edit.vue +9 -0
- package/src/views/bd/setting/form_script/edit1.vue +29 -3
- package/src/views/bd/setting/form_script/form_list.vue +99 -37
- package/src/views/bd/setting/form_script/list1.vue +181 -118
- package/src/views/bd/setting/form_script/mixins/dialog.js +130 -1
- package/src/views/bd/setting/form_script/mixins/edit.js +199 -1
- package/src/views/bd/setting/form_script/mixins/edit1.js +193 -1
- package/src/views/bd/setting/form_script/mixins/list.js +236 -1
- package/src/views/bd/setting/form_script/mixins/list1.js +410 -1
- package/src/views/bd/setting/form_script/mixins/otherAuthDialog.js +194 -0
- package/src/views/bd/setting/form_script/otherAuthDialog.vue +83 -0
- package/src/views/bd/setting/form_template/edit.vue +13 -0
- package/src/views/bd/setting/form_template/list.vue +326 -214
- package/src/views/bd/setting/form_template/mixins/batchWfObjConfigDialog.js +279 -1
- package/src/views/bd/setting/form_template/mixins/edit.js +234 -9
- package/src/views/bd/setting/form_template/mixins/list.js +667 -3
- package/src/views/bd/setting/form_template/mixins/otherAuthDialog.js +193 -0
- package/src/views/bd/setting/form_template/otherAuthDialog.vue +83 -0
- package/src/views/bd/setting/logic_param/mixins/edit.js +1 -91
- package/src/views/bd/setting/logic_param/mixins/list.js +2 -362
- package/src/views/bd/setting/menu_kind/list.vue +172 -87
- package/src/views/bd/setting/menu_kind/mixins/authDialog.js +300 -7
- package/src/views/bd/setting/table_model/edit.vue +345 -304
- package/src/views/bd/setting/table_model/list.vue +190 -128
- package/src/views/bd/setting/table_model/mixins/edit.js +1191 -1
- package/src/views/bd/setting/table_model/mixins/list.js +428 -2
- package/src/views/bd/setting/table_model/mixins/otherAuthDialog.js +201 -0
- package/src/views/bd/setting/table_model/otherAuthDialog.vue +83 -0
- package/src/views/user/access_log/list.vue +418 -349
- package/src/views/user/area/dialog.vue +223 -116
- package/src/views/user/area/list.vue +318 -0
- package/src/views/user/common_attribute/list.vue +4 -1
- package/src/views/user/extend_datasource/dialog.vue +3 -0
- package/src/views/user/extend_datasource/edit.vue +2 -1
- package/src/views/user/extend_datasource/list.vue +3 -0
- package/src/views/user/form/vform/designer.vue +2 -1
- package/src/views/user/home/bears/index.vue +1032 -0
- package/src/views/user/home/default.vue +6 -5
- package/src/views/user/home/taili/index.vue +1034 -0
- package/src/views/user/ledger_library/list.vue +10 -12
- package/src/views/user/login/default.vue +165 -36
- package/src/views/user/login/index.vue +4 -6
- package/src/views/user/login/indexMixin.js +184 -8
- package/src/views/user/menu/list.vue +24 -1
- package/src/views/user/notify_message/dialog.vue +2 -6
- package/src/views/user/outLink/index.vue +57 -18
- package/src/views/user/role/authConfig.vue +89 -0
- package/src/views/user/role/dialog.vue +70 -48
- package/src/views/user/role/edit.vue +114 -4
- package/src/views/user/user/form_dialog.vue +158 -0
- package/src/views/user/user/list.vue +652 -582
- package/src/views/user/user/modifyPasswordDialog.vue +64 -53
- package/src/views/user/wf/wfReport/index.vue +137 -28
- package/src/views/user/wf/wf_obj_config/itemEdit.vue +15 -116
- package/src/views/user/wf/wf_obj_config/itemOperateDialog.vue +414 -0
- package/src/views/user/wf/wf_obj_config/list.vue +84 -78
- package/src/views/user/wf/wf_transfer_setting/edit.vue +52 -0
- package/src/views/user/wf/wf_transfer_setting/list.vue +10 -0
- package/src/components/xform/form-render/container-item/data-table-mixin2.js +0 -2169
- package/src/views/bd/setting/table_model/mixins/edit copy.js +0 -903
- package/src/views/user/login/index2.vue +0 -131
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
<i class="el-icon-s-home" v-if="tag.name =='home'"></i>
|
|
16
16
|
{{ getMenuName(tag) }}
|
|
17
17
|
|
|
18
|
-
<span v-if="
|
|
18
|
+
<span v-if="!!tag.meta.user_affix" class="el-icon-close is-disabled"/>
|
|
19
|
+
<span v-else-if="!isAffix(tag)" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)"/>
|
|
19
20
|
</router-link>
|
|
20
21
|
</scroll-pane>
|
|
21
22
|
<div class="tags-operBox">
|
|
@@ -27,12 +28,25 @@
|
|
|
27
28
|
<i class="el-icon-arrow-right" ayadmin-event="rightPage"
|
|
28
29
|
one-link-mark="yes" @click="$refs.scrollPane.handleScrollRight()"/>
|
|
29
30
|
</el-tooltip>
|
|
30
|
-
<el-
|
|
31
|
+
<el-dropdown >
|
|
32
|
+
<span class="el-dropdown-link" style="padding-right:10px;padding-left:4px;">
|
|
33
|
+
<i class="el-icon-more el-icon--right"></i>
|
|
34
|
+
</span>
|
|
35
|
+
<el-dropdown-menu slot="dropdown">
|
|
36
|
+
<el-dropdown-item @click.native="refreshSelectedTag($route)" :disabled="getIsLock()">
|
|
37
|
+
<i class="el-icon-refresh"/><span>{{ $t1('刷新') }}</span>
|
|
38
|
+
</el-dropdown-item>
|
|
39
|
+
<el-dropdown-item @click.native="closeAllTags(selectedTag)">
|
|
40
|
+
<i class="el-icon-close"/><span>{{ $t1('全部关闭') }}</span>
|
|
41
|
+
</el-dropdown-item>
|
|
42
|
+
</el-dropdown-menu>
|
|
43
|
+
</el-dropdown>
|
|
44
|
+
<!-- <el-tooltip :enterable="false" class="item" effect="dark" :content="$t1('刷新')" placement="bottom">
|
|
31
45
|
<i class="el-icon-refresh" @click="refreshSelectedTag($route)"/>
|
|
32
46
|
</el-tooltip>
|
|
33
47
|
<el-tooltip :enterable="false" class="item" effect="dark" :content="$t1('全部关闭')" placement="bottom">
|
|
34
48
|
<i class="el-icon-close" @click="closeAllTags(selectedTag)"/>
|
|
35
|
-
</el-tooltip>
|
|
49
|
+
</el-tooltip> -->
|
|
36
50
|
</div>
|
|
37
51
|
<!-- <ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
|
|
38
52
|
<li @click="refreshSelectedTag(selectedTag)">Refresh</li>
|
|
@@ -86,8 +100,8 @@ export default {
|
|
|
86
100
|
methods: {
|
|
87
101
|
getMenuName(item) {
|
|
88
102
|
let locale = this.$i18n?.locale;
|
|
89
|
-
let zhTitle =
|
|
90
|
-
let enTitle =
|
|
103
|
+
let zhTitle = item.meta?.title || "";
|
|
104
|
+
let enTitle = item.meta?.enTitle || '';
|
|
91
105
|
let title;
|
|
92
106
|
if (locale == "en") {
|
|
93
107
|
title = enTitle || zhTitle;
|
|
@@ -178,6 +192,7 @@ export default {
|
|
|
178
192
|
} */
|
|
179
193
|
},
|
|
180
194
|
closeSelectedTag(view) {
|
|
195
|
+
if(view.meta.user_affix)return
|
|
181
196
|
this.$store.dispatch('tagsView/delView', view).then(({visitedViews}) => {
|
|
182
197
|
if (this.isActive(view)) {
|
|
183
198
|
this.toLastView(visitedViews, view)
|
|
@@ -191,11 +206,13 @@ export default {
|
|
|
191
206
|
})
|
|
192
207
|
},
|
|
193
208
|
closeAllTags(view) {
|
|
194
|
-
this.$
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
209
|
+
this.$baseConfirm(this.$t1('您确定要全部关闭吗?')).then(() => {
|
|
210
|
+
this.$store.dispatch('tagsView/delAllViews').then(({visitedViews}) => {
|
|
211
|
+
if (this.affixTags.some(tag => tag.path === view.path)) {
|
|
212
|
+
return
|
|
213
|
+
}
|
|
214
|
+
this.toLastView(visitedViews, view)
|
|
215
|
+
})
|
|
199
216
|
})
|
|
200
217
|
},
|
|
201
218
|
toLastView(visitedViews, view) {
|
|
@@ -235,7 +252,13 @@ export default {
|
|
|
235
252
|
},
|
|
236
253
|
handleScroll() {
|
|
237
254
|
this.closeMenu()
|
|
238
|
-
}
|
|
255
|
+
},
|
|
256
|
+
getIsLock() {
|
|
257
|
+
let path = this.$route.path;
|
|
258
|
+
let visitedViews = this.$store.state.tagsView.visitedViews
|
|
259
|
+
let currentItem = visitedViews.find(item => item.path == path)
|
|
260
|
+
return !!currentItem?.meta?.user_affix;
|
|
261
|
+
},
|
|
239
262
|
}
|
|
240
263
|
}
|
|
241
264
|
</script>
|
|
@@ -249,6 +272,9 @@ export default {
|
|
|
249
272
|
</style>
|
|
250
273
|
<style lang="scss">
|
|
251
274
|
//reset element css of el-icon-close
|
|
275
|
+
span.el-icon-close.is-disabled{
|
|
276
|
+
cursor: not-allowed;
|
|
277
|
+
}
|
|
252
278
|
.tags-view-wrapper {
|
|
253
279
|
.tags-view-item {
|
|
254
280
|
.el-icon-close {
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<el-dialog
|
|
4
|
+
:title="$t1('新建企业')"
|
|
5
|
+
:append-to-body="true"
|
|
6
|
+
:modal-append-to-body="true"
|
|
7
|
+
:close-on-click-modal="false"
|
|
8
|
+
:visible.sync="showDialog"
|
|
9
|
+
:modal="false"
|
|
10
|
+
custom-class="dialog-style list-dialog dialog-checkbox pd_8"
|
|
11
|
+
width="350px"
|
|
12
|
+
v-el-drag-dialog
|
|
13
|
+
v-el-dialog-center
|
|
14
|
+
:before-close="dialogClose"
|
|
15
|
+
>
|
|
16
|
+
<div class="cont">
|
|
17
|
+
<el-form
|
|
18
|
+
ref="editCategoryForm"
|
|
19
|
+
:model="formData"
|
|
20
|
+
label-width="102px"
|
|
21
|
+
class="adSearchForm"
|
|
22
|
+
style="min-height: 150px; width: auto"
|
|
23
|
+
>
|
|
24
|
+
<el-form-item :label="$t1('企业类型')">
|
|
25
|
+
<el-radio-group v-model="formData.gender">
|
|
26
|
+
<el-radio :label="1">{{ $t1("海外营销") }}</el-radio
|
|
27
|
+
><br />
|
|
28
|
+
<el-radio :label="2">{{ $t1("国内营销") }}</el-radio
|
|
29
|
+
><br />
|
|
30
|
+
<el-radio :label="3">{{ $t1("产品平台") }}</el-radio>
|
|
31
|
+
</el-radio-group>
|
|
32
|
+
</el-form-item>
|
|
33
|
+
<el-form-item :label="$t1('编码')">
|
|
34
|
+
<el-input v-model="formData.sid" clearable class="all-width" />
|
|
35
|
+
</el-form-item>
|
|
36
|
+
</el-form>
|
|
37
|
+
</div>
|
|
38
|
+
<span slot="footer" class="dialog-footer">
|
|
39
|
+
<el-button type="primary" plain class="button-sty" @click="dialogClose">
|
|
40
|
+
<i class="el-icon-close el-icon"></i>
|
|
41
|
+
{{ $t1("取消") }}
|
|
42
|
+
</el-button>
|
|
43
|
+
<el-button type="primary" @click="openCreateCompanyJsonDialog" class="button-sty">
|
|
44
|
+
<i class="el-icon-check el-icon"></i>
|
|
45
|
+
{{ $t1("确定") }}
|
|
46
|
+
</el-button>
|
|
47
|
+
</span>
|
|
48
|
+
</el-dialog>
|
|
49
|
+
<el-dialog
|
|
50
|
+
title="新建企业JSON维护"
|
|
51
|
+
:append-to-body="true"
|
|
52
|
+
:modal-append-to-body="true"
|
|
53
|
+
:close-on-click-modal="false"
|
|
54
|
+
:visible.sync="showCreateCompanyJsonDialog"
|
|
55
|
+
:modal="false"
|
|
56
|
+
custom-class="dialog-style tips-dialog tips-1 "
|
|
57
|
+
width="800px"
|
|
58
|
+
@close="dialogClose"
|
|
59
|
+
v-el-drag-dialog
|
|
60
|
+
v-el-dialog-center
|
|
61
|
+
>
|
|
62
|
+
<div class="cont" style="height: 700px">
|
|
63
|
+
<code-editor
|
|
64
|
+
mode="json"
|
|
65
|
+
:readonly="!1"
|
|
66
|
+
v-model="companyJson"
|
|
67
|
+
height="414px;"
|
|
68
|
+
></code-editor>
|
|
69
|
+
</div>
|
|
70
|
+
<span slot="footer" class="dialog-footer">
|
|
71
|
+
<el-button type="primary" plain class="button-sty" @click="dialogClose">
|
|
72
|
+
<i class="el-icon-close el-icon"></i>
|
|
73
|
+
{{ $t1("取 消") }}
|
|
74
|
+
</el-button>
|
|
75
|
+
<el-button
|
|
76
|
+
type="primary"
|
|
77
|
+
@click="confirmCreateCompanyJsonDialog"
|
|
78
|
+
class="button-sty"
|
|
79
|
+
>
|
|
80
|
+
<i class="el-icon-check el-icon"></i>
|
|
81
|
+
{{ $t1("确 定") }}
|
|
82
|
+
</el-button>
|
|
83
|
+
</span>
|
|
84
|
+
</el-dialog>
|
|
85
|
+
</div>
|
|
86
|
+
</template>
|
|
87
|
+
<script>
|
|
88
|
+
export default {
|
|
89
|
+
components: {},
|
|
90
|
+
data() {
|
|
91
|
+
return {
|
|
92
|
+
showDialog: true,
|
|
93
|
+
formData: {
|
|
94
|
+
objType: "FormTemplate",
|
|
95
|
+
sid: null,
|
|
96
|
+
},
|
|
97
|
+
extractedCode: null,
|
|
98
|
+
companyJson: null,
|
|
99
|
+
showCreateCompanyJsonDialog: false,
|
|
100
|
+
};
|
|
101
|
+
},
|
|
102
|
+
methods: {
|
|
103
|
+
dialogConfirm() {
|
|
104
|
+
this.extractedCode = null;
|
|
105
|
+
if (!this.formData.sid) {
|
|
106
|
+
this.$baseAlert("唯一标识不能为空");
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
this.$http({
|
|
110
|
+
aes: true,
|
|
111
|
+
url: USER_PREFIX + `/form_develop/getExtractedCodeData`,
|
|
112
|
+
method: `post`,
|
|
113
|
+
data: this.formData,
|
|
114
|
+
isLoading: true,
|
|
115
|
+
success: (res) => {
|
|
116
|
+
let rows = res.objx || [];
|
|
117
|
+
if (rows.length) {
|
|
118
|
+
let row = rows[0];
|
|
119
|
+
this.extractedCode = row.extractedCode;
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
},
|
|
124
|
+
dialogClose() {
|
|
125
|
+
this.showDialog = false;
|
|
126
|
+
this.$emit("update:visiable", false);
|
|
127
|
+
},
|
|
128
|
+
openCreateCompanyJsonDialog() {
|
|
129
|
+
this.showDialog = false;
|
|
130
|
+
this.companyJson = "";
|
|
131
|
+
this.showCreateCompanyJsonDialog = true;
|
|
132
|
+
},
|
|
133
|
+
confirmCreateCompanyJsonDialog(data) {
|
|
134
|
+
/* this.$http({
|
|
135
|
+
aes: true,
|
|
136
|
+
url: USER_PREFIX + `/form_develop/getExtractedCodeData`,
|
|
137
|
+
method: `post`,
|
|
138
|
+
data: this.formData,
|
|
139
|
+
isLoading: true,
|
|
140
|
+
success: (res) => {
|
|
141
|
+
this.$message({
|
|
142
|
+
message: res.content,
|
|
143
|
+
type: "success"
|
|
144
|
+
});
|
|
145
|
+
this.dialogClose();
|
|
146
|
+
},
|
|
147
|
+
}); */
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
</script>
|
|
152
|
+
|
|
153
|
+
<style scoped>
|
|
154
|
+
::v-deep .el-select.all-width .el-input {
|
|
155
|
+
width: 100% !important;
|
|
156
|
+
}
|
|
157
|
+
</style>
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
:_viewType="1"
|
|
26
26
|
@reload="$reloadHandle"
|
|
27
27
|
@openDesignDialog="openDesingerDialogByChild"
|
|
28
|
+
:extractedObj="extractedObj"
|
|
28
29
|
></component>
|
|
29
30
|
<el-drawer :title="$t1('表单设计({formName})',{formName})" :visible.sync="showDesingerDialog" :modal="false"
|
|
30
31
|
:destroy-on-close="true"
|
package/src/layout/index.vue
CHANGED
|
@@ -6,12 +6,10 @@
|
|
|
6
6
|
import defaultLayout from "@base/layout/defaultLayout.vue";
|
|
7
7
|
|
|
8
8
|
export default {
|
|
9
|
-
name:
|
|
9
|
+
name: "Layout",
|
|
10
10
|
components: {
|
|
11
|
-
defaultLayout
|
|
11
|
+
defaultLayout,
|
|
12
12
|
},
|
|
13
13
|
};
|
|
14
14
|
</script>
|
|
15
|
-
<style lang="scss" scoped>
|
|
16
|
-
</style>
|
|
17
|
-
|
|
15
|
+
<style lang="scss" scoped></style>
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
|
|
2
|
+
let module = {
|
|
3
|
+
install (vxetable, options) {
|
|
4
|
+
let Table = vxetable.Table;
|
|
5
|
+
// return
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Table.mixins.push({
|
|
10
|
+
methods: {
|
|
11
|
+
/**
|
|
12
|
+
* 全局按下事件处理
|
|
13
|
+
*/
|
|
14
|
+
handleGlobalMousedownEvent : (evnt) => {
|
|
15
|
+
let $xeTable = this
|
|
16
|
+
const { editStore, ctxMenuStore, filterStore, customStore } = reactData
|
|
17
|
+
const { mouseConfig, editRules } = props
|
|
18
|
+
const el = refElem.value
|
|
19
|
+
const editOpts = computeEditOpts.value
|
|
20
|
+
const validOpts = computeValidOpts.value
|
|
21
|
+
const areaOpts = computeAreaOpts.value
|
|
22
|
+
const { actived } = editStore
|
|
23
|
+
const $validTooltip = refValidTooltip.value
|
|
24
|
+
const tableFilter = refTableFilter.value
|
|
25
|
+
const tableCustom = refTableCustom.value
|
|
26
|
+
const tableMenu = refTableMenu.value
|
|
27
|
+
// 筛选
|
|
28
|
+
if (tableFilter) {
|
|
29
|
+
if (getEventTargetNode(evnt, el, 'vxe-cell--filter').flag) {
|
|
30
|
+
// 如果点击了筛选按钮
|
|
31
|
+
} else if (getEventTargetNode(evnt, tableFilter.getRefMaps().refElem.value).flag) {
|
|
32
|
+
// 如果点击筛选容器
|
|
33
|
+
} else {
|
|
34
|
+
if (!getEventTargetNode(evnt, document.body, 'vxe-table--ignore-clear').flag) {
|
|
35
|
+
tablePrivateMethods.preventEvent(evnt, 'event.clearFilter', filterStore.args, tableMethods.closeFilter)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// 自定义列
|
|
40
|
+
if (tableCustom) {
|
|
41
|
+
if (customStore.btnEl === evnt.target || getEventTargetNode(evnt, document.body, 'vxe-toolbar-custom-target').flag) {
|
|
42
|
+
// 如果点击了自定义列按钮
|
|
43
|
+
} else if (getEventTargetNode(evnt, tableCustom.getRefMaps().refElem.value).flag) {
|
|
44
|
+
// 如果点击自定义列容器
|
|
45
|
+
} else {
|
|
46
|
+
if (!getEventTargetNode(evnt, document.body, 'vxe-table--ignore-clear').flag) {
|
|
47
|
+
tablePrivateMethods.preventEvent(evnt, 'event.clearCustom', {}, () => {
|
|
48
|
+
if ($xeTable.closeCustom) {
|
|
49
|
+
$xeTable.closeCustom()
|
|
50
|
+
}
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// 如果已激活了编辑状态
|
|
57
|
+
if (actived.row) {
|
|
58
|
+
if (!(editOpts.autoClear === false)) {
|
|
59
|
+
// 如果是激活状态,点击了单元格之外
|
|
60
|
+
const cell = actived.args.cell
|
|
61
|
+
if ((!cell || !getEventTargetNode(evnt, cell).flag)) {
|
|
62
|
+
if ($validTooltip && getEventTargetNode(evnt, $validTooltip.$el as HTMLDivElement).flag) {
|
|
63
|
+
// 如果是激活状态,且点击了校验提示框
|
|
64
|
+
} else if (!internalData._lastCallTime || internalData._lastCallTime + 50 < Date.now()) {
|
|
65
|
+
// 如果是激活状态,点击了单元格之外
|
|
66
|
+
if (!getEventTargetNode(evnt, document.body, 'vxe-table--ignore-clear').flag) {
|
|
67
|
+
// 如果手动调用了激活单元格,避免触发源被移除后导致重复关闭
|
|
68
|
+
tablePrivateMethods.preventEvent(evnt, 'event.clearEdit', actived.args, () => {
|
|
69
|
+
let isClear
|
|
70
|
+
if (editOpts.mode === 'row') {
|
|
71
|
+
const rowTargetNode = getEventTargetNode(evnt, el, 'vxe-body--row')
|
|
72
|
+
const rowNodeRest = rowTargetNode.flag ? tableMethods.getRowNode(rowTargetNode.targetElem) : null
|
|
73
|
+
// row 方式,如果点击了不同行
|
|
74
|
+
isClear = rowNodeRest ? !$xeTable.eqRow(rowNodeRest.item, actived.args.row) : false
|
|
75
|
+
} else {
|
|
76
|
+
// cell 方式,如果是非编辑列
|
|
77
|
+
isClear = !getEventTargetNode(evnt, el, 'col--edit').flag
|
|
78
|
+
}
|
|
79
|
+
// 如果点击表头行,则清除激活状态
|
|
80
|
+
if (!isClear) {
|
|
81
|
+
isClear = getEventTargetNode(evnt, el, 'vxe-header--row').flag
|
|
82
|
+
}
|
|
83
|
+
// 如果点击表尾行,则清除激活状态
|
|
84
|
+
if (!isClear) {
|
|
85
|
+
isClear = getEventTargetNode(evnt, el, 'vxe-footer--row').flag
|
|
86
|
+
}
|
|
87
|
+
// 如果固定了高度且点击了行之外的空白处,则清除激活状态
|
|
88
|
+
if (!isClear && props.height && !reactData.overflowY) {
|
|
89
|
+
const bodyWrapperElem = evnt.target as HTMLDivElement
|
|
90
|
+
if (hasClass(bodyWrapperElem, 'vxe-table--body-wrapper')) {
|
|
91
|
+
isClear = evnt.offsetY < bodyWrapperElem.clientHeight
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (
|
|
95
|
+
isClear ||
|
|
96
|
+
// 如果点击了当前表格之外
|
|
97
|
+
!getEventTargetNode(evnt, el).flag
|
|
98
|
+
) {
|
|
99
|
+
setTimeout(() => {
|
|
100
|
+
$xeTable.handleClearEdit(evnt).then(() => {
|
|
101
|
+
// 如果存在校验,点击了表格之外则清除
|
|
102
|
+
if (!internalData.isActivated && editRules && validOpts.autoClear) {
|
|
103
|
+
reactData.validErrorMaps = {}
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
})
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
} else if (mouseConfig) {
|
|
114
|
+
if (!getEventTargetNode(evnt, el).flag && !($xeGGWrapper && getEventTargetNode(evnt, $xeGGWrapper.getRefMaps().refElem.value).flag) && !(tableMenu && getEventTargetNode(evnt, tableMenu.getRefMaps().refElem.value).flag) && !($xeToolbar && getEventTargetNode(evnt, $xeToolbar.getRefMaps().refElem.value).flag)) {
|
|
115
|
+
if ($xeTable.clearSelected) {
|
|
116
|
+
$xeTable.clearSelected()
|
|
117
|
+
}
|
|
118
|
+
if (areaOpts.autoClear) {
|
|
119
|
+
if ($xeTable.getCellAreas) {
|
|
120
|
+
const cellAreas = $xeTable.getCellAreas()
|
|
121
|
+
if (cellAreas && cellAreas.length && !getEventTargetNode(evnt, document.body, 'vxe-table--ignore-areas-clear').flag) {
|
|
122
|
+
tablePrivateMethods.preventEvent(evnt, 'event.clearAreas', {}, () => {
|
|
123
|
+
$xeTable.clearCellAreas()
|
|
124
|
+
$xeTable.clearCopyCellArea()
|
|
125
|
+
dispatchEvent('clear-cell-area-selection', { cellAreas }, evnt)
|
|
126
|
+
})
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// 如果配置了快捷菜单且,点击了其他地方则关闭
|
|
133
|
+
if ($xeTable.closeMenu) {
|
|
134
|
+
if (ctxMenuStore.visible && tableMenu && !getEventTargetNode(evnt, tableMenu.getRefMaps().refElem.value).flag) {
|
|
135
|
+
$xeTable.closeMenu()
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const isActivated = getEventTargetNode(evnt, $xeGGWrapper ? $xeGGWrapper.getRefMaps().refElem.value : el).flag
|
|
139
|
+
// 如果存在校验,点击了表格之外则清除
|
|
140
|
+
if (!isActivated && editRules && validOpts.autoClear) {
|
|
141
|
+
reactData.validErrorMaps = {}
|
|
142
|
+
}
|
|
143
|
+
// 最后激活的表格
|
|
144
|
+
internalData.isActivated = isActivated
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
})
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export default module
|