af-mobile-client-vue3 1.3.86 → 1.3.87
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/certs/127.0.0.1+2-key.pem +28 -0
- package/certs/127.0.0.1+2.pem +27 -0
- package/mock/modules/prose.mock.ts.timestamp-1758877157774.mjs +53 -0
- package/mock/modules/user.mock.ts.timestamp-1758877157774.mjs +97 -0
- package/package.json +115 -115
- package/src/api/user/index.ts +45 -45
- package/src/router/routes.ts +1 -1
- package/src/services/api/Login.ts +6 -6
- package/src/services/v3Api.ts +170 -170
- package/src/stores/modules/user.ts +362 -342
- package/src/styles/login.less +109 -109
- package/src/types/platform.ts +194 -194
- package/src/utils/platform-auth.ts +150 -150
- package/src/utils/queryFormDefaultRangePicker.ts +57 -57
- package/src/utils/wechat.ts +297 -297
- package/src/views/component/XCellListView/index.vue +21 -48
- package/src/views/component/XFormGroupView/index.vue +78 -82
- package/src/views/component/XFormView/index.vue +41 -42
- package/src/views/external/index.vue +158 -152
- package/src/views/user/register/index.vue +958 -956
- package/vite.config.ts +115 -115
|
@@ -1,27 +1,19 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import XCellList from '@af-mobile-client-vue3/components/data/XCellList/index.vue'
|
|
3
3
|
import NormalDataLayout from '@af-mobile-client-vue3/components/layout/NormalDataLayout/index.vue'
|
|
4
|
-
import { useUserStore } from '@af-mobile-client-vue3/stores/modules/user'
|
|
5
4
|
import { defineEmits, ref } from 'vue'
|
|
6
5
|
import { useRouter } from 'vue-router'
|
|
7
6
|
|
|
8
7
|
// 定义事件
|
|
9
8
|
const emit = defineEmits(['deleteRow'])
|
|
10
|
-
|
|
11
|
-
// 多选操作配置
|
|
12
|
-
const multiSelectActions = ref([
|
|
13
|
-
{ name: '批量审核', key: 'batchAudit', color: '#000000', icon: 'passed' },
|
|
14
|
-
])
|
|
15
|
-
|
|
16
|
-
const userInfo = useUserStore().getUserInfo()
|
|
17
9
|
// 访问路由
|
|
18
10
|
const router = useRouter()
|
|
19
11
|
// 获取默认值
|
|
20
|
-
const idKey = ref('o_id')
|
|
12
|
+
// const idKey = ref('o_id')
|
|
21
13
|
|
|
22
14
|
// 简易crud表单测试
|
|
23
|
-
const configName = ref('
|
|
24
|
-
const serviceName = ref('af-
|
|
15
|
+
const configName = ref('ceshiCRUD')
|
|
16
|
+
const serviceName = ref('af-safecheck')
|
|
25
17
|
|
|
26
18
|
// 资源权限测试
|
|
27
19
|
// const configName = ref('crud_sources_test')
|
|
@@ -54,16 +46,16 @@ const serviceName = ref('af-gaslink')
|
|
|
54
46
|
// }
|
|
55
47
|
|
|
56
48
|
// 跳转到表单——以表单组来渲染纯表单
|
|
57
|
-
function toDetail(item) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
49
|
+
// function toDetail(item) {
|
|
50
|
+
// router.push({
|
|
51
|
+
// name: 'XFormGroupView',
|
|
52
|
+
// query: {
|
|
53
|
+
// id: item[idKey.value],
|
|
54
|
+
// // id: item.rr_id,
|
|
55
|
+
// // o_id: item.o_id,
|
|
56
|
+
// },
|
|
57
|
+
// })
|
|
58
|
+
// }
|
|
67
59
|
|
|
68
60
|
// 新增功能
|
|
69
61
|
// function addOption(totalCount) {
|
|
@@ -92,39 +84,20 @@ function toDetail(item) {
|
|
|
92
84
|
// }
|
|
93
85
|
|
|
94
86
|
// 删除功能
|
|
95
|
-
function deleteRow(result) {
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
//
|
|
100
|
-
|
|
101
|
-
console.log('多选操作:', action, selectedItems, selectedItemsArray)
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// 选择变化处理
|
|
105
|
-
function handleSelectionChange(selectedItems: any[]) {
|
|
106
|
-
console.log('选择变化,当前选中:', selectedItems.length, '个项目')
|
|
107
|
-
// 可以在这里更新UI状态,比如显示选中数量等
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// 数据加载完成后处理 @after-load
|
|
111
|
-
function afterLoad(result) {
|
|
112
|
-
console.log('afterLoad:', result)
|
|
113
|
-
}
|
|
87
|
+
// function deleteRow(result) {
|
|
88
|
+
// emit('deleteRow', result.o_id)
|
|
89
|
+
// }
|
|
90
|
+
// const fixQueryForm = ref({
|
|
91
|
+
// f_operator_id: '487184754014158848',
|
|
92
|
+
// })
|
|
114
93
|
</script>
|
|
115
94
|
|
|
116
95
|
<template>
|
|
117
96
|
<NormalDataLayout id="XCellListView" title="工作计划">
|
|
118
97
|
<template #layout_content>
|
|
119
98
|
<XCellList
|
|
120
|
-
config-name="
|
|
121
|
-
service-name="
|
|
122
|
-
:enable-multi-select="true"
|
|
123
|
-
id-key="rr_id"
|
|
124
|
-
:multi-select-actions="multiSelectActions"
|
|
125
|
-
@to-detail="toDetail"
|
|
126
|
-
@multi-select-action="handleMultiSelectAction"
|
|
127
|
-
@selection-change="handleSelectionChange"
|
|
99
|
+
:config-name="configName"
|
|
100
|
+
:service-name="serviceName"
|
|
128
101
|
/>
|
|
129
102
|
</template>
|
|
130
103
|
</NormalDataLayout>
|
|
@@ -1,82 +1,78 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import XFormGroup from '@af-mobile-client-vue3/components/data/XFormGroup/index.vue'
|
|
3
|
-
import NormalDataLayout from '@af-mobile-client-vue3/components/layout/NormalDataLayout/index.vue'
|
|
4
|
-
import { showDialog } from 'vant'
|
|
5
|
-
import { ref } from 'vue'
|
|
6
|
-
import { useRoute } from 'vue-router'
|
|
7
|
-
|
|
8
|
-
//
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
// const configName = ref(
|
|
13
|
-
// const serviceName = ref(
|
|
14
|
-
|
|
15
|
-
//
|
|
16
|
-
// const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
// }
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// function initComponents() {
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
//
|
|
46
|
-
//
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
//
|
|
50
|
-
//
|
|
51
|
-
//
|
|
52
|
-
//
|
|
53
|
-
//
|
|
54
|
-
|
|
55
|
-
//
|
|
56
|
-
//
|
|
57
|
-
// }
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
<
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
</
|
|
79
|
-
|
|
80
|
-
<style scoped lang="less">
|
|
81
|
-
|
|
82
|
-
</style>
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import XFormGroup from '@af-mobile-client-vue3/components/data/XFormGroup/index.vue'
|
|
3
|
+
import NormalDataLayout from '@af-mobile-client-vue3/components/layout/NormalDataLayout/index.vue'
|
|
4
|
+
import { showDialog } from 'vant'
|
|
5
|
+
import { ref } from 'vue'
|
|
6
|
+
import { useRoute } from 'vue-router'
|
|
7
|
+
|
|
8
|
+
// 纯表单
|
|
9
|
+
const configName = ref('form_check_test')
|
|
10
|
+
const serviceName = ref('af-system')
|
|
11
|
+
|
|
12
|
+
// const configName = ref("计划下发Form")
|
|
13
|
+
// const serviceName = ref("af-linepatrol")
|
|
14
|
+
|
|
15
|
+
// 表单组
|
|
16
|
+
// const configName = ref('lngChargeAuditMobileFormGroup')
|
|
17
|
+
// const serviceName = ref('af-gaslink')
|
|
18
|
+
|
|
19
|
+
const formData = ref({})
|
|
20
|
+
const formGroup = ref(null)
|
|
21
|
+
const route = useRoute()
|
|
22
|
+
const isInit = ref(false)
|
|
23
|
+
function submit(_result) {
|
|
24
|
+
showDialog({ message: '提交成功' }).then(() => {
|
|
25
|
+
history.back()
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// 表单组——数据
|
|
30
|
+
// function initComponents () {
|
|
31
|
+
// runLogic('getlngChargeAuditMobileFormGroupData', {id: 29}, 'af-gaslink').then((res) => {
|
|
32
|
+
// formData.value = {...res}
|
|
33
|
+
// })
|
|
34
|
+
// }
|
|
35
|
+
|
|
36
|
+
// 纯表单——数据
|
|
37
|
+
// function initComponents() {
|
|
38
|
+
// formData.value = { plan_name: 'af-llllll', plan_point: '1号点位', plan_single: '1号点位', plan_range: '2024-12-12' }
|
|
39
|
+
// }
|
|
40
|
+
|
|
41
|
+
// function initComponents() {
|
|
42
|
+
// runLogic('getlngChargeAuditMobileFormGroupData', { id: route.query?.id, o_id: route.query?.o_id }, 'af-gaslink').then((res) => {
|
|
43
|
+
// console.log('res------', res)
|
|
44
|
+
// formData.value = { ...res }
|
|
45
|
+
// formGroup.value.init({
|
|
46
|
+
// configName: configName.value,
|
|
47
|
+
// serviceName: serviceName.value,
|
|
48
|
+
// groupFormData: { ...res },
|
|
49
|
+
// mode: "新增"
|
|
50
|
+
// })
|
|
51
|
+
// isInit.value = true
|
|
52
|
+
// })
|
|
53
|
+
// }
|
|
54
|
+
|
|
55
|
+
// onBeforeMount(() => {
|
|
56
|
+
// initComponents()
|
|
57
|
+
// })
|
|
58
|
+
</script>
|
|
59
|
+
|
|
60
|
+
<template>
|
|
61
|
+
<NormalDataLayout id="XFormGroupView" title="纯表单">
|
|
62
|
+
<template #layout_content>
|
|
63
|
+
<!-- v-if="isInit" -->
|
|
64
|
+
<XFormGroup
|
|
65
|
+
ref="formGroup"
|
|
66
|
+
:config-name="configName"
|
|
67
|
+
:service-name="serviceName"
|
|
68
|
+
:group-form-data="formData"
|
|
69
|
+
mode="新增"
|
|
70
|
+
@submit="submit"
|
|
71
|
+
/>
|
|
72
|
+
</template>
|
|
73
|
+
</NormalDataLayout>
|
|
74
|
+
</template>
|
|
75
|
+
|
|
76
|
+
<style scoped lang="less">
|
|
77
|
+
|
|
78
|
+
</style>
|
|
@@ -1,42 +1,41 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import XForm from '@af-mobile-client-vue3/components/data/XForm/index.vue'
|
|
3
|
-
import NormalDataLayout from '@af-mobile-client-vue3/components/layout/NormalDataLayout/index.vue'
|
|
4
|
-
import { ref } from 'vue'
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
:
|
|
31
|
-
service-name="
|
|
32
|
-
:
|
|
33
|
-
@on-submit="onSubmit"
|
|
34
|
-
/>
|
|
35
|
-
</template>
|
|
36
|
-
</NormalDataLayout>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
</style>
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import XForm from '@af-mobile-client-vue3/components/data/XForm/index.vue'
|
|
3
|
+
import NormalDataLayout from '@af-mobile-client-vue3/components/layout/NormalDataLayout/index.vue'
|
|
4
|
+
import { ref } from 'vue'
|
|
5
|
+
|
|
6
|
+
const configName = ref('ceshiForm')
|
|
7
|
+
const serviceName = ref('af-system')
|
|
8
|
+
|
|
9
|
+
const formGroupAddConstruction = ref(null)
|
|
10
|
+
const formData = ref({
|
|
11
|
+
'YYYY': '2025-09-08 16:03:22',
|
|
12
|
+
'YYYY-MM': '2025-09-08 16:03:22',
|
|
13
|
+
'YYYY-MM-DD': '2025-09-08 16:03:22',
|
|
14
|
+
'YYYY-MM-DDHH': '2025-09-08 16:03:22',
|
|
15
|
+
'YYYY-MM-DDHHMM': '2025-09-08 16:03:22',
|
|
16
|
+
'YYYY-MM-DDHHMMSS': '2025-09-08 16:03:22',
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
function onSubmit(data: any) {
|
|
20
|
+
console.warn('提交表单', data)
|
|
21
|
+
}
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<template>
|
|
25
|
+
<NormalDataLayout id="XFormGroupView" title="纯表单">
|
|
26
|
+
<template #layout_content>
|
|
27
|
+
<XForm
|
|
28
|
+
ref="formGroupAddConstruction"
|
|
29
|
+
mode="修改"
|
|
30
|
+
:config-name="configName"
|
|
31
|
+
:service-name="serviceName"
|
|
32
|
+
:form-data="formData"
|
|
33
|
+
@on-submit="onSubmit"
|
|
34
|
+
/>
|
|
35
|
+
</template>
|
|
36
|
+
</NormalDataLayout>
|
|
37
|
+
</template>
|
|
38
|
+
|
|
39
|
+
<style scoped lang="less">
|
|
40
|
+
|
|
41
|
+
</style>
|
|
@@ -1,152 +1,158 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { useUserStore } from '@af-mobile-client-vue3/stores/modules/user'
|
|
3
|
-
import { getPlatformConfig, getPlatformRoutePrefix } from '@af-mobile-client-vue3/types/platform'
|
|
4
|
-
import {
|
|
5
|
-
Icon as VanIcon,
|
|
6
|
-
} from 'vant'
|
|
7
|
-
import { computed } from 'vue'
|
|
8
|
-
import { useRouter } from 'vue-router'
|
|
9
|
-
|
|
10
|
-
const router = useRouter()
|
|
11
|
-
const userStore = useUserStore()
|
|
12
|
-
|
|
13
|
-
const userInfo = computed(() => userStore.getUserInfo())
|
|
14
|
-
const userName = computed(() => userInfo.value?.name || '外部用户')
|
|
15
|
-
const platformType = computed(() => userStore.getPlatformType())
|
|
16
|
-
const platformConfig = computed(() => getPlatformConfig(platformType.value))
|
|
17
|
-
const userDescription = computed(() =>
|
|
18
|
-
platformConfig.value?.description || '外部系统访问用户',
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
function goToProfile() {
|
|
22
|
-
const routePrefix = getPlatformRoutePrefix(platformType.value)
|
|
23
|
-
router.push(`${routePrefix}/my`)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
</
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
<
|
|
52
|
-
{{
|
|
53
|
-
</
|
|
54
|
-
<p
|
|
55
|
-
{{
|
|
56
|
-
</p>
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
</
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
:
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
font-
|
|
137
|
-
color: #
|
|
138
|
-
margin: 0;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
.
|
|
142
|
-
font-size:
|
|
143
|
-
color: #
|
|
144
|
-
margin:
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { useUserStore } from '@af-mobile-client-vue3/stores/modules/user'
|
|
3
|
+
import { getPlatformConfig, getPlatformRoutePrefix } from '@af-mobile-client-vue3/types/platform'
|
|
4
|
+
import {
|
|
5
|
+
Icon as VanIcon,
|
|
6
|
+
} from 'vant'
|
|
7
|
+
import { computed } from 'vue'
|
|
8
|
+
import { useRouter } from 'vue-router'
|
|
9
|
+
|
|
10
|
+
const router = useRouter()
|
|
11
|
+
const userStore = useUserStore()
|
|
12
|
+
|
|
13
|
+
const userInfo = computed(() => userStore.getUserInfo())
|
|
14
|
+
const userName = computed(() => userInfo.value?.name || '外部用户')
|
|
15
|
+
const platformType = computed(() => userStore.getPlatformType())
|
|
16
|
+
const platformConfig = computed(() => getPlatformConfig(platformType.value))
|
|
17
|
+
const userDescription = computed(() =>
|
|
18
|
+
platformConfig.value?.description || '外部系统访问用户',
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
function goToProfile() {
|
|
22
|
+
const routePrefix = getPlatformRoutePrefix(platformType.value)
|
|
23
|
+
router.push(`${routePrefix}/my`)
|
|
24
|
+
}
|
|
25
|
+
async function clean () {
|
|
26
|
+
await useUserStore().registerClean()
|
|
27
|
+
}
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<template>
|
|
31
|
+
<main class="external_main">
|
|
32
|
+
<!-- 顶部导航栏 -->
|
|
33
|
+
<nav class="header_nav">
|
|
34
|
+
<div class="header_content">
|
|
35
|
+
<h1 class="main_title">
|
|
36
|
+
智慧燃气外部系统
|
|
37
|
+
</h1>
|
|
38
|
+
<div class="user_section" @click="goToProfile">
|
|
39
|
+
<VanIcon name="user-o" class="user-icon" />
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
</nav>
|
|
43
|
+
|
|
44
|
+
<!-- 主要内容区域 -->
|
|
45
|
+
<div class="content">
|
|
46
|
+
<!-- 用户信息卡片 -->
|
|
47
|
+
<div class="user-card">
|
|
48
|
+
<div class="user-content">
|
|
49
|
+
<div class="user-info">
|
|
50
|
+
<VanIcon name="user-circle-o" size="64" color="#3b82f6" />
|
|
51
|
+
<h2 class="user-name">
|
|
52
|
+
{{ userName }}
|
|
53
|
+
</h2>
|
|
54
|
+
<p class="user-desc">
|
|
55
|
+
{{ userDescription }}
|
|
56
|
+
</p>
|
|
57
|
+
<p v-if="platformConfig" class="platform-name">
|
|
58
|
+
{{ platformConfig.name }}
|
|
59
|
+
</p>
|
|
60
|
+
<p class="platform-name" @click="clean">
|
|
61
|
+
清理缓存
|
|
62
|
+
</p>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
</main>
|
|
68
|
+
</template>
|
|
69
|
+
|
|
70
|
+
<style scoped lang="less">
|
|
71
|
+
.external_main {
|
|
72
|
+
min-height: 100vh;
|
|
73
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
74
|
+
|
|
75
|
+
.header_nav {
|
|
76
|
+
background: rgba(255, 255, 255, 0.95);
|
|
77
|
+
backdrop-filter: blur(10px);
|
|
78
|
+
padding: 0 16px;
|
|
79
|
+
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
|
|
80
|
+
|
|
81
|
+
.header_content {
|
|
82
|
+
display: flex;
|
|
83
|
+
justify-content: space-between;
|
|
84
|
+
align-items: center;
|
|
85
|
+
height: 56px;
|
|
86
|
+
|
|
87
|
+
.main_title {
|
|
88
|
+
font-size: 1.125rem;
|
|
89
|
+
font-weight: 600;
|
|
90
|
+
color: #333;
|
|
91
|
+
margin: 0;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.user_section {
|
|
95
|
+
padding: 8px;
|
|
96
|
+
cursor: pointer;
|
|
97
|
+
border-radius: 50%;
|
|
98
|
+
background: rgba(59, 130, 246, 0.1);
|
|
99
|
+
transition: all 0.3s ease;
|
|
100
|
+
|
|
101
|
+
&:active {
|
|
102
|
+
background: rgba(59, 130, 246, 0.2);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.user-icon {
|
|
106
|
+
font-size: 20px;
|
|
107
|
+
color: #3b82f6;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.content {
|
|
114
|
+
padding: 24px 16px;
|
|
115
|
+
display: flex;
|
|
116
|
+
justify-content: center;
|
|
117
|
+
|
|
118
|
+
.user-card {
|
|
119
|
+
width: 100%;
|
|
120
|
+
max-width: 400px;
|
|
121
|
+
border-radius: 12px;
|
|
122
|
+
overflow: hidden;
|
|
123
|
+
background: rgba(255, 255, 255, 0.95);
|
|
124
|
+
backdrop-filter: blur(10px);
|
|
125
|
+
|
|
126
|
+
:deep(.van-card__content) {
|
|
127
|
+
padding: 32px 24px;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.user-content {
|
|
131
|
+
.user-info {
|
|
132
|
+
text-align: center;
|
|
133
|
+
|
|
134
|
+
.user-name {
|
|
135
|
+
font-size: 24px;
|
|
136
|
+
font-weight: 600;
|
|
137
|
+
color: #333;
|
|
138
|
+
margin: 16px 0 8px 0;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.user-desc {
|
|
142
|
+
font-size: 14px;
|
|
143
|
+
color: #666;
|
|
144
|
+
margin: 0;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.platform-name {
|
|
148
|
+
font-size: 12px;
|
|
149
|
+
color: #3b82f6;
|
|
150
|
+
margin: 4px 0 0 0;
|
|
151
|
+
font-weight: 500;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
</style>
|