@@ -4,6 +4,7 @@ import Page from '../../components/core/models/page'
4
4
import Work from '../../components/core/models/work'
5
5
import { AxiosWrapper } from '../../utils/http.js'
6
6
import router from '@/router.js'
7
+ import { takeScreenshot } from '../../utils/helper.js'
7
8
8
9
export const actions = {
9
10
previewWork ( { commit } , payload = { } ) {
@@ -30,20 +31,30 @@ export const actions = {
30
31
}
31
32
commit ( 'setWork' , work )
32
33
} ,
33
- saveWork ( { commit, dispatch, state } , payload = { } ) {
34
- // update work with strapi
35
- const work = {
36
- ...state . work ,
37
- ...payload
34
+ /**
35
+ * isSaveCover {Boolean} 保存作品时,是否保存封面图
36
+ */
37
+ saveWork ( { commit, dispatch, state } , { isSaveCover = false } = { } ) {
38
+ const fn = ( callback ) => {
39
+ new AxiosWrapper ( {
40
+ dispatch,
41
+ commit,
42
+ loading_name : 'saveWork_loading' ,
43
+ successMsg : '保存作品成功' ,
44
+ customRequest : strapi . updateEntry . bind ( strapi )
45
+ } ) . put ( 'works' , state . work . id , state . work ) . then ( callback )
38
46
}
39
-
40
- return new AxiosWrapper ( {
41
- dispatch,
42
- commit,
43
- loading_name : 'saveWork_loading' ,
44
- successMsg : '保存作品成功' ,
45
- customRequest : strapi . updateEntry . bind ( strapi )
46
- } ) . put ( 'works' , state . work . id , work )
47
+ return new Promise ( ( resolve , reject ) => {
48
+ if ( isSaveCover ) {
49
+ takeScreenshot ( ) . then ( file => {
50
+ dispatch ( 'uploadCover' , { file } ) . then ( ( ) => {
51
+ fn ( resolve )
52
+ } ) // uploadCover
53
+ } ) // takeScreenshot
54
+ } else {
55
+ fn ( resolve )
56
+ }
57
+ } )
47
58
} ,
48
59
fetchWork ( { commit, state } , workId ) {
49
60
strapi . getEntry ( 'works' , workId ) . then ( entry => {
@@ -158,11 +169,51 @@ export const actions = {
158
169
loading_name : 'useTemplate_loading' ,
159
170
successMsg : '使用模板成功'
160
171
} ) . post ( `/works/use-template/${ workId } ` )
172
+ } ,
173
+ uploadCover ( { commit, state, dispatch } , { file } = { } ) {
174
+ const formData = new FormData ( )
175
+ formData . append ( 'files' , file , `${ + new Date ( ) } .png` )
176
+ formData . append ( 'workId' , state . work . id )
177
+ return new AxiosWrapper ( {
178
+ dispatch,
179
+ commit,
180
+ name : 'editor/setWorkCover' ,
181
+ loading_name : 'uploadWorkCover_loading' ,
182
+ successMsg : '上传封面图成功!'
183
+ // }).post(`/works/uploadCover/${state.work.id}`, formData)
184
+ } ) . post ( `/upload/` , formData )
161
185
}
162
186
}
163
187
164
188
// mutations
165
189
export const mutations = {
190
+ /**
191
+ *
192
+ * @param {* } state
193
+ * @param {Object } payload
194
+ *
195
+ value example: [
196
+ {
197
+ "id": 1,
198
+ "name": "1567769149231.png",
199
+ "hash": "1660b11229e7473b90f99a9f9afe7675",
200
+ "sha256": "lKl7f_csUAgOjf0VRYkBZ64EcTjvt4Dt4beNIhELpTU",
201
+ "ext": ".png",
202
+ "mime": "image/png",
203
+ "size": "6.57",
204
+ "url": "/uploads/1660b11229e7473b90f99a9f9afe7675.png",
205
+ "provider": "local",
206
+ "public_id": null,
207
+ "created_at": "2019-09-06T11:25:49.255Z",
208
+ "updated_at": "2019-09-06T11:25:49.261Z",
209
+ "related": []
210
+ }
211
+ ]
212
+ */
213
+ setWorkCover ( state , { type, value } ) {
214
+ const [ cover ] = value
215
+ state . work . cover_image_url = cover . url
216
+ } ,
166
217
/**
167
218
* payload: {
168
219
* type: @params {String} "editor/setWorks",
0 commit comments