@cqsjjb/course-res-design 0.1.0-beta.2 → 0.1.0-beta.4
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/CourseInfo.js +80 -12
- package/api/courseLibrary.js +13 -6
- package/api/global.js +4 -3
- package/api/utils.js +12 -0
- package/package.json +1 -1
package/CourseInfo.js
CHANGED
|
@@ -2,11 +2,54 @@ import React from 'react';
|
|
|
2
2
|
import { Descriptions } from 'antd';
|
|
3
3
|
import './CourseInfo.less';
|
|
4
4
|
import { getLabelName } from './utils/tools';
|
|
5
|
-
import { getCourseInfo } from './api/courseLibrary';
|
|
5
|
+
import { getCourseInfo, typePageAction } from './api/courseLibrary';
|
|
6
|
+
/** 内置字段 labelTypeCode -> { label, valueKey, enumMap } */
|
|
7
|
+
const INNER_FIELD_MAP = {
|
|
8
|
+
INDUSTRY: {
|
|
9
|
+
label: '行业',
|
|
10
|
+
valueKey: 'categorizeName'
|
|
11
|
+
},
|
|
12
|
+
JOB_TYPE: {
|
|
13
|
+
label: '工种',
|
|
14
|
+
valueKey: 'jobTypeName'
|
|
15
|
+
},
|
|
16
|
+
YEAR: {
|
|
17
|
+
label: '年份',
|
|
18
|
+
valueKey: 'yearValue'
|
|
19
|
+
},
|
|
20
|
+
REGION: {
|
|
21
|
+
label: '区域',
|
|
22
|
+
valueKey: 'regionName'
|
|
23
|
+
},
|
|
24
|
+
CHANNEL: {
|
|
25
|
+
label: '渠道',
|
|
26
|
+
valueKey: 'courseChannelEnum',
|
|
27
|
+
enumMap: COURSE_CHANNEL_ENUM
|
|
28
|
+
},
|
|
29
|
+
PRODUCER: {
|
|
30
|
+
label: '制作方',
|
|
31
|
+
valueKey: 'lecturerName'
|
|
32
|
+
},
|
|
33
|
+
RESOURCE_TYPE: {
|
|
34
|
+
label: '资源类型',
|
|
35
|
+
valueKey: 'courseModeEnum',
|
|
36
|
+
enumMap: COURSE_MODE_ENUM
|
|
37
|
+
},
|
|
38
|
+
RESOURCE_FORM: {
|
|
39
|
+
label: '资源形式',
|
|
40
|
+
valueKey: 'courseModeEnum',
|
|
41
|
+
enumMap: COURSE_MODE_ENUM
|
|
42
|
+
},
|
|
43
|
+
STAR: {
|
|
44
|
+
label: '星级',
|
|
45
|
+
valueKey: 'star'
|
|
46
|
+
}
|
|
47
|
+
};
|
|
6
48
|
export default class CourseInfo extends React.Component {
|
|
7
49
|
state = {
|
|
8
50
|
loading: false,
|
|
9
|
-
courseInfo: {}
|
|
51
|
+
courseInfo: {},
|
|
52
|
+
industryFields: []
|
|
10
53
|
};
|
|
11
54
|
componentDidMount() {
|
|
12
55
|
// 如果提供了 courseId,则内部获取数据
|
|
@@ -41,6 +84,13 @@ export default class CourseInfo extends React.Component {
|
|
|
41
84
|
loading: true
|
|
42
85
|
});
|
|
43
86
|
try {
|
|
87
|
+
const labelRes = await typePageAction();
|
|
88
|
+
const data = labelRes.data;
|
|
89
|
+
const arr = Array.isArray(data) ? data : [];
|
|
90
|
+
const industryFields = arr.filter(item => item?.classificationType === 'INNER' && item?.useEnum === 'TRUE' && item?.requiredEnum === 'TRUE');
|
|
91
|
+
this.setState({
|
|
92
|
+
industryFields
|
|
93
|
+
});
|
|
44
94
|
const infoRes = await (this.props.getCourseInfoAction ? this.props.getCourseInfoAction() : getCourseInfo({
|
|
45
95
|
id: courseId,
|
|
46
96
|
apiBaseName: apiBaseName
|
|
@@ -58,10 +108,22 @@ export default class CourseInfo extends React.Component {
|
|
|
58
108
|
});
|
|
59
109
|
}
|
|
60
110
|
}
|
|
111
|
+
getInnerFieldDisplay = item => {
|
|
112
|
+
const config = INNER_FIELD_MAP[item.labelTypeCode];
|
|
113
|
+
const label = config?.label ?? item.labelTypeName ?? '-';
|
|
114
|
+
const raw = config?.valueKey ? this.state.courseInfo[config.valueKey] : this.state.courseInfo[item.labelTypeCode];
|
|
115
|
+
const value = config?.enumMap && raw != null ? config.enumMap[raw] : raw;
|
|
116
|
+
return {
|
|
117
|
+
label,
|
|
118
|
+
value: value ?? '-'
|
|
119
|
+
};
|
|
120
|
+
};
|
|
61
121
|
render() {
|
|
62
122
|
const {
|
|
63
123
|
loading,
|
|
64
|
-
courseInfo: stateCourseInfo
|
|
124
|
+
courseInfo: stateCourseInfo,
|
|
125
|
+
industryFields,
|
|
126
|
+
customFields
|
|
65
127
|
} = this.state;
|
|
66
128
|
// 如果提供了 courseId,优先使用内部 state 的数据,否则使用 props
|
|
67
129
|
const hasCourseId = !!this.props.courseId;
|
|
@@ -77,10 +139,6 @@ export default class CourseInfo extends React.Component {
|
|
|
77
139
|
}, /*#__PURE__*/React.createElement(Descriptions.Item, {
|
|
78
140
|
label: "\u8BFE\u7A0B\u540D\u79F0"
|
|
79
141
|
}, courseInfo?.courseName || '--'), /*#__PURE__*/React.createElement(Descriptions.Item, {
|
|
80
|
-
label: "\u7C7B\u76EE"
|
|
81
|
-
}, courseInfo?.categorizeName ? courseInfo.categorizeName : courseInfo?.courseTypeLabel ? getLabelName(courseInfo?.courseTypeLabel) : '--'), courseInfo?.year && /*#__PURE__*/React.createElement(Descriptions.Item, {
|
|
82
|
-
label: "\u5E74\u4EFD"
|
|
83
|
-
}, courseInfo.year), /*#__PURE__*/React.createElement(Descriptions.Item, {
|
|
84
142
|
label: "\u8BFE\u7A0B\u4ECB\u7ECD"
|
|
85
143
|
}, courseInfo?.courseDescription ? /*#__PURE__*/React.createElement("div", {
|
|
86
144
|
dangerouslySetInnerHTML: {
|
|
@@ -93,11 +151,21 @@ export default class CourseInfo extends React.Component {
|
|
|
93
151
|
alt: "\u8BFE\u7A0B\u5C01\u9762",
|
|
94
152
|
width: 84,
|
|
95
153
|
height: 50
|
|
96
|
-
}) : '--'),
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
154
|
+
}) : '--'), industryFields.map((item, idx) => {
|
|
155
|
+
const {
|
|
156
|
+
label,
|
|
157
|
+
value
|
|
158
|
+
} = this.getInnerFieldDisplay(item);
|
|
159
|
+
return /*#__PURE__*/React.createElement(Descriptions.Item, {
|
|
160
|
+
key: item.id ?? idx,
|
|
161
|
+
label: label
|
|
162
|
+
}, value);
|
|
163
|
+
}), JSON.parse(stateCourseInfo.dynamicTags || '[]')?.map((item, idx) => {
|
|
164
|
+
return /*#__PURE__*/React.createElement(Descriptions.Item, {
|
|
165
|
+
key: item.id ?? idx,
|
|
166
|
+
label: item.fieldkey
|
|
167
|
+
}, item.fieldValue);
|
|
168
|
+
}), /*#__PURE__*/React.createElement(Descriptions.Item, {
|
|
101
169
|
label: "\u8BFE\u7A0B\u6807\u7B7E"
|
|
102
170
|
}, getLabelName(courseInfo?.courseLabel) || '--')));
|
|
103
171
|
}
|
package/api/courseLibrary.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import request
|
|
1
|
+
import request from '../utils/request';
|
|
2
|
+
import { getApiBaseName } from './utils';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* 资源库获取试题
|
|
@@ -6,7 +7,7 @@ import request, { API_BASE_NAME } from '../utils/request';
|
|
|
6
7
|
* @returns {Promise}
|
|
7
8
|
*/
|
|
8
9
|
export const getResources = params => {
|
|
9
|
-
return request.get(`/${
|
|
10
|
+
return request.get(`/${getApiBaseName()}/course/getResExam/${params.fileId}`);
|
|
10
11
|
};
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -15,7 +16,7 @@ export const getResources = params => {
|
|
|
15
16
|
* @returns {Promise}
|
|
16
17
|
*/
|
|
17
18
|
export const getTemplateHour = params => {
|
|
18
|
-
return request.post(`/${
|
|
19
|
+
return request.post(`/${getApiBaseName()}/course/getResourceHour`, params);
|
|
19
20
|
};
|
|
20
21
|
|
|
21
22
|
/**
|
|
@@ -24,7 +25,7 @@ export const getTemplateHour = params => {
|
|
|
24
25
|
* @returns {Promise}
|
|
25
26
|
*/
|
|
26
27
|
export const getCourseMenu = params => {
|
|
27
|
-
return request.get(`/${
|
|
28
|
+
return request.get(`/${getApiBaseName()}/course/findCourseMenu/${params.id}`);
|
|
28
29
|
};
|
|
29
30
|
|
|
30
31
|
/**
|
|
@@ -33,5 +34,11 @@ export const getCourseMenu = params => {
|
|
|
33
34
|
* @returns {Promise}w
|
|
34
35
|
*/
|
|
35
36
|
export const getCourseInfo = params => {
|
|
36
|
-
return request.get(`/${
|
|
37
|
-
};
|
|
37
|
+
return request.get(`/${getApiBaseName()}/course/${params.id}`);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// 查询标签分类管理列表
|
|
41
|
+
export const typePageAction = params =>
|
|
42
|
+
request.get(`/${getApiBaseName()}/typeManage`, {
|
|
43
|
+
params
|
|
44
|
+
});
|
package/api/global.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import request
|
|
1
|
+
import request from '../utils/request';
|
|
2
|
+
import { getApiBaseName } from './utils';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* 根据资源id查询新的视频url
|
|
@@ -6,7 +7,7 @@ import request, { API_BASE_NAME } from '../utils/request';
|
|
|
6
7
|
* @returns {Promise}
|
|
7
8
|
*/
|
|
8
9
|
export const getResUrlAction = params => {
|
|
9
|
-
return request.get(`/${
|
|
10
|
+
return request.get(`/${getApiBaseName()}/course/getVideoUrlByFileId/${params.fileId}`);
|
|
10
11
|
};
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -16,6 +17,6 @@ export const getResUrlAction = params => {
|
|
|
16
17
|
*/
|
|
17
18
|
export const getVideoCaption = params => {
|
|
18
19
|
return request.get(
|
|
19
|
-
`/${
|
|
20
|
+
`/${getApiBaseName()}/course/getCaptionListByFileId/${params.fileId}`
|
|
20
21
|
);
|
|
21
22
|
};
|
package/api/utils.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const inIframe = () => {
|
|
2
|
+
return window.self !== window.top;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export const getApiBaseName = () => {
|
|
6
|
+
try {
|
|
7
|
+
const location = inIframe() ? window.parent.location : window.location;
|
|
8
|
+
return location.pathname.match(/^\/(\w+)\/[C|c]ontainer/)[1];
|
|
9
|
+
} catch (error) {
|
|
10
|
+
return 'res';
|
|
11
|
+
}
|
|
12
|
+
}
|