diff --git a/components/ai-chat-message/ai-chat-message.json b/components/ai-chat-message/ai-chat-message.json
new file mode 100644
index 0000000..d806736
--- /dev/null
+++ b/components/ai-chat-message/ai-chat-message.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "ns-loading": "../ns-loading/ns-loading"
+ }
+}
\ No newline at end of file
diff --git a/components/ai-chat-message/ai-chat-message.vue b/components/ai-chat-message/ai-chat-message.vue
new file mode 100644
index 0000000..528f729
--- /dev/null
+++ b/components/ai-chat-message/ai-chat-message.vue
@@ -0,0 +1,2766 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ localUserNickname }}
+
+ {{ message.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 智能助手
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ message.fileName }}
+ {{ formatFileSize(message.fileSize) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ message.title || '语音消息' }}
+ {{ formatDuration(message.duration) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ message.title || '视频消息' }}
+ {{ formatDuration(message.duration) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ message.title }}
+ {{ message.description }}
+ {{ message.url }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ message.title }}
+ ¥{{ message.price }}
+ {{ message.description }}
+
+
+
+
+
+
+
+
+
+
+
+ AI正在思考中...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/diy-components/diy-digit.vue b/components/diy-components/diy-digit.vue
new file mode 100644
index 0000000..d2d9f6d
--- /dev/null
+++ b/components/diy-components/diy-digit.vue
@@ -0,0 +1,276 @@
+
+
+
+
+
+
+
+
+ {{ item.unit }}
+
+
+
+ {{ item.desc }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/diy-components/diy-image-nav.vue b/components/diy-components/diy-image-nav.vue
new file mode 100644
index 0000000..6ed0ba5
--- /dev/null
+++ b/components/diy-components/diy-image-nav.vue
@@ -0,0 +1,290 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/diy-components/diy-video-list.vue b/components/diy-components/diy-video-list.vue
new file mode 100644
index 0000000..b87d041
--- /dev/null
+++ b/components/diy-components/diy-video-list.vue
@@ -0,0 +1,704 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/ns-mp-html/ns-mp-html.vue b/components/ns-mp-html/ns-mp-html.vue
new file mode 100644
index 0000000..c60d07f
--- /dev/null
+++ b/components/ns-mp-html/ns-mp-html.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/ns-newform/ns-newform.vue b/components/ns-newform/ns-newform.vue
new file mode 100644
index 0000000..b341175
--- /dev/null
+++ b/components/ns-newform/ns-newform.vue
@@ -0,0 +1,933 @@
+
+
+
+
+
+
+
+ {{ item.value.title }}
+ {{ item.value.required ? '*' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.value.title }}
+ {{ item.value.required ? '*' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.value.title }}
+ {{ item.value.required ? '*' : '' }}
+
+
+ {{ item.val }}
+ 请选择
+
+
+
+
+
+
+
+
+
+
+ {{ item.value.title }}
+ {{ item.value.required ? '*' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.value.title }}
+ {{ item.value.required ? '*' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.value.title }}
+ {{ item.value.required ? '*' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.value.title }}
+ {{ item.value.required ? '*' : '' }}
+
+
+
+
+ {{ item.val ? item.val : item.value.placeholder }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.value.title }}
+ {{ item.value.required ? '*' : '' }}
+
+
+
+
+
+
+ {{ item.start_date ? item.start_date : item.value.placeholder_start }}
+
+
+
+
+
+
+
+
+
+ {{ item.end_date ? item.end_date : item.value.placeholder_end }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.value.title }}
+ {{ item.value.required ? '*' : '' }}
+
+
+
+
+ {{ item.val ? item.val : item.value.placeholder }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.value.title }}
+ {{ item.value.required ? '*' : '' }}
+
+
+
+
+
+
+ {{ item.start_time ? item.start_time : item.value.placeholder_start }}
+
+
+
+
+
+
+
+
+
+ {{ item.end_time ? item.end_time : item.value.placeholder_end }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.value.title }}
+ {{ item.value.required ? '*' : '' }}
+
+
+
+
+ {{ item.val ? item.val : (item.select_arr == '2' ? '请选择省市' : '请选择省市区/县') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/uv-count-to/uv-count-to.vue b/components/uv-count-to/uv-count-to.vue
new file mode 100644
index 0000000..c069ecf
--- /dev/null
+++ b/components/uv-count-to/uv-count-to.vue
@@ -0,0 +1,218 @@
+
+
+ {{ displayValue }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/wxwork-contact/wxwork-contact.vue b/components/wxwork-contact/wxwork-contact.vue
new file mode 100644
index 0000000..65701bf
--- /dev/null
+++ b/components/wxwork-contact/wxwork-contact.vue
@@ -0,0 +1,301 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file