cloud-web-corejs 1.0.54-dev.786 → 1.0.54-dev.787

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 (121) hide show
  1. package/package.json +2 -1
  2. package/src/components/VabUpload/index.vue +1 -1
  3. package/src/components/excelImport/index.js +69 -7
  4. package/src/components/excelImport/mixins.js +841 -9
  5. package/src/components/fileLibrary/fileHistoryDialog.vue +1 -1
  6. package/src/components/fileLibrary/fileObjAuthEdit.vue +1 -1
  7. package/src/components/fileLibrary/filterDialog.vue +1 -1
  8. package/src/components/formDialog/README.md +324 -241
  9. package/src/components/formDialog/actionButtons.js +90 -0
  10. package/src/components/formDialog/index.js +48 -35
  11. package/src/components/formDialog/index.vue +802 -724
  12. package/src/components/formDrawer/drawer.vue +719 -0
  13. package/src/components/formDrawer/index.js +50 -0
  14. package/src/components/onlineTalk/talkUserDialog.vue +1 -1
  15. package/src/components/tempStorage/tempStorageDialog.vue +1 -1
  16. package/src/components/wf/addTaskUserdialog.vue +1 -1
  17. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +1 -1
  18. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +115 -4
  19. package/src/components/xform/form-designer/form-widget/dialog/formDrawer.vue +102 -5
  20. package/src/components/xform/form-designer/form-widget/dialog/formFieldDialog.vue +1 -1
  21. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +1 -1
  22. package/src/components/xform/form-designer/setting-panel/action-button-config-dialog.vue +241 -0
  23. package/src/components/xform/form-designer/setting-panel/form-setting.vue +116 -0
  24. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-editor.vue +6 -0
  25. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +1 -0
  26. package/src/components/xform/form-render/container-item/data-table-mixin.js +1460 -1460
  27. package/src/components/xform/form-render/container-item/detail-item.vue +11 -2
  28. package/src/components/xform/form-render/indexMixin.js +5 -0
  29. package/src/index.js +506 -472
  30. package/src/utils/lazyPlugin.js +66 -0
  31. package/src/views/bd/setting/bd_attach_setting/dialog.vue +1 -1
  32. package/src/views/bd/setting/bd_attach_setting/list.vue +1 -1
  33. package/src/views/bd/setting/bd_company_env/dialog.vue +1 -1
  34. package/src/views/bd/setting/bd_company_env/list.vue +1 -1
  35. package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +1 -1
  36. package/src/views/bd/setting/form_import_log/list.vue +1 -1
  37. package/src/views/bd/setting/form_script/dialog.vue +1 -1
  38. package/src/views/bd/setting/form_script/form_list.vue +1 -1
  39. package/src/views/bd/setting/form_script/list.vue +1 -1
  40. package/src/views/bd/setting/form_script/list1.vue +1 -1
  41. package/src/views/bd/setting/form_template/dialog.vue +1 -1
  42. package/src/views/bd/setting/form_template/ftHistoryDialog.vue +1 -1
  43. package/src/views/bd/setting/form_template/itemList.vue +1 -1
  44. package/src/views/bd/setting/form_template/list.vue +1 -1
  45. package/src/views/bd/setting/form_template/wf_list.vue +1 -1
  46. package/src/views/bd/setting/logic_param/list.vue +1 -1
  47. package/src/views/bd/setting/menu_kind/dialog.vue +1 -1
  48. package/src/views/bd/setting/menu_kind/list.vue +1 -1
  49. package/src/views/bd/setting/push_data/list.vue +1 -1
  50. package/src/views/bd/setting/push_data_h/list.vue +1 -1
  51. package/src/views/bd/setting/request_async_setting/list.vue +1 -1
  52. package/src/views/bd/setting/request_setting/list.vue +1 -1
  53. package/src/views/bd/setting/table_model/dialog.vue +1 -1
  54. package/src/views/bd/setting/table_model/list.vue +1 -1
  55. package/src/views/bd/setting/table_model/zdDialog.vue +1 -1
  56. package/src/views/support/export_template/list.vue +1 -1
  57. package/src/views/user/access_log/list.vue +1 -1
  58. package/src/views/user/access_log/list2.vue +1 -1
  59. package/src/views/user/api_request/list.vue +1 -1
  60. package/src/views/user/area/dialog.vue +1 -1
  61. package/src/views/user/area/list.vue +1 -1
  62. package/src/views/user/bill_setting/list.vue +1 -1
  63. package/src/views/user/bill_setting/userDialog.vue +1 -1
  64. package/src/views/user/code_rules/list.vue +1 -1
  65. package/src/views/user/common_attribute/list.vue +1 -1
  66. package/src/views/user/common_script/list.vue +1 -1
  67. package/src/views/user/company_info/dialog.vue +1 -1
  68. package/src/views/user/country/dialog.vue +1 -1
  69. package/src/views/user/country/list.vue +1 -1
  70. package/src/views/user/data_type_setting/dialog.vue +1 -1
  71. package/src/views/user/extend_datasource/dialog.vue +1 -1
  72. package/src/views/user/extend_datasource/list.vue +1 -1
  73. package/src/views/user/fieldTranslation/list.vue +1 -1
  74. package/src/views/user/field_values_invisible/list.vue +1 -1
  75. package/src/views/user/file_type/list.vue +1 -1
  76. package/src/views/user/file_view_area/list.vue +1 -1
  77. package/src/views/user/form/form_template/dialog.vue +1 -1
  78. package/src/views/user/form/form_template/itemList.vue +1 -1
  79. package/src/views/user/form/form_template/list.vue +1 -1
  80. package/src/views/user/form/form_template_field/dialog.vue +1 -1
  81. package/src/views/user/form/form_type/dialog.vue +1 -1
  82. package/src/views/user/form/form_type/list.vue +1 -1
  83. package/src/views/user/form/report_requestaccess/dialog.vue +1 -1
  84. package/src/views/user/form/report_requestaccess/list.vue +1 -1
  85. package/src/views/user/groups/dialog.vue +1 -1
  86. package/src/views/user/groups/list.vue +1 -1
  87. package/src/views/user/lang_tag/dialog.vue +1 -1
  88. package/src/views/user/lang_tag/list.vue +1 -1
  89. package/src/views/user/language_setting/list.vue +1 -1
  90. package/src/views/user/menu/list.vue +1 -1
  91. package/src/views/user/mobile_menu/list.vue +1 -1
  92. package/src/views/user/notify_message/list.vue +1 -1
  93. package/src/views/user/notify_template/list.vue +1 -1
  94. package/src/views/user/notify_template/list2.vue +1 -1
  95. package/src/views/user/oplog/list.vue +1 -1
  96. package/src/views/user/position/dialog.vue +1 -1
  97. package/src/views/user/position/list.vue +1 -1
  98. package/src/views/user/project_tag/dialog.vue +1 -1
  99. package/src/views/user/project_tag/list.vue +1 -1
  100. package/src/views/user/push_setting/list.vue +1 -1
  101. package/src/views/user/request_setting/list.vue +1 -1
  102. package/src/views/user/role/dialog.vue +1 -1
  103. package/src/views/user/role/list.vue +1 -1
  104. package/src/views/user/sale_org/dialog.vue +1 -1
  105. package/src/views/user/sale_org/list.vue +1 -1
  106. package/src/views/user/system_notice/list.vue +1 -1
  107. package/src/views/user/system_parameter/list.vue +1 -1
  108. package/src/views/user/user/dialog.vue +1 -1
  109. package/src/views/user/user/form_dialog.vue +1 -1
  110. package/src/views/user/user/form_list.vue +1 -1
  111. package/src/views/user/user/list.vue +2 -2
  112. package/src/views/user/user_log_classify/list.vue +1 -1
  113. package/src/views/user/wf/wfReport/index.vue +2 -2
  114. package/src/views/user/wf/wf_auto_submit_data/list.vue +2 -2
  115. package/src/views/user/wf/wf_manage/list.vue +2 -2
  116. package/src/views/user/wf/wf_manage/list2.vue +2 -2
  117. package/src/views/user/wf/wf_obj_config/dialog.vue +1 -1
  118. package/src/views/user/wf/wf_obj_config/list.vue +1 -1
  119. package/src/views/user/wf/wf_obj_config/list_form.vue +1 -1
  120. package/src/views/user/wf/wf_transfer_setting/list.vue +1 -1
  121. package/src/views/user/workbench_menu/list.vue +1 -1
@@ -0,0 +1,241 @@
1
+ <template>
2
+ <el-dialog
3
+ title="操作按钮配置"
4
+ :visible.sync="dialogVisible"
5
+ custom-class="dialog-style list-dialog"
6
+ :show-close="true"
7
+ append-to-body
8
+ :close-on-click-modal="false"
9
+ :close-on-press-escape="false"
10
+ :destroy-on-close="true"
11
+ width="560px"
12
+ v-dialog-drag
13
+ @close="handleClose"
14
+ >
15
+ <div class="cont">
16
+ <el-form label-width="130px" class="action-button-config-form">
17
+ <el-form-item label="按钮标识(code)">
18
+ <el-input
19
+ v-model="model.code"
20
+ class="all-width"
21
+ placeholder="必填,resolve 时用于区分按钮"
22
+ clearable
23
+ ></el-input>
24
+ </el-form-item>
25
+ <el-form-item label="按钮文字">
26
+ <el-input v-model="model.label" class="all-width" clearable></el-input>
27
+ </el-form-item>
28
+ <el-form-item label="按钮类型">
29
+ <el-select v-model="model.type" class="all-width" clearable>
30
+ <el-option
31
+ v-for="item in typeOptions"
32
+ :key="item"
33
+ :label="item"
34
+ :value="item"
35
+ />
36
+ </el-select>
37
+ </el-form-item>
38
+ <el-form-item label="朴素按钮(plain)">
39
+ <el-switch v-model="model.plain"></el-switch>
40
+ </el-form-item>
41
+ <el-form-item label="图标(icon)">
42
+ <el-input
43
+ v-model="model.icon"
44
+ class="all-width"
45
+ placeholder="如 el-icon-check"
46
+ clearable
47
+ ></el-input>
48
+ </el-form-item>
49
+ <el-form-item label="权限唯一名称">
50
+ <el-input
51
+ v-model="model.authName"
52
+ class="all-width"
53
+ placeholder="留空则不校验权限(默认放行)"
54
+ clearable
55
+ >
56
+ <el-tooltip
57
+ slot="suffix"
58
+ :enterable="false"
59
+ effect="dark"
60
+ content="随机生成"
61
+ placement="top"
62
+ >
63
+ <i
64
+ class="el-input__icon el-icon-refresh-right"
65
+ @click="createRandomAuthName"
66
+ ></i>
67
+ </el-tooltip>
68
+ </el-input>
69
+ </el-form-item>
70
+ <el-form-item label="权限编码" v-if="authCode">
71
+ <div class="auth-code-text">
72
+ <el-tooltip effect="light" content="复制">
73
+ <a
74
+ class="a-link"
75
+ style="color: unset"
76
+ @click="copyAuthCode(authCode, $event)"
77
+ >
78
+ <span
79
+ ><i
80
+ class="el-icon-copy-document"
81
+ style="margin-right: 2px"
82
+ ></i
83
+ >{{ authCode }}</span
84
+ >
85
+ </a>
86
+ </el-tooltip>
87
+ </div>
88
+ </el-form-item>
89
+ <el-form-item label="点击前校验表单">
90
+ <el-switch v-model="model.needValidate"></el-switch>
91
+ </el-form-item>
92
+ <el-form-item label="执行成功后关闭">
93
+ <el-switch v-model="model.closeAfter"></el-switch>
94
+ </el-form-item>
95
+ <el-form-item label="显隐条件脚本">
96
+ <a
97
+ href="javascript:void(0);"
98
+ class="a-link link-oneLind"
99
+ @click="editButtonScript('visible', visibleParams)"
100
+ >
101
+ <span>{{ model.visible }}</span>
102
+ <i class="el-icon-edit"></i>
103
+ </a>
104
+ </el-form-item>
105
+ <el-form-item label="点击事件脚本">
106
+ <a
107
+ href="javascript:void(0);"
108
+ class="a-link link-oneLind"
109
+ @click="editButtonScript('onClick', clickParams)"
110
+ >
111
+ <span>{{ model.onClick }}</span>
112
+ <i class="el-icon-edit"></i>
113
+ </a>
114
+ </el-form-item>
115
+ </el-form>
116
+ </div>
117
+ <div slot="footer" class="dialog-footer">
118
+ <el-button class="button-sty" icon="el-icon-close" @click="handleClose">
119
+ {{ i18nt("designer.hint.cancel") }}
120
+ </el-button>
121
+ <el-button
122
+ type="primary"
123
+ class="button-sty"
124
+ icon="el-icon-check"
125
+ @click="handleConfirm"
126
+ >
127
+ {{ i18nt("designer.hint.confirm") }}
128
+ </el-button>
129
+ </div>
130
+ </el-dialog>
131
+ </template>
132
+
133
+ <script>
134
+ import i18n from "../../../../components/xform/utils/i18n";
135
+ import eventMixin from "./property-editor/event-handler/eventMixin";
136
+ import { generateId } from "../../../../components/xform/utils/util";
137
+ import Clipboard from "clipboard";
138
+
139
+ export default {
140
+ name: "action-button-config-dialog",
141
+ mixins: [i18n, eventMixin],
142
+ props: {
143
+ visible: {
144
+ type: Boolean,
145
+ default: false,
146
+ },
147
+ // 编辑中的按钮对象(父级传克隆副本,确认时整体回传)
148
+ button: {
149
+ type: Object,
150
+ required: true,
151
+ },
152
+ formCode: {
153
+ type: String,
154
+ default: "",
155
+ },
156
+ },
157
+ data() {
158
+ return {
159
+ // 本地编辑副本:不直改 prop,确认时整体回传
160
+ model: { ...this.button },
161
+ typeOptions: ["primary", "success", "warning", "danger", "info", "text"],
162
+ // 脚本注入参数与 actionButtons.js 执行时一致
163
+ clickParams: ["formData", "dialog", "done", "selection"],
164
+ visibleParams: ["button"],
165
+ };
166
+ },
167
+ computed: {
168
+ dialogVisible: {
169
+ get() {
170
+ return this.visible;
171
+ },
172
+ set(val) {
173
+ this.$emit("update:visible", val);
174
+ },
175
+ },
176
+ authCode() {
177
+ if (!this.model.authName || !this.formCode) {
178
+ return "";
179
+ }
180
+ return this.formCode + ":" + this.model.authName;
181
+ },
182
+ },
183
+ methods: {
184
+ createRandomAuthName() {
185
+ this.$set(this.model, "authName", "actionBtn" + generateId());
186
+ this.$message.success("生成成功");
187
+ },
188
+ editButtonScript(field, params) {
189
+ this.editEventHandler(field, params, {
190
+ customCode: () => this.model[field] || "",
191
+ callback: (code) => {
192
+ this.$set(this.model, field, code);
193
+ },
194
+ });
195
+ },
196
+ copyAuthCode(content, clickEvent) {
197
+ const clipboard = new Clipboard(clickEvent.target, {
198
+ text: () => content,
199
+ });
200
+ clipboard.on("success", () => {
201
+ this.$message.success("复制成功");
202
+ clipboard.destroy();
203
+ });
204
+ clipboard.on("error", () => {
205
+ this.$message.error("复制失败");
206
+ clipboard.destroy();
207
+ });
208
+ clipboard.onClick(clickEvent);
209
+ },
210
+ handleClose() {
211
+ this.dialogVisible = false;
212
+ },
213
+ handleConfirm() {
214
+ if (!this.model.code) {
215
+ this.$message.error("按钮标识(code)不能为空");
216
+ return;
217
+ }
218
+ this.$emit("confirm", { ...this.model });
219
+ this.dialogVisible = false;
220
+ },
221
+ },
222
+ };
223
+ </script>
224
+
225
+ <style scoped lang="scss">
226
+ .action-button-config-form {
227
+ ::v-deep .el-form-item {
228
+ margin-bottom: 12px;
229
+ }
230
+ ::v-deep .el-form-item__label {
231
+ line-height: 28px;
232
+ }
233
+ ::v-deep .el-form-item__content {
234
+ line-height: 28px;
235
+ }
236
+ .auth-code-text {
237
+ word-break: break-all;
238
+ line-height: 1.5;
239
+ }
240
+ }
241
+ </style>
@@ -139,6 +139,55 @@
139
139
  </span>
140
140
  </el-form-item>
141
141
  </el-collapse-item>
142
+ <el-collapse-item name="actionButtons" title="操作按钮">
143
+ <!-- formDialog/formDrawer 按 formCode 打开时的底部按钮(formConfig.actionButtons),
144
+ 未配置则回退默认取消/确定;权限编码 = formCode:authName(禁用清单机制,默认放行) -->
145
+ <el-form-item label-width="0">
146
+ <draggable
147
+ tag="ul"
148
+ class="draggable-box"
149
+ v-if="actionButtons.length"
150
+ :list="actionButtons"
151
+ v-bind="{ group: 'actionBtnGroup', ghostClass: 'ghost', handle: '.drag-option' }"
152
+ >
153
+ <li
154
+ v-for="(btn, btnIdx) in actionButtons"
155
+ :key="btnIdx"
156
+ class="col-item action-button-item"
157
+ >
158
+ <i class="el-icon-s-operation drag-option"></i>
159
+ <span class="action-button-label">{{
160
+ btn.label || btn.code
161
+ }}</span>
162
+ <el-button
163
+ circle
164
+ plain
165
+ size="mini"
166
+ icon="el-icon-edit"
167
+ @click="editActionButton(btnIdx)"
168
+ ></el-button>
169
+ <el-button
170
+ circle
171
+ plain
172
+ size="mini"
173
+ type="danger"
174
+ icon="el-icon-minus"
175
+ @click="removeActionButton(btnIdx)"
176
+ ></el-button>
177
+ </li>
178
+ </draggable>
179
+ <div>
180
+ <el-button
181
+ type="text"
182
+ icon="el-icon-circle-plus-outline"
183
+ class="add-option"
184
+ @click="addActionButton"
185
+ >
186
+ {{ i18nt("添加按钮") }}
187
+ </el-button>
188
+ </div>
189
+ </el-form-item>
190
+ </el-collapse-item>
142
191
  <el-collapse-item name="3" title="流程信息">
143
192
  <el-form-item :label="i18nt('启用流程')">
144
193
  <el-switch
@@ -955,6 +1004,14 @@
955
1004
  @confirm="confirmBdCompanyEnvDialog2"
956
1005
  :multi="false"
957
1006
  />
1007
+
1008
+ <actionButtonConfigDialog
1009
+ v-if="showActionButtonDialog && currentActionButton"
1010
+ :visible.sync="showActionButtonDialog"
1011
+ :button="currentActionButton"
1012
+ :form-code="currentFormCode"
1013
+ @confirm="confirmActionButton"
1014
+ />
958
1015
  </div>
959
1016
  </template>
960
1017
 
@@ -970,6 +1027,7 @@ import wfObjConfigDialog from "./wfObjConfigDialog.vue";
970
1027
  import bdCompanyEnvDialog from "@base/views/bd/setting/bd_company_env/dialog";
971
1028
  import Draggable from "vuedraggable";
972
1029
  import formDynamicFieldSetting from "./form-dynamicField-setting.vue";
1030
+ import actionButtonConfigDialog from "./action-button-config-dialog.vue";
973
1031
 
974
1032
  export default {
975
1033
  name: "form-setting",
@@ -980,6 +1038,7 @@ export default {
980
1038
  bdCompanyEnvDialog,
981
1039
  Draggable,
982
1040
  formDynamicFieldSetting,
1041
+ actionButtonConfigDialog,
983
1042
  },
984
1043
  props: {
985
1044
  designer: Object,
@@ -1056,6 +1115,10 @@ export default {
1056
1115
  showBdCompanyEnvDialog1: false,
1057
1116
  showBdCompanyEnvDialog2: false,
1058
1117
 
1118
+ showActionButtonDialog: false,
1119
+ currentActionButton: null,
1120
+ currentActionButtonIndex: -1,
1121
+
1059
1122
  globalConfigParams: ["dataId", "formCode"],
1060
1123
 
1061
1124
  tip1: `流程主题表达式设置说明。
@@ -1104,6 +1167,19 @@ $\{wf.starterName\}提交的$\{pm_product_project.product_code\}$\{pm_product_pr
1104
1167
  this.designer.emitEvent("form-css-updated", deepClone(this.cssClassList));
1105
1168
  });
1106
1169
  },
1170
+ computed: {
1171
+ // formDialog/formDrawer 底部操作按钮配置(存 formConfig,随模板保存)
1172
+ actionButtons() {
1173
+ return this.formConfig.actionButtons || [];
1174
+ },
1175
+ currentFormCode() {
1176
+ const reportTemplate =
1177
+ this.designer && this.designer.vueInstance
1178
+ ? this.designer.vueInstance.reportTemplate
1179
+ : null;
1180
+ return (reportTemplate && reportTemplate.formCode) || "";
1181
+ },
1182
+ },
1107
1183
  mounted() {
1108
1184
  /* SettingPanel和FormWidget为兄弟组件, 在FormWidget加载formConfig时,
1109
1185
  此处SettingPanel可能无法获取到formConfig.cssCode, 故加个延时函数! */
@@ -1116,6 +1192,46 @@ $\{wf.starterName\}提交的$\{pm_product_project.product_code\}$\{pm_product_pr
1116
1192
  this.getListByObjTypeCode();
1117
1193
  },
1118
1194
  methods: {
1195
+ ensureActionButtons() {
1196
+ if (!Array.isArray(this.formConfig.actionButtons)) {
1197
+ this.$set(this.formConfig, "actionButtons", []);
1198
+ }
1199
+ return this.formConfig.actionButtons;
1200
+ },
1201
+ addActionButton() {
1202
+ this.currentActionButtonIndex = -1;
1203
+ this.currentActionButton = {
1204
+ code: "",
1205
+ label: "",
1206
+ type: "primary",
1207
+ plain: false,
1208
+ icon: "",
1209
+ authName: "",
1210
+ needValidate: false,
1211
+ closeAfter: true,
1212
+ visible: "",
1213
+ onClick: "",
1214
+ };
1215
+ this.showActionButtonDialog = true;
1216
+ },
1217
+ editActionButton(index) {
1218
+ this.currentActionButtonIndex = index;
1219
+ this.currentActionButton = deepClone(this.formConfig.actionButtons[index]);
1220
+ this.showActionButtonDialog = true;
1221
+ },
1222
+ removeActionButton(index) {
1223
+ this.formConfig.actionButtons.splice(index, 1);
1224
+ },
1225
+ confirmActionButton(btn) {
1226
+ const list = this.ensureActionButtons();
1227
+ if (this.currentActionButtonIndex > -1) {
1228
+ this.$set(list, this.currentActionButtonIndex, btn);
1229
+ } else {
1230
+ list.push(btn);
1231
+ }
1232
+ this.currentActionButton = null;
1233
+ this.currentActionButtonIndex = -1;
1234
+ },
1119
1235
  showEventCollapse() {
1120
1236
  if (this.designerConfig["eventCollapse"] === undefined) {
1121
1237
  return true;
@@ -6,6 +6,12 @@
6
6
  <el-form-item :label="i18nt('隐藏导航')">
7
7
  <el-switch v-model="optionModel.hideNav"></el-switch>
8
8
  </el-form-item>
9
+ <el-form-item :label="i18nt('隐藏标题栏')">
10
+ <el-switch v-model="optionModel.hideHeader"></el-switch>
11
+ <span style="margin-left: 8px; color: #999; font-size: 12px">
12
+ 整条标题栏不渲染(含标题、翻单/流程按钮及拖入的按钮控件)
13
+ </span>
14
+ </el-form-item>
9
15
  <el-form-item :label="i18nt('designer.setting.colsOfGrid')"></el-form-item>
10
16
  <el-form-item label-width="0">
11
17
  <draggable tag="ul" class="draggable-box" :list="selectedWidget.panes"
@@ -445,6 +445,7 @@ export const containers = [
445
445
  label: "单据详情",
446
446
  detailContainer: true,
447
447
  hideNav: false,
448
+ hideHeader: false,
448
449
  // colHeight: null,
449
450
  customClass: "",
450
451
  wfEnabled: false,