diff --git a/src/api/course.js b/src/api/course.js
new file mode 100644
index 00000000..31eb14ab
--- /dev/null
+++ b/src/api/course.js
@@ -0,0 +1,27 @@
+import request from '@/api/request'
+
+
+// 获取课程分类树接口
+export const getCourseTypeListApi = (data) => {
+ return request({
+ url: '/app/traCrsCatalogInfo/courseQueryTraCrsCatalogInfoList',
+ method: 'post',
+ data
+ });
+};
+// 获取生产线分类树接口
+export const getPrdLineTypeListApi = (data) => {
+ return request({
+ url: '/app/traPrdLineInfo/courseQueryTraPrdLineInfoList',
+ method: 'post',
+ data
+ });
+};
+// 获取标签分类树 接口
+export const getTraTagListApi = (data) => {
+ return request({
+ url: '/app/traTagCatalogInfo/queryTraTagCatalogInfoList',
+ method: 'post',
+ data
+ });
+};
\ No newline at end of file
diff --git a/src/components/course-item/course-item.vue b/src/components/course-item/course-item.vue
new file mode 100644
index 00000000..97081824
--- /dev/null
+++ b/src/components/course-item/course-item.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/course/index.vue b/src/pages/course/index.vue
index e0a4cc8b..70c87852 100644
--- a/src/pages/course/index.vue
+++ b/src/pages/course/index.vue
@@ -7,6 +7,7 @@
课程中心
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+ 课程分类
+
+
+
+
+
\ No newline at end of file
diff --git a/src/uni_modules/uv-tags/changelog.md b/src/uni_modules/uv-tags/changelog.md
new file mode 100644
index 00000000..96450ba5
--- /dev/null
+++ b/src/uni_modules/uv-tags/changelog.md
@@ -0,0 +1,10 @@
+## 1.0.3(2023-10-02)
+1. 兼容customStyle参数
+2. 优化
+## 1.0.2(2023-07-31)
+1. nvue模式下增加cell-child参数,避免在list中使用出现回收后不显示的BUG
+## 1.0.1(2023-05-16)
+1. 优化组件依赖,修改后无需全局引入,组件导入即可使用
+2. 优化部分功能
+## 1.0.0(2023-05-10)
+uv-tags 标签
diff --git a/src/uni_modules/uv-tags/components/uv-tags/props.js b/src/uni_modules/uv-tags/components/uv-tags/props.js
new file mode 100644
index 00000000..82b4bf7a
--- /dev/null
+++ b/src/uni_modules/uv-tags/components/uv-tags/props.js
@@ -0,0 +1,95 @@
+export default {
+ props: {
+ // 标签类型info、primary、success、warning、error
+ type: {
+ type: String,
+ default: 'primary'
+ },
+ // 不可用
+ disabled: {
+ type: [Boolean, String],
+ default: false
+ },
+ // 标签的大小,large,medium,mini
+ size: {
+ type: String,
+ default: 'medium'
+ },
+ // tag的形状,circle(两边半圆形), square(方形,带圆角)
+ shape: {
+ type: String,
+ default: 'square'
+ },
+ // 标签文字
+ text: {
+ type: [String, Number],
+ default: ''
+ },
+ // 背景颜色,默认为空字符串,即不处理
+ bgColor: {
+ type: String,
+ default: ''
+ },
+ // 标签字体颜色,默认为空字符串,即不处理
+ color: {
+ type: String,
+ default: ''
+ },
+ // 标签的边框颜色
+ borderColor: {
+ type: String,
+ default: ''
+ },
+ // 点击时返回的索引值,用于区分例遍的数组哪个元素被点击了
+ name: {
+ type: [String, Number],
+ default: ''
+ },
+ // 镂空时是否填充背景色
+ plainFill: {
+ type: Boolean,
+ default: false
+ },
+ // 是否镂空
+ plain: {
+ type: Boolean,
+ default: false
+ },
+ // 是否可关闭
+ closable: {
+ type: Boolean,
+ default: false
+ },
+ // 关闭按钮图标的颜色
+ closeColor: {
+ type: String,
+ default: '#C6C7CB'
+ },
+ // 关闭按钮图标的位置 right(右边)right-top(右上) 默认right-top
+ closePlace: {
+ type: String,
+ default: 'right-top'
+ },
+ // 是否显示
+ show: {
+ type: Boolean,
+ default: true
+ },
+ // 内置图标,或绝对路径的图片
+ icon: {
+ type: String,
+ default: ''
+ },
+ // 图标颜色
+ iconColor: {
+ type: String,
+ default: ''
+ },
+ // nvue模式下 是否直接显示,在uv-list等cell下面使用就需要设置
+ cellChild: {
+ type: Boolean,
+ default: false
+ },
+ ...uni.$uv?.props?.tags
+ }
+}
\ No newline at end of file
diff --git a/src/uni_modules/uv-tags/components/uv-tags/uv-tags.vue b/src/uni_modules/uv-tags/components/uv-tags/uv-tags.vue
new file mode 100644
index 00000000..baeb0fd1
--- /dev/null
+++ b/src/uni_modules/uv-tags/components/uv-tags/uv-tags.vue
@@ -0,0 +1,379 @@
+
+
+
+
+
+
+
+
+
+
+ {{ text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uv-tags/package.json b/src/uni_modules/uv-tags/package.json
new file mode 100644
index 00000000..6ad55da1
--- /dev/null
+++ b/src/uni_modules/uv-tags/package.json
@@ -0,0 +1,89 @@
+{
+ "id": "uv-tags",
+ "displayName": "uv-tags 标签 全面兼容小程序、nvue、vue2、vue3等多端",
+ "version": "1.0.3",
+ "description": "tag组件一般用于标记和选择,我们提供了更加丰富的表现形式,能够较全面的涵盖您的使用场景。",
+ "keywords": [
+ "uv-tags",
+ "uvui",
+ "uv-ui",
+ "tag",
+ "标签"
+],
+ "repository": "",
+ "engines": {
+ "HBuilderX": "^3.1.0"
+ },
+ "dcloudext": {
+ "type": "component-vue",
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "插件不采集任何数据",
+ "permissions": "无"
+ },
+ "npmurl": ""
+ },
+ "uni_modules": {
+ "dependencies": [
+ "uv-ui-tools",
+ "uv-transition",
+ "uv-icon"
+ ],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ },
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y",
+ "钉钉": "u",
+ "快手": "u",
+ "飞书": "u",
+ "京东": "u"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/uni_modules/uv-tags/readme.md b/src/uni_modules/uv-tags/readme.md
new file mode 100644
index 00000000..6170a2fc
--- /dev/null
+++ b/src/uni_modules/uv-tags/readme.md
@@ -0,0 +1,11 @@
+## Tag 标签
+
+> **组件名:uv-tags**
+
+tag组件一般用于标记和选择,我们提供了更加丰富的表现形式,能够较全面的涵盖您的使用场景。
+
+### 查看文档
+
+### [完整示例项目下载 | 关注更多组件](https://ext.dcloud.net.cn/plugin?name=uv-ui)
+
+#### 如使用过程中有任何问题,或者您对uv-ui有一些好的建议,欢迎加入 uv-ui 交流群:uv-ui、官方QQ群