UNPKG

simple-coder

Version:

simple code tool

150 lines (129 loc) 5.59 kB
import { Image, RichText, Text, View } from '@tarojs/components'; import Taro from '@tarojs/taro'; import { BasePage } from 'simple-framework-mini/base'; import * as RichTextHelper from 'simple-framework-mini/utils'; import { AtTabs, AtTabsPane } from 'taro-ui'; import "taro-ui/dist/style/components/message.scss"; import "taro-ui/dist/style/components/tabs.scss"; import BrandModel from '../../models/BrandModel'; import ServiceDetailModel from '../../models/ServiceDetailModel'; import textUtil from '../../util/textUtil'; import './detail.less'; /** * 服务详情页 * 底部可加购物车,加入购物车,去下单 * 下单跳转至订单新增页面 */ export default class Index extends BasePage { config = { navigationBarTitleText: '服务详情' } constructor(props) { super(props) this.pageName = "服务详情页"; } componentDidMount() { super.componentDidMount(); let that = this; let params = Taro.getCurrentInstance().router.params; BrandModel.findById(params.serviceId).then((response) => { // Taro.atMessage({ // message: '查询详情失败', // type: "warning", // }) if (response && response.data) { that.setState({ service: response.data }); } else { // Taro.atMessage({ // message: '查询详情失败', // type: "warning", // }) } }) ServiceDetailModel.deviceList(params.serviceId).then((response) => { if (response && response.data && response.data.items) { that.setState({ deviceList: response.data.items }) } else { } }) } componentWillUnmount() { } componentDidShow() { } componentDidHide() { } state = { service: { name: '~', image: '', price: 0, stock: '', content: '详情信息~', parameter: '参数~', service: '服务~', }, deviceList: [], curIndex: 0, } onSwitchTab = (tabIndex) => { this.setState({ curIndex: tabIndex }); } renderTabContent = (current, tabIndex, richContent) => <AtTabsPane current={current} index={tabIndex} > <View className='goods-content'> <RichText nodes={RichTextHelper.convertRichTextImage(richContent)} /> </View> </AtTabsPane> render() { let that = this; let service = this.state.service; let deviceList = this.state.deviceList; let defaultImage = "http://images.koudaibook.com/windwithlife/cb83307978654e4a865e3c21866a3716.jpeg" let displayImage = textUtil.isNotEmpty(service.image) ? service.image : (textUtil.isNotEmpty(service.logo) ? service.logo : defaultImage) let showTab = service.content || service.parameter || service.service return ( <View className="goods-root-container"> <View className="goods-info-container"> <View className="goods-image-box"> <Image src={displayImage} className="goods-thumb"></Image> </View> <View className="goods-info"> <Text className="goods-name">{service.name}</Text> {service.price && <View className="goods-price">¥{service.price ?? 1}</View>} {showTab && <Text className="goods-description">{service.description}</Text>} </View> { showTab === true ? <AtTabs current={this.state.curIndex} onClick={that.onSwitchTab.bind(this)} tabList={[{ title: '服务详情' }, { title: '产品参数' }, { title: '售后保障' },]} > {service.content && this.renderTabContent(this.state.curIndex, 0, service.content) } {service.content && this.renderTabContent(this.state.curIndex, 1, service.parameter) } {service.service && this.renderTabContent(this.state.curIndex, 2, service.service) } </AtTabs> : <View className="goods-content"> {service.description} {deviceList && deviceList.length > 0 && <View className='device-list'> 支持设备列表: {deviceList.map((deviceItem) => { return <View className='device-item'> {deviceItem.name} </View> }) } </View> } </View> } </View> <View className='bottom-space' /> </View> ) } }