• shop--9.商品--批量操作--添加(前端) --***不能同时添加多张商品详情图***


    productoperation.html

    其中包括商品信息的添加和商品信息的修改,这个和店铺信息注册和修改用的是一样的

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>SUI Mobile Demo</title>
        <meta name="description" content="MSUI: Build mobile apps with simple HTML, CSS, and JS components.">
        <meta name="author" content="阿里巴巴国际UED前端">
        <meta name="viewport" content="initial-scale=1, maximum-scale=1">
        <link rel="shortcut icon" href="/favicon.ico">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black">
        <meta name="format-detection" content="telephone=no">
    
        <!-- Google Web Fonts -->
    
        <link rel="stylesheet" href="//g.alicdn.com/msui/sm/0.6.2/css/sm.min.css">
        <link rel="stylesheet" href="//g.alicdn.com/msui/sm/0.6.2/css/sm-extend.min.css">
        <link rel="stylesheet" href="//g.alicdn.com/msui/sm/0.6.2/css/sm-extend.min.css">
    
        <link rel="apple-touch-icon-precomposed" href="/assets/img/apple-touch-icon-114x114.png">
        <script>
            //ga
        </script>
        <script>
            var _hmt = _hmt || [];
            (function() {
                var hm = document.createElement("script");
                hm.src = "//hm.baidu.com/hm.js?ba76f8230db5f616edc89ce066670710";
                var s = document.getElementsByTagName("script")[0];
                s.parentNode.insertBefore(hm, s);
            })();
        </script>
    
    </head>
    <body>
    <div class="page-group">
        <div id="page-layout" class="page">
            <header class="bar bar-nav">
                <h1 class="title">商品编辑</h1>
            </header>
            <div class="content">
                <div class="list-block">
                    <ul>
                        <!-- Text inputs -->
                        <!--商品名称  text-->
                        <li>
                            <div class="item-content">
                                <div class="item-media"><i class="icon icon-form-name"></i></div>
                                <div class="item-inner">
                                    <div class="item-title label">商品名称</div>
                                    <div class="item-input">
                                        <input type="text" id="product_name" placeholder="商品名称">
                                    </div>
                                </div>
                            </div>
                        </li>
                        <!--商品类别  下拉列表-->
                        <li>
                            <div class="item-content">
                                <div class="item-media"><i class="icon icon-form-email"></i></div>
                                <div class="item-inner">
                                    <div class="item-title label">商品类别</div>
                                    <div class="item-input">
                                        <select id="category">
                                        </select>
                                    </div>
                                </div>
                            </div>
                        </li>
                        <!--优先级  number-->
                        <li>
                            <div class="item-content">
                                <div class="item-media"><i class="icon icon-form-name"></i></div>
                                <div class="item-inner">
                                    <div class="item-title label">优先级</div>
                                    <div class="item-input">
                                        <input type="number" id="priority" placeholder="数字越大越靠前">
                                    </div>
                                </div>
                            </div>
                        </li>
                        <!--原价  number-->
                        <li>
                            <div class="item-content">
                                <div class="item-media"><i class="icon icon-form-name"></i></div>
                                <div class="item-inner">
                                    <div class="item-title label">原价</div>
                                    <div class="item-input">
                                        <input type="number" id="normal_price" placeholder="可选">
                                    </div>
                                </div>
                            </div>
                        </li>
                        <!--现价  number-->
                        <li>
                            <div class="item-content">
                                <div class="item-media"><i class="icon icon-form-name"></i></div>
                                <div class="item-inner">
                                    <div class="item-title label">现价</div>
                                    <div class="item-input">
                                        <input type="number" id="promotion_price" placeholder="可选">
                                    </div>
                                </div>
                            </div>
                        </li>
                        <!--缩略图   上传控件  file-->
                        <li>
                            <div class="item-content">
                                <div class="item-media"><i class="icon icon-form-name"></i></div>
                                <div class="item-inner">
                                    <div class="item-title label">缩略图</div>
                                    <div class="item-input">
                                        <input type="file" id="small_img">
                                    </div>
                                </div>
                            </div>
                        </li>
                        <!--商品详情图片  file-->
                        <li>
                            <div class="item-content">
                                <div class="item-media">
                                    <i class="icon icon-form-email"></i>
                                </div>
                                <!--进行事件绑定,每添加一个详情图片,就生成一个新的-->
                                <div class="item-inner detail-img-div">
                                    <div class="item-title label">商品详情图片</div>
                                    <div class="item-input" id="detail_img">
                                        <input type="file" class="detail_img">
                                        <!--<input type="file" class="detail_img">
                                        <input type="file" class="detail_img">-->
                                    </div>
                                </div>
                            </div>
                        </li>
    
                        <!--商品描述 textarea-->
                        <li class="align-top">
                            <div class="item-content">
                                <div class="item-media"><i class="icon icon-form-comment"></i></div>
                                <div class="item-inner">
                                    <div class="item-title label">商品描述</div>
                                    <div class="item-input">
                                        <textarea id="product_desc" placeholder="商品描述"></textarea>
                                    </div>
                                </div>
                            </div>
                        </li>
    
                        <!--验证码  kaptcha-->
                        <li>
                            <div class="item-content">
                                <div class="item-media"><i class="icon icon-form-name"></i></div>
                                <div class="item-inner">
                                    <div class="item-title label">验证码</div>
                                    <input type="text" id="j_kaptcha" placeholder="验证码">
                                    <div class="item-input">
                                        <img id="kaptcha_img" alt="点击更换" title="点击更换"
                                             onclick="changeVerifyCode(this)" src="../Kaptcha">
                                    </div>
                                </div>
                            </div>
                        </li>
                    </ul>
                </div>
                <div class="content-block">
                    <div class="row">
                        <div class="col-50"><a href="/shopadmin/productmanagement" class="button button-big button-fill button-danger" id="back">返回商品管理</a></div>
                        <div class="col-50"><a href="#" class="button button-big button-fill button-success" id="submit">提交</a></div>
                    </div>
                </div>
            </div>
        </div>
    
    </div>
    <script type='text/javascript' src='//g.alicdn.com/sj/lib/zepto/zepto.min.js' charset='utf-8'></script>
    <script type='text/javascript' src='//g.alicdn.com/msui/sm/0.6.2/js/sm.min.js' charset='utf-8'></script>
    <script type='text/javascript' src='//g.alicdn.com/msui/sm/0.6.2/js/sm-extend.min.js' charset='utf-8'></script>
    <script type='text/javascript' src='../resources/js/shop/productop.js' charset='utf-8'></script>
    <script type='text/javascript' src='../resources/js/common/commons.js' charset="utf-8"></script>
    </body>
    </html>
    

      

    productop.js

    用来进行添加商品信息,修改商品信息之前(从数据库读取信息)和之后(想后台提交信息)

    以及响应商品信息提交按钮

    $(function(){
        //通过该方法获取是否传了productId  如果传了shopId,则是对shop进行更新,否则就是进行注册
        var productId=getQueryString('productId');
        //通过productId获取商品信息的URL
        var infoUrl='/shopadmin/getproductbyid?productId=' + productId;
        //获取当前店铺设定的商品类别列表的URL
        var categoryUrl = '/shopadmin/getproductcategorylist';
        //修改商品信息时,更新商品信息的URL
        var productPostUrl = '/shopadmin/modifyproduct';
        //由于商品添加和编辑使用的是同一个页面,该标识符用来标明本次是添加还是编辑操作
        //true表示修改商品信息,false表示添加商品信息
        var isEdit=productId ? true : false;
        //通过isEdit来判断是修改商品信息还是添加商品信息,来调用不同的方法
        if(isEdit){
            //修改商品信息
            getInfo(productId);
        } else{
            //添加商品信息
            getCategory();
            productPostUrl = '/shopadmin/addproduct';
        }
    
        //通过传入的productId,查询product的信息,然后获取到js页面中,为后面修改product信息做准备
        function getInfo(id){
            $.getJSON(infoUrl, function(data){
                if(data.success){
                    //从返回的JSON数据中获取product对象的信息,并赋值给表单
                    var product = data.product;
                    $('#product_name').val(product.productName);
                    $('#product_desc').val(product.productDesc);
                    $('#priority').val(product.priority);
                    $('#normal_price').val(product.normalPrice);
                    $('#promotion_price').val(product.promotionPrice);
                    //获取原本的商品类别,以及该店铺的所有商品类别列表
                    var optionHtml = '';
                    var optionArr = data.productCategoryList;
                    var optionSelected = product.productCategory.productCategoryId;
                    //生成前端的HTML商品类别列表,并默认选择编辑前的商品类别
                    optionArr.map(function(item, index){
                        var isSelect = optionSelected === item.productCategoryId ? 'selected' : '';
                        optionHtml += '<option data-value="'
                            + item.productCategoryId + '"' + isSelect
                            + '>' + item.productCategoryName + '</option>';
                    });
                    $('#category').html(optionHtml);
                }
            });
        }
    
        //为商品添加操作提供该店铺下的所有商品类别列表
        function getCategory(){
            $.getJSON(categoryUrl, function(data){
                if(data.success){
                    var optionHtml = '';
                    data.productCategoryList.map(function(item, index){
                        optionHtml += '<option data-value="'
                            + item.productCategoryId + '">'
                            + item.productCategoryName
                            + '</option>';
                    });
                    $('#category').html(optionHtml);
                }
            });
        }
    
        //针对商品详情图控件组,若该控件组的最后一个元素发生变化(即上传了图片),
        //且控件总数未达到6个,则生成新的一个文件上传控件
        $('.detail-img-div').on('change', '.detail-img:last-child', function(){
            if($('.detail_img').length < 6){
                $('#detail_img').append('<input type="file" class="detail_img">');
            }
        });
    
        //提交按钮,进行商品添加或编辑操作 url根据isEdit来分情况选择
        $('#submit').click(function(){
            var product = {};
            product.productName = $('#product_name').val();
            product.productDesc = $('#product_desc').val();
            product.priority = $('#priority').val();
            product.normalPrice = $('#normal_price').val();
            product.promotionPrice = $('#promotion_price').val();
            //获取选定商品类别值
            product.productCategory = {
                productCategoryId : $('#category').find('option').not(
                    function(){
                        return !this.selected;
                    }).data('value')
            };
            product.productId = productId;
    
            /*获取缩略图输入流*/
            var thunmnail = $('#small_img')[0].files[0];
            //生成表单对象,用于接收参数并传递给后台,在ajax中传递的参数
            var formData = new FormData();
            //参数的内容,分别是上面的shop和shop图片
            formData.append('thumbnail', thunmnail);
            //遍历商品详情图控件,获取里面的文件流
            $('.detail_img').map(
                function(item, index){
                    //判断该控件是否已选择了文件
                    if($('.detail_img')[index].files.length > 0){
                        //将第i个文件流赋值给key为productImg i 的表单键值对里
                        formData.append('productImg' + index, $('.detail_img')[index].files[0]);
                    }
                });
    
            //将product json对象转成字符流保存至表单对象key为productStr的键值对里
            formData.append('productStr', JSON.stringify(product));
    
            //获取表单里输入的验证码
            var verifyCodeActual = $('#j_kaptcha').val();
            if(!verifyCodeActual){
                $.toast('请输入验证码!');
                return;
            }
            formData.append('verifyCodeActual', verifyCodeActual);
            /*使用ajax提交到后台*/
            $.ajax({
                url:productPostUrl,
                type:'POST',
                data:formData,
                contentType:false,
                processData:false,
                cache:false,
                success:function(data){
                    if(data.success){
                        $.toast('提交成功!');
                        /*更换验证码*/
                        $('#kaptcha_img').click();
                    } else{
                        $.toast('提交失败!' + data.errMsg);
                        $('#kaptcha_img').click();
                    }
                }
            });
        });
    
    });
    

      

  • 相关阅读:
    iOS 单例(Singleton)总结 和第三库引用单例
    iOS OpenURL用法简介
    CGContextRef学习笔记
    iOS 绘图(虚线、椭圆)
    iPhone4s 7.0.3-4 TableView 数据越界 解决方案
    Android Media应用开发
    RTMP & HLS
    Debug tool 学习笔记
    video codec 学习笔记
    matplotlib和numpy 学习笔记
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/8999854.html
Copyright © 2020-2023  润新知