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. DTCMS 网站管理系统

    dtcms适合开发一些简单小型网站 开发的过程中遇见了各种问题,下面总结下我遇见的问题 1.遇见提示未开启生成静态功能 在系统设置里面将“伪URL重写”为“生成静态”可以解决 2.在生成静态页面的时候 ...

  2. elastic search语句

    基本匹配: { "query":{ "match":{ "title" : "quick" } } } ES语法结构: ...

  3. CAD安装失败怎样卸载CAD 2014?错误提示某些产品无法安装

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  4. Murano Setup Steps

    1. Select a Linux Distribution Only Ubuntu 14.04 (Trusty), Fedora 21 (or Fedora 22) and CentOS/RHEL ...

  5. Ruby on Rails 中你使用了Kaminari 后,千万不要再引入will_pagination 这个Gem 了

    今日做开发的时候发现的这个问题 发现无论怎样配置都不能使用Kaminari 的Per 这个功能,分页大小也固定在了30 最开始还以为是Ransack 这个Gem 影响的,上网搜了很久发现没有 最后仔细 ...

  6. httpd 的坑

    Httpd服务器的坑 在/etc/httpd/conf/httpd.conf中的配置信息, 有时注释到的内容仍然会生效 配置Auth时, 允许htpasswd规定的文件中的所有的用户, Require ...

  7. C#中实现输入汉字获取其拼音(汉字转拼音)的2种方法

    主要介绍了C#中实现输入汉字获取其拼音(汉字转拼音)的2种方法,本文分别给出了使用微软语言包.手动编码实现两种实现方式,需要的朋友可以参考下 本文刚发布时,只写了一个实现方式,使用的是微软的语言包,但 ...

  8. c#实体转化

    经常会遇到把一个实体转化成另一个实体这样的情况,实体的属性一个一个手写去转化不反对,但不是啥好的方法:可以使用反射写一个通用的实体转化类,针对任何实体转化,不用再去自己手写. public stati ...

  9. case when then[转]

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  10. 随机练习:C#实现维吉尼亚加密与解密(解密前提为已知密匙)

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...