近期的前端工作总结 <二>

2018-08-08  本文已影响0人  步履不停的Suunny

前些天写过一个前端页面,后来增加了需求,之前写的页面部分不可用了,所以又重新写了一下。之前写的

领导描述了下新需求,没有需求和接口文档都没有。

需求描述:

1、获取图片TaskList, 接口输入:User ID, 返回:json格式数据,包含taskid list
2、根据tasklist,展示所有图片缩略图(或list)
3、点击一张图片,展示图片,并显示InvoiceID和InvoiceNum图片和文本信息。
接口信息: 输入taskID和UserID,返回json数据,包含InvoiceID和InvoiceNum图片的base64信息和文本信息
4、InvoiceID和InvoiceNum文本信息有错则修改,并提交 。接口还没给。

问题

1、根据tasklist ,展示所有图片的缩略图或list。 找了几个方案不理想,主要的问题是要根据获取的list个数动态生成缩略图,最后请教前端的大神,推荐使用Swiper的virtual slide框架。 我直接将此框架放到页面的最下面,框架可以完整的显示出来。 接下来就是要调整为自己的内容了。
2、点击图片list 后,展示相关信息, 首先virtual slides点击触发是个问题,虽然可以定位到元素,但是怎么触发点击事件?试了很久最终解决了
3、触发点击事件后,展示图片和InvoiceID和InvoiceNum图片和文本信息。 这个我想来应该是同步显示的。怎么同步显示呢?
4、HTML显示base64格式的图片
6、json解析
7、跨域请求等等

通过代码实现来分析。

1、Swiper的virtual slide方案:

https://www.swiper.com.cn/api/callbacks/2015/0308/225.html
http://idangero.us/swiper/demos/
http://idangero.us/swiper/demos/410-virtual-slides.html 使用的是这个方案。

我是直接把源码下载下来了,
https://github.com/nolimits4web/Swiper/blob/master/demos/410-virtual-slides.html

注意下面的css和js文件都要下载下来。



留下了我需要的功能,html代码如下:

   <!-- Swiper -->
    <div class="swiper-container">
        <div class="swiper-wrapper"></div>
        <div class="swiper-pagination"></div>
        <div class="swiper-button-next"></div>
        <div class="swiper-button-prev"></div>
    </div>

js代码:

   var tasklist = getTaskList(); 
    var tasklistNum = getTasklistNum();
    var swiper = new Swiper('.swiper-container', {
    slidesPerView:5,
    centeredSlides: true,
    spaceBetween: tasklistNum,
    pagination: {
        el: '.swiper-pagination',
        type: 'fraction',
    },
    navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev',
    },
    virtual: {
        slides: (function () {
            var slides = [];
            for (var i = 0; i<tasklistNum; i+=1) {
                slides.push("Slide "+(tasklist[i].slice(0,5)));
            }
        return slides;
        }()),
    },
    on:{                   //通过on click ,解决了第二个问题,如何触发点击
        click:function () {
            if (this.clickedIndex == undefined)
            {
                pass;
            }

            var imgsrc = tasklist[this.clickedIndex];   // 通过this.clickedIndex 获取点击的slide
           //触发点击slide后,显示对应的完整图片,图片信息图,图片文本信息,第三个问题解决
            setImg(imgsrc);    
            //alert("imgsrc:" + imgsrc)
            showNumAndID(imgsrc);
            getInvocieInfo(imgsrc);
        }
    }
})

2、如何显示base64格式的图片?比较容易,img src的值设置为如下即可:

js部分:
baseURl = "data:image/png;base64,";
base64 =getInvoiceBase64(taskId,"invoiceNum");  // 函数getInvoiceBase64返回图片的base64格式编码

html部分: 
<img src =baseURl+base64  />

3、json解析,以及跨域问题,下面代码说明:

function getInvoiceBase64(taskId, invocetype) {
        //通过ajax请求接口,get方式。
        $.ajax({      
            type: 'GET',
            dataType: 'json',     // 数据类型配置成json
            url: 'http://180ly66419.iok.la:5000/api/detect_in?1=1&user_id=2&task_id='+taskId, //服务路径
            async: false,
            timeout: 5,
            headers: {
                'Access-Control-Allow-Origin': '*',   //这里的内容,并没有解决跨域问题,最后是服务端添加了这部分内容解决的
            },

            jsonp: "callback",
            jsonpCallback: "jsonpCallback",
            success: function (response) {
                responseData = JSON.stringify(response);   //此处处理json文件
                var obj = eval('(' + responseData + ')');   //eval解析
                imgNumBase64 =  obj.data["DocNumber_encode"]; 
                imgIDBase64  = obj.data["DocType_encode"];
                //alert(imgSrc);
            },
            error: function () {
                alert('服务器异常!');
            }
        });
        if (invocetype == "invoiceNum")
        {
            return imgNumBase64 ;
        }
        else if (invocetype == "invoiceID")
        {
            return imgIDBase64  ;
        }
    }

返回json文件内容:

{
  "data": {
    "DocNumber_encode":    "/9j/4AAQSkZJRgABAQAUUUAFFFFABRRRQAUUUUAFFFFAH//Z", 
    "DocNumber_ocr_result": "10611830", 
    "DocType_encode": "/9j/4AAQSkZJRgABAQAAAKKKACiiigAooooAKKKKACiiigAooooA//9k=", 
    "DocType_ocr_result": "4200164130", 
    "file_type": "jpg", 
    "task_id": "7207a12d5ab594035051b49222b012f9", 
    "user_id": "123456"
  }, 
  "msg": "Access webpage success.", 
  "ret": 200
}

json解析,参考文档:https://www.cnblogs.com/jtlgb/p/6137915.html

还有两个接口没给,基本调完了。 页面如下:


上一篇下一篇

猜你喜欢

热点阅读