@@ -111,35 +111,46 @@ function createId() {
111111 * 创建项, 如不传入参数则创建空项
112112 * @returns {Item}
113113 */
114- function createItem (data = null ) {
115- const item = {
114+ function createItem (data = null , oldData = null ) {
115+ let item = {
116116 loading: false ,
117117 id: createId (),
118118 status: ' input' , // new/edit/del/init/input
119119 display: ' ' ,
120120 src: ' ' ,
121- imgInfo: null ,
122121 }
122+ // 未传入data, 说明是单纯新建, 单纯新建的值是输入框状态
123123 if (! data) {
124124 return item
125125 }
126- if (data .id ) {
127- return data
128- }
126+ // 没有id, 说明是用户点击选择的本地图片
127+ if (! data .id ) {
128+ if (oldData) {
129+ // 如果旧数据状态是输入框, 则为新图片
130+ if (oldData .status === ' input' ) {
131+ item .status = ' new'
132+ }
133+ // 如果旧数据状态是初始化 init, 则为修改
134+ if (oldData .status === ' init' || oldData .status === ' edit' ) {
135+ item .status = ' edit'
136+ }
137+ } else {
138+ item .status = ' new'
139+ }
129140
130- // 新传入图片信息
131- if (data .localSrc ) {
132- item .id = data .id || item .id
133- item .src = data .src || item .src
141+ item .id = oldData .id || item .id
142+ item .src = ' '
134143 item .display = data .localSrc || item .display
135- item .status = ' new'
136- } else {
137- item .id = data .id || item .id
138- item .src = data .src || item .src
139- item .display = data .display || item .display
140- item .status = ' init'
144+ item = Object .assign ({}, data, item)
145+ return item
141146 }
142147
148+ // 存在id, 说明是传入已存在数据
149+ item .id = data .id
150+ item .src = data .src || item .src
151+ item .display = data .display || item .display
152+ item .status = data .status || ' init'
153+ item = Object .assign ({}, data, item)
143154 return item
144155}
145156
@@ -165,7 +176,7 @@ function getRangeTip(prx, min, max, unit = '') {
165176}
166177
167178export default {
168- name: ' UploadPicture ' ,
179+ name: ' UploadImgs ' ,
169180 data () {
170181 return {
171182 itemList: [],
@@ -555,7 +566,7 @@ export default {
555566 // 找到特定图像位置
556567 const index = this .itemList .findIndex (item => (item .id === currentId))
557568 // 替换图片
558- this .itemList [index] = createItem (imgInfoList[0 ])
569+ this .itemList [index] = createItem (imgInfoList[0 ], this . itemList [index] )
559570 // 追加图片
560571 // 最大图片数量限制
561572 let l = imgInfoList .length
@@ -615,8 +626,8 @@ export default {
615626 for (let i = 0 ; i < val .length ; i += 1 ) {
616627 result .push (createItem (val[i]))
617628 }
618- // 初始项小于最大数量限制, 并且处于可编辑状态
619- if ((max === 0 || val .length < max) && ! disabled) {
629+ // 初始项小于最大数量限制, 并且处于可编辑状态, 并且最后一项不是input
630+ if ((max === 0 || val .length < max) && ! disabled && val[ val . length - 1 ]. status !== ' input ' ) {
620631 // 后面添加空项
621632 result .push (createItem ())
622633 }
0 commit comments