diff --git a/pages/mall/admin/cms/article/list.uvue b/pages/mall/admin/cms/article/list.uvue
index 501da528..0e4f3d6e 100644
--- a/pages/mall/admin/cms/article/list.uvue
+++ b/pages/mall/admin/cms/article/list.uvue
@@ -32,6 +32,7 @@
ID
文章图片
文章名称
+ 文章分类
关联商品
浏览量
时间
@@ -45,6 +46,7 @@
🖼️
{{ item.name }}
+ {{ item.categoryName }}
{{ item.linkedProduct }}
{{ item.views }}
{{ item.time }}
@@ -112,11 +114,20 @@
*文章分类:
-
-
+
+
{{ formCategory || '请选择' }}
▼
+
+
+ {{ cat }}
+
+
@@ -131,7 +142,7 @@
*图文封面:
-
+
+
@@ -153,18 +164,14 @@
*文章内容:
- HTML
- H
- B
- T↕
- F
- I
- U
- S
- 🖼️
- 🎬
+ B
+ I
+ U
+ 🖼️
+
+
+
-
@@ -223,38 +230,83 @@ import { ref } from 'vue'
const filterCategory = ref('全部')
const filterKeyword = ref('')
const articleList = ref([
- { id: '240', name: '赋能消费 | 卷狗优选迈向文化消费新时代', linkedProduct: '', views: '3349', time: '2025-04-01 16:34' },
- { id: '237', name: '把重要的日子放在桌面', linkedProduct: '2024新款吹风机...', views: '260', time: '2025-04-01 16:32' }
+ { id: '240', name: '赋能消费 | 卷狗优选迈向文化消费新时代', categoryName:'消费文化', linkedProduct: '', views: '3349', time: '2025-04-01 16:34' },
+ { id: '237', name: '把重要的日子放在桌面', categoryName:'品牌资讯', linkedProduct: '2024新款吹风机...', views: '260', time: '2025-04-01 16:32' }
])
+const categoryList = ref(['购物心得', '消费文化', '品牌资讯', '全部']) // Mock data mirroring categories
+const dropdownVisible = ref(false)
+
const showDrawer = ref(false)
const isClosing = ref(false)
const formTitle = ref('')
const formAuthor = ref('')
const formCategory = ref('')
const formIntro = ref('')
+const formContent = ref('')
const formBanner = ref(false)
const formHot = ref(false)
+const toggleDropdown = () => {
+ dropdownVisible.value = !dropdownVisible.value
+}
+
+const selectCategory = (cat: string) => {
+ formCategory.value = cat
+ dropdownVisible.value = false
+}
+
const handleAdd = () => {
+let editorCtx: any = null
+const onEditorReady = () => {
+ // @ts-ignore
+ uni.createSelectorQuery().select('#editor').context((res) => {
+ editorCtx = res.context
+ }).exec()
+}
+
+const formatText = (name: string) => {
+ if (editorCtx) {
+ editorCtx.format(name)
+ }
+}
+
+const insertImage = () => {
+ uni.chooseImage({
+ count: 1,
+ success: (res) => {
+ if (editorCtx) {
+ editorCtx.insertImage({
+ src: res.tempFilePaths[0],
+ alt: '图像'
+ })
+ }
+ }
+ })
+}
+
formTitle.value = ''
formAuthor.value = ''
formCategory.value = ''
formIntro.value = ''
+ formContent.value = ''
formBanner.value = false
formHot.value = false
isClosing.value = false
+ dropdownVisible.value = false
showDrawer.value = true
}
const handleEdit = (item: any) => {
formTitle.value = item.name
formAuthor.value = '管理员'
- formCategory.value = '全部'
+ formCategory.value = item.categoryName
formIntro.value = '这是一段文章简介...'
+ formContent.value = '这是一段富文本内容...
'
formBanner.value = false
formHot.value = true
isClosing.value = false
+ dropdownVisible.value = false
showDrawer.value = true
}
@@ -265,7 +317,38 @@ const closeDrawer = () => {
isClosing.value = false
}, 300)
}
-const handleConfirm = () => { closeDrawer() }
+const handleUploadCover = () => {
+ uni.chooseImage({
+ count: 1,
+ success: (res) => {
+ // 在实际应用中这里应该上传到服务器
+ // 这里简单模拟展示
+ uni.showToast({ title: '上传成功', icon: 'success' })
+ // formCover.value = res.tempFilePaths[0]
+ }
+ })
+}
+
+const handleConfirm = () => {
+ if (formTitle.value.trim() == '') {
+ uni.showToast({ title: '请输入标题', icon: 'none' })
+ return
+ }
+
+ // 模拟保存逻辑
+ const newId = String(241 + articleList.value.length)
+ articleList.value.unshift({
+ id: newId,
+ name: formTitle.value,
+ categoryName: formCategory.value || '未分类',
+ linkedProduct: '',
+ views: '0',
+ time: '2026-02-26 12:00'
+ })
+
+ uni.showToast({ title: '发布成功', icon: 'success' })
+ closeDrawer()
+}
const handleQuery = () => { console.log('Querying...') }
@@ -296,6 +379,7 @@ const handleQuery = () => { console.log('Querying...') }
.col-id { width: 80px; justify-content: center; }
.col-img { width: 100px; }
.col-name { flex: 2; }
+.col-cat { width: 120px; }
.col-link { flex: 2; }
.col-v { width: 100px; justify-content: center; }
.col-time { width: 180px; justify-content: center; }
@@ -339,6 +423,7 @@ const handleQuery = () => { console.log('Querying...') }
.label-txt { font-size: 14px; color: #606266; }
.input-box { flex: 1; position: relative; }
+.z-20 { z-index: 20; }
.input-base { width: 100%; height: 38px; border: 1px solid #dcdee2; border-radius: 4px; padding: 0 45px 0 12px; font-size: 14px; }
.textarea-base { width: 100%; height: 100px; border: 1px solid #dcdee2; border-radius: 4px; padding: 10px 12px; font-size: 14px; }
.input-count { position: absolute; bottom: 8px; right: 12px; font-size: 12px; color: #999; }
@@ -351,9 +436,10 @@ const handleQuery = () => { console.log('Querying...') }
.editor-section { display: flex; flex-direction: column; }
.rich-editor-mock { border: 1px solid #dcdee2; border-radius: 4px; min-height: 400px; display: flex; flex-direction: column; }
.editor-toolbar { height: 44px; background-color: #fafafa; border-bottom: 1px solid #dcdee2; display: flex; flex-direction: row; align-items: center; padding: 0 15px; gap: 20px; flex-wrap: wrap; }
-.tool-ic { font-size: 14px; color: #515a6e; cursor: pointer; }
-.tool-ic-img { font-size: 18px; cursor: pointer; }
-.editor-content { flex: 1; background-color: #fff; }
+.tool-ic { font-size: 16px; color: #515a6e; cursor: pointer; padding: 5px 10px; border: 1px solid #eee; border-radius: 4px; }
+.tool-ic:active { background-color: #f0f0f0; }
+.editor-content-container { flex: 1; background-color: #fff; padding: 15px; }
+.editor-instance { width: 100%; height: 350px; font-size: 14px; }
.settings-section { display: flex; flex-direction: column; }
.form-item { display: flex; flex-direction: row; align-items: center; }
@@ -365,6 +451,35 @@ const handleQuery = () => { console.log('Querying...') }
.radio-in { width: 8px; height: 8px; background-color: #2d8cf0; border-radius: 50%; }
.radio-la { font-size: 14px; color: #606266; }
+
+.dropdown-list {
+ position: absolute;
+ top: 40px;
+ left: 0;
+ width: 100%;
+ background-color: #fff;
+ border: 1px solid #dcdee2;
+ border-radius: 4px;
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+ z-index: 100;
+ max-height: 200px;
+ overflow-y: auto;
+}
+.dropdown-item {
+ padding: 10px 15px;
+ cursor: pointer;
+ border-bottom: 1px solid #f0f0f0;
+}
+.dropdown-item:last-child {
+ border-bottom: none;
+}
+.dropdown-item:hover {
+ background-color: #f5f7fa;
+}
+.dropdown-txt {
+ font-size: 14px;
+ color: #606266;
+}
.submit-container { display: flex; justify-content: flex-start; padding-left: 135px; padding-bottom: 50px; }
.btn-submit { width: 120px; height: 40px; background-color: #2d8cf0; border-radius: 4px; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.submit-txt { color: #fff; font-size: 14px; }
diff --git a/pages/mall/admin/cms/category/list.uvue b/pages/mall/admin/cms/category/list.uvue
index cab2ca39..396e25b2 100644
--- a/pages/mall/admin/cms/category/list.uvue
+++ b/pages/mall/admin/cms/category/list.uvue
@@ -73,11 +73,20 @@
上级分类:
-
-
- 顶级分类
- ▼
-
+
+
+ {{ formParentCategory }}
+ ▼
+
+
+
+ {{ cat }}
+
+
@@ -98,8 +107,9 @@
分类图片:
-
- 🖼️
+
+ 🖼️
+ 已上传
@@ -151,23 +161,48 @@ const formName = ref('')
const formDesc = ref('')
const formSort = ref(0)
const formStatus = ref(true)
+const formParentCategory = ref('顶级分类')
+const formImage = ref('')
+
+const parentCategoryList = ref(['顶级分类', '购物心得', '消费文化', '品牌资讯'])
+const parentDropdownVisible = ref(false)
+
+const toggleParentDropdown = () => {
+ parentDropdownVisible.value = !parentDropdownVisible.value
+}
+
+const selectParentCategory = (val: string) => {
+ formParentCategory.value = val
+ parentDropdownVisible.value = false
+}
+
+const handleUpload = () => {
+ formImage.value = 'uploaded'
+ uni.showToast({ title: '模拟上传图片', icon: 'none' })
+}
const handleAdd = () => {
formName.value = ''
formDesc.value = ''
formSort.value = 0
formStatus.value = true
+ formParentCategory.value = '顶级分类'
+ formImage.value = ''
isClosing.value = false
+ parentDropdownVisible.value = false
showDrawer.value = true
}
const handleEdit = (item: any) => {
formName.value = item.name
// 模拟填充其他字段
- formDesc.value = ''
+ formDesc.value = '分类简介...'
formSort.value = 0
formStatus.value = item.status
+ formParentCategory.value = '顶级分类'
+ formImage.value = 'exists'
isClosing.value = false
+ parentDropdownVisible.value = false
showDrawer.value = true
}
@@ -182,7 +217,23 @@ const closeDrawer = () => {
isClosing.value = false
}, 300)
}
-const handleConfirm = () => { closeDrawer() }
+const handleConfirm = () => {
+ if (formName.value.trim() == '') {
+ uni.showToast({ title: '请输入分类名称', icon: 'none' })
+ return
+ }
+
+ // 模拟保存逻辑
+ const newId = String(182 + categoryList.value.length)
+ categoryList.value.unshift({
+ id: newId,
+ name: formName.value,
+ status: formStatus.value
+ })
+
+ uni.showToast({ title: '添加成功', icon: 'success' })
+ closeDrawer()
+}
const handleQuery = () => { console.log('Querying...') }
@@ -238,6 +289,35 @@ const handleQuery = () => { console.log('Querying...') }
.label-txt { font-size: 14px; color: #606266; text-align: right; }
.input-box { flex: 1; }
.input-base { width: 100%; height: 38px; border: 1px solid #dcdee2; border-radius: 4px; padding: 0 12px; font-size: 14px; }
+
+.dropdown-list {
+ position: absolute;
+ top: 40px;
+ left: 0;
+ width: 100%;
+ background-color: #fff;
+ border: 1px solid #dcdee2;
+ border-radius: 4px;
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+ z-index: 100;
+ max-height: 200px;
+ overflow-y: auto;
+}
+.dropdown-item {
+ padding: 10px 15px;
+ cursor: pointer;
+ border-bottom: 1px solid #f0f0f0;
+}
+.dropdown-item:last-child {
+ border-bottom: none;
+}
+.dropdown-item:hover {
+ background-color: #f5f7fa;
+}
+.dropdown-txt {
+ font-size: 14px;
+ color: #606266;
+}
.textarea-mini { width: 100%; height: 80px; border: 1px solid #dcdee2; border-radius: 4px; padding: 10px 12px; font-size: 14px; }
.upload-btn {
diff --git a/pages/mall/admin/错误信息.txt b/pages/mall/admin/错误信息.txt
index 823095d8..2e303a13 100644
--- a/pages/mall/admin/错误信息.txt
+++ b/pages/mall/admin/错误信息.txt
@@ -1,5 +1,12 @@
-AdminLayout.uvue:271 [Vue warn]: Unhandled error during execution of async component loader
- at
+list.uvue?t=1772068177429&import:1010 [Vue warn]: Property "insertImage" was accessed during render but is not defined on instance.
+ at
+at
+at
+at
+at
+at
+at
+at
at
at
at
@@ -15,11 +22,138 @@ at
at
at
at
-AdminLayout.uvue:271 TypeError: Failed to fetch dynamically imported module: http://localhost:5173/pages/mall/admin/marketing/checkin/config.uvue?import
-adminComponentMap.uts:106
- GET http://localhost:5173/pages/mall/admin/marketing/checkin/reward.uvue?import net::ERR_CACHE_READ_FAILURE 304 (Not Modified)
-AdminLayout.uvue:271 [Vue warn]: Unhandled error during execution of async component loader
- at
+warnHandler @ uni-h5.es.js:19975
+callWithErrorHandling @ vue.runtime.esm.js:1381
+warn$1 @ vue.runtime.esm.js:1207
+get @ vue.runtime.esm.js:4455
+(anonymous) @ list.uvue?t=1772068177429&import:1010
+renderFnWithContext @ vue.runtime.esm.js:2033
+renderSlot @ vue.runtime.esm.js:4254
+(anonymous) @ uni-h5.es.js:18666
+renderComponentRoot @ vue.runtime.esm.js:2092
+componentUpdateFn @ vue.runtime.esm.js:7365
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+setupRenderEffect @ vue.runtime.esm.js:7507
+mountComponent @ vue.runtime.esm.js:7274
+processComponent @ vue.runtime.esm.js:7228
+patch @ vue.runtime.esm.js:6694
+mountChildren @ vue.runtime.esm.js:6942
+processFragment @ vue.runtime.esm.js:7158
+patch @ vue.runtime.esm.js:6668
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7372
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+setupRenderEffect @ vue.runtime.esm.js:7507
+mountComponent @ vue.runtime.esm.js:7274
+processComponent @ vue.runtime.esm.js:7228
+patch @ vue.runtime.esm.js:6694
+mountChildren @ vue.runtime.esm.js:6942
+processFragment @ vue.runtime.esm.js:7158
+patch @ vue.runtime.esm.js:6668
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7372
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+setupRenderEffect @ vue.runtime.esm.js:7507
+mountComponent @ vue.runtime.esm.js:7274
+processComponent @ vue.runtime.esm.js:7228
+patch @ vue.runtime.esm.js:6694
+mountChildren @ vue.runtime.esm.js:6942
+processFragment @ vue.runtime.esm.js:7158
+patch @ vue.runtime.esm.js:6668
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7372
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+setupRenderEffect @ vue.runtime.esm.js:7507
+mountComponent @ vue.runtime.esm.js:7274
+processComponent @ vue.runtime.esm.js:7228
+patch @ vue.runtime.esm.js:6694
+mountChildren @ vue.runtime.esm.js:6942
+processFragment @ vue.runtime.esm.js:7158
+patch @ vue.runtime.esm.js:6668
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7372
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+setupRenderEffect @ vue.runtime.esm.js:7507
+mountComponent @ vue.runtime.esm.js:7274
+processComponent @ vue.runtime.esm.js:7228
+patch @ vue.runtime.esm.js:6694
+mountChildren @ vue.runtime.esm.js:6942
+processFragment @ vue.runtime.esm.js:7158
+patch @ vue.runtime.esm.js:6668
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7372
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+setupRenderEffect @ vue.runtime.esm.js:7507
+mountComponent @ vue.runtime.esm.js:7274
+processComponent @ vue.runtime.esm.js:7228
+patch @ vue.runtime.esm.js:6694
+patchBlockChildren @ vue.runtime.esm.js:7084
+processFragment @ vue.runtime.esm.js:7176
+patch @ vue.runtime.esm.js:6668
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+patchElement @ vue.runtime.esm.js:6989
+processElement @ vue.runtime.esm.js:6825
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7453
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+callWithErrorHandling @ vue.runtime.esm.js:1381
+flushJobs @ vue.runtime.esm.js:1585
+Promise.then
+queueFlush @ vue.runtime.esm.js:1494
+queueJob @ vue.runtime.esm.js:1488
+(anonymous) @ vue.runtime.esm.js:7491
+resetScheduling @ vue.runtime.esm.js:236
+triggerEffects @ vue.runtime.esm.js:280
+triggerRefValue @ vue.runtime.esm.js:1033
+set value @ vue.runtime.esm.js:1078
+handleAdd @ list.uvue:297
+callWithErrorHandling @ vue.runtime.esm.js:1381
+callWithAsyncErrorHandling @ vue.runtime.esm.js:1388
+invoker @ vue.runtime.esm.js:10253
+list.uvue?t=1772068177429&import:1028 [Vue warn]: Property "onEditorReady" was accessed during render but is not defined on instance.
+ at
+at
+at
+at
+at
+at
+at
+at
at
at
at
@@ -35,11 +169,139 @@ at
at
at
at
-AdminLayout.uvue:271 TypeError: Failed to fetch dynamically imported module: http://localhost:5173/pages/mall/admin/marketing/checkin/reward.uvue?import
-adminComponentMap.uts:109
- GET http://localhost:5173/pages/mall/admin/marketing/newcomer/index.uvue?import net::ERR_CACHE_READ_FAILURE 304 (Not Modified)
-AdminLayout.uvue:271 [Vue warn]: Unhandled error during execution of async component loader
- at
+warnHandler @ uni-h5.es.js:19975
+callWithErrorHandling @ vue.runtime.esm.js:1381
+warn$1 @ vue.runtime.esm.js:1207
+get @ vue.runtime.esm.js:4455
+(anonymous) @ list.uvue?t=1772068177429&import:1028
+renderFnWithContext @ vue.runtime.esm.js:2033
+renderSlot @ vue.runtime.esm.js:4254
+(anonymous) @ uni-h5.es.js:18666
+renderComponentRoot @ vue.runtime.esm.js:2092
+componentUpdateFn @ vue.runtime.esm.js:7365
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+setupRenderEffect @ vue.runtime.esm.js:7507
+mountComponent @ vue.runtime.esm.js:7274
+processComponent @ vue.runtime.esm.js:7228
+patch @ vue.runtime.esm.js:6694
+mountChildren @ vue.runtime.esm.js:6942
+processFragment @ vue.runtime.esm.js:7158
+patch @ vue.runtime.esm.js:6668
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7372
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+setupRenderEffect @ vue.runtime.esm.js:7507
+mountComponent @ vue.runtime.esm.js:7274
+processComponent @ vue.runtime.esm.js:7228
+patch @ vue.runtime.esm.js:6694
+mountChildren @ vue.runtime.esm.js:6942
+processFragment @ vue.runtime.esm.js:7158
+patch @ vue.runtime.esm.js:6668
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7372
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+setupRenderEffect @ vue.runtime.esm.js:7507
+mountComponent @ vue.runtime.esm.js:7274
+processComponent @ vue.runtime.esm.js:7228
+patch @ vue.runtime.esm.js:6694
+mountChildren @ vue.runtime.esm.js:6942
+processFragment @ vue.runtime.esm.js:7158
+patch @ vue.runtime.esm.js:6668
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7372
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+setupRenderEffect @ vue.runtime.esm.js:7507
+mountComponent @ vue.runtime.esm.js:7274
+processComponent @ vue.runtime.esm.js:7228
+patch @ vue.runtime.esm.js:6694
+mountChildren @ vue.runtime.esm.js:6942
+processFragment @ vue.runtime.esm.js:7158
+patch @ vue.runtime.esm.js:6668
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7372
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+setupRenderEffect @ vue.runtime.esm.js:7507
+mountComponent @ vue.runtime.esm.js:7274
+processComponent @ vue.runtime.esm.js:7228
+patch @ vue.runtime.esm.js:6694
+mountChildren @ vue.runtime.esm.js:6942
+processFragment @ vue.runtime.esm.js:7158
+patch @ vue.runtime.esm.js:6668
+mountChildren @ vue.runtime.esm.js:6942
+mountElement @ vue.runtime.esm.js:6849
+processElement @ vue.runtime.esm.js:6814
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7372
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+setupRenderEffect @ vue.runtime.esm.js:7507
+mountComponent @ vue.runtime.esm.js:7274
+processComponent @ vue.runtime.esm.js:7228
+patch @ vue.runtime.esm.js:6694
+patchBlockChildren @ vue.runtime.esm.js:7084
+processFragment @ vue.runtime.esm.js:7176
+patch @ vue.runtime.esm.js:6668
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+patchElement @ vue.runtime.esm.js:6989
+processElement @ vue.runtime.esm.js:6825
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7453
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+callWithErrorHandling @ vue.runtime.esm.js:1381
+flushJobs @ vue.runtime.esm.js:1585
+Promise.then
+queueFlush @ vue.runtime.esm.js:1494
+queueJob @ vue.runtime.esm.js:1488
+(anonymous) @ vue.runtime.esm.js:7491
+resetScheduling @ vue.runtime.esm.js:236
+triggerEffects @ vue.runtime.esm.js:280
+triggerRefValue @ vue.runtime.esm.js:1033
+set value @ vue.runtime.esm.js:1078
+handleAdd @ list.uvue:297
+callWithErrorHandling @ vue.runtime.esm.js:1381
+callWithAsyncErrorHandling @ vue.runtime.esm.js:1388
+invoker @ vue.runtime.esm.js:10253
+uni-h5.es.js:19975 [Vue warn]: Unhandled error during execution of native event handler
+ at
+at
+at
+at
+at
+at
+at
+at
+at
at
at
at
@@ -55,6 +317,296 @@ at
at
at
at
-AdminLayout.uvue:271 TypeError: Failed to fetch dynamically imported module: http://localhost:5173/pages/mall/admin/marketing/newcomer/index.uvue?import
-
-
+warnHandler @ uni-h5.es.js:19975
+callWithErrorHandling @ vue.runtime.esm.js:1381
+warn$1 @ vue.runtime.esm.js:1207
+logError @ vue.runtime.esm.js:1438
+errorHandler @ uni-h5.es.js:19600
+callWithErrorHandling @ vue.runtime.esm.js:1381
+handleError @ vue.runtime.esm.js:1421
+callWithErrorHandling @ vue.runtime.esm.js:1383
+callWithAsyncErrorHandling @ vue.runtime.esm.js:1388
+invoker @ vue.runtime.esm.js:10253
+vue.runtime.esm.js:1443 TypeError: _ctx.formatText is not a function
+ at _createVNode.onClick._cache.._cache. (list.uvue?t=1772068177429&import:980:85)
+ at callWithErrorHandling (vue.runtime.esm.js:1381:19)
+ at callWithAsyncErrorHandling (vue.runtime.esm.js:1388:17)
+ at UniTextElement.invoker (vue.runtime.esm.js:10253:5)
+logError @ vue.runtime.esm.js:1443
+errorHandler @ uni-h5.es.js:19600
+callWithErrorHandling @ vue.runtime.esm.js:1381
+handleError @ vue.runtime.esm.js:1421
+callWithErrorHandling @ vue.runtime.esm.js:1383
+callWithAsyncErrorHandling @ vue.runtime.esm.js:1388
+invoker @ vue.runtime.esm.js:10253
+uni-h5.es.js:19975 [Vue warn]: Unhandled error during execution of native event handler
+ at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+warnHandler @ uni-h5.es.js:19975
+callWithErrorHandling @ vue.runtime.esm.js:1381
+warn$1 @ vue.runtime.esm.js:1207
+logError @ vue.runtime.esm.js:1438
+errorHandler @ uni-h5.es.js:19600
+callWithErrorHandling @ vue.runtime.esm.js:1381
+handleError @ vue.runtime.esm.js:1421
+callWithErrorHandling @ vue.runtime.esm.js:1383
+callWithAsyncErrorHandling @ vue.runtime.esm.js:1388
+invoker @ vue.runtime.esm.js:10253
+vue.runtime.esm.js:1443 TypeError: _ctx.formatText is not a function
+ at _createVNode.onClick._cache.._cache. (list.uvue?t=1772068177429&import:990:85)
+ at callWithErrorHandling (vue.runtime.esm.js:1381:19)
+ at callWithAsyncErrorHandling (vue.runtime.esm.js:1388:17)
+ at UniTextElement.invoker (vue.runtime.esm.js:10253:5)
+logError @ vue.runtime.esm.js:1443
+errorHandler @ uni-h5.es.js:19600
+callWithErrorHandling @ vue.runtime.esm.js:1381
+handleError @ vue.runtime.esm.js:1421
+callWithErrorHandling @ vue.runtime.esm.js:1383
+callWithAsyncErrorHandling @ vue.runtime.esm.js:1388
+invoker @ vue.runtime.esm.js:10253
+uni-h5.es.js:19975 [Vue warn]: Unhandled error during execution of native event handler
+ at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+warnHandler @ uni-h5.es.js:19975
+callWithErrorHandling @ vue.runtime.esm.js:1381
+warn$1 @ vue.runtime.esm.js:1207
+logError @ vue.runtime.esm.js:1438
+errorHandler @ uni-h5.es.js:19600
+callWithErrorHandling @ vue.runtime.esm.js:1381
+handleError @ vue.runtime.esm.js:1421
+callWithErrorHandling @ vue.runtime.esm.js:1383
+callWithAsyncErrorHandling @ vue.runtime.esm.js:1388
+invoker @ vue.runtime.esm.js:10253
+vue.runtime.esm.js:1443 TypeError: _ctx.formatText is not a function
+ at _createVNode.onClick._cache.._cache. (list.uvue?t=1772068177429&import:1000:85)
+ at callWithErrorHandling (vue.runtime.esm.js:1381:19)
+ at callWithAsyncErrorHandling (vue.runtime.esm.js:1388:17)
+ at UniTextElement.invoker (vue.runtime.esm.js:10253:5)
+logError @ vue.runtime.esm.js:1443
+errorHandler @ uni-h5.es.js:19600
+callWithErrorHandling @ vue.runtime.esm.js:1381
+handleError @ vue.runtime.esm.js:1421
+callWithErrorHandling @ vue.runtime.esm.js:1383
+callWithAsyncErrorHandling @ vue.runtime.esm.js:1388
+invoker @ vue.runtime.esm.js:10253
+list.uvue?t=1772068177429&import:1010 [Vue warn]: Property "insertImage" was accessed during render but is not defined on instance.
+ at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+warnHandler @ uni-h5.es.js:19975
+callWithErrorHandling @ vue.runtime.esm.js:1381
+warn$1 @ vue.runtime.esm.js:1207
+get @ vue.runtime.esm.js:4455
+(anonymous) @ list.uvue?t=1772068177429&import:1010
+renderFnWithContext @ vue.runtime.esm.js:2033
+renderSlot @ vue.runtime.esm.js:4254
+(anonymous) @ uni-h5.es.js:18666
+renderComponentRoot @ vue.runtime.esm.js:2092
+componentUpdateFn @ vue.runtime.esm.js:7444
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+updateComponent @ vue.runtime.esm.js:7305
+processComponent @ vue.runtime.esm.js:7239
+patch @ vue.runtime.esm.js:6694
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+processFragment @ vue.runtime.esm.js:7202
+patch @ vue.runtime.esm.js:6668
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+patchElement @ vue.runtime.esm.js:6989
+processElement @ vue.runtime.esm.js:6825
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7453
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+updateComponent @ vue.runtime.esm.js:7305
+processComponent @ vue.runtime.esm.js:7239
+patch @ vue.runtime.esm.js:6694
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+processFragment @ vue.runtime.esm.js:7202
+patch @ vue.runtime.esm.js:6668
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+patchElement @ vue.runtime.esm.js:6989
+processElement @ vue.runtime.esm.js:6825
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7453
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+updateComponent @ vue.runtime.esm.js:7305
+processComponent @ vue.runtime.esm.js:7239
+patch @ vue.runtime.esm.js:6694
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+processFragment @ vue.runtime.esm.js:7202
+patch @ vue.runtime.esm.js:6668
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+patchElement @ vue.runtime.esm.js:6989
+processElement @ vue.runtime.esm.js:6825
+patch @ vue.runtime.esm.js:6682
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+patchElement @ vue.runtime.esm.js:6989
+processElement @ vue.runtime.esm.js:6825
+patch @ vue.runtime.esm.js:6682
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+patchElement @ vue.runtime.esm.js:6989
+processElement @ vue.runtime.esm.js:6825
+patch @ vue.runtime.esm.js:6682
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+patchElement @ vue.runtime.esm.js:6989
+processElement @ vue.runtime.esm.js:6825
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7453
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+updateComponent @ vue.runtime.esm.js:7305
+processComponent @ vue.runtime.esm.js:7239
+patch @ vue.runtime.esm.js:6694
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+processFragment @ vue.runtime.esm.js:7202
+patch @ vue.runtime.esm.js:6668
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+patchElement @ vue.runtime.esm.js:6989
+processElement @ vue.runtime.esm.js:6825
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7453
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+updateComponent @ vue.runtime.esm.js:7305
+processComponent @ vue.runtime.esm.js:7239
+patch @ vue.runtime.esm.js:6694
+patchBlockChildren @ vue.runtime.esm.js:7084
+processFragment @ vue.runtime.esm.js:7176
+patch @ vue.runtime.esm.js:6668
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+patchElement @ vue.runtime.esm.js:6989
+processElement @ vue.runtime.esm.js:6825
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7453
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+updateComponent @ vue.runtime.esm.js:7305
+processComponent @ vue.runtime.esm.js:7239
+patch @ vue.runtime.esm.js:6694
+patchBlockChildren @ vue.runtime.esm.js:7084
+processFragment @ vue.runtime.esm.js:7176
+patch @ vue.runtime.esm.js:6668
+patchKeyedChildren @ vue.runtime.esm.js:7650
+patchChildren @ vue.runtime.esm.js:7564
+patchElement @ vue.runtime.esm.js:6989
+processElement @ vue.runtime.esm.js:6825
+patch @ vue.runtime.esm.js:6682
+componentUpdateFn @ vue.runtime.esm.js:7453
+run @ vue.runtime.esm.js:153
+instance.update @ vue.runtime.esm.js:7497
+callWithErrorHandling @ vue.runtime.esm.js:1381
+flushJobs @ vue.runtime.esm.js:1585
+Promise.then
+queueFlush @ vue.runtime.esm.js:1494
+queueJob @ vue.runtime.esm.js:1488
+(anonymous) @ vue.runtime.esm.js:7491
+resetScheduling @ vue.runtime.esm.js:236
+triggerEffects @ vue.runtime.esm.js:280
+triggerRefValue @ vue.runtime.esm.js:1033
+set value @ vue.runtime.esm.js:1078
+closeDrawer @ list.uvue:314
+callWithErrorHandling @ vue.runtime.esm.js:1381
+callWithAsyncErrorHandling @ vue.runtime.esm.js:1388
+invoker @ vue.runtime.esm.js:10253
+list.uvue?t=1772068177429&import:1028 [Vue warn]: Property "onEditorReady" was accessed during render but is not defined on instance.
+ at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
+at
\ No newline at end of file