@vue-start/pro 0.2.0 → 0.3.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/index.js CHANGED
@@ -7,6 +7,7 @@ var lodash = require('lodash');
7
7
  var rxjs = require('rxjs');
8
8
  var hooks = require('@vue-start/hooks');
9
9
  var request = require('@vue-start/request');
10
+ var vueRouter = require('vue-router');
10
11
 
11
12
  function ownKeys(object, enumerableOnly) {
12
13
  var keys = Object.keys(object);
@@ -154,17 +155,100 @@ var useComposeRequestActor = function useComposeRequestActor(actors, options, ca
154
155
  }, []);
155
156
  };
156
157
 
157
- /**
158
- * 获取Column的valueType,默认"text"
159
- * @param column
158
+ /**
159
+ * 剔除showState或showStateRules规则为!true的值
160
+ * @param values
161
+ * @param showState
162
+ * @param showStateRules
163
+ */
164
+ var getValidValues = function getValidValues(values, showState, showStateRules) {
165
+ if (showState) {
166
+ var invalidKeys = lodash.filter(lodash.keys(showState), function (key) {
167
+ return !showState[key];
168
+ });
169
+ return lodash.omit(values, invalidKeys);
170
+ }
171
+
172
+ if (showStateRules) {
173
+ var _invalidKeys = lodash.filter(lodash.keys(showStateRules), function (key) {
174
+ return !showStateRules[key](values);
175
+ });
176
+
177
+ return lodash.omit(values, _invalidKeys);
178
+ }
179
+
180
+ return values;
181
+ };
182
+ /**
183
+ * string类型的path转为arr
184
+ * @param path
185
+ */
186
+
187
+ var convertPathToList = function convertPathToList(path) {
188
+ if (!path) {
189
+ return undefined;
190
+ }
191
+
192
+ if (lodash.isArray(path)) {
193
+ return path;
194
+ }
195
+
196
+ if (path && lodash.isString(path) && path.indexOf(".") > 0) {
197
+ return lodash.split(path, ".");
198
+ }
199
+
200
+ return [path];
201
+ };
202
+ /**
203
+ * 唯一id
204
+ */
205
+
206
+ var generateId = function generateId() {
207
+ return Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
208
+ };
209
+ /**
210
+ * 将listState 中的数据通过id merge到 list item中
211
+ * ps:数组会替换
212
+ * @param list
213
+ * @param listState
214
+ * @param id
215
+ */
216
+
217
+ var mergeStateToList = function mergeStateToList(list, listState, id) {
218
+ if (!listState || !id) {
219
+ return list;
220
+ }
221
+
222
+ return lodash.map(list, function (item) {
223
+ var idName = lodash.isFunction(id) ? id(item) : id; //如果listState中有值,merge处理
224
+
225
+ var stateData = lodash.get(listState, idName);
226
+
227
+ if (!stateData || lodash.isEmpty(stateData) || lodash.isFunction(stateData) || !lodash.isObject(stateData)) {
228
+ return item;
229
+ } //只有是对象(键值对)才合并
230
+
231
+
232
+ return lodash.mergeWith(item, stateData, function (objValue, srcValue) {
233
+ //如果是数组,替换
234
+ if (lodash.isArray(objValue) || lodash.isArray(srcValue)) {
235
+ return srcValue;
236
+ }
237
+ });
238
+ });
239
+ };
240
+
241
+ /**
242
+ * 获取Column的valueType,默认"text"
243
+ * @param column
160
244
  */
161
245
 
162
246
  var getColumnValueType = function getColumnValueType(column) {
163
247
  return column.formValueType || column.valueType || "text";
164
248
  };
165
- /**
166
- *获取Column的FormItem name
167
- * @param column
249
+ /**
250
+ *获取Column的FormItem name
251
+ * @param column
168
252
  */
169
253
 
170
254
  var getColumnFormItemName = function getColumnFormItemName(column) {
@@ -172,12 +256,12 @@ var getColumnFormItemName = function getColumnFormItemName(column) {
172
256
 
173
257
  return ((_column$formItemProps = column.formItemProps) === null || _column$formItemProps === void 0 ? void 0 : _column$formItemProps.name) || column.dataIndex;
174
258
  };
175
- /**
176
- * 根据Column生成FormItem VNode
177
- * formFieldProps中的slots参数会以v-slots的形式传递到FormItem的录入组件(子组件)中
178
- * @param formElementMap
179
- * @param column
180
- * @param needRules
259
+ /**
260
+ * 根据Column生成FormItem VNode
261
+ * formFieldProps中的slots参数会以v-slots的形式传递到FormItem的录入组件(子组件)中
262
+ * @param formElementMap
263
+ * @param column
264
+ * @param needRules
181
265
  */
182
266
 
183
267
  var getFormItemEl = function getFormItemEl(formElementMap, column) {
@@ -202,11 +286,11 @@ var getFormItemEl = function getFormItemEl(formElementMap, column) {
202
286
  showProps: column.showProps
203
287
  }), (_column$formFieldProp = column.formFieldProps) === null || _column$formFieldProp === void 0 ? void 0 : _column$formFieldProp.slots);
204
288
  };
205
- /**
206
- * 根据Column生成Item VNode
207
- * @param elementMap
208
- * @param column
209
- * @param value
289
+ /**
290
+ * 根据Column生成Item VNode
291
+ * @param elementMap
292
+ * @param column
293
+ * @param value
210
294
  */
211
295
 
212
296
  var getItemEl = function getItemEl(elementMap, column, value) {
@@ -238,44 +322,44 @@ var RequestAction = {
238
322
 
239
323
  var proModuleProps = function proModuleProps() {
240
324
  return {
241
- /**
242
- * module状态
325
+ /**
326
+ * module状态
243
327
  */
244
328
  state: {
245
329
  type: Object
246
330
  },
247
331
 
248
- /**
249
- * 配置(静态)
332
+ /**
333
+ * 配置(静态)
250
334
  */
251
335
  columns: {
252
336
  type: Array
253
337
  },
254
338
 
255
- /**
256
- * 配置(动态)
257
- * columns动态属性兼容
339
+ /**
340
+ * 配置(动态)
341
+ * columns动态属性兼容
258
342
  */
259
343
  columnState: {
260
344
  type: Object
261
345
  },
262
346
 
263
- /**
264
- * 展示组件集
347
+ /**
348
+ * 展示组件集
265
349
  */
266
350
  elementMap: {
267
351
  type: Object
268
352
  },
269
353
 
270
- /**
271
- * 录入组件集
354
+ /**
355
+ * 录入组件集
272
356
  */
273
357
  formElementMap: {
274
358
  type: Object
275
359
  },
276
360
 
277
- /**
278
- * requests
361
+ /**
362
+ * requests
279
363
  */
280
364
  requests: {
281
365
  type: Array
@@ -286,27 +370,15 @@ var proModuleProps = function proModuleProps() {
286
370
  var ProModule = vue.defineComponent({
287
371
  props: _objectSpread2({}, proModuleProps()),
288
372
  setup: function setup(props, _ref) {
289
- var slots = _ref.slots;
373
+ var slots = _ref.slots,
374
+ expose = _ref.expose;
290
375
 
291
- /**
292
- * columns columnState 合并
376
+ /**
377
+ * columns columnState 合并
293
378
  */
294
379
  var columns = vue.computed(function () {
295
- return lodash.map(props.columns, function (item) {
296
- //如果columnState中有值,merge处理
297
- var mapData = lodash.get(props.columnState, getColumnFormItemName(item));
298
-
299
- if (lodash.isObject(mapData) && !lodash.isEmpty(mapData) && !lodash.isArray(mapData) && !lodash.isFunction(mapData)) {
300
- //合并
301
- return lodash.mergeWith(item, mapData, function (objValue, srcValue) {
302
- //如果是数组,替换
303
- if (lodash.isArray(objValue) || lodash.isArray(srcValue)) {
304
- return srcValue;
305
- }
306
- });
307
- }
308
-
309
- return item;
380
+ return mergeStateToList(props.columns, props.columnState, function (item) {
381
+ return getColumnFormItemName(item);
310
382
  });
311
383
  });
312
384
  /*********************************** 渲染组件 ***************************************/
@@ -460,6 +532,10 @@ var ProModule = vue.defineComponent({
460
532
  requests: props.requests,
461
533
  sendRequest: sendRequest
462
534
  });
535
+ expose({
536
+ sendEvent: sendEvent,
537
+ sendRequest: sendRequest
538
+ });
463
539
  return function () {
464
540
  var _slots$default;
465
541
 
@@ -542,6 +618,11 @@ exports.CurdAddAction = void 0;
542
618
  CurdAddAction["CONTINUE"] = "CONTINUE";
543
619
  })(exports.CurdAddAction || (exports.CurdAddAction = {}));
544
620
 
621
+ var defaultPage = {
622
+ page: 1,
623
+ pageSize: 10
624
+ };
625
+
545
626
  var proCurdProps = function proCurdProps() {
546
627
  return {
547
628
  /**
@@ -578,7 +659,8 @@ var proCurdProps = function proCurdProps() {
578
659
  var Curd = vue.defineComponent({
579
660
  props: _objectSpread2({}, proCurdProps()),
580
661
  setup: function setup(props, _ref) {
581
- var slots = _ref.slots;
662
+ var slots = _ref.slots,
663
+ expose = _ref.expose;
582
664
 
583
665
  var _ref2 = useProModule(),
584
666
  columns = _ref2.columns,
@@ -647,12 +729,18 @@ var Curd = vue.defineComponent({
647
729
  var sendCurdEvent = function sendCurdEvent(event) {
648
730
  sendEvent({
649
731
  type: event.action,
650
- payload: lodash.omit(event, "action")
732
+ payload: lodash.omit(event, "action", "source"),
733
+ source: event.source
651
734
  });
652
735
  }; //事件订阅
653
736
 
654
737
 
655
738
  useModuleEvent(function (event) {
739
+ //如果当前event存在source 不处理
740
+ if (event.source) {
741
+ return;
742
+ }
743
+
656
744
  var action = event.type;
657
745
  var _ref3 = event.payload,
658
746
  type = _ref3.type,
@@ -729,6 +817,11 @@ var Curd = vue.defineComponent({
729
817
  descProps: descProps,
730
818
  modalProps: modalProps
731
819
  });
820
+ expose({
821
+ sendCurdEvent: sendCurdEvent,
822
+ getOperate: getOperate,
823
+ refreshList: handleSearch
824
+ });
732
825
  return function () {
733
826
  var _slots$default;
734
827
 
@@ -745,7 +838,10 @@ var ProCurd = vue.defineComponent({
745
838
  setup: function setup(props, _ref4) {
746
839
  var _curdOperateOpts;
747
840
 
748
- var slots = _ref4.slots;
841
+ var slots = _ref4.slots,
842
+ expose = _ref4.expose;
843
+ var moduleRef = vue.ref();
844
+ var curdRef = vue.ref();
749
845
  var curdState = props.curdState || vue.reactive({
750
846
  detailData: {}
751
847
  });
@@ -797,18 +893,383 @@ var ProCurd = vue.defineComponent({
797
893
  },
798
894
  label: "删除"
799
895
  }), _curdOperateOpts);
896
+ /****************************** columns分类 *************************************/
897
+
800
898
  var requests = lodash.map(props.operates, function (item) {
801
899
  var curdOpts = lodash.get(curdOperateOpts, item.action);
802
900
  return _objectSpread2(_objectSpread2({}, curdOpts), item);
803
901
  });
804
902
  var moduleKeys = lodash.keys(lodash.omit(ProModule.props, "state", "requests"));
903
+ expose({
904
+ moduleRef: moduleRef,
905
+ curdRef: curdRef
906
+ });
907
+ return function () {
908
+ return vue.createVNode(ProModule, vue.mergeProps({
909
+ "ref": moduleRef
910
+ }, lodash.pick(props, moduleKeys), {
911
+ "state": curdState,
912
+ "requests": requests
913
+ }), {
914
+ "default": function _default() {
915
+ return [vue.createVNode(Curd, vue.mergeProps({
916
+ "ref": curdRef
917
+ }, lodash.omit.apply(void 0, [props].concat(_toConsumableArray(moduleKeys), ["curdState", "operates"])), {
918
+ "operates": requests
919
+ }), slots)];
920
+ }
921
+ });
922
+ };
923
+ }
924
+ });
925
+
926
+ var modalCurdProps = function modalCurdProps() {
927
+ return {
928
+ defaultAddRecord: {
929
+ type: Object
930
+ }
931
+ };
932
+ };
933
+
934
+ /**
935
+ * 事件处理
936
+ */
937
+ var ModalCurd = vue.defineComponent({
938
+ props: _objectSpread2({}, modalCurdProps()),
939
+ setup: function setup(props) {
940
+ var _listProps$value;
941
+
942
+ var _useProModule = useProModule(),
943
+ dispatch = _useProModule.dispatch,
944
+ sendRequest = _useProModule.sendRequest;
945
+
946
+ var _useProCurd = useProCurd(),
947
+ rowKey = _useProCurd.rowKey,
948
+ curdState = _useProCurd.curdState,
949
+ listProps = _useProCurd.listProps,
950
+ getOperate = _useProCurd.getOperate,
951
+ refreshList = _useProCurd.refreshList;
952
+
953
+ var pageState = (listProps === null || listProps === void 0 ? void 0 : (_listProps$value = listProps.value) === null || _listProps$value === void 0 ? void 0 : _listProps$value.pageState) || vue.reactive(_objectSpread2({}, defaultPage)); //发送详情接口
954
+
955
+ var sendDetailRequest = function sendDetailRequest(record) {
956
+ var operateOpts = getOperate(exports.CurdAction.DETAIL);
957
+
958
+ if (operateOpts !== null && operateOpts !== void 0 && operateOpts.actor) {
959
+ //如果注册了详情接口 发起请求
960
+ sendRequest(exports.CurdAction.DETAIL, record, rowKey);
961
+ } else {
962
+ //直接使用当前record作为详情数据
963
+ dispatch({
964
+ type: "detailData",
965
+ payload: record
966
+ });
967
+ }
968
+ };
969
+
970
+ var dealDetail = function dealDetail(subAction, _ref) {
971
+ var record = _ref.record;
972
+
973
+ if (subAction === exports.CurdSubAction.EMIT) {
974
+ dispatch({
975
+ type: "mode",
976
+ payload: exports.CurdCurrentMode.DETAIL
977
+ });
978
+ sendDetailRequest(record);
979
+ }
980
+ };
981
+
982
+ var dealAdd = function dealAdd(subAction) {
983
+ if (subAction === exports.CurdSubAction.EMIT) {
984
+ dispatch({
985
+ type: "mode",
986
+ payload: exports.CurdCurrentMode.ADD
987
+ });
988
+ dispatch({
989
+ type: "detailData",
990
+ payload: props.defaultAddRecord || {}
991
+ });
992
+ } else if (subAction === exports.CurdSubAction.SUCCESS) {
993
+ //添加成功
994
+ pageState.page = 1; //重置当前页数
995
+ //刷新List
996
+
997
+ refreshList({
998
+ page: 1
999
+ });
1000
+
1001
+ if (curdState.addAction === exports.CurdAddAction.CONTINUE) {
1002
+ dispatch({
1003
+ type: "detailData",
1004
+ payload: props.defaultAddRecord || {}
1005
+ });
1006
+ } else {
1007
+ dispatch({
1008
+ type: "mode",
1009
+ payload: undefined
1010
+ });
1011
+ }
1012
+ }
1013
+ };
1014
+
1015
+ var dealEdit = function dealEdit(subAction, _ref2) {
1016
+ var record = _ref2.record;
1017
+
1018
+ if (subAction === exports.CurdSubAction.EMIT) {
1019
+ dispatch({
1020
+ type: "mode",
1021
+ payload: exports.CurdCurrentMode.EDIT
1022
+ });
1023
+ sendDetailRequest(record);
1024
+ } else if (subAction === exports.CurdSubAction.SUCCESS) {
1025
+ // 编辑成功
1026
+ dispatch({
1027
+ type: "mode",
1028
+ payload: undefined
1029
+ }); //刷新列表
1030
+
1031
+ refreshList();
1032
+ }
1033
+ };
1034
+
1035
+ var dealDelete = function dealDelete(subAction) {
1036
+ if (subAction === exports.CurdSubAction.SUCCESS) {
1037
+ //刷新列表
1038
+ refreshList();
1039
+ }
1040
+ };
1041
+
1042
+ useModuleEvent(function (_ref3) {
1043
+ var type = _ref3.type,
1044
+ payload = _ref3.payload,
1045
+ source = _ref3.source;
1046
+
1047
+ if (source) {
1048
+ return;
1049
+ }
1050
+
1051
+ var action = type;
1052
+ var subAction = payload === null || payload === void 0 ? void 0 : payload.type;
1053
+ var record = payload === null || payload === void 0 ? void 0 : payload.record;
1054
+
1055
+ if (action === RequestAction.Success) {
1056
+ //覆盖
1057
+ action = lodash.get(payload, ["requestOpts", "action"]);
1058
+ subAction = exports.CurdSubAction.SUCCESS;
1059
+ }
1060
+
1061
+ switch (action) {
1062
+ case exports.CurdAction.DETAIL:
1063
+ dealDetail(subAction, {
1064
+ record: record
1065
+ });
1066
+ break;
1067
+
1068
+ case exports.CurdAction.ADD:
1069
+ dealAdd(subAction);
1070
+ break;
1071
+
1072
+ case exports.CurdAction.EDIT:
1073
+ dealEdit(subAction, {
1074
+ record: record
1075
+ });
1076
+ break;
1077
+
1078
+ case exports.CurdAction.DELETE:
1079
+ dealDelete(subAction);
1080
+ break;
1081
+ }
1082
+ });
1083
+ return function () {
1084
+ return null;
1085
+ };
1086
+ }
1087
+ });
1088
+ var ProModalCurd = vue.defineComponent({
1089
+ props: _objectSpread2(_objectSpread2({}, ProCurd.props), ModalCurd.props),
1090
+ setup: function setup(props, _ref4) {
1091
+ var slots = _ref4.slots;
1092
+ var invalidKeys = lodash.keys(ModalCurd.props);
805
1093
  return function () {
806
- return vue.h(ProModule, _objectSpread2(_objectSpread2({}, lodash.pick(props, moduleKeys)), {}, {
807
- state: curdState,
808
- requests: requests
809
- }), vue.h(Curd, _objectSpread2(_objectSpread2({}, lodash.omit.apply(void 0, [props].concat(_toConsumableArray(moduleKeys), ["curdState", "operates"]))), {}, {
810
- operates: requests
811
- }), slots));
1094
+ var _slots$default;
1095
+
1096
+ return vue.createVNode(ProCurd, lodash.omit(props, invalidKeys), {
1097
+ "default": function _default() {
1098
+ return [vue.createVNode(ModalCurd, lodash.pick(props, invalidKeys), null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
1099
+ }
1100
+ });
1101
+ };
1102
+ }
1103
+ });
1104
+
1105
+ var pageCurdProps = function pageCurdProps() {
1106
+ return {
1107
+ defaultAddRecord: {
1108
+ type: Object
1109
+ },
1110
+ routeBack: {
1111
+ type: Function
1112
+ }
1113
+ };
1114
+ };
1115
+
1116
+ var PageCurd = vue.defineComponent({
1117
+ props: _objectSpread2({}, pageCurdProps()),
1118
+ setup: function setup(props) {
1119
+ var router = vueRouter.useRouter();
1120
+ var route = vueRouter.useRoute();
1121
+
1122
+ var _useProModule = useProModule(),
1123
+ dispatch = _useProModule.dispatch,
1124
+ sendRequest = _useProModule.sendRequest;
1125
+
1126
+ var _useProCurd = useProCurd(),
1127
+ rowKey = _useProCurd.rowKey,
1128
+ curdState = _useProCurd.curdState;
1129
+
1130
+ var dealList = function dealList(subAction) {
1131
+ if (subAction === exports.CurdSubAction.PAGE) {
1132
+ //其实就是个重置过程
1133
+ dispatch({
1134
+ type: "mode",
1135
+ payload: undefined
1136
+ });
1137
+ dispatch({
1138
+ type: "detailData",
1139
+ payload: {}
1140
+ });
1141
+ dispatch({
1142
+ type: "detailLoading",
1143
+ payload: false
1144
+ });
1145
+ dispatch({
1146
+ type: "addAction",
1147
+ payload: undefined
1148
+ });
1149
+ }
1150
+ };
1151
+
1152
+ var dealDetail = function dealDetail(subAction, _ref) {
1153
+ var record = _ref.record;
1154
+
1155
+ if (subAction === exports.CurdSubAction.EMIT) {
1156
+ router.push({
1157
+ path: "".concat(route.path, "/detail"),
1158
+ query: lodash.pick(record, rowKey)
1159
+ });
1160
+ } else if (subAction === exports.CurdSubAction.PAGE) {
1161
+ dispatch({
1162
+ type: "mode",
1163
+ payload: exports.CurdCurrentMode.DETAIL
1164
+ });
1165
+ sendRequest(exports.CurdAction.DETAIL, route.query, rowKey);
1166
+ }
1167
+ };
1168
+
1169
+ var dealAdd = function dealAdd(subAction) {
1170
+ if (subAction === exports.CurdSubAction.EMIT) {
1171
+ router.push({
1172
+ path: "".concat(route.path, "/add")
1173
+ });
1174
+ } else if (subAction === exports.CurdSubAction.PAGE) {
1175
+ dispatch({
1176
+ type: "mode",
1177
+ payload: exports.CurdCurrentMode.ADD
1178
+ });
1179
+ dispatch({
1180
+ type: "detailData",
1181
+ payload: props.defaultAddRecord || {}
1182
+ });
1183
+ } else if (subAction === exports.CurdSubAction.SUCCESS) {
1184
+ if (curdState.addAction === exports.CurdAddAction.CONTINUE) {
1185
+ dispatch({
1186
+ type: "detailData",
1187
+ payload: props.defaultAddRecord || {}
1188
+ });
1189
+ } else {
1190
+ props.routeBack ? props.routeBack(exports.CurdAction.ADD) : router.go(-1);
1191
+ }
1192
+ }
1193
+ };
1194
+
1195
+ var dealEdit = function dealEdit(subAction, _ref2) {
1196
+ var record = _ref2.record;
1197
+
1198
+ if (subAction === exports.CurdSubAction.EMIT) {
1199
+ router.push({
1200
+ path: "".concat(route.path, "/edit"),
1201
+ query: lodash.pick(record, rowKey)
1202
+ });
1203
+ } else if (subAction === exports.CurdSubAction.PAGE) {
1204
+ dispatch({
1205
+ type: "mode",
1206
+ payload: exports.CurdCurrentMode.EDIT
1207
+ });
1208
+ sendRequest(exports.CurdAction.DETAIL, route.query, rowKey);
1209
+ } else if (subAction === exports.CurdSubAction.SUCCESS) {
1210
+ props.routeBack ? props.routeBack(exports.CurdAction.EDIT) : router.go(-1);
1211
+ }
1212
+ };
1213
+
1214
+ useModuleEvent(function (_ref3) {
1215
+ var type = _ref3.type,
1216
+ payload = _ref3.payload,
1217
+ source = _ref3.source;
1218
+
1219
+ if (source) {
1220
+ return;
1221
+ }
1222
+
1223
+ var action = type;
1224
+ var subAction = payload === null || payload === void 0 ? void 0 : payload.type;
1225
+ var record = payload === null || payload === void 0 ? void 0 : payload.record;
1226
+
1227
+ if (action === RequestAction.Success) {
1228
+ //覆盖
1229
+ action = lodash.get(payload, ["requestOpts", "action"]);
1230
+ subAction = exports.CurdSubAction.SUCCESS;
1231
+ }
1232
+
1233
+ switch (action) {
1234
+ case exports.CurdAction.LIST:
1235
+ dealList(subAction);
1236
+ break;
1237
+
1238
+ case exports.CurdAction.DETAIL:
1239
+ dealDetail(subAction, {
1240
+ record: record
1241
+ });
1242
+ break;
1243
+
1244
+ case exports.CurdAction.ADD:
1245
+ dealAdd(subAction);
1246
+ break;
1247
+
1248
+ case exports.CurdAction.EDIT:
1249
+ dealEdit(subAction, {
1250
+ record: record
1251
+ });
1252
+ break;
1253
+ }
1254
+ });
1255
+ return function () {
1256
+ return null;
1257
+ };
1258
+ }
1259
+ });
1260
+ var ProPageCurd = vue.defineComponent({
1261
+ props: _objectSpread2(_objectSpread2({}, ProCurd.props), PageCurd.props),
1262
+ setup: function setup(props, _ref4) {
1263
+ var slots = _ref4.slots;
1264
+ var invalidKeys = lodash.keys(PageCurd.props);
1265
+ return function () {
1266
+ var _slots$default;
1267
+
1268
+ return vue.createVNode(ProCurd, lodash.omit(props, invalidKeys), {
1269
+ "default": function _default() {
1270
+ return [vue.createVNode(PageCurd, lodash.pick(props, invalidKeys), null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
1271
+ }
1272
+ });
812
1273
  };
813
1274
  }
814
1275
  });
@@ -876,6 +1337,9 @@ var proFormProps = function proFormProps() {
876
1337
  columns: {
877
1338
  type: Array
878
1339
  },
1340
+ columnState: {
1341
+ type: Object
1342
+ },
879
1343
 
880
1344
  /**
881
1345
  * 展示控件集合,readonly模式下使用这些组件渲染
@@ -941,17 +1405,9 @@ var ProForm = vue.defineComponent({
941
1405
  var readonly = vue.computed(function () {
942
1406
  return props.readonly;
943
1407
  });
944
- /**
945
- * columns 转化为FormItem VNode对象
946
- */
947
-
948
- var formItemVNodes = vue.computed(function () {
949
- if (lodash.size(props.formElementMap) <= 0) {
950
- return [];
951
- }
952
-
953
- return lodash.map(props.columns, function (item) {
954
- return getFormItemEl(props.formElementMap, item, props.needRules);
1408
+ var columns = vue.computed(function () {
1409
+ return mergeStateToList(props.columns, props.columnState, function (item) {
1410
+ return getColumnFormItemName(item);
955
1411
  });
956
1412
  });
957
1413
  provideProForm(_objectSpread2({
@@ -961,14 +1417,16 @@ var ProForm = vue.defineComponent({
961
1417
  disableState: disableState,
962
1418
  //
963
1419
  elementMap: props.elementMap,
1420
+ formElementMap: props.formElementMap,
964
1421
  //
965
1422
  readonly: readonly,
966
1423
  //
967
- formItemVNodes: formItemVNodes
1424
+ columns: columns
968
1425
  }, props.provideExtra));
969
1426
  return function () {
970
1427
  var _slots$default;
971
1428
 
1429
+ // console.log("########", columns.value, props.columns, props.columnState);
972
1430
  return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
973
1431
  };
974
1432
  }
@@ -1089,51 +1547,6 @@ var ProSearchForm = vue.defineComponent({
1089
1547
  }
1090
1548
  });
1091
1549
 
1092
- /**
1093
- * 剔除showState或showStateRules规则为!true的值
1094
- * @param values
1095
- * @param showState
1096
- * @param showStateRules
1097
- */
1098
- var getValidValues = function getValidValues(values, showState, showStateRules) {
1099
- if (showState) {
1100
- var invalidKeys = lodash.filter(lodash.keys(showState), function (key) {
1101
- return !showState[key];
1102
- });
1103
- return lodash.omit(values, invalidKeys);
1104
- }
1105
-
1106
- if (showStateRules) {
1107
- var _invalidKeys = lodash.filter(lodash.keys(showStateRules), function (key) {
1108
- return !showStateRules[key](values);
1109
- });
1110
-
1111
- return lodash.omit(values, _invalidKeys);
1112
- }
1113
-
1114
- return values;
1115
- };
1116
- /**
1117
- * string类型的path转为arr
1118
- * @param path
1119
- */
1120
-
1121
- var convertPathToList = function convertPathToList(path) {
1122
- if (!path) {
1123
- return undefined;
1124
- }
1125
-
1126
- if (lodash.isArray(path)) {
1127
- return path;
1128
- }
1129
-
1130
- if (path && lodash.isString(path) && path.indexOf(".") > 0) {
1131
- return lodash.split(path, ".");
1132
- }
1133
-
1134
- return [path];
1135
- };
1136
-
1137
1550
  /**
1138
1551
  * ProFormList ctx
1139
1552
  */
@@ -1350,8 +1763,8 @@ var proTableProps = function proTableProps() {
1350
1763
  type: String
1351
1764
  },
1352
1765
 
1353
- /**
1354
- * 公共column,会merge到columns item中
1766
+ /**
1767
+ * 公共column,会merge到columns item中
1355
1768
  */
1356
1769
  column: {
1357
1770
  type: Object
@@ -1360,23 +1773,40 @@ var proTableProps = function proTableProps() {
1360
1773
  columns: {
1361
1774
  type: Array
1362
1775
  },
1776
+ columnState: {
1777
+ type: Object
1778
+ },
1363
1779
 
1364
- /**
1365
- * 展示控件集合,readonly模式下使用这些组件渲染
1780
+ /**
1781
+ * 展示控件集合,readonly模式下使用这些组件渲染
1366
1782
  */
1367
1783
  elementMap: {
1368
1784
  type: Object
1369
1785
  },
1370
1786
 
1371
- /**
1372
- * loading
1787
+ /**
1788
+ * loading
1373
1789
  */
1374
1790
  loading: {
1375
1791
  type: Boolean
1376
1792
  },
1377
1793
 
1378
- /**
1379
- * provide传递
1794
+ /**
1795
+ * 序号
1796
+ */
1797
+ serialNumber: {
1798
+ type: Boolean
1799
+ },
1800
+
1801
+ /**
1802
+ * 分页
1803
+ */
1804
+ pagination: {
1805
+ type: Object
1806
+ },
1807
+
1808
+ /**
1809
+ * provide传递
1380
1810
  */
1381
1811
  provideExtra: {
1382
1812
  type: Object
@@ -1389,8 +1819,11 @@ var ProTable = vue.defineComponent({
1389
1819
  setup: function setup(props, _ref) {
1390
1820
  var slots = _ref.slots;
1391
1821
  var columns = vue.computed(function () {
1392
- //根据valueType选择对应的展示组件
1393
- var columns = lodash.map(props.columns, function (item) {
1822
+ var mergeColumns = mergeStateToList(props.columns, props.columnState, function (item) {
1823
+ return item.dataIndex;
1824
+ }); //根据valueType选择对应的展示组件
1825
+
1826
+ var columns = lodash.map(mergeColumns, function (item) {
1394
1827
  //merge公共item
1395
1828
  var nextItem = lodash.merge(props.column, item);
1396
1829
 
@@ -1408,7 +1841,29 @@ var ProTable = vue.defineComponent({
1408
1841
  }
1409
1842
 
1410
1843
  return nextItem;
1411
- });
1844
+ }); //处理序号
1845
+
1846
+ if (props.serialNumber) {
1847
+ columns.unshift(_objectSpread2(_objectSpread2({
1848
+ title: "序号",
1849
+ dataIndex: "serialNumber",
1850
+ width: 80
1851
+ }, props.column), {}, {
1852
+ // @ts-ignore
1853
+ customRender: function customRender(_ref3) {
1854
+ var _props$pagination, _props$pagination2;
1855
+
1856
+ var index = _ref3.index;
1857
+
1858
+ if ((_props$pagination = props.pagination) !== null && _props$pagination !== void 0 && _props$pagination.page && (_props$pagination2 = props.pagination) !== null && _props$pagination2 !== void 0 && _props$pagination2.pageSize) {
1859
+ return props.pagination.pageSize * (props.pagination.page - 1) + index + 1;
1860
+ }
1861
+
1862
+ return index + 1;
1863
+ }
1864
+ }));
1865
+ }
1866
+
1412
1867
  var operate = props.operate; //处理operate
1413
1868
 
1414
1869
  if (operate && operate.items && lodash.some(operate.items, function (item) {
@@ -1427,8 +1882,8 @@ var ProTable = vue.defineComponent({
1427
1882
  dataIndex: "operate",
1428
1883
  fixed: "right"
1429
1884
  }, props.column), {}, {
1430
- customRender: function customRender(_ref3) {
1431
- var record = _ref3.record;
1885
+ customRender: function customRender(_ref4) {
1886
+ var record = _ref4.record;
1432
1887
  var validItems = lodash.filter(sortedItems, function (item) {
1433
1888
  if (item.show && lodash.isFunction(item.show)) {
1434
1889
  return item.show(record);
@@ -1470,7 +1925,7 @@ var ProTable = vue.defineComponent({
1470
1925
  return function () {
1471
1926
  var _slots$default;
1472
1927
 
1473
- return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots, columns.value);
1928
+ return (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
1474
1929
  };
1475
1930
  }
1476
1931
  });
@@ -1478,17 +1933,22 @@ var ProTable = vue.defineComponent({
1478
1933
  exports.ProCurd = ProCurd;
1479
1934
  exports.ProForm = ProForm;
1480
1935
  exports.ProFormList = ProFormList;
1936
+ exports.ProModalCurd = ProModalCurd;
1481
1937
  exports.ProModule = ProModule;
1938
+ exports.ProPageCurd = ProPageCurd;
1482
1939
  exports.ProSearchForm = ProSearchForm;
1483
1940
  exports.ProTable = ProTable;
1484
1941
  exports.RequestAction = RequestAction;
1485
1942
  exports.convertPathToList = convertPathToList;
1486
1943
  exports.createFormItemCompFn = createFormItemCompFn;
1944
+ exports.defaultPage = defaultPage;
1945
+ exports.generateId = generateId;
1487
1946
  exports.getColumnFormItemName = getColumnFormItemName;
1488
1947
  exports.getColumnValueType = getColumnValueType;
1489
1948
  exports.getFormItemEl = getFormItemEl;
1490
1949
  exports.getItemEl = getItemEl;
1491
1950
  exports.getValidValues = getValidValues;
1951
+ exports.mergeStateToList = mergeStateToList;
1492
1952
  exports.provideProCurd = provideProCurd;
1493
1953
  exports.provideProModule = provideProModule;
1494
1954
  exports.useComposeRequestActor = useComposeRequestActor;