@@ -56,6 +56,24 @@ export default new Vuex.Store({
5656 cleanObject ( state . userConfigInfo )
5757 } ,
5858
59+ // 用户配置信息 - 增加目录
60+ USER_CONFIG_INFO_ADD_DIR ( state , dir ) {
61+ if ( ! state . userConfigInfo . dirList . some ( v => v . value === dir ) ) {
62+ state . userConfigInfo . dirList . push ( { label : dir , value : dir } )
63+ this . commit ( 'PERSIST_USER_CONFIG_INFO' )
64+ }
65+ } ,
66+
67+ // 用户配置信息 - 删除目录列表的某个目录
68+ USER_CONFIG_INFO_REMOVE_DIR ( state , dir ) {
69+ const dirList = state . userConfigInfo . dirList
70+ if ( dirList . some ( v => v . value === dir ) ) {
71+ const rmIndex = dirList . findIndex ( v => v . value === dir )
72+ dirList . splice ( rmIndex , 1 )
73+ this . commit ( 'PERSIST_USER_CONFIG_INFO' )
74+ }
75+ } ,
76+
5977 // 持久化用户配置信息
6078 PERSIST_USER_CONFIG_INFO ( state ) {
6179 localStorage . setItem ( PICX_CONFIG , JSON . stringify ( state . userConfigInfo ) )
@@ -86,37 +104,74 @@ export default new Vuex.Store({
86104 // =========================================================
87105 // 图床管理 - 增加图片
88106 DIR_IMAGE_LIST_ADD_IMAGE ( { state, dispatch} , item ) {
89- if ( state . dirImageList . length > 0 ) {
90- state . dirImageList . find ( v => v . dir === item . dir ) . imageList . push ( item )
107+ const temp = state . dirImageList . find ( v => v . dir === item . dir )
108+ if ( temp ) {
109+ temp . imageList . push ( item )
91110 dispatch ( 'DIR_IMAGE_LIST_PERSIST' )
92111 }
93112 } ,
94113
95114 // 图床管理 - 往指定目录增加图片列表
96115 DIR_IMAGE_LIST_ADD_IMAGE_LIST ( { state, dispatch} , dirImageItem ) {
97- state . dirImageList . find ( v => v . dir === dirImageItem . dir ) . imageList = dirImageItem . imageList
116+
117+ const temp = state . dirImageList . find ( v => v . dir === dirImageItem . dir )
118+
119+ if ( temp ) {
120+ temp . imageList = dirImageItem . imageList
121+ } else {
122+ state . dirImageList . push ( dirImageItem )
123+ }
124+
98125 dispatch ( 'DIR_IMAGE_LIST_PERSIST' )
126+
99127 } ,
100128
101129 // 图床管理 - 增加目录
102- DIR_IMAGE_LIST_ADD_DIR ( { state, dispatch} , dirItem ) {
103- if ( dirItem . dir === '/' ) {
104- state . dirImageList . unshift ( dirItem )
105- } else {
106- state . dirImageList . push ( dirItem )
130+ DIR_IMAGE_LIST_ADD_DIR ( { state, dispatch} , dir ) {
131+ if ( ! state . dirImageList . some ( v => v . dir === dir ) ) {
132+ const dirObj = { dir : dir , imageList : [ ] }
133+
134+ if ( dir === '/' ) {
135+ state . dirImageList . unshift ( dirObj )
136+ } else {
137+ state . dirImageList . push ( dirObj )
138+ }
139+ dispatch ( 'DIR_IMAGE_LIST_PERSIST' )
140+ }
141+ } ,
142+
143+ // 图床管理 - 删除目录
144+ DIR_IMAGE_LIST_REMOVE_DIR ( { state, dispatch} , dir ) {
145+ if ( state . dirImageList . some ( v => v . dir === dir ) ) {
146+ const rmIndex = state . dirImageList . findIndex ( v => v . dir === dir )
147+ // 删除目录
148+ state . dirImageList . splice ( rmIndex , 1 )
149+ dispatch ( 'DIR_IMAGE_LIST_PERSIST' )
107150 }
108- dispatch ( 'DIR_IMAGE_LIST_PERSIST' )
109151 } ,
110152
111153
112154 // 图床管理 - 删除指定目录里的指定图片
113- DIR_IMAGE_LIST_REMOVE ( { state, dispatch} , item ) {
155+ DIR_IMAGE_LIST_REMOVE ( { state, dispatch, commit } , item ) {
114156 if ( state . dirImageList . length > 0 ) {
115157 const temp = state . dirImageList . find ( v => v . dir === item . dir )
116158 if ( temp ) {
117159 const rmIndex = temp . imageList . findIndex ( v => v . uuid === item . uuid )
118160 if ( rmIndex !== - 1 ) {
161+
162+ // 删除图片
119163 temp . imageList . splice ( rmIndex , 1 )
164+
165+ // 如果 imageList.length 为 0,需删除该目录
166+ if ( temp . imageList . length === 0 ) {
167+
168+ // userConfigInfo.dirList 中删除目录
169+ dispatch ( 'DIR_IMAGE_LIST_REMOVE_DIR' , temp . dir )
170+
171+ // dirImageList 中删除目录
172+ commit ( 'USER_CONFIG_INFO_REMOVE_DIR' , temp . dir )
173+ }
174+
120175 dispatch ( 'DIR_IMAGE_LIST_PERSIST' )
121176 }
122177 }
0 commit comments