| | |
| | | return list; |
| | | } |
| | | |
| | | public static List<SettleDto> initBusiness(User manager ,User user) { |
| | | List<SettleDto> list = new ArrayList<>(); |
| | | for (int i = 0; i < 7; i++) { |
| | | SettleDto dto = new SettleDto(); |
| | | dto.setStep(i); |
| | | switch (i) { |
| | | case 1: |
| | | dto.setTitle("提交出差"); |
| | | dto.setUserId(user.getId()); |
| | | dto.setUsername(user.getNickname()); |
| | | list.add(dto); |
| | | break; |
| | | case 2: |
| | | dto.setTitle("部门经理审核"); |
| | | dto.setUserId(manager.getId()); |
| | | dto.setUsername(manager.getNickname()); |
| | | list.add(dto); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | } |
| | |
| | | package com.zy.crm.manager.controller; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.R; |
| | | import com.zy.crm.common.model.SettleDto; |
| | | import com.zy.crm.common.web.BaseController; |
| | | import com.zy.crm.manager.entity.BusinessTrip; |
| | | import com.zy.crm.manager.service.BusinessTripService; |
| | | import com.zy.crm.manager.utils.CarNumberUtils; |
| | | import com.zy.crm.manager.utils.TimeCalculatorUtils; |
| | | import com.zy.crm.system.entity.User; |
| | | import com.zy.crm.system.service.UserService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private BusinessTripService businessTripService; |
| | | @Autowired |
| | | private UserService userService; |
| | | |
| | | @RequestMapping(value = "/businessTrip/{id}/auth") |
| | | @ManagerAuth |
| | |
| | | @RequestMapping(value = "/businessTrip/add/auth") |
| | | @ManagerAuth |
| | | public R add(BusinessTrip businessTrip) { |
| | | |
| | | if (Cools.isEmpty(businessTrip) || null==businessTrip.getId()){ |
| | | return R.error(); |
| | | } |
| | | Date now = new Date(); |
| | | //判断车牌号 |
| | | if (businessTrip.getBusinessTransportation()==5 || businessTrip.getBusinessTransportation()==4){ |
| | |
| | | if (!carNumberBoolean){ |
| | | return R.error("请输入有效车牌号"); |
| | | } |
| | | }else { |
| | | businessTrip.setCarNumber("无"); |
| | | } |
| | | businessTrip.setBusinessPeersId(System.currentTimeMillis()); |
| | | // businessTrip.setBusinessDuration(TimeCalculatorUtils.getDifferenceDayDouble(businessTrip.getBusinessStartTimeDay$(),businessTrip.getBusinessEndTimeDay$())); |
| | | businessTrip.setBusinessTripDays(TimeCalculatorUtils.getDifferenceDayInt(businessTrip.getBusinessStartTime(),businessTrip.getBusinessEndTime())); |
| | | |
| | | if (!TimeCalculatorUtils.CompareData(businessTrip.getBusinessStartTime(),businessTrip.getBusinessEndTime())){ |
| | | return R.error("结束时间应大于等于开始时间"); |
| | | } |
| | | |
| | | if (TimeCalculatorUtils.DifferenceYest(businessTrip.getBusinessStartTime(),businessTrip.getBusinessEndTime())!=0){ |
| | | int month = TimeCalculatorUtils.DifferenceMonth(businessTrip.getBusinessStartTime(), businessTrip.getBusinessEndTime()); |
| | | int yest = TimeCalculatorUtils.DifferenceYest(businessTrip.getBusinessStartTime(), businessTrip.getBusinessEndTime()); |
| | | int i = month + yest * 12; |
| | | if (i>12){ |
| | | return R.error("出差时长不可超过一年"); |
| | | } |
| | | } |
| | | |
| | | businessTrip.setBusinessDuration(TimeCalculatorUtils.DifferenceDayMorningAfternoon(businessTrip.getBusinessStartTime(),businessTrip.getBusinessEndTime(),businessTrip.getBusinessStartTimeDay(),businessTrip.getBusinessEndTimeDay())); |
| | | businessTrip.setBusinessTripDays(TimeCalculatorUtils.DifferenceDayInt(businessTrip.getBusinessStartTime(),businessTrip.getBusinessEndTime())); |
| | | businessTrip.setUserId(getUserId()); |
| | | businessTrip.setDeptId(getDeptId()); |
| | | businessTrip.setCreateTime(now); |
| | | businessTrip.setUserId(getUserId()); |
| | | businessTrip.setUpdateTime(now); |
| | | businessTrip.setUpdateId(getUserId()); |
| | | businessTrip.setStatus(0); |
| | | businessTrip.setSettle(1); |
| | | |
| | | User manager = userService.getDeptManager(getHostId(), getUser().getDeptId()); // 获取部门领导 |
| | | |
| | | businessTrip.setSettleMsg(JSON.toJSONString(SettleDto.initBusiness(manager,getUser()))); |
| | | |
| | | businessTripService.insert(businessTrip); |
| | | return R.ok(); |
| | |
| | | if (Cools.isEmpty(businessTrip) || null==businessTrip.getId()){ |
| | | return R.error(); |
| | | } |
| | | Date now = new Date(); |
| | | //判断车牌号 |
| | | if (businessTrip.getBusinessTransportation()==5 || businessTrip.getBusinessTransportation()==4){ |
| | | boolean carNumberBoolean = CarNumberUtils.isValidLicensePlate(businessTrip.getCarNumber()); |
| | | if (!carNumberBoolean){ |
| | | return R.error("请输入有效车牌号"); |
| | | } |
| | | }else { |
| | | businessTrip.setCarNumber("无"); |
| | | } |
| | | businessTrip.setBusinessPeersId(System.currentTimeMillis()); |
| | | |
| | | if (!TimeCalculatorUtils.CompareData(businessTrip.getBusinessStartTime(),businessTrip.getBusinessEndTime())){ |
| | | return R.error("结束时间应大于等于开始时间"); |
| | | } |
| | | |
| | | if (TimeCalculatorUtils.DifferenceYest(businessTrip.getBusinessStartTime(),businessTrip.getBusinessEndTime())!=0){ |
| | | int month = TimeCalculatorUtils.DifferenceMonth(businessTrip.getBusinessStartTime(), businessTrip.getBusinessEndTime()); |
| | | int yest = TimeCalculatorUtils.DifferenceYest(businessTrip.getBusinessStartTime(), businessTrip.getBusinessEndTime()); |
| | | int i = month + yest * 12; |
| | | if (i>12){ |
| | | return R.error("出差时长不可超过一年"); |
| | | } |
| | | } |
| | | businessTrip.setBusinessDuration(TimeCalculatorUtils.DifferenceDayMorningAfternoon(businessTrip.getBusinessStartTime(),businessTrip.getBusinessEndTime(),businessTrip.getBusinessStartTimeDay(),businessTrip.getBusinessEndTimeDay())); |
| | | businessTrip.setBusinessTripDays(TimeCalculatorUtils.DifferenceDayInt(businessTrip.getBusinessStartTime(),businessTrip.getBusinessEndTime())); |
| | | businessTrip.setUpdateTime(now); |
| | | businessTrip.setUpdateId(getUserId()); |
| | | businessTripService.updateById(businessTrip); |
| | | return R.ok(); |
| | | } |
| | |
| | | import com.core.common.Cools; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.crm.manager.utils.TimeCalculatorUtils; |
| | | import com.zy.crm.system.entity.Dept; |
| | | import com.zy.crm.system.entity.Dic; |
| | | import com.zy.crm.system.entity.User; |
| | | import com.zy.crm.system.service.DeptService; |
| | | import com.zy.crm.system.service.DicService; |
| | | import com.zy.crm.system.service.UserService; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | |
| | | */ |
| | | @ApiModelProperty(value= "出差时长") |
| | | @TableField("business_duration") |
| | | private Long businessDuration; |
| | | private Double businessDuration; |
| | | |
| | | /** |
| | | * 出差天数 |
| | |
| | | |
| | | public BusinessTrip() {} |
| | | |
| | | public BusinessTrip(String businessTripReasons, Integer businessTransportation, Integer businessReturn, String businessStartProvince, String businessStartCity, String businessStartDistrict, String businessStartTown, String businessStartAddr, String businessEndProvince, String businessEndCity, String businessEndDistrict, String businessEndTown, String businessEndAddr, Date businessStartTime, Date businessEndTime, Long businessDuration, Integer businessTripDays, String businessNotes, String businessPeers, Long businessPeersId, String carNumber, String kilometers, Long userId, Long deptId, Long hostId, Date createTime, Date updateTime, Long updateId, String form, Integer settle, String settleMsg, Integer status, Integer businessTripType, Integer businessStartTimeDay, Integer businessEndTimeDay) { |
| | | public BusinessTrip(String businessTripReasons, Integer businessTransportation, Integer businessReturn, String businessStartProvince, String businessStartCity, String businessStartDistrict, String businessStartTown, String businessStartAddr, String businessEndProvince, String businessEndCity, String businessEndDistrict, String businessEndTown, String businessEndAddr, Date businessStartTime, Date businessEndTime, Double businessDuration, Integer businessTripDays, String businessNotes, String businessPeers, Long businessPeersId, String carNumber, String kilometers, Long userId, Long deptId, Long hostId, Date createTime, Date updateTime, Long updateId, String form, Integer settle, String settleMsg, Integer status, Integer businessTripType, Integer businessStartTimeDay, Integer businessEndTimeDay) { |
| | | this.businessTripReasons = businessTripReasons; |
| | | this.businessTransportation = businessTransportation; |
| | | this.businessReturn = businessReturn; |
| | |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); |
| | | } |
| | | |
| | | public String getUpdateId$(){ |
| | | UserService service = SpringUtils.getBean(UserService.class); |
| | | User user = service.selectById(this.updateId); |
| | | if (!Cools.isEmpty(user)){ |
| | | return String.valueOf(user.getNickname()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public String getUserId$(){ |
| | | UserService service = SpringUtils.getBean(UserService.class); |
| | | User user = service.selectById(this.userId); |
| | | if (!Cools.isEmpty(user)){ |
| | | return String.valueOf(user.getNickname()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public String getDeptId$(){ |
| | | DeptService service = SpringUtils.getBean(DeptService.class); |
| | | Dept dept = service.selectById(this.deptId); |
| | | if (!Cools.isEmpty(dept)){ |
| | | return String.valueOf(dept.getName()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public String getSettle$(){ |
| | | if (null == this.settle){ return null; } |
| | | switch (this.settle){ |
| | | case 1: |
| | | return "等待批准"; |
| | | case 2: |
| | | return "审批通过"; |
| | | default: |
| | | return String.valueOf(this.settle); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | public String getStatus$(){ |
| | | if (null == this.status){ return null; } |
| | | switch (this.status){ |
| | |
| | | if (null == this.businessStartTimeDay){ return null; } |
| | | switch (this.businessStartTimeDay){ |
| | | case 1: |
| | | return TimeCalculatorUtils.getYestMonthDay(this.businessStartTime)+ "上午"; |
| | | return TimeCalculatorUtils.timeYestMonthDay(this.businessStartTime)+ "上午"; |
| | | case 2: |
| | | return TimeCalculatorUtils.getYestMonthDay(this.businessStartTime)+ "下午"; |
| | | return TimeCalculatorUtils.timeYestMonthDay(this.businessStartTime)+ "下午"; |
| | | default: |
| | | // return String.valueOf(this.status); |
| | | return "未知"; |
| | |
| | | if (null == this.businessEndTimeDay){ return null; } |
| | | switch (this.businessTransportation){ |
| | | case 1: |
| | | return TimeCalculatorUtils.getYestMonthDay(this.businessEndTime)+ "上午"; |
| | | return TimeCalculatorUtils.timeYestMonthDay(this.businessEndTime)+ "上午"; |
| | | case 2: |
| | | return TimeCalculatorUtils.getYestMonthDay(this.businessEndTime)+ "下午"; |
| | | return TimeCalculatorUtils.timeYestMonthDay(this.businessEndTime)+ "下午"; |
| | | default: |
| | | // return String.valueOf(this.status); |
| | | return "未知"; |
| | |
| | | |
| | | public class TimeCalculatorUtils { |
| | | |
| | | public static int getTimeHour(){ |
| | | //如何获取当前时间的小时数(24小时制): |
| | | //获取当前时间的小时数(24小时制): |
| | | public static int nowTimeHour(){ |
| | | // 获取当前时间戳 |
| | | long timestamp = System.currentTimeMillis(); |
| | | |
| | |
| | | return calendar.get(java.util.Calendar.HOUR_OF_DAY); |
| | | } |
| | | |
| | | public static int getTimeHour(Date date){ |
| | | //获取当天小时数(24小时制)中国北京时间: |
| | | public static int timeTimeHour(Date date){ |
| | | // 创建TimeZone对象,设置为中国北京时间 |
| | | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
| | | |
| | |
| | | return calendar.get(java.util.Calendar.HOUR_OF_DAY); |
| | | } |
| | | |
| | | public static Date getYesterday(Date date){ |
| | | //获取前一天的日期(日期天数减一) |
| | | public static Date timeYesterday(Date date){ |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | calendar.add(Calendar.DAY_OF_MONTH, -1); |
| | | return calendar.getTime(); |
| | | } |
| | | |
| | | public static String getYestMonthDay(Date date){ |
| | | //获取年月日 |
| | | public static String timeYestMonthDay(Date date){ |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | |
| | |
| | | return year+"年"+month+"月"+day+"日"; |
| | | } |
| | | |
| | | public static int getDifferenceDayInt(Date startDay,Date endDay){ |
| | | return getDifferenceDayLong(startDay,endDay).intValue(); |
| | | //获取年 |
| | | public static int timeYest(Date date){ |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | |
| | | return calendar.get(Calendar.YEAR); |
| | | } |
| | | |
| | | public static Long getDifferenceDayLong(Date startDay,Date endDay){ |
| | | LocalDate localDateA = dateToLocalDate(startDay); |
| | | LocalDate localDateB = dateToLocalDate(endDay); |
| | | //获取月 |
| | | public static int timeMonth(Date date){ |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | |
| | | return getDifferenceDays(localDateA, localDateB); |
| | | return calendar.get(Calendar.MONTH) + 1; |
| | | } |
| | | |
| | | public static Long getDifferenceDayDouble(String startDay,String endDay){ |
| | | // 定义日期字符串的格式 |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年M月d日ahh:mm"); |
| | | //获取日 |
| | | public static int timeDay(Date date){ |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | |
| | | return calendar.get(Calendar.DAY_OF_MONTH); |
| | | } |
| | | //获取年差异 |
| | | public static int DifferenceYest(Date startDay,Date endDay){ |
| | | int startYest = timeYest(startDay); |
| | | int endYest = timeYest(endDay); |
| | | return endYest-startYest; |
| | | } |
| | | //获取月差异 |
| | | public static int DifferenceMonth(Date startDay,Date endDay){ |
| | | int startMonth = timeMonth(startDay); |
| | | int endMonth = timeMonth(endDay); |
| | | return endMonth-startMonth; |
| | | } |
| | | //获取天差异 |
| | | public static int DifferenceDayInt(Date startDay,Date endDay){ |
| | | return DifferenceDayLong(startDay,endDay).intValue(); |
| | | } |
| | | //获取天差异 |
| | | public static Long DifferenceDayLong(Date startDay,Date endDay){ |
| | | |
| | | LocalDate a = LocalDate.of(timeYest(startDay), timeMonth(startDay), timeDay(startDay)); |
| | | LocalDate b = LocalDate.of(timeYest(endDay), timeMonth(endDay), timeDay(endDay)); |
| | | |
| | | return ChronoUnit.DAYS.between(a, b)+1; |
| | | } |
| | | //获取天差异 |
| | | public static Double DifferenceDayMorningAfternoon(Date startDay,Date endDay,int startTime,int endTime){ |
| | | double between = DifferenceDayLong(startDay, endDay).doubleValue(); |
| | | if (startTime==2){ |
| | | between = between-0.5; |
| | | } |
| | | if (endTime == 1){ |
| | | between = between-0.5; |
| | | } |
| | | return between; |
| | | } |
| | | |
| | | public static boolean CompareData(Date startDay,Date endDay){ |
| | | |
| | | // 将日期字符串解析为LocalDate对象 |
| | | LocalDate dateA = LocalDate.parse(startDay, formatter); |
| | | LocalDate dateB = LocalDate.parse(endDay, formatter); |
| | | LocalDate a = LocalDate.of(timeYest(startDay), timeMonth(startDay), timeDay(startDay)); |
| | | LocalDate b = LocalDate.of(timeYest(endDay), timeMonth(endDay), timeDay(endDay)); |
| | | |
| | | // 计算日期对象之间的相隔天数 |
| | | return ChronoUnit.DAYS.between(dateA, dateB); |
| | | |
| | | } |
| | | |
| | | private static String getDatePart(String dateTime) { |
| | | int index = dateTime.indexOf(" "); |
| | | if (index != -1) { |
| | | return dateTime.substring(0, index); |
| | | // 比较日期 |
| | | if (a.isAfter(b)) { |
| | | return false; |
| | | } else if (a.isBefore(b)) { |
| | | return true; |
| | | } else { |
| | | return true; |
| | | } |
| | | return dateTime; |
| | | } |
| | | |
| | | private static String getTimePart(String dateTime) { |
| | | int index = dateTime.indexOf(" "); |
| | | if (index != -1) { |
| | | return dateTime.substring(index + 1); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | private static LocalDate dateToLocalDate(Date date) { |
| | | return date.toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate(); |
| | | } |
| | | |
| | | private static long getDifferenceDays(LocalDate dateA, LocalDate dateB) { |
| | | return ChronoUnit.DAYS.between(dateA, dateB); |
| | | } |
| | | } |
| | |
| | | // {type: 'checkbox'}, |
| | | {field: 'id', align: 'center',title: 'ID',hide: true} |
| | | ,{field: 'businessTripReasons', align: 'center',title: '出差事由',hide: false} |
| | | ,{field: 'businessTransportation', align: 'center',title: '交通工具',hide: false} |
| | | ,{field: 'businessReturn', align: 'center',title: '单程往返',hide: false} |
| | | ,{field: 'businessStartProvince', align: 'center',title: '出发省',hide: true} |
| | | ,{field: 'businessStartCity', align: 'center',title: '出发市',hide: true} |
| | | ,{field: 'businessStartDistrict', align: 'center',title: '出发县',hide: true} |
| | | ,{field: 'businessStartTown', align: 'center',title: '出发镇',hide: true} |
| | | ,{field: 'businessTransportation$', align: 'center',title: '交通工具',hide: false} |
| | | ,{field: 'businessReturn$', align: 'center',title: '单程往返',hide: false} |
| | | ,{field: 'businessStartAddr', align: 'center',title: '出发地', templet:function(d){return emptyShow(d.businessStartAddr)},hide: true} |
| | | ,{field: 'businessStartAddr$', align: 'center',title: '出发地',hide: false} |
| | | ,{field: 'businessEndProvince', align: 'center',title: '目的省',hide: true} |
| | | ,{field: 'businessEndCity', align: 'center',title: '目的市',hide: true} |
| | | ,{field: 'businessEndDistrict', align: 'center',title: '目的县',hide: true} |
| | | ,{field: 'businessEndTown', align: 'center',title: '目的镇',hide: true} |
| | | ,{field: 'businessEndAddr', align: 'center',title: '目的地', templet:function(d){return emptyShow(d.businessEndAddr)},hide: true} |
| | | ,{field: 'businessEndAddrr$', align: 'center',title: '目的地',hide: false} |
| | | ,{field: 'businessStartTimeDay$', align: 'center',title: '出发日期',hide: false} |
| | | ,{field: 'businessEndTimeDay$', align: 'center',title: '结束日期',hide: false} |
| | | ,{field: 'businessEndAddr$', align: 'center',title: '目的地',hide: false} |
| | | ,{field: 'businessStartTimeDay$', align: 'center',title: '出发日期',hide: false,width: 165} |
| | | ,{field: 'businessEndTimeDay$', align: 'center',title: '结束日期',hide: false,width: 165} |
| | | ,{field: 'businessDuration', align: 'center',title: '出差时长',hide: false} |
| | | ,{field: 'businessTripDays', align: 'center',title: '出差天数',hide: false} |
| | | ,{field: 'businessNotes', align: 'center',title: '出差备注',hide: false} |
| | | ,{field: 'businessPeers', align: 'center',title: '出行人',hide: false} |
| | | ,{field: 'businessPeersId', align: 'center',title: '同行人ID',hide: true} |
| | | ,{field: 'carNumber', align: 'center',title: '自驾私家车车牌号',hide: false} |
| | | ,{field: 'kilometers', align: 'center',title: '自驾私家车行程明细及公里数',hide: false} |
| | | ,{field: 'userId', align: 'center',title: '创建人',hide: false} |
| | | ,{field: 'deptId', align: 'center',title: '所属部门',hide: false} |
| | | ,{field: 'userId$', align: 'center',title: '申请人',hide: false} |
| | | ,{field: 'deptId$', align: 'center',title: '所属部门',hide: false} |
| | | ,{field: 'hostId', align: 'center',title: 'hostId',hide: true} |
| | | ,{field: 'createTime$', align: 'center',title: '创建时间',hide: false} |
| | | ,{field: 'updateTime$', align: 'center',title: '更新时间',hide: false} |
| | | ,{field: 'updateId', align: 'center',title: '更新人员ID',hide: true} |
| | | ,{field: 'settle', align: 'center',title: '进度',hide: false} |
| | | ,{field: 'createTime$', align: 'center',title: '创建时间',hide: false,width: 125} |
| | | ,{field: 'updateTime$', align: 'center',title: '更新时间',hide: false,width: 125} |
| | | ,{field: 'updateId$', align: 'center',title: '更新人员',hide: false} |
| | | ,{field: 'settle$', align: 'center',title: '进度',hide: false} |
| | | ,{field: 'status$', align: 'center',title: '状态',hide: false} |
| | | ,{field: 'businessTripType', align: 'center',title: '类型',hide: true} |
| | | ,{field: 'businessNotes', align: 'center',title: '出差备注',hide: false} |
| | | |
| | | ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120} |
| | | ]], |
| | |
| | | </div> |
| | | </div> |
| | | <!--自驾--> |
| | | <blockquote class="layui-elem-quote" style="margin-left: 30px;padding: 8px 15px;">自驾信息</blockquote> |
| | | <blockquote class="layui-elem-quote" style="margin-left: 30px;padding: 8px 15px;">日期信息</blockquote> |
| | | <div class="layui layui-row"> |
| | | <div class="layui-col-md6"> |
| | | <div class="layui-form-item"> |
| | |
| | | </div> |
| | | |
| | | <!--其它--> |
| | | <blockquote class="layui-elem-quote" style="margin-left: 30px;padding: 8px 15px;">行程信息</blockquote> |
| | | <blockquote class="layui-elem-quote" style="margin-left: 30px;padding: 8px 15px;">其它信息</blockquote> |
| | | <div class="layui layui-row"> |
| | | <div class="layui-col-md6"> |
| | | <div class="layui-form-item"> |