| | |
| | | private SmsCodeService smsCodeService; |
| | | |
| | | String PZH = " ————————————————— "; |
| | | Integer PBN = 6; |
| | | Integer PBN = 3; |
| | | |
| | | @RequestMapping(value = "/weekly/{id}/auth") |
| | | @ManagerAuth |
| | | public R get(@PathVariable("id") String id) { |
| | | return R.ok(weeklyService.selectById(String.valueOf(id))); |
| | | Weekly weekly = weeklyService.selectById(String.valueOf(id)); |
| | | assert weekly != null; |
| | | JSONObject resultObj = JSON.parseObject(JSON.toJSONString(weekly)); |
| | | if (!Cools.isEmpty(weekly.getForm())) { |
| | | JSONObject formObj = JSON.parseObject(weekly.getForm()); |
| | | formObj.forEach(resultObj::putIfAbsent); |
| | | } |
| | | |
| | | // 步骤条相关 |
| | | resultObj.put("step", weekly.getSettle().equals(weekly.getSettleSize()) ? 0 : weekly.getSettle() + 1); |
| | | |
| | | return R.ok().add(resultObj); |
| | | // return R.ok(weeklyService.selectById(String.valueOf(id))); |
| | | } |
| | | |
| | | @RequestMapping(value = "/weekly/list/auth") |
| | |
| | | |
| | | @RequestMapping(value = "/weekly/delete/auth") |
| | | @ManagerAuth |
| | | public R delete(@RequestParam(value="ids[]") Long[] ids){ |
| | | for (Long id : ids){ |
| | | weeklyService.deleteById(id); |
| | | } |
| | | return R.ok(); |
| | | public R delete(@RequestParam() Long[] ids){ |
| | | try{ |
| | | for (Long id : ids){ |
| | | List<WeeklyDailyReality> weeklyDailyRealities = weeklyDailyRealityService.selectList(new EntityWrapper<WeeklyDailyReality>().eq("weekly_id", id)); |
| | | for (WeeklyDailyReality weeklyDailyReality:weeklyDailyRealities){ |
| | | weeklyDailyRealityService.deleteById(weeklyDailyReality); |
| | | } |
| | | List<WeeklyDailyPlan> weeklyDailyPlans = weeklyDailyPlanService.selectList(new EntityWrapper<WeeklyDailyPlan>().eq("weekly_id", id)); |
| | | for (WeeklyDailyPlan weeklyDailyPlan:weeklyDailyPlans){ |
| | | weeklyDailyPlanService.deleteById(weeklyDailyPlan); |
| | | } |
| | | List<WeeklyFoll> weeklyFolls = weeklyFollService.selectList(new EntityWrapper<WeeklyFoll>().eq("weekly_id", id)); |
| | | for (WeeklyFoll weeklyFoll:weeklyFolls){ |
| | | weeklyFollService.deleteById(weeklyFoll); |
| | | } |
| | | weeklyService.deleteById(id); |
| | | } |
| | | }catch (Exception e){ |
| | | throw new CoolException("删除失败,异常信息:"+e); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/weekly/export/auth") |
| | |
| | | weekly.setWeeklyNowMonth(TimeCalculatorUtils.WeeklyNowMonthDay(weekly.getStartTime())); |
| | | weekly.setWeeklyDayMonth(weekly.getWeeklyMonth()+"月第"+weekly.getWeeklyNowMonth()+"周"); |
| | | |
| | | List<User> userList = new ArrayList<>(); |
| | | userList.add(getUser()); |
| | | User manager = new User(); |
| | | try { |
| | | manager = userService.getDeptManager(getHostId(), getUser().getDeptId()); // 获取部门领导 |
| | | } catch (Exception e) { |
| | | manager = getUser(); |
| | | } |
| | | userList.add(manager); |
| | | weekly.setDirector(manager.getId()); |
| | | // 获取业务员 |
| | | List<String> initNames = new ArrayList<>(); |
| | | initNames.add("创建了审批"); |
| | | initNames.add("业务员提交"); |
| | | initNames.add("部门领导审核"); |
| | | List<User> users = new ArrayList<>(); |
| | | users.add(getUser()); |
| | | users.add(getUser()); |
| | | users.add(manager); |
| | | // users.add(getUser()); |
| | | weekly.setSettleMsg(JSON.toJSONString(SettleDto.InItFlowPathTwo(users, initNames, users.size()))); |
| | | weekly.setSettleSize(users.size()); |
| | | weekly.setSettleCurrent(1); |
| | | if (users.size() > 1) { |
| | | weekly.setDirector(users.get(1).getId()); |
| | | } else { |
| | | weekly.setDirector(getUserId()); |
| | | } |
| | | |
| | | |
| | | weekly.setSettleSize(users.size()); |
| | | |
| | | List<Date> dates = TimeCalculatorUtils.WeeklyListDays(dateList);//获取周一到周日日期 |
| | | |
| | |
| | | } |
| | | |
| | | try{ |
| | | insertWeeklyFoll(userList,weekly.getId()); // 自动添加跟进人 |
| | | insertWeeklyFoll(users,weekly.getId()); // 自动添加跟进人 |
| | | }catch (Exception e){ |
| | | log.error("周报添加跟进人异常,异常信息1:"+e); |
| | | } |
| | |
| | | for (User user:userList){ |
| | | try{ |
| | | // 自动添加跟进人 |
| | | WeeklyFoll weeklyFoll = new WeeklyFoll(); |
| | | weeklyFoll.setUserId(user.getId()); |
| | | weeklyFoll.setWeeklyId(weeklyId); |
| | | weeklyFollService.insert(weeklyFoll); |
| | | List<WeeklyFoll> weeklyFolls = weeklyFollService.selectList(new EntityWrapper<WeeklyFoll>().eq("weekly_id", weeklyId).eq("user_id", user.getId())); |
| | | if (weeklyFolls.size()==0){ |
| | | WeeklyFoll weeklyFoll = new WeeklyFoll(); |
| | | weeklyFoll.setUserId(user.getId()); |
| | | weeklyFoll.setWeeklyId(weeklyId); |
| | | weeklyFollService.insert(weeklyFoll); |
| | | } |
| | | }catch (Exception e){ |
| | | log.error("周报添加跟进人异常,异常信息2:"+e); |
| | | continue; |
| | |
| | | weekly.setUpdateBy(getUserId()); |
| | | weekly.setUpdateTime(now); |
| | | |
| | | List<User> userList = new ArrayList<>(); |
| | | userList.add(getUser()); |
| | | User manager = new User(); |
| | | try { |
| | | manager = userService.getDeptManager(getHostId(), getUser().getDeptId()); // 获取部门领导 |
| | | } catch (Exception e) { |
| | | manager = getUser(); |
| | | } |
| | | userList.add(manager); |
| | | weekly.setDirector(manager.getId()); |
| | | |
| | | // 获取业务员 |
| | | List<String> initNames = new ArrayList<>(); |
| | | initNames.add("创建了审批"); |
| | | initNames.add("业务员提交"); |
| | | initNames.add("部门领导审核"); |
| | | // initNames.add("业务员确认"); |
| | | List<User> users = new ArrayList<>(); |
| | | users.add(getUser()); |
| | | users.add(getUser()); |
| | | users.add(manager); |
| | | // users.add(getUser()); |
| | |
| | | } |
| | | |
| | | try{ |
| | | insertWeeklyFoll(userList,weekly.getId()); // 自动添加跟进人 |
| | | insertWeeklyFoll(users,weekly.getId()); // 自动添加跟进人 |
| | | }catch (Exception e){ |
| | | log.error("周报添加跟进人异常,异常信息1:"+e); |
| | | } |
| | |
| | | @TableField("weekly_day_month") |
| | | private String weeklyDayMonth; |
| | | |
| | | /** |
| | | * 表单内容 |
| | | */ |
| | | @ApiModelProperty(value= "表单内容") |
| | | private String form; |
| | | |
| | | public Weekly() {} |
| | | |
| | | public Weekly(Date startTime,Date endTime,Long userId,Long hostId,Long deptId,String cstmrIdsReality,Integer status,Integer settle,String settleMsg,String comment,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo,Long director,Integer settleSize,Integer settleCurrent,String cstmrIdsPlan,Integer weeklyAll,Integer weeklyNowMonth,Integer weeklyYear,Integer weeklyMonth,Integer weeklyDay,String weeklyDayMonth) { |
| | |
| | | case 0: |
| | | return "默认"; |
| | | case 1: |
| | | return "开始"; |
| | | return "待提交"; |
| | | case 2: |
| | | return "组长待审"; |
| | | return "待审核"; |
| | | case 3: |
| | | return "组长审核"; |
| | | case 4: |
| | | return "规划待审"; |
| | | case 5: |
| | | return "规划审核"; |
| | | case 6: |
| | | return "审批中"; |
| | | case 7: |
| | | return "审批通过"; |
| | | return "通过"; |
| | | // case 4: |
| | | // return "规划待审"; |
| | | // case 5: |
| | | // return "规划审核"; |
| | | // case 6: |
| | | // return "审批中"; |
| | | // case 7: |
| | | // return "审批通过"; |
| | | default: |
| | | return String.valueOf(this.settle); |
| | | } |
| | |
| | | var planByMore; |
| | | var priQuoteByMore; |
| | | var reimburseOnlineByMore; |
| | | var weeklyByMore; |
| | | |
| | | function getQueryVariable(variable) |
| | | { |
| | |
| | | var htmlCstmrData; |
| | | var indexS = "9999,8888"; |
| | | var indexDelSign = 0; |
| | | let nowUserId2 = 0; |
| | | fWeekly(); |
| | | function fWeekly() { |
| | | layui.jquery.ajax({ |
| | | url: baseUrl + "/dashboard/user/id/popup/auth", |
| | | data:{token : localStorage.getItem('token')}, |
| | | method: 'GET', |
| | | success: function (res) { |
| | | if (res.code === 200) { |
| | | nowUserId2 = res.data; |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | layui.config({ |
| | | base: baseUrl + "/static/layui/lay/modules/" |
| | | }).extend({ |
| | |
| | | ,{field: 'deptId$', align: 'center',title: '所属部门',hide : true} |
| | | ,{field: 'cstmrIdsReality', align: 'center',title: '实际甲方单位ID集合',hide : true} |
| | | ,{field: 'status$', align: 'center',title: '状态',hide : false} |
| | | ,{field: 'settle$', align: 'center',title: '进度',hide : false} |
| | | ,{field: 'settleMsg', align: 'center',title: '审核进度',hide : true} |
| | | ,{field: 'weeklyDailyPlan', align: 'center',title: '日计划',hide : false, toolbar: '#tbLookPlan'} |
| | | ,{field: 'weeklyDailyReality', align: 'center',title: '日行程',hide : false, toolbar: '#tbLookReality'} |
| | |
| | | ,{field: 'updateBy$', align: 'center',title: '修改人员',hide : true} |
| | | ,{field: 'updateTime$', align: 'center',title: 'update_time',hide : true} |
| | | ,{field: 'memo', align: 'center',title: '备注(50字)',hide : false} |
| | | ,{field: 'director$', align: 'center',title: '审批人',hide : true} |
| | | ,{field: 'director$', align: 'center',title: '审核节点',hide : true} |
| | | ,{field: 'director', align: 'center',title: '审核节点',hide : true} |
| | | ,{field: 'settle', align: 'center',title: '进度',hide : true} |
| | | ,{field: 'settleSize', align: 'center',title: '流程长度',hide : true} |
| | | ,{field: 'settle$', align: 'center',title: '进度', style: 'color: #1890ff;cursor:pointer', event: 'more',hide: false} |
| | | ,{field: 'settleCurrent', align: 'center',title: '当前进度',hide : true} |
| | | ,{field: 'cstmrIdsPlan', align: 'center',title: '计划甲方单位ID集合',hide : true} |
| | | ,{field: 'weeklyAll', align: 'center',title: '周数',hide : true} |
| | | ,{field: 'weeklyNowMonth', align: 'center',title: '当月第几周',hide : true} |
| | | ,{field: 'nowUserId', align: 'center', title: 'nowUserId', hide: true, templet:function(){ return nowUserId2 }} |
| | | ,{field: 'weeklyYear', align: 'center',title: '年',hide : true} |
| | | ,{field: 'weeklyMonth', align: 'center',title: '月',hide : true} |
| | | ,{field: 'weeklyDay', align: 'center',title: '日',hide : true} |
| | |
| | | url: baseUrl+"/weekly/delete/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: {ids: data.id}, |
| | | method: 'POST', |
| | | traditional:true, |
| | | success: function (res) { |
| | | if (res.code === 200){ |
| | |
| | | <script type="text/html" id="toolbar"> |
| | | <div class="layui-btn-container"> |
| | | <button class="layui-btn layui-btn-sm" lay-event="addBlank">创建周计划</button> |
| | | <!-- <button class="layui-btn layui-btn-sm layui-btn-danger" lay-event="deleteData">删除</button>--> |
| | | <!-- <button class="layui-btn layui-btn-sm layui-btn-danger" lay-event="deleteData">删除</button>--> |
| | | </div> |
| | | </script> |
| | | |
| | |
| | | <input type="button" onclick="upload()" value="上传"/> |
| | | </form> |
| | | |
| | | <!-- {{# if (d.settle == 1 || d.settle == 2 || d.settle == 3 || d.settle == 4 || d.settle == 5) { }}--> |
| | | <!-- <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval2">审批</a>--> |
| | | <!-- {{# } }}--> |
| | | <!-- {{# if ((((d.settle == 2 || d.settle == 3) && d.settleSize==4) || d.settle == 1) && d.nowUserId==d.director) { }}--> |
| | | <!-- {{# } }}--> |
| | | <!-- {{# if (((d.settle == 2 || d.settle == 3)&& d.settleSize==4) && d.nowUserId==d.director) { }}--> |
| | | <!-- {{# } }}--> |
| | | <!-- <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">提交</a>--> |
| | | <script type="text/html" id="operate"> |
| | | |
| | | <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">审批</a> |
| | | |
| | | <a class="layui-btn layui-btn-xs btn-edit" lay-event="approvalEnd">回退审批</a> |
| | | {{# if (d.settle == 1 && d.nowUserId == d.director) { }} |
| | | <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">提交</a> |
| | | {{# } }} |
| | | {{# if (d.settle == 2 && d.nowUserId == d.director) { }} |
| | | <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">审批</a> |
| | | {{# } }} |
| | | {{# if (d.settle == 3 && d.nowUserId == d.director) { }} |
| | | <a class="layui-btn layui-btn-xs btn-edit" lay-event="approvalEnd">回退审批</a> |
| | | {{# } }} |
| | | |
| | | <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">计划</a> |
| | | <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="editReality">行程</a> |
New file |
| | |
| | | <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> |
| | | <style> |
| | | #formAdvForm { |
| | | background-color: #f3f3f3; |
| | | } |
| | | #formAdvForm .layui-form-item { |
| | | margin-top: 20px; |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | #formAdvForm .layui-form-item .layui-inline { |
| | | margin-bottom: 25px; |
| | | margin-right: 0; |
| | | } |
| | | |
| | | .form-group-bottom { |
| | | position: fixed; |
| | | left: 0; |
| | | right: 0; |
| | | bottom: 0; |
| | | padding: 10px 20px; |
| | | background-color: #fff; |
| | | box-shadow: 0 -1px 2px 0 rgba(0, 0, 0, .05); |
| | | } |
| | | |
| | | .card-body-item { |
| | | display: inline-block; |
| | | border-right: 1px solid #e0e0e0; |
| | | width: 250px; |
| | | padding: 0 30px 0 10px; |
| | | } |
| | | .header-desc { |
| | | overflow:hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | -o-text-overflow:ellipsis; |
| | | } |
| | | |
| | | </style> |
| | | <!-- 正文开始 --> |
| | | <form class="layui-form" id="formAdvForm" lay-filter="formAdvForm" style="height: 100%"> |
| | | <div class="layui-fluid" style="padding-bottom: 75px;height: 100%; overflow: scroll;box-sizing: border-box"> |
| | | <!-- 标题 --> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header" style="padding-top: 5px; padding-bottom: 5px"> |
| | | <div> |
| | | <i class="layui-icon" style="font-size: 20px;color: #1890ff;font-weight: bold"></i> |
| | | <span id="form-name" style="margin: 0 6px;font-size: 18px;font-weight: bold;letter-spacing: 1px"></span> |
| | | <span style="opacity: .5;font-size: small;margin-left: 5px">周计划审批</span> |
| | | </div> |
| | | </div> |
| | | <div class="layui-card-body" style="padding: 30px 20px"> |
| | | |
| | | <div class="layui-tab layui-steps"> |
| | | <ul class="layui-tab-title" id="stepBox"> |
| | | </ul> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | <div class="layui-row"> |
| | | <!-- 数据 --> |
| | | <!-- <div class="layui-col-md9">--> |
| | | <!-- <div class="layui-card">--> |
| | | <!-- <div class="layui-card-header">--> |
| | | <!-- 基本信息--> |
| | | <!-- </div>--> |
| | | <!-- <div class="layui-card-body">--> |
| | | |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- 动态 --> |
| | | <!-- <div class="layui-col-md3" style="width: 24%;margin-left: 1%">--> |
| | | <div class="layui-col-md3" style="width: 100%;"> |
| | | <!-- 时间线 --> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header"> |
| | | <span>流程动态</span> |
| | | </div> |
| | | <div class="layui-card-body"> |
| | | <ul class="layui-timeline" id="timelineBox"> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="form-group-bottom text-right"> |
| | | <button class="layui-btn" lay-filter="refresh" lay-submit><i class="layui-icon"></i> 刷新 </button> |
| | | </div> |
| | | |
| | | </form> |
| | | |
| | | <script type="text/html" id="followerTabOperate"> |
| | | <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="del">删除</a> |
| | | </script> |
| | | |
| | | <!--<!– 跟进人 –>--> |
| | | <!--<script type="text/html" id="followerEditDialog">--> |
| | | <!-- <form id="followerEditForm" lay-filter="followerEditForm" class="layui-form model-form">--> |
| | | <!-- <input name="experimentId" type="hidden"/>--> |
| | | <!-- <div class="layui-form-item" style="float: left;clear: none;margin-right: 20px">--> |
| | | <!-- <label class="layui-form-label">选择成员</label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <div id="followersBox" name="followersBox">--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="layui-form-item text-right" style="float: left;clear: none">--> |
| | | <!-- <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>--> |
| | | <!-- <button class="layui-btn" lay-filter="followerSubmit" lay-submit>保存</button>--> |
| | | <!-- </div>--> |
| | | <!-- </form>--> |
| | | <!--</script>--> |
| | | |
| | | <script type="text/template" id="stepTpl"> |
| | | {{#each list}} |
| | | <li id="step-{{step}}" style="pointer-events: none"> |
| | | <i class="layui-icon layui-icon-ok">{{step}}</i> |
| | | <span class="layui-steps-title">{{title}}</span> |
| | | {{# if username}} |
| | | <span class="layui-steps-content">{{username}}</span> |
| | | {{ else }} |
| | | <span class="layui-steps-content"> </span> |
| | | {{/if}} |
| | | </li> |
| | | {{/each}} |
| | | </script> |
| | | |
| | | <script type="text/template" id="timelineTpl"> |
| | | {{#each list}} |
| | | <li class="layui-timeline-item"> |
| | | <i class="layui-icon layui-timeline-axis"></i> |
| | | <div class="layui-timeline-content layui-text"> |
| | | <h4 class="layui-timeline-title" style="display: inline;margin-right: 10px;">{{title}}</h4> |
| | | <span>{{time}}</span> |
| | | <p> |
| | | {{msg}} |
| | | </p> |
| | | </div> |
| | | </li> |
| | | {{/each}} |
| | | </script> |
| | | |
| | | <script> |
| | | var weeklyId = top.weeklyByMore; |
| | | $('.layui-layer-close').hide(); |
| | | layui.config({ |
| | | base: baseUrl + "/static/layui/lay/modules/" |
| | | }).extend({ |
| | | notice: 'notice/notice', |
| | | steps: 'steps/steps', |
| | | }).use(['form', 'table', 'laydate', 'notice', 'xmSelect', 'steps'], function () { |
| | | var $ = layui.jquery; |
| | | var form = layui.form; |
| | | var table = layui.table; |
| | | var laydate = layui.laydate; |
| | | var notice = layui.notice; |
| | | var xmSelect = layui.xmSelect; |
| | | var steps = layui.steps; |
| | | |
| | | form.render('select'); |
| | | |
| | | init(); |
| | | function init(){ |
| | | notice.msg('正在载入数据......', {icon: 4, position: "topRight"}); |
| | | $.ajax({ |
| | | url: baseUrl + "/weekly/" + weeklyId + "/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | method: 'GET', |
| | | success: function (res) { |
| | | notice.destroy(); |
| | | if (res.code === 200) { |
| | | let weeklyId = res.data; |
| | | top.weeklyByMore = null; |
| | | $("#form-name").html(weeklyId.name); |
| | | // 进度步骤图 |
| | | let template0 = Handlebars.compile($('#stepTpl').html()); |
| | | $('#stepBox').html(template0({list: JSON.parse(weeklyId.settleMsg)})); |
| | | $('#step-' + Number(weeklyId.step)).addClass("layui-this"); |
| | | |
| | | let template1 = Handlebars.compile($('#timelineTpl').html()); |
| | | $('#timelineBox').html(template1({list: JSON.parse(weeklyId.settleMsg)})); |
| | | // 补充html |
| | | $('#customizeBox').html(weeklyId.formHtml); |
| | | // 设备明细 |
| | | form.val('formAdvForm', weeklyId); |
| | | top.convertDisabled($('#formAdvForm :input'), true); |
| | | // 跟进人 |
| | | // initFollowers(weeklyId.id); |
| | | layDateRender(); |
| | | } else if (res.code === 403) { |
| | | top.location.href = baseUrl + "/"; |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | /* 渲染laydate */ |
| | | function layDateRender() { |
| | | laydate.render({ |
| | | elem: '#endTime', |
| | | type: 'datetime' |
| | | }); |
| | | } |
| | | layDateRender(); |
| | | |
| | | /* 监听表单提交 */ |
| | | form.on('submit(refresh)', function (data) { |
| | | init(); |
| | | return false; |
| | | }); |
| | | |
| | | }) |
| | | </script> |