69 files modified
3 files added
| | |
| | | </properties> |
| | | </profile> |
| | | <profile> |
| | | <id>mdPrd</id> |
| | | <id>mdprd</id> |
| | | <properties> |
| | | <env>mdPrd</env> |
| | | <env>mdprd</env> |
| | | </properties> |
| | | </profile> |
| | | <profile> |
| | |
| | | |
| | | <exclude>config/dev/*</exclude> |
| | | <exclude>config/prd/*</exclude> |
| | | <exclude>config/mdPrd/*</exclude> |
| | | <exclude>config/mdprd/*</exclude> |
| | | <exclude>config/test/*</exclude> |
| | | <exclude>config/xcx/*</exclude> |
| | | <exclude>config/xcshop/*</exclude> |
| | | |
| | | <!-- |
| | | <!-- --> |
| | | <exclude>config/config.json</exclude> |
| | | <exclude>config/application.properties</exclude> |
| | | <exclude>config/system.properties</exclude> |
| | | --> |
| | | |
| | | |
| | | <exclude>**/*.woff</exclude> |
| | | <exclude>**/*.woff2</exclude> |
| | |
| | | <include>**/*.woff2</include> |
| | | <include>**/*.ttf</include> |
| | | <include>**/*.xls</include> |
| | | <include>**/*.xml</include> |
| | | </includes> |
| | | </resource> |
| | | <resource> |
| | |
| | | </repository> |
| | | |
| | | |
| | | <repository> |
| | | <id>repository.jboss.org-public</id> |
| | | <name>JBoss.org Maven repository</name> |
| | | <url>https://repository.jboss.org/nexus/content/groups/public</url> |
| | | </repository> |
| | | |
| | | |
| | | |
| | | </repositories> |
| | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | |
| | | |
| | | @ApiModelProperty(value = "套餐来源,转让,购买") |
| | | private String source; |
| | | |
| | | @ApiModelProperty(value = "划扣金额") |
| | | private BigDecimal price; |
| | | |
| | | @ApiModelProperty(value = "时长") |
| | | private Integer timeLength; |
| | |
| | | public void setBalance(Double balance) { |
| | | this.balance = balance; |
| | | } |
| | | |
| | | public BigDecimal getPrice() { |
| | | return price; |
| | | } |
| | | |
| | | public void setPrice(BigDecimal price) { |
| | | this.price = price; |
| | | } |
| | | } |
| | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | |
| | | |
| | | @ApiModelProperty(value = "若套餐为任选套餐 则判断是否无限次 Y是 N否") |
| | | private String isInfinite; |
| | | |
| | | @ApiModelProperty(value = "来源") |
| | | private String source; |
| | | |
| | | @ApiModelProperty(value = "套餐内产品") |
| | | List<ServiceProjVo> proj; |
| | |
| | | public void setStatus(String status) { |
| | | this.status = status; |
| | | } |
| | | |
| | | public String getSource() { |
| | | return source; |
| | | } |
| | | |
| | | public void setSource(String source) { |
| | | this.source = source; |
| | | } |
| | | } |
| | |
| | | |
| | | public SysCompany selectForUpdate(Long comId); |
| | | |
| | | List<SysCompany> selectAll(); |
| | | } |
| | |
| | | |
| | | public SysRolePwoerFn selectForUpdate(Long rpfId); |
| | | |
| | | int deleteByFns(@Param("companyId") Long comId, @Param("list") List<String> deletedFn); |
| | | } |
| | |
| | | package com.matrix.system.common.service.impl;
|
| | |
|
| | | import cn.hutool.crypto.SecureUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.matrix.core.constance.MatrixConstance;
|
| | | import com.matrix.core.constance.SystemErrorCode;
|
| | | import com.matrix.core.exception.GlobleException;
|
| | | import com.matrix.core.pojo.PaginationVO;
|
| | | import com.matrix.core.tools.LogUtil; |
| | | import com.matrix.core.tools.ModelUtils;
|
| | | import com.matrix.core.tools.StringUtils;
|
| | | import com.matrix.core.tools.WebUtil;
|
| | | import com.matrix.system.common.bean.*;
|
| | | import com.matrix.system.app.authority.AppAuthorityManager; |
| | | import com.matrix.system.common.authority.DefaultAuthorityManager; |
| | | import com.matrix.system.common.bean.SysCompany; |
| | | import com.matrix.system.common.bean.SysRole; |
| | | import com.matrix.system.common.bean.SysRolePwoerFn; |
| | | import com.matrix.system.common.bean.SysUsers; |
| | | import com.matrix.system.common.constance.AppConstance; |
| | | import com.matrix.system.common.dao.SysCompanyDao;
|
| | | import com.matrix.system.common.dao.SysRoleDao;
|
| | | import com.matrix.system.common.dao.SysRolePwoerFnDao;
|
| | | import com.matrix.system.common.init.LocalCache; |
| | | import com.matrix.system.common.service.SysCompanyService;
|
| | | import com.matrix.system.common.service.SysUsersService; |
| | | import com.matrix.system.hive.bean.SysShopInfo;
|
| | | import com.matrix.system.hive.bean.Warehouse;
|
| | | import com.matrix.system.hive.dao.SysShopInfoDao;
|
| | | import com.matrix.system.hive.dao.WarehouseDao;
|
| | | import com.matrix.system.hive.plugin.util.CollectionUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired;
|
| | | import org.springframework.stereotype.Service;
|
| | | import org.springframework.transaction.annotation.Transactional;
|
| | |
|
| | | import java.util.ArrayList;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | |
|
| | | /**
|
| | | * 公司管理
|
| | |
| | |
|
| | | @Autowired
|
| | | private WarehouseDao warehouseDao;
|
| | | |
| | | /**
|
| | | * 为新公司创建一个总部
|
| | | * |
| | | * @param sysCompany
|
| | | */
|
| | | private SysShopInfo addZbShop(SysCompany sysCompany) {
|
| | |
| | | /**
|
| | | * 更新公司员工权限
|
| | | *
|
| | | * @param newSysCompany |
| | | * @author JIANGYOUYAO
|
| | | * @email 935090232@qq.com
|
| | | * @date 2017年12月5日
|
| | | * @param newSysCompany
|
| | | */
|
| | | private void updatePower(SysCompany newSysCompany) {
|
| | | List<String> oldFunctions = null;
|
| | |
| | | newFunctions = StringUtils.strToCollToString(newSysCompany.getComFunctions(), ",");
|
| | | }
|
| | |
|
| | | for (String old : oldFunctions) {
|
| | | Collections.sort(newFunctions); |
| | | Collections.sort(oldFunctions); |
| | | if (Objects.equals(JSONUtil.toJsonStr(newFunctions), JSONUtil.toJsonStr(oldFunctions))) { |
| | | //没有更新的权限 |
| | | return; |
| | | } |
| | | |
| | | List<String> finalNewFunctions = newFunctions; |
| | | List<String> deletedFn = oldFunctions.stream().map(old -> { |
| | | if (finalNewFunctions.stream().noneMatch(newFn -> Objects.equals(newFn, old))) { |
| | | return old; |
| | | } else { |
| | | return ""; |
| | | } |
| | | }).filter(item->StringUtils.isNotBlank(item)).collect(Collectors.toList()); |
| | | |
| | | if(CollectionUtils.isNotEmpty(deletedFn)){ |
| | | rolePwoerFnDao.deleteByFns(newSysCompany.getComId(),deletedFn); |
| | | //有更新权限清空缓存 |
| | | SysUsers sysUsers = new SysUsers(); |
| | | sysUsers.setCompanyId(newSysCompany.getComId()); |
| | | sysUsers.setSuValid(AppConstance.RECORD_VALID); |
| | | List<SysUsers> users = sysUsersService.findByModel(sysUsers); |
| | | users.forEach(user -> { |
| | | String userKey = SecureUtil.md5(user.getSuId() + ""); |
| | | LocalCache.remove(DefaultAuthorityManager.USER_POWER_REDISKEY_PC + userKey); |
| | | LocalCache.remove(AppAuthorityManager.USER_POWER_REDISKEY_APP + userKey); |
| | | }); |
| | | } |
| | | |
| | | |
| | | |
| | | /* for (String old : oldFunctions) { |
| | | // 如果新权限中不包含这个老的功能,则要更新改企业下所有的角色权限
|
| | | if (!newFunctions.contains(old)) {
|
| | | SysRole role = new SysRole();
|
| | |
| | | rolePwoerFnDao.deleteByIds(delRolePwoer);
|
| | | }
|
| | | }
|
| | | }*/ |
| | | |
| | | |
| | | |
| | | }
|
| | | }
|
| | | |
| | | @Autowired |
| | | SysUsersService sysUsersService; |
| | |
|
| | | @Override
|
| | | public int modifyByModel(SysCompany sysCompany) {
|
| | |
| | | return sysCompanyDao.selectById(Long.parseLong(comId));
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | } |
| | |
| | | |
| | | // 服务器文件上传配置 |
| | | String SAVE_PATH = "/mnt/hive/static/uploadeFile/"; |
| | | String SAVE_URL = "http://resource.hive.jyymatrix.cc/uploadeFile/"; |
| | | String SAVE_URL = "http://filehive2.jyymatrix.cc/uploadeFile/"; |
| | | |
| | | |
| | | // 积分规则编号 |
| | |
| | | @RequestMapping(value = "/showCardFlowList") |
| | | public @ResponseBody |
| | | AjaxResult showCardFlowList(MoneyCardUseFlow moneyCardUseFlow, PaginationVO pageVo) { |
| | | MoneyCardUse vipCard = cardUseService.findByVipId(moneyCardUseFlow.getVipId()); |
| | | if (vipCard != null) { |
| | | moneyCardUseFlowDao.updateVipCardId(moneyCardUseFlow.getVipId(), vipCard.getId()); |
| | | } |
| | | List<MoneyCardUseFlow> dataList = moneyCardUseFlowDao.selectInPage(moneyCardUseFlow, pageVo); |
| | | return AjaxResult.buildSuccessInstance(dataList, moneyCardUseFlowDao.selectTotalRecord(moneyCardUseFlow)); |
| | | } |
| | |
| | | public @ResponseBody |
| | | ModelAndView printOrder(SysOrder order) throws GlobleException { |
| | | ModelAndView mv = new ModelAndView("admin/hive/beautySalon/print-order"); |
| | | SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); |
| | | SysUsers user = getMe(); |
| | | String comRegisterCode = companyDao.selectById(user.getCompanyId()).getComRegisterCode(); |
| | | if (StringUtils.isNotBlank(comRegisterCode)) { |
| | | mv.addObject("page", comRegisterCode); |
| | |
| | | package com.matrix.system.hive.action; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.matrix.core.anotations.RemoveRequestToken; |
| | |
| | | import com.matrix.system.constance.Dictionary; |
| | | import com.matrix.system.hive.bean.*; |
| | | import com.matrix.system.hive.dao.*; |
| | | import com.matrix.system.hive.dto.ServiceOrderTimeDto; |
| | | import com.matrix.system.hive.service.*; |
| | | import com.matrix.system.hive.vo.ServiceOrderInfoVo; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.commons.collections.CollectionUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.ModelMap; |
| | | import org.springframework.validation.annotation.Validated; |
| | | 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.ResponseBody; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.servlet.ModelAndView; |
| | | |
| | | import javax.annotation.Resource; |
| | |
| | | List<SysBeauticianState> beauticianStateList = beauticianStateDao.selectBySerIds(id); |
| | | if (CollUtil.isNotEmpty(beauticianStateList)) { |
| | | for (SysBeauticianState sysBeauticianState : beauticianStateList) { |
| | | SysProjUse item = sysBeauticianState.getProjUse(); |
| | | |
| | | // 若项目/套餐无效,则打印时,不显示余次 |
| | | if (!"无效".equals(item.getStatus())) { |
| | | item.setRemainCount(item.getSurplusCount()); |
| | | } else { |
| | | item.setRemainCount(null); |
| | | } |
| | | |
| | | if (sysBeauticianState.getProjUse().getTaocanId() != null) { |
| | | SysProjUse sysProjUse = projUseService.findById(sysBeauticianState.getProjUse().getTaocanId()); |
| | | if (!"无效".equals(sysProjUse.getStatus())) { |
| | | item.setRemainCount(sysProjUse.getSurplusCount()); |
| | | } else { |
| | | item.setRemainCount(null); |
| | | } |
| | | |
| | | sysBeauticianState.getProjInfo().setName(sysProjUse.getProjName()+"--"+sysBeauticianState.getProjInfo().getName()); |
| | | if ("Y".equals(sysProjUse.getIsCourse()) && "Y".equals(sysProjUse.getIsInfinite())) { |
| | | int count = projUseService.findTaocanCountForCourseAndInfinite(sysBeauticianState.getProjUse().getTaocanId(), projServices.getVipId()); |
| | | item.setRemainCount(count); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | result.setStatus(AjaxResult.STATUS_SUCCESS); |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 根据id查询服务单简单信息 |
| | | */ |
| | | @RequestMapping(value = "/findServiceOrderInfoVo/{id}") |
| | | public @ResponseBody |
| | | AjaxResult findServiceOrderInfoVo(@PathVariable Long id) { |
| | | // 获取服务单信息 |
| | | SysProjServices projServices = sysProjServicesService.findById(id); |
| | | |
| | | ServiceOrderInfoVo serviceOrderInfoVo= BeanUtil.copyProperties(projServices,ServiceOrderInfoVo.class); |
| | | |
| | | return AjaxResult.buildSuccessInstance(serviceOrderInfoVo); |
| | | } |
| | | |
| | | |
| | |
| | | */ |
| | | @RequestMapping(value = "/updateOrderTime") |
| | | public @ResponseBody |
| | | AjaxResult updateOrderTime(SysProjServices serviceQuery) { |
| | | SysProjServices services = sysProjServicesDao.selectById(serviceQuery.getId()); |
| | | sysProjServicesDao.updateOrderTime(serviceQuery.getConsumeTime(), serviceQuery.getId()); |
| | | AjaxResult updateOrderTime(@RequestBody ServiceOrderTimeDto serviceOrderTimeDto) { |
| | | sysProjServicesDao.updateOrderTime(serviceOrderTimeDto); |
| | | // 更新业绩时间 |
| | | AchieveNew achieveNew = new AchieveNew(); |
| | | achieveNew.setServiceOrderId(serviceQuery.getId()); |
| | | achieveNew.setDatatime(serviceQuery.getConsumeTime()); |
| | | achieveNew.setServiceOrderId(serviceOrderTimeDto.getId()); |
| | | achieveNew.setDatatime(serviceOrderTimeDto.getConsumeTime()); |
| | | achieveNewService.modifyAchieveTime(achieveNew); |
| | | return new AjaxResult(AjaxResult.STATUS_SUCCESS, "修改成功"); |
| | | } |
| | |
| | | |
| | | } |
| | | |
| | | @RequestMapping(value = "/showAllList") |
| | | @ResponseBody |
| | | public AjaxResult showAllList(ShoppingGoods shoppingGoods, PaginationVO pageVo) { |
| | | QueryUtil.setQueryLimit(shoppingGoods); |
| | | if(StringUtils.isBlank(pageVo.getSort())){ |
| | | pageVo.setOrder("desc"); |
| | | pageVo.setSort("createTime"); |
| | | } |
| | | |
| | | //2表示查询总部产品 |
| | | if (shoppingGoods.getHeadquarters()!=null && 2==shoppingGoods.getHeadquarters()) { |
| | | //仅查询本店产品 |
| | | SysShopInfo zbShop = shopInfoDao.selectZbShop(getMe().getCompanyId()); |
| | | //如果是总部自己查询自己的库存则不需加入这个调价 |
| | | if (getMe().getShopId().equals(zbShop.getId())){ |
| | | shoppingGoods.setHeadquarters(1); |
| | | } |
| | | } |
| | | shoppingGoods.setIsDel(ShoppingGoods.NORMAL); |
| | | List<ShoppingGoods> dataList = shoppingGoodsService.findInPage(shoppingGoods, pageVo); |
| | | AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList, shoppingGoodsService.findTotal(shoppingGoods)); |
| | | return result; |
| | | } |
| | | |
| | | @RequestMapping(value = "/showListShopId") |
| | | @ResponseBody |
| | | public AjaxResult showListShopId(ShoppingGoods shoppingGoods, PaginationVO pageVo) { |
| | |
| | | String title = "商品资料"; |
| | | orderSheet.setSheetName(title); |
| | | orderSheet.setTitle(title); |
| | | String[] header = {"商品名称", "商品编号", "售价/(本金)", "参考价/(赠送金额)", "真实销量", "状态", "是否赠送", "类型", "分类", "是否固定套餐", "产品归属"}; |
| | | String[] header = {"商品名称", "商品编号", "售价/(本金)", "参考价/(赠送金额)", "真实销量", "状态", "是否赠送", "类型", "分类", "是否固定套餐", "产品归属","时长"}; |
| | | orderSheet.setHeaders(header); |
| | | List<ShoppingGoods> dataList = shoppingGoodsService.findAll(shoppingGoods); |
| | | List<List<Object>> list = new ArrayList<>(); |
| | |
| | | temp.add(item.getCateName()); |
| | | temp.add(item.getIsCourse()); |
| | | temp.add(item.getHeadquarters() == 1 ? "总部产品" : "本店产品"); |
| | | temp.add(item.getTimeLength()); |
| | | list.add(temp); |
| | | } |
| | | } |
| | |
| | | package com.matrix.system.hive.bean; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.matrix.core.anotations.Extend; |
| | | import com.matrix.core.tools.DateUtil; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | |
| | | * @author wzy |
| | | * @date 2021-01-07 |
| | | **/ |
| | | @Data |
| | | public class SysOrderFlow implements Serializable { |
| | | private static final long serialVersionUID = 7519131902836023680L; |
| | | |
| | |
| | | private Long vipId; |
| | | |
| | | private Long cardId; |
| | | /** |
| | | * 扩展字段-支付卡名称 |
| | | */ |
| | | @Extend |
| | | private String cardName; |
| | | |
| | | private String isGift; |
| | | |
| | |
| | | |
| | | private Long companyId; |
| | | |
| | | public String getOrderNo() { |
| | | return orderNo; |
| | | } |
| | | |
| | | public void setOrderNo(String orderNo) { |
| | | this.orderNo = orderNo; |
| | | } |
| | | |
| | | public Long getCardId() { |
| | | return cardId; |
| | | } |
| | | |
| | | public void setCardId(Long cardId) { |
| | | this.cardId = cardId; |
| | | } |
| | | |
| | | public String getIsGift() { |
| | | return isGift; |
| | | } |
| | | |
| | | public void setIsGift(String isGift) { |
| | | this.isGift = isGift; |
| | | } |
| | | |
| | | public String getCreateBy() { |
| | | return createBy; |
| | | } |
| | | |
| | | public void setCreateBy(String createBy) { |
| | | this.createBy = createBy; |
| | | } |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getUpdateBy() { |
| | | return updateBy; |
| | | } |
| | | |
| | | public void setUpdateBy(String updateBy) { |
| | | this.updateBy = updateBy; |
| | | } |
| | | |
| | | public Date getUpdateTime() { |
| | | return updateTime; |
| | | } |
| | | |
| | | public void setUpdateTime(Date updateTime) { |
| | | this.updateTime = updateTime; |
| | | } |
| | | |
| | | public Long getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Long id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public String getFlowNo() { |
| | | return flowNo; |
| | | } |
| | | |
| | | public void setFlowNo(String flowNo) { |
| | | this.flowNo = flowNo; |
| | | } |
| | | |
| | | public Long getOrderId() { |
| | | return orderId; |
| | | } |
| | | |
| | | public void setOrderId(Long orderId) { |
| | | this.orderId = orderId; |
| | | } |
| | | |
| | | public String getFlowContent() { |
| | | return flowContent; |
| | | } |
| | | |
| | | public void setFlowContent(String flowContent) { |
| | | this.flowContent = flowContent; |
| | | } |
| | | |
| | | public String getFlowType() { |
| | | return flowType; |
| | | } |
| | | |
| | | public void setFlowType(String flowType) { |
| | | this.flowType = flowType; |
| | | } |
| | | |
| | | public BigDecimal getAmount() { |
| | | return amount; |
| | | } |
| | | |
| | | public void setAmount(BigDecimal amount) { |
| | | this.amount = amount; |
| | | } |
| | | |
| | | public String getPayMethod() { |
| | | return payMethod; |
| | | } |
| | | |
| | | public void setPayMethod(String payMethod) { |
| | | this.payMethod = payMethod; |
| | | } |
| | | |
| | | public Long getVipId() { |
| | | return vipId; |
| | | } |
| | | |
| | | public void setVipId(Long vipId) { |
| | | this.vipId = vipId; |
| | | } |
| | | |
| | | public Long getShopId() { |
| | | return shopId; |
| | | } |
| | | |
| | | public void setShopId(Long shopId) { |
| | | this.shopId = shopId; |
| | | } |
| | | |
| | | public Long getCompanyId() { |
| | | return companyId; |
| | | } |
| | | |
| | | public void setCompanyId(Long companyId) { |
| | | this.companyId = companyId; |
| | | } |
| | | } |
| | |
| | | @Extend |
| | | private String updateRemark; |
| | | |
| | | /** |
| | | * 套餐/项目剩余次数 |
| | | */ |
| | | private Integer remainCount; |
| | | |
| | | public Integer getRemainCount() { |
| | | return remainCount; |
| | | } |
| | | |
| | | public void setRemainCount(Integer remainCount) { |
| | | this.remainCount = remainCount; |
| | | } |
| | | |
| | | public Long getOrderId() { |
| | | return orderId; |
| | |
| | | public int selectTotalRecord(@Param("record") MoneyCardUseFlow moneyCardUseFlow); |
| | | |
| | | public MoneyCardUseFlow selectById(Long id); |
| | | |
| | | int updateVipCardId(@Param("vipId") Long vipId, @Param("cardId") Long cardId); |
| | | |
| | | } |
| | |
| | | import com.matrix.system.app.dto.ServiceOrderListDto; |
| | | import com.matrix.system.app.vo.ServiceOrderListVo; |
| | | import com.matrix.system.hive.bean.SysProjServices; |
| | | import com.matrix.system.hive.dto.ServiceOrderTimeDto; |
| | | import com.matrix.system.shopXcx.api.dto.ErpServiceOrderListDto; |
| | | import com.matrix.system.shopXcx.api.vo.ErpServiceOrderListVo; |
| | | import org.apache.ibatis.annotations.Param; |
| | |
| | | |
| | | public SysProjServices selectById(Long id); |
| | | |
| | | public void updateOrderTime(@Param("consumeTime") Date createTime, @Param("id") Long id); |
| | | public void updateOrderTime(@Param("serviceOrderTimeDto") ServiceOrderTimeDto serviceOrderTimeDto); |
| | | |
| | | List<ServiceOrderListVo> selectApiServiceOrderListInPage(@Param("record") ServiceOrderListDto serviceOrderListDto, @Param("pageVo") PaginationVO pageVo); |
| | | |
| | |
| | | Integer selectProjUseFlowTotal(@Param("record") SysProjUseFlow projUseFlow); |
| | | |
| | | List<SysProjUse> selectTaoCanListWithProj(@Param("record") SysProjUse sysProjUse); |
| | | |
| | | int selectTaocanCountForCourseAndInfinite(@Param("taocanId") Long taocanId, @Param("vipId") Long vipId); |
| | | } |
New file |
| | |
| | | package com.matrix.system.hive.dto; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.matrix.core.tools.DateUtil; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | public class ServiceOrderTimeDto { |
| | | |
| | | /** |
| | | * 服务单id |
| | | */ |
| | | private Long id; |
| | | /** |
| | | * 预约时间 |
| | | */ |
| | | @DateTimeFormat(pattern = DateUtil.DATE_FORMAT_MM) |
| | | private Date yyTime; |
| | | |
| | | /** |
| | | * 订单创建时间 |
| | | */ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") |
| | | private Date createTime; |
| | | /** |
| | | * 订单划扣时间 |
| | | */ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") |
| | | private Date consumeTime; |
| | | |
| | | } |
| | |
| | | public List<SysProjUse> selectTaocanProjUse(Long id, String status); |
| | | |
| | | public List<SysProjUse> findTaocaoProjUseWithProj(SysProjUse sysProjUse); |
| | | |
| | | int findTaocanCountForCourseAndInfinite(Long taocanId, Long vipId); |
| | | } |
| | |
| | | moneyCardUseFlow.setCreateTime(new Date()); |
| | | moneyCardUseFlow.setOperationId(user.getSuId()); |
| | | moneyCardUseFlow.setBalance(cardUser.getGiftMoney() + cardUser.getRealMoney()); |
| | | moneyCardUseFlow.setCarUseId(cardUser.getId()); |
| | | moneyCardUseFlowDao.insert(moneyCardUseFlow); |
| | | |
| | | order.setFlows(czVo.getFlows()); |
| | |
| | | public List<SysProjUse> findTaocaoProjUseWithProj(SysProjUse sysProjUse) { |
| | | return sysProjUseDao.selectTaoCanListWithProj(sysProjUse); |
| | | } |
| | | |
| | | @Override |
| | | public int findTaocanCountForCourseAndInfinite(Long taocanId, Long vipId) { |
| | | return sysProjUseDao.selectTaocanCountForCourseAndInfinite(taocanId, vipId); |
| | | } |
| | | } |
| | |
| | | orderSheet.setSheetName("交易流水"); |
| | | orderSheet.setTitle("交易流水"); |
| | | String[] header = new String[]{"订单编号", "交易内容", "交易时间", "交易类型", "交易金额", "会员姓名", |
| | | "支付方式", "支付流水号", "操作人", "门店名称"}; |
| | | "支付方式","储值卡名称", "支付流水号", "操作人", "门店名称"}; |
| | | orderSheet.setHeaders(header); |
| | | List<List<Object>> body = new ArrayList<>(); |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); |
| | |
| | | bodyItem.add(flowVo.getAmount()); |
| | | bodyItem.add(flowVo.getVipName()); |
| | | bodyItem.add(flowVo.getPayMethod()); |
| | | bodyItem.add(flowVo.getCardName()); |
| | | bodyItem.add(flowVo.getFlowNo()); |
| | | bodyItem.add(flowVo.getStaffName()); |
| | | bodyItem.add(flowVo.getShopName()); |
| | |
| | | public void exportShowList(@RequestParam Map<String, Object> param, HttpServletResponse response) throws Exception { |
| | | SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); |
| | | String title = "产品销售明细统计"; |
| | | String[] header = {"门店", "销售日期", "订单号", "商品名称", "分类", "客户名", "购买数量", "单价", "健康顾问", "支付方式", "状态"}; |
| | | String[] column = {"SHOP_NAME", "pay_time", "ORDER_NO", "goodsName", "cateName", "VIP_NAME", "COUNT", "ZK_PRICE", "su_name", "pay_method", "status"}; |
| | | String[] header = {"门店", "销售日期", "订单号", "商品名称", "分类", "客户名", "购买数量", "单价","小计", "健康顾问", "支付方式", "状态"}; |
| | | String[] column = {"SHOP_NAME", "pay_time", "ORDER_NO", "goodsName", "cateName", "VIP_NAME", "COUNT", "ZK_PRICE", "total","su_name", "pay_method", "statu"}; |
| | | |
| | | if(!DataAuthUtil.hasAllShopAuth()){ |
| | | param.put("shopId", sysUsers.getShopId()); |
| | |
| | | public void exportShowList( @RequestParam Map<String , Object> param, HttpServletResponse response) throws Exception { |
| | | SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); |
| | | String title = "项目剩余次数明细"; |
| | | String[] header = {"客户名", "服务名称", "到期日期", "剩余次数", "单价", "项目类型", "套餐类型", "是否使用完成", "备注", "来源", "订单号"}; |
| | | String[] column = {"VIP_NAME", "PROJ_NAME", "FAIL_TIME", "SURPLUS_COUNT", "PRICE", "TYPE_NAME", "type", "IS_OVER", "remark", "SOURCE", "ORDER_NO"}; |
| | | String[] header = {"客户名", "客户所属门店", "服务名称", "到期日期", "剩余次数", "单价", "项目类型", "套餐类型", "是否使用完成", "备注", "来源", "订单号"}; |
| | | String[] column = {"VIP_NAME", "SHOP_NAME", "PROJ_NAME", "FAIL_TIME", "SURPLUS_COUNT", "PRICE", "TYPE_NAME", "type", "IS_OVER", "remark", "SOURCE", "ORDER_NO"}; |
| | | |
| | | if(!DataAuthUtil.hasAllShopAuth()){ |
| | | param.put("shopId", sysUsers.getShopId()); |
| | |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.matrix.core.tools.DateUtil; |
| | | import com.matrix.system.app.vo.OrderDetailItemVo; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author jyy |
| | | * @date 2021-01-27 |
| | | **/ |
| | | @Data |
| | | @ApiModel(value = "OrderFlowVo", description = "订单流水返回参数类") |
| | | public class OrderFlowVo { |
| | | |
| | |
| | | @ApiModelProperty(value = "门店名称") |
| | | private String shopName; |
| | | |
| | | @ApiModelProperty(value = "支付卡名称") |
| | | private String cardName; |
| | | |
| | | @JsonFormat(pattern = DateUtil.DATE_FORMAT_SS, timezone = "GMT+8") |
| | | @ApiModelProperty(value = "创建时间") |
| | | private Date createTime; |
| | | |
| | | public Long getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Long id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public String getOrderId() { |
| | | return orderId; |
| | | } |
| | | |
| | | public void setOrderId(String orderId) { |
| | | this.orderId = orderId; |
| | | } |
| | | |
| | | public String getOrderNo() { |
| | | return orderNo; |
| | | } |
| | | |
| | | public void setOrderNo(String orderNo) { |
| | | this.orderNo = orderNo; |
| | | } |
| | | |
| | | public String getFlowType() { |
| | | return flowType; |
| | | } |
| | | |
| | | public void setFlowType(String flowType) { |
| | | this.flowType = flowType; |
| | | } |
| | | |
| | | public String getPayMethod() { |
| | | return payMethod; |
| | | } |
| | | |
| | | public void setPayMethod(String payMethod) { |
| | | this.payMethod = payMethod; |
| | | } |
| | | |
| | | public String getVipName() { |
| | | return vipName; |
| | | } |
| | | |
| | | public void setVipName(String vipName) { |
| | | this.vipName = vipName; |
| | | } |
| | | |
| | | public String getFlowContent() { |
| | | return flowContent; |
| | | } |
| | | |
| | | public void setFlowContent(String flowContent) { |
| | | this.flowContent = flowContent; |
| | | } |
| | | |
| | | public BigDecimal getAmount() { |
| | | return amount; |
| | | } |
| | | |
| | | public void setAmount(BigDecimal amount) { |
| | | this.amount = amount; |
| | | } |
| | | |
| | | public String getStaffName() { |
| | | return staffName; |
| | | } |
| | | |
| | | public void setStaffName(String staffName) { |
| | | this.staffName = staffName; |
| | | } |
| | | |
| | | public String getFlowNo() { |
| | | return flowNo; |
| | | } |
| | | |
| | | public void setFlowNo(String flowNo) { |
| | | this.flowNo = flowNo; |
| | | } |
| | | |
| | | public String getShopName() { |
| | | return shopName; |
| | | } |
| | | |
| | | public void setShopName(String shopName) { |
| | | this.shopName = shopName; |
| | | } |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | } |
New file |
| | |
| | | package com.matrix.system.hive.vo; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.matrix.core.tools.DateUtil; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 简单服务单信息展示对象不含明细 |
| | | */ |
| | | @Data |
| | | public class ServiceOrderInfoVo { |
| | | |
| | | /** |
| | | * id |
| | | */ |
| | | private Long id; |
| | | |
| | | /** |
| | | * 编号 |
| | | */ |
| | | private String serviceNo; |
| | | |
| | | /** |
| | | * 服务单金额 |
| | | */ |
| | | private Double money; |
| | | /** |
| | | * 预约时间 |
| | | */ |
| | | @DateTimeFormat(pattern = DateUtil.DATE_FORMAT_MM) |
| | | private Date yyTime; |
| | | |
| | | /** |
| | | * 订单创建时间 |
| | | */ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") |
| | | private Date createTime; |
| | | /** |
| | | * 订单划扣时间 |
| | | */ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") |
| | | private Date consumeTime; |
| | | |
| | | /** |
| | | * 开始时间 |
| | | */ |
| | | @DateTimeFormat(pattern = DateUtil.DATE_FORMAT_MM) |
| | | private Date startTime; |
| | | /** |
| | | * 结束时间 |
| | | */ |
| | | @DateTimeFormat(pattern = DateUtil.DATE_FORMAT_MM) |
| | | private Date endTime; |
| | | /** |
| | | * 超时时间 |
| | | */ |
| | | private String isOverTime; |
| | | |
| | | /** |
| | | * 服务状态 0.待预约 1.预约失败,2预约成功待处理,3需配料,4配料中,5配料完成,6,服务中,7服务完成 |
| | | */ |
| | | private String state; |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | import com.matrix.core.exception.GlobleException; |
| | | import com.matrix.core.pojo.AjaxResult; |
| | | import com.matrix.core.pojo.PaginationVO; |
| | | import com.matrix.core.tools.DateUtil; |
| | | import com.matrix.core.tools.ModelUtils; |
| | | import com.matrix.core.tools.StringUtils; |
| | | import com.matrix.core.tools.WebUtil; |
| | | import com.matrix.core.tools.excl.ExcelSheetPO; |
| | | import com.matrix.core.tools.excl.ExcelUtil; |
| | | import com.matrix.core.tools.excl.ExcelVersion; |
| | | import com.matrix.system.common.bean.SysUsers; |
| | | import com.matrix.system.common.tools.ResponseHeadUtil; |
| | | import com.matrix.system.oa.bean.OaFixedAssets; |
| | | import com.matrix.system.oa.dao.OaFixedAssetsDao; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.ModelMap; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.servlet.ModelAndView; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.io.OutputStream; |
| | | import java.net.URLEncoder; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @description 固定资产 |
| | | * @author |
| | | * @description 固定资产 |
| | | * @date 2019-12-13 07:19 |
| | | */ |
| | | @Controller |
| | |
| | | * 列表显示 |
| | | */ |
| | | @RequestMapping(value = "/showList") |
| | | public @ResponseBody AjaxResult showList(OaFixedAssets oaFixedAssets, PaginationVO pageVo) { |
| | | public @ResponseBody |
| | | AjaxResult showList(OaFixedAssets oaFixedAssets, PaginationVO pageVo) { |
| | | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | oaFixedAssets.setCompanyId(user.getCompanyId()); |
| | | List<OaFixedAssets> dataList = oaFixedAssetsDao.selectInPage(oaFixedAssets, pageVo); |
| | |
| | | */ |
| | | @RemoveRequestToken |
| | | @RequestMapping(value = "/addOaFixedAssets") |
| | | public @ResponseBody AjaxResult addOaFixedAssets(OaFixedAssets oaFixedAssets) { |
| | | public @ResponseBody |
| | | AjaxResult addOaFixedAssets(OaFixedAssets oaFixedAssets) { |
| | | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | oaFixedAssets.setCreateBy(user.getSuName()); |
| | | oaFixedAssets.setUpdateBy(user.getSuName()); |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 修改 |
| | | */ |
| | | @RemoveRequestToken |
| | | @RequestMapping(value = "/modifyOaFixedAssets") |
| | | public @ResponseBody AjaxResult modifyOaFixedAssets(OaFixedAssets newOaFixedAssets) { |
| | | public @ResponseBody |
| | | AjaxResult modifyOaFixedAssets(OaFixedAssets newOaFixedAssets) { |
| | | OaFixedAssets oldOaFixedAssets = WebUtil.getSessionAttribute(BEV); |
| | | int i = 0; |
| | | Map<String, Object> modifyMap = null; |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 进入修改界面 |
| | | */ |
| | |
| | | * 删除 |
| | | */ |
| | | @RequestMapping(value = "/del") |
| | | public @ResponseBody AjaxResult del(String keys) { |
| | | public @ResponseBody |
| | | AjaxResult del(String keys) { |
| | | List<String> ids = StringUtils.strToCollToString(keys, ","); |
| | | int i = oaFixedAssetsDao.deleteByIds(ids); |
| | | if (i > 0) { |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 总部导出服务单导出,不限门店 |
| | | */ |
| | | @RequestMapping(value = "/exportExcel") |
| | | public void erpExportExcel(ModelMap model, HttpServletRequest request, HttpServletResponse response, OaFixedAssets oaFixedAssets) throws Exception { |
| | | |
| | | |
| | | doExportServiceOrder(response, oaFixedAssets); |
| | | } |
| | | |
| | | |
| | | private void doExportServiceOrder(HttpServletResponse response, OaFixedAssets oaFixedAssets) throws IOException { |
| | | |
| | | List<ExcelSheetPO> res = new ArrayList<>(); |
| | | ExcelSheetPO orderSheet = new ExcelSheetPO(); |
| | | String title = "固定资产明细"; |
| | | orderSheet.setSheetName(title); |
| | | orderSheet.setTitle(title); |
| | | String[] header = {"资产类型", "资产编号", "资产型号", "所在部门", "成本价", "数量", "往来单位", "使用人"}; |
| | | orderSheet.setHeaders(header); |
| | | |
| | | List<OaFixedAssets> dataList = oaFixedAssetsDao.selectByModel(oaFixedAssets); |
| | | List<List<Object>> list = new ArrayList<>(); |
| | | if (dataList.size() > 0) { |
| | | for (OaFixedAssets item : dataList) { |
| | | List<Object> temp = new ArrayList<>(); |
| | | temp.add(item.getAssetsType()); |
| | | temp.add(item.getName()); |
| | | temp.add(item.getNumber()); |
| | | temp.add(item.getModel()); |
| | | temp.add(item.getDepartment()); |
| | | temp.add(item.getPrice()); |
| | | temp.add(item.getCount()); |
| | | temp.add(item.getSupplier()); |
| | | temp.add(item.getUser()); |
| | | list.add(temp); |
| | | } |
| | | } |
| | | orderSheet.setDataList(list); |
| | | res.add(orderSheet); |
| | | response = ResponseHeadUtil.setExcelHead(response); |
| | | response.setHeader("Content-Disposition", |
| | | "attachment;filename=" + URLEncoder.encode(title + DateUtil.getTimeMark() + ".xlsx".trim(), "UTF-8")); |
| | | OutputStream os = response.getOutputStream(); |
| | | ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS); |
| | | |
| | | List<ShopOrderDetails> details = new ArrayList<>(); |
| | | // 是否包含实物商品 |
| | | boolean hasRealGoods = false; |
| | | |
| | | Integer orderCount = 0; |
| | | for (OrderItemDto orderItemDto : shopOrderDto.getOrderItemList()) { |
| | | ShopOrderDetails shopOrderDetails = new ShopOrderDetails(); |
| | | shopOrderDetails.setCreateBy(AppConstance.SYSTEM_USER); |
| | | shopOrderDetails.setUpdateBy(AppConstance.SYSTEM_USER); |
| | | shopOrderDetails.setpId(orderItemDto.getProductId()); |
| | | |
| | | if (!hasRealGoods) { |
| | | ShopProduct shopProduct = shopProductDao.selectById(orderItemDto.getProductId()); |
| | | if (shopProduct.getIsUnrealProduct() == 2) { |
| | | hasRealGoods = true; |
| | | } |
| | | } |
| | | |
| | | shopOrderDetails.setsId(orderItemDto.getSkuId()); |
| | | shopOrderDetails.setCount(orderItemDto.getCount()); |
| | | if(ShopOrderDetails.PAYTYPE_MICRO==orderItemDto.getPayType()){ |
| | |
| | | shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS); |
| | | //购买方式 |
| | | shopOrder.setShippingMethod(shopOrderDto.getDeliverySelect()); |
| | | // 客户选择的物流配送,且没有实物产品(全是虚拟产品), 则直接门店自提,无需填写配送单 |
| | | if (ShopOrder.SHIPPING_METHOD_WL == shopOrderDto.getDeliverySelect() && !hasRealGoods) { |
| | | shopOrder.setShippingMethod(ShopOrder.SHIPPING_METHOD_MDZT); |
| | | } |
| | | //生成订单号 |
| | | shopOrder.setOrderNo(WxUtils.getOrderNum()); |
| | | //设置支付状态 |
| | |
| | | |
| | | private Long companyId; |
| | | |
| | | |
| | | /** |
| | | * 是否虚拟产品 1/是 2/否 |
| | | */ |
| | | private Integer isUnrealProduct; |
| | | |
| | | } |
| | |
| | | "imageCompressEnable": true, /* 是否压缩图片,默认是true */ |
| | | "imageCompressBorder": 1600, /* 图片压缩最长边限制 */ |
| | | "imageInsertAlign": "none", /* 插入的图片浮动方式 */ |
| | | "imageUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "imageUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "imagePathFormat": "/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ |
| | | /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ |
| | |
| | | "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ |
| | | "scrawlPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ |
| | | "scrawlUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "scrawlUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "scrawlInsertAlign": "none", |
| | | |
| | | /* 截图工具上传 */ |
| | | "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ |
| | | "snapscreenPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | "snapscreenUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "snapscreenUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ |
| | | |
| | | /* 抓取远程图片配置 */ |
| | |
| | | "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ |
| | | "catcherFieldName": "source", /* 提交的图片列表表单名称 */ |
| | | "catcherPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | "catcherUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "catcherUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ |
| | | "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ |
| | | |
| | |
| | | "imageCompressEnable": true, /* 是否压缩图片,默认是true */ |
| | | "imageCompressBorder": 1600, /* 图片压缩最长边限制 */ |
| | | "imageInsertAlign": "none", /* 插入的图片浮动方式 */ |
| | | "imageUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "imageUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "imagePathFormat": "/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ |
| | | /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ |
| | |
| | | "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ |
| | | "scrawlPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ |
| | | "scrawlUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "scrawlUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "scrawlInsertAlign": "none", |
| | | |
| | | /* 截图工具上传 */ |
| | | "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ |
| | | "snapscreenPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | "snapscreenUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "snapscreenUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ |
| | | |
| | | /* 抓取远程图片配置 */ |
| | |
| | | "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ |
| | | "catcherFieldName": "source", /* 提交的图片列表表单名称 */ |
| | | "catcherPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | "catcherUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "catcherUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ |
| | | "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ |
| | | |
| | |
| | | #默认头像 |
| | | default.vip.photo.woman=https://filehive2.jyymatrix.cc/uploadeFile/20210125/db53552e688040afb286686f081e1e68f3fe946f75624598828f01898635152e.png |
| | | default.vip.photo.man=https://filehive2.jyymatrix.cc/uploadeFile/20210125/3642f1d827c44c76832fea106c85e0f89e089c16cbcc4dd0a82bb52b9ac700f4.png |
| | | |
| | |
| | | "imageCompressEnable": true, /* 是否压缩图片,默认是true */ |
| | | "imageCompressBorder": 1600, /* 图片压缩最长边限制 */ |
| | | "imageInsertAlign": "none", /* 插入的图片浮动方式 */ |
| | | "imageUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "imageUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile/md", /* 图片访问路径前缀 */ |
| | | "imagePathFormat": "/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ |
| | | /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ |
| | |
| | | "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ |
| | | "scrawlPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ |
| | | "scrawlUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "scrawlUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile/md", /* 图片访问路径前缀 */ |
| | | "scrawlInsertAlign": "none", |
| | | |
| | | /* 截图工具上传 */ |
| | | "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ |
| | | "snapscreenPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | "snapscreenUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "snapscreenUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile/md", /* 图片访问路径前缀 */ |
| | | "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ |
| | | |
| | | /* 抓取远程图片配置 */ |
| | |
| | | "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ |
| | | "catcherFieldName": "source", /* 提交的图片列表表单名称 */ |
| | | "catcherPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | "catcherUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "catcherUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile/md", /* 图片访问路径前缀 */ |
| | | "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ |
| | | "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ |
| | | |
| | |
| | | spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 |
| | | spring.thymeleaf.prefix: classpath:/templates/views/ |
| | | spring.thymeleaf.cache=false |
| | | mybatis-plus.global-config.db-config.id-type=auto |
| | | mybatis-plus.config-location=classpath:mybatis/mybatis-config.xml |
| | | mybatis-plus.mapper-locations=classpath*:mybatis/mapper/**/*.xml |
| | | #设置全局时间返回格式 第三行设置为true表示返回时间戳 |
| | |
| | | #默认头像 |
| | | default.vip.photo.woman=https://filehive2.jyymatrix.cc/uploadeFile/20210125/db53552e688040afb286686f081e1e68f3fe946f75624598828f01898635152e.png |
| | | default.vip.photo.man=https://filehive2.jyymatrix.cc/uploadeFile/20210125/3642f1d827c44c76832fea106c85e0f89e089c16cbcc4dd0a82bb52b9ac700f4.png |
| | | |
| | |
| | | "imageCompressEnable": true, /* 是否压缩图片,默认是true */ |
| | | "imageCompressBorder": 1600, /* 图片压缩最长边限制 */ |
| | | "imageInsertAlign": "none", /* 插入的图片浮动方式 */ |
| | | "imageUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "imageUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "imagePathFormat": "/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ |
| | | /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ |
| | |
| | | "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ |
| | | "scrawlPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ |
| | | "scrawlUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "scrawlUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "scrawlInsertAlign": "none", |
| | | |
| | | /* 截图工具上传 */ |
| | | "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ |
| | | "snapscreenPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | "snapscreenUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "snapscreenUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ |
| | | |
| | | /* 抓取远程图片配置 */ |
| | |
| | | "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ |
| | | "catcherFieldName": "source", /* 提交的图片列表表单名称 */ |
| | | "catcherPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ |
| | | "catcherUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "catcherUrlPrefix": "http://filehive2.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ |
| | | "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ |
| | | "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ |
| | | |
| | |
| | | </if> |
| | | </where> |
| | | </select> |
| | | <select id="selectAll" resultMap="SysCompanyMap"> |
| | | select * from sys_company |
| | | </select> |
| | | </mapper> |
| | |
| | | </if> |
| | | </where> |
| | | </delete> |
| | | |
| | | <delete id="deleteByFns"> |
| | | DELETE a |
| | | FROM |
| | | sys_role_pwoer_fn a , sys_role b |
| | | WHERE |
| | | a.role_id = b.role_id |
| | | and b.company_id=#{companyId} |
| | | and a.fn_id in <foreach collection="list" index="index" item="item" open="(" |
| | | separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | |
| | | <!-- 分页查询 --> |
| | |
| | | </where> |
| | | order by create_time desc |
| | | </select> |
| | | |
| | | <update id="updateVipCardId"> |
| | | update money_card_use_flow |
| | | set car_use_id=#{cardId} |
| | | where vip_id=#{vipId} and type='会员充值' |
| | | </update> |
| | | </mapper> |
| | | |
| | | |
| | |
| | | <result property="vipId" column="vip_id" /> |
| | | <result property="payMethod" column="pay_method" /> |
| | | <result property="cardId" column="card_id" /> |
| | | <result property="cardName" column="card_name" /> |
| | | <result property="isGift" column="is_gift" /> |
| | | |
| | | <result property="orderNo" column="order_no" /> |
| | |
| | | </delete> |
| | | |
| | | <select id="selectByOrderId" resultMap="SysOrderFlowMap"> |
| | | select a.*, b.order_no from sys_order_flow a |
| | | select a.*, b.order_no,c.card_name from sys_order_flow a |
| | | left join sys_order b on a.order_id=b.id |
| | | left join money_card_use c on a.card_id=c.id |
| | | where order_id=#{orderId} |
| | | </select> |
| | | |
| | |
| | | a.pay_method as payMethod, |
| | | a.flow_no as flowNo, |
| | | d.shop_short_name as shopName, |
| | | f.card_name as cardName, |
| | | e.su_name as staffName |
| | | from sys_order_flow a |
| | | LEFT JOIN sys_order b on a.order_id=b.ID |
| | | LEFT JOIN sys_vip_info c on a.vip_id=c.ID |
| | | LEFT JOIN sys_shop_info d on a.shop_id=d.ID |
| | | LEFT JOIN sys_users e on e.su_id=b.STAFF_ID |
| | | left join money_card_use f on a.card_id=f.id |
| | | |
| | | <where> |
| | | |
| | | and a.company_id=#{record.companyId} |
| | |
| | | c.name as goodsName, |
| | | g.name as cateName, |
| | | a.COUNT, |
| | | a.COUNT * a.ZK_PRICE as total, |
| | | a.refundCount, |
| | | a.ZK_PRICE, |
| | | a.IS_FREE, |
| | | a.pay_method, |
| | | a.status |
| | | b.statu |
| | | from sys_order_item a |
| | | left join sys_order b on a.ORDER_ID=b.ID |
| | | left join shopping_goods c on a.goods_id=c.id |
| | |
| | | <if test="guwenId != null and guwenId != '' "> |
| | | and b.STAFF_ID=#{guwenId} |
| | | </if> |
| | | <if test="status != null and status != '' "> |
| | | and a.status=#{status} |
| | | <if test="statu != null and statu != '' "> |
| | | and b.statu=#{statu} |
| | | </if> |
| | | |
| | | </where> |
| | |
| | | <if test="guwenId != null and guwenId != '' "> |
| | | and b.STAFF_ID=#{guwenId} |
| | | </if> |
| | | <if test="status != null and status != '' "> |
| | | and a.status=#{status} |
| | | <if test="statu != null and statu != '' "> |
| | | and b.statu=#{statu} |
| | | </if> |
| | | </where> |
| | | </select> |
| | |
| | | |
| | | <!-- 根据id更新 部分更新 --> |
| | | <update id="updateOrderTime"> |
| | | UPDATE sys_proj_services set consume_time=#{consumeTime} WHERE id=#{id} |
| | | UPDATE sys_proj_services set |
| | | consume_time=#{serviceOrderTimeDto.consumeTime}, |
| | | yy_time=#{serviceOrderTimeDto.yyTime}, |
| | | create_time=#{serviceOrderTimeDto.createTime} |
| | | WHERE id=#{serviceOrderTimeDto.id} |
| | | </update> |
| | | |
| | | <!-- 设置服务单为已通知 --> |
| | |
| | | a.type, |
| | | a.SOURCE, |
| | | e.ORDER_NO, |
| | | a.remark |
| | | a.remark, |
| | | s.SHOP_NAME |
| | | from sys_proj_use a |
| | | left join shopping_goods b on a.proj_id = b.id |
| | | left join sys_vip_info c on c.ID = a.VIP_ID |
| | | left join sys_shop_info s on c.SHOP_ID=s.id |
| | | left join sys_order_item d on d.id = a.ORDER_ITEM_ID |
| | | left join sys_order e on e.id = d.ORDER_ID |
| | | left join shopping_goods_category f on f.id = b.cate_id |
| | | |
| | | |
| | | |
| | | <where> |
| | |
| | | <collection property="taocanProjUse" ofType="com.matrix.system.hive.bean.SysProjUse"> |
| | | <id property="id" column="proj_info_id" /> |
| | | <result property="projName" column="proj_proj_name"/> |
| | | <result property="source" column="proj_source"/> |
| | | <result property="price" column="proj_price"/> |
| | | <result property="failTime" column="proj_FAIL_TIME"/> |
| | | <result property="surplusCount" column="proj_SURPLUS_COUNT"/> |
| | | <result property="timeLength" column="proj_time_length"/> |
| | |
| | | e.SURPLUS_COUNT proj_SURPLUS_COUNT, |
| | | e.id proj_info_id, |
| | | e.proj_id proj_projId, |
| | | e.source proj_source, |
| | | e.price proj_price, |
| | | e.status proj_status, |
| | | f.time_length proj_time_length, |
| | | f.img proj_img |
| | |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="selectTaocanCountForCourseAndInfinite" resultType="java.lang.Integer"> |
| | | select count(1) from sys_proj_use |
| | | where taocan_id=#{taocanId} and vip_id=#{vipId} |
| | | </select> |
| | | </mapper> |
| | |
| | | <result property="ableScorePay" column="able_score_pay"/> |
| | | <result property="ableSales" column="able_sales"/> |
| | | <result property="scoreCategoryId" column="score_category_id"/> |
| | | <result property="isUnrealProduct" column="is_unreal_product"/> |
| | | |
| | | <association property="shopCoupon" select="com.matrix.system.shopXcx.dao.ShopCouponDao.selectById" |
| | | column="{id=couponId}"></association> |
| | |
| | | company_id, |
| | | able_score_pay, |
| | | able_sales, |
| | | is_unreal_product, |
| | | score_category_id |
| | | |
| | | </sql> |
| | |
| | | #{item.companyId}, |
| | | #{item.ableScorePay}, |
| | | #{item.ableSales}, |
| | | #{item.isUnrealProduct}, |
| | | #{item.scoreCategoryId} |
| | | |
| | | </sql> |
| | |
| | | <if test="record.scoreCategoryId != null and record.scoreCategoryId "> |
| | | score_category_id = #{record.scoreCategoryId}, |
| | | </if> |
| | | <if test="record.isUnrealProduct != null and record.isUnrealProduct"> |
| | | is_unreal_product = #{record.isUnrealProduct}, |
| | | </if> |
| | | |
| | | </set> |
| | | WHERE id=#{record.id} |
| | |
| | | a.able_score_pay, |
| | | a.able_sales, |
| | | a.score_category_id, |
| | | a.is_unreal_product, |
| | | (SELECT SUM(s.stock) from shop_sku s where s.p_id = a.id) as stockNum, |
| | | (SELECT ROUND(SUM(s.stock),2) from shop_sku s where s.p_id = a.id) as stockNum, |
| | | shop_ids |
| | |
| | | |
| | | |
| | | var MTools = { |
| | | closeIframe: function () { |
| | | parent.layer.close(parent.layer.getFrameIndex(window.name)); |
| | | }, |
| | | |
| | | /** 返回一个随机字符串 */ |
| | | uuid : function() { |
| | | |
| | |
| | | <body> |
| | | <div class="panel-body" id="app" v-cloak> |
| | | <el-row> |
| | | <el-card class="box-card" style="background-color: #0a628f;"> |
| | | <div style="padding:10px;font-size: 20px;">¥{{basicdetail.balance}}</div> |
| | | <div>订单总金额</div> |
| | | </el-card > |
| | | <el-card class="box-card" style="background-color: #0f9aef;"> |
| | | <div style="padding:10px;font-size: 20px;">¥{{basicdetail.balance}}</div> |
| | | <div>待计算金额</div> |
| | |
| | | </el-form-item> |
| | | <el-button type="primary" @click="search" >搜索</el-button> |
| | | <el-button @click="resetForm('form')">重置</el-button> |
| | | <el-button>导出</el-button> |
| | | </el-form> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | } |
| | | _this.shfs = data.mapInfo.shfs; |
| | | _this.sqtj = data.mapInfo.sqtj; |
| | | if (!data.mapInfo.order && data.mapInfo.order != null) { |
| | | _this.order = data.mapInfo.order; |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | |
| | | this.pushToSelectGoods(row); |
| | | }, |
| | | pushToSelectGoods(goods) { |
| | | |
| | | console.log(this.order) |
| | | //判断是否被选中 |
| | | let selected = false; |
| | | for(let i = 0; i < this.order.length; i++){ |
| | |
| | | label="支付方式"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="cardName" |
| | | label="储值卡名称"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="flowNo" |
| | | label="流水号"> |
| | | </el-table-column> |
| | |
| | | achieveRulsList : [], |
| | | shopList : [], |
| | | achieveUsers : [], |
| | | years : [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021], |
| | | years : [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,2022], |
| | | months : ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"], |
| | | days : [], |
| | | form : { |
| | |
| | | label="支付方式"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="cardName" |
| | | sortable="custom" |
| | | label="储值卡名称"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="flowNo" |
| | | label="支付流水号"> |
| | | </el-table-column> |
| | |
| | | </div> |
| | | <div class="form-group mr-20"> |
| | | <label >订单状态</label> |
| | | <select class="form-control " name="status" > |
| | | <select class="form-control " name="statu" > |
| | | <option value=''>--请选择订单状态--</option> |
| | | <option value='欠款'>欠款</option> |
| | | <option value='待付款'>待付款</option> |
| | |
| | | <th data-field="VIP_NAME" >客户名</th> |
| | | <th data-field="COUNT" data-sortable="true" >购买数量</th> |
| | | <th data-field="ZK_PRICE" data-sortable="true" >单价</th> |
| | | <th data-field="total" >小计</th> |
| | | <th data-field="su_name" >健康顾问</th> |
| | | <th data-field="pay_method" >支付方式</th> |
| | | <th data-field="status" >状态</th> |
| | | <th data-field="statu" >状态</th> |
| | | </tr> |
| | | </thead> |
| | | </table> |
| | |
| | | <input autocomplete="off" placeholder="姓名/编号/电话" name="vipQueryKey" type="text" class="form-control" > |
| | | </div> |
| | | |
| | | <div class="form-group mr-20"> |
| | | <label >所属门店</label> <select |
| | | class="form-control autoFull" |
| | | data-url="/admin/shopInfo/findShops" data-value="id" |
| | | data-filed="shopName" name="shopId"> |
| | | <option value="">--请选择所属门店--</option> |
| | | </select> |
| | | </div> |
| | | |
| | | <div class="form-group mr-20"> |
| | | <label>到期时间</label><!-- 入库时间的查询增加一个查询的其实时间两个字段 --> |
| | |
| | | <tr> |
| | | <th data-formatter="MGrid.indexfn" data-align="center" data-width="30px" >序号</th> |
| | | <th data-field="VIP_NAME" >客户名</th> |
| | | <th data-field="SHOP_NAME" >客户门店</th> |
| | | <th data-field="PROJ_NAME" >服务名称</th> |
| | | <th data-field="FAIL_TIME" data-formatter="MGrid.getTime" data-sortable="true" >到期日期</th> |
| | | <th data-field="SURPLUS_COUNT" data-sortable="true" >剩余次数</th> |
| | |
| | | userList: [], |
| | | treeSelect : [], |
| | | payMoneys : [], |
| | | order:{}, |
| | | printPaper : false, |
| | | }, |
| | | created : function() { |
| | |
| | | data: _this.cardInfo, |
| | | url: url, |
| | | callback: function (data) { |
| | | _this.order.id = data.mapInfo.orderId; |
| | | |
| | | if (_this.printPaper) { |
| | | _this.$message.success(data.info); |
| | | _this.print(); |
| | | } else { |
| | | _this.$message.success({ |
| | | message : data.info, |
| | | duration : 1000, |
| | | onClose() { |
| | | _this.closeFrame(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | if(parent.myGrid) { |
| | |
| | | parent.app.vipInfoFn(); |
| | | } |
| | | |
| | | _this.closeFrame(); |
| | | // _this.closeFrame(); |
| | | } |
| | | }); |
| | | } |
| | |
| | | maxmin: true, |
| | | content: [basePath + '/admin/order/printOrder?id=' + this.order.id], |
| | | cancel: function (index, layero) { |
| | | _this.closeFram(); |
| | | _this.closeFrame(); |
| | | } |
| | | }); |
| | | } else { |
| | |
| | | } |
| | | </style> |
| | | </head> |
| | | <body style="overflow: hidden"> |
| | | <body > |
| | | <div id="app" v-cloak> |
| | | |
| | | |
| | |
| | | //结算打印提示 |
| | | if (submitType == 1) { |
| | | if (_this.printPaper) { |
| | | _this.$message.success(data.info); |
| | | _this.print(); |
| | | } else { |
| | | _this.$message.success({ |
| | |
| | | label="支付方式"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="cardName" |
| | | label="储值卡名称"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="flowNo" |
| | | label="流水号"> |
| | | </el-table-column> |
| | |
| | | title: "修改订单时间", |
| | | maxmin: true, |
| | | area: [MUI.SIZE_L, '500px'], |
| | | content: [basePath + '/admin/projService/toServiceOrderUpdateTime?id=' + id] |
| | | content: [basePath + '/admin/redirect/hive/beautySalon/updateServiceOrderTimeV2?id=' +id] |
| | | }); |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | <!DOCTYPE HTML> |
| | | <!DOCTYPE HTML> |
| | | <html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> |
| | | <head> |
| | | <meta charset="utf-8"> |
New file |
| | |
| | | <!DOCTYPE HTML> |
| | | <html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> |
| | | <meta name="renderer" content="webkit|ie-comp|ie-stand"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" |
| | | content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> |
| | | <meta http-equiv="Cache-Control" content="no-siteapp"/> |
| | | <!-- 本框架基本脚本和样式 --> |
| | | <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> |
| | | <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> |
| | | <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> |
| | | |
| | | </head> |
| | | <body> |
| | | <div class="ibox-content" id="app" v-cloak > |
| | | <el-form :model="serviceOrder" ref="form" label-width="100px" class="demo-form"> |
| | | |
| | | |
| | | <el-form-item label="创建时间"> |
| | | <el-date-picker v-model="serviceOrder.createTime" type="datetime"></el-date-picker> |
| | | </el-form-item> |
| | | |
| | | |
| | | <el-form-item label="预约时间"> |
| | | <el-date-picker v-model="serviceOrder.yyTime" type="datetime"></el-date-picker> |
| | | </el-form-item> |
| | | |
| | | |
| | | <el-form-item label="划扣时间"> |
| | | <el-date-picker v-model="serviceOrder.consumeTime" type="datetime" ></el-date-picker> |
| | | <span>修改划扣时间才会同步修改服务单业绩</span> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <el-button type="primary" @click="submitForm('form')" >保存</el-button> |
| | | <el-button @click="closeFram()">关闭</el-button> |
| | | </el-form-item> |
| | | |
| | | </el-form> |
| | | </div> |
| | | </body> |
| | | <script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> |
| | | <script src="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.umd.min.js"></script> |
| | | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.min.css"> |
| | | |
| | | |
| | | <script> |
| | | var id = $.query.get("id"); |
| | | |
| | | |
| | | var app = new Vue({ |
| | | el: '#app', |
| | | data: { |
| | | |
| | | //表单数据 |
| | | serviceOrder:{} |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 初始化数据表 |
| | | */ |
| | | created: function () { |
| | | this.loadData() |
| | | }, |
| | | |
| | | methods: { |
| | | loadData(){ |
| | | let _this=this; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | url: basePath + '/admin/projService/findServiceOrderInfoVo/'+id, |
| | | callback: function (data) { |
| | | _this.serviceOrder = data.data; |
| | | } |
| | | }); |
| | | }, |
| | | submitForm(){ |
| | | let _this=this; |
| | | let data={ |
| | | id:this.serviceOrder.id, |
| | | yyTime:this.serviceOrder.yyTime, |
| | | createTime:this.serviceOrder.createTime, |
| | | consumeTime:this.serviceOrder.consumeTime |
| | | } |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data: data, |
| | | contentType: 'application/json', |
| | | url: basePath + '/admin/projService/updateOrderTime', |
| | | callback: function (data) { |
| | | |
| | | _this.$message.success("修改成功"); |
| | | if(parent.myGrid){ |
| | | parent.myGrid.serchData() |
| | | } |
| | | if(parent.app){ |
| | | parent.app.serviceOrderQuery(); |
| | | } |
| | | setInterval(MTools.closeIframe(), 1000); |
| | | |
| | | } |
| | | }); |
| | | |
| | | }, |
| | | closeFram: function () { |
| | | |
| | | parent.layer.close(parent.layer.getFrameIndex(window.name)); |
| | | |
| | | }, |
| | | |
| | | } |
| | | |
| | | }) |
| | | </script> |
| | | |
| | | </body> |
| | | </html> |
| | | |
| | |
| | | </el-col> |
| | | </el-col> |
| | | <el-col :span="8" style="float: right; margin-right: 20px;"> |
| | | |
| | | <el-button type="primary" plain @click="recharge">充值</el-button> |
| | | <el-button type="warning" plain @click="addOrder">开单</el-button> |
| | | <el-button type="success" plain @click="addServiceOrder">开服务单</el-button> |
| | | <el-button type="info" plain @click="exportExcel">导出项目</el-button> |
| | | <el-button type="primary" plain @click="openAdd">会员注册</el-button> |
| | | </el-col> |
| | | </el-header> |
| | | <el-container> |
| | |
| | | } |
| | | }, |
| | | methods : { |
| | | openAdd(){ |
| | | layer.full(layer.open({ |
| | | type : 2, |
| | | title : "添加会员信息", |
| | | area : [ MUI.SIZE_L, '450px' ], |
| | | content : [ basePath+'/admin/vipInfo/editForm' ] |
| | | })); |
| | | }, |
| | | //打开订单详情页面 |
| | | openOrder(index,row){ |
| | | layer.full(layer.open({ |
| | |
| | | title : "充值卡变更记录", |
| | | area : MUI.SIZE_M, |
| | | maxmin : true, |
| | | content : [ basePath + "/admin/redirect/hive/vip/moneyCardUseFlow-list?vipId=" + row.vipId ] |
| | | content : [ basePath + "/admin/redirect/hive/vip/moneyCardUseFlow-list?vipId=" + row.vipId + "&cardId=" + row.id ] |
| | | }); |
| | | }, |
| | | |
| | |
| | | title: "修改订单时间", |
| | | maxmin: true, |
| | | area: [MUI.SIZE_L, '500px'], |
| | | content: [basePath + '/admin/projService/toServiceOrderUpdateTime?id=' + row.id] |
| | | content: [basePath + '/admin/redirect/hive/beautySalon/updateServiceOrderTimeV2?id=' + row.id] |
| | | }); |
| | | }, |
| | | /********* 服务单tab end ***********/ |
| | |
| | | <h1 style="text-align: center;font-size: 18px;margin: 20px auto;"> |
| | | {{order.shopName}} |
| | | </h1> |
| | | <table style="width: 100%; font-size:12px;line-height: 20px;"> |
| | | <table style="width: 100%; font-size:12px;"> |
| | | |
| | | <tr> |
| | | <td colspan="2"> |
| | |
| | | </tr> |
| | | </table> |
| | | <p>--------------------------------</p> |
| | | <table style="width: 80%;font-size:12px;margin-top: 20px;text-align: left"> |
| | | <table style="width: 80%;font-size:12px;margin-top: 10px;text-align: left; margin-bottom: 5px;"> |
| | | |
| | | <tr> |
| | | <th style="text-align: left;" colspan="4">产品</th> |
| | |
| | | </tr> |
| | | </table> |
| | | <p>--------------------------------</p> |
| | | <table style="width: 100%;font-size: 10px;line-height: 30px;"> |
| | | <table style="width: 100%;font-size: 10px; margin-bottom: 5px;"> |
| | | <tr > |
| | | <td> |
| | | <b >储值卡余额:</b><span >{{totalMoney}}</span> |
| | |
| | | <h1 style="text-align: center;font-size:18px;margin: 20px auto;"> |
| | | {{projService.shopName}} |
| | | </h1> |
| | | <table style="width: 100%; font-size:10px;line-height: 20px;"> |
| | | <table style="width: 100%; font-size:10px;"> |
| | | |
| | | <tr> |
| | | <td colspan="2"> |
| | |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | <table style="width: 80%;font-size:10px;margin-top: 20px;text-align: left"> |
| | | <table style="width: 80%;font-size:10px;margin-top: 10px;text-align: left; margin-bottom: 5px;"> |
| | | <tr> |
| | | <th style="text-align: left;" colspan="4">产品</th> |
| | | </tr> |
| | |
| | | <tr > |
| | | <td>{{item.count }}</td> |
| | | <td>{{item.projUse.price }}</td> |
| | | <td >{{item.projUse.surplusCount }}</td> |
| | | <td >{{item.projUse.remainCount == null ? "-" : item.projUse.remainCount}}</td> |
| | | <td>{{item.beautiStaffInfo?item.beautiStaffInfo.suName:''}}</td> |
| | | </tr> |
| | | </template> |
| | | </table> |
| | | <table style="width: 100%;font-size: 10px;line-height: 30px;"> |
| | | <table style="width: 100%;font-size: 10px; margin-bottom: 5px;"> |
| | | <tr> |
| | | <td> |
| | | <b>本次划扣:</b> <span >{{projService.money}}</span> |
| | |
| | | delUrl = basePath + "/admin/shoppinggoods/del"; |
| | | |
| | | myGrid = MGrid.initGrid({ |
| | | url: basePath + "/admin/shoppinggoods/showList", |
| | | url: basePath + "/admin/shoppinggoods/showAllList", |
| | | delUrl: delUrl |
| | | }); |
| | | }); |
| | |
| | | delUrl = basePath + "/admin/shoppinggoods/del"; |
| | | |
| | | myGrid = MGrid.initGrid({ |
| | | url: basePath + "/admin/shoppinggoods/showList", |
| | | url: basePath + "/admin/shoppinggoods/showAllList", |
| | | delUrl: delUrl |
| | | }); |
| | | }); |
| | |
| | | achieveRulsList : [], |
| | | shopList : [], |
| | | achieveUsers : [], |
| | | years : [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021], |
| | | years : [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022], |
| | | months : ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"], |
| | | days : [], |
| | | form : { |
| | |
| | | label="支付方式"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="cardName" |
| | | sortable="custom" |
| | | label="储值卡名称"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="flowNo" |
| | | label="支付流水号"> |
| | | </el-table-column> |
| | |
| | | </div> |
| | | <div class="form-group mr-20"> |
| | | <label >订单状态</label> |
| | | <select class="form-control " name="status" > |
| | | <select class="form-control " name="statu" > |
| | | <option value=''>--请选择订单状态--</option> |
| | | <option value='欠款'>欠款</option> |
| | | <option value='待付款'>待付款</option> |
| | |
| | | <th data-field="VIP_NAME" >客户名</th> |
| | | <th data-field="COUNT" data-sortable="true" >购买数量</th> |
| | | <th data-field="ZK_PRICE" data-sortable="true" >单价</th> |
| | | <th data-field="total" >小计</th> |
| | | <th data-field="su_name" >健康顾问</th> |
| | | <th data-field="pay_method" >支付方式</th> |
| | | <th data-field="status" >状态</th> |
| | | <th data-field="statu" >状态</th> |
| | | </tr> |
| | | </thead> |
| | | </table> |
| | |
| | | <label>会员</label> |
| | | <input autocomplete="off" placeholder="姓名/编号/电话" name="vipQueryKey" type="text" class="form-control" > |
| | | </div> |
| | | |
| | | <div class="form-group mr-20"> |
| | | <label >所属门店</label> <select |
| | | class="form-control autoFull" |
| | | data-url="/admin/shopInfo/findShops" data-value="id" |
| | | data-filed="shopName" name="shopId"> |
| | | <option value="">--请选择所属门店--</option> |
| | | </select> |
| | | </div> |
| | | |
| | | <div class="form-group mr-20"> |
| | | <label>到期时间</label><!-- 入库时间的查询增加一个查询的其实时间两个字段 --> |
| | |
| | | <tr> |
| | | <th data-formatter="MGrid.indexfn" data-align="center" data-width="30px" >序号</th> |
| | | <th data-field="VIP_NAME" >客户名</th> |
| | | <th data-field="SHOP_NAME" >客户所属门店</th> |
| | | <th data-field="PROJ_NAME" >服务名称</th> |
| | | <th data-field="FAIL_TIME" data-formatter="MGrid.getTime" data-sortable="true" >到期日期</th> |
| | | <th data-field="SURPLUS_COUNT" data-sortable="true" >剩余次数</th> |
| | |
| | | <form class="form-inline" id="serchform2"> |
| | | <!-- 用于套餐的查询 --> |
| | | <input autocomplete="off" type="hidden" name="vipId" th:value="${param.vipId}" class="vipId"> |
| | | <input autocomplete="off" type="hidden" name="carUseId" th:value="${param.cardId}" /> |
| | | </form> |
| | | </div> |
| | | <div class="row mt-10"> |
| | |
| | | <button matrix:btn="oaFixedAssets-add" onclick="openAdd()" type="button" class="btn btn-info btn-sm"><i class="fa fa-plus" ></i> 新增</button> |
| | | <button matrix:btn="oaFixedAssets-edit" onclick="openEdit()" type="button" class="btn btn-info btn-sm"><i class="fa fa-edit" ></i> 编辑</button> |
| | | <button matrix:btn="oaFixedAssets-dels" onclick="myGrid.delItems('id')" type="button" class="btn btn-danger btn-sm"><i class="fa fa-trash" ></i>批量删除</button> |
| | | <button onclick="exportExcel()" type="button" class="btn btn-info btn-sm"><i class="fa fa-download" ></i> 导出</button> |
| | | </div> |
| | | <!-- 数据表格部分 --> |
| | | <table id="mgrid"> |
| | |
| | | content: [basePath + '/admin/oaFixedAssets/editForm?id=' + id] |
| | | }); |
| | | } |
| | | |
| | | function exportExcel(){ |
| | | var param=MForm.toUrlParam("#serchform"); |
| | | window.location.href=basePath+"/admin/oaFixedAssets/exportExcel?"+param; |
| | | } |
| | | |
| | | </script> |
| | | |
| | | </body> |
| | |
| | | if(zjw != null && zjh != null){ |
| | | cNode.nodeStyleStr = '{"width":"'+zjw+'px","height":"'+zjh+'px"}'; |
| | | } |
| | | if(this.interval != null && this.previousMargin != null && this.nextMargin != null){ |
| | | cNode.nodeAttribute = '{"interval":'+this.interval+',"previous-margin":'+this.previousMargin+',"next-margin":'+this.nextMargin+'}'; |
| | | if(this.interval != null && this.previousMargin != null && this.nextMargin != null && this.interval != '' && this.previousMargin != '' && this.nextMargin != ''){ |
| | | cNode.nodeAttribute = '{\"interval\":'+this.interval+',\"previous-margin\":'+this.previousMargin+',\"next-margin\":'+this.nextMargin+'}'; |
| | | } |
| | | |
| | | if (cNode.nodeStyleStr != null && cNode.nodeStyleStr.length > 1) { |
| | |
| | | |
| | | |
| | | </div> |
| | | |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">是否虚拟产品 |
| | | </label> |
| | | <div class="col-sm-4"> |
| | | <select th:field="${obj.isUnrealProduct}" class="form-control select2 " size="1" |
| | | name="isUnrealProduct" |
| | | style="width: 100%"> |
| | | <option value="2" th:selected="${obj.isUnrealProduct == '2'}">否</option> |
| | | <option value="1" th:selected="${obj.isUnrealProduct == '1'}">是</option> |
| | | </option> |
| | | |
| | | </select> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |