@oinone/kunlun-vue-admin-base 6.2.7 → 6.2.9
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/oinone-kunlun-vue-admin-base.css +1 -1
- package/dist/oinone-kunlun-vue-admin-base.esm.js +50 -194
- package/dist/oinone-kunlun-vue-admin-base.scss +1 -1
- package/dist/types/src/field/table/date/TableYearFieldWidget.d.ts +1 -0
- package/package.json +8 -8
- package/src/basic/element/BaseElementListViewWidget.ts +10 -239
- package/src/field/table/boolean/TableBooleanSelectFieldWidget.ts +7 -2
- package/src/field/table/date/TableYearFieldWidget.ts +30 -1
- package/src/field/table/string/upload/TableStringUploadImageFieldWidget.ts +2 -2
- package/src/field/table/string/upload/TableStringUploadWidget.ts +0 -1
- package/src/view/application-screen/gallery/AppsGalleryWidget.ts +2 -2
- package/src/view/application-screen/gallery/Gallery.vue +7 -1
- package/src/view/table/TableWidget.ts +5 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { TableDateTimeFieldWidget } from './TableDateTimeFieldWidget';
|
|
2
2
|
export declare class TableYearFieldWidget extends TableDateTimeFieldWidget {
|
|
3
|
+
renderDefaultSlot(context: any): any;
|
|
3
4
|
protected get defaultFormat(): string;
|
|
4
5
|
protected get valueFormat(): string;
|
|
5
6
|
protected hasDateFormat: boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oinone/kunlun-vue-admin-base",
|
|
3
|
-
"version": "6.2.
|
|
3
|
+
"version": "6.2.9",
|
|
4
4
|
"main": "index.ts",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"prebuild": "rimraf dist",
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
"doc": "typedoc --out docs src/index.ts"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@oinone/kunlun-vue-admin-layout": "6.2.
|
|
18
|
-
"@oinone/kunlun-vue-router": "6.2.
|
|
19
|
-
"@oinone/kunlun-vue-ui": "6.2.
|
|
20
|
-
"@oinone/kunlun-vue-ui-antd": "6.2.
|
|
21
|
-
"@oinone/kunlun-vue-ui-common": "6.2.
|
|
22
|
-
"@oinone/kunlun-vue-ui-el": "6.2.
|
|
23
|
-
"@oinone/kunlun-vue-widget": "6.2.
|
|
17
|
+
"@oinone/kunlun-vue-admin-layout": "6.2.9",
|
|
18
|
+
"@oinone/kunlun-vue-router": "6.2.9",
|
|
19
|
+
"@oinone/kunlun-vue-ui": "6.2.9",
|
|
20
|
+
"@oinone/kunlun-vue-ui-antd": "6.2.9",
|
|
21
|
+
"@oinone/kunlun-vue-ui-common": "6.2.9",
|
|
22
|
+
"@oinone/kunlun-vue-ui-el": "6.2.9",
|
|
23
|
+
"@oinone/kunlun-vue-widget": "6.2.9",
|
|
24
24
|
"@wangeditor/editor": "5.1.23",
|
|
25
25
|
"@wangeditor/editor-for-vue": "5.1.11",
|
|
26
26
|
"@wangeditor/plugin-upload-attachment": "1.1.0",
|
|
@@ -20,17 +20,17 @@ import {
|
|
|
20
20
|
SubmitValue,
|
|
21
21
|
translateValueByKey
|
|
22
22
|
} from '@oinone/kunlun-engine';
|
|
23
|
-
import { ActionContextType, Entity,
|
|
24
|
-
import { Condition
|
|
23
|
+
import { ActionContextType, Entity, ViewMode, ViewType } from '@oinone/kunlun-meta';
|
|
24
|
+
import { Condition } from '@oinone/kunlun-request';
|
|
25
25
|
import { DEFAULT_LIST_TRUE_CONDITION, DEFAULT_TRUE_CONDITION, EDirection, ISort } from '@oinone/kunlun-service';
|
|
26
26
|
import {
|
|
27
27
|
BooleanHelper,
|
|
28
28
|
CallChaining,
|
|
29
|
-
CastHelper,
|
|
30
29
|
debugConsole,
|
|
31
30
|
NumberHelper,
|
|
32
31
|
ObjectUtils,
|
|
33
32
|
Optional,
|
|
33
|
+
RSQLField,
|
|
34
34
|
RSQLHelper,
|
|
35
35
|
RSQLNodeInfo,
|
|
36
36
|
SortDirection,
|
|
@@ -41,7 +41,7 @@ import {
|
|
|
41
41
|
import { CheckedChangeEvent, RadioChangeEvent } from '@oinone/kunlun-vue-ui';
|
|
42
42
|
import { ListPaginationStyle, ListSelectMode, PageSizeEnum } from '@oinone/kunlun-vue-ui-antd';
|
|
43
43
|
import { Widget } from '@oinone/kunlun-vue-widget';
|
|
44
|
-
import { ceil,
|
|
44
|
+
import { ceil, isEmpty, isNil, isString, toInteger, toString } from 'lodash-es';
|
|
45
45
|
import { VxeTablePropTypes } from 'vxe-table';
|
|
46
46
|
import { fetchPageSize } from '../../typing';
|
|
47
47
|
import { FetchUtil } from '../../util';
|
|
@@ -123,7 +123,7 @@ export abstract class BaseElementListViewWidget<
|
|
|
123
123
|
if (this.usingSearchCondition || !this.isDataSourceProvider) {
|
|
124
124
|
// 前端搜索
|
|
125
125
|
if (searchCondition) {
|
|
126
|
-
dataSource =
|
|
126
|
+
dataSource = dataSource.filter((v) => RSQLHelper.compute(searchCondition, v));
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
if (!this.isDataSourceProvider) {
|
|
@@ -374,7 +374,7 @@ export abstract class BaseElementListViewWidget<
|
|
|
374
374
|
}
|
|
375
375
|
if (record) {
|
|
376
376
|
if (searchCondition) {
|
|
377
|
-
if (
|
|
377
|
+
if (RSQLHelper.compute(searchCondition, record)) {
|
|
378
378
|
dataSource.push(record);
|
|
379
379
|
} else {
|
|
380
380
|
filterSize++;
|
|
@@ -688,13 +688,10 @@ export abstract class BaseElementListViewWidget<
|
|
|
688
688
|
if (!rsql || rsql === DEFAULT_LIST_TRUE_CONDITION) {
|
|
689
689
|
return undefined;
|
|
690
690
|
}
|
|
691
|
-
const searchCondition = RSQLHelper.
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
},
|
|
696
|
-
rsql
|
|
697
|
-
);
|
|
691
|
+
const searchCondition = RSQLHelper.parseRSQL(rsql, {
|
|
692
|
+
model: this.model.model,
|
|
693
|
+
fields: (this.seekSearchRuntimeContext()?.model.modelFields || []) as unknown as RSQLField[]
|
|
694
|
+
});
|
|
698
695
|
if (!searchCondition) {
|
|
699
696
|
return undefined;
|
|
700
697
|
}
|
|
@@ -973,229 +970,3 @@ export abstract class BaseElementListViewWidget<
|
|
|
973
970
|
await this.refreshProcess(condition);
|
|
974
971
|
}
|
|
975
972
|
}
|
|
976
|
-
|
|
977
|
-
type RsqlToObjectItem = {
|
|
978
|
-
value: Array<string | number | boolean>;
|
|
979
|
-
operator: DefaultComparisonOperator;
|
|
980
|
-
ttype: ModelFieldType;
|
|
981
|
-
};
|
|
982
|
-
|
|
983
|
-
interface IRsqlToObject {
|
|
984
|
-
[key: string]: RsqlToObjectItem | RsqlToObjectItem[];
|
|
985
|
-
}
|
|
986
|
-
|
|
987
|
-
class RsqlFilterExecutor {
|
|
988
|
-
public static filter<T extends Record<string, unknown> = Record<string, unknown>>(
|
|
989
|
-
list: T[],
|
|
990
|
-
root: TreeNode<RSQLNodeInfo>
|
|
991
|
-
): T[] {
|
|
992
|
-
return this.rsqlNodeToCondition(list, root);
|
|
993
|
-
}
|
|
994
|
-
|
|
995
|
-
private static rsqlNodeToCondition<T extends Record<string, unknown>>(list: T[], root: TreeNode<RSQLNodeInfo>): T[] {
|
|
996
|
-
const { children } = root;
|
|
997
|
-
|
|
998
|
-
const realChildren = children.filter((child) => (child.children && child.children.length) || child.value?.field);
|
|
999
|
-
|
|
1000
|
-
/**
|
|
1001
|
-
* 将rsql node tree 转换成正确的数据格式,格式如下。
|
|
1002
|
-
*
|
|
1003
|
-
* [
|
|
1004
|
-
* {
|
|
1005
|
-
* code: {
|
|
1006
|
-
* value: '110',
|
|
1007
|
-
* ttype: 'STRING'
|
|
1008
|
-
* operator: '=like='
|
|
1009
|
-
* },
|
|
1010
|
-
* },
|
|
1011
|
-
* {
|
|
1012
|
-
* writeDate: {
|
|
1013
|
-
* value: '2023-02-28 10:51:04',
|
|
1014
|
-
* ttype: 'DATETIME'
|
|
1015
|
-
* operator: '=lt='
|
|
1016
|
-
* }
|
|
1017
|
-
* },
|
|
1018
|
-
* {
|
|
1019
|
-
* writeDate: {
|
|
1020
|
-
* value: '2023-02-28 09:51:04',
|
|
1021
|
-
* ttype: 'DATETIME'
|
|
1022
|
-
* operator: '=gt='
|
|
1023
|
-
* }
|
|
1024
|
-
* }
|
|
1025
|
-
* ]
|
|
1026
|
-
*/
|
|
1027
|
-
|
|
1028
|
-
const arr: IRsqlToObject[] = [];
|
|
1029
|
-
|
|
1030
|
-
realChildren.forEach((child) => {
|
|
1031
|
-
if (child.children.length === 0) {
|
|
1032
|
-
const { selector, operator, field, args } = child.value!;
|
|
1033
|
-
|
|
1034
|
-
/**
|
|
1035
|
-
* {value: xxx, operator: 'xxx', ttype: xxx}
|
|
1036
|
-
*/
|
|
1037
|
-
const result = this.buildRsqlToObjectItem({
|
|
1038
|
-
value: args![0],
|
|
1039
|
-
operator: operator!.symbol! as any,
|
|
1040
|
-
ttype: field ? field.ttype : null
|
|
1041
|
-
});
|
|
1042
|
-
|
|
1043
|
-
arr.push({
|
|
1044
|
-
[selector as string]: result
|
|
1045
|
-
});
|
|
1046
|
-
} else if (child.value?.type === 1) {
|
|
1047
|
-
// 如果 type === 1 , 那么是 `or` 的查询条件
|
|
1048
|
-
const selector = child.children[0].value?.selector as string;
|
|
1049
|
-
|
|
1050
|
-
/**
|
|
1051
|
-
* [{value: xxx, operator: 'xxx', ttype: xxx}, {value: xxx, operator: 'xxx', ttype: xxx}]
|
|
1052
|
-
*/
|
|
1053
|
-
const list = child.children.map((c) => {
|
|
1054
|
-
const { operator, field, args } = c.value!;
|
|
1055
|
-
return this.buildRsqlToObjectItem({
|
|
1056
|
-
value: args![0],
|
|
1057
|
-
operator: operator!.symbol! as any,
|
|
1058
|
-
ttype: field ? field.ttype : null
|
|
1059
|
-
});
|
|
1060
|
-
});
|
|
1061
|
-
|
|
1062
|
-
arr.push({
|
|
1063
|
-
[selector as string]: list
|
|
1064
|
-
});
|
|
1065
|
-
}
|
|
1066
|
-
});
|
|
1067
|
-
|
|
1068
|
-
return this.getFilterResultWithConditionArr(list, arr) as T[];
|
|
1069
|
-
}
|
|
1070
|
-
|
|
1071
|
-
private static buildRsqlToObjectItem({ value, operator, ttype }) {
|
|
1072
|
-
return {
|
|
1073
|
-
value: this.getValueByTType(value, ttype),
|
|
1074
|
-
operator,
|
|
1075
|
-
ttype
|
|
1076
|
-
};
|
|
1077
|
-
}
|
|
1078
|
-
|
|
1079
|
-
private static getFilterResultWithConditionArr(list, arr: IRsqlToObject[]) {
|
|
1080
|
-
const filterArr: ((val: any) => boolean)[] = [];
|
|
1081
|
-
|
|
1082
|
-
arr.forEach((obj) => {
|
|
1083
|
-
Object.keys(obj).forEach((key) => {
|
|
1084
|
-
filterArr.push((dataSourceItem) => {
|
|
1085
|
-
const conditionObject = obj[key];
|
|
1086
|
-
|
|
1087
|
-
/**
|
|
1088
|
-
* 如果当前条件是数组,那么是 `or` 查询
|
|
1089
|
-
*/
|
|
1090
|
-
if (Array.isArray(conditionObject)) {
|
|
1091
|
-
const [k, relationK] = key.split('.');
|
|
1092
|
-
const itemValue = getValue<any[]>(dataSourceItem, k, []).map((v) => v[relationK]);
|
|
1093
|
-
return itemValue === null ? false : conditionObject.some((v) => this.executeOperator(v, itemValue));
|
|
1094
|
-
}
|
|
1095
|
-
|
|
1096
|
-
let itemValue: null | any[] | Record<string, any> = null;
|
|
1097
|
-
if ([ModelFieldType.ManyToMany, ModelFieldType.OneToMany].includes(conditionObject.ttype)) {
|
|
1098
|
-
const [k, relationK] = key.split('.');
|
|
1099
|
-
itemValue = getValue<any[]>(dataSourceItem, k, []).map((v) => v[relationK]);
|
|
1100
|
-
} else {
|
|
1101
|
-
itemValue = getValue(dataSourceItem, key, null);
|
|
1102
|
-
}
|
|
1103
|
-
|
|
1104
|
-
return this.executeOperator(conditionObject, itemValue);
|
|
1105
|
-
});
|
|
1106
|
-
});
|
|
1107
|
-
});
|
|
1108
|
-
|
|
1109
|
-
return filterArr.reduce((pre, next) => {
|
|
1110
|
-
return pre?.filter(next);
|
|
1111
|
-
}, list);
|
|
1112
|
-
}
|
|
1113
|
-
|
|
1114
|
-
/**
|
|
1115
|
-
* 通过 `条件` + `table每一行`,执行对应的操作
|
|
1116
|
-
*/
|
|
1117
|
-
private static executeOperator(obj: RsqlToObjectItem, dataSourceItem) {
|
|
1118
|
-
if (dataSourceItem === null) {
|
|
1119
|
-
return false;
|
|
1120
|
-
}
|
|
1121
|
-
|
|
1122
|
-
const realValue = this.getValueByTType(dataSourceItem, obj.ttype);
|
|
1123
|
-
|
|
1124
|
-
if (obj.operator === DefaultComparisonOperator.GREATER_THAN) {
|
|
1125
|
-
return realValue > obj.value;
|
|
1126
|
-
}
|
|
1127
|
-
|
|
1128
|
-
if (obj.operator === DefaultComparisonOperator.GREATER_THAN_OR_EQUAL) {
|
|
1129
|
-
return realValue >= obj.value;
|
|
1130
|
-
}
|
|
1131
|
-
|
|
1132
|
-
if (obj.operator === DefaultComparisonOperator.LESS_THAN) {
|
|
1133
|
-
return realValue < obj.value;
|
|
1134
|
-
}
|
|
1135
|
-
|
|
1136
|
-
if (obj.operator === DefaultComparisonOperator.LESS_THAN_OR_EQUAL) {
|
|
1137
|
-
return realValue < obj.value;
|
|
1138
|
-
}
|
|
1139
|
-
|
|
1140
|
-
if ([ModelFieldType.ManyToMany, ModelFieldType.OneToMany].includes(obj.ttype)) {
|
|
1141
|
-
return realValue.includes(obj.value);
|
|
1142
|
-
}
|
|
1143
|
-
|
|
1144
|
-
if (obj.operator === DefaultComparisonOperator.LIKE) {
|
|
1145
|
-
return realValue.indexOf(obj.value) > -1;
|
|
1146
|
-
}
|
|
1147
|
-
|
|
1148
|
-
if (obj.operator === DefaultComparisonOperator.NOT_LIKE) {
|
|
1149
|
-
return realValue.indexOf(obj.value) === -1;
|
|
1150
|
-
}
|
|
1151
|
-
|
|
1152
|
-
if (obj.operator === DefaultComparisonOperator.STARTS) {
|
|
1153
|
-
return realValue.startsWith(obj.value);
|
|
1154
|
-
}
|
|
1155
|
-
|
|
1156
|
-
if (obj.operator === DefaultComparisonOperator.NOT_STARTS) {
|
|
1157
|
-
return !realValue.startsWith(obj.value);
|
|
1158
|
-
}
|
|
1159
|
-
|
|
1160
|
-
if (obj.operator === DefaultComparisonOperator.ENDS) {
|
|
1161
|
-
return realValue.endsWith(obj.value);
|
|
1162
|
-
}
|
|
1163
|
-
|
|
1164
|
-
if (obj.operator === DefaultComparisonOperator.NOT_ENDS) {
|
|
1165
|
-
return !realValue.endsWith(obj.value);
|
|
1166
|
-
}
|
|
1167
|
-
|
|
1168
|
-
if (obj.operator === DefaultComparisonOperator.IS_NULL) {
|
|
1169
|
-
return realValue === null;
|
|
1170
|
-
}
|
|
1171
|
-
|
|
1172
|
-
if (obj.operator === DefaultComparisonOperator.NOT_NULL) {
|
|
1173
|
-
return realValue !== null;
|
|
1174
|
-
}
|
|
1175
|
-
|
|
1176
|
-
if (obj.operator === DefaultComparisonOperator.EQUAL) {
|
|
1177
|
-
return realValue === obj.value;
|
|
1178
|
-
}
|
|
1179
|
-
|
|
1180
|
-
if (obj.operator === DefaultComparisonOperator.NOT_EQUAL) {
|
|
1181
|
-
return realValue !== obj.value;
|
|
1182
|
-
}
|
|
1183
|
-
|
|
1184
|
-
throw new TypeError(`搜索失败,不支持${obj.operator}搜索`);
|
|
1185
|
-
}
|
|
1186
|
-
|
|
1187
|
-
/**
|
|
1188
|
-
* 根据 ttype,将value变成正确的值
|
|
1189
|
-
* 时间类型,就要转成时间戳
|
|
1190
|
-
*/
|
|
1191
|
-
private static getValueByTType(value, ttype: ModelFieldType) {
|
|
1192
|
-
switch (ttype) {
|
|
1193
|
-
case ModelFieldType.Date:
|
|
1194
|
-
case ModelFieldType.DateTime:
|
|
1195
|
-
return new Date(value).getTime();
|
|
1196
|
-
|
|
1197
|
-
default:
|
|
1198
|
-
return value;
|
|
1199
|
-
}
|
|
1200
|
-
}
|
|
1201
|
-
}
|
|
@@ -3,6 +3,7 @@ import { ModelFieldType, ViewType } from '@oinone/kunlun-meta';
|
|
|
3
3
|
import { SPI } from '@oinone/kunlun-spi';
|
|
4
4
|
import { RowContext } from '@oinone/kunlun-vue-ui';
|
|
5
5
|
import { Widget } from '@oinone/kunlun-vue-widget';
|
|
6
|
+
import { toString } from 'lodash-es';
|
|
6
7
|
import { createVNode, VNode } from 'vue';
|
|
7
8
|
import { BaseFieldWidget, BaseTableFieldWidget } from '../../../basic';
|
|
8
9
|
import { OptionColorStyle } from '../../FieldCommonEnum';
|
|
@@ -13,7 +14,7 @@ import TableEnum from '../enum/TableEnum.vue';
|
|
|
13
14
|
BaseFieldWidget.Token({
|
|
14
15
|
viewType: ViewType.Table,
|
|
15
16
|
ttype: ModelFieldType.Boolean,
|
|
16
|
-
widget: ['Select', '
|
|
17
|
+
widget: ['Select', 'Radio']
|
|
17
18
|
})
|
|
18
19
|
)
|
|
19
20
|
export class TableBooleanSelectFieldWidget extends BaseTableFieldWidget<string | string[], RuntimeEnumerationField> {
|
|
@@ -35,9 +36,13 @@ export class TableBooleanSelectFieldWidget extends BaseTableFieldWidget<string |
|
|
|
35
36
|
@Widget.Method()
|
|
36
37
|
public renderDefaultSlot(context: RowContext): VNode[] | string {
|
|
37
38
|
const value = this.compute(context);
|
|
39
|
+
let stringValue: string | undefined;
|
|
40
|
+
if (value != null) {
|
|
41
|
+
stringValue = toString(value);
|
|
42
|
+
}
|
|
38
43
|
return [
|
|
39
44
|
createVNode(TableEnum, {
|
|
40
|
-
value,
|
|
45
|
+
value: stringValue,
|
|
41
46
|
currentValue: this.handleValue(value),
|
|
42
47
|
options: this.options,
|
|
43
48
|
optionColor: this.optionColor,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ModelFieldType, ViewType } from '@oinone/kunlun-meta';
|
|
2
|
-
import { defaultYearFormat, defaultYearValueFormat } from '@oinone/kunlun-shared';
|
|
2
|
+
import { DateUtil, defaultYearFormat, defaultYearValueFormat } from '@oinone/kunlun-shared';
|
|
3
3
|
import { SPI } from '@oinone/kunlun-spi';
|
|
4
|
+
import { Widget } from '@oinone/kunlun-vue-widget';
|
|
5
|
+
import { isNil } from 'lodash-es';
|
|
4
6
|
import { BaseFieldWidget } from '../../../basic';
|
|
5
7
|
import { TableDateTimeFieldWidget } from './TableDateTimeFieldWidget';
|
|
6
8
|
|
|
@@ -11,6 +13,33 @@ import { TableDateTimeFieldWidget } from './TableDateTimeFieldWidget';
|
|
|
11
13
|
})
|
|
12
14
|
)
|
|
13
15
|
export class TableYearFieldWidget extends TableDateTimeFieldWidget {
|
|
16
|
+
@Widget.Method()
|
|
17
|
+
public renderDefaultSlot(context) {
|
|
18
|
+
const value = this.compute(context);
|
|
19
|
+
let cv;
|
|
20
|
+
if (isNil(value)) {
|
|
21
|
+
cv = '';
|
|
22
|
+
} else {
|
|
23
|
+
let format = DateUtil.fetchDatetimeFormat(
|
|
24
|
+
{ hasDateFormat: this.hasDateFormat, hasTimeFormat: this.hasTimeFormat },
|
|
25
|
+
this.format,
|
|
26
|
+
this.getDateFormat(context),
|
|
27
|
+
this.getTimeFormat(context),
|
|
28
|
+
this.convertFormat,
|
|
29
|
+
this.convertDateFormat,
|
|
30
|
+
this.convertTimeFormat
|
|
31
|
+
);
|
|
32
|
+
if (!format) {
|
|
33
|
+
format = this.defaultFormat;
|
|
34
|
+
}
|
|
35
|
+
const datetimeFormatValue = DateUtil.dateFormat(DateUtil.toDate(value, this.valueFormat), format);
|
|
36
|
+
if (datetimeFormatValue) {
|
|
37
|
+
cv = datetimeFormatValue;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return cv;
|
|
41
|
+
}
|
|
42
|
+
|
|
14
43
|
protected get defaultFormat() {
|
|
15
44
|
return defaultYearFormat;
|
|
16
45
|
}
|
|
@@ -9,8 +9,8 @@ import DefaultTableImage from './DefaultTableImage.vue';
|
|
|
9
9
|
@SPI.ClassFactory(
|
|
10
10
|
BaseFieldWidget.Token({
|
|
11
11
|
viewType: ViewType.Table,
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
ttype: [ModelFieldType.String, ModelFieldType.Text],
|
|
13
|
+
widget: 'UploadImg'
|
|
14
14
|
})
|
|
15
15
|
)
|
|
16
16
|
export class TableStringUploadImageFieldWidget extends BaseTableFieldWidget {
|
|
@@ -134,8 +134,8 @@ export class AppsGalleryWidget extends BaseElementListViewWidget {
|
|
|
134
134
|
return {
|
|
135
135
|
hasCreateAppAction: !!CreateAppAction && !this.executeInvisibleExpress(CreateAppAction.invisible),
|
|
136
136
|
hasUpdateAppAction: !!UpdateAppAction && !this.executeInvisibleExpress(UpdateAppAction.invisible),
|
|
137
|
-
hasUninstallAction: !!UninstallAction
|
|
138
|
-
hasInstallAction: !!InstallAction
|
|
137
|
+
hasUninstallAction: !!UninstallAction,
|
|
138
|
+
hasInstallAction: !!InstallAction,
|
|
139
139
|
hasBindHomepageAction: !!BindHomepageAction && !this.executeInvisibleExpress(BindHomepageAction.invisible),
|
|
140
140
|
hasDetailAction: !!DetailAction && !this.executeInvisibleExpress(DetailAction.invisible),
|
|
141
141
|
|
|
@@ -75,7 +75,13 @@
|
|
|
75
75
|
<div v-if="record.state === AppState.INSTALLED" class="state">
|
|
76
76
|
{{ translateValueByKey('已安装') }}
|
|
77
77
|
</div>
|
|
78
|
-
<div
|
|
78
|
+
<div
|
|
79
|
+
v-else-if="
|
|
80
|
+
(!record.state || record.state === AppState.UNINSTALLED) &&
|
|
81
|
+
actionPermission.hasCreateAppAction
|
|
82
|
+
"
|
|
83
|
+
class="install-action"
|
|
84
|
+
>
|
|
79
85
|
<span class="install-action-font" @click="installApp(record)">{{
|
|
80
86
|
translateValueByKey('安装')
|
|
81
87
|
}}</span>
|
|
@@ -61,6 +61,7 @@ export class TableWidget<Props extends TableWidgetProps = TableWidgetProps> exte
|
|
|
61
61
|
|
|
62
62
|
@Widget.Provide()
|
|
63
63
|
protected get cellWidth() {
|
|
64
|
+
// fixme @zbh 20250723 请使用语义明确的dsl属性名称
|
|
64
65
|
const { autoColumnWidth } = this.getDsl();
|
|
65
66
|
if (autoColumnWidth) {
|
|
66
67
|
return 'auto';
|
|
@@ -69,6 +70,7 @@ export class TableWidget<Props extends TableWidgetProps = TableWidgetProps> exte
|
|
|
69
70
|
|
|
70
71
|
@Widget.Provide()
|
|
71
72
|
protected get cellMinWidth() {
|
|
73
|
+
// fixme @zbh 20250723 请使用语义明确的dsl属性名称
|
|
72
74
|
const { minFieldWidth } = this.getDsl();
|
|
73
75
|
if (minFieldWidth) {
|
|
74
76
|
return StyleHelper.px(minFieldWidth) as string;
|
|
@@ -119,7 +121,9 @@ export class TableWidget<Props extends TableWidgetProps = TableWidgetProps> exte
|
|
|
119
121
|
*/
|
|
120
122
|
@Widget.Reactive()
|
|
121
123
|
protected get autoLineHeight(): boolean {
|
|
122
|
-
const autoLineHeight = Optional.ofNullable(this.getDsl().autoLineHeight)
|
|
124
|
+
const autoLineHeight = Optional.ofNullable(this.getDsl().autoLineHeight)
|
|
125
|
+
.map(BooleanHelper.toBoolean)
|
|
126
|
+
.orElse(undefined);
|
|
123
127
|
|
|
124
128
|
if (typeof autoLineHeight === 'boolean') {
|
|
125
129
|
return autoLineHeight;
|