From 02d26b6694db00ba7ec082d45daf9101cd852a88 Mon Sep 17 00:00:00 2001 From: Maoqiang Zheng Date: Thu, 20 Dec 2018 17:35:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E5=8F=91=E5=B8=83=20?= =?UTF-8?q?=E7=9A=84=E5=BA=97=E9=93=BA=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/goodsPublish/goodsPublish.js | 484 ++++++++++++++++++++----- src/pages/home/home.js | 4 +- src/pages/index/index.js | 4 +- src/serviceAPI.config.js | 3 + 4 files changed, 393 insertions(+), 102 deletions(-) diff --git a/src/pages/goodsPublish/goodsPublish.js b/src/pages/goodsPublish/goodsPublish.js index ce83118..f9145c0 100644 --- a/src/pages/goodsPublish/goodsPublish.js +++ b/src/pages/goodsPublish/goodsPublish.js @@ -8,6 +8,7 @@ import URL from '../../serviceAPI.config' import './goodsPublish.scss' +import { throws } from 'assert'; class GoodsPublish extends Component { @@ -17,46 +18,164 @@ class GoodsPublish extends Component { constructor() { super(...arguments) this.state = { - selector: ['需求', '供应', '人才'], // 应该是树型结构,需要修改 - selectorChecked: '需求', + objectMultiArray: [ + [ + { + id: 0, + name: '无脊柱动物' + }, + { + id: 1, + name: '脊柱动物' + } + ], + [ + { + id: 0, + name: '扁性动物' + }, + { + id: 1, + name: '线形动物' + }, + { + id: 2, + name: '环节动物' + }, + { + id: 3, + name: '软体动物' + }, + { + id: 3, + name: '节肢动物' + } + ], + [ + { + id: 0, + name: '猪肉绦虫' + }, + { + id: 1, + name: '吸血虫' + } + ] + ], + multiIndex: [0, 0, 0], + shopCategoryPicker: [], // 店铺分类选项 + shopCategoryCheckedPicker: {name:'选择店铺类型'}, productName: '', productPrice: '', productUnit: '', productDescript: '', - files: [], // 上传的图片 + pickerImageUrl: [], // 上传的图片 + ImagesInfo: [],// 后台传回来的图片信息 isUploadImageSuccess: false, uploadImageTextTip: '', isUploadProductSuccess: false, uploadProductTextTip: '', - list: [ - { - value: '美国', - text: '美国', - checked: false - }, - { - value: '中国', - text: '中国', - checked: true - }, - { - value: '巴西', - text: '巴西', - checked: false - }, - { - value: '日本', - text: '日本', - checked: false - } + shopCategoryList: [], + productCategoryList: [], - ] // 店铺分类选项 } } + + //商品目录请求api GetShopCategoryList + getProductCateList() { + Taro.request({ + url: URL.GetProductCategoryList, + method: 'POST', + dataType: 'json', + header: { + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': 'PFWSSS=' + Taro.getStorageSync('session_id'), + 'X-Requested-With': 'XMLHttpRequest' + } + }) + .then(res => { + if (res.data.err_msg === 'success') { + this.setState({ productCategoryList: res.data.data }) + console.log('商品分类目录', res) + this.sortShopCateToState(res.data.data) + } + + } + ) + .catch(error => { + console.log('商品分类请求错误', error) + }) + } + + + // 店铺分类目录请求 api + getShopCateList() { + Taro.request({ + url: URL.GetShopCategoryList, + method: 'POST', + dataType: 'json', + data: { + id: Taro.getStorageSync('shopInfo').shop_id + }, + header: { + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': 'PFWSSS=' + Taro.getStorageSync('session_id'), + 'X-Requested-With': 'XMLHttpRequest' + } + }) + .then(res => { + if (res.data.err_msg === 'success') { + this.setState({ shopCategoryList: res.data.data }) + const shopCategoryInfo = res.data.data + const shopCategory = [] + // 处理后台返回的店铺分类信息 + for (let item in shopCategoryInfo) { + const children = shopCategoryInfo[item].c + for (let child in children) { + shopCategory.push({ id: children[child].id, name: children[child].n }) + } + } + this.setState({ shopCategoryPicker: shopCategory }) + console.log('店铺分类目录', res) + } + } + ) + .catch(error => { + console.log('店铺分类请求错误', error) + }) + } + // 发布商品api - //{ goods_name = "test2", goods_price= "1.00", goods_unit= "1",goods_profiles= "test2",class_id= "10103",shop_class_id= "1899", file_id= "27959",file_type= 1,if_cover= 1,file_sort= 1} - uploadGoods({ goods_name = "test2", goods_price = "1.00", goods_unit = "1", goods_profiles = "test2", class_id = "10103", shop_class_id = "1899", file_id = "27959", file_type = 1, if_cover = 1, file_sort = 1 }) { + //{"goods_name":"hellol","goods_price":"1.00","goods_unit":"1","goods_profiles":"111","class_id":"2","shop_class_id":"1928"} + uploadGoods({ goods_name = "test2", goods_price = "1.00", goods_unit = "1", goods_profiles = "test2", class_id = "10103", shop_class_id = "1930" }) { + const uploadProductGoodFileParams = [] + if (this.state.ImagesInfo.length) { + + for (let i = 0; i < this.state.ImagesInfo.length; i++) { + if (i === 0) { + + uploadProductGoodFileParams.push({ + file_id:this.state.ImagesInfo[i].file_id, + file_type: 1, + if_cover: 1, + file_sort: 1 + }) + } else { + uploadProductGoodFileParams.push({ + file_id: this.state.ImagesInfo[i].file_id, + file_type: 1, + if_cover: 0, + file_sort: 1 + }) + } + } + } else { + alert('图片为空') + } + + + Taro.request({ url: URL.UploadProduct, method: 'POST', @@ -72,12 +191,7 @@ class GoodsPublish extends Component { class_id: class_id, shop_class_id: shop_class_id }), - goodsFiles: JSON.stringify([{ - file_id: file_id, - file_type: file_type, - if_cover: if_cover, - file_sort: file_sort - }]) + goodsFiles: JSON.stringify(uploadProductGoodFileParams) }, header: { 'content-type': 'application/x-www-form-urlencoded', @@ -94,6 +208,33 @@ class GoodsPublish extends Component { this.setState({ uploadProductTextTip: '发布失败', isUploadProductSuccess: true }) }) } + // 整理后台传出来的店铺分类目录 + sortShopCateToState(shopData) { + const firstColumn = [] + const secondColumn = [] + const thirdColumn = [] + for (let outterItem of shopData) { + firstColumn.push({ id: outterItem.class_id, name: outterItem.class_name }) + if (outterItem.children.length) { + for (let middleItem of outterItem.children) { + secondColumn.push({ id: middleItem.class_id, name: middleItem.class_name }) + if (middleItem.children.length) { + for (let innerItem of middleItem.children) { + thirdColumn.push({ id: innerItem.class_id, name: innerItem.class_name }) + + } + } + } + } + } + + + //------- 把新指传给objectMultiArray之后就不可以用了 to be continue + // console.log('old',this.state.objectMultiArray) + // this.setState({objectMultiArray:[firstColumn,secondColumn,thirdColumn]},()=>{ + // console.log('new', this.state.objectMultiArray) + // }) + } // 改变商品分类状态 onChangeProductType(e) { @@ -140,17 +281,17 @@ class GoodsPublish extends Component { success(response) { const data = JSON.parse(response.data) const imagePath = URL.Base + data.file_path - const newFiles = that.state.files.concat({ url: imagePath }) - - that.setState({ files: newFiles, isUploadImageSuccess: true, uploadImageTextTip: '上传成功' }) - - + const newPickerImageUrl = that.state.pickerImageUrl.concat({ url: imagePath }) + const newImageInfo = that.state.ImagesInfo.concat(data) + that.setState({ pickerImageUrl: newPickerImageUrl, isUploadImageSuccess: true, uploadImageTextTip: '图片上传成功', ImagesInfo: newImageInfo }, () => { + // console.log(that.state.ImagesInfo) + }) } }) } if (operationType === 'remove') { - this.state.files.splice(index, 1); - this.setState({ files: this.state.files }); + this.state.pickerImageUrl.splice(index, 1); + this.setState({ files: this.state.pickerImageUrl }); that.setState({ isUploadImageSuccess: true, uploadImageTextTip: '删除成功' }) } } @@ -162,31 +303,37 @@ class GoodsPublish extends Component { onImageClick(index) { } onClickUploadGoods() { - if (this.state.productName && this.state.productPrice && this.state.productUnit && this.state.files.length) { + if (this.state.productName && this.state.productPrice && this.state.productUnit && this.state.ImagesInfo.length) { this.uploadGoods({ goods_name: this.state.productName, goods_price: this.state.productPrice, goods_unit: this.state.productUnit, goods_profiles: this.state.productDescript, class_id: "10103", - shop_class_id: "1899", - file_id: "27959", - file_type: 1, - if_cover: 1, - file_sort: 1 + shop_class_id: this.state.shopCategoryCheckedPicker, + + }) - }else{ + } else { this.setState({ uploadProductTextTip: '请填写完表格', isUploadProductSuccess: true }) } } + shopCategoryChanged(e) { + this.setState({ + shopCategoryCheckedPicker: this.state.shopCategoryPicker[e.detail.value] + }, () => { + console.log(this.state.shopCategoryCheckedPicker) + }) + } componentDidMount() { - + this.getProductCateList() + this.getShopCateList() } componentWillReceiveProps(nextProps) { - console.log(this.props, nextProps) + // console.log(this.props, nextProps) } componentWillUnmount() { } @@ -195,6 +342,174 @@ class GoodsPublish extends Component { componentDidHide() { } + //--- 三级联动-------------- + bindMultiPickerChange(e) { + console.log('picker发送选择改变,携带值为', e.detail.value) + this.setState({ + multiIndex: e.detail.value + }) + } + bindMultiPickerCol(e) { + console.log('修改的列为', e.detail.column, ',值为', e.detail.value) + const data = { + multiArray: this.state.objectMultiArray, + multiIndex: this.state.multiIndex + } + data.multiIndex[e.detail.column] = e.detail.value + switch (e.detail.column) { + case 0: + switch (data.multiIndex[0]) { + case 0: + data.multiArray[1] = [ + { + id: 0, + name: '01' + }, + { + id: 1, + name: '10a' + } + ] + data.multiArray[2] = [{ + id: 0, + name: '02' + }, + { + id: 1, + name: '02a' + }] + break + case 1: + data.multiArray[1] = [{ + id: 0, + name: '11' + }, + { + id: 1, + name: '11a' + }] + data.multiArray[2] = [{ + id: 0, + name: '12' + }, + { + id: 1, + name: '12a' + }] + break + } + data.multiIndex[1] = 0 + data.multiIndex[2] = 0 + break + case 1: + switch (data.multiIndex[0]) { + case 0: + switch (data.multiIndex[1]) { + case 0: + data.multiArray[2] = [{ + id: 0, + name: '无脊柱动物' + }, + { + id: 1, + name: '脊柱动物' + }] + break + case 1: + data.multiArray[2] = [ + { + id: 1, + name: '脊柱动物' + }] + break + case 2: + data.multiArray[2] = [{ + id: 0, + name: '无脊柱动物' + }, + { + id: 1, + name: '脊柱动物' + }] + break + case 3: + data.multiArray[2] = [{ + id: 0, + name: '无脊柱动物' + }, + { + id: 1, + name: '脊柱动物' + }, { + id: 0, + name: '无脊柱动物' + }, + { + id: 1, + name: '脊柱动物' + }] + break + case 4: + data.multiArray[2] = [{ + id: 0, + name: '无脊柱动物' + }, + { + id: 1, + name: '脊柱动物' + }] + break + } + break + case 1: + switch (data.multiIndex[1]) { + case 0: + data.multiArray[2] = [{ + id: 0, + name: '蛇' + }, + { + id: 1, + name: '青蛙' + }] + break + case 1: + data.multiArray[2] = [{ + id: 0, + name: '蛇' + }, + { + id: 1, + name: '青蛙' + }, { + id: 0, + name: '蛇' + }, + { + id: 1, + name: '青蛙' + }] + break + case 2: + data.multiArray[2] = [{ + id: 0, + name: '蛇' + }, + { + id: 1, + name: '青蛙' + }] + break + } + break + } + data.multiIndex[2] = 0 + break + } + console.log(data.multiIndex) + this.setState({ multiIndex: data.multiIndex }) + } + render() { const imageUploadSuccess = - + - *商品分类: {this.state.selectorChecked} + *商品分类: + {/* {this.state.multiArray[0][this.state.multiIndex[0]].name}{this.state.multiArray[1][this.state.multiIndex[1]].name}{this.state.multiArray[2][this.state.multiIndex[2]].name} */} + @@ -265,7 +589,7 @@ class GoodsPublish extends Component { {/* 店铺分类 */} - - * - 店铺分类: - - - - 国家: - - - - {this.state.list.map((item, i) => { - return ( - - ) - })} - - - - 国家: - - - - {this.state.list.map((item, i) => { - return ( - - ) - })} - - - - 国家: - - - - {this.state.list.map((item, i) => { - return ( - - ) - })} - - + + + + * + 店铺分类: + {this.state.shopCategoryCheckedPicker.name} + + + diff --git a/src/pages/home/home.js b/src/pages/home/home.js index b28a429..66a47e7 100644 --- a/src/pages/home/home.js +++ b/src/pages/home/home.js @@ -91,9 +91,11 @@ class Home extends Component { } }) .then(response => { - // console.log('登入', response) + console.log('登入', response) //储存后台返回的session_id 到local Storage Taro.setStorageSync('session_id', response.data.session_id) + Taro.setStorageSync('shopInfo', response.data.shop_info) + Taro.setStorageSync('userInfo', response.data.user_info) } ) diff --git a/src/pages/index/index.js b/src/pages/index/index.js index 5f22daf..b411f0b 100644 --- a/src/pages/index/index.js +++ b/src/pages/index/index.js @@ -30,8 +30,8 @@ class Index extends Component { Taro.navigateTo({ - url: '/pages/home/home' - // url: '/pages/goodsPublish/goodsPublish' + // url: '/pages/home/home' + url: '/pages/goodsPublish/goodsPublish' // url:'/pages/supplyDemandPublish/supplyDemandPublish' }) } diff --git a/src/serviceAPI.config.js b/src/serviceAPI.config.js index 45c9dbe..3fac7ac 100644 --- a/src/serviceAPI.config.js +++ b/src/serviceAPI.config.js @@ -18,6 +18,9 @@ const URL = { BuyConsult: LOCALURL + 'Shop-consult',// 购买咨询 GetShopItemDetail: LOCALURL + 'GoodsQuery-wxGoodsDetail',// 商品详情 // 商品发布api接口 + + GetShopCategoryList: LOCALURL + 'Shop-ajaxShopCartgory',// 商品分类目录 + GetProductCategoryList: LOCALURL + 'applet-getGoodsClass',// 商品分类目录 UploadPorductImage: LOCALURL + 'Goods-fileUpload',// 上传商品图片 UploadProduct: LOCALURL + 'Goods-phonePost',// 上传商品 UploadSupplyDemand: LOCALURL + 'Supply-post',// 上传供求