1. import React from 'react';
  2. import MUtil from 'util/mm.jsx'
  3. import Product from 'service/product-service.jsx'
  4. import PageTitle from 'component/page-title/index.jsx';
  5. import CategorySelector from './category-selector.jsx';
  6.  
  7. import './save.scss';
  8.  
  9. const _mm = new MUtil();
  10. const _product = new Product();
  11.  
  12. class ProductDetail extends React.Component{
  13.     constructor(props){
  14.         super(props);
  15.         this.state = {
  16.             id : this.props.match.params.pid,
  17.             name : '',
  18.             subtitle : '',
  19.             categoryId : 0,
  20.             parentCategoryId : 0,
  21.             subImages : [],
  22.             price : '',
  23.             stock : '',
  24.             detail : '',
  25.             status : 1 //商品状态1为在售
  26.         }
  27.     }
  28.     componentDidMount(){
  29.         this.loadProduct();
  30.     }
  31.     // 加载商品详情
  32.     loadProduct(){
  33.         // 有id的时候,表示是编辑功能,需要表单回填
  34.         if(this.state.id){
  35.             _product.getProduct(this.state.id).then((res) => {
  36.                 let images = res.subImages.split(',');
  37.                 res.subImages = images.map((imgUri) => {
  38.                     return {
  39.                         uri: imgUri,
  40.                         url: res.imageHost + imgUri
  41.                     }
  42.                 });
  43.                 this.setState(res);
  44.             }, (errMsg) => {
  45.                 _mm.errorTips(errMsg);
  46.             });
  47.         }
  48.     }
  49.     render(){
  50.         return (
  51.             <div id="page-wrapper">
  52.                 <PageTitle title="添加商品" />
  53.                 <div className="form-horizontal">
  54.                     <div className="form-group">
  55.                         <label className="col-md-2 control-label">商品名称</label>
  56.                         <div className="col-md-5">
  57.                             <p className="form-control-static">{this.state.name}</p>
  58.                         </div>
  59.                     </div>
  60.                     <div className="form-group">
  61.                         <label className="col-md-2 control-label">商品描述</label>
  62.                         <div className="col-md-5">
  63.                             <p className="form-control-static">{this.state.subtitle}</p>
  64.                         </div>
  65.                     </div>
  66.                     <div className="form-group">
  67.                         <label className="col-md-2 control-label">所属分类</label>
  68.                         <CategorySelector
  69.                             readOnly
  70.                             categoryId={this.state.categoryId}
  71.                             parentCategoryId={this.state.parentCategoryId}/>
  72.                     </div>
  73.                     <div className="form-group">
  74.                         <label className="col-md-2 control-label">商品价格</label>
  75.                         <div className="col-md-3">
  76.                             <div className="input-group">
  77.                                 <input type="number" className="form-control"
  78.                                     value={this.state.price} readOnly/>
  79.                                 <span className="input-group-addon">元</span>
  80.                             </div>
  81.                         </div>
  82.                     </div>
  83.                     <div className="form-group">
  84.                         <label className="col-md-2 control-label">商品库存</label>
  85.                         <div className="col-md-3">
  86.                             <div className="input-group">
  87.                                 <input type="number" className="form-control"
  88.                                     value={this.state.stock} readOnly/>
  89.                                 <span className="input-group-addon">件</span>
  90.                             </div>
  91.  
  92.                         </div>
  93.                     </div>
  94.                     <div className="form-group">
  95.                         <label className="col-md-2 control-label">商品图片</label>
  96.                         <div className="col-md-10">
  97.                             {
  98.                                 this.state.subImages.length ? this.state.subImages.map(
  99.                                     (image, index) => (
  100.                                     <div className="img-con" key={index}>
  101.                                         <img className="img" src={image.url} />
  102.                                     </div>)
  103.                                 ) : (<div>暂无图片</div>)
  104.                             }
  105.                         </div>
  106.                     </div>
  107.                     <div className="form-group">
  108.                         <label className="col-md-2 control-label">商品详情</label>
  109.                         <div className="col-md-10" dangerouslySetInnerHTML={{__html: this.state.detail}}></div>
  110.                     </div>
  111.                 </div>
  112.             </div>
  113.         )
  114.     }
  115. }
  116. export default ProductDetail;

React后端管理系统-商品详情detail组件的更多相关文章

  1. React后台管理系统-商品管理列表组件

    1.商品列表页面结构 <div id="page-wrapper">              <PageTitle title="商品列表" ...

  2. React后台管理系统-商品列表搜索框listSearch组件

    1.商品列表搜索框 2.搜索框页面的结构为 <div className="row search-wrap">               <div classN ...

  3. React后台管理系统-订单管理

    1.订单管理页面和商品管理页面类似,都是一个搜索组件+列表组件 2.搜索框search组件 import React from 'react';   class ListSearch extends ...

  4. React后台管理系统-添加商品组件

    引入了CategorySelector 二级联动组件.FileUploader图片上传组件和RichEditor富文本编辑组件 import React from 'react'; import MU ...

  5. React后台管理系统-rich-editor组件

    1.Simditor组件的github地址:https://github.com/mycolorway/simditor 网址:http://simditor.tower.im/ 2.在util里边新 ...

  6. react 从商品详情页返回到商品列表页,列表自动滚动上次浏览的位置

    现状:目前从商品详情页返回到商品列表页,还需要再去请求服务数据,还需要用户再去等待获取数据的过程,这样用户体验非常不好, 遇到的问题: 1:如何将数据缓存, 2:如何获取和保存列表滑动的高度, 3:判 ...

  7. 商品详情页系统的Servlet3异步化实践

    http://jinnianshilongnian.iteye.com/blog/2245925 博客分类: 架构   在京东工作的这一年多时间里,我在整个商品详情页系统(后端数据源)及商品详情页统一 ...

  8. [springboot 开发单体web shop] 8. 商品详情&评价展示

    上文回顾 上节 我们实现了根据搜索关键词查询商品列表和根据商品分类查询,并且使用到了mybatis-pagehelper插件,讲解了如何使用插件来帮助我们快速实现分页数据查询.本文我们将继续开发商品详 ...

  9. Webpact打包React后端Node+Express

    Webpact打包React后端Node+Express 前言 React官方推荐用Browserify或者Webpack 来开发React组件. Webpack 是什么?是德国开发者 Tobias ...

随机推荐

  1. HBase学习(一)

    HBase是建立在Hadoop文件系统之上的分布式面向列的数据库.它是一个开源项目,是横向扩展的. HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据.它利用了Hado ...

  2. sqlserver 2012 部署详解

    01,下载 官网下载: https://www.microsoft.com/zh-cn/download/details.aspx?id=29066 02,安装 检查系统环境配置 成功了就继续,其他的 ...

  3. 【Linux】debian 7 安装 rz sz lrzsz

    通常linux服务器是通过ssh客户端来进行远程登录和管理的.然而如何方便的实现客户端与linux服务器端的文件交互呢?这就需要用到rz(上传).sz(下载)工具.在Ubuntu 10.10下安装rz ...

  4. css内容整理1

    1.css引入的四种方式1.行内2.内嵌3.链接 <link href="1.css" rel="stylesheet">4.导入@import u ...

  5. Aspose.Words导出图片 表格 Interop.Word

    先定义一个WORD 模板, 然后替换文本.域 ,定位开始表格 文本和段落 // Specify font formatting Aspose.Words.Font font = builder.Fon ...

  6. SQL DATEDIFF语法及时间函数 Sql 查询当天、本周、本月记录

    SQL DATEDIFF语法及时间函数 Sql 查询当天.本周.本月记录 转:http://blog.csdn.net/Json1204/article/details/7863801?locatio ...

  7. iOS-swift-类和对象

    1.类(class) 使用关键字 class 创建一个类.属性直接在类里面声明,属性可以是变量,也可以是常量.方法和函数的创建方法一致. class Shape { var numberOfSides ...

  8. Android Process & Thread

    Native Service and Android Service Native Service:In every main() method of NativeService, which is ...

  9. 使用C#实现计划任务(corn job)

    维基百科上是这样描述计划任务的: “Cron is a time-based job scheduler in Unix-like computer operating systems. Cron i ...

  10. PHP设计模式之单例模式

    <?php #千锋PHP http://www.qfedu.com/php/? #千锋PHP http://www.qfedu.com/php/? namespace app; /** * Cl ...