parent
a61fd6b3b4
commit
3e5c003f60
@ -0,0 +1,10 @@
|
||||
package com.smart.module.car.repository;
|
||||
|
||||
import com.smart.module.car.entity.CarManage;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository// 声明该类为仓库类
|
||||
public interface CarManageRepository extends JpaRepository<CarManage, Long> {
|
||||
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package com.smart.module.car.repository;
|
||||
|
||||
import com.smart.module.car.entity.CarParkingRecord;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository// 声明该类为仓库类
|
||||
public interface CarParkingRecordRepository extends JpaRepository<CarParkingRecord, Long> {
|
||||
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package com.smart.module.car.repository;
|
||||
|
||||
import com.smart.module.car.entity.CarParkManage;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository// 声明该类为仓库类
|
||||
public interface ParkManageRepository extends JpaRepository<CarParkManage, Long> {
|
||||
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package com.smart.module.car.service;
|
||||
|
||||
import com.smart.common.model.Result;
|
||||
import com.smart.module.car.entity.CarParkingRecord;
|
||||
|
||||
/**
|
||||
* 车辆管理
|
||||
*/
|
||||
public interface CarParkingRecordService {
|
||||
|
||||
/**
|
||||
* 保存车辆停车记录
|
||||
* @param entity
|
||||
* @return
|
||||
*/
|
||||
Result save(CarParkingRecord entity);
|
||||
|
||||
/**
|
||||
* 查询车辆停车记录列表
|
||||
* @param entity
|
||||
* @return
|
||||
*/
|
||||
Result list(CarParkingRecord entity);
|
||||
|
||||
/**
|
||||
* 根据车牌和停车场获取停车记录
|
||||
* @param plateNumber
|
||||
* @param parkManageId
|
||||
* @return
|
||||
*/
|
||||
CarParkingRecord getByPlateNumber(String plateNumber,Long parkManageId);
|
||||
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package com.smart.module.car.service;
|
||||
|
||||
import com.smart.common.model.Result;
|
||||
import com.smart.module.car.entity.CarParkManage;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 停车场管理
|
||||
*/
|
||||
public interface ParkManageService {
|
||||
|
||||
/**
|
||||
* 保存停车场信息到数据库
|
||||
* @param entity
|
||||
* @return
|
||||
*/
|
||||
Result save(CarParkManage entity);
|
||||
|
||||
/**
|
||||
* 查询停车场信息列表
|
||||
* @param entity
|
||||
* @return
|
||||
*/
|
||||
Result list(CarParkManage entity);
|
||||
|
||||
/**
|
||||
* 根据用户权限获取停车场信息下拉列表数据
|
||||
* @param entity
|
||||
* @return
|
||||
*/
|
||||
List<Map<String,Object>> select(CarParkManage entity);
|
||||
}
|
@ -0,0 +1,145 @@
|
||||
package com.smart.module.car.service.impl;
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import com.smart.common.constant.SystemConstant;
|
||||
import com.smart.common.dynamicquery.DynamicQuery;
|
||||
import com.smart.common.model.PageBean;
|
||||
import com.smart.common.model.Result;
|
||||
import com.smart.common.util.DateUtils;
|
||||
import com.smart.common.util.ExcelExport;
|
||||
import com.smart.common.util.ShiroUtils;
|
||||
import com.smart.module.car.entity.CarManage;
|
||||
import com.smart.module.car.repository.CarManageRepository;
|
||||
import com.smart.module.car.service.CarManageService;
|
||||
import com.smart.module.sys.entity.SysUser;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class CarManageServiceImpl implements CarManageService {
|
||||
|
||||
@Autowired
|
||||
private DynamicQuery dynamicQuery; // 动态查询工具类
|
||||
|
||||
@Autowired
|
||||
private CarManageRepository carManageRepository; // 汽车管理的数据访问层接口
|
||||
|
||||
|
||||
// 保存汽车管理信息并刷新到数据库
|
||||
@Override
|
||||
@Transactional(rollbackFor=Exception.class)
|
||||
public Result save(CarManage entity) {
|
||||
if(entity.getId()==null){
|
||||
entity.setGmtCreate(DateUtils.getTimestamp()); // 设置创建时间为当前时间
|
||||
entity.setGmtModified(entity.getGmtCreate());
|
||||
}else{
|
||||
entity.setGmtModified(DateUtils.getTimestamp()); // 设置修改时间为当前时间
|
||||
}
|
||||
carManageRepository.saveAndFlush(entity); // 保存并刷新实体对象到数据库
|
||||
return Result.ok("保存成功");
|
||||
}
|
||||
|
||||
// 查询汽车管理列表
|
||||
@Override
|
||||
public Result list(CarManage entity) {
|
||||
String nativeSql = "SELECT COUNT(*) FROM app_car_manage ";
|
||||
nativeSql += common(entity); // 构建通用的 SQL 条件语句
|
||||
Long count = dynamicQuery.nativeQueryCount(nativeSql); // 执行原生查询,统计总数
|
||||
PageBean<CarManage> data = new PageBean<>();
|
||||
if(count>0){
|
||||
nativeSql = "SELECT * FROM app_car_manage ";
|
||||
nativeSql += common(entity);
|
||||
nativeSql += " ORDER BY gmt_create desc";
|
||||
Pageable pageable = PageRequest.of(entity.getPageNo(),entity.getPageSize()); // 构建分页请求对象
|
||||
List<CarManage> list = dynamicQuery.nativeQueryPagingList(CarManage.class,pageable,nativeSql); // 执行分页查询
|
||||
data = new PageBean(list,count); // 构建分页结果对象
|
||||
}
|
||||
return Result.ok(data);
|
||||
}
|
||||
|
||||
// 根据车牌号和停车场ID获取汽车管理信息
|
||||
@Override
|
||||
public CarManage getByPlateNumber(String plateNumber, Long parkManageId) {
|
||||
String nativeSql = "SELECT * FROM app_car_manage WHERE plate_number=? AND park_manage_id=? ";
|
||||
CarManage carManage =
|
||||
dynamicQuery.nativeQuerySingleResult(CarManage.class,nativeSql,plateNumber,parkManageId); // 执行原生查询,获取单个对象
|
||||
return carManage;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 导出数据至 Excel
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public ExcelExport exportData(Long orgId,Long parkManageId) throws IOException, InvalidFormatException {
|
||||
SysUser user = ShiroUtils.getUserEntity();
|
||||
Map<String, Integer> dataMap = new LinkedHashMap<>();
|
||||
dataMap.put("org_name", ExcelExport.CELL_ALIGN_LEFT); // 设置列名与对齐方式的映射关系
|
||||
dataMap.put("park_manage_name", ExcelExport.CELL_ALIGN_LEFT);
|
||||
dataMap.put("plate_number", ExcelExport.CELL_ALIGN_LEFT);
|
||||
dataMap.put("nickname", ExcelExport.CELL_ALIGN_LEFT);
|
||||
dataMap.put("type", ExcelExport.CELL_ALIGN_LEFT);
|
||||
dataMap.put("status", ExcelExport.CELL_ALIGN_LEFT);
|
||||
dataMap.put("validity_time", ExcelExport.CELL_ALIGN_LEFT);
|
||||
String nativeSql = "SELECT org_name,park_manage_name,plate_number,nickname,(CASE TYPE WHEN 0 THEN '包月车' ELSE '免费车' END) type ,(CASE STATUS WHEN 0 THEN '禁用' ELSE '正常' END) status,validity_time FROM app_car_manage WHERE 1=1";
|
||||
List<Map<String, Object>> list;
|
||||
if(ShiroUtils.isHasRole(SystemConstant.ROLE_ADMIN)){
|
||||
if(orgId!=null){
|
||||
nativeSql +=" AND org_id="+orgId;
|
||||
}
|
||||
}else{
|
||||
nativeSql +=" AND org_id="+user.getOrgId();
|
||||
}
|
||||
if(parkManageId!=null){
|
||||
nativeSql +=" AND park_manage_id=?";
|
||||
list = dynamicQuery.nativeQueryListMap(nativeSql,parkManageId); // 执行原生查询,获取多个对象的列表
|
||||
}else{
|
||||
list = dynamicQuery.nativeQueryListMap(nativeSql);
|
||||
}
|
||||
/**
|
||||
* 开始生成模板、导出数据
|
||||
*/
|
||||
InputStream stream = ClassUtils.getDefaultClassLoader()
|
||||
.getResourceAsStream("static/excelTemplate/carManageExport.xls");
|
||||
ExcelExport excelExport = new ExcelExport(
|
||||
FileUtil.writeFromStream(stream, new File("excelTemplate/carManageExport.xls")), 1); // 创建 Excel 导出工具类对象
|
||||
excelExport.setDataList(list, dataMap, false, ""); // 设置导出数据和列名与对齐方式的映射关系
|
||||
return excelExport; // 返回 Excel 导出工具类对象
|
||||
}
|
||||
|
||||
// 构建通用的 SQL 条件语句
|
||||
public String common(CarManage entity){
|
||||
String description = entity.getDescription();
|
||||
String commonSql = " WHERE 1=1 ";
|
||||
if(StringUtils.isNotBlank(description)){
|
||||
commonSql += " AND name like '"+description+"%' ";
|
||||
}
|
||||
if(ShiroUtils.isHasRole(SystemConstant.ROLE_ADMIN)){
|
||||
if(entity.getOrgId()!=null){
|
||||
commonSql +=" AND org_id="+entity.getOrgId();
|
||||
}
|
||||
}else{
|
||||
Long orgId = ShiroUtils.getUserEntity().getOrgId();
|
||||
commonSql +=" AND org_id="+orgId;
|
||||
}
|
||||
if(entity.getParkManageId()!=null){
|
||||
commonSql +=" AND park_manage_id="+entity.getParkManageId();
|
||||
}
|
||||
return commonSql;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,102 @@
|
||||
package com.smart.module.car.service.impl;
|
||||
|
||||
import com.smart.common.constant.SystemConstant;
|
||||
import com.smart.common.dynamicquery.DynamicQuery;
|
||||
import com.smart.common.model.PageBean;
|
||||
import com.smart.common.model.Result;
|
||||
import com.smart.common.util.DateUtils;
|
||||
import com.smart.common.util.ShiroUtils;
|
||||
import com.smart.module.car.entity.CarParkingRecord;
|
||||
import com.smart.module.car.repository.CarParkingRecordRepository;
|
||||
import com.smart.module.car.service.CarParkingRecordService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 车辆停车记录模块的服务实现类
|
||||
*/
|
||||
@Service
|
||||
public class CarParkingRecordServiceImpl implements CarParkingRecordService {
|
||||
|
||||
@Autowired
|
||||
private DynamicQuery dynamicQuery;
|
||||
@Autowired
|
||||
private CarParkingRecordRepository carParkingRecordRepository;
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor=Exception.class)
|
||||
public Result save(CarParkingRecord entity) {
|
||||
|
||||
carParkingRecordRepository.saveAndFlush(entity);
|
||||
return Result.ok("保存成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算符合条件的记录总数
|
||||
* @param entity
|
||||
* @return
|
||||
*/
|
||||
|
||||
@Override
|
||||
public Result list(CarParkingRecord entity) {
|
||||
String nativeSql = "SELECT COUNT(*) FROM app_car_parking_record ";
|
||||
nativeSql += common(entity);
|
||||
Long count = dynamicQuery.nativeQueryCount(nativeSql);
|
||||
PageBean<CarParkingRecord> data = new PageBean<>();
|
||||
if(count>0){
|
||||
nativeSql = "SELECT * FROM app_car_parking_record ";
|
||||
nativeSql += common(entity);
|
||||
nativeSql += " ORDER BY gmt_into desc";
|
||||
Pageable pageable = PageRequest.of(entity.getPageNo(),entity.getPageSize());//分页查询
|
||||
List<CarParkingRecord> list =
|
||||
dynamicQuery.nativeQueryPagingList(CarParkingRecord.class,pageable,nativeSql);
|
||||
data = new PageBean(list,count);
|
||||
}
|
||||
return Result.ok(data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param plateNumber
|
||||
* @param parkManageId
|
||||
* @return 返回车辆停车记录实体对象
|
||||
*/
|
||||
@Override
|
||||
public CarParkingRecord getByPlateNumber(String plateNumber, Long parkManageId) {
|
||||
String nativeSql = "SELECT * FROM app_car_parking_record WHERE plate_number=? AND park_manage_id=? AND gmt_out is null";
|
||||
return dynamicQuery.nativeQuerySingleResult(CarParkingRecord.class,nativeSql,plateNumber,parkManageId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建通用的SQL查询条件
|
||||
* @param entity
|
||||
* @return
|
||||
*/
|
||||
public String common(CarParkingRecord entity){
|
||||
String description = entity.getDescription();
|
||||
String commonSql = " WHERE 1=1";
|
||||
if(StringUtils.isNotBlank(description)){
|
||||
commonSql += " AND plate_number like '"+description+"%' ";
|
||||
}
|
||||
if(ShiroUtils.isHasRole(SystemConstant.ROLE_ADMIN)){
|
||||
if(entity.getOrgId()!=null){
|
||||
commonSql +=" AND org_id="+entity.getOrgId();
|
||||
}
|
||||
}else{
|
||||
Long orgId = ShiroUtils.getUserEntity().getOrgId();
|
||||
commonSql +=" AND org_id="+orgId;
|
||||
}
|
||||
if(entity.getParkManageId()!=null){
|
||||
commonSql +=" AND park_manage_id="+entity.getParkManageId();
|
||||
}
|
||||
return commonSql;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,90 @@
|
||||
package com.smart.module.car.service.impl;
|
||||
|
||||
import com.smart.common.constant.SystemConstant;
|
||||
import com.smart.common.dynamicquery.DynamicQuery;
|
||||
import com.smart.common.model.PageBean;
|
||||
import com.smart.common.model.Result;
|
||||
import com.smart.common.util.DateUtils;
|
||||
import com.smart.common.util.ShiroUtils;
|
||||
import com.smart.module.car.entity.CarParkManage;
|
||||
import com.smart.module.car.repository.ParkManageRepository;
|
||||
import com.smart.module.car.service.ParkManageService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service // 服务注解,表示该类为一个服务类
|
||||
public class ParkManageServiceImpl implements ParkManageService {
|
||||
|
||||
// 自动装配动态查询工具类和停车场仓库类
|
||||
@Autowired
|
||||
private DynamicQuery dynamicQuery;
|
||||
@Autowired
|
||||
private ParkManageRepository parkManageRepository;
|
||||
|
||||
// 保存停车场信息的方法
|
||||
@Override
|
||||
@Transactional(rollbackFor=Exception.class) // 添加事务注解,表示该方法需要事务支持
|
||||
public Result save(CarParkManage entity) {
|
||||
// 判断是新增还是更新停车场信息
|
||||
if(entity.getId()==null){
|
||||
entity.setGmtCreate(DateUtils.getTimestamp()); // 设置创建时间
|
||||
entity.setGmtModified(entity.getGmtCreate()); // 设置修改时间
|
||||
}else{
|
||||
entity.setGmtModified(DateUtils.getTimestamp()); // 设置修改时间
|
||||
}
|
||||
parkManageRepository.saveAndFlush(entity); // 保存停车场信息到数据库
|
||||
return Result.ok("保存成功"); // 返回操作结果
|
||||
}
|
||||
|
||||
// 查询停车场信息列表的方法
|
||||
@Override
|
||||
public Result list(CarParkManage entity) {
|
||||
String nativeSql = "SELECT COUNT(*) FROM app_car_park_manage "; // 构建查询总数的 SQL 语句
|
||||
nativeSql += common(entity); // 拼接公共查询条件
|
||||
Long count = dynamicQuery.nativeQueryCount(nativeSql); // 查询符合条件的停车场信息总数
|
||||
|
||||
PageBean<CarParkManage> data = new PageBean<>(); // 创建分页实体类对象
|
||||
if(count>0){
|
||||
nativeSql = "SELECT * FROM app_car_park_manage "; // 构建查询数据的 SQL 语句
|
||||
nativeSql += common(entity); // 拼接公共查询条件
|
||||
nativeSql += "ORDER BY gmt_create desc"; // 按创建时间倒序排序
|
||||
Pageable pageable = PageRequest.of(entity.getPageNo(),entity.getPageSize()); // 创建分页请求对象
|
||||
List<CarParkManage> list = dynamicQuery.nativeQueryPagingList(CarParkManage.class,pageable,nativeSql); // 分页查询符合条件的停车场信息列表
|
||||
data = new PageBean(list,count); // 设置查询结果到分页实体类对象中
|
||||
}
|
||||
return Result.ok(data); // 返回查询结果
|
||||
}
|
||||
|
||||
// 获取停车场信息下拉列表的方法
|
||||
@Override
|
||||
@Transactional(readOnly = true) // 添加只读事务注解,表示该方法不进行数据修改操作
|
||||
public List<Map<String,Object>> select(CarParkManage entity) {
|
||||
String nativeSql = "SELECT id,name FROM app_car_park_manage WHERE 1=1"; // 构建查询 SQL 语句
|
||||
if(ShiroUtils.isHasRole(SystemConstant.ROLE_ADMIN)){ // 判断当前用户是否具有管理员角色
|
||||
if(entity.getOrgId()!=null){
|
||||
nativeSql +=" AND org_id="+entity.getOrgId(); // 根据组织机构ID查询对应的停车场信息
|
||||
}
|
||||
}else{
|
||||
Long orgId = ShiroUtils.getUserEntity().getOrgId(); // 获取当前登录用户的组织机构ID
|
||||
nativeSql +=" AND org_id="+orgId; // 根据当前登录用户的组织机构ID查询对应的停车场信息
|
||||
}
|
||||
return dynamicQuery.nativeQueryListMap(nativeSql); // 执行查询并返回停车场ID和名称的列表数据
|
||||
}
|
||||
|
||||
// 辅助方法,拼接公共查询条件
|
||||
public String common(CarParkManage entity){
|
||||
String description = entity.getDescription(); // 获取停车场名称的查询条件
|
||||
String commonSql = "";
|
||||
if(StringUtils.isNotBlank(description)){
|
||||
commonSql += "WHERE name like '"+description+"%' "; // 根据停车场名称模糊查询
|
||||
}
|
||||
return commonSql;
|
||||
}
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
package com.smart.module.car.web;
|
||||
|
||||
import com.smart.common.model.Result;
|
||||
import com.smart.common.util.ExcelExport;
|
||||
import com.smart.module.car.entity.CarManage;
|
||||
import com.smart.module.car.repository.CarManageRepository;
|
||||
import com.smart.module.car.service.CarManageService;
|
||||
import org.apache.shiro.authz.annotation.Logical;
|
||||
import org.apache.shiro.authz.annotation.RequiresRoles;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 停车场管理
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/car/manage")
|
||||
public class CarManageController {
|
||||
|
||||
@Autowired
|
||||
private CarManageService carManageService;
|
||||
@Autowired
|
||||
private CarManageRepository carManageRepository;
|
||||
|
||||
/**
|
||||
* 查询停车场信息列表
|
||||
*/
|
||||
@PostMapping("list")
|
||||
@RequiresRoles(value={"admin","orgAdmin"},logical = Logical.OR)
|
||||
public Result list(CarManage entity){
|
||||
return carManageService.list(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定ID的停车场信息
|
||||
*/
|
||||
@PostMapping("get")
|
||||
@RequiresRoles(value={"admin","orgAdmin"},logical = Logical.OR)
|
||||
public Result get(Long id){
|
||||
CarManage entity =
|
||||
carManageRepository.findById(id).orElse(new CarManage());
|
||||
return Result.ok(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存或更新停车场信息
|
||||
*/
|
||||
@PostMapping("save")
|
||||
@RequiresRoles(value={"admin","orgAdmin"},logical = Logical.OR)
|
||||
public Result save(@RequestBody CarManage entity){
|
||||
return carManageService.save(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除指定ID的停车场信息
|
||||
*/
|
||||
@PostMapping("delete")
|
||||
@RequiresRoles(value={"admin","orgAdmin"},logical = Logical.OR)
|
||||
public Result delete(Long id){
|
||||
carManageRepository.deleteById(id);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 导出车辆信息到Excel文件
|
||||
*/
|
||||
@PostMapping("export")
|
||||
@RequiresRoles(value={"admin","orgAdmin"},logical = Logical.OR)
|
||||
public void export(Long orgId,Long parkManageId,HttpServletRequest request, HttpServletResponse response){
|
||||
try{
|
||||
ExcelExport excelExport = carManageService.exportData(orgId,parkManageId);
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||
excelExport.writeTemplate(response, request,
|
||||
"车辆信息-" + sdf.format(new Date()) + ".xls");
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package com.smart.module.car.web;
|
||||
|
||||
import com.smart.common.model.Result;
|
||||
import com.smart.module.car.entity.CarParkingRecord;
|
||||
import com.smart.module.car.repository.CarParkingRecordRepository;
|
||||
import com.smart.module.car.service.CarParkingRecordService;
|
||||
import org.apache.shiro.authz.annotation.Logical;
|
||||
import org.apache.shiro.authz.annotation.RequiresRoles;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 车辆进出记录
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/car/parkingRecord")
|
||||
public class CarParkingRecordController {
|
||||
|
||||
@Autowired
|
||||
private CarParkingRecordService carParkingRecordService;
|
||||
@Autowired
|
||||
private CarParkingRecordRepository carParkingRecordRepository;
|
||||
|
||||
/**
|
||||
* 查询车辆进出记录列表
|
||||
*/
|
||||
@PostMapping("list")
|
||||
@RequiresRoles(value={"admin","orgAdmin"},logical = Logical.OR)
|
||||
public Result list(CarParkingRecord entity){
|
||||
return carParkingRecordService.list(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定ID的车辆进出记录信息
|
||||
*/
|
||||
@PostMapping("get")
|
||||
@RequiresRoles(value={"admin","orgAdmin"},logical = Logical.OR)
|
||||
public Result get(Long id){
|
||||
CarParkingRecord entity =
|
||||
carParkingRecordRepository.findById(id).orElse(new CarParkingRecord());
|
||||
return Result.ok(entity);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,204 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="common/head :: head(links)"/>
|
||||
<body>
|
||||
<div class="ok-body" id="app" v-cloak>
|
||||
<template>
|
||||
<i-form label-colon ref="checkForm" :model="entity" :rules="ruleValidate" :label-width="120">
|
||||
<i-row>
|
||||
<i-col span="12">
|
||||
<form-item prop="orgName" label="请选择单位">
|
||||
<span @click="selectOrg()">
|
||||
<i-input readonly v-model="entity.orgName" placeholder="请选择单位"></i-input>
|
||||
</span>
|
||||
</form-item>
|
||||
</i-col>
|
||||
<i-col span="12">
|
||||
<form-item prop="parkManageName" label="请选择停车场">
|
||||
<span @click="selectPark()">
|
||||
<i-input readonly v-model="entity.parkManageName" placeholder="请选择停车场"></i-input>
|
||||
</span>
|
||||
</form-item>
|
||||
</i-col>
|
||||
</i-row>
|
||||
<i-row>
|
||||
<i-col span="12">
|
||||
<form-item prop="nickname" label="车主姓名">
|
||||
<i-input v-model="entity.nickname" placeholder="请输入车主姓名"></i-input>
|
||||
</form-item>
|
||||
</i-col>
|
||||
<i-col span="12">
|
||||
<form-item prop="mobile" label="手机号">
|
||||
<i-input v-model="entity.mobile" placeholder="请输入手机号"></i-input>
|
||||
</form-item>
|
||||
</i-col>
|
||||
</i-row>
|
||||
<i-row>
|
||||
<i-col span="12">
|
||||
<form-item prop="gender" label="性别">
|
||||
<radio-group v-model="entity.gender">
|
||||
<radio v-for="item in genderList" :label="item.value" :key="item.value">{{item.label}}</radio>
|
||||
</radio-group>
|
||||
</form-item>
|
||||
</i-col>
|
||||
<i-col span="12">
|
||||
<form-item prop="plateNumber" label="车牌号">
|
||||
<i-input v-model="entity.plateNumber" placeholder="请输入车牌号"></i-input>
|
||||
</form-item>
|
||||
</i-col>
|
||||
</i-row>
|
||||
|
||||
<i-row>
|
||||
<i-col span="12">
|
||||
<form-item prop="parkingLot" label="车位号">
|
||||
<i-input v-model="entity.parkingLot" placeholder="请输入车位号"></i-input>
|
||||
</form-item>
|
||||
</i-col>
|
||||
<i-col span="12">
|
||||
<form-item prop="type" label="类型">
|
||||
<radio-group v-model="entity.type">
|
||||
<radio v-for="item in typeList" :label="item.value" :key="item.value">{{item.label}}</radio>
|
||||
</radio-group>
|
||||
</form-item>
|
||||
</i-col>
|
||||
</i-row>
|
||||
<i-row>
|
||||
<i-col span="12">
|
||||
<form-item prop="validityTime" label="有效期至">
|
||||
<Date-Picker v-model="entity.validityTime" type="datetime" format="yyyy-MM-dd" placeholder="有效期至" style="width: 200px"></Date-Picker>
|
||||
</form-item>
|
||||
</i-col>
|
||||
<i-col span="12">
|
||||
<form-item prop="status" label="状态">
|
||||
<radio-group v-model="entity.status">
|
||||
<radio v-for="item in statusList" :label="item.value" :key="item.value">{{item.label}}</radio>
|
||||
</radio-group>
|
||||
</form-item>
|
||||
</i-col>
|
||||
</i-row>
|
||||
</i-form>
|
||||
</template>
|
||||
</div>
|
||||
<div th:replace="common/foot :: foot(script)"></div>
|
||||
<script th:inline="none">
|
||||
var vm = new Vue({
|
||||
el: '#app',
|
||||
data:{
|
||||
entity:{
|
||||
status:1,
|
||||
orgName:'',
|
||||
orgId:null,
|
||||
parkManageId:null,
|
||||
parkManageName:''
|
||||
},
|
||||
roleName:"",
|
||||
typeList:[{"label":"包月车","value":0},{"label":"VIP免费车","value":1},{"label":"临时车","value":2}],
|
||||
genderList:[{"label":"男","value":"1"},{"label":"女","value":"0"}],
|
||||
statusList:[{"label":"正常","value":1},{"label":"禁用","value":0}],
|
||||
ruleValidate : {
|
||||
orgName: [
|
||||
{ required: true, message: '不能为空', trigger: 'change' }
|
||||
],
|
||||
parkManageName: [
|
||||
{ required: true, message: '不能为空', trigger: 'change'}
|
||||
],
|
||||
nickname: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur'}
|
||||
],
|
||||
mobile: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur'}
|
||||
],
|
||||
gender: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur'}
|
||||
],
|
||||
parkingLot: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur'}
|
||||
],
|
||||
plateNumber: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur'}
|
||||
],
|
||||
type: [
|
||||
{ required: true, message: '不能为空', trigger: 'change',type: 'number' }
|
||||
],
|
||||
status: [
|
||||
{ required: true, message: '不能为空', trigger: 'change',type: 'number' }
|
||||
],
|
||||
validityTime: [
|
||||
{ required: true, message: '不能为空', trigger: 'change',type: 'date' }
|
||||
],
|
||||
},
|
||||
okUtils:null,
|
||||
okLayer:null
|
||||
},
|
||||
methods: {
|
||||
load : function(){
|
||||
layui.use(["okUtils", "okLayer"], function () {
|
||||
vm.okUtils = layui.okUtils;
|
||||
vm.okLayer = layui.okLayer;
|
||||
if(vm.entity.id!=undefined){
|
||||
vm.okUtils.ajaxCloud({
|
||||
url:"/car/manage/get",
|
||||
param : {id:vm.entity.id},
|
||||
close : false,
|
||||
success : function(result) {
|
||||
vm.entity = result.msg;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
acceptClick : function(dialog){
|
||||
vm.$refs.checkForm.validate(function(valid){
|
||||
if (valid) {
|
||||
vm.okUtils.ajaxCloud({
|
||||
url:"/car/manage/save",
|
||||
param : vm.entity,
|
||||
json:true,
|
||||
success : function(result) {
|
||||
vm.okLayer.msg.greenTick(result.msg)
|
||||
dialog.load();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
selectOrg : function(){
|
||||
vm.okUtils.dialogOpen({
|
||||
title: '选择合作单位',
|
||||
id:'org',
|
||||
url: "car/carManage/org.html",
|
||||
scroll : true,
|
||||
width: '300px',
|
||||
height: '500px',
|
||||
success : function(dialog) {
|
||||
|
||||
},
|
||||
yes : function(dialog) {
|
||||
dialog.vm.acceptClick(vm);
|
||||
}
|
||||
});
|
||||
},
|
||||
selectPark : function(){
|
||||
vm.okUtils.dialogOpen({
|
||||
title: '选择停车场',
|
||||
id:'org',
|
||||
url: "car/carManage/park.html",
|
||||
scroll : true,
|
||||
width: '300px',
|
||||
height: '500px',
|
||||
success : function(dialog) {
|
||||
|
||||
},
|
||||
yes : function(dialog) {
|
||||
dialog.vm.acceptClick(vm);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
created: function() {
|
||||
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,240 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="common/head :: head(link)"/>
|
||||
<body>
|
||||
<div id="app" class="ok-body" v-cloak>
|
||||
<!--模糊搜索区域-->
|
||||
<template>
|
||||
<div style="margin-bottom: 8px;margin-top: 8px;">
|
||||
<i-select @on-change="listParkManage" placeholder="请选择合作单位" v-model="entity.orgId" style="width:200px">
|
||||
<i-option v-for="item in orgList" :value="item.orgId" :key="item.orgId">{{ item.name }}</i-option>
|
||||
</i-select>
|
||||
<i-select placeholder="请选择停车场" v-model="entity.parkManageId" style="width:200px">
|
||||
<i-option v-for="item in parkManageList" :value="item.id" :key="item.id">{{ item.name }}</i-option>
|
||||
</i-select>
|
||||
<i-input placeholder="输入内容" v-model="entity.description" style="width: 200px"></i-input>
|
||||
<i-button type="primary" icon="ios-search" @click="load()">搜索</i-button>
|
||||
<i-button type="primary" icon="ios-redo" @click="reload()" >重置</i-button>
|
||||
<i-button type="primary" icon="md-cloud-download" @click="exportData()" >导出数据</i-button>
|
||||
<i-button type="primary" style="float:right;" icon="md-add" @click="add()">新增</i-button>
|
||||
</div>
|
||||
</template>
|
||||
<template>
|
||||
<i-table size="small" :columns="tableTitle" :data="tableData">
|
||||
<template slot-scope="tableScope" slot="action">
|
||||
<i-button type="primary" size="small" icon="md-create" ghost class="table-btn" @click="edit(tableScope.row)">修改</i-button>
|
||||
<i-button type="primary" size="small" icon="md-trash" ghost class="table-btn" @click="remove(tableScope.row)">删除</i-button>
|
||||
<!-- <i-button v-if="tableScope.row.type==0" type="primary" size="small" icon="md-card" ghost class="table-btn" @click="renew(tableScope.row)">续费</i-button>-->
|
||||
<i-button type="primary" size="small" icon="md-trash" ghost class="table-btn" @click="renew(tableScope.row)">续费</i-button>
|
||||
</template>
|
||||
</i-table>
|
||||
<br>
|
||||
<Page style="float: right;" :current="entity.pageNo" :total="tableSize" :page-size="entity.pageSize" @on-change="changePage" @on-page-size-change="changePageSize" show-elevator show-sizer show-total></Page>
|
||||
</template>
|
||||
<form id="exportForm" style="display: none;" method="post">
|
||||
<input name="orgId" v-model="entity.orgId" >
|
||||
<input name="parkManageId" v-model="entity.parkManageId" >
|
||||
</form>
|
||||
</div>
|
||||
<div th:replace="common/foot :: foot(script)"></div>
|
||||
<script th:inline="none">
|
||||
layui.use(["okUtils", "okLayer"], function () {
|
||||
var okUtils = layui.okUtils;
|
||||
var okLayer = layui.okLayer;
|
||||
var $ = layui.jquery;
|
||||
var vm = new Vue({
|
||||
el: '#app',
|
||||
data: function(){
|
||||
var that = this;
|
||||
return {
|
||||
tableTitle : [{
|
||||
title: '序号',
|
||||
width : 80,
|
||||
render: function(h, params) {
|
||||
return h('span', params.index + (that.entity.pageNo- 1) * that.entity.pageSize + 1);
|
||||
}
|
||||
},{
|
||||
key : "orgName",
|
||||
title : "所属单位",
|
||||
minWidth:150
|
||||
},{
|
||||
key : "parkManageName",
|
||||
title : "停车场",
|
||||
minWidth:150
|
||||
},{
|
||||
key : "plateNumber",
|
||||
title : "车牌号",
|
||||
width:150
|
||||
},{
|
||||
key : "nickname",
|
||||
title : "车主姓名",
|
||||
width:150
|
||||
},{
|
||||
key : "gender",
|
||||
title : "性别",
|
||||
width : 80,
|
||||
render: function(h, params) {
|
||||
return h('span', params.row.gender==0?'女':'男');
|
||||
}
|
||||
},{
|
||||
key : "status",
|
||||
title : "状态",
|
||||
width : 80,
|
||||
render: function(h, params) {
|
||||
return h('span', params.row.status==0?'禁用':'正常');
|
||||
}
|
||||
},{
|
||||
key : "type",
|
||||
title : "类型",
|
||||
width : 120,
|
||||
render: function(h, params) {
|
||||
if(params.row.type==2){
|
||||
return h('span','临时车');
|
||||
}else{
|
||||
return h('span', params.row.type==0?'包月车':'VIP免费车');
|
||||
}
|
||||
|
||||
}
|
||||
},{
|
||||
key : "validityTime",
|
||||
title : "有效期至",
|
||||
minWidth:150
|
||||
},{
|
||||
title : '操作',
|
||||
key : 'action',
|
||||
minWidth : 250,
|
||||
fixed : 'right',
|
||||
align : 'left',
|
||||
slot:'action'
|
||||
} ],
|
||||
tableData : [],
|
||||
entity : {
|
||||
pageSize : 10,
|
||||
pageNo : 1,
|
||||
description:'',
|
||||
orgId:null
|
||||
},
|
||||
tableSize : 50,
|
||||
orgList:[],
|
||||
parkManageList:[]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
load : function() {
|
||||
var that = this;
|
||||
okUtils.ajaxCloud({
|
||||
url:"/car/manage/list",
|
||||
param : that.entity,
|
||||
success : function(result) {
|
||||
that.tableData = result.msg.pageData;
|
||||
that.tableSize = result.msg.totalCount;
|
||||
}
|
||||
});
|
||||
},
|
||||
listOrg : function() {
|
||||
var that = this;
|
||||
okUtils.ajaxCloud({
|
||||
url:"/sys/org/select",
|
||||
success : function(result) {
|
||||
that.orgList = result.msg;
|
||||
}
|
||||
});
|
||||
},
|
||||
listParkManage : function() {
|
||||
var that = this;
|
||||
okUtils.ajaxCloud({
|
||||
url:"/car/parkManage/select",
|
||||
param : {'orgId':vm.entity.orgId},
|
||||
success : function(result) {
|
||||
that.parkManageList = result.msg;
|
||||
}
|
||||
});
|
||||
},
|
||||
reload : function(){
|
||||
vm.entity.pageSize = 10;
|
||||
vm.entity.pageNo = 1;
|
||||
vm.entity.description = '';
|
||||
vm.entity.orgId = null;
|
||||
vm.entity.parkManageId = null;
|
||||
this.load();
|
||||
},
|
||||
changePage : function(pageNo) {
|
||||
vm.entity.pageNo = pageNo;
|
||||
vm.load();
|
||||
},
|
||||
changePageSize : function(pageSize) {
|
||||
vm.entity.pageSize = pageSize;
|
||||
vm.load();
|
||||
},
|
||||
edit : function(entity) {
|
||||
okUtils.dialogOpen({
|
||||
title: '修改',
|
||||
url: "car/carManage/form.html",
|
||||
scroll : true,
|
||||
width: '50%',
|
||||
height: '65%',
|
||||
success : function(dialog) {
|
||||
dialog.vm.entity.id = entity.id;
|
||||
dialog.vm.load();
|
||||
},
|
||||
yes : function(dialog) {
|
||||
dialog.vm.acceptClick(vm);
|
||||
}
|
||||
});
|
||||
},
|
||||
add:function(){
|
||||
okUtils.dialogOpen({
|
||||
title: '新增',
|
||||
url: "car/carManage/form.html",
|
||||
scroll : true,
|
||||
width: '50%',
|
||||
height: '65%',
|
||||
success : function(dialog) {
|
||||
dialog.vm.load();
|
||||
},
|
||||
yes : function(dialog) {
|
||||
dialog.vm.acceptClick(vm);
|
||||
}
|
||||
});
|
||||
},
|
||||
remove:function(entity) {
|
||||
okLayer.confirm("确定要删除吗?", function () {
|
||||
okUtils.ajaxCloud({
|
||||
url:"/car/manage/delete",
|
||||
param : {id: entity.id},
|
||||
success : function(result) {
|
||||
okLayer.msg.greenTick(result.msg);
|
||||
vm.load();
|
||||
}
|
||||
});
|
||||
})
|
||||
},
|
||||
renew:function(entity){
|
||||
okUtils.dialogOpen({
|
||||
title: '续费',
|
||||
url: "car/carManage/renew.html",
|
||||
scroll : true,
|
||||
width: '50%',
|
||||
height: '65%',
|
||||
success : function(dialog) {
|
||||
dialog.vm.entity.id = entity.id;
|
||||
dialog.vm.load();
|
||||
},
|
||||
yes : function(dialog) {
|
||||
dialog.vm.acceptClick(vm);
|
||||
}
|
||||
});
|
||||
},exportData: function () {
|
||||
$("#exportForm").attr("action", "/car/manage/export");
|
||||
$("#exportForm").submit();
|
||||
}
|
||||
},
|
||||
created: function() {
|
||||
this.load()
|
||||
this.listOrg();
|
||||
}
|
||||
})
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,71 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<link rel="stylesheet" th:href="@{/lib/ztree/css/metroStyle/metroStyle.css}">
|
||||
</head>
|
||||
<body>
|
||||
<div class="ok-body" id="app" v-cloak>
|
||||
<div id="treePanel" style="overflow: auto;">
|
||||
<ul id="orgTree" class="ztree"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div th:replace="common/foot :: foot(jquery、tree)"></div>
|
||||
<script th:inline="none">
|
||||
var setting = {
|
||||
data : {
|
||||
simpleData : {
|
||||
enable : true,
|
||||
idKey : "orgId",
|
||||
pIdKey : "parentId",
|
||||
rootPId : "0"
|
||||
},
|
||||
key : {
|
||||
url : "nourl"
|
||||
}
|
||||
},
|
||||
callback : {
|
||||
onClick : function(event, treeId, treeNode) {
|
||||
vm.parentId = treeNode.orgId;
|
||||
vm.parentName = treeNode.name;
|
||||
}
|
||||
}
|
||||
};
|
||||
var vm = new Vue({
|
||||
el: '#app',
|
||||
data:{
|
||||
okUtils:null,
|
||||
okLayer:null,
|
||||
orgId:null,
|
||||
parentName:null
|
||||
},
|
||||
methods: {
|
||||
tree : function() {
|
||||
vm.okUtils.ajaxCloud({
|
||||
url:"/sys/org/select",
|
||||
param : {parentId: vm.parentId},
|
||||
close:false,
|
||||
success : function(result) {
|
||||
$.fn.zTree.init($("#orgTree"), setting, result.msg);
|
||||
}
|
||||
});
|
||||
},
|
||||
acceptClick : function(dialog){
|
||||
dialog.entity.orgId = vm.parentId;
|
||||
dialog.entity.orgName = vm.parentName;
|
||||
vm.okUtils.dialogClose();
|
||||
}
|
||||
},
|
||||
created: function() {
|
||||
var that = this;
|
||||
layui.use(["okUtils", "okLayer"], function () {
|
||||
that.okUtils = layui.okUtils;
|
||||
that.okLayer = layui.okLayer;
|
||||
that.tree();
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,71 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<link rel="stylesheet" th:href="@{/lib/ztree/css/metroStyle/metroStyle.css}">
|
||||
</head>
|
||||
<body>
|
||||
<div class="ok-body" id="app" v-cloak>
|
||||
<div id="treePanel" style="overflow: auto;">
|
||||
<ul id="orgTree" class="ztree"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div th:replace="common/foot :: foot(jquery、tree)"></div>
|
||||
<script th:inline="none">
|
||||
var setting = {
|
||||
data : {
|
||||
simpleData : {
|
||||
enable : true,
|
||||
idKey : "id",
|
||||
pIdKey : "parentId",
|
||||
rootPId : "0"
|
||||
},
|
||||
key : {
|
||||
url : "nourl"
|
||||
}
|
||||
},
|
||||
callback : {
|
||||
onClick : function(event, treeId, treeNode) {
|
||||
vm.id = treeNode.id;
|
||||
vm.name = treeNode.name;
|
||||
}
|
||||
}
|
||||
};
|
||||
var vm = new Vue({
|
||||
el: '#app',
|
||||
data:{
|
||||
okUtils:null,
|
||||
okLayer:null,
|
||||
id:null,
|
||||
name:null
|
||||
},
|
||||
methods: {
|
||||
tree : function() {
|
||||
vm.okUtils.ajaxCloud({
|
||||
url:"/car/parkManage/select",
|
||||
param : {parentId: vm.parentId},
|
||||
close:false,
|
||||
success : function(result) {
|
||||
$.fn.zTree.init($("#orgTree"), setting, result.msg);
|
||||
}
|
||||
});
|
||||
},
|
||||
acceptClick : function(dialog){
|
||||
dialog.entity.parkManageId = vm.id;
|
||||
dialog.entity.parkManageName = vm.name;
|
||||
vm.okUtils.dialogClose();
|
||||
}
|
||||
},
|
||||
created: function() {
|
||||
var that = this;
|
||||
layui.use(["okUtils", "okLayer"], function () {
|
||||
that.okUtils = layui.okUtils;
|
||||
that.okLayer = layui.okLayer;
|
||||
that.tree();
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,132 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="common/head :: head(links)"/>
|
||||
<body>
|
||||
<div class="ok-body" id="app" v-cloak>
|
||||
<template>
|
||||
<i-form label-colon ref="checkForm" :model="entity" :rules="ruleValidate" :label-width="120">
|
||||
<i-row>
|
||||
<i-col span="12">
|
||||
<form-item label="车主">
|
||||
{{entity.nickname}}
|
||||
</form-item>
|
||||
</i-col>
|
||||
<i-col span="12">
|
||||
<form-item label="手机号">
|
||||
{{entity.mobile}}
|
||||
</form-item>
|
||||
</i-col>
|
||||
</i-row>
|
||||
<i-row>
|
||||
<i-col span="12">
|
||||
<form-item label="车牌号">
|
||||
{{entity.plateNumber}}
|
||||
</form-item>
|
||||
</i-col>
|
||||
<i-col span="12">
|
||||
<form-item label="车位号">
|
||||
{{entity.parkingLot}}
|
||||
</form-item>
|
||||
</i-col>
|
||||
</i-row>
|
||||
<i-row>
|
||||
<i-col span="12">
|
||||
<form-item prop="type" label="支付方式">
|
||||
<radio-group v-model="entity.type">
|
||||
<radio v-for="item in payType" :label="item.value" :key="item.value">{{item.label}}</radio>
|
||||
</radio-group>
|
||||
</form-item>
|
||||
</i-col>
|
||||
<i-col span="12">
|
||||
<form-item prop="totalFee" label="金额">
|
||||
<i-input v-model="entity.totalFee" placeholder="请输入金额"></i-input>
|
||||
</form-item>
|
||||
</i-col>
|
||||
</i-row>
|
||||
<i-row>
|
||||
<i-col span="12">
|
||||
<form-item prop="validityTime" label="有效期至">
|
||||
<Date-Picker v-model="entity.validityTime" type="datetime" format="yyyy-MM-dd" placeholder="有效期至" style="width: 200px"></Date-Picker>
|
||||
</form-item>
|
||||
</i-col>
|
||||
</i-row>
|
||||
<i-row>
|
||||
<i-col span="24">
|
||||
<form-item label="备注">
|
||||
<i-input maxlength="200" v-model="entity.remark" type="textarea" :autosize="{minRows: 2,maxRows: 5}" placeholder="请输入备注"></i-input>
|
||||
</form-item>
|
||||
</i-col>
|
||||
</i-row>
|
||||
</i-form>
|
||||
</template>
|
||||
</div>
|
||||
<div th:replace="common/foot :: foot(script)"></div>
|
||||
<script th:inline="none">
|
||||
var vm = new Vue({
|
||||
el: '#app',
|
||||
data:{
|
||||
entity:{
|
||||
status:1,
|
||||
orgName:'',
|
||||
orgId:null,
|
||||
parkManageId:null,
|
||||
parkManageName:''
|
||||
},
|
||||
payType:[{"label":"微信","value":0},{"label":"支付宝","value":1},{"label":"其它","value":2}],
|
||||
roleName:"",
|
||||
ruleValidate : {
|
||||
totalFee: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur'}
|
||||
],
|
||||
type: [
|
||||
{ required: true, message: '不能为空', trigger: 'change',type: 'number' }
|
||||
],
|
||||
validityTime: [
|
||||
{ required: true, message: '不能为空', trigger: 'change',type: 'date' }
|
||||
],
|
||||
},
|
||||
okUtils:null,
|
||||
okLayer:null
|
||||
},
|
||||
methods: {
|
||||
load : function(){
|
||||
layui.use(["okUtils", "okLayer"], function () {
|
||||
vm.okUtils = layui.okUtils;
|
||||
vm.okLayer = layui.okLayer;
|
||||
if(vm.entity.id!=undefined){
|
||||
vm.okUtils.ajaxCloud({
|
||||
url:"/car/manage/get",
|
||||
param : {id:vm.entity.id},
|
||||
close : false,
|
||||
success : function(result) {
|
||||
vm.entity = result.msg;
|
||||
vm.entity.remark = "";
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
acceptClick : function(dialog){
|
||||
vm.entity.carId = vm.entity.id;
|
||||
vm.$refs.checkForm.validate(function(valid){
|
||||
if (valid) {
|
||||
vm.okUtils.ajaxCloud({
|
||||
url:"/car/manage/renew",
|
||||
param : vm.entity,
|
||||
json:true,
|
||||
success : function(result) {
|
||||
vm.okLayer.msg.greenTick(result.msg)
|
||||
dialog.load();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
created: function() {
|
||||
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,140 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="common/head :: head(links)"/>
|
||||
<body>
|
||||
<div class="ok-body" id="app" v-cloak>
|
||||
<template>
|
||||
<i-form label-colon ref="checkForm" :model="entity" :rules="ruleValidate" :label-width="140">
|
||||
<form-item prop="name" label="停车场名称">
|
||||
<i-input maxlength="20" v-model="entity.name" placeholder="请输入停车场名称"></i-input>
|
||||
</form-item>
|
||||
<form-item prop="orgName" label="单位名称">
|
||||
<span @click="selectOrg()">
|
||||
<i-input readonly v-model="entity.orgName" placeholder="请选择单位"></i-input>
|
||||
</span>
|
||||
</form-item>
|
||||
<form-item prop="parkingSpaceNumber" label="停车位数量">
|
||||
<input-number v-model="entity.parkingSpaceNumber" placeholder="请输入停车位数量"></input-number>
|
||||
</form-item>
|
||||
<form-item prop="freeTime" label="免费时长(分钟)">
|
||||
<input-number v-model="entity.freeTime" placeholder="请输入免费时长"></input-number>
|
||||
</form-item>
|
||||
<form-item prop="timeUnit" label="计时单元">
|
||||
<input-number v-model="entity.timeUnit" placeholder="请输入计时单元"></input-number>
|
||||
</form-item>
|
||||
<form-item prop="unitCost" label="单元费用">
|
||||
<i-input v-model="entity.unitCost" placeholder="请输入计时单元"></i-input>
|
||||
</form-item>
|
||||
<form-item prop="maxMoney" label="最大收费金额">
|
||||
<i-input v-model="entity.maxMoney" placeholder="请输入最大收费金额"></i-input>
|
||||
</form-item>
|
||||
<form-item label="状态">
|
||||
<radio-group v-model="entity.status">
|
||||
<radio v-for="item in statusList" :label="item.value" :key="item.value">{{item.label}}</radio>
|
||||
</radio-group>
|
||||
</form-item>
|
||||
</i-form>
|
||||
</template>
|
||||
</div>
|
||||
<div th:replace="common/foot :: foot(script)"></div>
|
||||
<script th:inline="none">
|
||||
var vm = new Vue({
|
||||
el: '#app',
|
||||
data:{
|
||||
entity:{
|
||||
status:1,
|
||||
orgName:'',
|
||||
orgId:null,
|
||||
parkingSpaceNumber:null,
|
||||
freeTime:null,
|
||||
timeUnit:null,
|
||||
unitCost:null,
|
||||
maxMoney:null
|
||||
},
|
||||
roleName:"",
|
||||
statusList:[{"label":"正常","value":1},{"label":"禁用","value":0}],
|
||||
ruleValidate : {
|
||||
name: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
||||
],
|
||||
parkingSpaceNumber: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur',type: 'number'}
|
||||
],
|
||||
freeTime: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur',type: 'number'}
|
||||
],
|
||||
timeUnit: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur',type: 'number'}
|
||||
],
|
||||
unitCost: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur'},
|
||||
{ type: 'string', pattern:/^\d+(\.\d{0,2})?$/, message: '必须是数字, 最多保留两位小数', trigger: 'blur'}
|
||||
],
|
||||
maxMoney: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur'},
|
||||
{ type: 'string', pattern:/^\d+(\.\d{0,2})?$/, message: '必须是数字, 最多保留两位小数', trigger: 'blur'}
|
||||
|
||||
],
|
||||
orgName: [
|
||||
{ required: true, message: '请选择机构', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
okUtils:null,
|
||||
okLayer:null
|
||||
},
|
||||
methods: {
|
||||
load : function(){
|
||||
layui.use(["okUtils", "okLayer"], function () {
|
||||
vm.okUtils = layui.okUtils;
|
||||
vm.okLayer = layui.okLayer;
|
||||
if(vm.entity.id!=undefined){
|
||||
vm.okUtils.ajaxCloud({
|
||||
url:"/car/parkManage/get",
|
||||
param : {id:vm.entity.id},
|
||||
close : false,
|
||||
success : function(result) {
|
||||
vm.entity = result.msg;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
acceptClick : function(dialog){
|
||||
vm.$refs.checkForm.validate(function(valid){
|
||||
if (valid) {
|
||||
vm.okUtils.ajaxCloud({
|
||||
url:"/car/parkManage/save",
|
||||
param : vm.entity,
|
||||
json:true,
|
||||
success : function(result) {
|
||||
vm.okLayer.msg.greenTick(result.msg)
|
||||
dialog.load();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
selectOrg : function(){
|
||||
vm.okUtils.dialogOpen({
|
||||
title: '选择机构',
|
||||
id:'org',
|
||||
url: "sys/user/org.html",
|
||||
scroll : true,
|
||||
width: '300px',
|
||||
height: '500px',
|
||||
success : function(dialog) {
|
||||
|
||||
},
|
||||
yes : function(dialog) {
|
||||
dialog.vm.acceptClick(vm);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
created: function() {
|
||||
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="common/head :: head(link)"/>
|
||||
<body>
|
||||
<div id="app" class="ok-body" v-cloak>
|
||||
<!--模糊搜索区域-->
|
||||
<template>
|
||||
<div style="margin-bottom: 8px;margin-top: 8px;">
|
||||
<i-input placeholder="输入内容" v-model="entity.description" style="width: 300px"></i-input>
|
||||
<i-button type="primary" icon="ios-search" @click="load()">搜索</i-button>
|
||||
<i-button type="primary" icon="ios-redo" @click="reload()" >重置</i-button>
|
||||
<i-button type="primary" style="float:right;" icon="md-add" @click="add()">新增</i-button>
|
||||
</div>
|
||||
</template>
|
||||
<template>
|
||||
<i-table size="small" :columns="tableTitle" :data="tableData">
|
||||
<template slot-scope="tableScope" slot="action">
|
||||
<i-button type="primary" size="small" icon="md-create" ghost class="table-btn" @click="edit(tableScope.row)">修改</i-button>
|
||||
<i-button type="primary" size="small" icon="md-trash" ghost class="table-btn" @click="remove(tableScope.row)">删除</i-button>
|
||||
<i-button type="primary" size="small" icon="md-card" ghost class="table-btn" @click="payConfig(tableScope.row)">支付配置</i-button>
|
||||
</template>
|
||||
</i-table>
|
||||
<br>
|
||||
<Page style="float: right;" :current="entity.pageNo" :total="tableSize" :page-size="entity.pageSize" @on-change="changePage" @on-page-size-change="changePageSize" show-elevator show-sizer show-total></Page>
|
||||
</template>
|
||||
</div>
|
||||
<div th:replace="common/foot :: foot(script)"></div>
|
||||
<script th:inline="none">
|
||||
layui.use(["okUtils", "okLayer"], function () {
|
||||
var okUtils = layui.okUtils;
|
||||
var okLayer = layui.okLayer;
|
||||
var vm = new Vue({
|
||||
el: '#app',
|
||||
data: function(){
|
||||
var that = this;
|
||||
return {
|
||||
tableTitle : [{
|
||||
title: '序号',
|
||||
minWidth : 80,
|
||||
render: function(h, params) {
|
||||
return h('span', params.index + (that.entity.pageNo- 1) * that.entity.pageSize + 1);
|
||||
}
|
||||
},{
|
||||
key : "name",
|
||||
title : "停车场名称",
|
||||
minWidth:150
|
||||
},{
|
||||
key : "parkingSpaceNumber",
|
||||
title : "车位总数",
|
||||
minWidth:100
|
||||
},{
|
||||
key : "freeTime",
|
||||
title : "免费时长",
|
||||
minWidth:150
|
||||
},{
|
||||
key : "timeUnit",
|
||||
title : "计时单元",
|
||||
minWidth:150
|
||||
},{
|
||||
key : "unitCost",
|
||||
title : "单元费用",
|
||||
minWidth:150
|
||||
},{
|
||||
key : "gmtCreate",
|
||||
title : "创建时间",
|
||||
minWidth:150
|
||||
},{
|
||||
title : '操作',
|
||||
key : 'action',
|
||||
minWidth : 320,
|
||||
fixed : 'right',
|
||||
align : 'center',
|
||||
slot:'action'
|
||||
} ],
|
||||
tableData : [],
|
||||
entity : {
|
||||
pageSize : 10,
|
||||
pageNo : 1,
|
||||
description:''
|
||||
},
|
||||
tableSize : 50,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
load : function() {
|
||||
var that = this;
|
||||
okUtils.ajaxCloud({
|
||||
url:"/car/parkManage/list",
|
||||
param : that.entity,
|
||||
success : function(result) {
|
||||
that.tableData = result.msg.pageData;
|
||||
that.tableSize = result.msg.totalCount;
|
||||
}
|
||||
});
|
||||
},
|
||||
reload : function(){
|
||||
vm.entity.pageSize = 10;
|
||||
vm.entity.pageNo = 1;
|
||||
vm.entity.description = '';
|
||||
this.load();
|
||||
},
|
||||
changePage : function(pageNo) {
|
||||
vm.entity.pageNo = pageNo;
|
||||
vm.load();
|
||||
},
|
||||
changePageSize : function(pageSize) {
|
||||
vm.entity.pageSize = pageSize;
|
||||
vm.load();
|
||||
},
|
||||
edit : function(entity) {
|
||||
okUtils.dialogOpen({
|
||||
title: '修改',
|
||||
url: "car/parkManage/form.html",
|
||||
scroll : true,
|
||||
width: '40%',
|
||||
height: '90%',
|
||||
success : function(dialog) {
|
||||
dialog.vm.entity.id = entity.id;
|
||||
dialog.vm.load();
|
||||
},
|
||||
yes : function(dialog) {
|
||||
dialog.vm.acceptClick(vm);
|
||||
}
|
||||
});
|
||||
},
|
||||
add:function(){
|
||||
okUtils.dialogOpen({
|
||||
title: '新增',
|
||||
url: "car/parkManage/form.html",
|
||||
scroll : true,
|
||||
width: '40%',
|
||||
height: '90%',
|
||||
success : function(dialog) {
|
||||
dialog.vm.load();
|
||||
},
|
||||
yes : function(dialog) {
|
||||
dialog.vm.acceptClick(vm);
|
||||
}
|
||||
});
|
||||
},
|
||||
remove:function(entity) {
|
||||
okLayer.confirm("确定要删除吗?", function () {
|
||||
okUtils.ajaxCloud({
|
||||
url:"/car/parkManage/delete",
|
||||
param : {id: entity.id},
|
||||
success : function(result) {
|
||||
okLayer.msg.greenTick(result.msg);
|
||||
vm.load();
|
||||
}
|
||||
});
|
||||
})
|
||||
},
|
||||
payConfig:function(entity){
|
||||
okUtils.dialogOpen({
|
||||
title: '支付配置',
|
||||
url: "car/parkManage/payConfig.html",
|
||||
scroll : true,
|
||||
width: '40%',
|
||||
height: '50%',
|
||||
success : function(dialog) {
|
||||
dialog.vm.entity.carParkId = entity.id;
|
||||
dialog.vm.load();
|
||||
},
|
||||
yes : function(dialog) {
|
||||
dialog.vm.acceptClick(vm);
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
created: function() {
|
||||
this.load()
|
||||
}
|
||||
})
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,71 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<link rel="stylesheet" th:href="@{/lib/ztree/css/metroStyle/metroStyle.css}">
|
||||
</head>
|
||||
<body>
|
||||
<div class="ok-body" id="app" v-cloak>
|
||||
<div id="treePanel" style="overflow: auto;">
|
||||
<ul id="orgTree" class="ztree"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div th:replace="common/foot :: foot(jquery、tree)"></div>
|
||||
<script th:inline="none">
|
||||
var setting = {
|
||||
data : {
|
||||
simpleData : {
|
||||
enable : true,
|
||||
idKey : "orgId",
|
||||
pIdKey : "parentId",
|
||||
rootPId : "0"
|
||||
},
|
||||
key : {
|
||||
url : "nourl"
|
||||
}
|
||||
},
|
||||
callback : {
|
||||
onClick : function(event, treeId, treeNode) {
|
||||
vm.parentId = treeNode.orgId;
|
||||
vm.parentName = treeNode.name;
|
||||
}
|
||||
}
|
||||
};
|
||||
var vm = new Vue({
|
||||
el: '#app',
|
||||
data:{
|
||||
okUtils:null,
|
||||
okLayer:null,
|
||||
orgId:null,
|
||||
parentName:null
|
||||
},
|
||||
methods: {
|
||||
tree : function() {
|
||||
vm.okUtils.ajaxCloud({
|
||||
url:"/sys/org/select",
|
||||
param : {parentId: vm.parentId},
|
||||
close:false,
|
||||
success : function(result) {
|
||||
$.fn.zTree.init($("#orgTree"), setting, result.msg);
|
||||
}
|
||||
});
|
||||
},
|
||||
acceptClick : function(dialog){
|
||||
dialog.user.orgId = vm.parentId;
|
||||
dialog.user.orgName = vm.parentName;
|
||||
vm.okUtils.dialogClose();
|
||||
}
|
||||
},
|
||||
created: function() {
|
||||
var that = this;
|
||||
layui.use(["okUtils", "okLayer"], function () {
|
||||
that.okUtils = layui.okUtils;
|
||||
that.okLayer = layui.okLayer;
|
||||
that.tree();
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,82 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="common/head :: head(links)"/>
|
||||
<body>
|
||||
<div class="ok-body" id="app" v-cloak>
|
||||
<template>
|
||||
<i-form label-colon ref="checkForm" :model="entity" :rules="ruleValidate" :label-width="140">
|
||||
<form-item prop="mchId" label="支付申请">
|
||||
https://dwz.cn/mPQmSPss
|
||||
</form-item>
|
||||
|
||||
<form-item prop="mchId" label="商户号">
|
||||
<i-input maxlength="20" v-model="entity.mchId" placeholder="请输入商户号"></i-input>
|
||||
</form-item>
|
||||
|
||||
<form-item prop="secretKey" label="秘钥">
|
||||
<i-input v-model="entity.secretKey" placeholder="请输秘钥"></i-input>
|
||||
</form-item>
|
||||
</i-form>
|
||||
</template>
|
||||
</div>
|
||||
<div th:replace="common/foot :: foot(script)"></div>
|
||||
<script th:inline="none">
|
||||
var vm = new Vue({
|
||||
el: '#app',
|
||||
data:{
|
||||
entity:{
|
||||
|
||||
},
|
||||
ruleValidate : {
|
||||
mchId: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
||||
],
|
||||
secretKey: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur'}
|
||||
],
|
||||
},
|
||||
okUtils:null,
|
||||
okLayer:null
|
||||
},
|
||||
methods: {
|
||||
load : function(){
|
||||
layui.use(["okUtils", "okLayer"], function () {
|
||||
vm.okUtils = layui.okUtils;
|
||||
vm.okLayer = layui.okLayer;
|
||||
if(vm.entity.carParkId!=undefined){
|
||||
vm.okUtils.ajaxCloud({
|
||||
url:"/pay/config/getByCarParkId",
|
||||
param : {carParkId:vm.entity.carParkId},
|
||||
close : false,
|
||||
success : function(result) {
|
||||
if(result.msg!=null){
|
||||
vm.entity = result.msg;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
acceptClick : function(dialog){
|
||||
vm.$refs.checkForm.validate(function(valid){
|
||||
if (valid) {
|
||||
vm.okUtils.ajaxCloud({
|
||||
url:"/pay/config/save",
|
||||
param : vm.entity,
|
||||
json:true,
|
||||
success : function(result) {
|
||||
vm.okLayer.msg.greenTick(result.msg)
|
||||
dialog.load();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
created: function() {
|
||||
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,196 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="common/head :: head(link)"/>
|
||||
<body>
|
||||
<div id="app" class="ok-body" v-cloak>
|
||||
<!--模糊搜索区域-->
|
||||
<template>
|
||||
<div style="margin-bottom: 8px;margin-top: 8px;">
|
||||
<i-input placeholder="输入内容" v-model="entity.description" style="width: 150px"></i-input>
|
||||
<i-select @on-change="listParkManage" placeholder="请选择合作单位" v-model="entity.orgId" style="width:150px">
|
||||
<i-option v-for="item in orgList" :value="item.orgId" :key="item.orgId">{{ item.name }}</i-option>
|
||||
</i-select>
|
||||
<i-select placeholder="请选择停车场" v-model="entity.parkManageId" style="width:150px">
|
||||
<i-option v-for="item in parkManageList" :value="item.id" :key="item.id">{{ item.name }}</i-option>
|
||||
</i-select>
|
||||
<Date-Picker type="datetimerange" format="yyyy-MM-dd HH:mm" placeholder="请选择进场时间" style="width: 280px"></Date-Picker>
|
||||
<Date-Picker type="datetimerange" format="yyyy-MM-dd HH:mm" placeholder="请选择出场时间" style="width: 280px"></Date-Picker>
|
||||
<i-button type="primary" icon="ios-search" @click="load()">搜索</i-button>
|
||||
<i-button type="primary" icon="ios-redo" @click="reload()" >重置</i-button>
|
||||
</div>
|
||||
</template>
|
||||
<template>
|
||||
<i-table size="small" :columns="tableTitle" :data="tableData">
|
||||
<template slot-scope="tableScope" slot="action">
|
||||
<i-button type="primary" size="small" icon="md-create" ghost class="table-btn" @click="edit(tableScope.row)">修改</i-button>
|
||||
<i-button type="primary" size="small" icon="md-trash" ghost class="table-btn" @click="remove(tableScope.row)">删除</i-button>
|
||||
</template>
|
||||
</i-table>
|
||||
<br>
|
||||
<Page style="float: right;" :current="entity.pageNo" :total="tableSize" :page-size="entity.pageSize" @on-change="changePage" @on-page-size-change="changePageSize" show-elevator show-sizer show-total></Page>
|
||||
</template>
|
||||
</div>
|
||||
<div th:replace="common/foot :: foot(script)"></div>
|
||||
<script th:inline="none">
|
||||
layui.use(["okUtils", "okLayer"], function () {
|
||||
var okUtils = layui.okUtils;
|
||||
var okLayer = layui.okLayer;
|
||||
var vm = new Vue({
|
||||
el: '#app',
|
||||
data: function(){
|
||||
var that = this;
|
||||
return {
|
||||
tableTitle : [{
|
||||
title: '序号',
|
||||
width : 80,
|
||||
render: function(h, params) {
|
||||
return h('span', params.index + (that.entity.pageNo- 1) * that.entity.pageSize + 1);
|
||||
}
|
||||
},{
|
||||
key : "parkManageName",
|
||||
title : "停车场",
|
||||
minWidth:200
|
||||
},{
|
||||
key : "plateNumber",
|
||||
title : "车牌号",
|
||||
minWidth:150
|
||||
},{
|
||||
key : "type",
|
||||
title : "类型",
|
||||
minWidth : 120,
|
||||
render: function(h, params) {
|
||||
var name = "临时车";
|
||||
if(params.row.type==0){
|
||||
name = '包月车';
|
||||
}else if(params.row.type==1){
|
||||
name = 'VIP免费车';
|
||||
}else if(params.row.type==2){
|
||||
name = "临时车"
|
||||
}
|
||||
return h('span', name);
|
||||
}
|
||||
},{
|
||||
key : "gmtInto",
|
||||
title : "入场时间",
|
||||
minWidth:200
|
||||
},{
|
||||
key : "gmtOut",
|
||||
title : "出场时间",
|
||||
minWidth:200
|
||||
},{
|
||||
key : "cost",
|
||||
title : "收费金额(元)",
|
||||
minWidth:200
|
||||
} ],
|
||||
tableData : [],
|
||||
entity : {
|
||||
pageSize : 10,
|
||||
pageNo : 1,
|
||||
description:'',
|
||||
orgId:null
|
||||
},
|
||||
tableSize : 50,
|
||||
orgList:[],
|
||||
parkManageList:[]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
load : function() {
|
||||
var that = this;
|
||||
okUtils.ajaxCloud({
|
||||
url:"/car/parkingRecord/list",
|
||||
param : that.entity,
|
||||
success : function(result) {
|
||||
that.tableData = result.msg.pageData;
|
||||
that.tableSize = result.msg.totalCount;
|
||||
}
|
||||
});
|
||||
},
|
||||
listOrg : function() {
|
||||
var that = this;
|
||||
okUtils.ajaxCloud({
|
||||
url:"/sys/org/select",
|
||||
success : function(result) {
|
||||
that.orgList = result.msg;
|
||||
}
|
||||
});
|
||||
},
|
||||
listParkManage : function() {
|
||||
var that = this;
|
||||
okUtils.ajaxCloud({
|
||||
url:"/car/parkManage/select",
|
||||
param : {'orgId':vm.entity.orgId},
|
||||
success : function(result) {
|
||||
that.parkManageList = result.msg;
|
||||
}
|
||||
});
|
||||
},
|
||||
reload : function(){
|
||||
vm.entity.pageSize = 10;
|
||||
vm.entity.pageNo = 1;
|
||||
vm.entity.description = '';
|
||||
vm.entity.orgId = null;
|
||||
vm.entity.parkManageId = null;
|
||||
this.load();
|
||||
},
|
||||
changePage : function(pageNo) {
|
||||
vm.entity.pageNo = pageNo;
|
||||
vm.load();
|
||||
},
|
||||
changePageSize : function(pageSize) {
|
||||
vm.entity.pageSize = pageSize;
|
||||
vm.load();
|
||||
},
|
||||
edit : function(entity) {
|
||||
okUtils.dialogOpen({
|
||||
title: '修改',
|
||||
url: "car/carManage/form.html",
|
||||
scroll : true,
|
||||
width: '50%',
|
||||
height: '95%',
|
||||
success : function(dialog) {
|
||||
dialog.vm.entity.id = entity.id;
|
||||
dialog.vm.load();
|
||||
},
|
||||
yes : function(dialog) {
|
||||
dialog.vm.acceptClick(vm);
|
||||
}
|
||||
});
|
||||
},
|
||||
add:function(){
|
||||
okUtils.dialogOpen({
|
||||
title: '新增',
|
||||
url: "car/carManage/form.html",
|
||||
scroll : true,
|
||||
width: '50%',
|
||||
height: '95%',
|
||||
success : function(dialog) {
|
||||
dialog.vm.load();
|
||||
},
|
||||
yes : function(dialog) {
|
||||
dialog.vm.acceptClick(vm);
|
||||
}
|
||||
});
|
||||
},
|
||||
remove:function(entity) {
|
||||
okLayer.confirm("确定要删除吗?", function () {
|
||||
okUtils.ajaxCloud({
|
||||
url:"/car/manage/delete",
|
||||
param : {id: entity.id},
|
||||
success : function(result) {
|
||||
okLayer.msg.greenTick(result.msg);
|
||||
vm.load();
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
},
|
||||
created: function() {
|
||||
this.load()
|
||||
this.listOrg();
|
||||
}
|
||||
})
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in new issue