diff --git a/src/components/Common/TableDialog.vue b/src/components/Common/TableDialog.vue
new file mode 100644
index 0000000..4e3a72c
--- /dev/null
+++ b/src/components/Common/TableDialog.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue
index 62ca76a..e85345c 100644
--- a/src/components/Pagination/index.vue
+++ b/src/components/Pagination/index.vue
@@ -74,7 +74,8 @@ const pageSize = computed({
});
function handleSizeChange(val: number) {
- emit('pagination', { page: currentPage, limit: val });
+ emit('update:page', 1);
+ emit('pagination', { page: 1, limit: val });
if (props.autoScroll) {
scrollTo(0, 800);
}
diff --git a/src/components/Store/StoreAccountDialog.vue b/src/components/Store/StoreAccountDialog.vue
new file mode 100644
index 0000000..0945b5d
--- /dev/null
+++ b/src/components/Store/StoreAccountDialog.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+
diff --git a/src/components/User/UserArchiveDialog.vue b/src/components/User/UserArchiveDialog.vue
new file mode 100644
index 0000000..c0dc898
--- /dev/null
+++ b/src/components/User/UserArchiveDialog.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+ --
+
+
+ --
+
+
+
+
+
+ 详情
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/User/UserAuthStoreDialog.vue b/src/components/User/UserAuthStoreDialog.vue
new file mode 100644
index 0000000..c31ffce
--- /dev/null
+++ b/src/components/User/UserAuthStoreDialog.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+ {{ statusData[row.status] }}
+
+
+
+
+
+
+
diff --git a/src/layout/components/TagsView/ScrollPane.vue b/src/layout/components/TagsView/ScrollPane.vue
index 98e5ce8..1de36c0 100644
--- a/src/layout/components/TagsView/ScrollPane.vue
+++ b/src/layout/components/TagsView/ScrollPane.vue
@@ -38,19 +38,23 @@ onMounted(() => {
// scrollWrapper.value.addEventListener('scroll', emitScroll, true);
});
onBeforeUnmount(() => {
- scrollWrapper.value.removeEventListener('scroll', emitScroll);
+ scrollWrapper.value?.removeEventListener('scroll', emitScroll);
});
function handleScroll(e: WheelEvent) {
+ const wrap = scrollWrapper.value;
+ if (!wrap) return;
const eventDelta = (e as any).wheelDelta || -e.deltaY * 40;
- scrollWrapper.value.scrollLeft =
- scrollWrapper.value.scrollLeft + eventDelta / 4;
+ wrap.scrollLeft = wrap.scrollLeft + eventDelta / 4;
}
function moveToTarget(currentTag: TagView) {
- const $container = proxy.$refs.scrollContainer.$el;
- const $containerWidth = $container.offsetWidth;
const $scrollWrapper = scrollWrapper.value;
+ if (!$scrollWrapper) return;
+
+ const $container = proxy.$refs.scrollContainer?.$el;
+ if (!$container) return;
+ const $containerWidth = $container.offsetWidth;
let firstTag = null;
let lastTag = null;
diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue
index e7efed8..39053cb 100644
--- a/src/layout/components/TagsView/index.vue
+++ b/src/layout/components/TagsView/index.vue
@@ -160,7 +160,7 @@ function moveToCurrentTag() {
nextTick(() => {
for (const r of visitedViews.value) {
if (r.path === route.path) {
- scrollPaneRef.value.moveToTarget(r);
+ scrollPaneRef.value?.moveToTarget(r);
// when query is different then update
if (r.fullPath !== route.fullPath) {
tagsView.updateVisitedView(route);
diff --git a/src/styles/element-plus.scss b/src/styles/element-plus.scss
index ac96595..dbe38db 100644
--- a/src/styles/element-plus.scss
+++ b/src/styles/element-plus.scss
@@ -50,39 +50,29 @@
}
-// fix: 内核较旧的浏览器不支持:not(selector list)
-.el-button:not(.is-text),
-.el-button:not(.is-link),
-.el-button:not(.el-button--text) {
+// 仅对「实心按钮」补边框/背景;text、link 需同时排除(逗号分隔的 :not 会误伤 link)
+.el-button:not(.is-text):not(.is-link):not(.el-button--text) {
background-color: var(--el-button-bg-color);
border: var(--el-border);
border-color: var(--el-button-border-color)
}
-.el-button:not(.is-text):focus,
-.el-button:not(.is-link):focus,
-.el-button:not(.el-button--text):focus,
-.el-button:not(.is-text):hover,
-.el-button:not(.is-link):hover,
-.el-button:not(.el-button--text):hover {
+.el-button:not(.is-text):not(.is-link):not(.el-button--text):focus,
+.el-button:not(.is-text):not(.is-link):not(.el-button--text):hover {
color: var(--el-button-hover-text-color);
border-color: var(--el-button-hover-border-color);
background-color: var(--el-button-hover-bg-color);
outline: 0
}
-.el-button:not(.is-text):active,
-.el-button:not(.is-link):active,
-.el-button:not(.el-button--text):active {
+.el-button:not(.is-text):not(.is-link):not(.el-button--text):active {
color: var(--el-button-active-text-color);
border-color: var(--el-button-active-border-color);
background-color: var(--el-button-active-bg-color);
outline: 0
}
-.el-button:not(.is-text):focus-visible,
-.el-button:not(.is-link):focus-visible,
-.el-button:not(.el-button--text):focus-visible {
+.el-button:not(.is-text):not(.is-link):not(.el-button--text):focus-visible {
border-color: transparent;
outline: 2px solid var(--el-button-border-color);
outline-offset: 1px
diff --git a/src/views/store/index.vue b/src/views/store/index.vue
deleted file mode 100644
index f3c676d..0000000
--- a/src/views/store/index.vue
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 搜索
-
-
- 重置
-
-
-
-
-
-
-
-
-
-
-
-
- --
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- --
-
-
-
-
-
- 详情
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/store/storeAccountList.vue b/src/views/store/storeAccountList.vue
index 7ed745b..3aebbcc 100644
--- a/src/views/store/storeAccountList.vue
+++ b/src/views/store/storeAccountList.vue
@@ -4,11 +4,11 @@
+ @keyup.enter="loadList" />
- 搜索
- 添加
+ 搜索
+ 添加
重置
@@ -23,81 +23,76 @@
+ class="avatar-thumb" preview-teleported hide-on-click-modal>
+
+ --
+
+
--
-
+
- 修改
- 删除
+
+ 修改
+ 删除
+ 授权列表
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 取消
- 确定
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+ 搜索
+ 重置
-
- 取消
- 确定
-
+
+
+
+
+
+
+
+ --
+
+
+ --
+
+
+
+
+
+
+
+
\ No newline at end of file
+
+.op-links {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 8px;
+}
+
+.image-slot {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 50px;
+ height: 50px;
+ font-size: 12px;
+ color: var(--el-text-color-placeholder);
+ background: var(--el-fill-color-light);
+}
+
+
+
diff --git a/src/views/user/index.vue b/src/views/user/index.vue
index b57c5ca..ed236dc 100644
--- a/src/views/user/index.vue
+++ b/src/views/user/index.vue
@@ -4,22 +4,20 @@
+ @keyup.enter="loadList" />
-
- 搜索
-
-
- 重置
-
+ 搜索
+ 重置
-
-
-
+
+
+ {{ row.username || row.nickname }}
+
+
-
-
+
+
+ {{ row.birthday || row.age || '--' }}
+
+
-
- {{ statusData[row.status] }}
-
+ {{ statusData[row.status] }}
-
+
- 用户档案
- 授权门店列表
+
+ 档案
+ 授权列表
+
-
+
-
-
-
-
-
- --
-
-
-
-
-
- 详情
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
- {{ authStatusData[row.status] }}
-
-
-
-
-
+
diff --git a/src/views/user/userAnalysis.vue b/src/views/user/userAnalysis.vue
new file mode 100644
index 0000000..662bf92
--- /dev/null
+++ b/src/views/user/userAnalysis.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ statusData[row.state] }}
+
+
+
+
+
+
+ 详情
+ OK
+ 问题
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/user/userDetection.vue b/src/views/user/userDetection.vue
index 7104386..702cfe4 100644
--- a/src/views/user/userDetection.vue
+++ b/src/views/user/userDetection.vue
@@ -4,258 +4,96 @@
-
-
-
-
-
-
+ @keyup.enter="loadList" />
-
- 搜索
-
-
- 重置
-
+ 搜索
+ 重置
-
+
+
+ {{ row.username || row.nickname }}
+
+
-
-
- {{ statusData[row.state] }}
-
+ {{ statusData[row.state] }}
-
-
- 详情
- 操作
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
- {{ authStatusData[row.status] }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 取消
- 确定
-
-
diff --git a/src/views/user/userQuestion.vue b/src/views/user/userQuestion.vue
new file mode 100644
index 0000000..793a885
--- /dev/null
+++ b/src/views/user/userQuestion.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ statusData[row.state] }}
+
+
+
+
+
+
+ OK
+ 退款
+
+
+
+
+
+
+
+
+
+
+
+
+