import Vue from 'vue' import iview from 'iview' export default function editCategory (payload = {}, option = {}) { return new Promise(async (resolve, reject) => { const data = JSON.parse(JSON.stringify(payload)) data.store_type_ids = data.store_type_ids.join() const error = {} const requestBody = {} // 字段验证方法 const checkFuncs = { city_ids (value) { return value.length ? '' : '请选择可售卖城市' }, name (value) { return value && value.trim() ? '' : '商品名称不能为空' }, sale_name (value) { return value && value.trim() ? '' : '上架名称不能为空' }, category_id1 (value) { return data.category_id3 ? '' : '请选择商品分类' }, img (value) { return value ? '' : '请选择上传商品主图' }, imgs (value) { return value.length ? '' : '请上传至少一张商品图集' }, store_type_ids (value) { return value.length ? '' : '请选择商品储藏方式' }, label (value) { return value.length ? '' : '请选择商品检测标签' }, attribute_category_id (value) { return value ? '' : '请选择商品规格属性分类' }, sku (value) { return value.length ? '' : '请生成至少一条sku' }, parameter (value) { return value.length ? '' : '请选择至少一条商品参数' }, deliver_type (value) { return typeof value === 'number' && value > -1 ? '' : '请选择商品配送方式' }, is_confirm_sale (value) { return typeof value === 'number' && value > -1 ? '' : '请选择商品上架时间' }, receive_type (value) { return value === 0 || data.receive_time ? '' : '请输入具体送达时间' }, limit_number (value) { return typeof value === 'number' && value > -1 ? '' : '请输入正确的限购数量' }, limit_type (value) { return typeof value === 'number' && value > -1 ? '' : '请选择限购类型' }, } const valid = Object.keys(data).reduce((resultList, key) => { const func = checkFuncs[key] const value = data[key] const errorText = func ? func(value) : '' if (!errorText) requestBody[key] = value error[key] = errorText resultList.push(!errorText) return resultList }, []).every(Boolean) if (!valid) return reject(error) if (data.id) requestBody.id = data.id delete requestBody.category_id1 delete requestBody.category_id2 delete requestBody.category_name1 delete requestBody.category_name2 delete requestBody.category_name3 delete requestBody.parameterData delete requestBody.patternData try { const method = requestBody.id ? 'put' : 'post' await Vue.http[method]('/product/product', requestBody) iview.Message.success('保存成功') resolve() } catch (e) { reject(e) } }) }