todo list: 首页: 商品发布页面: 供求发布页面 全部业主需求页面: 我的供求页面: 我的商品列表页面 商品编辑页面 我的需求列表页面: 接口问题: 优惠卷和询价 bug: 商品编辑 增加图片后 图片顺序乱了 等待后台--- 单个我的商品页面的图片顺序,单个我的需求页面的接口, 当个我哦的需求编辑页面的接口 import Taro, { Component } from '@tarojs/taro' import { View, Text } from '@tarojs/components' import { Picker } from 'taro-ui' import './goodsTypeInteractionComp.scss' class GoodsTypeInteractionComp extends Component { config = { navigationBarTitleText: 'goodsTypeInteractionComp' } constructor() { super(...arguments); this.state = { ///---行业分类 开始 objectMultiArray: [[{ name: '选择商品分类', id: '' }], [], []], multiIndex: [0, 0, 0, 0], formatInWindow: [], ///---行业分类 结束 } } //商品目录请求api GetShopCategoryList getProductCateList(url) { Taro.request({ url: url, 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') { console.log('商品分类目录', res) this.formatIndustryType(res.data.data) this.formatIndustTypeInit(res.data.data) this.setState({goodsTypeList:res.data.data}) } else { console.log('商品分类请求没有成功', res) } } ) .catch(error => { console.log('商品分类请求错误', error) }) } // 第一种formate 用于底部弹层滚动时的数据 formatIndustryType(data) { const newIndustryType = [] if (data) { for (let outter of data) { let outterObject = { name: outter.class_name, id: outter.class_id, children: [] } if (outter.children) { for (let middler of outter.children) { const middleObject = { name: middler.class_name, id: middler.class_id, children: [] } outterObject.children.push(middleObject) if (middler.children) { for (let inner of middler.children) { const innerObject={ name: inner.class_name, id: inner.class_id,children: [] } middleObject.children.push(innerObject) if (inner.children) { for (let final of inner.children) { innerObject.children.push({ name: final.class_name, id: final.class_id }) } } else { innerObject.children.push({ name: '', id: '' }) } } } else { middleObject.children.push({ name: '', id: '' }) } } } else { outterObject.children.push({ name: '', id: '', children: [] }) } newIndustryType.push(outterObject) } } else { console.log('店铺分类数据问题') } this.setState({ formatInWindow: newIndustryType }, () => { console.log('滚动时的数据', this.state.formatInWindow) }) } //第二种format 用于底部弹层的初始化数据 formatIndustTypeInit(data) { const firstArray = [] const secondArray = [] const thirdArray = [] for (let outter of data) { firstArray.push({ name: outter.class_name, id: outter.class_id }) if (outter.children) { for (let middler of outter.children) { secondArray.push({ name: middler.class_name, id: middler.class_id }) if (middler.children) { for (let inner of middler.children) { thirdArray.push({ name: inner.class_name, id: inner.class_id }) } } } } } // 这里不能加入secondArray,和thirdArray 会有bug this.setState({ objectMultiArray: [firstArray, [{ name: '', id: '' }], [{ name: '', id: '' }]] }, () => { console.log('初始化数据', this.state.objectMultiArray) }) } //--- 三级联动-------------- bindMultiPickerChange(e) { console.log('picker发送选择改变,携带值为', e.detail.value) this.setState({ multiIndex: e.detail.value }, () => { this.returnResultToParent() }) } returnResultToParent() { let result = '' let outter = this.state.formatInWindow[this.state.multiIndex[0]] let middler = outter.children[this.state.multiIndex[1]] let inner = middler.children[this.state.multiIndex[2]] if (outter.id) { result = outter if (middler.id) { result = middler if (inner.id) { result = inner } } } this.passDataToParent(result) } 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] = this.state.formatInWindow[0].children data.multiArray[2] = this.state.formatInWindow[0].children break case 1: data.multiArray[1] = this.state.formatInWindow[1].children break case 2: data.multiArray[1] = this.state.formatInWindow[2].children break case 3: data.multiArray[1] = this.state.formatInWindow[3].children break case 4: data.multiArray[1] = this.state.formatInWindow[4].children break } data.multiIndex[1] = 0 data.multiIndex[2] = 0 data.multiIndex[3] = 0 break case 1: switch (data.multiIndex[0]) { case 0: break case 1: switch (data.multiIndex[1]) { case 0: data.multiArray[2] = this.state.formatInWindow[1].children[0].children break case 1: data.multiArray[2] = this.state.formatInWindow[1].children[1].children break case 2: data.multiArray[2] = this.state.formatInWindow[1].children[2].children break case 3: data.multiArray[2] = this.state.formatInWindow[1].children[3].children ? this.state.formatInWindow[1].children[3].children : [{ class_name: '' }] break } break case 2: switch (data.multiIndex[1]) { case 0: data.multiArray[2] = this.state.formatInWindow[2].children[0].children break case 1: data.multiArray[2] = this.state.formatInWindow[2].children[1].children break case 2: data.multiArray[2] = this.state.formatInWindow[2].children[2].children break case 3: data.multiArray[2] = this.state.formatInWindow[2].children[3].children break case 4: data.multiArray[2] = this.state.formatInWindow[2].children[4].children break case 5: data.multiArray[2] = this.state.formatInWindow[2].children[5].children break } break case 3: switch (data.multiIndex[1]) { case 0: data.multiArray[2] = this.state.formatInWindow[3].children[0].children break case 1: data.multiArray[2] = this.state.formatInWindow[3].children[1].children break case 2: data.multiArray[2] = this.state.formatInWindow[3].children[2].children break case 3: data.multiArray[2] = this.state.formatInWindow[3].children[3].children break case 3: data.multiArray[2] = this.state.formatInWindow[3].children[3].children break } break case 4: switch (data.multiIndex[1]) { case 0: data.multiArray[2] = this.state.formatInWindow[4].children[0].children break case 1: data.multiArray[2] = this.state.formatInWindow[4].children[1].children break case 2: data.multiArray[2] = this.state.formatInWindow[4].children[2].children break } break } data.multiIndex[2] = 0 data.multiIndex[3] = 0 break } this.setState({ multiIndex: data.multiIndex }) } //--------------------结束-行业分类picker passDataToParent(industryTypeSelected) { this.props.onPassDataToChild(industryTypeSelected) } componentDidMount() { this.getProductCateList(this.props.url) } // 当然父组件有新的props的 会从新渲染组件 componentWillReceiveProps(nextProps) { } componentWillUnmount() { } componentDidShow() { } componentDidHide() { } render() { return ( * 商品分类: {this.props.selectedValue.name} {/* {this.state.objectMultiArray[0].length? {this.state.objectMultiArray[0][this.state.multiIndex[0]].name}:null} {this.state.objectMultiArray[1].length?{this.state.objectMultiArray[1][this.state.multiIndex[1]].name}:null} {this.state.objectMultiArray[2].length?{this.state.objectMultiArray[2][this.state.multiIndex[2]].name}:null} */} ) } } export default GoodsTypeInteractionComp