zoukankan      html  css  js  c++  java
  • JavaWeb实战:报价计算系统(layui+tomcat+cookie实现)

    JavaWeb实战:报价计算系统(layui+tomcat+cookie实现)

    系统概述:

    该系统是文物物流公司的一个小功能模块,用于帮助用户计算运费。点击查看实际效果

    系统文档:

    添加展品:

    在表单内添加展品信息,完毕后点击添加展品,即可在展品列表中显示相应的展品信息,也可以对已经添加的展品进行删除,完成之后点击下一步。

    添加行程:

    使用方法与添加行程类似,添加完毕之后点击先一步。

    生成报价:

    在下拉选项栏中选择服务公司,选择完毕点击立即查询即可生成报价。

    开发中使用的技术:

    layui

    tomcat

    json

    cookie

    实现思路:

    我个人的想法是,先这个把这个系统划分生两大部分:第一部分:展品、行程列表的管理,第二部分:报价计算。

    第一部分、展品、行程列表的管理:

    展品和行程可以看作是两个类,那么展品和行程列表就可以看成是两个ArrayList,展品和行程列表的管理就可以看作是Array List的增加、删除和查询整个链表。

    明白这个道理后,就是具体的操作实现了。所以我宏观的思路是前端进行信息的提交,后端进行详细的信息操作。

    添加:前端发送添加展品/行程的信息,后端得到表单数据,生成cookie;

    删除:前端发送删除展品的信息,后端接受信息并读取cookie生成链表删除删除相应对象,更新cookie。

    显示列表:后端读取cookie,将cookie转换为json发送至客户端,前端根据后端json生成列表。

    第二部分、报价计算:

    该部分比较简单,得到展品和行程的ArrayList根据相应公式计算的到总价。

    代码实现:

    servlet类(实现行程和展品信息的处理和给前端发送数据)

    package com.bdzp.servlet;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.bdzp.Utils.GetWord;
    import com.bdzp.daomain.modelContractParams;
    import com.bdzp.daomain.modelTrip;
    import com.bdzp.daomain.modelVolume;
    import com.bdzp.service.PriceService;
    import com.bdzp.service.imp.PriceServiceTestImpI;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.*;
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    import java.net.http.HttpResponse;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.*;
    
    @WebServlet(name = "ServletPriceTest")
    public class ServletPriceTest extends HttpServlet {
        private static  final long serialVersionUID=1L;
        private PriceService ps=new PriceServiceTestImpI();
        modelContractParams params=new modelContractParams();
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("UTF-8");//解决乱码
            response.setContentType("text/html;charset=UTF-8");
            String type =request.getParameter("command");
            if ("addDisplay".equals(type))
            {
                addDisplay(request,response);
            }else if("delDisplay".equals(type)){
                delDisplay(request,response);
            }else if("getDisplayList".equals(type)){
                getDisplayList(request,response);
            }else if("addTrip".equals(type)){
                addTrip(request,response);
            }else if("delTrip".equals(type)){
                delTrip(request,response);
            }else if("getTripList".equals(type)) {
                getTripList(request, response);
            } else if("getPrice".equals(type)){
                getPrice(request,response);
            }else if ("submitParams".equals(type)){
                try {
                   params=submitParams(request, response);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }else if ("madeContract".equals(type)){
                    downloadFileTest(request, response,params);
            }
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request, response);
        }
        public void addDisplay(HttpServletRequest request,HttpServletResponse response){
            String name=request.getParameter("displayName");
            int amount=Integer.parseInt(request.getParameter("amount"));
            int height=Integer.parseInt(request.getParameter("height"));
            int width=Integer.parseInt(request.getParameter("width"));
            int length=Integer.parseInt(request.getParameter("length"));
            modelVolume volume=new modelVolume();
            volume.setName(name);
            volume.setAmount(amount);
            volume.setLength(length);
            volume.setWidth(width);
            volume.setHeight(height);
            if (addDisplay(volume,response,request)){
                System.out.println("添加展品成功");
                PrintWriter out= null;
                try {
                    out = response.getWriter();
                    out.print("Y");
                    out.flush();
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        public void delDisplay(HttpServletRequest request,HttpServletResponse response){
            String name=request.getParameter("displayName");
            if (delDisplay(name,response,request)){
                System.out.println("删除展品成功");
                PrintWriter out=null;
                try {
                    out=response.getWriter();
                    out.print("Y");
                    out.flush();
                    out.close();
                }catch (IOException e ){
                    e.printStackTrace();
                }
            }
        }
        public void getDisplayList(HttpServletRequest request,HttpServletResponse response){
            String json = null;
            try {
                json = "{"code":0,"msg":"","count":0,"data":" + JSON.toJSONString(getDisplayArrayList(request, response)) + "}";
            System.out.println(json);
                PrintWriter out=null;
                out = response.getWriter();
                out.print(json);
                out.flush();
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        public void addTrip(HttpServletRequest request,HttpServletResponse response){
            String name=request.getParameter("tripName");
            String start=request.getParameter("start");
            String end=request.getParameter("goal");
            int bigCarAmount=Integer.parseInt(request.getParameter("bigCarAmount"));
            int smallCarAmount=Integer.parseInt(request.getParameter("smallCarAmount"));
            int bigCarDistance=Integer.parseInt(request.getParameter("bigCarDistance"));
            int smallCarDistance=Integer.parseInt(request.getParameter("smallCarDistance"));
            int workerAmount=Integer.parseInt(request.getParameter("workerAmount"));
            int workerDays=Integer.parseInt(request.getParameter("workerDays"));
            modelTrip trip=new modelTrip();
            trip.setName(name);
            trip.setStart(start);
            trip.setEnd(end);
            trip.setBigCarAmount(bigCarAmount);
            trip.setBigCarDistance(bigCarDistance);
            trip.setSmallCarAmount(smallCarAmount);
            trip.setSmallCarDistance(smallCarDistance);
            trip.setWorkerAmount(workerAmount);
            trip.setWorkerDays(workerDays);
            if (addTrip(trip,response,request)){
                System.out.println("添加行程成功");
                PrintWriter out= null;
                try {
                    out = response.getWriter();
                    out.print("Y");
                    out.flush();
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        public void delTrip(HttpServletRequest request,HttpServletResponse response){
            String name=request.getParameter("tripName");
            if (delTrip(name,response,request)){
                System.out.println("删除行程成功");
                PrintWriter out=null;
                try {
                    out=response.getWriter();
                    out.print("Y");
                    out.flush();
                    out.close();
                }catch (IOException e ){
                    e.printStackTrace();
                }
            }
        }
        public void getTripList(HttpServletRequest request,HttpServletResponse response){
            try {
            String json = "{"code":0,"msg":"","count":0,"data":" + JSON.toJSONString(getTripArrayList(request, response)) + "}";
            System.out.println(json);
                PrintWriter out=null;
                out = response.getWriter();
                out.print(json);
                out.flush();
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        public boolean addDisplay(modelVolume model,HttpServletResponse response,HttpServletRequest request) {
            boolean flag=false;
            try {
            //value中储存的使json字符转,将json字符串转换为对象数组
            Cookie cookie=getCookie("displayList",response, request);
            //将json字符串转换为对象数组
            ArrayList<modelVolume> displayList=new ArrayList<modelVolume>();
                String cookieValue=URLDecoder.decode(cookie.getValue(), "utf-8");
                displayList= (ArrayList<modelVolume>) JSON.parseArray(cookieValue,modelVolume.class);
                displayList.add(model);
                JSONArray array=JSONArray.parseArray(JSON.toJSONString(displayList));
                System.out.println(array);
                String encodeCookie = null;
                encodeCookie = URLEncoder.encode(array.toJSONString(),"utf-8");
                response.addCookie(new Cookie("displayList",encodeCookie));
                flag=true;
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            return flag;
        }
        public boolean delDisplay(String name,HttpServletResponse response,HttpServletRequest request){
            Cookie cookie=getCookie("displayList",response, request);
            try {
                String cookieValue=URLDecoder.decode(cookie.getValue(), "utf-8");
            ArrayList<modelVolume> displayList= (ArrayList<modelVolume>) JSON.parseArray(cookieValue,modelVolume.class);
            for (modelVolume display:displayList){
                if (display.getName().equals(name)){
                    displayList.remove(display);
                    JSONArray array=JSONArray.parseArray(JSON.toJSONString(displayList));
                    try {
                        String encodeCookie = URLEncoder.encode(array.toJSONString(),"utf-8");
                        response.addCookie(new Cookie("displayList",encodeCookie));
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                    return true;
                }
            }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            return false;
        }
        public ArrayList<modelVolume>getDisplayArrayList(HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException {
            Cookie cookie=getCookie("displayList",response, request);
            String cookieValue=URLDecoder.decode(cookie.getValue(), "utf-8");
            ArrayList<modelVolume> displayList= (ArrayList<modelVolume>) JSON.parseArray(cookieValue,modelVolume.class);
            return displayList;
        }
        public boolean addTrip(modelTrip model,HttpServletResponse response,HttpServletRequest request){
            boolean flag=false;
            //value中储存的使json字符转,将json字符串转换为对象数组
            try {
            Cookie cookie=getCookie("tripList",response, request);
            //将json字符串转换为对象数组
            ArrayList<modelTrip> tripList=new ArrayList<modelTrip>();
                String cookieValue=URLDecoder.decode(cookie.getValue(), "utf-8");
                tripList= (ArrayList<modelTrip>) JSON.parseArray(cookieValue,modelTrip.class);
                tripList.add(model);
                JSONArray array=JSONArray.parseArray(JSON.toJSONString(tripList));
                System.out.println(array);
                String encodeCookie = null;
                encodeCookie = URLEncoder.encode(array.toJSONString(),"utf-8");
                response.addCookie(new Cookie("tripList",encodeCookie));
                flag=true;
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            return flag;
        }
        public boolean delTrip(String name,HttpServletResponse response,HttpServletRequest request){
            Cookie cookie=getCookie("tripList",response, request);
            try {
                String cookieValue=URLDecoder.decode(cookie.getValue(), "utf-8");
                ArrayList<modelTrip> tripList= (ArrayList<modelTrip>) JSON.parseArray(cookieValue,modelTrip.class);
                for (modelTrip trip:tripList){
                    if (trip.getName().equals(name)){
                        tripList.remove(trip);
                        JSONArray array=JSONArray.parseArray(JSON.toJSONString(tripList));
                        try {
                            String encodeCookie = URLEncoder.encode(array.toJSONString(),"utf-8");
                            response.addCookie(new Cookie("tripList",encodeCookie));
                        } catch (UnsupportedEncodingException e) {
                            e.printStackTrace();
                        }
                        return true;
                    }
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            return false;
        }
        public ArrayList<modelTrip>getTripArrayList(HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException {
            Cookie cookie=getCookie("tripList",response, request);
            String cookieValue=URLDecoder.decode(cookie.getValue(), "utf-8");
            ArrayList<modelTrip> tripList= (ArrayList<modelTrip>) JSON.parseArray(cookieValue,modelTrip.class);
            return tripList;
        }
        public Cookie getCookie(String name,HttpServletResponse response,HttpServletRequest request){
            Cookie result=null;
            boolean flag=false;
            if (request.getCookies()!=null){
                for (Cookie cookie:request.getCookies()){
                    if (cookie.getName().equals(name)){
                        result=cookie;
                        flag=true;
                    }
                }
            }
            if (!flag){
                try {
                    String encodeCookie = URLEncoder.encode("[]","utf-8");
                    Cookie cookie=new Cookie(name,encodeCookie);
                    cookie.setMaxAge(1);
                    response.addCookie(cookie);
                    result=cookie;
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }
            return result;
        }
        public void getPrice(HttpServletRequest request,HttpServletResponse response){
            try {
            String company=request.getParameter("company");
            int price =ps.getPrice(company,getDisplayArrayList(request, response),getTripArrayList(request, response)).get(7);
                PrintWriter out = null;
                out = response.getWriter();
                out.print(price);
                out.flush();
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        public modelContractParams submitParams(HttpServletRequest request,HttpServletResponse response) throws ParseException {
            String company =request.getParameter("company");
            String activity=request.getParameter("activity");
            String partyA=request.getParameter("partyA");
            String address=request.getParameter("address");
            String name=request.getParameter("name");
            String phone=request.getParameter("phone");
            String startString=request.getParameter("startDate");
            String endString=request.getParameter("end");
            String start= new String(new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse(startString)));
            String end= new String(new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse(endString)));
            modelContractParams params=new modelContractParams();
            params.setCompany(company);
            params.setActivity(activity);
            params.setAddress(address);
            params.setName(name);
            params.setPartyA(partyA);
            params.setPhone(phone);
            params.setStart(start);
            params.setEnd(end);
            try {
                PrintWriter out=null;
                out=response.getWriter();
                out.print("Y");
                out.flush();
                out.close();
            }catch (IOException e ){
                e.printStackTrace();
            }
            return params;
        }
        public void downloadFileTest(HttpServletRequest request,HttpServletResponse response,modelContractParams params){
            try {
                // 处理中文文件名下载乱码
                request.setCharacterEncoding("UTF-8");
            String path = "";
            String fileName = "";
            String activity=params.getActivity();
            String name ="“"+ activity+"”展品包装运输服务协议书.doc";
            // 投保书
                fileName = new String(name.getBytes("UTF-8"), "iso-8859-1");
            GetWord gw = new GetWord();
            //价格明细表格
            List<Map<String,String>> priceTableList=new ArrayList<Map<String,String>>();
            Map<String,String> tempValue=new HashMap<>();
            List<Integer> priceList=ps.getPrice(request.getParameter("company"),getDisplayArrayList(request, response),getTripArrayList(request, response));
            tempValue.put("inProductionCost",String.valueOf(priceList.get(0)));
            tempValue.put("packingMaterialCost",String.valueOf(priceList.get(1)));
            tempValue.put("outProductionCost",String.valueOf(priceList.get(2)));
            tempValue.put("bigCarCost",String.valueOf(priceList.get(3)));
            tempValue.put("smallCarCost",String.valueOf(priceList.get(4)));
            tempValue.put("workerCost",String.valueOf(priceList.get(5)));
            tempValue.put("taxes",String.valueOf(priceList.get(6)));
            tempValue.put("sumCost",String.valueOf(priceList.get(7)));
            priceTableList.add(tempValue);
            path = gw.getWordTest(request, response,
                    priceTableList,
                    ps.getParams(params,getDisplayArrayList(request, response),getTripArrayList(request, response),priceList));
            response.setCharacterEncoding("utf-8");
            response.setContentType("application/msword"); // word格式
    
                response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
                File file = new File(path);
                InputStream inputStream = new FileInputStream(file);
                OutputStream os = response.getOutputStream();
                byte[] b = new byte[10240];
                int length;
                while ((length = inputStream.read(b)) > 0) {
                    os.write(b, 0, length);
                }
                inputStream.close();
                os.flush();
                os.close();
                file.delete();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    }
    

    PriceServicempl类,用于价格计算

    public List<Integer> getPrice(String company, ArrayList<modelVolume> displayList, ArrayList<modelTrip> tripList) {
        int price=0;
        //得到总体积  保留三位小数
        double sumVolume=0;   //总体积
        int sumDisplayAmount=0;//得到展品总量
        for (modelVolume volume:displayList){
            sumVolume+=volume.getVolume();
            sumDisplayAmount+=volume.getAmount();
        }
        sumVolume=Math.ceil(sumVolume*0.001)*0.001;
    
        /*报价计算*/
        //包装费用
        int inProductionCost=(int)Math.ceil(sumVolume*2800*0.1)*10; //inProductionCost 内箱制作费
        int packingMaterialCost=0;  //PackingMaterialCost 包装材料费
        if (sumDisplayAmount<=70){
            packingMaterialCost=3000;
        }else {
            packingMaterialCost=5000;
        }
        //((int)(sumVolume/0.5)==sumVolume/0.5?sumVolume/0.5*1800:(sumVolume/0.5+1)*1800);
        int outProductionCost=(int)Math.ceil(sumVolume/0.5)*1800;    //outProductionCost 外箱制作费
        int finallyPackingCost=inProductionCost+outProductionCost+packingMaterialCost;//finallyPackingCost 总包装费
        int bigCarCost=0;//大车总费用
        int smallCarCost=0;//小车总费用
        int workerCost=0;//总人工费
        for (modelTrip trip:tripList){
            bigCarCost+=trip.getBigCarAmount()*trip.getBigCarDistance()*18;
            smallCarCost+=trip.getSmallCarAmount()*trip.getSmallCarDistance()*10;
            workerCost+=trip.getWorkerAmount()*trip.getWorkerDays()*800;
        }
        double x=Math.ceil((finallyPackingCost+bigCarCost+smallCarCost+workerCost)*0.1)*10;
        price=(int)x;
        int taxation=0;//税费
        if (price==3000) {
            price=0;
        } else if ("BeiJing".equals(company)) {
            taxation=(int)Math.ceil(price * 0.06 / 10) * 10;
            price=taxation + price;
        } else if ("HeNan".equals(company)) {
            taxation=(int)Math.ceil(price * 0.03 / 10) * 10;
            price=taxation + price;
        }
        List<Integer> priceList=new ArrayList<Integer>();
        priceList.add(inProductionCost);
        priceList.add(packingMaterialCost);
        priceList.add(outProductionCost);
        priceList.add(bigCarCost);
        priceList.add(smallCarCost);
        priceList.add(workerCost);
        priceList.add(taxation);
        priceList.add(price);
        return priceList;
    }
    

    前端代码:

    ``

    <!DOCTYPE html>
    <html>
       <head>
          <meta charset="utf-8">
          <title>价格计算</title>
          <link rel="stylesheet" href="layui/css/layui.css" />
       </head>
       <style type="text/css">
          .main {
             margin: 50px auto;
              80%;
             border: 1px solid #d9d9d9;
          }
    
          fieldset{
             color: #4E5465;
             border:0.0625rem #e6e6e6 solid;
          }
       </style>
       <body>
          <!-- 导航部分 -->
          <div class="header">
             <ul class="layui-nav" lay-filter="">
                <li class="layui-nav-item"><a href="">最新活动</a></li>
                <li class="layui-nav-item layui-this"><a href="">产品</a></li>
                <li class="layui-nav-item"><a href="">大数据</a></li>
                <li class="layui-nav-item">
                   <a href="javascript:;">解决方案</a>
                   <dl class="layui-nav-child">
                      <!-- 二级菜单 -->
                      <dd><a href="">移动模块</a></dd>
                      <dd><a href="">后台模版</a></dd>
                      <dd><a href="">电商平台</a></dd>
                   </dl>
                </li>
                <li class="layui-nav-item"><a href="">社区</a></li>
             </ul>
          </div>
          <!-- 主体部分 -->
          <div class="main">
             <div class="layui-tab layui-tab-brief" lay-filter="tabDemo">
                <ul class="layui-tab-title">
                   <li id="li1" class="layui-this">添加展品</li>
                   <li id="li2">添加行程</li>
                   <li id="li3">生成报价</li>
                   <li id="li4">生成合同</li>
                </ul>
                <div class="layui-tab-content">
                   <!-- 展品 -->
                   <div class="layui-tab-item layui-show" id="table1" lay-id="table1">
                      <!-- 表单 -->
    <!--                  action="ServletPrice?command=addDisplay"  method="post"-->
                      <form class="layui-form layui-form-pane" action="" >
                         <div class="layui-form-item">
                            <div class="layui-inline">
                               <label class="layui-form-label">展品名称</label>
                               <div class="layui-input-inline">
                                  <input type="text" id="displayName" lay-verify="required" placeholder="请输入展品名称" autocomplete="off" class="layui-input">
                               </div>
                            </div>
                            <div class="layui-inline">
                               <label class="layui-form-label">数量</label>
                               <div class="layui-input-inline">
                                  <input type="text" id="amount" lay-verify="required|number" placeholder="单位:件" autocomplete="off" class="layui-input">
                               </div>
                            </div>
                         </div>
                         <div class="layui-form-item">
                            <div class="layui-inline">
                               <label class="layui-form-label">展品长度:</label>
                               <div class="layui-input-inline">
                                  <input type="text" id="length" lay-verify="required|number" placeholder="单位:cm" autocomplete="off" class="layui-input">
                               </div>
                            </div>
                            <div class="layui-inline">
                               <label class="layui-form-label">展品宽度:</label>
                               <div class="layui-input-inline">
                                  <input type="text" id="width" lay-verify="required|number" placeholder="单位:cm" autocomplete="off" class="layui-input">
                               </div>
                            </div>
                            <div class="layui-inline">
                               <label class="layui-form-label">展品高度:</label>
                               <div class="layui-input-inline">
                                  <input type="text" id="height" lay-verify="required|number" placeholder="单位:cm" autocomplete="off" class="layui-input">
                               </div>
                            </div>
                            <div class="layui-inline">
                               <button class="layui-btn" lay-submit="addDisplay" lay-filter="addDisplay">添加展品</button>
                                        <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                            </div>
                         </div>
                      </form>
                      <!-- 表格 -->
                      <table id="displayTable" lay-filter="displayTable"></table>
    
                      <button class="layui-btn layui-btn-lg" onclick="toTable2()">下一步</button>
    
                   </div>
                   <!-- 行程 -->
                   <div class="layui-tab-item" id="table2" lay-id="table2">
                      <!-- 表单 -->
                      <form class="layui-form layui-form-pane" action="">
                         <fieldset>
                            <legend>行程信息</legend>
                            <div class="layui-form-item">
                               <div class="layui-inline">
                                  <label class="layui-form-label">行程名称:</label>
                                  <div class="layui-input-inline">
                                     <input type="text" id="tripName" lay-verify="required" placeholder="请输入行程名称" autocomplete="off" class="layui-input">
                                  </div>
                               </div>
                               <div class="layui-inline">
                                  <label class="layui-form-label">起始地:</label>
                                  <div class="layui-input-inline">
                                     <input type="text" id="start" lay-verify="required" placeholder="请输入起始地" autocomplete="off" class="layui-input">
                                  </div>
                               </div>
                               <div class="layui-inline">
                                  <label class="layui-form-label">目的地:</label>
                                  <div class="layui-input-inline">
                                     <input type="text" id="goal" lay-verify="required" placeholder="请输入目的地" autocomplete="off" class="layui-input">
                                  </div>
                               </div>
                            </div>
                         </fieldset>
                         <fieldset>
                            <legend>大车运输</legend>
    
                            <div class="layui-form-item">
                               <div class="layui-inline">
                                  <label class="layui-form-label">车辆数目:</label>
                                  <div class="layui-input-inline">
                                     <input type="text" id="bigCarAmount" lay-verify="required|number" placeholder="单位:辆" autocomplete="off" class="layui-input">
                                  </div>
                               </div>
                               <div class="layui-inline">
                                  <label class="layui-form-label">行驶距离:</label>
                                  <div class="layui-input-inline">
                                     <input type="text" id="bigCarDistance" lay-verify="required|number" placeholder="单位:公里" autocomplete="off" class="layui-input">
                                  </div>
                               </div>
                            </div>
                         </fieldset>
                         <fieldset>
                            <legend>小车运输</legend>
    
                            <div class="layui-form-item">
                               <div class="layui-inline">
                                  <label class="layui-form-label">车辆数目</label>
                                  <div class="layui-input-inline">
                                     <input type="text" id="smallCarAmount" lay-verify="required|number" placeholder="单位:辆" autocomplete="off" class="layui-input">
                                  </div>
                               </div>
                               <div class="layui-inline">
                                  <label class="layui-form-label">行驶距离</label>
                                  <div class="layui-input-inline">
                                     <input type="text" id="smallCarDistance" lay-verify="required|number" placeholder="单位:公里" autocomplete="off" class="layui-input">
                                  </div>
                               </div>
                            </div>
                         </fieldset>
                         <fieldset>
                            <legend>人工服务</legend>
    
                            <div class="layui-form-item">
                               <div class="layui-inline">
                                  <label class="layui-form-label">人工数量</label>
                                  <div class="layui-input-inline">
                                     <input type="text" id="workerAmount" lay-verify="required|number" placeholder="单位:人" autocomplete="off" class="layui-input">
                                  </div>
                               </div>
                               <div class="layui-inline">
                                  <label class="layui-form-label">服务天数</label>
                                  <div class="layui-input-inline">
                                     <input type="text" id="workerDays" lay-verify="required|number" placeholder="单位:天" autocomplete="off" class="layui-input">
                                  </div>
                               </div>
                               <div class="layui-inline">
                                  <button class="layui-btn" lay-submit lay-filter="addTrip">添加行程</button>
                                            <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                               </div>
                            </div>
                         </fieldset>
                      </form>
                      <!-- 表格 -->
                      <table id="tripTable" lay-filter="tripTable"></table>
                      <button class="layui-btn layui-btn-lg" onclick="toTable3()">下一步</button>
                   </div>
                   <!-- 生成报价 -->
                   <div class="layui-tab-item" id="table3" lay-id="table3">
                      <div class="layui-card">
                         <div class="layui-card-header">合计费用</div>
    
                         <form class="layui-form layui-form-pane" action="">
                            <div class="layui-inline">
                               <label class="layui-form-label" style=" 180px;">您选择的服务公司是</label>
                               <div class="layui-input-inline">
                                  <select id="company">
                                     <option value="BeiJing">北京总公司</option>
                                     <option value="HeNan">河南分公司</option>
                                  </select>
                               </div>
                            </div>
                            <div class="layui-inline">
                               <button class="layui-btn" lay-submit lay-filter="getPrice">立即查询</button>
                            </div>
                            <div class="layui-inline">
                               <div class="layui-card-body">
                                  <p id="price" style="color: #FF5722; font-size: 20px; margin-left: 10%;  250px;">
                                  </p>
                                  <div id="price2"style="color: #FF5722; font-size: 20px; margin-left: 10%;  250px;"></div>
                               </div>
                            </div>
                         </form>
                      </div>
                      <button class="layui-btn layui-btn-lg" onclick="toTable4()">下一步</button>
                   </div>
                   <!-- 生成合同 -->
                   <div class="layui-tab-item" id="table4" lay-id="table4">
                      <!-- 表单 -->
                      <form class="layui-form layui-form-pane" action="">
                         <fieldset>
                           <legend>信息录入</legend>
                         <div class="layui-form-item">
                            <div class="layui-inline">
                               <label class="layui-form-label">活动名称</label>
                               <div class="layui-input-inline">
                               <input type="text" id="activity" lay-verify="required" placeholder="请输入活动名称" autocomplete="off" class="layui-input" />
                               </div>
                            </div>
                            <div class="layui-inline">
                               <label class="layui-form-label">甲方名称</label>
                               <div class="layui-input-inline">
                               <input type="text" id="partyA" lay-verify="required" placeholder="请输入甲方名称" autocomplete="off" class="layui-input" />
                               </div>
                            </div>
                            <div class="layui-inline">
                               <label class="layui-form-label">甲方地址</label>
                               <div class="layui-input-inline">
                               <input type="text" id="address" lay-verify="required" placeholder="请输入甲方地址" autocomplete="off" class="layui-input" />
                               </div>
                            </div>
                            
                         </div>
                         <div class="layui-form-item">
                            <div class="layui-inline">
                               <label class="layui-form-label">联系人</label>
                               <div class="layui-input-inline">
                               <input type="text" id="name" lay-verify="required" placeholder="请输入联系人姓名" autocomplete="off" class="layui-input" />
                               </div>
                            </div>
                            <div class="layui-inline">
                               <label class="layui-form-label">电话</label>
                               <div class="layui-input-inline">
                               <input type="text" id="phone" lay-verify="required|number|phone" placeholder="请输入电话" autocomplete="off" class="layui-input" />
                               </div>
                            </div>
                            <div class="layui-inline">
                              <label class="layui-form-label">活动时间</label>
                              <div class="layui-input-inline" style=" 100px;">
                                 <input type="text" name="startDate" id="startDate" lay-verify="date" placeholder="开始时间" autocomplete="off" class="layui-input">
                              </div>
                              <div class="layui-form-mid">-</div>
                              <div class="layui-input-inline" style=" 100px;">
                                <input type="text" name="endDate" id="endDate" lay-verify="date" placeholder="结束时间" autocomplete="off" class="layui-input">
                              </div>
                            </div>
                         </div>
                         <div class="layui-form-item">
                            <div class="layui-inline">
                               <button class="layui-btn" lay-submit lay-filter="madeContract">生成合同</button>
                                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                            </div>
                         </div>
                         </fieldset>
                      </form>
                   </div>
                </div>
             </div>
          </div>
          <script>
             function toTable2() { //display: block!important;
                document.getElementById("li1").className = "layui-this";
                document.getElementById("li2").className = "layui-this";
                document.getElementById("li3").className = "li3";
                document.getElementsByClassName("li1").className = "li1 layui-this";
                document.getElementById("table1").className = "layui-tab-item";
                document.getElementById("table2").className = "layui-tab-item layui-show";
                document.getElementById("table3").className = "layui-tab-item";
             }
    
             function toTable3() { //display: block!important;
                document.getElementById("li1").className = "layui-this";
                document.getElementById("li2").className = "layui-this";
                document.getElementById("li3").className = "layui-this";
                document.getElementById("table1").className = "layui-tab-item";
                document.getElementById("table2").className = "layui-tab-item";
                document.getElementById("table3").className = "layui-tab-item layui-show";
             }
             function toTable4() { //display: block!important;
                document.getElementById("li1").className = "layui-this";
                document.getElementById("li2").className = "layui-this";
                document.getElementById("li3").className = "layui-this";
                document.getElementById("li4").className = "layui-this";
                document.getElementById("table1").className = "layui-tab-item";
                document.getElementById("table2").className = "layui-tab-item";
                document.getElementById("table3").className = "layui-tab-item";
                document.getElementById("table4").className = "layui-tab-item layui-show";
             }
          </script>
          <!-- 页脚部分 -->
          <div class="footer">
    
          </div>
          <script src="layui/layui.js"></script>
          <script>
             //日期
             layui.use('laydate', function(){
               var laydate = layui.laydate;
               
               //执行一个laydate实例
               laydate.render({
                 elem: '#startDate',//指定元素
               });
               laydate.render({
                 elem: '#endDate',//指定元素
               });
               
             });
             //选项卡
             layui.use('element', function() {
                var element = layui.element;
                //事件监听
                element.on('tab(tabDemo)', function(data) {
                   console.log(data);
                });
             });
             //表单
             layui.use('form', function () {
                var form = layui.form;
                var $ = layui.$;
                /* 监听提交 */
                form.on('submit(addDisplay)', function (data) {
                        var table=layui.table;
                   var jsondata = JSON.stringify(data.field);
                   $.ajax({
                      type: 'POST',
                      url: 'ServletPriceTest?command=addDisplay&Date=' + new Date(),
                      data: {
                         //jsondata: jsondata
                         displayName: $("#displayName").val(),
                         amount: $("#amount").val(),
                          $("#width").val(),
                         height: $("#height").val(),
                         length: $("#length").val()
                      },
                      dataType: "text",
                      async: false,
                      success: function (text) {
    
                         if (text == "Y") {
                            layui.use('layer', function () {
                               var layer = layui.layer;
                               layer.msg('提交成功!');
                            });
                            table.reload('displayTable', {
                               where: {
                                  tripName: $("#tripName").val()
                               }
                               , page: {
                                  curr: $(".layui-laypage-skip").find("input").val() //重新从第 1 页开始
                               }
                            });
                         } else {
                            layui.use('layer', function () {
                               var layer = layui.layer;
                               layer.msg('提交失败!');
                            });
                         }
                      }
                   });
                   return false;
                });
                form.on('submit(addTrip)', function (data) {
                   var jsondata = JSON.stringify(data.field);
                   var table=layui.table;
                   $.ajax({
                      type: 'POST',
                      url: 'ServletPriceTest?command=addTrip&Date=' + new Date(),
                      data: {
                         //jsondata: jsondata
                         start: $("#start").val(),
                         goal: $("#goal").val(),
                         tripName: $("#tripName").val(),
                         bigCarAmount: $("#bigCarAmount").val(),
                         smallCarAmount: $("#smallCarAmount").val(),
                         bigCarDistance: $("#bigCarDistance").val(),
                         smallCarDistance: $("#smallCarDistance").val(),
                         workerAmount: $("#workerAmount").val(),
                         workerDays: $("#workerDays").val()
                      },
                      dataType: "text",
                      async: false,
                      success: function (text) {
    
                         if (text == "Y") {
                            layui.use('layer', function () {
                               var layer = layui.layer;
                               layer.msg('提交成功!');
                            });
                                    table.reload('tripTable', {
                                        where: {
                                            tripName: $("#tripName").val()
                                        }
                                        , page: {
                                            curr: $(".layui-laypage-skip").find("input").val() //重新从第 1 页开始
                                        }
                                    });
                         } else {
                            layui.use('layer', function () {
                               var layer = layui.layer;
                               layer.msg('提交失败!');
                            });
                         }
                      }
                   });
                   return false;
                });
                form.on('submit(madeContract)', function (data) {
                   var jsondata = JSON.stringify(data.field);
                   var table=layui.table;
                   $.ajax({
                      type: 'POST',
                      url: 'ServletPriceTest?command=submitParams&Date=' + new Date(),
                      data: {
                         //jsondata: jsondata
                         activity: $("#activity").val(),
                         partyA: $("#partyA").val(),
                         address: $("#address").val(),
                         name: $("#name").val(),
                         phone: $("#phone").val(),
                         startDate: $("#startDate").val(),
                         end: $("#endDate").val(),
                         company: $("#company").val()
                      },
                      dataType: "text",
                      async: false,
                      success: function (text) {
                         if (text === "Y") {
                            layui.use('layer', function () {
                               var layer = layui.layer;
                               layer.msg('提交成功,正在生成合同!');
                               //(function () {
                                  window.location.href='ServletPriceTest?command=madeContract'
                               //}, 1000);
                            });
                         } else {
                            layui.use('layer', function () {
                               var layer = layui.layer;
                               layer.msg('提交失败!');
                            });
                         }
                      }
                   });
                   return false;
                });
                form.on('submit(getPrice)', function (data) {
                   var jsondata = JSON.stringify(data.field);
                   $.ajax({
                      type: 'POST',
                      url:  "ServletPriceTest?command=getPrice&Date=" + new Date(),
                      data: {
                         //jsondata: jsondata
                         company: $("#company").val(),
                      },
                      dataType: "text",
                      async: false,
                      success: function (text) {
                         layui.use('layer', function () {
                            var layer = layui.layer;
                            if (text==0){
                               layer.msg('查询失败!您未填写订单信息!')
                            }else {
                               layer.msg('查询成功!
    总价格:'+text+'元');
                            }
                         });
                         $("#price2").val(text);
                      }
                   });
                   return false;
                });
             });
             //表格
             layui.use('table', function(){
                var table = layui.table;
    
                //展品列表
                table.render({
                   elem: '#displayTable'
                   ,height: 312
                   ,url: 'ServletPriceTest?command=getDisplayList'//数据接口
                   ,page: false //开启分页
                   ,cols: [
    
                      [ //表头
                         {
                            field: 'name',
                            title: '展品名称',
                             '20%',
                            sort: true,
                            fixed: 'left'
                         }, {
                         field: 'amount',
                         title: '数量',
                          '16%'
                      }, {
                         field: 'length',
                         title: '长度',
                          '16%'
                      }, {
                         field: 'width',
                         title: '宽度',
                          '16%'
                      }, {
                         field: 'height',
                         title: '高度',
                          '16%'
                      }, {
                         fixed: 'right',
                          '16%',
                         title: '操作',
                         align: 'center',
                         toolbar: '#toolbar'
                      }
                      ]
                   ]
                });
                //监听工具条
                table.on('tool(displayTable)', function (obj) {
                   var jsondata = JSON.stringify(obj.data),
                         $=layui.$;
                   jsondata = JSON.parse(jsondata);
                   if (obj.event === 'del') {//删除
                      layer.confirm('警告:确定要删除么?', {
                         yes: function () {
                            $.ajax({
                               type: 'POST',
                               url: "ServletPriceTest?command=delDisplay&displayName=" + jsondata.name+ "&Date=" + new Date(),
                               dataType: "text",
                               success: function (text) {
                                  if (text == "Y") {
                                     layui.use('layer', function () {
                                        var layer = layui.layer;
                                        layer.msg('删除成功!');
                                     });
                                     table.reload('displayTable', {
                                        where: {
                                           displayName: $("#displayName").val()
                                        }
                                        , page: {
                                           curr: $(".layui-laypage-skip").find("input").val() //重新从第 1 页开始
                                        }
                                     });
                                  } else {
                                     layui.use('layer', function () {
                                        var layer = layui.layer;
                                        layer.msg('操作异常,请联系管理员!');
                                     });
                                  }
                               }
                            });
                         }
                      });
                   }
                });
                table.render({
                   elem: '#tripTable'
                   ,height: 312
                   ,url: 'ServletPriceTest?command=getTripList' //数据接口
                   ,page: false //开启分页
                   ,cols: [
                      [ //表头
                         {
                            field: 'name',
                            title: '行程名称',
                             '10%',
                            sort: true,
                            fixed: 'left'
                         }, {
                         field: 'start',
                         title: '起始地',
                          '10%'
                      },{
                         field: 'end',
                         title: '目的地',
                          '10%'
                      },{
                         field: 'bigCarAmount',
                         title: '大车数量',
                          '10%'
                      }, {
                         field: 'bigCarDistance',
                         title: '大车运输距离',
                          '10%'
                      }, {
                         field: 'smallCarAmount',
                         title: '小车数量',
                          '10%'
                      }, {
                         field: 'smallCarDistance',
                         title: '小车运输距离',
                          '10%'
                      }, {
                         field: 'workerAmount',
                         title: '人工数量',
                          '10%'
                      }, {
                         field: 'workerDays',
                         title: '人工服务天数',
                          '10%'
                      }, {
                         fixed: 'right',
                          '10%',
                         title: '操作',
                         align: 'center',
                         toolbar: '#toolbar'
                      }
                      ]
                   ]
                });
                table.on('tool(tripTable)', function (obj) {
                   var jsondata = JSON.stringify(obj.data);
                   var $=layui.$;
                   jsondata = JSON.parse(jsondata);
                   if (obj.event === 'del') {
                      //删除
                      layer.confirm('警告:确定要删除么?', {
                         yes: function () {
                            $.ajax({
                               type: 'POST',
                               url: "ServletPriceTest?command=delTrip&tripName=" + jsondata.name+ "&Date=" + new Date(),
                               dataType: "text",
                               success: function (text) {
                                  if (text == "Y") {
                                     layui.use('layer', function () {
                                        var layer = layui.layer;
                                        layer.msg('删除成功!');
                                     });
                                     table.reload('tripTable', {
                                        where: {
                                           tripName: $("#tripName").val()
                                        }
                                        , page: {
                                           curr: $(".layui-laypage-skip").find("input").val() //重新从第 1 页开始
                                        }
                                     });
                                  } else {
                                     layui.use('layer', function () {
                                        var layer = layui.layer;
                                        layer.msg('操作异常,请联系管理员!');
                                     });
                                  }
                               }
                            });
                         }
                      });
                      //--------------
                   }
                });
    
             });
          </script>
          <script type="text/html" id="toolbar">
             <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon">&#xe640;</i></a>
          </script>
       </body>
    </html>
    
  • 相关阅读:
    利用DTrace实时检测MySQl
    改进MySQL Order By Rand()的低效率
    RDS for MySQL查询缓存 (Query Cache) 的设置和使用
    RDS For MySQL 字符集相关说明
    RDS for MySQL 通过 mysqlbinlog 查看 binlog 乱码
    RDS for MySQL Mysqldump 常见问题和处理
    RDS for MySQL Online DDL 使用
    RDS MySQL 表上 Metadata lock 的产生和处理
    RDS for MySQL 如何使用 Percona Toolkit
    北京已成为投融资诈骗重灾区:存好骗子公司黑名单,谨防上当!
  • 原文地址:https://www.cnblogs.com/xiaoyiStudent/p/12344233.html
Copyright © 2011-2022 走看看