@nebulars/sseengine 1.3.63 → 1.3.65
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/package.json
CHANGED
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
</template>
|
|
68
68
|
|
|
69
69
|
<!-- Feedback -->
|
|
70
|
-
<
|
|
70
|
+
<sse-feedback :id="item.id" v-model:feedback="item.feedback" :visible="!sseengine.produce" />
|
|
71
71
|
|
|
72
72
|
<!-- Next -->
|
|
73
73
|
<sse-recursion v-if="item.children.length" :source="item.children" :active="active" />
|
|
@@ -50,13 +50,8 @@ export default {
|
|
|
50
50
|
|
|
51
51
|
// All
|
|
52
52
|
if (checked) {
|
|
53
|
-
// Get Snaps
|
|
54
|
-
const snaps = $('[data-checked]')
|
|
55
|
-
.map((_, e) => $(e).data())
|
|
56
|
-
.get();
|
|
57
|
-
|
|
58
53
|
// Checked All
|
|
59
|
-
await this.$store.dispatch('sseengine/SNAP_ALL'
|
|
54
|
+
await this.$store.dispatch('sseengine/SNAP_ALL');
|
|
60
55
|
}
|
|
61
56
|
|
|
62
57
|
// Empty
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
<style lang="less" scoped>
|
|
2
|
+
.fqa-feedback {
|
|
3
|
+
height: calc(@gap + @unit);
|
|
4
|
+
line-height: calc(@gap + @unit);
|
|
5
|
+
|
|
6
|
+
&-space {
|
|
7
|
+
cursor: pointer;
|
|
8
|
+
transition: all @fast;
|
|
9
|
+
|
|
10
|
+
&:hover {
|
|
11
|
+
color: @color-primary;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
</style>
|
|
16
|
+
|
|
17
|
+
<template>
|
|
18
|
+
<a-space :size="24" class="fqa-feedback" :class="{ notouch: sseengine.mode === 'snap' }">
|
|
19
|
+
<template v-if="visible">
|
|
20
|
+
<a-space class="fqa-feedback-space" :size="4" @click="copy">
|
|
21
|
+
<fqa-icon icon="CopyOutlined" :size="18" cursor="pointer" />
|
|
22
|
+
<span>复制</span>
|
|
23
|
+
</a-space>
|
|
24
|
+
<a-space class="fqa-feedback-space" :size="4" @click="share">
|
|
25
|
+
<fqa-icon icon="ShareAltOutlined" :size="18" cursor="pointer" />
|
|
26
|
+
<span>分享</span>
|
|
27
|
+
</a-space>
|
|
28
|
+
<a-space class="fqa-feedback-space" :size="4" :data-download="id">
|
|
29
|
+
<a-dropdown :getPopupContainer="e => e.closest('[data-download]')">
|
|
30
|
+
<div>
|
|
31
|
+
<fqa-icon icon="DownloadOutlined" :size="18" cursor="pointer" />
|
|
32
|
+
<span>下载</span>
|
|
33
|
+
</div>
|
|
34
|
+
<template #overlay>
|
|
35
|
+
<a-menu>
|
|
36
|
+
<a-menu-item>
|
|
37
|
+
<a-space :size="4" @click="e => download(e, 'word')">
|
|
38
|
+
<fqa-icon icon="FileWordOutlined" />
|
|
39
|
+
<span>Word</span>
|
|
40
|
+
</a-space>
|
|
41
|
+
</a-menu-item>
|
|
42
|
+
<a-menu-item>
|
|
43
|
+
<a-space :size="4" @click="e => download(e, 'pdf')">
|
|
44
|
+
<fqa-icon icon="FilePdfOutlined" />
|
|
45
|
+
<span>PDF</span>
|
|
46
|
+
</a-space>
|
|
47
|
+
</a-menu-item>
|
|
48
|
+
<a-menu-item>
|
|
49
|
+
<a-space :size="4" @click="e => download(e, 'markdown')">
|
|
50
|
+
<fqa-icon icon="FileMarkdownOutlined" />
|
|
51
|
+
<span>Markdown</span>
|
|
52
|
+
</a-space>
|
|
53
|
+
</a-menu-item>
|
|
54
|
+
</a-menu>
|
|
55
|
+
</template>
|
|
56
|
+
</a-dropdown>
|
|
57
|
+
</a-space>
|
|
58
|
+
<a-space class="fqa-feedback-space" :size="4" @click="feed(1)">
|
|
59
|
+
<fqa-icon :icon="feedback === 1 ? 'LikeFilled' : 'LikeOutlined'" :size="18" cursor="pointer" />
|
|
60
|
+
<span>赞</span>
|
|
61
|
+
</a-space>
|
|
62
|
+
<a-space class="fqa-feedback-space" :size="4" @click="feed(2)">
|
|
63
|
+
<fqa-icon :icon="feedback === 2 ? 'DislikeFilled' : 'DislikeOutlined'" :size="18" cursor="pointer" />
|
|
64
|
+
<span>踩</span>
|
|
65
|
+
</a-space>
|
|
66
|
+
</template>
|
|
67
|
+
|
|
68
|
+
<template v-else>
|
|
69
|
+
<div> </div>
|
|
70
|
+
</template>
|
|
71
|
+
</a-space>
|
|
72
|
+
</template>
|
|
73
|
+
|
|
74
|
+
<script>
|
|
75
|
+
export default {
|
|
76
|
+
props: {
|
|
77
|
+
id: {
|
|
78
|
+
type: [String],
|
|
79
|
+
default: '',
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
feedback: {
|
|
83
|
+
type: [Number],
|
|
84
|
+
default: 0,
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
visible: {
|
|
88
|
+
type: [Boolean],
|
|
89
|
+
default: false,
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
|
|
93
|
+
data() {
|
|
94
|
+
return {};
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
methods: {
|
|
98
|
+
// @param event
|
|
99
|
+
async caption({ target }) {
|
|
100
|
+
return this.$util.closest(target, '[query-id]', true).querySelector('.fqa-query-content').innerHTML;
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
// @param event
|
|
104
|
+
async context({ target }) {
|
|
105
|
+
return this.$util.closest(target, '[answer-id]', true).querySelector('[data-html]').dataset;
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
// @param event
|
|
109
|
+
async snapers({ target }) {
|
|
110
|
+
return this.$util.within(this.$util.closest(target, '[query-id]', true), 'data-checked', 'query-id');
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
async copy(e) {
|
|
114
|
+
// Get Markdown
|
|
115
|
+
const { html } = await this.context(e);
|
|
116
|
+
|
|
117
|
+
// Add to Copy
|
|
118
|
+
await this.$util.copy(html);
|
|
119
|
+
|
|
120
|
+
// Toast
|
|
121
|
+
await this.$util.toast.success('已复制到剪贴板');
|
|
122
|
+
},
|
|
123
|
+
|
|
124
|
+
async share(e) {
|
|
125
|
+
// Mode Change
|
|
126
|
+
await this.$store.dispatch('sseengine/SNAP_MODE');
|
|
127
|
+
|
|
128
|
+
// Get Group
|
|
129
|
+
const group = await this.$store.dispatch('sseengine/SNAP_GROUP', await this.snapers(e));
|
|
130
|
+
|
|
131
|
+
// Get Snaps
|
|
132
|
+
const snaps = await this.$store.dispatch('sseengine/SNAP_ALL', group);
|
|
133
|
+
},
|
|
134
|
+
|
|
135
|
+
async download(e, export_type) {
|
|
136
|
+
// Get Title
|
|
137
|
+
const title = await this.caption(e);
|
|
138
|
+
|
|
139
|
+
// Get Markdown
|
|
140
|
+
const { html: content } = await this.context(e);
|
|
141
|
+
|
|
142
|
+
// Trigger Download
|
|
143
|
+
const link = await this.$store.dispatch('sseengine/ANS_DOWNLOAD', { title, content, export_type });
|
|
144
|
+
|
|
145
|
+
// Download
|
|
146
|
+
this.$util.download(link, '_blank');
|
|
147
|
+
},
|
|
148
|
+
|
|
149
|
+
async feed(feedback = 0) {
|
|
150
|
+
if (this.feedback === feedback) {
|
|
151
|
+
feedback = 0;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Get ID from Scope
|
|
155
|
+
const { id } = this;
|
|
156
|
+
|
|
157
|
+
// Feedback
|
|
158
|
+
const { status } = await this.$store.dispatch('chat/FEEDBACK', { feedback, id });
|
|
159
|
+
|
|
160
|
+
// Success
|
|
161
|
+
if (status === 'success') {
|
|
162
|
+
// Update
|
|
163
|
+
this.$emit('update:feedback', feedback);
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
</script>
|
package/src/store/feedback.js
CHANGED
|
@@ -4,5 +4,10 @@ export default ({ http }) => {
|
|
|
4
4
|
const { data } = await http.api.sseUpdateFeedback({ feedback, answer_id });
|
|
5
5
|
return data;
|
|
6
6
|
},
|
|
7
|
+
|
|
8
|
+
async ANS_DOWNLOAD({}, { title, content, export_type }) {
|
|
9
|
+
const { data } = await http.api.shareExportContent({ title, content, export_type });
|
|
10
|
+
return data;
|
|
11
|
+
},
|
|
7
12
|
};
|
|
8
13
|
};
|
package/src/store/snap.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export default ({ http, link }) => {
|
|
1
|
+
export default ({ $, http, link }) => {
|
|
2
2
|
return {
|
|
3
3
|
async SNAP_MODE({}, mode = 'snap') {
|
|
4
4
|
return { mode };
|
|
@@ -39,10 +39,20 @@ export default ({ http, link }) => {
|
|
|
39
39
|
return { choosen };
|
|
40
40
|
},
|
|
41
41
|
|
|
42
|
-
async SNAP_ALL({ dispatch }, group
|
|
42
|
+
async SNAP_ALL({ dispatch }, group) {
|
|
43
|
+
// Group Reset
|
|
44
|
+
group = group || (await dispatch('SNAP_GROUP'));
|
|
45
|
+
|
|
46
|
+
// Group Loop
|
|
43
47
|
group.forEach(async item => await dispatch('SNAP_ADD', item));
|
|
44
48
|
},
|
|
45
49
|
|
|
50
|
+
async SNAP_GROUP({}, target = $('[data-checked]')) {
|
|
51
|
+
return $(target)
|
|
52
|
+
.map((_, e) => $(e).data())
|
|
53
|
+
.get();
|
|
54
|
+
},
|
|
55
|
+
|
|
46
56
|
async SNAP_CLEAN({ state }) {
|
|
47
57
|
// Set Empty Choosen
|
|
48
58
|
const choosen = [];
|
package/src/store/tub.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export default ({ http, closest, copy, toimg, download, excel, toast, $ }) => {
|
|
1
|
+
export default ({ http, closest, copy, toimg, download, excel, time, toast, blob, $ }) => {
|
|
2
2
|
return {
|
|
3
3
|
async TUB_FULLSCREEN({ state }, { table }) {
|
|
4
4
|
// Set Cloner
|
|
@@ -30,7 +30,23 @@ export default ({ http, closest, copy, toimg, download, excel, toast, $ }) => {
|
|
|
30
30
|
const snap = await dispatch('SNAP_CREATE', table);
|
|
31
31
|
|
|
32
32
|
// Set Snapshot
|
|
33
|
-
const snapshot =
|
|
33
|
+
const snapshot = false;
|
|
34
|
+
|
|
35
|
+
// Set Image
|
|
36
|
+
const image = blob(snap);
|
|
37
|
+
|
|
38
|
+
// Copy
|
|
39
|
+
// copy(image);
|
|
40
|
+
|
|
41
|
+
// Copy Image
|
|
42
|
+
await navigator.clipboard.write([
|
|
43
|
+
new ClipboardItem({
|
|
44
|
+
[image.type]: image,
|
|
45
|
+
}),
|
|
46
|
+
]);
|
|
47
|
+
|
|
48
|
+
// Toast
|
|
49
|
+
toast.success('图片已复制');
|
|
34
50
|
|
|
35
51
|
// Update
|
|
36
52
|
return {
|
|
@@ -62,11 +78,19 @@ export default ({ http, closest, copy, toimg, download, excel, toast, $ }) => {
|
|
|
62
78
|
|
|
63
79
|
// Get ID
|
|
64
80
|
// const query = closest(table, '[query-id]', true).getAttribute('query-id');
|
|
65
|
-
const answer = closest(table, '[answer-id]', true).getAttribute('answer-id');
|
|
81
|
+
// const answer = closest(table, '[answer-id]', true).getAttribute('answer-id');
|
|
82
|
+
|
|
83
|
+
// Get Query
|
|
84
|
+
const query = closest(table, '[query-id]', true);
|
|
85
|
+
|
|
86
|
+
// Get Title from Query
|
|
87
|
+
const title = $(query).find('.fqa-query-content').html();
|
|
88
|
+
|
|
89
|
+
// Get Time
|
|
90
|
+
const fmt = time.Format(new Date(), 'YYYY-MM-DD');
|
|
66
91
|
|
|
67
92
|
// Write Excel
|
|
68
|
-
|
|
69
|
-
excel.writeFile(book, `${state.info.title}.xlsx`);
|
|
93
|
+
excel.writeFile(book, `${title}_${fmt}.xlsx`);
|
|
70
94
|
},
|
|
71
95
|
|
|
72
96
|
async TSV_CREATE({}, { markdown, sup }) {
|