vue3-admin-gpt 1.0.0
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/.env.development +14 -0
- package/.env.production +14 -0
- package/LICENSE +21 -0
- package/README.en.md +106 -0
- package/README.md +104 -0
- package/build-zip.cjs +53 -0
- package/cli.js +110 -0
- package/jsconfig.json +9 -0
- package/package.json +92 -0
- package/public/index.html +20 -0
- package/public/robots.txt +2 -0
- package/rspack.config.js +282 -0
- package/rspack.js +162 -0
- package/src/App.vue +9 -0
- package/src/api/icon.js +9 -0
- package/src/api/router.js +9 -0
- package/src/api/table.js +25 -0
- package/src/api/tree.js +9 -0
- package/src/api/user.js +34 -0
- package/src/assets/error_images/401.png +0 -0
- package/src/assets/error_images/404.png +0 -0
- package/src/assets/error_images/cloud.png +0 -0
- package/src/assets/login_images/background.jpg +0 -0
- package/src/assets/logo.png +0 -0
- package/src/assets/qr_logo/lqr_logo.png +0 -0
- package/src/assets/vuejs-fill.svg +4 -0
- package/src/components/VabPageHeader/index.vue +133 -0
- package/src/config/index.js +7 -0
- package/src/config/net.config.js +20 -0
- package/src/config/permission.js +136 -0
- package/src/config/setting.config.js +62 -0
- package/src/config/settings.js +6 -0
- package/src/config/theme.config.js +14 -0
- package/src/layouts/EmptyLayout.vue +3 -0
- package/src/layouts/components/VabAppMain/index.vue +109 -0
- package/src/layouts/components/VabAvatar/index.vue +255 -0
- package/src/layouts/components/VabBreadcrumb/index.vue +61 -0
- package/src/layouts/components/VabFullScreen/index.vue +61 -0
- package/src/layouts/components/VabLogo/index.vue +94 -0
- package/src/layouts/components/VabNav/index.vue +176 -0
- package/src/layouts/components/VabSide/components/VabMenuItem.vue +80 -0
- package/src/layouts/components/VabSide/components/VabSideItem.vue +100 -0
- package/src/layouts/components/VabSide/components/VabSubmenu.vue +56 -0
- package/src/layouts/components/VabSide/index.vue +123 -0
- package/src/layouts/components/VabTabs/index.vue +500 -0
- package/src/layouts/components/VabTheme/index.vue +603 -0
- package/src/layouts/components/VabTop/index.vue +286 -0
- package/src/layouts/export.js +29 -0
- package/src/layouts/index.vue +339 -0
- package/src/main.js +40 -0
- package/src/plugins/echarts.js +4 -0
- package/src/plugins/index.js +44 -0
- package/src/plugins/support.js +16 -0
- package/src/router/index.js +400 -0
- package/src/store/index.js +26 -0
- package/src/store/modules/errorLog.js +27 -0
- package/src/store/modules/routes.js +60 -0
- package/src/store/modules/settings.js +73 -0
- package/src/store/modules/table.js +22 -0
- package/src/store/modules/tabsBar.js +109 -0
- package/src/store/modules/user.js +131 -0
- package/src/styles/element-variables.scss +13 -0
- package/src/styles/loading.scss +345 -0
- package/src/styles/nav-icons.scss +52 -0
- package/src/styles/normalize.scss +353 -0
- package/src/styles/spinner/dots.css +68 -0
- package/src/styles/spinner/gauge.css +104 -0
- package/src/styles/spinner/inner-circles.css +51 -0
- package/src/styles/spinner/plus.css +341 -0
- package/src/styles/themes/default.scss +1 -0
- package/src/styles/transition.scss +18 -0
- package/src/styles/vab.scss +476 -0
- package/src/styles/variables.scss +69 -0
- package/src/utils/accessToken.js +56 -0
- package/src/utils/eventBus.js +8 -0
- package/src/utils/handleRoutes.js +100 -0
- package/src/utils/index.js +231 -0
- package/src/utils/message.js +67 -0
- package/src/utils/pageTitle.js +11 -0
- package/src/utils/password.js +43 -0
- package/src/utils/permission.js +19 -0
- package/src/utils/request.js +187 -0
- package/src/utils/static.js +81 -0
- package/src/utils/vab.js +218 -0
- package/src/utils/validate.js +48 -0
- package/src/views/401.vue +302 -0
- package/src/views/404.vue +302 -0
- package/src/views/demo/index.vue +591 -0
- package/src/views/index/index.vue +1489 -0
- package/src/views/login/index.vue +456 -0
- package/src/views/register/index.vue +524 -0
- package/src/views/vab/calendar.vue +488 -0
- package/src/views/vab/campaign.vue +1006 -0
- package/src/views/vab/chart.vue +189 -0
- package/src/views/vab/customer.vue +666 -0
- package/src/views/vab/editor.vue +84 -0
- package/src/views/vab/form.vue +151 -0
- package/src/views/vab/help.vue +390 -0
- package/src/views/vab/icon.vue +113 -0
- package/src/views/vab/knowledge.vue +820 -0
- package/src/views/vab/nested/menu1/menu2/menu3.vue +29 -0
- package/src/views/vab/nested/menu1/menu2.vue +33 -0
- package/src/views/vab/nested/menu1.vue +33 -0
- package/src/views/vab/nested.vue +97 -0
- package/src/views/vab/notification.vue +416 -0
- package/src/views/vab/order.vue +507 -0
- package/src/views/vab/permissions.vue +214 -0
- package/src/views/vab/product.vue +724 -0
- package/src/views/vab/project.vue +559 -0
- package/src/views/vab/settings.vue +319 -0
- package/src/views/vab/statistics.vue +431 -0
- package/src/views/vab/table.vue +110 -0
- package/src/views/vab/task.vue +613 -0
- package/src/views/vab/team.vue +662 -0
- package/src/views/vab/tree.vue +44 -0
- package/src/views/vab/upload.vue +180 -0
- package/src/views/vab/vue3Demo/index.vue +103 -0
- package/src/views/vab/workflow.vue +863 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="editor-container">
|
|
3
|
+
<el-card shadow="never">
|
|
4
|
+
<template #header>
|
|
5
|
+
<div class="card-header">
|
|
6
|
+
<span>富文本编辑器</span>
|
|
7
|
+
</div>
|
|
8
|
+
</template>
|
|
9
|
+
|
|
10
|
+
<div class="editor-wrapper">
|
|
11
|
+
<el-input
|
|
12
|
+
v-model="content"
|
|
13
|
+
type="textarea"
|
|
14
|
+
:rows="10"
|
|
15
|
+
placeholder="请输入内容..."
|
|
16
|
+
></el-input>
|
|
17
|
+
|
|
18
|
+
<div class="editor-toolbar">
|
|
19
|
+
<el-button type="primary" @click="saveContent">保存</el-button>
|
|
20
|
+
<el-button @click="clearContent">清空</el-button>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div class="content-preview">
|
|
24
|
+
<h3>内容预览:</h3>
|
|
25
|
+
<div class="preview-content" v-html="content"></div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
</el-card>
|
|
29
|
+
</div>
|
|
30
|
+
</template>
|
|
31
|
+
|
|
32
|
+
<script>
|
|
33
|
+
export default {
|
|
34
|
+
name: "Editor",
|
|
35
|
+
data() {
|
|
36
|
+
return {
|
|
37
|
+
content: "<h1>欢迎使用富文本编辑器</h1><p>这是一个简单的富文本编辑器示例。</p><ul><li>您可以在这里编辑文本</li><li>支持HTML格式</li><li>可以预览编辑效果</li></ul>",
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
methods: {
|
|
41
|
+
saveContent() {
|
|
42
|
+
this.$message.success("内容已保存");
|
|
43
|
+
console.log("保存的内容:", this.content);
|
|
44
|
+
},
|
|
45
|
+
clearContent() {
|
|
46
|
+
this.content = "";
|
|
47
|
+
this.$message.info("内容已清空");
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<style lang="scss" scoped>
|
|
54
|
+
.editor-container {
|
|
55
|
+
padding: 20px;
|
|
56
|
+
|
|
57
|
+
.card-header {
|
|
58
|
+
font-weight: bold;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.editor-wrapper {
|
|
62
|
+
.editor-toolbar {
|
|
63
|
+
margin: 20px 0;
|
|
64
|
+
text-align: center;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.content-preview {
|
|
68
|
+
margin-top: 30px;
|
|
69
|
+
padding: 20px;
|
|
70
|
+
border: 1px solid #ebeef5;
|
|
71
|
+
border-radius: 4px;
|
|
72
|
+
background-color: #f9f9f9;
|
|
73
|
+
|
|
74
|
+
.preview-content {
|
|
75
|
+
min-height: 200px;
|
|
76
|
+
margin-top: 10px;
|
|
77
|
+
padding: 10px;
|
|
78
|
+
background-color: white;
|
|
79
|
+
border: 1px solid #ebeef5;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
</style>
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="form-container">
|
|
3
|
+
<el-card shadow="never">
|
|
4
|
+
<el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
|
|
5
|
+
<el-form-item label="活动名称" prop="name">
|
|
6
|
+
<el-input v-model="form.name" />
|
|
7
|
+
</el-form-item>
|
|
8
|
+
<el-form-item label="活动区域" prop="region">
|
|
9
|
+
<el-select v-model="form.region" placeholder="请选择活动区域">
|
|
10
|
+
<el-option label="区域一" value="shanghai" />
|
|
11
|
+
<el-option label="区域二" value="beijing" />
|
|
12
|
+
</el-select>
|
|
13
|
+
</el-form-item>
|
|
14
|
+
<el-form-item label="活动时间" required>
|
|
15
|
+
<el-col :span="11">
|
|
16
|
+
<el-form-item prop="date1">
|
|
17
|
+
<el-date-picker
|
|
18
|
+
v-model="form.date1"
|
|
19
|
+
placeholder="选择日期"
|
|
20
|
+
style="width: 100%"
|
|
21
|
+
type="date"
|
|
22
|
+
/>
|
|
23
|
+
</el-form-item>
|
|
24
|
+
</el-col>
|
|
25
|
+
<el-col :span="2" class="line">-</el-col>
|
|
26
|
+
<el-col :span="11">
|
|
27
|
+
<el-form-item prop="date2">
|
|
28
|
+
<el-time-picker
|
|
29
|
+
v-model="form.date2"
|
|
30
|
+
placeholder="选择时间"
|
|
31
|
+
style="width: 100%"
|
|
32
|
+
/>
|
|
33
|
+
</el-form-item>
|
|
34
|
+
</el-col>
|
|
35
|
+
</el-form-item>
|
|
36
|
+
<el-form-item label="即时配送" prop="delivery">
|
|
37
|
+
<el-switch v-model="form.delivery" />
|
|
38
|
+
</el-form-item>
|
|
39
|
+
<el-form-item label="活动性质" prop="type">
|
|
40
|
+
<el-checkbox-group v-model="form.type">
|
|
41
|
+
<el-checkbox label="美食/餐厅线上活动" name="type" />
|
|
42
|
+
<el-checkbox label="地推活动" name="type" />
|
|
43
|
+
<el-checkbox label="线下主题活动" name="type" />
|
|
44
|
+
<el-checkbox label="单纯品牌曝光" name="type" />
|
|
45
|
+
</el-checkbox-group>
|
|
46
|
+
</el-form-item>
|
|
47
|
+
<el-form-item label="特殊资源" prop="resource">
|
|
48
|
+
<el-radio-group v-model="form.resource">
|
|
49
|
+
<el-radio label="线上品牌商赞助" />
|
|
50
|
+
<el-radio label="线下场地免费" />
|
|
51
|
+
</el-radio-group>
|
|
52
|
+
</el-form-item>
|
|
53
|
+
<el-form-item label="活动形式" prop="desc">
|
|
54
|
+
<el-input v-model="form.desc" type="textarea" />
|
|
55
|
+
</el-form-item>
|
|
56
|
+
<el-form-item>
|
|
57
|
+
<el-button type="primary" @click="onSubmit">立即创建</el-button>
|
|
58
|
+
<el-button @click="onCancel">取消</el-button>
|
|
59
|
+
</el-form-item>
|
|
60
|
+
</el-form>
|
|
61
|
+
</el-card>
|
|
62
|
+
</div>
|
|
63
|
+
</template>
|
|
64
|
+
|
|
65
|
+
<script>
|
|
66
|
+
export default {
|
|
67
|
+
name: "Form",
|
|
68
|
+
data() {
|
|
69
|
+
return {
|
|
70
|
+
form: {
|
|
71
|
+
name: "",
|
|
72
|
+
region: "",
|
|
73
|
+
date1: "",
|
|
74
|
+
date2: "",
|
|
75
|
+
delivery: false,
|
|
76
|
+
type: [],
|
|
77
|
+
resource: "",
|
|
78
|
+
desc: "",
|
|
79
|
+
},
|
|
80
|
+
rules: {
|
|
81
|
+
name: [
|
|
82
|
+
{ required: true, message: "请输入活动名称", trigger: "blur" },
|
|
83
|
+
{ min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
|
|
84
|
+
],
|
|
85
|
+
region: [
|
|
86
|
+
{ required: true, message: "请选择活动区域", trigger: "change" },
|
|
87
|
+
],
|
|
88
|
+
date1: [
|
|
89
|
+
{
|
|
90
|
+
type: "date",
|
|
91
|
+
required: true,
|
|
92
|
+
message: "请选择日期",
|
|
93
|
+
trigger: "change",
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
date2: [
|
|
97
|
+
{
|
|
98
|
+
type: "date",
|
|
99
|
+
required: true,
|
|
100
|
+
message: "请选择时间",
|
|
101
|
+
trigger: "change",
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
type: [
|
|
105
|
+
{
|
|
106
|
+
type: "array",
|
|
107
|
+
required: true,
|
|
108
|
+
message: "请至少选择一个活动性质",
|
|
109
|
+
trigger: "change",
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
resource: [
|
|
113
|
+
{ required: true, message: "请选择活动资源", trigger: "change" },
|
|
114
|
+
],
|
|
115
|
+
desc: [{ required: true, message: "请填写活动形式", trigger: "blur" }],
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
},
|
|
119
|
+
methods: {
|
|
120
|
+
onSubmit() {
|
|
121
|
+
this.$refs.formRef.validate((valid) => {
|
|
122
|
+
if (valid) {
|
|
123
|
+
this.$message.success("提交成功!");
|
|
124
|
+
console.log("form:", this.form);
|
|
125
|
+
} else {
|
|
126
|
+
this.$message.error("请填写完整信息!");
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
},
|
|
131
|
+
onCancel() {
|
|
132
|
+
this.$refs.formRef.resetFields();
|
|
133
|
+
this.$message.info("已取消");
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
</script>
|
|
138
|
+
|
|
139
|
+
<style lang="scss" scoped>
|
|
140
|
+
.form-container {
|
|
141
|
+
padding: 20px;
|
|
142
|
+
|
|
143
|
+
.line {
|
|
144
|
+
text-align: center;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.el-select {
|
|
148
|
+
width: 100%;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
</style>
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="help-container">
|
|
3
|
+
<el-row :gutter="20">
|
|
4
|
+
<el-col :span="6">
|
|
5
|
+
<el-card shadow="never" class="help-sidebar">
|
|
6
|
+
<template #header>
|
|
7
|
+
<span>帮助中心</span>
|
|
8
|
+
</template>
|
|
9
|
+
<el-menu
|
|
10
|
+
:default-active="activeMenu"
|
|
11
|
+
class="help-menu"
|
|
12
|
+
@select="handleMenuSelect"
|
|
13
|
+
>
|
|
14
|
+
<el-sub-menu index="guide">
|
|
15
|
+
<template #title>
|
|
16
|
+
<el-icon><Guide /></el-icon>
|
|
17
|
+
<span>使用指南</span>
|
|
18
|
+
</template>
|
|
19
|
+
<el-menu-item index="guide-basic">基础操作</el-menu-item>
|
|
20
|
+
<el-menu-item index="guide-advanced">高级功能</el-menu-item>
|
|
21
|
+
<el-menu-item index="guide-tips">使用技巧</el-menu-item>
|
|
22
|
+
</el-sub-menu>
|
|
23
|
+
|
|
24
|
+
<el-sub-menu index="faq">
|
|
25
|
+
<template #title>
|
|
26
|
+
<el-icon><QuestionFilled /></el-icon>
|
|
27
|
+
<span>常见问题</span>
|
|
28
|
+
</template>
|
|
29
|
+
<el-menu-item index="faq-account">账户相关</el-menu-item>
|
|
30
|
+
<el-menu-item index="faq-task">任务管理</el-menu-item>
|
|
31
|
+
<el-menu-item index="faq-data">数据相关</el-menu-item>
|
|
32
|
+
</el-sub-menu>
|
|
33
|
+
|
|
34
|
+
<el-menu-item index="video">
|
|
35
|
+
<el-icon><VideoPlay /></el-icon>
|
|
36
|
+
<span>视频教程</span>
|
|
37
|
+
</el-menu-item>
|
|
38
|
+
|
|
39
|
+
<el-menu-item index="download">
|
|
40
|
+
<el-icon><Download /></el-icon>
|
|
41
|
+
<span>资源下载</span>
|
|
42
|
+
</el-menu-item>
|
|
43
|
+
|
|
44
|
+
<el-menu-item index="feedback">
|
|
45
|
+
<el-icon><ChatDotSquare /></el-icon>
|
|
46
|
+
<span>意见反馈</span>
|
|
47
|
+
</el-menu-item>
|
|
48
|
+
</el-menu>
|
|
49
|
+
</el-card>
|
|
50
|
+
</el-col>
|
|
51
|
+
|
|
52
|
+
<el-col :span="18">
|
|
53
|
+
<el-card shadow="never" class="help-content">
|
|
54
|
+
<div v-if="activeMenu === 'guide-basic'">
|
|
55
|
+
<h2>基础操作指南</h2>
|
|
56
|
+
<p>欢迎使用本系统,以下是基础操作的详细说明:</p>
|
|
57
|
+
|
|
58
|
+
<el-divider />
|
|
59
|
+
|
|
60
|
+
<h3>1. 登录系统</h3>
|
|
61
|
+
<p>访问系统网址,在登录页面输入您的用户名和密码即可登录系统。</p>
|
|
62
|
+
<el-image
|
|
63
|
+
style="width: 100%; height: 200px; margin: 10px 0"
|
|
64
|
+
src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"
|
|
65
|
+
:preview-src-list="['https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg']"
|
|
66
|
+
/>
|
|
67
|
+
|
|
68
|
+
<h3>2. 导航菜单</h3>
|
|
69
|
+
<p>系统左侧为导航菜单,点击菜单项可以切换到对应的功能模块。</p>
|
|
70
|
+
|
|
71
|
+
<h3>3. 页面操作</h3>
|
|
72
|
+
<p>每个页面都提供了相应的操作按钮,如新增、编辑、删除等,点击对应按钮即可执行相关操作。</p>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<div v-else-if="activeMenu === 'guide-advanced'">
|
|
76
|
+
<h2>高级功能指南</h2>
|
|
77
|
+
<p>以下是系统提供的高级功能介绍:</p>
|
|
78
|
+
|
|
79
|
+
<el-divider />
|
|
80
|
+
|
|
81
|
+
<h3>1. 数据导入导出</h3>
|
|
82
|
+
<p>系统支持Excel格式的数据导入和导出,方便您进行数据处理。</p>
|
|
83
|
+
|
|
84
|
+
<h3>2. 权限管理</h3>
|
|
85
|
+
<p>管理员可以为不同用户分配不同的权限,确保系统安全。</p>
|
|
86
|
+
|
|
87
|
+
<h3>3. 自定义报表</h3>
|
|
88
|
+
<p>您可以根据需要自定义生成各类数据报表。</p>
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
<div v-else-if="activeMenu === 'guide-tips'">
|
|
92
|
+
<h2>使用技巧</h2>
|
|
93
|
+
<p>以下是一些使用系统的小技巧:</p>
|
|
94
|
+
|
|
95
|
+
<el-divider />
|
|
96
|
+
|
|
97
|
+
<h3>1. 快捷键</h3>
|
|
98
|
+
<ul>
|
|
99
|
+
<li>Ctrl + S: 保存当前操作</li>
|
|
100
|
+
<li>Ctrl + F: 快速搜索</li>
|
|
101
|
+
<li>Esc: 关闭当前弹窗</li>
|
|
102
|
+
</ul>
|
|
103
|
+
|
|
104
|
+
<h3>2. 批量操作</h3>
|
|
105
|
+
<p>在列表页面,您可以勾选多个项目进行批量操作,提高工作效率。</p>
|
|
106
|
+
</div>
|
|
107
|
+
|
|
108
|
+
<div v-else-if="activeMenu === 'faq-account'">
|
|
109
|
+
<h2>账户相关问题</h2>
|
|
110
|
+
|
|
111
|
+
<el-divider />
|
|
112
|
+
|
|
113
|
+
<el-collapse v-model="activeFaq" accordion>
|
|
114
|
+
<el-collapse-item title="如何修改密码?" name="1">
|
|
115
|
+
<div>登录系统后,点击右上角头像,选择"个人设置",在个人资料页面可以修改密码。</div>
|
|
116
|
+
</el-collapse-item>
|
|
117
|
+
<el-collapse-item title="忘记密码怎么办?" name="2">
|
|
118
|
+
<div>在登录页面点击"忘记密码",按照提示操作即可重置密码。</div>
|
|
119
|
+
</el-collapse-item>
|
|
120
|
+
<el-collapse-item title="如何切换账户?" name="3">
|
|
121
|
+
<div>退出当前账户后,重新输入新账户的用户名和密码登录即可。</div>
|
|
122
|
+
</el-collapse-item>
|
|
123
|
+
</el-collapse>
|
|
124
|
+
</div>
|
|
125
|
+
|
|
126
|
+
<div v-else-if="activeMenu === 'faq-task'">
|
|
127
|
+
<h2>任务管理问题</h2>
|
|
128
|
+
|
|
129
|
+
<el-divider />
|
|
130
|
+
|
|
131
|
+
<el-collapse v-model="activeFaq" accordion>
|
|
132
|
+
<el-collapse-item title="如何创建新任务?" name="1">
|
|
133
|
+
<div>进入任务管理页面,点击"添加任务"按钮,填写任务信息后保存即可。</div>
|
|
134
|
+
</el-collapse-item>
|
|
135
|
+
<el-collapse-item title="如何分配任务给他人?" name="2">
|
|
136
|
+
<div>创建或编辑任务时,在"负责人"字段中选择相应的用户即可。</div>
|
|
137
|
+
</el-collapse-item>
|
|
138
|
+
<el-collapse-item title="如何查看任务进度?" name="3">
|
|
139
|
+
<div>在任务列表中,可以通过任务状态和进度条查看任务的完成情况。</div>
|
|
140
|
+
</el-collapse-item>
|
|
141
|
+
</el-collapse>
|
|
142
|
+
</div>
|
|
143
|
+
|
|
144
|
+
<div v-else-if="activeMenu === 'faq-data'">
|
|
145
|
+
<h2>数据相关问题</h2>
|
|
146
|
+
|
|
147
|
+
<el-divider />
|
|
148
|
+
|
|
149
|
+
<el-collapse v-model="activeFaq" accordion>
|
|
150
|
+
<el-collapse-item title="数据如何备份?" name="1">
|
|
151
|
+
<div>系统会自动进行数据备份,您也可以在系统设置中手动备份数据。</div>
|
|
152
|
+
</el-collapse-item>
|
|
153
|
+
<el-collapse-item title="如何导出数据?" name="2">
|
|
154
|
+
<div>在数据列表页面,点击"导出"按钮,选择导出格式即可下载数据。</div>
|
|
155
|
+
</el-collapse-item>
|
|
156
|
+
<el-collapse-item title="数据导入有什么要求?" name="3">
|
|
157
|
+
<div>导入的数据需要符合系统模板格式,支持Excel和CSV格式。</div>
|
|
158
|
+
</el-collapse-item>
|
|
159
|
+
</el-collapse>
|
|
160
|
+
</div>
|
|
161
|
+
|
|
162
|
+
<div v-else-if="activeMenu === 'video'">
|
|
163
|
+
<h2>视频教程</h2>
|
|
164
|
+
<p>以下是一些操作视频教程:</p>
|
|
165
|
+
|
|
166
|
+
<el-divider />
|
|
167
|
+
|
|
168
|
+
<el-row :gutter="20">
|
|
169
|
+
<el-col :span="12">
|
|
170
|
+
<el-card shadow="hover">
|
|
171
|
+
<div class="video-item">
|
|
172
|
+
<el-image
|
|
173
|
+
style="width: 100%; height: 150px"
|
|
174
|
+
src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"
|
|
175
|
+
/>
|
|
176
|
+
<h3>系统入门教程</h3>
|
|
177
|
+
<p>介绍系统的基本功能和操作方法</p>
|
|
178
|
+
<el-button type="primary" plain>观看视频</el-button>
|
|
179
|
+
</div>
|
|
180
|
+
</el-card>
|
|
181
|
+
</el-col>
|
|
182
|
+
|
|
183
|
+
<el-col :span="12">
|
|
184
|
+
<el-card shadow="hover">
|
|
185
|
+
<div class="video-item">
|
|
186
|
+
<el-image
|
|
187
|
+
style="width: 100%; height: 150px"
|
|
188
|
+
src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"
|
|
189
|
+
/>
|
|
190
|
+
<h3>高级功能详解</h3>
|
|
191
|
+
<p>详细介绍系统的高级功能使用方法</p>
|
|
192
|
+
<el-button type="primary" plain>观看视频</el-button>
|
|
193
|
+
</div>
|
|
194
|
+
</el-card>
|
|
195
|
+
</el-col>
|
|
196
|
+
</el-row>
|
|
197
|
+
</div>
|
|
198
|
+
|
|
199
|
+
<div v-else-if="activeMenu === 'download'">
|
|
200
|
+
<h2>资源下载</h2>
|
|
201
|
+
<p>以下是一些可供下载的资源:</p>
|
|
202
|
+
|
|
203
|
+
<el-divider />
|
|
204
|
+
|
|
205
|
+
<el-table :data="resources" style="width: 100%">
|
|
206
|
+
<el-table-column prop="name" label="资源名称" />
|
|
207
|
+
<el-table-column prop="description" label="描述" />
|
|
208
|
+
<el-table-column prop="size" label="大小" width="100" />
|
|
209
|
+
<el-table-column label="操作" width="120">
|
|
210
|
+
<template #default="{ row }">
|
|
211
|
+
<el-button type="primary" size="small" @click="downloadResource(row)">
|
|
212
|
+
下载
|
|
213
|
+
</el-button>
|
|
214
|
+
</template>
|
|
215
|
+
</el-table-column>
|
|
216
|
+
</el-table>
|
|
217
|
+
</div>
|
|
218
|
+
|
|
219
|
+
<div v-else-if="activeMenu === 'feedback'">
|
|
220
|
+
<h2>意见反馈</h2>
|
|
221
|
+
<p>如果您有任何建议或问题,请告诉我们:</p>
|
|
222
|
+
|
|
223
|
+
<el-divider />
|
|
224
|
+
|
|
225
|
+
<el-form
|
|
226
|
+
ref="feedbackFormRef"
|
|
227
|
+
:model="feedbackForm"
|
|
228
|
+
:rules="feedbackRules"
|
|
229
|
+
label-width="100px"
|
|
230
|
+
style="max-width: 600px"
|
|
231
|
+
>
|
|
232
|
+
<el-form-item label="您的姓名" prop="name">
|
|
233
|
+
<el-input v-model="feedbackForm.name" />
|
|
234
|
+
</el-form-item>
|
|
235
|
+
|
|
236
|
+
<el-form-item label="联系方式" prop="contact">
|
|
237
|
+
<el-input v-model="feedbackForm.contact" />
|
|
238
|
+
</el-form-item>
|
|
239
|
+
|
|
240
|
+
<el-form-item label="反馈类型">
|
|
241
|
+
<el-select v-model="feedbackForm.type" placeholder="请选择反馈类型" style="width: 100%">
|
|
242
|
+
<el-option label="功能建议" value="suggestion"></el-option>
|
|
243
|
+
<el-option label="问题反馈" value="issue"></el-option>
|
|
244
|
+
<el-option label="使用咨询" value="question"></el-option>
|
|
245
|
+
<el-option label="其他" value="other"></el-option>
|
|
246
|
+
</el-select>
|
|
247
|
+
</el-form-item>
|
|
248
|
+
|
|
249
|
+
<el-form-item label="反馈内容" prop="content">
|
|
250
|
+
<el-input
|
|
251
|
+
v-model="feedbackForm.content"
|
|
252
|
+
type="textarea"
|
|
253
|
+
:rows="5"
|
|
254
|
+
placeholder="请详细描述您的建议或遇到的问题..."
|
|
255
|
+
/>
|
|
256
|
+
</el-form-item>
|
|
257
|
+
|
|
258
|
+
<el-form-item>
|
|
259
|
+
<el-button type="primary" @click="submitFeedback">提交反馈</el-button>
|
|
260
|
+
<el-button @click="resetFeedbackForm">重置</el-button>
|
|
261
|
+
</el-form-item>
|
|
262
|
+
</el-form>
|
|
263
|
+
</div>
|
|
264
|
+
|
|
265
|
+
<div v-else>
|
|
266
|
+
<h2>帮助中心</h2>
|
|
267
|
+
<p>欢迎使用系统帮助中心,您可以通过左侧菜单查找需要的帮助内容。</p>
|
|
268
|
+
<p>如需更多帮助,请联系我们的客服团队。</p>
|
|
269
|
+
</div>
|
|
270
|
+
</el-card>
|
|
271
|
+
</el-col>
|
|
272
|
+
</el-row>
|
|
273
|
+
</div>
|
|
274
|
+
</template>
|
|
275
|
+
|
|
276
|
+
<script>
|
|
277
|
+
import {
|
|
278
|
+
Guide,
|
|
279
|
+
QuestionFilled,
|
|
280
|
+
VideoPlay,
|
|
281
|
+
Download,
|
|
282
|
+
ChatDotSquare
|
|
283
|
+
} from "@element-plus/icons-vue";
|
|
284
|
+
|
|
285
|
+
export default {
|
|
286
|
+
name: "Help",
|
|
287
|
+
components: {
|
|
288
|
+
Guide,
|
|
289
|
+
QuestionFilled,
|
|
290
|
+
VideoPlay,
|
|
291
|
+
Download,
|
|
292
|
+
ChatDotSquare
|
|
293
|
+
},
|
|
294
|
+
data() {
|
|
295
|
+
return {
|
|
296
|
+
activeMenu: "guide-basic",
|
|
297
|
+
activeFaq: "",
|
|
298
|
+
feedbackForm: {
|
|
299
|
+
name: "",
|
|
300
|
+
contact: "",
|
|
301
|
+
type: "suggestion",
|
|
302
|
+
content: ""
|
|
303
|
+
},
|
|
304
|
+
feedbackRules: {
|
|
305
|
+
name: [
|
|
306
|
+
{ required: true, message: "请输入您的姓名", trigger: "blur" }
|
|
307
|
+
],
|
|
308
|
+
contact: [
|
|
309
|
+
{ required: true, message: "请输入联系方式", trigger: "blur" }
|
|
310
|
+
],
|
|
311
|
+
content: [
|
|
312
|
+
{ required: true, message: "请输入反馈内容", trigger: "blur" }
|
|
313
|
+
]
|
|
314
|
+
},
|
|
315
|
+
resources: [
|
|
316
|
+
{
|
|
317
|
+
id: 1,
|
|
318
|
+
name: "用户手册.pdf",
|
|
319
|
+
description: "系统详细使用说明文档",
|
|
320
|
+
size: "2.4MB"
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
id: 2,
|
|
324
|
+
name: "API文档.pdf",
|
|
325
|
+
description: "系统接口文档",
|
|
326
|
+
size: "1.8MB"
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
id: 3,
|
|
330
|
+
name: "模板文件.xlsx",
|
|
331
|
+
description: "数据导入模板",
|
|
332
|
+
size: "56KB"
|
|
333
|
+
}
|
|
334
|
+
]
|
|
335
|
+
};
|
|
336
|
+
},
|
|
337
|
+
methods: {
|
|
338
|
+
handleMenuSelect(key) {
|
|
339
|
+
this.activeMenu = key;
|
|
340
|
+
},
|
|
341
|
+
downloadResource(resource) {
|
|
342
|
+
this.$message.success(`开始下载 ${resource.name}`);
|
|
343
|
+
// 模拟下载过程
|
|
344
|
+
},
|
|
345
|
+
submitFeedback() {
|
|
346
|
+
this.$refs.feedbackFormRef.validate((valid) => {
|
|
347
|
+
if (valid) {
|
|
348
|
+
this.$message.success("反馈提交成功,感谢您的建议!");
|
|
349
|
+
this.resetFeedbackForm();
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
},
|
|
353
|
+
resetFeedbackForm() {
|
|
354
|
+
this.$refs.feedbackFormRef.resetFields();
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
</script>
|
|
359
|
+
|
|
360
|
+
<style lang="scss" scoped>
|
|
361
|
+
.help-container {
|
|
362
|
+
padding: 20px;
|
|
363
|
+
|
|
364
|
+
.help-sidebar {
|
|
365
|
+
height: calc(100vh - 120px);
|
|
366
|
+
|
|
367
|
+
:deep(.el-menu) {
|
|
368
|
+
border-right: 0;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
.help-content {
|
|
373
|
+
height: calc(100vh - 120px);
|
|
374
|
+
overflow-y: auto;
|
|
375
|
+
|
|
376
|
+
.video-item {
|
|
377
|
+
text-align: center;
|
|
378
|
+
|
|
379
|
+
h3 {
|
|
380
|
+
margin: 15px 0 10px;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
p {
|
|
384
|
+
color: #666;
|
|
385
|
+
margin-bottom: 15px;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
</style>
|