Merge remote-tracking branch 'origin/score_shop' into score_shop
9 files added
45 files modified
| | |
| | | import com.matrix.system.common.interceptor.HostInterceptor; |
| | | import com.matrix.system.shopXcx.api.tools.WxShopOrderUtil; |
| | | import org.apache.log4j.Logger; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | |
| | | |
| | | |
| | | @NotNull |
| | | private BrandWCPayRequestData buildBrandWCPayRequestData(String desc, String outTradeNo, int price, String openId, String attach, BusParameterSettings notifyUrl) throws Exception { |
| | | // 创建微信支付预付接口 |
| | | JsApiPayBusiness jsApiPayBusiness = new JsApiPayBusiness(); |
| | |
| | | package com.matrix.system.activity.dao; |
| | | |
| | | |
| | | import cn.hutool.core.date.DateTime; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.matrix.system.activity.entity.ActivitySignRecord; |
| | | import com.matrix.system.shopXcx.api.vo.ActivitySignRecordVo; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @description 签到记录表 |
| | |
| | | ActivitySignRecord selectOneByActIdAndUserIdLikesignTime(@Param("actId")long actId, |
| | | @Param("userId")Long userId, @Param("format")Date format); |
| | | |
| | | List<ActivitySignRecordVo> selectRecordByMonth(@Param("actId")Long actId, @Param("userId")Long userId, @Param("date") DateTime date); |
| | | } |
| | |
| | | private Long awardId; |
| | | |
| | | /** |
| | | * 是否已领取(1:待领取2:已领取) |
| | | * 是否已领取(1:待领取2:已领取 3:待配送 4:待收货) |
| | | */ |
| | | |
| | | |
| | |
| | | |
| | | public static final int STATE_ING = 1; |
| | | public static final int STATE_DONE = 2; |
| | | |
| | | public static final int STATE_THREE = 3; |
| | | public static final int STATE_FOUR = 4; |
| | | |
| | | /** |
| | | * 核销码 |
| | | */ |
| | |
| | | activitySignAwardSetUpdate.setUpdateBy(user.getSuName()); |
| | | activitySignAwardSetUpdate.setCompanyId(companyId); |
| | | activitySignAwardSetUpdate.setActivityId(actId); |
| | | activitySignAwardSetUpdate.setAwardState(ActivitySignAwardSet.AWARDSTATE_WORK); |
| | | activitySignAwardSetDao.insert(activitySignAwardSetUpdate); |
| | | }else { |
| | | activitySignAwardSetUpdate.setAwardState(ActivitySignAwardSet.AWARDSTATE_WORK); |
| | | activitySignAwardSetDao.updateById(activitySignAwardSetUpdate); |
| | | arrayListUpdate.add(actSubid); |
| | | } |
| | |
| | | activitySignWriteoffDao.updateById(activitySignWriteoff); |
| | | //更新领取记录 |
| | | ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId); |
| | | activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); |
| | | activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_THREE); |
| | | activitySignReceiveRecord.setConsignee(logisticsSubmitDto.getShr()); |
| | | activitySignReceiveRecord.setConsigneeAddress(logisticsSubmitDto.getShdz()); |
| | | activitySignReceiveRecord.setConsigneePhone(logisticsSubmitDto.getLxdh()); |
| | |
| | | break; |
| | | case "1": |
| | | queryUse.setStatus(Dictionary.TAOCAN_STATUS_YX); |
| | | queryUse.setIsOver(Dictionary.FLAG_NO_N); |
| | | // queryUse.setIsOver(Dictionary.FLAG_NO_N); |
| | | break; |
| | | case "2": |
| | | queryUse.setTargetFailTime(DateUtil.getDateAfterMonth(new Date(), 1)); |
| | | queryUse.setStatus(Dictionary.TAOCAN_STATUS_YX); |
| | | queryUse.setIsOver(Dictionary.FLAG_NO_N); |
| | | // queryUse.setIsOver(Dictionary.FLAG_NO_N); |
| | | break; |
| | | case "3": |
| | | queryUse.setStatus(Dictionary.TAOCAN_STATUS_WX); |
| | | queryUse.setIsOver(Dictionary.FLAG_YES_Y); |
| | | // queryUse.setIsOver(Dictionary.FLAG_YES_Y); |
| | | break; |
| | | default: |
| | | queryUse.setStatus(Dictionary.TAOCAN_STATUS_YX); |
| | | queryUse.setIsOver(Dictionary.FLAG_NO_N); |
| | | // queryUse.setIsOver(Dictionary.FLAG_NO_N); |
| | | break; |
| | | } |
| | | } else { |
| | |
| | | @ApiModelProperty(value = "快过期 1-是 2-否") |
| | | private String isInvalid; |
| | | |
| | | @ApiModelProperty(value = "项目状态 有效/无效") |
| | | private String status; |
| | | |
| | | public String getIsInvalid() { |
| | | Date date = DateUtil.getDateAfterMonth(new Date(), 1); |
| | | if (invalidTime != null) { |
| | |
| | | public void setId(Long id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public String getStatus() { |
| | | if ("有效".equals(status)) { |
| | | return "1"; |
| | | } else { |
| | | return "2"; |
| | | } |
| | | } |
| | | |
| | | public void setStatus(String status) { |
| | | this.status = status; |
| | | } |
| | | } |
| | |
| | | @ApiModelProperty(value = "快过期 1-是 2-否") |
| | | private String isInvalid; |
| | | |
| | | @ApiModelProperty(value = "状态 有效/无效") |
| | | private String status; |
| | | |
| | | @ApiModelProperty(hidden = true) |
| | | private List<SysProjUse> taocanProjUse; |
| | | |
| | |
| | | public void setProj(List<ServiceProjVo> proj) { |
| | | this.proj = proj; |
| | | } |
| | | |
| | | public String getStatus() { |
| | | if ("有效".equals(status)) { |
| | | return "1"; |
| | | } else { |
| | | return "2"; |
| | | } |
| | | } |
| | | |
| | | public void setStatus(String status) { |
| | | this.status = status; |
| | | } |
| | | } |
| | |
| | | import com.matrix.system.hive.bean.ParameterSettings; |
| | | import com.matrix.system.hive.dao.ParameterSettingsDao; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.*; |
| | |
| | | StatisticsBusinessDataJob sjobp; |
| | | @RequestMapping(value = "/job") |
| | | public @ResponseBody String job() { |
| | | sjobp.executeExt2(); |
| | | //sjobp.executeExt2(); |
| | | return "1"; |
| | | } |
| | | |
| | |
| | | @Override |
| | | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { |
| | | if ("dev".equals(evn)) { |
| | | SysUsers sysUsers = sysUsersDao.selectById(1060L); |
| | | SysUsers sysUsers = sysUsersDao.selectById(1022L); |
| | | request.getSession().setAttribute(MatrixConstance.LOGIN_KEY, sysUsers); |
| | | return true; |
| | | } |
| | |
| | | String[] COLORS = { "#57c5d2", "#e3565e", "#2f343a", "#4d98db", "#4fbc9d", "#be9d4c"}; |
| | | |
| | | String SERVICE_OVER_BEGIN_END = "SERVICE_OVER_BEGIN_END"; |
| | | String SALE_MAN_IS_CONSUME_ACHIEVE = "SALE_MAN_IS_CONSUME_ACHIEVE"; |
| | | } |
| | |
| | | List<RankingVo> selectStaffSaleAchieveRanking(@Param("record") AchieveNew achieveNew); |
| | | |
| | | int deleteByOrderId(@Param("orderId") Long orderId); |
| | | |
| | | List<AchieveNew> selectSaleManAchieveList(@Param("saleId") Long saleId, @Param("vipId") Long vipId, @Param("date") Date date); |
| | | |
| | | List<AchieveNew> selectBeautyManAchieveList(@Param("beautyId") Long beautyId, @Param("vipId") Long vipId, @Param("date") Date date); |
| | | |
| | | int updateAchieveNumOfPeople(@Param("list") List<AchieveNew> list, @Param("num") Double num); |
| | | |
| | | } |
| | |
| | | List<ServiceOrderListVo> findApiServiceOrderListInPage(ServiceOrderListDto serviceOrderListDto, PaginationVO pageVo); |
| | | |
| | | int findApiServiceOrderListTotal(ServiceOrderListDto serviceOrderListDto); |
| | | |
| | | public boolean skipServiceOrderStep(String step); |
| | | } |
| | |
| | | package com.matrix.system.hive.service.imp; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import com.matrix.core.constance.MatrixConstance; |
| | | import com.matrix.core.exception.GlobleException; |
| | | import com.matrix.core.pojo.PaginationVO; |
| | |
| | | import com.matrix.system.hive.dao.SysProjUseDao; |
| | | import com.matrix.system.hive.plugin.util.CollectionUtils; |
| | | import com.matrix.system.hive.service.AchieveNewService; |
| | | import com.matrix.system.hive.service.SysProjServicesService; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private SysProjUseDao sysProjUseDao; |
| | | |
| | | @Autowired |
| | | private SysProjServicesService projServicesService; |
| | | |
| | | @Override |
| | | public int add(AchieveNew achieveNew) { |
| | |
| | | |
| | | Long achieveId = projServices.getCreateStaffId(); |
| | | |
| | | // 下单人是否计算消耗业绩 |
| | | boolean flag = projServicesService.skipServiceOrderStep(Dictionary.SALE_MAN_IS_CONSUME_ACHIEVE); |
| | | |
| | | for (SysBeauticianState beauticianState : beauticianStateList) { |
| | | // 是否第一次计算改美疗师 |
| | | boolean isFirst = true; |
| | |
| | | achieveNew.setShopId(projServices.getShopId()); |
| | | achieveNew.setCompanyId(projServices.getCompanyId()); |
| | | achieveNew.setShoppingGoodsId(projUse.getProjId()); |
| | | achieveNew.setNumberOfPeople(1D / size); |
| | | |
| | | if (flag) { |
| | | // if (!achieveId.equals(beauticianState.getStaffId())) { |
| | | AchieveNew saleMan = new AchieveNew(); |
| | | BeanUtils.copyProperties(achieveNew, saleMan); |
| | | saleMan.setBeaultId(achieveId); |
| | | |
| | | saleAchieveNumOfPeople(saleMan); |
| | | achieveNewList.add(saleMan); |
| | | // } |
| | | } |
| | | |
| | | List<AchieveNew> beautyList = achieveNewDao.selectBeautyManAchieveList(beauticianState.getStaffId(), projServices.getVipId(), new Date()); |
| | | if (CollUtil.isEmpty(beautyList)) { |
| | | achieveNew.setNumberOfPeople(1D / size); |
| | | } else { |
| | | achieveNew.setNumberOfPeople(1D / (size + beautyList.size())); |
| | | achieveNewDao.updateAchieveNumOfPeople(beautyList, achieveNew.getNumberOfPeople()); |
| | | } |
| | | |
| | | achieveNew.setProjNum(1); |
| | | if (StringUtils.isNotBlank(beauticianState.getExtract())) { |
| | | achieveNew.setProjPercentage(Double.parseDouble(beauticianState.getExtract())); |
| | |
| | | achieveNewDao.batchInsert(achieveNewList); |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 顾问人头业绩 |
| | | * @param achieveNew |
| | | */ |
| | | private void saleAchieveNumOfPeople(AchieveNew achieveNew) { |
| | | List<AchieveNew> saleList = achieveNewDao.selectSaleManAchieveList(achieveNew.getSaleId(), achieveNew.getVipId(), new Date()); |
| | | if (CollUtil.isEmpty(saleList)) { |
| | | achieveNew.setNumberOfPeople(1D); |
| | | } else { |
| | | achieveNew.setNumberOfPeople(1D / (1D + saleList.size())); |
| | | achieveNewDao.updateAchieveNumOfPeople(saleList, achieveNew.getNumberOfPeople()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | } |
| | | |
| | | |
| | | // 设置顾问人头业绩 |
| | | saleAchieveNumOfPeople(achieveNew); |
| | | |
| | | achieveNew.setOrderType(Dictionary.ORDER_TYPE_SEAL); |
| | | achieveNew.setOrderId(pageOrder.getId()); |
| | |
| | | if (skipServiceOrderStep(Dictionary.SERVICE_OVER_BEGIN_END)) { |
| | | projServices.setStartTime(new Date()); |
| | | projServices.setState(Dictionary.SERVICE_STATU_FWWC); |
| | | } else { |
| | | projServices.setState(Dictionary.SERVICE_STATU_PLWC); |
| | | } |
| | | // 释放床位资源 |
| | | // SysBedState checkBedState = sysBedStateDao.selectBySerIdAndBedId(projServices.getBedId(), projServices.getId()); |
| | |
| | | /** |
| | | * 跳过服务单某步骤 |
| | | */ |
| | | private boolean skipServiceOrderStep(String step) { |
| | | @Override |
| | | public boolean skipServiceOrderStep(String step) { |
| | | SysUsers users = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); |
| | | ParameterSettings ps = new ParameterSettings(); |
| | | ps.setCompanyId(users.getCompanyId()); |
| | |
| | | import com.matrix.system.hive.service.imp.DataAnalysisCustomerServiceImpl; |
| | | import com.matrix.system.hiveErp.analysUtil.*; |
| | | import com.matrix.system.hiveErp.dao.TjVipSumDao; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | |
| | | import com.matrix.system.shopXcx.api.vo.WxActivitiesGroupBuyVO; |
| | | import com.matrix.system.shopXcx.bean.*; |
| | | import com.matrix.system.shopXcx.dao.*; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Controller; |
| | |
| | | return qrcodeImgParam; |
| | | } |
| | | |
| | | @NotNull |
| | | private QrcodeImgParam getQrcodeImgParam(SysVipInfo loginUser, QrcodeVo qrcodeVo) throws Exception { |
| | | |
| | | ShopProduct shopProduct = shopProductDao.selectById(qrcodeVo.getProductId()); |
| | |
| | | package com.matrix.system.shopXcx.api.action; |
| | | |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUnit; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | |
| | | import com.matrix.system.activity.entity.ActivitySignRecord; |
| | | import com.matrix.system.activity.entity.ActivitySignWriteoff; |
| | | import com.matrix.system.hive.bean.SysVipInfo; |
| | | import com.matrix.system.shopXcx.api.dto.ClickSignDTO; |
| | | import com.matrix.system.shopXcx.api.dto.SeeAwardTextDto; |
| | | import com.matrix.system.shopXcx.api.dto.SignAwardDto; |
| | | import com.matrix.system.shopXcx.api.vo.*; |
| | |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | |
| | | Long userId = loginUser.getId(); |
| | | //获取签到活动的信息 |
| | | SignBasicInfoVo signBasicInfoVo = new SignBasicInfoVo(); |
| | | AjaxResult ajaxResult = new AjaxResult(); |
| | | |
| | | ShopActivities shopActivities = shopActivitiesDao.selectOneByCompanyIdAndActTypeAndActStatus(companyId,ShopActivities.ACTIVITIES_TYPE_SIGN,ShopActivities.ACTSTATUS_STATUS_ING); |
| | | if(ObjectUtil.isEmpty(shopActivities)){ |
| | | ajaxResult = AjaxResult.buildFailInstance("活动还没有开始"); |
| | | ajaxResult.setData(signBasicInfoVo); |
| | | return ajaxResult; |
| | | } |
| | | Long actId = shopActivities.getId(); |
| | | signBasicInfoVo.setActName(shopActivities.getActName()); |
| | | signBasicInfoVo.setActCode(shopActivities.getActCode()); |
| | |
| | | String actContent = shopActivities.getActContent(); |
| | | SignBasicInfoJsonVo signBasicInfoJsonVo = JSON.parseObject(actContent, SignBasicInfoJsonVo.class); |
| | | signBasicInfoVo.setSignBasicInfoJsonVo(signBasicInfoJsonVo); |
| | | |
| | | List<ActivitySignAwardSetVo> activitySignAwardSetVos = activitySignAwardSetDao |
| | | .selectListByActIDAndCompanyId(actId,companyId,ActivitySignAwardSet.AWARDSTATE_WORK); |
| | | signBasicInfoVo.setActivitySignAwardSetVos(activitySignAwardSetVos); |
| | | |
| | | //今日是否已经参与 |
| | | List<ActivitySignAwardSetVo> activitySignAwardSetVos = activitySignAwardSetDao |
| | | .selectListByActIDAndCompanyId(actId,companyId,ActivitySignAwardSet.AWARDSTATE_WORK); |
| | | signBasicInfoVo.setActivitySignAwardSetVos(activitySignAwardSetVos); |
| | | |
| | | //今日是否已经参与 |
| | | ActivitySignRecord activitySignRecord = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,new Date()); |
| | | if(ObjectUtil.isNotEmpty(activitySignRecord)) { |
| | | signBasicInfoVo.setJoinState(SignBasicInfoVo.JOINSTATE_SIGN); |
| | | signBasicInfoVo.setJoinState(SignBasicInfoVo.JOINSTATE_SIGN); |
| | | }else { |
| | | signBasicInfoVo.setJoinState(SignBasicInfoVo.JOINSTATE_NOTSIGN); |
| | | signBasicInfoVo.setJoinState(SignBasicInfoVo.JOINSTATE_NOTSIGN); |
| | | } |
| | | AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); |
| | | /** |
| | | * 默认获取当前月份 |
| | | * 获取当前月份的天数 |
| | | */ |
| | | List<ActivitySignRecordVo> activitySignRecordVos = new ArrayList<>(); |
| | | //获取当前月的第一天是星期几 |
| | | DateTime dateTime = DateUtil.beginOfMonth(DateUtil.date()); |
| | | int i = DateUtil.dayOfWeek(dateTime); |
| | | for(int j = 1;j<i;j++){ |
| | | ActivitySignRecordVo activitySignRecordVoNull = new ActivitySignRecordVo(); |
| | | activitySignRecordVos.add(activitySignRecordVoNull); |
| | | } |
| | | List<String> monthFullDays = getMonthFullDay(DateUtil.year(DateUtil.date()), DateUtil.month(DateUtil.date()) + 1); |
| | | for(String monthFullDay : monthFullDays){ |
| | | ActivitySignRecordVo activitySignRecordVo = new ActivitySignRecordVo(); |
| | | activitySignRecordVo.setSignTime(monthFullDay); |
| | | activitySignRecordVo.setActivityId(actId); |
| | | activitySignRecordVo.setCompanyId(companyId); |
| | | //对应日期是否已签到 |
| | | Date date = DateUtil.parse(monthFullDay); |
| | | ActivitySignRecord activitySignRecordDone = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,date); |
| | | if(ObjectUtil.isNotEmpty(activitySignRecordDone)){ |
| | | activitySignRecordVo.setState(1); |
| | | }else{ |
| | | activitySignRecordVo.setState(2); |
| | | } |
| | | activitySignRecordVos.add(activitySignRecordVo); |
| | | } |
| | | signBasicInfoVo.setActivitySignRecords(activitySignRecordVos); |
| | | |
| | | //累计签到日期 |
| | | int cumulativeDay = getCumulativeDay(actId, userId, DateUtil.date(), 0); |
| | | signBasicInfoVo.setActAumulativeDay(cumulativeDay); |
| | | ajaxResult = AjaxResult.buildSuccessInstance(""); |
| | | ajaxResult.setData(signBasicInfoVo); |
| | | return ajaxResult; |
| | | } |
| | | |
| | | /** |
| | | /** |
| | | * java 获取 获取某年某月 所有日期(yyyy-mm-dd格式字符串) |
| | | * @param year |
| | | * @param month |
| | | * @return |
| | | */ |
| | | public List<String> getMonthFullDay(int year , int month){ |
| | | SimpleDateFormat dateFormatYYYYMMDD = new SimpleDateFormat("yyyy-MM-dd"); |
| | | List<String> fullDayList = new ArrayList<>(32); |
| | | // 获得当前日期对象 |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.clear();// 清除信息 |
| | | cal.set(Calendar.YEAR, year); |
| | | // 1月从0开始 |
| | | cal.set(Calendar.MONTH, month-1 ); |
| | | // 当月1号 |
| | | cal.set(Calendar.DAY_OF_MONTH,1); |
| | | int count = cal.getActualMaximum(Calendar.DAY_OF_MONTH); |
| | | for (int j = 1; j <= count ; j++) { |
| | | fullDayList.add(dateFormatYYYYMMDD.format(cal.getTime())); |
| | | cal.add(Calendar.DAY_OF_MONTH,1); |
| | | } |
| | | return fullDayList; |
| | | } |
| | | |
| | | /** |
| | | * 获取当月的 天数 |
| | | * */ |
| | | public static int getCurrentMonthDay(Date date) { |
| | | Date beginOfMonth = DateUtil.beginOfMonth(date); |
| | | Date endOfMonth = DateUtil.endOfMonth(date); |
| | | long betweenDay = DateUtil.between(beginOfMonth, endOfMonth, DateUnit.DAY); |
| | | return Integer.parseInt(String.valueOf(betweenDay))+1; |
| | | } |
| | | |
| | | /** |
| | | * 点击签到 |
| | | * |
| | | */ |
| | |
| | | @ApiResponses({ |
| | | @ApiResponse(code = 200, message = "ok", response = SignSuccessVo.class) |
| | | }) |
| | | @PostMapping(value = "/clickSign") |
| | | |
| | | @GetMapping(value = "/clickSign/{actId}") |
| | | @ResponseBody |
| | | @Transactional |
| | | public AjaxResult clickSign(@RequestBody ClickSignDTO clickSignDTO) { |
| | | public AjaxResult clickSign(@PathVariable("actId") long actId) { |
| | | SysVipInfo user = redisUserLoginUtils.getLoginUser(SysVipInfo.class); |
| | | long actId = clickSignDTO.getActId(); |
| | | Long userId = user.getId(); |
| | | Long companyId = user.getCompanyId(); |
| | | /** |
| | |
| | | ActivitySignRecord activitySignRecordOld = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,offsetDay); |
| | | ActivitySignRecord activitySignRecordAdd = new ActivitySignRecord(); |
| | | activitySignRecordAdd.setCompanyId(companyId); |
| | | activitySignRecordAdd.setCreateBy(user.getName()); |
| | | activitySignRecordAdd.setCreateBy(user.getVipName()); |
| | | activitySignRecordAdd.setCreateTime(new Date()); |
| | | activitySignRecordAdd.setUpdateBy(user.getName()); |
| | | activitySignRecordAdd.setUpdateBy(user.getVipName()); |
| | | activitySignRecordAdd.setUpdateTime(new Date()); |
| | | activitySignRecordAdd.setActivityId(actId); |
| | | activitySignRecordAdd.setSignTime(date); |
| | |
| | | activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); |
| | | activitySignReceiveRecord.setActivityId(actId); |
| | | activitySignReceiveRecord.setCompanyId(companyId); |
| | | activitySignReceiveRecord.setCreateBy(user.getName()); |
| | | activitySignReceiveRecord.setCreateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setCreateTime(new Date()); |
| | | activitySignReceiveRecord.setUpdateBy(user.getName()); |
| | | activitySignReceiveRecord.setUpdateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setUpdateTime(new Date()); |
| | | activitySignReceiveRecordDao.insert(activitySignReceiveRecord); |
| | | |
| | | |
| | | signSuccessVo.setScoreCnt(activitySignAwardSetNormal.getScoreCnt()); |
| | | signSuccessVo.setNormalAwardName(activitySignAwardSetNormal.getAwardName()); |
| | | signSuccessVo.setNormalAwardImg(activitySignAwardSetNormal.getIntroduceImg()); |
| | | } |
| | |
| | | activitySignReceiveRecord.setActivityId(actId); |
| | | activitySignReceiveRecord.setCompanyId(companyId); |
| | | activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); |
| | | activitySignReceiveRecord.setCreateBy(user.getName()); |
| | | activitySignReceiveRecord.setCreateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setCreateTime(new Date()); |
| | | activitySignReceiveRecord.setUpdateBy(user.getName()); |
| | | activitySignReceiveRecord.setUpdateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setUpdateTime(new Date()); |
| | | /** |
| | | * 奖项类型(1:自定义产品2:积分3:优惠券4:店铺商品) |
| | |
| | | activitySignWriteoff.setUserId(userId); |
| | | activitySignWriteoff.setCompanyId(companyId); |
| | | activitySignWriteoff.setReceiveId(activitySignReceiveRecord.getId()); |
| | | activitySignWriteoff.setCreateBy(user.getName()); |
| | | activitySignWriteoff.setCreateBy(user.getVipName()); |
| | | activitySignWriteoff.setCreateTime(new Date()); |
| | | activitySignWriteoff.setUpdateBy(user.getName()); |
| | | activitySignWriteoff.setUpdateBy(user.getVipName()); |
| | | activitySignWriteoff.setUpdateTime(new Date()); |
| | | activitySignWriteoffDao.insert(activitySignWriteoff); |
| | | } |
| | |
| | | * |
| | | * @return |
| | | */ |
| | | @ApiOperation(value = "查看劵码", notes = "") |
| | | @ApiOperation(value = "物流配送确认", notes = "") |
| | | @PostMapping(value = "/logisticsInsure") |
| | | @ApiResponses({ |
| | | @ApiResponse(code = 200, message = "ok", response = SeeAwardTextVo.class) |
New file |
| | |
| | | package com.matrix.system.shopXcx.api.vo; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ActivitySignRecordVo", description = "签到明细") |
| | | public class ActivitySignRecordVo { |
| | | |
| | | @ApiModelProperty(value ="签到状态 1:已签到 2:未签到") |
| | | private int state; |
| | | /** |
| | | * 签到时间 |
| | | */ |
| | | |
| | | |
| | | |
| | | @ApiModelProperty(value ="签到时间") |
| | | private String signTime; |
| | | |
| | | /** |
| | | * 活动主表ID |
| | | */ |
| | | |
| | | |
| | | |
| | | @ApiModelProperty(value ="活动主表ID") |
| | | private Long activityId; |
| | | |
| | | /** |
| | | * 公司ID |
| | | */ |
| | | |
| | | |
| | | |
| | | @ApiModelProperty(value ="公司ID") |
| | | private Long companyId; |
| | | } |
| | |
| | | @ApiModelProperty(value ="数量") |
| | | private int total; |
| | | |
| | | @ApiModelProperty(value ="是否已领取(1:待领取2:已领取)") |
| | | @ApiModelProperty(value ="是否已领取(1:待领取2:已领取 3:待配送 4:待收货)") |
| | | private Integer state; |
| | | |
| | | @ApiModelProperty(value ="领取时间") |
| | |
| | | package com.matrix.system.shopXcx.api.vo; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | |
| | | @Data |
| | | |
| | |
| | | |
| | | public static final int JOINSTATE_NOTSIGN = 1; |
| | | public static final int JOINSTATE_SIGN = 2; |
| | | |
| | | |
| | | @ApiModelProperty(value ="当前累计签到天数") |
| | | private int actAumulativeDay; |
| | | |
| | | @ApiModelProperty(value ="活动名称") |
| | | private String actName; |
| | | @ApiModelProperty(value ="活动编码") |
| | |
| | | private SignBasicInfoJsonVo signBasicInfoJsonVo; |
| | | @ApiModelProperty(value ="奖品信息") |
| | | private List<ActivitySignAwardSetVo> activitySignAwardSetVos; |
| | | @ApiModelProperty(value ="签到天数") |
| | | private List<ActivitySignRecordVo> activitySignRecords; |
| | | |
| | | } |
| | |
| | | |
| | | #线上测试环境 |
| | | |
| | | #spring.datasource.username=ct_test |
| | | #spring.datasource.password=123456 |
| | | #spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 |
| | | spring.datasource.username=ct_test |
| | | spring.datasource.password=123456 |
| | | spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 |
| | | |
| | | spring.datasource.username=xc_shop |
| | | spring.datasource.password=xc_shop123!@# |
| | | spring.datasource.url=jdbc:mysql://124.70.222.34/xc_shop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 |
| | | #spring.datasource.username=xc_shop |
| | | #spring.datasource.password=xc_shop123!@# |
| | | #spring.datasource.url=jdbc:mysql://124.70.222.34/xc_shop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 |
| | | |
| | | |
| | | #spring.datasource.username=hive |
| | | #spring.datasource.password=hive123!@# |
| | | #spring.datasource.url=jdbc:mysql://124.70.222.34/hive_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 |
| | | |
| | | |
| | | spring.datasource.type=com.alibaba.druid.pool.DruidDataSource |
| | | spring.datasource.initialSize=3 |
| | |
| | | LEFT JOIN activity_sign_award_set b ON a.award_id = b.id |
| | | where |
| | | b.award_type = 1 |
| | | and a.state = 1 |
| | | and a.company_id = #{companyId} |
| | | and a.user_id = #{userId} |
| | | |
| | |
| | | LEFT JOIN activity_sign_award_set b ON a.award_id = b.id |
| | | WHERE |
| | | b.award_type = 1 |
| | | AND a.state = 1 |
| | | and a.company_id = #{record.companyId} |
| | | and a.user_id = #{record.userId} |
| | | <if test="record.sort !=null"> |
| | |
| | | and a.sign_time like concat('%',DATE(#{format}),'%') |
| | | </select> |
| | | |
| | | <select id="selectRecordByMonth" resultType="com.matrix.system.shopXcx.api.vo.ActivitySignRecordVo"> |
| | | SELECT |
| | | * |
| | | FROM |
| | | activity_sign_record a |
| | | where a.sign_time like concat('%',DATE_FORMAT(#{date},'%Y-%m'),'%') |
| | | and a.activity_id = #{actId} |
| | | and a.user_id = #{userId} |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | group by a.shop_id |
| | | order by amount desc, a.shop_id |
| | | </select> |
| | | |
| | | <!-- 顾问当天下单列表 --> |
| | | <select id="selectSaleManAchieveList" resultMap="AchieveNewMap"> |
| | | select * from achieve_new |
| | | where sale_id=#{saleId} and vip_id=#{vipId} and sale_id=beault_id |
| | | and date_format(datatime, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') |
| | | </select> |
| | | |
| | | <select id="selectBeautyManAchieveList" resultMap="AchieveNewMap"> |
| | | select * from achieve_new |
| | | where beault_id=#{beautyId} and vip_id=#{vipId} |
| | | and date_format(datatime, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') |
| | | </select> |
| | | |
| | | |
| | | <update id="updateAchieveNumOfPeople"> |
| | | <foreach collection="list" item="item" index="index" |
| | | separator=";"> |
| | | update achieve_new set number_of_people=#{num} where id=#{item.id} |
| | | </foreach> |
| | | </update> |
| | | </mapper> |
| | |
| | | <result property="timeLength" column="proj_time_length"/> |
| | | <result property="img" column="proj_img"/> |
| | | <result property="projId" column="proj_projId"/> |
| | | <result property="status" column="proj_status"/> |
| | | </collection> |
| | | </resultMap> |
| | | |
| | |
| | | e.SURPLUS_COUNT proj_SURPLUS_COUNT, |
| | | e.id proj_info_id, |
| | | e.proj_id proj_projId, |
| | | e.status proj_status, |
| | | f.time_length proj_time_length, |
| | | f.img proj_img |
| | | from sys_proj_use a |
| | |
| | | c.NAME as gs_NAME, |
| | | c.UNIT as gs_UNIT, |
| | | c.good_type as gs_good_type, |
| | | c.measure as gs_measure, |
| | | c.GOODS_SORT_ID as gs_GOODS_SORT_ID, |
| | | c.SUPPLIER_ID as gs_SUPPLIER_ID, |
| | | (select TYPE_NAME from sys_goods_type t where t.id=c.GOODS_SORT_ID) gs_goodsSortName, |
| | |
| | | shop_product_comment c |
| | | LEFT JOIN shop_product p ON c.product_id = p.id |
| | | LEFT JOIN shop_order o ON c.order_id = o.id |
| | | LEFT JOIN sys_vip_info b ON c.user_id = b.id |
| | | LEFT JOIN sys_vip_info b ON c.user_id = b.openid |
| | | <where> |
| | | <include refid="where_sql"></include> |
| | | </where> |
| | |
| | | <el-row> |
| | | <el-col :span="4"> |
| | | <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> |
| | | <img src="https://shadow.elemecdn.com/app/element/hamburger.9cf7b091-55e9-11e9-a976-7f4d0b07eef6.png" class="image"> |
| | | <img src="../../../images/sign/meiriqiandao.png" class="image"> |
| | | <div style="padding: 5px;"> |
| | | <span style="padding:5px;font-size: 30px;">每日签到</span> |
| | | <div class="bottom clearfix"> |
| | |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> |
| | | <img src="https://shadow.elemecdn.com/app/element/hamburger.9cf7b091-55e9-11e9-a976-7f4d0b07eef6.png" class="image"> |
| | | <img src="../../../images/sign/tiantianpingtuan.png" class="image"> |
| | | <div style="padding: 5px;"> |
| | | <span style="padding:5px;font-size: 30px;">拼团</span> |
| | | <div class="bottom clearfix"> |
| | |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> |
| | | <img src="https://shadow.elemecdn.com/app/element/hamburger.9cf7b091-55e9-11e9-a976-7f4d0b07eef6.png" class="image"> |
| | | <img src="../../../images/sign/jisumiaosha.png" class="image"> |
| | | <div style="padding: 5px;"> |
| | | <span style="padding:5px;font-size: 30px;">秒杀</span> |
| | | <div class="bottom clearfix"> |
| | |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> |
| | | <img src="https://shadow.elemecdn.com/app/element/hamburger.9cf7b091-55e9-11e9-a976-7f4d0b07eef6.png" class="image"> |
| | | <img src="../../../images/sign/shalonghuodong.png" class="image"> |
| | | <div style="padding: 5px;"> |
| | | <span style="padding:5px;font-size: 30px;">沙龙</span> |
| | | <div class="bottom clearfix"> |
| | |
| | | <script> |
| | | var app = new Vue({ |
| | | el: '#app', |
| | | data: {}, |
| | | data: { |
| | | imageUrlqd: "../../images/sign/meiriqiandao.png", |
| | | imageUrlms: "../../images/sign/jisumiaosha.png", |
| | | imageUrlpt: "../../images/sign/tiantianpingtuan.png", |
| | | imageUrlsl: "../../images/sign/shalonghuodong.png", |
| | | }, |
| | | created: function () { |
| | | }, |
| | | methods: { |
| | |
| | | <el-row style="display:flex;"> |
| | | <el-col> |
| | | <el-form-item label="奖品图片:" :label-width="formLabelWidth"> |
| | | {{formSelect.jptp}} |
| | | <img :src="formSelect.jptp" style="max-width: 200px;"> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col> |
| | |
| | | } |
| | | .imageTwo { |
| | | display: block; |
| | | height: 50px; |
| | | height: 280px; |
| | | padding: 5px 5px; |
| | | text-align: center; |
| | | } |
| | | .imageThree { |
| | | display: block; |
| | | height: 50px; |
| | | padding: 5px 5px; |
| | | text-align: center; |
| | | } |
| | |
| | | <el-container> |
| | | <el-aside width="30%"> |
| | | <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> |
| | | <div @click="uploadImg()" class="imageOne"> |
| | | <!--<div @click="uploadImg()" class="imageOne"> |
| | | <img v-if="imageUrlTitle" :src="imageUrlTitle" style="width: 100%;"> |
| | | <el-button type="primary" v-show="imageUrlTitle == ''" round><span style="font-size: 20px;">标题</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> |
| | | </div> |
| | | <div @click="uploadImg()" class="imageTwo" > |
| | | <img v-if="imageUrlHead" :src="imageUrlHead" style="width: 100%;"> |
| | | <el-button type="primary" v-show="imageUrlHead == ''" round><span style="font-size: 20px;">头部</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> |
| | | </div> |
| | | </div>--> |
| | | <el-row> |
| | | <div @click="uploadImg()" class="imageTwo" > |
| | | <img v-if="imageUrlHead" :src="imageUrlHead" style="width: 100%;height: 100%"> |
| | | <el-button type="primary" v-show="imageUrlHead == ''" round><span style="font-size: 20px;">头部</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> |
| | | </div> |
| | | </el-row> |
| | | <el-row style="display:flex;"> |
| | | <el-col> |
| | | <div style="padding:5px;font-size: 15px;text-align: left;"><span>您已累计签到<span style="color: red;">3</span>天</span></div> |
| | |
| | | <div style="padding:5px;font-size: 15px;text-align: right;"><span>签到提醒</span></div> |
| | | </el-col> |
| | | </el-row> |
| | | <div @click="uploadImg()"> |
| | | <el-calendar :range="['2019-03-04', '2019-03-24']"></el-calendar> |
| | | <img v-if="imageUrlState" :src="imageUrlState" style="width: 100%;"> |
| | | <el-button type="primary" v-show="imageUrlState == ''" round><span style="font-size: 20px;">日历签到背景</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> |
| | | </div> |
| | | <div @click="uploadImg()" class="imageThree" > |
| | | <el-button type="primary" v-show="imageUrlButton == ''" round><span style="font-size: 20px;">签到按钮</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> |
| | | <img v-if="imageUrlButton" :src="imageUrlButton" style="width: 100%;"> |
| | | </div> |
| | | |
| | | <div style="text-align: center;padding: 5px;" @click="gzsmSet()"> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 30px;">-- 规则说明--</span> |
| | | <el-row> |
| | | <div @click="uploadImg()"> |
| | | <el-calendar :range="['2019-03-04', '2019-03-24']"></el-calendar> |
| | | <img v-if="imageUrlState" :src="imageUrlState" style="width: 100%;"> |
| | | <!--<el-button type="primary" v-show="imageUrlState == ''" round><span style="font-size: 20px;">日历签到背景</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button>--> |
| | | </div> |
| | | <div class="el-col-sm-24" style="text-align: center;"> |
| | | <span style="padding:5px;font-size: 15px;color: red;">(点击,编辑规则内容,背景颜色,字体颜色、大小、透明度)</span> |
| | | </el-row> |
| | | |
| | | <el-row> |
| | | <div @click="uploadImg()" class="imageThree" > |
| | | <el-button type="primary" v-show="imageUrlButton == ''" round><span style="font-size: 20px;">签到按钮</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> |
| | | <img v-if="imageUrlButton" :src="imageUrlButton" style="width: 100%;"> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 15px;">1、每天参与签到可获得积分</span> |
| | | </el-row> |
| | | |
| | | |
| | | <el-row> |
| | | <div style="text-align: center;padding: 5px;" @click="gzsmSet()"> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 30px;">-- 规则说明--</span> |
| | | </div> |
| | | <div class="el-col-sm-24" style="text-align: center;"> |
| | | <span style="padding:5px;font-size: 15px;color: red;">(点击,编辑规则内容,背景颜色,字体颜色、大小、透明度)</span> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 15px;">1、每天参与签到可获得积分</span> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 15px;">2、连续签到7天将获得赠送大礼包</span> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 15px;">3、每7天重新开始计算</span> |
| | | </div> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 15px;">2、连续签到7天将获得赠送大礼包</span> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 15px;">3、每7天重新开始计算</span> |
| | | </div> |
| | | </div> |
| | | </el-row> |
| | | </el-card> |
| | | </el-aside> |
| | | |
| | | <el-main width="70%"> |
| | | <div> |
| | | <el-tabs v-model="activeName" > |
| | | <el-tabs v-model="activeName" @tab-click="clickSecondTab"> |
| | | <el-tab-pane label="活动设置" name="first"> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="活动名称" prop="actName"> |
| | |
| | | <el-tab-pane label="奖品设置" name="second"> |
| | | <el-row style="display:flex;"> |
| | | <el-col :span="20"> |
| | | <el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab"> |
| | | <el-tabs v-model="editableTabsValue" type="card" closable @tab-click="clickTab" @tab-remove="removeTab"> |
| | | <el-tab-pane v-for="(item, index) in editableTabs" :key="item.name" :label="item.title" :name="item.name"> |
| | | <el-row v-show="editableTabsValue !== '1'"> |
| | | <el-form-item label="签到累计天数"> |
| | |
| | | stripe:true |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="cname" |
| | | label="优惠券名称" |
| | | show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="endTime" |
| | | label="截止日期" |
| | | prop="name" |
| | | label="名称" |
| | | show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column |
| | |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="背景图片上传" name="third"> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <!--<div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="标题"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | |
| | | <img v-if="imageUrlTitle" :src="imageUrlTitle" style="max-width: 300px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div> |
| | | </div>--> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="头部"> |
| | | <el-upload |
| | |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <!--<div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="日历签到背景"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | |
| | | <img v-if="imageUrlState" :src="imageUrlState" style="max-width: 300px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div> |
| | | </div>--> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="签到按钮"> |
| | | <el-upload |
| | |
| | | formLabelWidth: '120px', |
| | | //标题图片 |
| | | imageUrlTitle: '', |
| | | imageUrlHead: '', |
| | | imageUrlButton: '', |
| | | imageUrlHead: "../../../images/sign/signHead.png", |
| | | imageUrlButton: "../../../images/sign/signButton.png", |
| | | imageUrlState: '', |
| | | |
| | | activeClickTab:0, |
| | |
| | | let _this = this; |
| | | _this.drawerCoupon = true; |
| | | _this.activeClickTab = parseInt(name); |
| | | |
| | | console.log(_this.activeClickTab); |
| | | _this.formCoupon.yhjmc = val; |
| | | _this.loadCouponList(); |
| | | }, |
| | |
| | | }, |
| | | //重置 |
| | | resetFormCoupon(formName) { |
| | | // this.formCoupon.yhjmc = '' |
| | | // console.log(this.$refs[formName].resetFields) |
| | | (this.$refs[formName])[0].resetFields(); |
| | | }, |
| | | changePageSizeCoupon(val) { |
| | |
| | | content: JSON.parse(JSON.stringify(prize)), |
| | | }); |
| | | this.editableTabsValue = newTabName; |
| | | this.activeClickTab = parseInt(newTabName); |
| | | }, |
| | | clickSecondTab(targetName) { |
| | | this.activeClickTab = 1; |
| | | }, |
| | | clickTab(targetName) { |
| | | console.log(targetName.name); |
| | | this.activeClickTab = parseInt(targetName.name); |
| | | }, |
| | | removeTab(targetName) { |
| | | let tabs = this.editableTabs; |
| | |
| | | <el-row style="display:flex;"> |
| | | <el-col :span="6"> |
| | | <el-form-item label="奖品图片:" :label-width="formLabelWidth"> |
| | | {{formSelect.jptp}} |
| | | <img :src="formSelect.jptp" style="max-width: 200px;"> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | |
| | | } |
| | | .imageTwo { |
| | | display: block; |
| | | height: 50px; |
| | | height: 280px; |
| | | padding: 5px 5px; |
| | | text-align: center; |
| | | } |
| | | .imageThree { |
| | | display: block; |
| | | height: 50px; |
| | | padding: 5px 5px; |
| | | text-align: center; |
| | | } |
| | |
| | | <el-container> |
| | | <el-aside width="30%"> |
| | | <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> |
| | | <div @click="uploadImg()" class="imageOne"> |
| | | <!--<div @click="uploadImg()" class="imageOne"> |
| | | <img v-if="imageUrlTitle" :src="imageUrlTitle" style="width: 100%;"> |
| | | <el-button type="primary" v-show="imageUrlTitle == ''" round><span style="font-size: 20px;">标题</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> |
| | | </div> |
| | | <div @click="uploadImg()" class="imageTwo" > |
| | | <img v-if="imageUrlHead" :src="imageUrlHead" style="width: 100%;"> |
| | | <el-button type="primary" v-show="imageUrlHead == ''" round><span style="font-size: 20px;">头部</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> |
| | | </div> |
| | | </div>--> |
| | | <el-row> |
| | | <div @click="uploadImg()" class="imageTwo" > |
| | | <img v-if="imageUrlHead" :src="imageUrlHead" style="width: 100%;height: 100%"> |
| | | <el-button type="primary" v-show="imageUrlHead == ''" round><span style="font-size: 20px;">头部</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> |
| | | </div> |
| | | </el-row> |
| | | <el-row style="display:flex;"> |
| | | <el-col> |
| | | <div style="padding:5px;font-size: 15px;text-align: left;"><span>您已累计签到<span style="color: red;">3</span>天</span></div> |
| | |
| | | <div style="padding:5px;font-size: 15px;text-align: right;"><span>签到提醒</span></div> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row> |
| | | <div @click="uploadImg()"> |
| | | <el-calendar :range="['2019-03-04', '2019-03-24']"></el-calendar> |
| | | <img v-if="imageUrlState" :src="imageUrlState" style="width: 100%;"> |
| | | <el-button type="primary" v-show="imageUrlState == ''" round><span style="font-size: 20px;">日历签到背景</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> |
| | | <!--<el-button type="primary" v-show="imageUrlState == ''" round><span style="font-size: 20px;">日历签到背景</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button>--> |
| | | </div> |
| | | </el-row> |
| | | |
| | | <el-row> |
| | | <div @click="uploadImg()" class="imageThree" > |
| | | <el-button type="primary" v-show="imageUrlButton == ''" round><span style="font-size: 20px;">签到按钮</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> |
| | | <img v-if="imageUrlButton" :src="imageUrlButton" style="width: 100%;"> |
| | | </div> |
| | | </el-row> |
| | | |
| | | |
| | | <el-row> |
| | | <div style="text-align: center;padding: 5px;" @click="gzsmSet()"> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 30px;">-- 规则说明--</span> |
| | |
| | | <span style="padding:5px;font-size: 15px;">3、每7天重新开始计算</span> |
| | | </div> |
| | | </div> |
| | | </el-row> |
| | | </el-card> |
| | | </el-aside> |
| | | |
| | | <el-main width="70%"> |
| | | <div> |
| | | <el-tabs v-model="activeName" > |
| | | <el-tabs v-model="activeName" @tab-click="clickSecondTab"> |
| | | <el-tab-pane label="活动设置" name="first"> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="活动名称" prop="actName"> |
| | |
| | | <el-tab-pane label="奖品设置" name="second"> |
| | | <el-row style="display:flex;"> |
| | | <el-col :span="20"> |
| | | <el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab"> |
| | | <el-tabs v-model="editableTabsValue" type="card" closable @tab-click="clickTab" @tab-remove="removeTab"> |
| | | <el-tab-pane v-for="(item, index) in editableTabs" :key="item.name" :label="item.title" :name="item.name"> |
| | | <el-row v-show="editableTabsValue !== '1'"> |
| | | <el-form-item label="签到累计天数"> |
| | |
| | | stripe:true |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="cname" |
| | | label="优惠券名称" |
| | | show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="endTime" |
| | | label="截止日期" |
| | | prop="name" |
| | | label="名称" |
| | | show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column |
| | |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="背景图片上传" name="third"> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <!--<div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="标题"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | |
| | | <img v-if="imageUrlTitle" :src="imageUrlTitle" style="max-width: 300px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div> |
| | | </div>--> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="头部"> |
| | | <el-upload |
| | |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <!--<div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="日历签到背景"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | |
| | | <img v-if="imageUrlState" :src="imageUrlState" style="max-width: 300px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div> |
| | | </div>--> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="签到按钮"> |
| | | <el-upload |
| | |
| | | |
| | | //标题图片 |
| | | imageUrlTitle: '', |
| | | imageUrlHead: '', |
| | | imageUrlButton: '', |
| | | imageUrlHead: "../../../images/sign/signHead.png", |
| | | imageUrlButton: "../../../images/sign/signButton.png", |
| | | imageUrlState: '', |
| | | |
| | | //字体颜色 |
| | |
| | | message: data.info, |
| | | type: 'success', |
| | | }); |
| | | parent.layer.close(parent.layer.getFrameIndex(window.name)); |
| | | } |
| | | }); |
| | | }, |
| | |
| | | content: JSON.parse(JSON.stringify(prize)), |
| | | }); |
| | | this.editableTabsValue = newTabName; |
| | | this.activeClickTab = parseInt(newTabName); |
| | | }, |
| | | clickSecondTab(targetName) { |
| | | this.activeClickTab = 1; |
| | | }, |
| | | clickTab(targetName) { |
| | | console.log(targetName.name); |
| | | this.activeClickTab = parseInt(targetName.name); |
| | | }, |
| | | removeTab(targetName) { |
| | | let tabs = this.editableTabs; |
| | |
| | | //奖品设置的图片介绍 |
| | | introduceImgSuccess(res, file) { |
| | | this.editableTabs[this.activeClickTab-1].content.introduceImg = res.path; |
| | | // this.prize.introduceImg = URL.createObjectURL(file.raw); |
| | | }, |
| | | //奖品设置的客服微信 |
| | | wechatImgSuccess(res, file) { |
| | |
| | | url : basePath+"/admin/sysBusinessData/findDailySaleData", |
| | | showExport : true, |
| | | showFooter : false, |
| | | height:'auto', |
| | | width:'auto', |
| | | exportDataType : "basic", //basic', 'all', 'selected'. |
| | | exportTypes : [ 'excel', 'xlsx' ], //导出类型 |
| | | exportOptions : { |
| | |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="Cache-Control" content="no-siteapp" /> |
| | | <title>HIVE蜜米管理系统</title> |
| | | <title>讯聪管理系统</title> |
| | | <link rel="shortcut icon" href="${path }/resource/images/mm.ico"> |
| | | <!--[if lt IE 8]> |
| | | <meta http-equiv="refresh" content="0;ie.html" /> |
| | |
| | | } |
| | | </style> |
| | | </head> |
| | | <body> |
| | | <div class="ibox-content" id="app" v-cloak> |
| | | <body style="overflow: hidden"> |
| | | <div id="app" v-cloak> |
| | | |
| | | |
| | | <el-row> |
| | |
| | | </el-table> |
| | | |
| | | </el-row> |
| | | <el-row class="mt-20 vertical"> |
| | | <el-row class=" vertical"> |
| | | <el-col :span="10" class="money-box"> |
| | | <div> |
| | | <ul> |
| | |
| | | shopInfo: {}, |
| | | |
| | | |
| | | tableHeight: 500, |
| | | tableHeight: 'calc(100vh - 300px)', |
| | | |
| | | /*****搜索表格数据*********/ |
| | | //搜索关键词 |
| | |
| | | padding-left: 10px; |
| | | margin-left:10px ; |
| | | } |
| | | .openOrClose { |
| | | cursor:pointer |
| | | } |
| | | </style> |
| | | </head> |
| | | <body> |
| | |
| | | |
| | | </el-tab-pane> |
| | | <el-tab-pane label="套餐" name="tab2"> |
| | | <template v-for="(item,index) in taocanList" v-if="index > 3 ? tcIsOpen : true"> |
| | | <p class="el-big-title">{{index}}【{{item.isCourse=='N'?'固定套餐':'任选套餐'}}】{{item.projName}} |
| | | <template v-for="(item,index) in taocanList"> |
| | | <p class="el-big-title"> |
| | | <span class="openOrClose" v-if="!item.openOrClose" @click="openOrCloseTc(item, index, 1)"><i class="el-icon-arrow-down"></i></span> |
| | | <span class="openOrClose" v-if="item.openOrClose" @click="openOrCloseTc(item, index, 2)"><i class="el-icon-arrow-up"></i></span> |
| | | 【{{item.isCourse=='N'?'固定套餐':'任选套餐'}}】{{item.projName}} |
| | | <span style="float: right" v-if="item.failTime != null">有效期:{{item.failTime}}</span> |
| | | <code v-if="item.projInfo.isCourse=='Y'" > 剩余次数:<span v-if="item.projInfo.isInfinite == 'Y'">无限次</span><span v-else>{{item.surplusCount}}</span> </code> |
| | | </p> |
| | | <el-table |
| | | :data="item.taocanProjUse" |
| | | style="width: 98%"> |
| | | style="width: 98%" v-show="item.openOrClose"> |
| | | <el-table-column |
| | | prop="projName" |
| | | label="项目"> |
| | |
| | | </el-table-column> |
| | | </el-table> |
| | | </template> |
| | | <el-row style="text-align: center; margin-top: 5px;"> |
| | | <el-link type="primary" v-if="!tcIsOpen && taocanList.length > 0" @click="tcIsOpen = true">点击展开</el-link> |
| | | <el-link type="primary" v-if="tcIsOpen" @click="tcIsOpen = false">点击隐藏</el-link> |
| | | </el-row> |
| | | <!-- <el-row style="text-align: center; margin-top: 5px;">--> |
| | | <!-- <el-link type="primary" v-if="!tcIsOpen && taocanList.length > 0" @click="tcIsOpen = true">点击展开</el-link>--> |
| | | <!-- <el-link type="primary" v-if="tcIsOpen" @click="tcIsOpen = false">点击隐藏</el-link>--> |
| | | <!-- </el-row>--> |
| | | </el-tab-pane> |
| | | |
| | | </el-tabs> |
| | |
| | | closeFram: function () { |
| | | parent.layer.close(parent.layer.getFrameIndex(window.name)); |
| | | }, |
| | | openOrCloseTc : function (item, index, value) { |
| | | if (value == 1) { |
| | | item.openOrClose = true; |
| | | } else { |
| | | item.openOrClose = false; |
| | | } |
| | | Vue.set(this.taocanList, index, item); |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | padding-left: 10px; |
| | | margin-left:10px ; |
| | | } |
| | | .openOrClose { |
| | | cursor:pointer |
| | | } |
| | | </style> |
| | | </head> |
| | | <body> |
| | |
| | | |
| | | </el-tab-pane> |
| | | <el-tab-pane label="套餐" name="tab2"> |
| | | <template v-for="(item,index) in taocanList" v-if="index > 3 ? tcIsOpen : true"> |
| | | <p class="el-big-title">【{{item.isCourse=='N'?'固定套餐':'任选套餐'}}】{{item.projName}} |
| | | <template v-for="(item,index) in taocanList"> |
| | | <p class="el-big-title"> |
| | | <span class="openOrClose" v-if="!item.openOrClose" @click="openOrCloseTc(item, index, 1)"><i class="el-icon-arrow-down"></i></span> |
| | | <span class="openOrClose" v-if="item.openOrClose" @click="openOrCloseTc(item, index, 2)"><i class="el-icon-arrow-up"></i></span> |
| | | 【{{item.isCourse=='N'?'固定套餐':'任选套餐'}}】{{item.projName}} |
| | | <span style="float: right" v-if="item.failTime != null">有效期:{{item.failTime}}</span> |
| | | <code v-if="item.projInfo.isCourse=='Y'" > 剩余次数:<span v-if="item.projInfo.isInfinite == 'Y'">无限次</span><span v-else>{{item.surplusCount}}</span> </code> |
| | | </p> |
| | | <el-table |
| | | :data="item.taocanProjUse" |
| | | style="width: 98%"> |
| | | style="width: 98%" v-show="item.openOrClose"> |
| | | <el-table-column |
| | | prop="projName" |
| | | label="项目"> |
| | |
| | | </el-table-column> |
| | | </el-table> |
| | | </template> |
| | | <el-row style="text-align: center; margin-top: 5px;"> |
| | | <el-link type="primary" v-if="!tcIsOpen && taocanList.length > 0" @click="tcIsOpen = true">点击展开</el-link> |
| | | <el-link type="primary" v-if="tcIsOpen" @click="tcIsOpen = false">点击隐藏</el-link> |
| | | </el-row> |
| | | <!-- <el-row style="text-align: center; margin-top: 5px;">--> |
| | | <!-- <el-link type="primary" v-if="!tcIsOpen && taocanList.length > 0" @click="tcIsOpen = true">点击展开</el-link>--> |
| | | <!-- <el-link type="primary" v-if="tcIsOpen" @click="tcIsOpen = false">点击隐藏</el-link>--> |
| | | <!-- </el-row>--> |
| | | </el-tab-pane> |
| | | |
| | | </el-tabs> |
| | |
| | | closeFram: function () { |
| | | parent.layer.close(parent.layer.getFrameIndex(window.name)); |
| | | }, |
| | | |
| | | openOrCloseTc : function (item, index, value) { |
| | | if (value == 1) { |
| | | item.openOrClose = true; |
| | | } else { |
| | | item.openOrClose = false; |
| | | } |
| | | Vue.set(this.taocanList, index, item); |
| | | } |
| | | } |
| | | |
| | | }) |
| | |
| | | }); |
| | | } |
| | | , |
| | | getFreedBeautyd: function (index) { |
| | | getFreedBeautyd: function () { |
| | | console.log("获取美疗师"); |
| | | let _this = this; |
| | | let projService = _this.projService; |
| | | let beStates = projService.serviceItems[index]; |
| | | |
| | | let beStates = projService.serviceItems[0]; |
| | | console.log(beStates); |
| | | if (beStates == null || MTools.isBlank(beStates.beginTimeForm) || MTools.isBlank(beStates.endTimeForm ) ){ |
| | | return; |
| | | } |
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/plugin/jquery-2.1.4.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script> |
| | | |
| | | </head> |
| | | <body class=" container-fluid"> |
| | | <div class="pd-10"> |
| | | <!-- 搜索框部分start --> |
| | | <div class="row form-head"> |
| | | <form class="form-inline" id="serchform"> |
| | | <div class="form-group mr-20 "> |
| | | <div class="btn-group search-list " data-for="search-text"> |
| | | <button type="button" |
| | | class="btn btn-default dropdown-toggle searchlist" |
| | | data-toggle="dropdown"> |
| | | 产品名称 <span class="caret "></span> |
| | | </button> |
| | | <ul class="dropdown-menu" role="menu"> |
| | | <li data-field="goods.name"><a>产品名称</a></li> |
| | | <li data-field="goods.goodsNo"><a>产品编号 </a></li> |
| | | </ul> |
| | | </div> |
| | | <input autocomplete="off" id="search-text" name="goods.name" placeholder="输入查询关键词" |
| | | type="text" class="form-control"> |
| | | </div> |
| | | |
| | | <div class="form-group mr-20"> |
| | | <label for="goodsSortId">产品分类</label> <select |
| | | class=" form-control select2" size="1" |
| | | name="goods.goodsSortId" id="goodsSortId"> |
| | | <option value=''>--选择产品分类--</option> |
| | | </select> |
| | | </div> |
| | | <div class="form-group mr-20"> |
| | | <label for="isAlarm">库存报警状态</label> <select class="form-control" |
| | | name="isAlarm" id="isAlarm"> |
| | | <option value=''>--请选择库存报警状态--</option> |
| | | <option value='1'>是</option> |
| | | <option value='2'>否</option> |
| | | </select> |
| | | |
| | | </div> |
| | | <div class="form-group"> |
| | | <button onclick="myGrid.serchData(1)" type="button" |
| | | class="btn btn-sm btn-info"> |
| | | <i class="fa fa-search "></i> 搜索 |
| | | </button> |
| | | <button type="reset" class="btn btn-sm btn-info "> |
| | | <i class="fa fa-refresh "></i> 重置 |
| | | </button> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | <div class="row mt-10"> |
| | | <div id="option-bar"> |
| | | <button onclick="savePl()" type="button" class="btn btn-info btn-sm"><i class="fa fa-download"></i>选择配料</button> |
| | | <!-- 功能按钮部分 --> |
| | | </div> |
| | | <!-- 数据表格部分 --> |
| | | <table id="mgrid"> |
| | | <thead> |
| | | <tr> |
| | | <th data-checkbox="true"></th> |
| | | <th data-formatter="MGrid.indexfn" data-align="center" |
| | | data-width="30px">序号 |
| | | </th> |
| | | <th data-field="goods.code">产品编号</th> |
| | | <th data-field="goods.name">产品名称</th> |
| | | <th data-field="goods.unit">产品单位</th> |
| | | <th data-field="storeTotal" data-formatter="overTime" |
| | | data-sortable="true">库存量 |
| | | </th> |
| | | <th data-field="goodsPrice">入库平均价</th> |
| | | <th data-field="batchCount">批次数</th> |
| | | <th data-field="goods.alarmNum">库存预警值</th> |
| | | <th data-field="storeName">所属仓库</th> |
| | | <!-- <th data-field="goods.goodType">产品用途</th>--> |
| | | <th data-field="goods.goodsSortName">分类</th> |
| | | </tr> |
| | | </thead> |
| | | </table> |
| | | <!-- 数据表格部分end --> |
| | | </div> |
| | | </div> |
| | | |
| | | <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> |
| | | <script type="text/javascript"> |
| | | |
| | | var myGrid; |
| | | $(function () { |
| | | $(".select2").select2(); |
| | | //初始化商品类型搜索列表 |
| | | initGoodsTypes(); |
| | | //初始化商品属性搜索列表 |
| | | MTools.autoFullSelect(); |
| | | |
| | | myGrid = MGrid.initGrid({ |
| | | url: basePath + "/admin/store/showCountList", |
| | | sortName: "c.goodsNo", |
| | | sortOrder: "asc", |
| | | mutexClick : false, |
| | | clickToSelect : true |
| | | |
| | | }); |
| | | }); |
| | | |
| | | function buidOperate(value, row, index) { |
| | | var html = []; |
| | | html[0] = '<a onClick="openStoreFlow(\'' + row.goods.code |
| | | + '\')" class="text-primary " >流向明细</a>' |
| | | return html.join(""); |
| | | } |
| | | |
| | | function openStoreFlow(productCode){ |
| | | layer.full(layer.open({ |
| | | type : 2, |
| | | title : "库存流向明细", |
| | | maxmin : true, |
| | | area : MUI.SIZE_M, |
| | | content : [ basePath + '/admin/redirect/hive/statistics/store-inout-list?productCode='+productCode ] |
| | | })); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 初始化产品列表 |
| | | */ |
| | | function initGoodsTypes() { |
| | | $.AjaxProxy({ |
| | | a: false, |
| | | c: false |
| | | }).invoke(basePath + "/admin/goodstype/all", function (loj) { |
| | | $("#goodsSortId").createSelectTree(loj.attr("result").rows, { |
| | | append: true, |
| | | value: "typeName" |
| | | }); |
| | | }); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 库存警戒 |
| | | */ |
| | | function overTime(value, row, index) { |
| | | var html = ""; |
| | | var alarmNum = 0; |
| | | if (row.sku != null) { |
| | | alarmNum = row.alarmNum; |
| | | } |
| | | var storeNum = parseInt(value); |
| | | if (alarmNum > storeNum) { |
| | | html = '<span class="label-danger" > ' + value |
| | | + ' </span>'; |
| | | } else { |
| | | html = '<span>' + value + '</span>'; |
| | | } |
| | | return html; |
| | | |
| | | } |
| | | |
| | | function savePl() { |
| | | var rows = $("#mgrid").bootstrapTable('getAllSelections'); |
| | | parent.selectPl(rows); |
| | | parent.layer.close(parent.layer.getFrameIndex(window.name)); |
| | | } |
| | | </script> |
| | | |
| | | </body> |
| | | </html> |
| | |
| | | |
| | | </el-row> |
| | | <el-row class="table-style"> |
| | | <el-table :data="tableData" style="width: 100%"> |
| | | <el-table :data="tableData" |
| | | :height="height" |
| | | style="width: 100%"> |
| | | <el-table-column type="index" width="30"></el-table-column> |
| | | <el-table-column prop="datatime" width="150" label="时间"></el-table-column> |
| | | <el-table-column prop="orderNo" width="180" label="订单编号"> |
| | |
| | | customColumns : [], |
| | | shopList : [], |
| | | achieveUsers : [], |
| | | height:'calc(100vh - 240px)', |
| | | years : [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021], |
| | | months : ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"], |
| | | days : [], |
| | |
| | | url : basePath+"/admin/sysBusinessData/findDailySaleData", |
| | | showExport : true, |
| | | showFooter : false, |
| | | height:'auto', |
| | | width:'auto', |
| | | exportDataType : "basic", //basic', 'all', 'selected'. |
| | | exportTypes : [ 'excel', 'xlsx' ], //导出类型 |
| | | exportOptions : { |
New file |
| | |
| | | <!DOCTYPE HTML> |
| | | <html xmlns:th="http://www.thymeleaf.org"> |
| | | <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/plugin/jquery-2.1.4.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script> |
| | | </head> |
| | | <body> |
| | | <div class="ibox-content"> |
| | | <form class="form-horizontal" id="dataform" |
| | | onsubmit="javascripr:return false;"> |
| | | |
| | | <input autocomplete="off" type="hidden" name="id" th:value="${serviceId} " > |
| | | |
| | | <table class="table table-bordered" id="waptable"> |
| | | <tbody th:each="projInfo,outList:${projInfoList}"> |
| | | |
| | | <tr class="success"> |
| | | <td colspan="6" th:text="'项目名称:'+${projInfo.name}"></td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="6"> |
| | | <table class="table"> |
| | | <thead> |
| | | <tr> |
| | | <th>序号</th> |
| | | <th>配料名称</th> |
| | | <th>推荐消耗</th> |
| | | <th>实际消耗</th> |
| | | <th>配料备注</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody > |
| | | |
| | | <tr class="group" th:each="projGoods,list:${projInfo.assembleGoods}"> |
| | | <td th:text="${list.index+1}" ></td> |
| | | <td th:text="${projGoods.shoppingGoods.name}"></td> |
| | | <td > |
| | | <span th:text="${projGoods.total}+''+${projGoods.shoppingGoods.measure}"></span> |
| | | </td> |
| | | <td > |
| | | <input autocomplete="off" class="form-control" style="width: 200px;float: left;" type="text" name="amount" placeholder="实际用量" > |
| | | <span style="line-height: 30px;margin-left: 10px;" th:text="${projGoods.shoppingGoods.measure}"></span> |
| | | </td> |
| | | <td> |
| | | <input autocomplete="off" type="hidden" name="skuId" th:value="${projGoods.assembleGoodId} " > |
| | | |
| | | <input autocomplete="off" type="text" name="remark" class="form-control" placeholder="配料备注"></td> |
| | | |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | </td> |
| | | </tr> |
| | | |
| | | </tbody> |
| | | </table> |
| | | <div class="form-group " style="position: fixed;bottom: 0px;left: 49%;z-index: 9999;background: #ffffff;text-align: center;"> |
| | | <div class="col-sm-12 text-center"> |
| | | <a href="javascript:;" onclick="myForm.submit()" |
| | | class="btn btn-success radius">配料完成</a> |
| | | </div> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | </body> |
| | | |
| | | |
| | | <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> |
| | | <script th:inline="javascript"> |
| | | |
| | | var myForm=MForm.initForm({ |
| | | invokeUrl:basePath+"/admin/projService/endPl", |
| | | afterSubmit:function(){ |
| | | if (parent.myGrid) { |
| | | parent.myGrid.serchData(); |
| | | } |
| | | |
| | | if (parent.app) { |
| | | parent.app.serviceOrderQuery(); |
| | | } |
| | | }, |
| | | }); |
| | | |
| | | var index=0; |
| | | //设置namename |
| | | $(".group").each(function(){ |
| | | |
| | | var inputs=$(this).find("input"); |
| | | inputs.each(function(){ |
| | | $(this).attr("name","outStoreItem["+index+"]."+$(this).attr("name")); |
| | | }); |
| | | index++; |
| | | }); |
| | | </script> |
| | | </body> |
| | | </html> |
| | |
| | | <!DOCTYPE HTML> |
| | | <html xmlns:th="http://www.thymeleaf.org"> |
| | | <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/plugin/jquery-2.1.4.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script> |
| | | <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/plugin/jquery-2.1.4.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script> |
| | | </head> |
| | | <body> |
| | | <div class="ibox-content"> |
| | | <form class="form-horizontal" id="dataform" |
| | | onsubmit="javascripr:return false;"> |
| | | <div class="ibox-content"> |
| | | <form class="form-horizontal" id="dataform" |
| | | onsubmit="javascripr:return false;"> |
| | | |
| | | <input autocomplete="off" type="hidden" name="id" th:value="${serviceId} " > |
| | | <input autocomplete="off" type="hidden" name="id" th:value="${serviceId} " > |
| | | |
| | | <table class="table table-bordered" id="waptable"> |
| | | <tbody th:each="projInfo,outList:${projInfoList}"> |
| | | <table class="table table-bordered" id="waptable"> |
| | | <tbody th:each="projInfo,outList:${projInfoList}"> |
| | | |
| | | <tr class="success"> |
| | | <td colspan="6" th:text="'项目名称:'+${projInfo.name}"></td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="6"> |
| | | <table class="table"> |
| | | <thead> |
| | | <tr> |
| | | <th>序号</th> |
| | | <th>配料名称</th> |
| | | <th>推荐消耗</th> |
| | | <th>实际消耗</th> |
| | | <th>配料备注</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody > |
| | | <tr class="success"> |
| | | <td colspan="5" th:text="'项目名称:'+${projInfo.name}"></td> |
| | | <td colspan="1" ><button type="button" class="btn btn-primary btn-xs" th:onclick="'javascript:openPlList('+ ${outList.index} +')'">添加配料</button></td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="6"> |
| | | <table class="table"> |
| | | <thead> |
| | | <tr> |
| | | <th>序号</th> |
| | | <th>配料名称</th> |
| | | <th>推荐消耗</th> |
| | | <th>实际消耗</th> |
| | | <th>配料备注</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody th:attrappend="id=${outList.index}" > |
| | | |
| | | <tr class="group" th:each="projGoods,list:${projInfo.assembleGoods}"> |
| | | <td th:text="${list.index+1}" ></td> |
| | | <td th:text="${projGoods.shoppingGoods.name}"></td> |
| | | <td > |
| | | <span th:text="${projGoods.total}+''+${projGoods.shoppingGoods.measure}"></span> |
| | | </td> |
| | | <td > |
| | | <input autocomplete="off" class="form-control" style="width: 200px;float: left;" type="text" name="amount" placeholder="实际用量" > |
| | | <span style="line-height: 30px;margin-left: 10px;" th:text="${projGoods.shoppingGoods.measure}"></span> |
| | | </td> |
| | | <td> |
| | | <input autocomplete="off" type="hidden" name="skuId" th:value="${projGoods.assembleGoodId} " > |
| | | <tr class="group" th:each="projGoods,list:${projInfo.assembleGoods}"> |
| | | <td th:text="${list.index+1}" ></td> |
| | | <td th:text="${projGoods.shoppingGoods.name}"></td> |
| | | <td > |
| | | <span th:text="${projGoods.total}+''+${projGoods.shoppingGoods.measure}"></span> |
| | | </td> |
| | | <td > |
| | | <input autocomplete="off" class="form-control" style="width: 200px;float: left;" type="text" name="amount" placeholder="实际用量" > |
| | | <span style="line-height: 30px;margin-left: 10px;" th:text="${projGoods.shoppingGoods.measure}"></span> |
| | | </td> |
| | | <td><input autocomplete="off" type="hidden" name="skuId" th:value="${projGoods.assembleGoodId} " > |
| | | |
| | | <input autocomplete="off" type="text" name="remark" class="form-control" placeholder="配料备注"></td> |
| | | <input autocomplete="off" type="text" name="remark" class="form-control" placeholder="配料备注"></td> |
| | | |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | </td> |
| | | </tr> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | </td> |
| | | </tr> |
| | | |
| | | </tbody> |
| | | </table> |
| | | <div class="form-group " style="position: fixed;bottom: 0px;left: 49%;z-index: 9999;background: #ffffff;text-align: center;"> |
| | | <div class="col-sm-12 text-center"> |
| | | <a href="javascript:;" onclick="myForm.submit()" |
| | | class="btn btn-success radius">配料完成</a> |
| | | </div> |
| | | </tbody> |
| | | </table> |
| | | <div class="form-group " style="position: fixed;bottom: 0px;left: 49%;z-index: 9999;background: #ffffff;text-align: center;"> |
| | | <div class="col-sm-12 text-center"> |
| | | <a href="javascript:;" onclick="myForm.submit()" |
| | | class="btn btn-success radius">配料完成</a> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | </body> |
| | | |
| | | |
| | | <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> |
| | | <script th:inline="javascript"> |
| | | |
| | | var plList = [[${projInfoList}]]; |
| | | var projIndex = 0; |
| | | var myForm=MForm.initForm({ |
| | | invokeUrl:basePath+"/admin/projService/endPl", |
| | | beforeSubmit : function() { |
| | | var fieldArray = $("#dataform").serializeArray(); |
| | | console.log(fieldArray); |
| | | }, |
| | | afterSubmit:function(){ |
| | | if (parent.myGrid) { |
| | | parent.myGrid.serchData(); |
| | |
| | | }); |
| | | index++; |
| | | }); |
| | | </script> |
| | | |
| | | function openPlList(value) { |
| | | projIndex = value; |
| | | layer.full(layer.open({ |
| | | type: 2, |
| | | title: "选择配料", |
| | | maxmin: true, |
| | | area: [MUI.SIZE_L, '450px'], |
| | | content: [basePath + '/admin/redirect/hive/instore/store-list-pl'] |
| | | })); |
| | | } |
| | | |
| | | function selectPl(rows) { |
| | | console.log(rows); |
| | | if (rows) { |
| | | var projInfo = plList[projIndex]; |
| | | var idSelect = "#"+projIndex; |
| | | var allGroup = $(".group").length; |
| | | console.log(idSelect); |
| | | var groupLength = $(idSelect + " .group").length; |
| | | for(var i = 0; i < rows.length; i++) { |
| | | var row = rows[i]; |
| | | var nextIndex = groupLength + i + 1; |
| | | var outItemIndex = allGroup + i; |
| | | var html = '<tr class="group">' |
| | | + '<td>'+ nextIndex +'</td>' |
| | | + '<td>'+ row.goods.name +'</td>' |
| | | + '<td><span></span></td>' |
| | | + '<td ><input autocomplete="off" class="form-control" style="width: 200px;float: left;" type="text" name="outStoreItem['+ outItemIndex +'].amount" placeholder="实际用量" >' |
| | | + '<span style="line-height: 30px;margin-left: 10px;">'+ row.goods.measure +'</span></td>' |
| | | + '<td><input autocomplete="off" type="hidden" name="outStoreItem['+ outItemIndex +'].skuId" value="'+ row.goods.id +'">' |
| | | + '<input autocomplete="off" type="text" name="outStoreItem['+ outItemIndex +'].remark" class="form-control" placeholder="配料备注"></td></tr>'; |
| | | |
| | | if ($(idSelect).children(':last').length <= 0) { |
| | | $(idSelect).html(html); |
| | | } else { |
| | | $(idSelect).children(':last').after(html); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | </body> |
| | | </html> |
| | |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="Cache-Control" content="no-siteapp"/> |
| | | <title>HIVE管理系统</title> |
| | | <title>讯聪管理系统</title> |
| | | <!-- 本框架基本脚本和样式 --> |
| | | <link rel="stylesheet" type="text/css" th:href="@{/plugin/layer/skin/layer.css}"> |
| | | <script type="text/javascript" |
| | |
| | | <a id="dLabel" data-toggle="dropdown" class="dropdown-toggle" href="#" aria-haspopup="true" aria-expanded="true"> |
| | | <span class="clear" style="height: auto;"> |
| | | <span class="block m-t-xs"> |
| | | <strong class="font-bold">HIVE</strong> |
| | | <strong class="font-bold">讯聪管理系统</strong> |
| | | </span> |
| | | </span> |
| | | </a> |
| | |
| | | |
| | | .download-bar a:hover { |
| | | text-decoration: underline; |
| | | color: #fff; |
| | | color: #4968bd; |
| | | } |
| | | </style> |
| | | <script> |
| | |
| | | href="https://pubstorage-bucket.oss-cn-shenzhen.aliyuncs.com/tools/xp/49.0.2623.112_chrome_installer.exe " |
| | | target="_blank">谷歌浏览器(推荐)</a><span>|</span><strong>打印控件:</strong><a |
| | | href="https://pubstorage-bucket.oss-cn-shenzhen.aliyuncs.com/tools/CLodop_Setup_for_Win32NT_https_3.056Extend.exe" |
| | | target="_blank">下载控件</a><span>|</span> |
| | | target="_blank">下载控件</a><span>|</span><strong>APP:</strong><a |
| | | href="http://testfile.hive.jyymatrix.cc/mobile/download.html" |
| | | target="_blank">下载APP客户端</a> |
| | | </p> |
| | | </div> |
| | | </div> |
| | |
| | | import com.matrix.system.shopXcx.api.vo.SignBasicInfoVo; |
| | | import com.matrix.system.shopXcx.bean.ShopActivities; |
| | | import com.matrix.system.shopXcx.dao.ShopActivitiesDao; |
| | | import org.junit.Assert; |
| | | import org.junit.Test; |
| | | import org.junit.runner.RunWith; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | import org.springframework.boot.test.web.client.TestRestTemplate; |
| | | import org.springframework.test.context.junit4.SpringRunner; |
| | | |
| | | import java.util.ArrayList; |
| | |
| | | @Autowired |
| | | private ActivitySignAwardSetDao activitySignAwardSetDao; |
| | | |
| | | @Autowired |
| | | private TestRestTemplate restTemplate; |
| | | |
| | | |
| | | @Test |
| | | public void getName() { |
| | | String name = restTemplate.getForObject("/common/job", String.class); |
| | | System.out.println(name); |
| | | Assert.assertEquals("1", name); |
| | | } |
| | | |
| | | @Test |
| | | public void getSignBasicInfo() { |