From 4bd9195ff5beeb416792b50bbaea84c56a1b500b Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期四, 30 五月 2024 11:05:47 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java | 2 ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOpenCity/tOpenCity_info.js | 164 +++ ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/generalization/generalization_info.js | 358 ++++++++ ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TActivityGeneralizationServiceImpl.java | 10 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java | 2 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOpenCitySiteMapper.xml | 7 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/sysCouponRecord/sysCouponRecord_add.html | 1 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/addHtml.html | 167 +++ ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/qrCodeHtml.html | 35 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/QRCodeUtil.java | 50 + ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/GeneralizationActivityController.java | 271 ++++++ ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/generalization_detail.html | 180 ++++ ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TActivityGeneralizationMapper.xml | 18 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/sysCouponRecord.html | 47 + ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/generalization/generalization.js | 236 +++++ ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOpenCitySite.java | 161 +++ ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTape/tOrderTape.html | 3 ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/generalization/sysCouponRecord.js | 162 +++ ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_edit.html | 61 + ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOpenCitySiteMapper.java | 19 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OssUploadUtil.java | 18 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html | 8 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/MyQrCodeUtil.java | 93 ++ ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html | 8 ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord.js | 2 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOpenCityController.java | 110 ++ ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderTapeController.java | 10 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/editHtml.html | 194 ++++ ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTape/tOrderTape.js | 28 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_orderDetail.html | 8 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_add.html | 2 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TActivityGeneralizationMapper.java | 13 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_add.html | 30 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GaoDeMapUtil.java | 2 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/generalization.html | 55 + ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TActivityGeneralization.java | 33 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITActivityGeneralizationService.java | 7 37 files changed, 2,550 insertions(+), 25 deletions(-) diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/GeneralizationActivityController.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/GeneralizationActivityController.java new file mode 100644 index 0000000..6ea493b --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/GeneralizationActivityController.java @@ -0,0 +1,271 @@ +package com.stylefeng.guns.modular.system.controller.general; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.stylefeng.guns.core.base.controller.BaseController; +import com.stylefeng.guns.core.common.constant.factory.PageFactory; +import com.stylefeng.guns.core.shiro.ShiroKit; +import com.stylefeng.guns.core.util.DateUtil; +import com.stylefeng.guns.core.util.SinataUtil; +import com.stylefeng.guns.modular.system.controller.util.MyQrCodeUtil; +import com.stylefeng.guns.modular.system.controller.util.QRCodeUtil; +import com.stylefeng.guns.modular.system.model.*; +import com.stylefeng.guns.modular.system.service.ISysCouponRecordService; +import com.stylefeng.guns.modular.system.service.ITActivityGeneralizationService; +import com.stylefeng.guns.modular.system.util.GaoDeMapUtil; +import com.stylefeng.guns.modular.system.util.OssUploadUtil; +import com.stylefeng.guns.modular.system.util.UUIDUtil; +import org.apache.tomcat.util.http.fileupload.ByteArrayOutputStream; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; + +import javax.imageio.ImageIO; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * todo 新增推广活动设置控制器 + * + * @author fengshuonan + * @Date 2020-06-17 20:51:18 + */ +@Controller +@RequestMapping("/generalization") +public class GeneralizationActivityController extends BaseController { + @Autowired + private ITActivityGeneralizationService activityGeneralizationService; + @Autowired + private ISysCouponRecordService sysCouponRecordService; + private String PREFIX = "/system/generalization/"; + + /** + * 跳转到首页 + */ + @RequestMapping("/activity") + public String index() { + return PREFIX + "generalization.html"; + } + /** + * 跳转到选择优惠券页面 + * @return + */ + @RequestMapping("/sysCouponRecord") + public String sysCouponRecord() { + return PREFIX + "sysCouponRecord.html"; + } + @RequestMapping("/addHtml") + public String addHtml() { + return PREFIX + "addHtml.html"; + } + @RequestMapping("/editHtml/{id}") + public String editHtml(Model model,@PathVariable("id") Integer id) { + TActivityGeneralization data = activityGeneralizationService.selectById(id); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + model.addAttribute("startTime", sdf.format(data.getStartTime())); + model.addAttribute("endTime", sdf.format(data.getEndTime())); + model.addAttribute("item",data); + List<SysCouponRecord> siteList = sysCouponRecordService.selectList(new EntityWrapper<SysCouponRecord>() + .eq("id",data.getCouponId())); + model.addAttribute("siteList",siteList); + return PREFIX + "editHtml.html"; + } + @RequestMapping("/generalization_detail/{id}") + public String generalization_detail(Model model,@PathVariable("id") Integer id) { + TActivityGeneralization data = activityGeneralizationService.selectById(id); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + model.addAttribute("startTime", sdf.format(data.getStartTime())); + model.addAttribute("endTime", sdf.format(data.getEndTime())); + model.addAttribute("item",data); + List<SysCouponRecord> siteList = sysCouponRecordService.selectList(new EntityWrapper<SysCouponRecord>() + .eq("id",data.getCouponId())); + model.addAttribute("siteList",siteList); + return PREFIX + "generalization_detail.html"; + } + + @RequestMapping("/qrCodeHtml/{id}") + public String qrCodeHtml(Model model,@PathVariable("id") Integer id) { + TActivityGeneralization data = activityGeneralizationService.selectById(id); + model.addAttribute("qrCode",data.getQrCode()); + return PREFIX + "qrCodeHtml.html"; + } + + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String createTime,String activityName,Integer state) { + String beginTime = null; + String endTime = null; + if (SinataUtil.isNotEmpty(createTime)){ + String[] timeArray = createTime.split(" - "); + beginTime = timeArray[0]; + endTime = timeArray[1]; + } + Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); + page.setRecords(activityGeneralizationService.getList(page,beginTime,endTime,activityName,state)); + return super.packForBT(page); + } + + /** + * 新增推广活动 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(TActivityGeneralization tActivityGeneralization) throws Exception { + + // 判断状态 + if(new Date().after(tActivityGeneralization.getStartTime()) && new Date().before(tActivityGeneralization.getEndTime())){ + tActivityGeneralization.setState(1); + } + if(new Date().after(tActivityGeneralization.getEndTime())){ + tActivityGeneralization.setState(3); + } + if(new Date().before(tActivityGeneralization.getStartTime())){ + tActivityGeneralization.setState(2); + } + activityGeneralizationService.insert(tActivityGeneralization); + + // 生成二维码,上传到服务器 + MyQrCodeUtil.createCodeToFile("https://www.baidu.com?id=" + tActivityGeneralization.getId()); + BufferedImage qrCodeImage = QRCodeUtil.createImage("https://www.baidu.com?id=" + tActivityGeneralization.getId()); + MultipartFile qrCodeFile = convert(qrCodeImage, new Date().getTime()+ UUIDUtil.getRandomCode(3)+".PNG"); + String picture = OssUploadUtil.ossUpload(qrCodeFile); + System.err.println("二维码:"+ picture); + tActivityGeneralization.setQrCode(picture); + activityGeneralizationService.updateById(tActivityGeneralization); + return SUCCESS_TIP; + } + + /** + * 编辑推广活动 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(TActivityGeneralization tActivityGeneralization) { + + // 判断状态 + if(new Date().after(tActivityGeneralization.getStartTime()) && new Date().before(tActivityGeneralization.getEndTime())){ + tActivityGeneralization.setState(1); + } + if(new Date().after(tActivityGeneralization.getEndTime())){ + tActivityGeneralization.setState(3); + } + if(new Date().before(tActivityGeneralization.getStartTime())){ + tActivityGeneralization.setState(2); + } + activityGeneralizationService.updateById(tActivityGeneralization); + return SUCCESS_TIP; + } + + /** + * 删除推广活动 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(Integer tActivityGeneralizationId) { + TActivityGeneralization activityGeneralization = activityGeneralizationService.selectById(tActivityGeneralizationId); + activityGeneralization.setIsDelete(2); + activityGeneralizationService.updateById(activityGeneralization); + return SUCCESS_TIP; + } + + /** + * 启动/暂停 + */ + @RequestMapping(value = "/updateStatus") + @ResponseBody + public Object updateStatus(Integer id, Integer status) { + TActivityGeneralization tActivityGeneralization = activityGeneralizationService.selectById(id); + if(status == 1){ + if(new Date().after(tActivityGeneralization.getStartTime()) && new Date().before(tActivityGeneralization.getEndTime())){ + tActivityGeneralization.setState(1); + } + if(new Date().after(tActivityGeneralization.getEndTime())){ + tActivityGeneralization.setState(3); + } + if(new Date().before(tActivityGeneralization.getStartTime())){ + tActivityGeneralization.setState(2); + } + }else { + tActivityGeneralization.setState(status); + } + activityGeneralizationService.updateById(tActivityGeneralization); + return SUCCESS_TIP; + } + + /** + * 启动/暂停 + */ + @RequestMapping(value = "/downQrcode") + @ResponseBody + public Object downQrcode(HttpServletResponse response, String imgURL) throws Exception { + File localFile = new File("D://qrCode"); + File file = new File(imgURL); + + + // 创建File对象 + File downloadedFile = new File(localFile.getAbsolutePath()); + + System.out.println("文件已下载到: " + downloadedFile.getAbsolutePath()); + + // 设置响应头 + response.reset(); + response.setContentType("image/png"); // 根据图片类型调整 + response.setHeader("Content-Disposition", "attachment; filename=二维码.png"); + + // 输出文件内容到响应输出流 + FileInputStream fis = new FileInputStream(file); + OutputStream os = response.getOutputStream(); + + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = fis.read(buffer)) != -1) { + os.write(buffer, 0, bytesRead); + } + // 关闭流 + os.flush(); + os.close(); + fis.close(); + return SUCCESS_TIP; + } + + public static MultipartFile convert(BufferedImage bufferedImage, String fileName) throws IOException { + // 将 BufferedImage 转换为字节数组 + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ImageIO.write(bufferedImage, "png", baos); + byte[] bytes = baos.toByteArray(); + + // 创建 ByteArrayResource + ByteArrayResource resource = new ByteArrayResource(bytes); + + // 创建 MockMultipartFile + MockMultipartFile multipartFile = new MockMultipartFile( + "file", + fileName, + "image/png", + resource.getInputStream() + ); + + return multipartFile; + } + +} diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOpenCityController.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOpenCityController.java index 04e08e9..dd5b3b0 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOpenCityController.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOpenCityController.java @@ -10,7 +10,9 @@ import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.util.DateUtil; import com.stylefeng.guns.core.util.SinataUtil; +import com.stylefeng.guns.modular.system.dao.TOpenCitySiteMapper; import com.stylefeng.guns.modular.system.model.TOpenCityBusiness; +import com.stylefeng.guns.modular.system.model.TOpenCitySite; import com.stylefeng.guns.modular.system.model.TRegion; import com.stylefeng.guns.modular.system.service.ITOpenCityBusinessService; import com.stylefeng.guns.modular.system.service.ITRegionService; @@ -26,10 +28,13 @@ import com.stylefeng.guns.modular.system.model.TOpenCity; import com.stylefeng.guns.modular.system.service.ITOpenCityService; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * 城市管理控制器 @@ -51,7 +56,8 @@ @Autowired private ITOpenCityBusinessService tOpenCityBusinessService; - + @Autowired + private TOpenCitySiteMapper tOpenCitySiteMapper; /** * 跳转到城市管理首页 */ @@ -78,7 +84,6 @@ TOpenCity tOpenCity = tOpenCityService.selectById(tOpenCityId); model.addAttribute("item",tOpenCity); LogObjectHolder.me().set(tOpenCity); - //省 List<TRegion> provinceList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0)); model.addAttribute("provinceList",provinceList); @@ -91,6 +96,16 @@ //经营业务 List<Map<String,Object>> businessList = tOpenCityService.getBusinessByCityId(tOpenCityId); model.addAttribute("businessList",businessList); + // 机场/动车站点 + List<TOpenCitySite> siteList = tOpenCitySiteMapper.selectList(new EntityWrapper<TOpenCitySite>() + .eq("openCityId", tOpenCityId) + .ne("flag",3)); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd"); + for (TOpenCitySite openCitySite : siteList) { + String format = simpleDateFormat.format(openCitySite.getInsertTime()); + openCitySite.setInsertTime1(format); + } + model.addAttribute("siteList",siteList); return PREFIX + "tOpenCity_edit.html"; } @@ -127,7 +142,10 @@ */ @RequestMapping(value = "/add") @ResponseBody - public Object add(TOpenCity tOpenCity,@RequestParam String businessTypeStr,Integer areaId,Integer cityId,Integer provinceId) { + public Object add(TOpenCity tOpenCity,@RequestParam String businessTypeStr, + String sites, + Integer areaId,Integer cityId, + Integer provinceId) { //获取code if (SinataUtil.isNotEmpty(areaId)){ TRegion area = tRegionService.selectById(areaId); @@ -163,6 +181,35 @@ //添加经营业务 testJSONStrToJSONArray(businessTypeStr,tOpenCity.getId()); + // 添加机场/动车站点 + JSONArray jsonArray = JSON.parseArray(sites); + int size = jsonArray.size(); + for (int i = 0; i < size; i++){ + JSONObject jsonObject = jsonArray.getJSONObject(i); + TOpenCitySite openCitySite = new TOpenCitySite(); + openCitySite.setOpenCityId(tOpenCity.getId()); + String string = jsonObject.getString("lonAndLat"); + // 去除转义符 + String unescaped = string.replaceAll("& #40;", "(").replaceAll("& #41;", ")"); + // 提取括号中的内容 + Pattern pattern = Pattern.compile("\\(([^)]+)\\)"); + Matcher matcher = pattern.matcher(unescaped); + if (matcher.find()) { + String lonAndLat = matcher.group(1); + System.out.println("括号中的内容: " + lonAndLat); + // 使用逗号分割字符串 + String[] parts = lonAndLat.split(","); + // 提取需要的部分 + String lon = parts[0]; + String lat = parts[1]; + openCitySite.setLon(lon); + openCitySite.setLat(lat); + } + openCitySite.setFlag(1); + openCitySite.setName(jsonObject.getString("name")); + openCitySite.setInsertTime(DateUtil.parse(jsonObject.getString("time")+" 00:00:00","yyyy-MM-dd HH:mm:ss")); + tOpenCitySiteMapper.insert(openCitySite); + } return SUCCESS_TIP; } @@ -224,7 +271,7 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(TOpenCity tOpenCity,@RequestParam String businessTypeStr,Integer areaId,Integer cityId,Integer provinceId) { + public Object update(TOpenCity tOpenCity,@RequestParam String businessTypeStr,Integer areaId,Integer cityId,Integer provinceId,String sites) { if (SinataUtil.isNotEmpty(areaId)){ TRegion area = tRegionService.selectById(areaId); tOpenCity.setCode(area.getCode()); @@ -279,6 +326,61 @@ tOpenCityBusinessService.update(business,new EntityWrapper<TOpenCityBusiness>().eq("openCityId",tOpenCity.getId())); //添加经营业务 testJSONStrToJSONArray(businessTypeStr,tOpenCity.getId()); +// TOpenCitySite openCitySite = new TOpenCitySite(); +// // 删除站点 +// tOpenCitySiteMapper.update(openCitySite,new EntityWrapper<TOpenCitySite>().eq("openCityId",tOpenCity.getId())); + List<TOpenCitySite> openCityId = tOpenCitySiteMapper.selectList(new EntityWrapper<TOpenCitySite>() + .eq("openCityId", tOpenCity.getId())); + for (TOpenCitySite openCitySite : openCityId) { + openCitySite.setFlag(3); + tOpenCitySiteMapper.updateById(openCitySite); + } + // 添加站点 + // 添加机场/动车站点 + JSONArray jsonArray = JSON.parseArray(sites); + int size = jsonArray.size(); + for (int i = 0; i < size; i++){ + JSONObject jsonObject = jsonArray.getJSONObject(i); + String string = jsonObject.getString("lonAndLat"); + // 去除转义符 + String unescaped = string.replaceAll("& #40;", "(").replaceAll("& #41;", ")"); + // 提取括号中的内容 + Pattern pattern = Pattern.compile("\\(([^)]+)\\)"); + Matcher matcher = pattern.matcher(unescaped); + String lon = ""; + String lat = ""; + if (matcher.find()) { + String lonAndLat = matcher.group(1); + System.out.println("括号中的内容: " + lonAndLat); + // 使用逗号分割字符串 + String[] parts = lonAndLat.split(","); + // 提取需要的部分 + lon = parts[0]; + lat = parts[1]; + } + if (SinataUtil.isNotEmpty(jsonObject.getInteger("busId")) && jsonObject.getInteger("busId") != 0){ + // 修改 + TOpenCitySite openCitySite1 = tOpenCitySiteMapper.selectById(jsonObject.getInteger("busId")); + openCitySite1.setLon(lon); + openCitySite1.setLat(lat); + openCitySite1.setName(jsonObject.getString("name")); + openCitySite1.setFlag(2); + openCitySite1.setType(jsonObject.getInteger("siteType")); + tOpenCitySiteMapper.updateById(openCitySite1); + }else{ + // 新增 + TOpenCitySite openCitySite3 = new TOpenCitySite(); + openCitySite3.setOpenCityId(tOpenCity.getId()); + openCitySite3.setLon(lon); + openCitySite3.setLat(lat); + openCitySite3.setFlag(1); + openCitySite3.setName(jsonObject.getString("name")); + openCitySite3.setType(jsonObject.getInteger("siteType")); + openCitySite3.setInsertTime(DateUtil.parse(jsonObject.getString("time")+" 00:00:00","yyyy-MM-dd HH:mm:ss")); + tOpenCitySiteMapper.insert(openCitySite3); + } + + } return SUCCESS_TIP; } diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderTapeController.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderTapeController.java index d2e1bc9..6400ecb 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderTapeController.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderTapeController.java @@ -77,6 +77,16 @@ } /** + * 删除行程录音管理 + */ + @RequestMapping(value = "/getDetailById") + @ResponseBody + public Object getDetailById(@RequestParam Integer tOrderTapeId) { + TOrderTape tOrderTape = tOrderTapeService.selectById(tOrderTapeId); + return ResultUtil.success(tOrderTape); + } + + /** * 批量删除行程录音管理 */ @RequestMapping(value = "/deleteBatch") diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/MyQrCodeUtil.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/MyQrCodeUtil.java new file mode 100644 index 0000000..e09b0c8 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/MyQrCodeUtil.java @@ -0,0 +1,93 @@ +package com.stylefeng.guns.modular.system.controller.util; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.MultiFormatWriter; +import com.google.zxing.WriterException; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; +import org.springframework.util.StringUtils; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.OutputStream; +import java.util.HashMap; +import java.util.Map; + +public class MyQrCodeUtil { + //CODE_WIDTH:二维码宽度,单位像素 + private static final int CODE_WIDTH = 400; + //CODE_HEIGHT:二维码高度,单位像素 + private static final int CODE_HEIGHT = 400; + //FRONT_COLOR:二维码前景色,0x000000 表示黑色 + private static final int FRONT_COLOR = 0x000000; + //BACKGROUND_COLOR:二维码背景色,0xFFFFFF 表示白色 + //演示用 16 进制表示,和前端页面 CSS 的取色是一样的,注意前后景颜色应该对比明显,如常见的黑白 + private static final int BACKGROUND_COLOR = 0xFFFFFF; + public static BufferedImage createCodeToFile(String content) { + try { + content = content.trim(); + //核心代码-生成二维码 + BufferedImage bufferedImage = getBufferedImage(content); + + return bufferedImage; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + /** + * 生成二维码并输出到输出流, 通常用于输出到网页上进行显示,输出到网页与输出到磁盘上的文件中,区别在于最后一句 ImageIO.write + * write(RenderedImage im,String formatName,File output):写到文件中 + * write(RenderedImage im,String formatName,OutputStream output):输出到输出流中 + * @param content :二维码内容 + * @param outputStream :输出流,比如 HttpServletResponse 的 getOutputStream + */ + public static void createCodeToOutputStream(String content, OutputStream outputStream) { + try { + if (!StringUtils.hasLength(content)) { + return; + } + content = content.trim(); + //核心代码-生成二维码 + BufferedImage bufferedImage = getBufferedImage(content); + //区别就是这一句,输出到输出流中,如果第三个参数是 File,则输出到文件中 + ImageIO.write(bufferedImage, "png", outputStream); + System.out.println("二维码图片生成到输出流成功..."); + } catch (Exception e) { + e.printStackTrace(); + } + } + //核心代码-生成二维码 + private static BufferedImage getBufferedImage(String content) throws WriterException { + //com.google.zxing.EncodeHintType:编码提示类型,枚举类型 + Map<EncodeHintType, Object> hints = new HashMap(); + //EncodeHintType.CHARACTER_SET:设置字符编码类型 + hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); + //EncodeHintType.ERROR_CORRECTION:设置误差校正 + //ErrorCorrectionLevel:误差校正等级,L = ~7% correction、M = ~15% correction、Q = ~25% correction、H = ~30% correction + //不设置时,默认为 L 等级,等级不一样,生成的图案不同,但扫描的结果是一样的 + hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); + //EncodeHintType.MARGIN:设置二维码边距,单位像素,值越小,二维码距离四周越近 + hints.put(EncodeHintType.MARGIN, 1); + MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); + BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, CODE_WIDTH, CODE_HEIGHT, hints); + BufferedImage bufferedImage = new BufferedImage(CODE_WIDTH, CODE_HEIGHT, BufferedImage.TYPE_INT_BGR); + for (int x = 0; x < CODE_WIDTH; x++) { + for (int y = 0; y < CODE_HEIGHT; y++) { + bufferedImage.setRGB(x, y, bitMatrix.get(x, y) ? FRONT_COLOR : BACKGROUND_COLOR); + } + } + return bufferedImage; + } + + public static void main(String[] args) { + String param = "{\n" + + " \"scan_type\": 1,\n" + + " \"space_id\": 2,\n" + + " \"sutu_id\": 3\n" + + "}"; + createCodeToFile(param); + } + +} \ No newline at end of file diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/QRCodeUtil.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/QRCodeUtil.java new file mode 100644 index 0000000..4bb509d --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/QRCodeUtil.java @@ -0,0 +1,50 @@ +package com.stylefeng.guns.modular.system.controller.util; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.MultiFormatWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; + +import java.awt.image.BufferedImage; +import java.util.Hashtable; + +/** + * @author chengst + * @date 2019/11/4 + **/ +public class QRCodeUtil { + + private final static String CHARSET = "utf-8"; + + private final static int QRSIZEE = 300; + + // 二维码颜色 + private static final int BLACK = 0xFF000000; + // 二维码颜色 + private static final int WHITE = 0xFFFFFFFF; + + public static BufferedImage createImage(String content){ + Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>(); + hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); + hints.put(EncodeHintType.CHARACTER_SET, CHARSET); + hints.put(EncodeHintType.MARGIN, 1); + BitMatrix bitMatrix = null; + try { + bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, QRSIZEE, QRSIZEE,hints); + }catch (Exception e){ + e.printStackTrace(); + } + int width = bitMatrix.getWidth(); + int height = bitMatrix.getHeight(); + BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + + for (int x = 0; x < width; x++) { + for (int y = 0; y < height; y++) { + image.setRGB(x, y, bitMatrix.get(x, y) ? BLACK : WHITE); + } + } + return image; + } +} + diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TActivityGeneralizationMapper.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TActivityGeneralizationMapper.java index c0d5b9e..1c8da2a 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TActivityGeneralizationMapper.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TActivityGeneralizationMapper.java @@ -1,8 +1,14 @@ package com.stylefeng.guns.modular.system.dao; import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.modular.system.model.TActivityGeneralization; import com.stylefeng.guns.modular.system.model.TOrderTape; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; /** * <p> @@ -12,6 +18,13 @@ * @author 吕雪 * @since 2020-06-09 */ +@Mapper public interface TActivityGeneralizationMapper extends BaseMapper<TActivityGeneralization> { + List<Map<String, Object>> getList(@Param("page") Page<Map<String, Object>> page, + @Param("beginTime")String beginTime, + @Param("endTime") String endTime, + @Param("activityName")String activityName, + @Param("state")Integer state); + } diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOpenCitySiteMapper.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOpenCitySiteMapper.java new file mode 100644 index 0000000..901a74e --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOpenCitySiteMapper.java @@ -0,0 +1,19 @@ +package com.stylefeng.guns.modular.system.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.stylefeng.guns.modular.system.model.TOpenCitySite; +import org.apache.ibatis.annotations.Mapper; + +/** + * <p> + * 开通城市表 Mapper 接口 + * </p> + * + * @author 吕雪 + * @since 2020-06-02 + */ +@Mapper +public interface TOpenCitySiteMapper extends BaseMapper<TOpenCitySite> { + + +} diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TActivityGeneralizationMapper.xml b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TActivityGeneralizationMapper.xml index 472d027..8a15dec 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TActivityGeneralizationMapper.xml +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TActivityGeneralizationMapper.xml @@ -20,5 +20,23 @@ <sql id="Base_Column_List"> id, activityName, participateCount, startTime, endTime, couponId, userGrantCount, monthUseCount, useExplain, isDelete </sql> + <select id="getList" resultType="java.util.Map"> + select a.id,a.insertTime,a.activityName,CONCAT(DATE_FORMAT(a.startTime, '%Y-%m-%d')," — ",DATE_FORMAT(a.endTime, '%Y-%m-%d')) as `time`, + a.qrCode, + a.participateCount,a.state,IFNULL(b.count, 0) AS `count` + from t_activity_generalization a + LEFT join (SELECT userId,couponActivityId, activityType,COUNT(*) AS `count` FROM t_user_coupon_record where activityType = 5 GROUP BY userId) b + ON a.id = b.couponActivityId + WHERE a.isDelete = 1 + <if test="beginTime != null and beginTime !='' and endTime != null and endTime != ''"> + and (a.insertTime between CONCAT(#{beginTime},' 00:00:00') and CONCAT(#{endTime},' 23:59:59')) + </if> + <if test="activityName != null and activityName !=''"> + and a.activityName like CONCAT('%',#{activityName},'%') + </if> + <if test="state != null"> + and a.state=#{state} + </if> + </select> </mapper> diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOpenCitySiteMapper.xml b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOpenCitySiteMapper.xml new file mode 100644 index 0000000..3f0be14 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOpenCitySiteMapper.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.stylefeng.guns.modular.system.dao.TOpenCitySiteMapper"> + + + +</mapper> diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TActivityGeneralization.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TActivityGeneralization.java index 1912fd3..f6c7423 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TActivityGeneralization.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TActivityGeneralization.java @@ -33,6 +33,25 @@ @ApiModelProperty(value = "最多参与人数") @TableField(value = "participateCount") private Integer participateCount; + @ApiModelProperty(value = "状态 1=已开启 2=未开启 3=已结束 4=暂停") + @TableField(value = "state") + private Integer state; + + public Date getInsertTime() { + return insertTime; + } + + public void setInsertTime(Date insertTime) { + this.insertTime = insertTime; + } + + @ApiModelProperty(value = "添加时间") + @TableField(value = "insertTime") + private Date insertTime; + + @ApiModelProperty(value = "二维码链接") + @TableField(value = "qrCode") + private String qrCode; @ApiModelProperty(value = "开始时间") @TableField(value = "startTime") @@ -62,6 +81,20 @@ @TableField(value = "isDelete") private Integer isDelete; + public Integer getState() { + return state; + } + + public void setState(Integer state) { + this.state = state; + } + public String getQrCode() { + return qrCode; + } + + public void setQrCode(String qrCode) { + this.qrCode = qrCode; + } public Integer getId() { return id; } diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOpenCitySite.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOpenCitySite.java new file mode 100644 index 0000000..ee9d1b6 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOpenCitySite.java @@ -0,0 +1,161 @@ +package com.stylefeng.guns.modular.system.model; + +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.DataSource; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import io.swagger.models.auth.In; + +import java.io.Serializable; +import java.util.Date; +import java.util.Objects; + +/** + * <p> + * 开通城市表 + * </p> + * + * @author 吕雪 + * @since 2020-06-02 + */ + +@TableName("t_open_city_site") +public class TOpenCitySite extends Model<TOpenCitySite> { + + private static final long serialVersionUID = 1L; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + TOpenCitySite that = (TOpenCitySite) o; + return Objects.equals(id, that.id) && Objects.equals(lon, that.lon) && Objects.equals(lat, that.lat) && Objects.equals(name, that.name) && Objects.equals(insertTime, that.insertTime) && Objects.equals(openCityId, that.openCityId); + } + + @Override + public int hashCode() { + return Objects.hash(id, lon, lat, name, insertTime, openCityId); + } + + public String getInsertTime1() { + + return insertTime1; + } + + public void setInsertTime1(String insertTime1) { + this.insertTime1 = insertTime1; + } + + @Override + public String toString() { + return "TOpenCitySite{" + + "id=" + id + + ", lon='" + lon + '\'' + + ", lat='" + lat + '\'' + + ", name='" + name + '\'' + + ", insertTime=" + insertTime + + ", openCityId=" + openCityId + + '}'; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getLon() { + return lon; + } + + public void setLon(String lon) { + this.lon = lon; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Date getInsertTime() { + return insertTime; + } + + public void setInsertTime(Date insertTime) { + this.insertTime = insertTime; + } + + public Integer getOpenCityId() { + return openCityId; + } + + public void setOpenCityId(Integer openCityId) { + this.openCityId = openCityId; + } + + /** + * 主键id + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 经度 + */ + private String lon; + /** + * 纬度 + */ + private String lat; + + public Integer getFlag() { + return flag; + } + + public void setFlag(Integer flag) { + this.flag = flag; + } + + private Integer flag; + /** + * 类型 1机场2站点 + */ + private Integer type; + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + /** + * 站点名称 + */ + private String name; + private Date insertTime; + @TableField(exist = false) + private String insertTime1; + private Integer openCityId; + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITActivityGeneralizationService.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITActivityGeneralizationService.java index fbf97d9..d828f25 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITActivityGeneralizationService.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITActivityGeneralizationService.java @@ -1,8 +1,12 @@ package com.stylefeng.guns.modular.system.service; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.IService; import com.stylefeng.guns.modular.system.model.TActivityGeneralization; import com.stylefeng.guns.modular.system.model.TOrderTape; + +import java.util.List; +import java.util.Map; /** * <p> @@ -14,4 +18,7 @@ */ public interface ITActivityGeneralizationService extends IService<TActivityGeneralization> { + List<Map<String, Object>> getList(Page<Map<String, Object>> page, String beginTime, String endTime, String activityName, Integer state); + + } diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TActivityGeneralizationServiceImpl.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TActivityGeneralizationServiceImpl.java index 075af69..b3cdce8 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TActivityGeneralizationServiceImpl.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TActivityGeneralizationServiceImpl.java @@ -1,5 +1,6 @@ package com.stylefeng.guns.modular.system.service.impl; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.modular.system.dao.TActivityGeneralizationMapper; import com.stylefeng.guns.modular.system.dao.TOrderTapeMapper; @@ -8,6 +9,9 @@ import com.stylefeng.guns.modular.system.service.ITActivityGeneralizationService; import com.stylefeng.guns.modular.system.service.ITOrderTapeService; import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; /** * <p> @@ -20,4 +24,10 @@ @Service public class TActivityGeneralizationServiceImpl extends ServiceImpl<TActivityGeneralizationMapper, TActivityGeneralization> implements ITActivityGeneralizationService { + @Override + public List<Map<String, Object>> getList(Page<Map<String, Object>> page, + String beginTime, String endTime, + String activityName, Integer state) { + return this.baseMapper.getList(page,beginTime,endTime,activityName,state); + } } diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java index 8f17281..c01beb4 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java @@ -34,7 +34,7 @@ @Autowired private IGDInterfaceService gdInterfaceService; - private String key = "ca723c3c8a78962a7751129ae035dc9d"; + private String key = "8fc6a7da12d64696e9727605d81f72de"; private JSONArray jsonArray = new JSONArray(); diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java index 5845ae2..29522dc 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java @@ -20,7 +20,7 @@ @Component public class GDMapGeocodingUtil { - private String key = "ca723c3c8a78962a7751129ae035dc9d"; + private String key = "8fc6a7da12d64696e9727605d81f72de"; @Autowired private RestTemplate restTemplate; diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GaoDeMapUtil.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GaoDeMapUtil.java index 89d066f..e88224c 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GaoDeMapUtil.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GaoDeMapUtil.java @@ -35,7 +35,7 @@ try { // 拼接请求高德的url - String url = "http://restapi.amap.com/v3/geocode/geo?address=" + address + "&output=JSON&key=" + "ca723c3c8a78962a7751129ae035dc9d"; + String url = "http://restapi.amap.com/v3/geocode/geo?address=" + address + "&output=JSON&key=" + "8fc6a7da12d64696e9727605d81f72de"; // 请求高德接口 String result = sendHttpGet(url); JSONObject resultJOSN = JSONObject.parseObject(result); diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OssUploadUtil.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OssUploadUtil.java index 7aed067..4c8a9de 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OssUploadUtil.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OssUploadUtil.java @@ -36,4 +36,22 @@ } return fileName; } + + public static String ossUpload(MultipartFile file) throws IOException{ + //CommonsMultipartFile file = (CommonsMultipartFile)multipartFile; + String fileName = ""; + if(file!=null && !"".equals(file.getOriginalFilename()) && file.getOriginalFilename()!=null){ + InputStream content = file.getInputStream();//获得指定文件的输入流 + ObjectMetadata meta = new ObjectMetadata();// 创建上传Object的Metadata + meta.setContentLength(file.getSize()); // 必须设置ContentLength + String originalFilename = file.getOriginalFilename(); + fileName = UUID.randomUUID().toString().replaceAll("-","") + originalFilename.subSequence(originalFilename.lastIndexOf("."), originalFilename.length()); + ossClient.putObject(bucketName,"img/"+fileName,content,meta);// 上传Object. + if(fileName != null && !"".equals(fileName)){ + System.out.println(fileName); + fileName = oss_domain+"img/"+fileName; + } + } + return fileName; + } } diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/addHtml.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/addHtml.html new file mode 100644 index 0000000..a721136 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/addHtml.html @@ -0,0 +1,167 @@ +@layout("/common/_container.html"){ +<style> + .newWidth, .single-line{ + max-width:150px !important;display: initial !important; + } +</style> +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="ibox-title"> + <h5>添加推广活动</h5> + </div> + <div class="ibox-content" id="activityGeneralizationInfoForm"> + <div class="row row-lg"> + <div class="col-sm-12"> + <input hidden id="areaId" value=""> + + <div class="col-sm-12" style="cursor: pointer;text-align: right;"> + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >活动名称:</label> + </div> + <div class="initialLevel col-sm-4 control-label form-group" > + <input id="activityName" name="activityName" type="text" maxlength="40" style="height: 30px;width: 300px" class="form-control" placeholder="请输入活动名称" required="required"> + </div> + </div> + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >最多可参与人数:</label> + </div> + <div class="initialLevel col-sm-4 control-label form-group" > + <input id="participateCount" name="participateCount" type="number" max="1000000" min="1" class="form-control" style="height: 30px;width: 300px" placeholder="请输入最多可参与人数" required="required"> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >活动时间:</label> + </div> + <div class="initialLevel col-sm-6 control-label form-group" > + <input type="text" id="startTime" name="startTime" class="form-control" style="max-width:400px !important;display: initial !important;" placeholder="请选择活动时间"/> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >优惠券:</label> + </div> + <div class="initialLevel col-sm-3 control-label form-group" > + <button type="button" class="btn btn-primary " onclick="GeneralizationInfoDlg.toSelectCouponOpt()" id="selectCoupon"> + <i class="fa fa-plus"></i> 选择优惠券 + </button> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="col-sm-10"> + <div style="height: 200px; border: 1px solid #e5e6e7;overflow-y: auto;"> + <table class="table table-striped table-bordered table-hover table-condensed"> + <thead> + <tr> + <th style="width: 300px;">添加时间</th> + <th style="width: 300px;">优惠券类型</th> + <th style="width: 300px;">优惠金额</th> + <th style="width: 300px;">有效期</th> + <th style="width: 300px;">领取人数</th> + <th style="width: 300px;">操作</th> + </tr> + </thead> + <tbody id="site"> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >每个人发放:</label> + </div> + <div class="initialLevel col-sm-4 control-label form-group" > + <input id="userGrantCount" name="userGrantCount" type="number" maxlength="11" style="height: 30px;width: 300px" class="form-control" required="required"> + </div> + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >张</label> + </div> + </div> + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >每个月可用:</label> + </div> + <div class="initialLevel col-sm-4 control-label form-group" > + <input id="monthUseCount" name="monthUseCount" type="number" maxlength="11" class="form-control" style="height: 30px;width: 300px" required="required"> + </div> + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >张</label> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >使用说明:</label> + </div> + <div class="text-area-container initialLevel col-sm-9 control-label form-group" > + <textarea type="text/plain" name="useExplain" id="useExplain" class="form-control" style="width:100%;height:150px;"></textarea> + <div id="charCount" class="char-count">0/300</div> + </div> + </div> + </div> + + </div> + + </div> + </div> + + <div class="row btn-group-m-t"> + <div class="col-sm-10" style="text-align: center"> + <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="GeneralizationInfoDlg.addSubmit()"/> + <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="GeneralizationInfoDlg.close()"/> + </div> + </div> + </div> + + </div> +</div> +<script src="${ctxPath}/static/modular/system/generalization/generalization_info.js"></script> +<script src="${ctxPath}/static/modular/system/generalization/sysCouponRecord.js"></script> +<style type="text/css"> + #useExplain { + width: 100%; + height: 100px; /* 根据需要调整高度 */ + resize: none; /* 禁止用户调整文本域大小 */ + } + + .char-count { + position: absolute; + bottom: 5px; /* 根据需要调整距离底部的位置 */ + right: 10px; /* 根据需要调整距离右侧的位置 */ + font-size: 12px; /* 根据需要调整字体大小 */ + } +</style> +<script> + laydate.render({ + elem: '#startTime' + ,type: 'date' + ,range: true + ,min: 'new Date()' //最小值今天 + }); + + var textarea = document.getElementById('useExplain'); + var charCount = document.getElementById('charCount'); + var maxLength = 300; // 设置最大字数限制 + +</script> +@} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/editHtml.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/editHtml.html new file mode 100644 index 0000000..450b050 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/editHtml.html @@ -0,0 +1,194 @@ +@layout("/common/_container.html"){ +<style> + .newWidth, .single-line{ + max-width:150px !important;display: initial !important; + } +</style> +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="ibox-title"> + <h5>添加推广活动</h5> + </div> + <div class="ibox-content" id="activityGeneralizationInfoForm"> + <div class="row row-lg"> + <div class="col-sm-12"> + <input hidden id="id" value="${item.id}"> + + <div class="col-sm-12" style="cursor: pointer;text-align: right;"> + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >活动名称:</label> + </div> + <div class="initialLevel col-sm-4 control-label form-group" > + <input id="activityName" name="activityName" value="${item.activityName}" type="text" maxlength="40" style="height: 30px;width: 300px" class="form-control" placeholder="请输入活动名称" required="required"> + </div> + </div> + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >最多可参与人数:</label> + </div> + <div class="initialLevel col-sm-4 control-label form-group" > + <input id="participateCount" name="participateCount" value="${item.participateCount}" type="number" max="1000000" min="1" class="form-control" style="height: 30px;width: 300px" placeholder="请输入最多可参与人数" required="required"> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >活动时间:</label> + </div> + <div class="initialLevel col-sm-6 control-label form-group" > + <input type="text" id="startTime" name="startTime" value="${item.startTime}" class="form-control" style="max-width:400px !important;display: initial !important;" placeholder="请选择活动时间"/> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >优惠券:</label> + </div> + <div class="initialLevel col-sm-3 control-label form-group" > + <button type="button" class="btn btn-primary " onclick="GeneralizationInfoDlg.toSelectCouponOpt()" id="selectCoupon"> + <i class="fa fa-plus"></i> 选择优惠券 + </button> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="col-sm-10"> + <div style="height: 200px; border: 1px solid #e5e6e7;overflow-y: auto;"> + <table class="table table-striped table-bordered table-hover table-condensed"> + <thead> + <tr> + <th style="width: 300px;">添加时间</th> + <th style="width: 300px;">优惠券类型</th> + <th style="width: 300px;">优惠金额</th> + <th style="width: 300px;">有效期</th> + <th style="width: 300px;">领取人数</th> + <th style="width: 300px;">操作</th> + </tr> + </thead> + <tbody id="site"> + @for(obj in siteList){ + <tr class="siteClass"> + <td><input type="hidden" name="id" value="${obj.id}"> + <input type="hidden" id="insertTime" name="insertTime" value="${obj.insertTime}">${obj.insertTime}</td> + @if(obj.couponUseType == 0){ + <td><input type="hidden" id="couponUseType" name="couponUseType" value="0">通用券</td> + @}else if(obj.couponUseType == 1){ + <td><input type="hidden" id="couponUseType" name="couponUseType" value="1">专车券</td> + @}else if(obj.couponUseType == 2){ + <td><input type="hidden" id="couponUseType" name="couponUseType" value="2">出租券</td> + @}else if(obj.couponUseType == 3){ + <td><input type="hidden" id="couponUseType" name="couponUseType" value="3">直通车出行券</td> + @}else{ + <td><input type="hidden" id="couponUseType" name="couponUseType" value="7">接送机出行券</td> + @} + <td><input type="hidden" id="money" name="money" value="${obj.money}">${obj.money}</td> + <td><input type="hidden" id="effective" name="effective" value="${obj.effective}">${obj.effective}天</td> + <td><input type="hidden" id="receive" name="receive">-</td> + <td><button onclick="deleteSub(this)">移除</button></td></td> + </tr> + @} + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >每个人发放:</label> + </div> + <div class="initialLevel col-sm-4 control-label form-group" > + <input id="userGrantCount" name="userGrantCount" value="${item.userGrantCount}" type="number" maxlength="11" style="height: 30px;width: 300px" class="form-control" required="required"> + </div> + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >张</label> + </div> + </div> + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >每个月可用:</label> + </div> + <div class="initialLevel col-sm-4 control-label form-group" > + <input id="monthUseCount" name="monthUseCount" value="${item.monthUseCount}" type="number" maxlength="11" class="form-control" style="height: 30px;width: 300px" required="required"> + </div> + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >张</label> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >使用说明:</label> + </div> + <div class="text-area-container initialLevel col-sm-9 control-label form-group" > + <textarea type="text/plain" name="useExplain" id="useExplain" class="form-control" style="width:100%;height:150px;">${item.useExplain}</textarea> + </div> + </div> + </div> + + </div> + + </div> + </div> + + <div class="row btn-group-m-t"> + <div class="col-sm-10" style="text-align: center"> + <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="GeneralizationInfoDlg.editSubmit()"/> + <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="GeneralizationInfoDlg.close()"/> + </div> + </div> + </div> + + </div> +</div> +<script src="${ctxPath}/static/modular/system/generalization/generalization_info.js"></script> +<script src="${ctxPath}/static/modular/system/generalization/sysCouponRecord.js"></script> +<style type="text/css"> + #useExplain { + width: 100%; + height: 100px; /* 根据需要调整高度 */ + resize: none; /* 禁止用户调整文本域大小 */ + } + + .char-count { + position: absolute; + bottom: 5px; /* 根据需要调整距离底部的位置 */ + right: 10px; /* 根据需要调整距离右侧的位置 */ + font-size: 12px; /* 根据需要调整字体大小 */ + } +</style> +<script> + laydate.render({ + elem: '#startTime' + ,type: 'date' + ,range: true + ,min: 'new Date()' //最小值今天 + }); + $("#startTime").val("${startTime} - ${endTime}") + + var textarea = document.getElementById('useExplain'); + var charCount = document.getElementById('charCount'); + var maxLength = 300; // 设置最大字数限制 + + $(function() { + var button = document.getElementById('selectCoupon'); + button.disabled = true; + }) + + +</script> +@} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/generalization.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/generalization.html new file mode 100644 index 0000000..bf0935a --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/generalization.html @@ -0,0 +1,55 @@ +@layout("/common/_container.html"){ +<div class="row"> + <div class="col-sm-12"> + <div class="ibox float-e-margins"> + <div class="ibox-title"> + <h5>管理</h5> + </div> + <div class="ibox-content"> + <div class="row row-lg"> + <div class="col-sm-12"> + <div class="row"> + <div class="col-sm-3"> + <#TimeCon id="createTime" name="添加时间" isTime="false"/> + </div> + <div class="col-sm-3"> + <#NameCon id="activityName" name="活动名称" /> + </div> + <div class="col-sm-3"> + <#SelectCon id="state" name="状态" > + <option value="">全部</option> + <option value="1">已开启</option> + <option value="2">未开启</option> + <option value="3">已过期</option> + <option value="4">暂停</option> + </#SelectCon> + </div> + <div class="col-sm-3"> + <#button name="搜索" icon="fa-search" clickFun="Generalization.search()"/> + <#button name="重置" icon="fa-trash" clickFun="Generalization.resetSearch()" space="true"/> + </div> + </div> + <div class="hidden-xs" id="GeneralizationTableToolbar" role="group"> + @if(shiro.hasPermission("/generalization/add")){ + <#button name="添加" icon="fa-plus" clickFun="Generalization.openAddGeneralization()"/> + @} + @if(shiro.hasPermission("/generalization/updateStatus")){ + <#button name="启动/暂停" icon="" clickFun="Generalization.updateStatus()" space="true"/> + @} + + </div> + <#table id="GeneralizationTable"/> + </div> + </div> + </div> + </div> + </div> +</div> +<script src="${ctxPath}/static/modular/system/generalization/generalization.js"></script> +<script> + laydate.render({ + elem: '#createTime' + ,range: true + }); +</script> +@} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/generalization_detail.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/generalization_detail.html new file mode 100644 index 0000000..eeba9c5 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/generalization_detail.html @@ -0,0 +1,180 @@ +@layout("/common/_container.html"){ +<style> + .newWidth, .single-line{ + max-width:150px !important;display: initial !important; + } +</style> +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="ibox-title"> + <h5>推广活动详情</h5> + </div> + <div class="ibox-content" id="activityGeneralizationInfoForm"> + <div class="row row-lg"> + <div class="col-sm-12"> + <input hidden id="id" value="${item.id}"> + + <div class="col-sm-12" style="cursor: pointer;text-align: right;"> + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >活动名称:</label> + </div> + <div class="initialLevel col-sm-4 control-label form-group" > + <input id="activityName" name="activityName" value="${item.activityName}" type="text" maxlength="40" style="height: 30px;width: 300px" class="form-control" disabled> + </div> + </div> + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >最多可参与人数:</label> + </div> + <div class="initialLevel col-sm-4 control-label form-group" > + <input id="participateCount" name="participateCount" value="${item.participateCount}" type="number" max="1000000" min="1" class="form-control" style="height: 30px;width: 300px" disabled> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >活动时间:</label> + </div> + <div class="initialLevel col-sm-6 control-label form-group" > + <input type="text" id="startTime" name="startTime" value="${item.startTime}" class="form-control" style="max-width:400px !important;display: initial !important;" disabled/> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >优惠券:</label> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="col-sm-10"> + <div style="height: 200px; border: 1px solid #e5e6e7;overflow-y: auto;"> + <table class="table table-striped table-bordered table-hover table-condensed"> + <thead> + <tr> + <th style="width: 300px;">添加时间</th> + <th style="width: 300px;">优惠券类型</th> + <th style="width: 300px;">优惠金额</th> + <th style="width: 300px;">有效期</th> + <th style="width: 300px;">领取人数</th> + </tr> + </thead> + <tbody id="site"> + @for(obj in siteList){ + <tr class="siteClass"> + <td><input type="hidden" name="id" value="${obj.id}"> + <input type="hidden" id="insertTime" name="insertTime" value="${obj.insertTime}">${obj.insertTime}</td> + @if(obj.couponUseType == 0){ + <td><input type="hidden" id="couponUseType" name="couponUseType" value="0">通用券</td> + @}else if(obj.couponUseType == 1){ + <td><input type="hidden" id="couponUseType" name="couponUseType" value="1">专车券</td> + @}else if(obj.couponUseType == 2){ + <td><input type="hidden" id="couponUseType" name="couponUseType" value="2">出租券</td> + @}else if(obj.couponUseType == 3){ + <td><input type="hidden" id="couponUseType" name="couponUseType" value="3">直通车出行券</td> + @}else{ + <td><input type="hidden" id="couponUseType" name="couponUseType" value="7">接送机出行券</td> + @} + <td><input type="hidden" id="money" name="money" value="${obj.money}">${obj.money}</td> + <td><input type="hidden" id="effective" name="effective" value="${obj.effective}">${obj.effective}天</td> + <td><input type="hidden" id="receive" name="receive" >-</td> + </tr> + @} + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >每个人发放:</label> + </div> + <div class="initialLevel col-sm-4 control-label form-group" > + <input id="userGrantCount" name="userGrantCount" value="${item.userGrantCount}" type="number" maxlength="11" style="height: 30px;width: 300px" class="form-control" disabled> + </div> + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >张</label> + </div> + </div> + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >每个月可用:</label> + </div> + <div class="initialLevel col-sm-4 control-label form-group" > + <input id="monthUseCount" name="monthUseCount" value="${item.monthUseCount}" type="number" maxlength="11" class="form-control" style="height: 30px;width: 300px" disabled> + </div> + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >张</label> + </div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-6 control-label form-group" > + <div class="initialLevel col-sm-2 control-label form-group" > + <label class="control-label" >使用说明:</label> + </div> + <div class="text-area-container initialLevel col-sm-9 control-label form-group" > + <textarea type="text/plain" name="useExplain" id="useExplain" class="form-control" style="width:100%;height:150px;" disabled>${item.useExplain}</textarea> + </div> + </div> + </div> + + </div> + + </div> + </div> + + <div class="row btn-group-m-t"> + <div class="col-sm-10" style="text-align: center"> + <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="GeneralizationInfoDlg.close()"/> + </div> + </div> + </div> + + </div> +</div> +<script src="${ctxPath}/static/modular/system/generalization/generalization_info.js"></script> +<script src="${ctxPath}/static/modular/system/generalization/sysCouponRecord.js"></script> +<style type="text/css"> + #useExplain { + width: 100%; + height: 100px; /* 根据需要调整高度 */ + resize: none; /* 禁止用户调整文本域大小 */ + } + + .char-count { + position: absolute; + bottom: 5px; /* 根据需要调整距离底部的位置 */ + right: 10px; /* 根据需要调整距离右侧的位置 */ + font-size: 12px; /* 根据需要调整字体大小 */ + } +</style> +<script> + laydate.render({ + elem: '#startTime' + ,type: 'date' + ,range: true + ,min: 'new Date()' //最小值今天 + }); + $("#startTime").val("${startTime} - ${endTime}") + + var textarea = document.getElementById('useExplain'); + var charCount = document.getElementById('charCount'); + var maxLength = 300; // 设置最大字数限制 + +</script> +@} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/qrCodeHtml.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/qrCodeHtml.html new file mode 100644 index 0000000..58d948d --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/qrCodeHtml.html @@ -0,0 +1,35 @@ +@layout("/common/_container.html"){ +<style> + .newWidth, .single-line{ + max-width:150px !important;display: initial !important; + } +</style> +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="ibox-content" id="activityGeneralizationInfoForm"> + <div class="row row-lg"> + <div class="col-sm-12"> + <div class="col-sm-12" style="cursor: pointer;text-align: right;"> + <div class="initialLevel col-sm-12 control-label form-group" style="text-align: center;" > + <img src="${qrCode}" id="qrCode" style="height: 250px;width: 250px" disabled="disabled"/> + </div> + </div> + </div> + </div> + + <div class="row btn-group-m-t"> + <div class="col-sm-12" style="text-align: center"> + <#button btnCss="info" name="下载二维码" id="ensure" icon="fa-check" clickFun="Generalization.downQrCode()"/> + </div> + </div> + </div> + + </div> +</div> +<script src="${ctxPath}/static/modular/system/generalization/generalization.js"></script> +<script src="${ctxPath}/static/modular/system/generalization/generalization_info.js"></script> +<script src="${ctxPath}/static/modular/system/generalization/sysCouponRecord.js"></script> +<script> + +</script> +@} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/sysCouponRecord.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/sysCouponRecord.html new file mode 100644 index 0000000..4da1a72 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/generalization/sysCouponRecord.html @@ -0,0 +1,47 @@ +@layout("/common/_container.html"){ +<div class="row"> + <div class="col-sm-12"> + <div class="ibox float-e-margins"> + <div class="ibox-title"> + <h5>优惠券管理</h5> + </div> + <div class="ibox-content"> + <div class="row row-lg"> + <div class="col-sm-12"> + <div class="row"> + <div class="col-sm-3"> + <#TimeCon id="createTime" name="添加时间" isTime="false"/> + </div> + <div class="col-sm-3"> + <#SelectCon id="couponUseType" name="优惠券类型" > + <option value="">全部</option> + <option value="0">通用券</option> + <option value="1">专车券</option> + <option value="2">出租券</option> + <option value="3">直通车出行券</option> + <option value="7">接送机出行券</option> + </#SelectCon> + </div> + <div class="col-sm-3"> + <#button name="搜索" icon="fa-search" clickFun="SysCouponRecord.search()"/> + <#button name="重置" icon="fa-search" clickFun="SysCouponRecord.resetSearch()"/> + <#button btnCss="info" name="确定" id="ensure" icon="fa-check" clickFun="SysCouponRecord.selectCouponOpt()" space="true"/> + <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="SysCouponRecord.close()" space="true"/> + + </div> + </div> + <#table id="SysCouponRecordTable"/> + </div> + </div> + </div> + </div> + </div> +</div> +<script src="${ctxPath}/static/modular/system/generalization/sysCouponRecord.js"></script> +<script> + laydate.render({ + elem: '#createTime' + ,range: true + }); +</script> +@} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/sysCouponRecord/sysCouponRecord_add.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/sysCouponRecord/sysCouponRecord_add.html index 5210187..10d5678 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/sysCouponRecord/sysCouponRecord_add.html +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/sysCouponRecord/sysCouponRecord_add.html @@ -21,6 +21,7 @@ <option value="1">专车券</option> <!--<option value="2">出租车券</option>--> <option value="3">直通车券</option> + <option value="7">接送机券</option> <option value="0">通用券</option> </#select> <#input id="money" name="金额" underline="true" placeholder="最多4位数字"/> diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_add.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_add.html index 8e863cf..257228e 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_add.html +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tLine/tLine_add.html @@ -68,7 +68,7 @@ <div class="row"> <div class="col-sm-11"> <div class="col-sm-2 control-label"> - <input type="checkbox" class="js-switch1" id="isOpen" onchange="isOpen(this.checked)"/> + <input type="checkbox" class="js-switch1" id="isOpen" value="0" onchange="isOpen(this.checked)"/> </div> <div class="col-sm-3 control-label" hidden id="sortByDiv"> <input type="number" class="form-control newWidth" id="sortBy" name="sortBy" placeholder="请设置排序值"> <span style="color: #0d8ddb">(注:排序值越大,排序越靠前)</span> diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_add.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_add.html index bea9b39..6a95b87 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_add.html +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_add.html @@ -1,4 +1,6 @@ @layout("/common/_container.html"){ +<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.15&key=77b37f0753049c4e712ea79a24e0719c"></script> + <div class="ibox float-e-margins"> <div class="ibox-content"> <div class="form-horizontal" id="openCityForm"> @@ -64,13 +66,29 @@ <div class="form-group"> <label class="col-sm-3 control-label">机场/动车站点:</label> + <div class="col-sm-2" > + <input class="form-control" style="width: 250px;" type="text" id="address" onchange="TOpenCityInfoDlg.searchByStationName(this,1)"> + </div> <div class="col-sm-3" > - <#input id="businessSort" name=" " value="" /> + <#input id="siteName" name="站点名称" value="" /> + </div> + <div class="col-sm-3"> + <select class="form-control" id="siteType"> + <option value="">选择站点类型</option> + <option value="1">机场</option> + <option value="2">动车</option> + </select> </div> <div class="col-sm-2"> - <#button btnCss="info" name="添加站点" id="ensure" icon="fa-check" clickFun="addBusinessType()"/> + <#button btnCss="info" name="添加站点" id="ensure" icon="fa-check" clickFun="addSite()"/> </div> </div> + <div class="col-sm-10" style="margin-left: 397px;width: 70%;" > + <!-- 创建地图容器--> + <div id="container" style="height: 500px;" ></div> + </div> + <div hidden id="longitude"></div> + <div hidden id="latitude"></div> <div class="form-group"> <label class="col-sm-3 control-label">已添加站点列表:</label> <div class="col-sm-9"> @@ -79,8 +97,9 @@ <thead> <tr> <th style="width: 300px;">添加时间</th> - <th style="width: 300px;">经营业务</th> - <th style="width: 300px;">排序</th> + <th style="width: 300px;">站点名称</th> + <th style="width: 300px;">经纬度</th> + <th style="width: 300px;">站点类型</th> <th style="width: 100px;">操作</th> </tr> </thead> @@ -104,4 +123,7 @@ </div> </div> <script src="${ctxPath}/static/modular/system/tOpenCity/tOpenCity_info.js"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css"> +<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>--> +<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script> @} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_edit.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_edit.html index 94c2fb5..a4f4f5c 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_edit.html +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_edit.html @@ -1,4 +1,5 @@ @layout("/common/_container.html"){ +<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.15&key=77b37f0753049c4e712ea79a24e0719c"></script> <div class="ibox float-e-margins"> <div class="ibox-content"> <div class="form-horizontal" id="openCityForm"> @@ -77,7 +78,67 @@ </div> </div> </div> + <div class="form-group"> + <label class="col-sm-3 control-label">机场/动车站点:</label> + <div class="col-sm-2" > + <input class="form-control" style="width: 250px;" type="text" id="address" onchange="TOpenCityInfoDlg.searchByStationName(this,1)"> + </div> + <div class="col-sm-3" > + <#input id="siteName" name="站点名称" value="" /> + </div> + <div class="col-sm-3"> + <select class="form-control" id="siteType"> + <option value="">选择站点类型</option> + <option value="1">机场</option> + <option value="2">动车</option> + </select> + </div> + <div class="col-sm-2"> + <#button btnCss="info" name="添加站点" id="ensure" icon="fa-check" clickFun="addSite()"/> + </div> + </div> + <div class="col-sm-10" style="margin-left: 397px;width: 70%;" > + <!-- 创建地图容器--> + <div id="container" style="height: 500px;" ></div> + </div> + <div hidden id="longitude"></div> + <div hidden id="latitude"></div> + <div class="form-group"> + <label class="col-sm-3 control-label">已添加站点列表:</label> + <div class="col-sm-9"> + <div style="height: 200px; border: 1px solid #e5e6e7;overflow-y: auto;"> + <table class="table table-striped table-bordered table-hover table-condensed"> + <thead> + <tr> + <th style="width: 300px;">添加时间</th> + <th style="width: 300px;">站点名称</th> + <th style="width: 300px;">经纬度</th> + <th style="width: 300px;">站点类型</th> + <th style="width: 100px;">操作</th> + </tr> + </thead> + <tbody id="site"> + @for(obj in siteList){ + <tr class="siteClass"> + <td> + <input type="hidden" id="busId" name="busId" value="${obj.id}"> + <input type="hidden" id="time" name="time" value="${obj.insertTime1}">${obj.insertTime1}</td> + <td><input type="hidden" id="name" name="name" value="${obj.name}">${obj.name}</td> + <td><input type="hidden" id="lonAndLat" name="lonAndLat" value="(${obj.lon},${obj.lat})">(${obj.lon},${obj.lat})</td> + @if(obj.type == 1){ + <td><input type="hidden" id="siteType" name="siteType" value="1">机场</td> + @}else{ + <td><input type="hidden" id="siteType" name="siteType" value="2">动车</td> + @} + <td><button onclick="deleteSub(this)">移除</button></td></td> + </tr> + @} + </tbody> + </table> + </div> + </div> + </div> </div> </div> diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html index aaa036f..65f4350 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html @@ -126,9 +126,11 @@ <h2 class="h3Class" style="font-weight: 700;">行程录音</h2> </div> <div class="col-sm-10"> - <audio id="audio" src="http://www.w3capi.com/upload/audio/audio_example.mp3" controls muted data-enabled="false"> - <!-- <source src="${item.routeRecord}" type="audio/mpeg">--> - </audio> + @if(isNotEmpty(routeRecordList)){ + @for(obj in routeRecordList){ + <audio id="audio" src="${obj.routeRecord}" controls muted data-enabled="false"></audio> + @} + @} </div> </div> diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html index 9ec61d7..cdcef51 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html @@ -110,9 +110,11 @@ <h2 class="h3Class" style="font-weight: 700;">行程录音</h2> </div> <div class="col-sm-10"> - <audio id="audio" src="http://www.w3capi.com/upload/audio/audio_example.mp3" controls muted data-enabled="false"> - <!-- <source src="${item.routeRecord}" type="audio/mpeg">--> - </audio> + @if(isNotEmpty(routeRecordList)){ + @for(obj in routeRecordList){ + <audio id="audio" src="${obj.routeRecord}" controls muted data-enabled="false"></audio> + @} + @} </div> </div> diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTape/tOrderTape.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTape/tOrderTape.html index 41f4ff5..5a40553 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTape/tOrderTape.html +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTape/tOrderTape.html @@ -36,7 +36,8 @@ @} </div> <#table id="TOrderTapeTable"/> - </div> + <audio id="recording" src="" style="display: none;"></audio> + </div> </div> </div> </div> diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_orderDetail.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_orderDetail.html index 13110b2..3902d33 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_orderDetail.html +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_orderDetail.html @@ -110,9 +110,11 @@ <h2 class="h3Class" style="font-weight: 700;">行程录音</h2> </div> <div class="col-sm-10"> - <audio id="audio" src="http://www.w3capi.com/upload/audio/audio_example.mp3" controls muted data-enabled="false"> - <!-- <source src="${item.routeRecord}" type="audio/mpeg">--> - </audio> + @if(isNotEmpty(routeRecordList)){ + @for(obj in routeRecordList){ + <audio id="audio" src="${obj.routeRecord}" controls muted data-enabled="false"></audio> + @} + @} </div> </div> diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/generalization/generalization.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/generalization/generalization.js new file mode 100644 index 0000000..fc076a2 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/generalization/generalization.js @@ -0,0 +1,236 @@ +/** + * 管理初始化 + */ +var Generalization = { + id: "GeneralizationTable", //表格id + seItem: null, //选中的条目 + table: null, + layerIndex: -1 +}; + +/** + * 初始化表格的列 + */ +Generalization.initColumn = function () { + return [ + {field: 'selectItem', radio: true}, + {title: '主键id', field: 'id', visible: false, align: 'center', valign: 'middle'}, + {title: '添加时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle'}, + {title: '活动名称', field: 'activityName', visible: true, align: 'center', valign: 'middle'}, + {title: '活动时间', field: 'time', visible: true, align: 'center', valign: 'middle'}, + {title: '最多可参与人数', field: 'participateCount', visible: true, align: 'center', valign: 'middle'}, + {title: '当前参与人数', field: 'count', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + return '<a href="#" style="color:cornflowerblue">'+row.count+'</a>' +' ' +' '+' '+' '+' '+ + '<a href="#" onclick="Generalization.activityRecord('+row.id+')" style="color:cornflowerblue">查看领取记录</a>' +' ' + } + }, + {title: '当前状态', field: 'state', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + if(value==1){ + return "已开启"; + }else if(value==2){ + return "未开启"; + }else if(value==3){ + return "已结束"; + }else if(value==4){ + return "已暂停"; + } + } + }, + {title: '操作', visible: true, align: 'center', valign: 'middle',width:'16%', + formatter: function (value, row) { + if(row.state==1){ + return '<a href="#" onclick="Generalization.openQrCodeGeneralization('+row.id+')" style="color:cornflowerblue">二维码</a>' +' ' + + '<a href="#" onclick="Generalization.openGeneralizationDetail('+row.id+')" style="color:cornflowerblue">详情</a>' +' ' + + '<a href="#" onclick="Generalization.openUpdateGeneralization('+row.id+')" style="color:cornflowerblue">编辑</a>' +' ' + + '<a href="#" onclick="Generalization.delete('+row.id+')" style="color:cornflowerblue">删除</a>' + }else{ + return '<a href="#" onclick="Generalization.openQrCodeGeneralization('+row.id+')" style="color:cornflowerblue">二维码</a>' +' ' + + '<a href="#" onclick="Generalization.openGeneralizationDetail('+row.id+')" style="color:cornflowerblue">详情</a>' +' ' + + '<a href="#" onclick="Generalization.delete('+row.id+')" style="color:cornflowerblue">删除</a>' + } + } + } + ]; +}; + +/** + * 检查是否选中 + */ +Generalization.check = function (type) { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if(selected.length == 0){ + Feng.info("请先选中表格中的某一记录!"); + return false; + }else{ + //验证类型null删除,1=审核,2=编辑,3=启动/暂停 + if(type==null){ + Generalization.seItem = selected[0]; + return true; + }else if(type==3 && selected[0].state==3){ + Feng.info("当前状态不能暂停/启动!"); + return false; + } + Generalization.seItem = selected[0]; + return true; + } +}; + +/** + * 点击添加 + */ +Generalization.openAddGeneralization = function () { + var index = layer.open({ + type: 2, + title: '添加推广活动', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/generalization/addHtml' + }); + this.layerIndex = index; +}; +/** + * 打开编辑 + */ +Generalization.openUpdateGeneralization = function (id) { + console.log("111222211==="+id); + var index = layer.open({ + type: 2, + title: '编辑推广活动', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/generalization/editHtml/' + id + }); + this.layerIndex = index; +}; +/** + * 打开二维码 + */ +Generalization.openQrCodeGeneralization = function (id) { + var index = layer.open({ + type: 2, + title: '推广二维码', + area: ['50%', '50%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/generalization/qrCodeHtml/' + id + }); + this.layerIndex = index; +}; + +/** + * 下载二维码 + */ +Generalization.downQrCode = function () { + var imgElement = document.getElementById('qrCode'); + var imgURL = imgElement.src; + console.log(imgURL) + // var downloadLink = document.createElement('a'); + // downloadLink.href = imgURL; + // downloadLink.download = '二维码.png'; // 自定义下载文件名 + // // 将链接添加到文档中(可以是隐藏的) + // document.body.appendChild(downloadLink); + // // 触发点击 + // downloadLink.click(); + // // 清理,可选 + // document.body.removeChild(downloadLink); + // GeneralizationInfoDlg.close(); + + var ajax = new $ax(Feng.ctxPath + "/generalization/downQrcode", function(data){ + Feng.success("下载成功!"); + GeneralizationInfoDlg.close(); + },function(data){ + Feng.error("下载失败!" + data.responseJSON.message + "!"); + }); + ajax.set("imgURL",imgURL); + ajax.start(); + +}; + +/** + * 打开查看详情 + */ +Generalization.openGeneralizationDetail = function (id) { + var index = layer.open({ + type: 2, + title: '详情', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/generalization/generalization_detail/' + id + }); + this.layerIndex = index; +}; + +/** + * 删除 + */ +Generalization.delete = function (id) { + var ajax = new $ax(Feng.ctxPath + "/generalization/delete", function (data) { + Feng.success("删除成功!"); + Generalization.table.refresh(); + }, function (data) { + Feng.error("删除失败!" + data.responseJSON.message + "!"); + }); + ajax.set("tActivityGeneralizationId",id); + ajax.start(); +}; + +/** + * 启动/暂停 + */ +Generalization.updateStatus = function () { + if (this.check(3)) { + var ajax = new $ax(Feng.ctxPath + "/generalization/updateStatus", function (data) { + Feng.success("启动/暂停成功!"); + Generalization.table.refresh(); + }, function (data) { + Feng.error("启动/暂停失败!" + data.responseJSON.message + "!"); + }); + ajax.set("id",this.seItem.id); + ajax.set("status",this.seItem.state==4?1:4); + ajax.start(); + } +}; +/** + * 领取记录 + */ +Generalization.receiveRecord= function () { + if (this.check()) { + var index = layer.open({ + type: 2, + title: '领取记录', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/generalization/receiveRecord?activityId='+ Generalization.seItem.id + }); + this.layerIndex = index; + } +}; + +/** + * 查询列表 + */ +Generalization.search = function () { + var queryData = {}; + queryData['createTime'] = $("#createTime").val(); + queryData['activityName'] = $("#activityName").val(); + queryData['state'] = $("#state").val(); + Generalization.table.refresh({query: queryData}); +}; +Generalization.resetSearch = function () { + $("#createTime").val(""); + $("#activityName").val(""); + $("#state").val(""); + Generalization.search(); +}; +$(function () { + var defaultColunms = Generalization.initColumn(); + var table = new BSTable(Generalization.id, "/generalization/list", defaultColunms); + table.setPaginationType("server"); + Generalization.table = table.init(); +}); diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/generalization/generalization_info.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/generalization/generalization_info.js new file mode 100644 index 0000000..6f1154a --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/generalization/generalization_info.js @@ -0,0 +1,358 @@ +/** + * 初始化详情对话框 + */ +var GeneralizationInfoDlg = { + GeneralizationInfoData : {}, + validateFields: { + activityName: { + validators: { + notEmpty: { + message: '请输入活动名称' + } + } + }, + participateCount: { + validators: { + notEmpty: { + message: '请输入最多参与人数' + } + } + }, + startTime: { + validators: { + notEmpty: { + message: '请选择活动时间' + } + } + }, + userGrantCount: { + validators: { + notEmpty: { + message: '请输入发放数量' + } + } + }, + monthUseCount: { + validators: { + notEmpty: { + message: '请输入每月可用数量' + } + } + }, + } +}; + +/** + * 验证数据是否为空 + */ +GeneralizationInfoDlg.validate = function () { + $('#activityGeneralizationInfoForm').data("bootstrapValidator").resetForm(); + $('#activityGeneralizationInfoForm').bootstrapValidator('validate'); + return $("#activityGeneralizationInfoForm").data('bootstrapValidator').isValid(); +}; + +/** + * 清除数据 + */ +GeneralizationInfoDlg.clearData = function() { + this.generalizationInfoData = {}; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +GeneralizationInfoDlg.set = function(key, val) { + this.generalizationInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val; + return this; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +GeneralizationInfoDlg.get = function(key) { + return $("#" + key).val(); +} + +/** + * 关闭此对话框 + */ +GeneralizationInfoDlg.close = function() { + parent.layer.close(window.parent.Generalization.layerIndex); +} + +/** + * 收集数据 + */ +GeneralizationInfoDlg.collectData = function() { + this + .set('id') + .set('activityName') + .set('participateCount') + .set('startTime') + .set('endTime') + .set('couponId') + .set('userGrantCount') + .set('monthUseCount') + .set('useExplain') + .set('state') + .set('qrCode') + .set('insertTime'); +} + +/** + * 提交添加 + */ +GeneralizationInfoDlg.addSubmit = function() { + + this.clearData(); + this.collectData(); + if(!this.validate()){ + return ; + } + var couponId=null; + $(".siteClass").each(function () { + couponId = $(this).find("input[name*='id']").val() + }); + + var startTime1 = $("#startTime").val(); + var time = startTime1.split(" - "); + var startTime = time[0] + " 00:00:00"; + var endTime = time[1] + " 23:59:59"; + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/generalization/add", function(data){ + Feng.success("添加成功!"); + window.parent.Generalization.table.refresh(); + GeneralizationInfoDlg.close(); + },function(data){ + Feng.error("添加失败!" + data.responseJSON.message + "!"); + }); + this.set('couponId',couponId); + this.set('startTime',startTime); + this.set('endTime',endTime); + ajax.set(this.generalizationInfoData); + ajax.start(); +} + +/** + * 提交修改 + */ +GeneralizationInfoDlg.editSubmit = function() { + + this.clearData(); + this.collectData(); + if(!this.validate()){ + return ; + } + var couponId=null; + $(".siteClass").each(function () { + couponId = $(this).find("input[name*='id']").val() + }); + + var startTime1 = $("#startTime").val(); + console.log(startTime1) + var time = startTime1.split(" - "); + var startTime = time[0] + " 00:00:00"; + var endTime = time[1] + " 23:59:59"; + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/generalization/update", function(data){ + Feng.success("修改成功!"); + window.parent.Generalization.table.refresh(); + GeneralizationInfoDlg.close(); + },function(data){ + Feng.error("修改失败!" + data.responseJSON.message + "!"); + }); + console.log(this.generalizationInfoData) + this.set('couponId',couponId); + this.set('startTime',startTime); + this.set('endTime',endTime); + ajax.set(this.generalizationInfoData); + ajax.start(); +} +/** + * 立即处理 + */ +GeneralizationInfoDlg.immediately = function(){ + + this.clearData(); + this.collectData(); + + var remark = $("#remark").val(); + if (remark.length > 250){ + Feng.info("备注不能超过250个字"); + return; + } + var state = $("input[name='state']:checked").val(); + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/userActivity/immediately", function(data){ + Feng.success("处理成功!"); + window.parent.Generalization.table.refresh(); + GeneralizationInfoDlg.close(); + },function(data){ + Feng.error("处理失败!" + data.responseJSON.message + "!"); + }); + ajax.set("id",$("#id").val()); + ajax.set("state",state); + ajax.set("remark",$("#remark").val()); + ajax.start(); +} + +/** + * 跳转到选择优惠券页面 + */ +GeneralizationInfoDlg.toSelectCouponOpt = function () { + var index = layer.open({ + type: 2, + title: '选择优惠券', + area: ['90%', '80%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/generalization/sysCouponRecord' + }); + this.layerIndex = index; +} + +/** + * 选择优惠券后数据回显 + * @param id + * @param couponUseType + * @param couponType + * @param money + */ +GeneralizationInfoDlg.selectCouponOpt9=function(id,insertTime,couponUseType,money,effective,receive){ + if(receive == null || receive == "" || receive == undefined){ + receive = "-"; + } + + // 0="通用券" 1="专车券" 2="出租券" 3="直通车出行券" 7="接送机出行券" + var type = ""; + if(couponUseType == 0){ + type = '<td><input type="hidden" id="couponUseType" name="couponUseType" value="'+couponUseType+'">通用券</td>'; + }else if(couponUseType == 1){ + type = '<td><input type="hidden" id="couponUseType" name="couponUseType" value="'+couponUseType+'">专车券</td>'; + }else if(couponUseType == 2){ + type = '<td><input type="hidden" id="couponUseType" name="couponUseType" value="'+couponUseType+'">出租券</td>'; + }else if(couponUseType == 3){ + type = '<td><input type="hidden" id="couponUseType" name="couponUseType" value="'+couponUseType+'">直通车出行券</td>'; + }else{ + type = '<td><input type="hidden" id="couponUseType" name="couponUseType" value="'+couponUseType+'">接送机出行券</td>'; + } + + var str = '<tr class="siteClass">' + + '<td><input type="hidden" id="id" name="id" value="'+id+'">' + + '<input type="hidden" id="insertTime" name="insertTime" value="'+insertTime+'">' + insertTime + '</td>' + + type + + '<td><input type="hidden" id="money" name="money" value="'+money+'">' + money + '</td>' + + '<td><input type="hidden" id="effective" name="effective" value="'+effective+'">' + effective + "天"+'</td>' + + '<td><input type="hidden" id="receive" name="receive" value="'+receive+'">' + receive + '</td>' + + // '</tr>'; + '<td><button onclick="deleteSub(this)">移除</button></td></tr>'; + $("#site").append(str); + var button = document.getElementById('selectCoupon'); + button.disabled = true; +} + + +/** + * 跳转到选择优惠券页面 + */ +GeneralizationInfoDlg.toSelectCouponOpt1 = function () { + var index = layer.open({ + type: 2, + title: '选择优惠券', + area: ['90%', '80%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/userActivity/sysCouponRecord1' + }); + this.layerIndex = index; +} + +/** + * 选择优惠券后数据回显 + * @param id + * @param couponUseType + * @param couponType + * @param money + */ +GeneralizationInfoDlg.selectCouponOpt1=function(id,couponUseType,couponType,money,name){ + $("#content3Num2").val(couponUseType==0?"通用券":couponUseType==1?"专车券":couponUseType==2?"出租券":"直通车出行券"); + $("#content3Num3").val(couponType==1?"抵扣":"满减"); + $("#content3Num4").val(money); + $("#content3CouponId").val(id); + $("#content3Num1").val(name); +} +/** + * 跳转到选择优惠券页面 + */ +GeneralizationInfoDlg.toSelectRedOpt = function () { + var index = layer.open({ + type: 2, + title: '选择红包', + area: ['90%', '80%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/userActivity/sysRedPacketRecord' + }); + this.layerIndex = index; +} + +/** + * 选择优惠券后数据回显 + * @param id + * @param couponUseType + * @param couponType + * @param money + */ +GeneralizationInfoDlg.selectRedOpt=function(id,type,totalMoney,money,startMoney,endMoney,effective){ + $("#content6Num1").val(type==1?"固定金额":"随机金额"); + $("#content6Num3").val(type==1?money:startMoney+"-"+endMoney); + $("#content6Num4").val(effective); + $("#content6RedId").val(id); + $("#content6Num2").val(totalMoney); +} +/** + * 跳转添加充值送优惠券页面 + */ +GeneralizationInfoDlg.toAddRegistOpt = function () { + var index = layer.open({ + type: 2, + title: '充值赠送优惠券', + area: ['90%', '80%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/userActivity/addRegist' + }); + this.layerIndex = index; +} +GeneralizationInfoDlg.addRegistOpt = function (num1,num2,num3,num4,num5,num6,num7,num8,num9,num10,num11,id1,id2,id3,id4) { + var str = '<tr class="timeClass">' + + '<td><input type="hidden" id="id1" name="id1" value="'+id1+'"><input type="hidden" id="num1" name="num1" value="'+num1+'">' + num1 + '</td>' + + '<td><input type="hidden" id="id2" name="id2" value="'+id2+'"><input type="hidden" id="num10" name="num10" value="'+num10+'">' + num10 + '</td>' + + '<td><input type="hidden" id="num11" name="num11" value="'+num11+'">' + num11 + '</td>' + + '<td><input type="hidden" id="id3" name="id3" value="'+id3+'"><input type="hidden" id="num3" name="num3" value="'+num3+'">' + num3 + '</td>' + + '<td><input type="hidden" id="id4" name="id4" value="'+id4+'"><input type="hidden" id="num2" name="num2" value="'+num2+'">' + num2 + '</td>' + + '<td><input type="hidden" id="num5" name="num5" value="'+num5+'">' + num5 + '</td>' + + '<td><input type="hidden" id="num4" name="num4" value="'+num4+'">' + num4 + '</td>' + + '<td><input type="hidden" id="num7" name="num7" value="'+num7+'">' + num7 + '</td>' + + '<td><input type="hidden" id="num6" name="num6" value="'+num6+'">' + num6 + '</td>' + + '<td><input type="hidden" id="num9" name="num9" value="'+num9+'">' + num9 + '</td>' + + '<td><input type="hidden" id="num8" name="num8" value="'+num8+'">' + num8 + '</td>' + + '<td><button onclick="deleteSub(this)">移除</button></td></tr>'; + $("#coun").append(str); +} +function deleteSub(e) { + $(e).parent().parent().remove(); + var button = document.getElementById('selectCoupon'); + button.disabled = false; +} + +$(function() { + Feng.initValidator("activityGeneralizationInfoForm", GeneralizationInfoDlg.validateFields); +}); diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/generalization/sysCouponRecord.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/generalization/sysCouponRecord.js new file mode 100644 index 0000000..65c4df1 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/generalization/sysCouponRecord.js @@ -0,0 +1,162 @@ +/** + * 管理初始化 + */ +var SysCouponRecord = { + id: "SysCouponRecordTable", //表格id + seItem: null, //选中的条目 + table: null, + layerIndex: -1 +}; + +/** + * 初始化表格的列 + */ +SysCouponRecord.initColumn = function () { + return [ + {field: 'selectItem', radio: true}, + {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle',width:'8%'}, + {title: '添加时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle'}, + {title: '优惠券类型', field: 'couponUseType', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + if(value==0){ + return "通用券"; + }else if(value==1){ + return "专车券"; + }else if(value==2){ + return "出租券"; + }else if(value==3){ + return "直通车出行券"; + }else if(value==7){ + return "接送机出行券"; + }else{ + return ""; + } + } + }, + {title: '优惠金额', field: 'money', visible: true, align: 'center', valign: 'middle'}, + {title: '有效期', field: 'effective', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + return value+"天"; + } + }, + {title: '领取人数', field: 'receive', visible: true, align: 'center', valign: 'middle'}, + ]; +}; + +/** + * 检查是否选中 + */ +SysCouponRecord.check = function () { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if(selected.length == 0){ + Feng.info("请先选中表格中的某一记录!"); + return false; + }else{ + SysCouponRecord.seItem = selected[0]; + return true; + } +}; + +/** + * 关闭选择用户页面 + */ +SysCouponRecord.close = function () { + parent.layer.close(window.parent.GeneralizationInfoDlg.layerIndex); +} +SysCouponRecord.close1 = function () { + parent.layer.close(window.parent.RegistInfoDlg.layerIndex); +} + +/** + * 确认选择 + */ +SysCouponRecord.selectCouponOpt = function () { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if (selected.length == 0) { + Feng.info("请先选中表格中的某一记录!"); + return false; + } + var id = selected[0].id; + var insertTime = selected[0].insertTime; + + var couponUseType = selected[0].couponUseType; + var couponType = selected[0].couponType; + var money = selected[0].money; + var name = selected[0].name; + var effective = selected[0].effective; + var receive = selected[0].receive; + if ("" == id || null == id || undefined == id){ + Feng.info("请先选中表格中的某一记录!"); + return ; + } + var obj = $("#obj").val(); + window.parent.GeneralizationInfoDlg.selectCouponOpt9(id,insertTime,couponUseType,money,effective,receive); + SysCouponRecord.close(); +} + + +/** + * 确认选择 + */ +SysCouponRecord.selectCouponOpt1 = function () { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if (selected.length == 0) { + Feng.info("请先选中表格中的某一记录!"); + return false; + } + var id = selected[0].id; + var couponUseType = selected[0].couponUseType; + var couponType = selected[0].couponType; + var money = selected[0].money; + var name = selected[0].name; + if ("" == id || null == id || undefined == id){ + Feng.info("请先选中表格中的某一记录!"); + return ; + } + var obj = $("#obj").val(); + window.parent.GeneralizationInfoDlg.selectCouponOpt1(id,couponUseType,couponType,money,name); + SysCouponRecord.close(); +} +/** + * 确认选择 + */ +SysCouponRecord.selectCouponOpt2 = function () { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if (selected.length == 0) { + Feng.info("请先选中表格中的某一记录!"); + return false; + } + var id = selected[0].id; + var money = selected[0].money; + var couponUseType = selected[0].couponUseType; + if ("" == id || null == id || undefined == id){ + Feng.info("请先选中表格中的某一记录!"); + return ; + } + var obj = $("#obj").val(); + window.parent.RegistInfoDlg.selectCouponOpt(id,money,couponUseType); + parent.layer.close(window.parent.RegistInfoDlg.layerIndex); +} +/** + * 查询列表 + */ +SysCouponRecord.search = function () { + var queryData = {}; + queryData['createTime'] = $("#createTime").val(); + queryData['couponUseType'] = $("#couponUseType").val(); + SysCouponRecord.table.refresh({query: queryData}); +}; +SysCouponRecord.resetSearch = function () { + $("#createTime").val(""); + $("#couponUseType").val(""); + SysCouponRecord.search(); +}; +$(function () { + var defaultColunms = SysCouponRecord.initColumn(); + var table = new BSTable(SysCouponRecord.id, "/sysCouponRecord/list", defaultColunms); + table.setPaginationType("server"); + var queryData = {}; + queryData['couponUseType'] = $("#couponUseType").val(); + table.setQueryParams(queryData); + SysCouponRecord.table = table.init(); +}); diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord.js index 821d8c2..86a2057 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord.js +++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/sysCouponRecord/sysCouponRecord.js @@ -28,6 +28,8 @@ return "出租券"; }else if(value==3){ return "直通车出行券"; + }else if(value==7){ + return "接送机出行券"; }else{ return ""; } diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOpenCity/tOpenCity_info.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOpenCity/tOpenCity_info.js index 7fa11db..50ec3a7 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOpenCity/tOpenCity_info.js +++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOpenCity/tOpenCity_info.js @@ -112,6 +112,16 @@ sort:$(this).find("input[name*='sort']").val(), }) }); + var subArr1=[]; + $(".siteClass").each(function () { + subArr1.push({ + busId:$(this).find("input[name*='busId']").val(), + time:$(this).find("input[name*='time']").val(), + name:$(this).find("input[name*='name']").val(), + lonAndLat:$(this).find("input[name*='lonAndLat']").val(), + siteType:$(this).find("input[name*='siteType']").val(), + }) + }); if(subArr.length <= 0){ Feng.error("请选择经营业务"); return; @@ -137,6 +147,7 @@ }); ajax.set(this.tOpenCityInfoData); ajax.set("businessTypeStr",JSON.stringify(subArr)); + ajax.set("sites",JSON.stringify(subArr1)); ajax.set("areaName",provinceValue); ajax.set("cityName",cityValue); ajax.set("provinceName",areaValue); @@ -165,6 +176,16 @@ sort:$(this).find("input[name*='sort']").val(), }) }); + var subArr1=[]; + $(".siteClass").each(function () { + subArr1.push({ + busId:$(this).find("input[name*='busId']").val(), + time:$(this).find("input[name*='time']").val(), + name:$(this).find("input[name*='name']").val(), + lonAndLat:$(this).find("input[name*='lonAndLat']").val(), + siteType:$(this).find("input[name*='siteType']").val(), + }) + }); if(subArr.length <= 0){ Feng.error("请选择经营业务"); return; @@ -190,6 +211,7 @@ }); ajax.set(this.tOpenCityInfoData); ajax.set("businessTypeStr",JSON.stringify(subArr)); + ajax.set("sites",JSON.stringify(subArr1)); ajax.set("areaName",provinceValue); ajax.set("cityName",cityValue); ajax.set("provinceName",areaValue); @@ -286,7 +308,52 @@ '<td><input type="hidden" id="sort" name="sort" value="'+businessSort+'">' + businessSort + '</td><td><button onclick="deleteSub(this)">移除</button></td></tr>'; $("#coun").append(str); } +function addSite(){ + var siteName=$("#siteName").val(); + var siteType=$("#siteType").val(); + var type = siteType; + if ("" == siteName){ + Feng.info("站点名称不能为空"); + return; + } + if ("" == siteType){ + Feng.info("请选择站点类型"); + return; + } + if (siteType == 1){ + siteType = "机场" + }else{ + siteType = "动车" + } + //获取所有的值 + var subArr=[]; + $(".siteClass").each(function () { + + subArr.push({ + name:$(this).find("input[name*='name']").val(), + time:$(this).find("input[name*='time']").val(), + }) + }); + for(var i=0;i<subArr.length;i++){ + var name = subArr[i].name; + if (name == siteName) { + Feng.info("站点名称已存在,请重新填写"); + return; + } + } + var lon = $("#longitude").val(); + var lat = $("#latitude").val(); + var lonAndLat = "("+lon+","+lat+")"; + var str = '<tr class="siteClass">' + + '<td><input type="hidden" id="busId" name="busId" value="0">' + + '<input type="hidden" id="time" name="time" value="'+getNowFormatDate()+'">' + getNowFormatDate() + '</td>' + + '<td><input type="hidden" id="name" name="name" value="'+siteName+'">' + siteName + '</td>' + + '<td><input type="hidden" id="lonAndLat" name="lonAndLat" value="'+lonAndLat+'">' + lonAndLat + '</td>' + + '<td><input type="hidden" id="siteType" name="siteType" value="'+type+'">' + siteType + '</td>' + + '<td><button onclick="deleteSub(this)">移除</button></td></tr>'; + $("#site").append(str); +} function deleteSub(e) { $(e).parent().parent().remove(); } @@ -306,4 +373,101 @@ } var currentdate = year + seperator1 + month + seperator1 + strDate; return currentdate; +} +var map = new AMap.Map('container', { + resizeEnable: true, // 允许缩放 + zoom: 15 // 设置地图的缩放级别,0 - 20 +}); +var marker; +//搜索地图 +TOpenCityInfoDlg.searchByStationName = function(e,type){ + var keyword=""; + if(type==2){ + keyword = $(e).parent().prev().find("input").val(); + }else { + if($("#address").val()!=null && $("#address").val()!=''){ + keyword = $("#address").val(); + } + } + type=1; + AMap.plugin('AMap.Geocoder', function() { + var geocoder = new AMap.Geocoder(); + console.log(geocoder) + console.log(keyword) + geocoder.getLocation(keyword, function(status, result) { + console.log(status,result) + if (status === 'complete' && result.info === 'OK') { + // 经纬度 + var lng = result.geocodes[0].location.lng; + var lat = result.geocodes[0].location.lat; + $("#longitude").val(lng) + $("#latitude").val(lat) + // 地图实例 + map = new AMap.Map('container', { + resizeEnable: true, // 允许缩放 + center: [lng, lat], // 设置地图的中心点 + zoom: 15 // 设置地图的缩放级别,0 - 20 + }); + //地图画点 + //addMarker(lng,lat); + if(type==1 || type==2){ + showInfoClick(); + if(lng == null){ + }else{ + addMarker(lng,lat); + } + }else{ + addMarker(lng,lat); + } + } else { + console.log('定位失败!'); + } + }); + }); + +} +//地图点击事件 +function showInfoClick(){ + map.on('click', function (e) { + addMarker(e.lnglat.getLng(),e.lnglat.getLat()); + }); +} +//删除点 +function removeMarkers(){ + if(marker!=null){ + map.remove(marker); + } + +} +// 实例化点标记 +function addMarker(lon,lat) { + removeMarkers(); + marker = new AMap.Marker({ + map: map, + position: new AMap.LngLat(lon, lat), // 经纬度 + }); + //加经纬度 + $("#lon").val(lon); + $("#lat").val(lat); + var lnglatXY = [lon, lat];//地图上所标点的坐标 + AMap.service('AMap.Geocoder',function() {//回调函数 + geocoder = new AMap.Geocoder({ + }); + geocoder.getAddress(lnglatXY, function (status, result) { + if (status === 'complete' && result.info === 'OK') { + //获得了有效的地址信息: + //即,result.regeocode.formattedAddress + // alert(result.regeocode.formattedAddress) + //document.getElementById("address").value=result.regeocode.formattedAddress;//将获取到的地址信息赋值给文本框,保存进数据库 + + var address = result.regeocode.formattedAddress; + var city = result.regeocode.addressComponent.city; + var province = result.regeocode.addressComponent.province; + var district = result.regeocode.addressComponent.district; + $("#address").val(address); + } else { + //获取地址失败 + } + }); + }) } \ No newline at end of file diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTape/tOrderTape.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTape/tOrderTape.js index 2e92e94..cc4e089 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTape/tOrderTape.js +++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTape/tOrderTape.js @@ -78,9 +78,14 @@ }, {title: '操作', visible: true, align: 'center', valign: 'middle',width:'16%', formatter: function (value, row) { - return '<a href="#" onclick="TOrderTape.orderDetail('+row.orderId+','+row.orderType+')" style="color:cornflowerblue">查看订单</a>' +' ' + - '<a href="#" onclick="TOrderTape.openTCharteredServiceDetail('+row.id+')" style="color:cornflowerblue">播放录音</a>' +' ' + - '<a href="#" onclick="TOrderTape.delete('+row.id+')" style="color:cornflowerblue">删除</a>' + if(row.state == 1) { + return '<a href="#" onclick="TOrderTape.orderDetail('+row.orderId+','+row.orderType+')" style="color:cornflowerblue">查看订单</a>' +' ' + + '<a href="#" onclick="TOrderTape.playAudio('+row.id+')" style="color:cornflowerblue">播放录音</a>' +' ' + + '<a href="#" onclick="TOrderTape.delete('+row.id+')" style="color:cornflowerblue">删除</a>' + }else { + return '<a href="#" onclick="TOrderTape.orderDetail('+row.orderId+','+row.orderType+')" style="color:cornflowerblue">查看订单</a>' +' ' + + '<a href="#" onclick="TOrderTape.delete('+row.id+')" style="color:cornflowerblue">删除</a>' + } } } ]; @@ -100,6 +105,23 @@ } }; +TOrderTape.playAudio = function (id) { + var ajax = new $ax(Feng.ctxPath + "/tOrderTape/getDetailById", function (data) { + console.log(data.data) + var audio = document.getElementById('recording'); + audio.setAttribute("src", data.data.fileLink); + if (audio.paused) { + audio.play(); // 播放录音 + } else { + audio.pause(); // 如果正在播放,则暂停 + } + }, function (data) { + console.log(data); + }); + ajax.set("tOrderTapeId", id); + ajax.start(); +}; + /** * 打开查看订单详情 */ -- Gitblit v1.7.1