|  |  |  | 
|---|
|  |  |  | //        generator.url="localhost:1433;databasename=zy_crm"; | 
|---|
|  |  |  | //        generator.username="sa"; | 
|---|
|  |  |  | //        generator.password="sa@123"; | 
|---|
|  |  |  | generator.table="man_weekly_foll"; | 
|---|
|  |  |  | generator.table="man_weekly_cost_types"; | 
|---|
|  |  |  | generator.packagePath="com.zy.crm.manager"; | 
|---|
|  |  |  | generator.js = false; | 
|---|
|  |  |  | generator.html = false; | 
|---|
|  |  |  | 
|---|
|  |  |  | package com.zy.crm.manager.controller; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONArray; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.Wrapper; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.plugins.Page; | 
|---|
|  |  |  | import com.core.common.DateUtils; | 
|---|
|  |  |  | import com.zy.crm.manager.entity.ReimburseOnlineDetl; | 
|---|
|  |  |  | import com.zy.crm.manager.entity.Weekly; | 
|---|
|  |  |  | import com.zy.crm.manager.entity.WeeklyDailyPlan; | 
|---|
|  |  |  | import com.zy.crm.manager.entity.param.WeeklyDomainParam; | 
|---|
|  |  |  | import com.zy.crm.manager.service.WeeklyDailyPlanService; | 
|---|
|  |  |  | import com.zy.crm.manager.service.WeeklyService; | 
|---|
|  |  |  | import com.core.annotations.ManagerAuth; | 
|---|
|  |  |  | import com.core.common.BaseRes; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.core.common.R; | 
|---|
|  |  |  | import com.core.domain.KeyValueVo; | 
|---|
|  |  |  | import com.zy.crm.common.web.BaseController; | 
|---|
|  |  |  | import com.zy.crm.manager.utils.TimeCalculatorUtils; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private WeeklyService weeklyService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private WeeklyDailyPlanService weeklyDailyPlanService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/weekly/{id}/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | 
|---|
|  |  |  | return R.ok().add(vos); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/weekly/from/add/auth") | 
|---|
|  |  |  | @ManagerAuth(memo = "周计划/日计划/日实际") | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public R formAdd(@RequestBody WeeklyDomainParam param){ | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | if (Cools.isEmpty(param)){ | 
|---|
|  |  |  | return R.error("参数为空:WeeklyDomainParam"); | 
|---|
|  |  |  | } else if (Cools.isEmpty(param.getWeeklyDailyPlanList()) || param.getWeeklyDailyPlanList().size()==0){ | 
|---|
|  |  |  | return R.error("参数为空:WeeklyDailyPlanList"); | 
|---|
|  |  |  | } else if (Cools.isEmpty(param.getWeeklyType())){ | 
|---|
|  |  |  | return R.error("参数为空:WeeklyDailyPlanList"); | 
|---|
|  |  |  | } else if (Cools.isEmpty(param.getType())){ | 
|---|
|  |  |  | return R.error("参数为空:Type"); | 
|---|
|  |  |  | } else if (Cools.isEmpty(param.getWeeklyType())){ | 
|---|
|  |  |  | return R.error("参数为空:Weekly"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | Weekly weekly = new Weekly(); | 
|---|
|  |  |  | weekly.setHostId(getHostId()); | 
|---|
|  |  |  | weekly.setDeptId(getDeptId());               // 所属部门 | 
|---|
|  |  |  | weekly.setUserId(getUserId());               // 所属人员 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | weekly.setCreateBy(getUserId()); | 
|---|
|  |  |  | weekly.setCreateTime(now); | 
|---|
|  |  |  | weekly.setUpdateBy(getUserId()); | 
|---|
|  |  |  | weekly.setUpdateTime(now); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<Date> dateList = new ArrayList<>();//获取周一与周日日期 | 
|---|
|  |  |  | switch (param.getType()){ | 
|---|
|  |  |  | case 1: | 
|---|
|  |  |  | dateList = TimeCalculatorUtils.WeeklyMondayAndSundayFront(now); | 
|---|
|  |  |  | weekly.setStatus(2); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 2: | 
|---|
|  |  |  | dateList = TimeCalculatorUtils.WeeklyMondayAndSundayNow(now); | 
|---|
|  |  |  | weekly.setStatus(1); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 3: | 
|---|
|  |  |  | dateList = TimeCalculatorUtils.WeeklyMondayAndSundayAfter(now); | 
|---|
|  |  |  | weekly.setStatus(0); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | default: | 
|---|
|  |  |  | return R.error("参数异常:Weekly="+param.getType()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<Date> dates = TimeCalculatorUtils.WeeklyListDays(dateList);//获取周一到周日日期 | 
|---|
|  |  |  | System.out.println(dates.toString()); | 
|---|
|  |  |  | } catch (Exception e){ | 
|---|
|  |  |  | return R.error("异常:"+e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/weekly/detl/all/auth") | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public R head(@RequestParam Integer weeklyId){ | 
|---|
|  |  |  | List<WeeklyDailyPlan> weeklyDailyPlans = weeklyDailyPlanService.selectList(new EntityWrapper<WeeklyDailyPlan>().eq("weekly_id", weeklyId)); | 
|---|
|  |  |  | return R.ok().add(weeklyDailyPlans); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.crm.manager.controller; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONArray; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.Wrapper; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.plugins.Page; | 
|---|
|  |  |  | import com.core.common.DateUtils; | 
|---|
|  |  |  | import com.zy.crm.manager.entity.ReimburseCostTypes; | 
|---|
|  |  |  | import com.zy.crm.manager.entity.ReimburseOnlineDetl; | 
|---|
|  |  |  | import com.zy.crm.manager.entity.WeeklyCostTypes; | 
|---|
|  |  |  | import com.zy.crm.manager.entity.WeeklyDailyPlan; | 
|---|
|  |  |  | import com.zy.crm.manager.service.WeeklyCostTypesService; | 
|---|
|  |  |  | import com.core.annotations.ManagerAuth; | 
|---|
|  |  |  | import com.core.common.BaseRes; | 
|---|
|  |  |  | import com.core.common.Cools; | 
|---|
|  |  |  | import com.core.common.R; | 
|---|
|  |  |  | import com.core.domain.KeyValueVo; | 
|---|
|  |  |  | import com.zy.crm.common.web.BaseController; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RestController | 
|---|
|  |  |  | public class WeeklyCostTypesController extends BaseController { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private WeeklyCostTypesService weeklyCostTypesService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/weeklyCostTypes/{id}/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R get(@PathVariable("id") String id) { | 
|---|
|  |  |  | return R.ok(weeklyCostTypesService.selectById(String.valueOf(id))); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/weeklyCostTypes/list/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R list(@RequestParam(defaultValue = "1")Integer curr, | 
|---|
|  |  |  | @RequestParam(defaultValue = "10")Integer limit, | 
|---|
|  |  |  | @RequestParam(required = false)String orderByField, | 
|---|
|  |  |  | @RequestParam(required = false)String orderByType, | 
|---|
|  |  |  | @RequestParam(required = false)String condition, | 
|---|
|  |  |  | @RequestParam Map<String, Object> param){ | 
|---|
|  |  |  | EntityWrapper<WeeklyCostTypes> wrapper = new EntityWrapper<>(); | 
|---|
|  |  |  | excludeTrash(param); | 
|---|
|  |  |  | convert(param, wrapper); | 
|---|
|  |  |  | allLike(WeeklyCostTypes.class, param.keySet(), wrapper, condition); | 
|---|
|  |  |  | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} | 
|---|
|  |  |  | return R.ok(weeklyCostTypesService.selectPage(new Page<>(curr, limit), wrapper)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ | 
|---|
|  |  |  | for (Map.Entry<String, Object> entry : map.entrySet()){ | 
|---|
|  |  |  | String val = String.valueOf(entry.getValue()); | 
|---|
|  |  |  | if (val.contains(RANGE_TIME_LINK)){ | 
|---|
|  |  |  | String[] dates = val.split(RANGE_TIME_LINK); | 
|---|
|  |  |  | wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); | 
|---|
|  |  |  | wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wrapper.like(entry.getKey(), val); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/weeklyCostTypes/add/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R add(WeeklyCostTypes weeklyCostTypes) { | 
|---|
|  |  |  | weeklyCostTypesService.insert(weeklyCostTypes); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/weeklyCostTypes/update/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R update(WeeklyCostTypes weeklyCostTypes){ | 
|---|
|  |  |  | if (Cools.isEmpty(weeklyCostTypes) || null==weeklyCostTypes.getId()){ | 
|---|
|  |  |  | return R.error(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | weeklyCostTypesService.updateById(weeklyCostTypes); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/weeklyCostTypes/delete/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R delete(@RequestParam(value="ids[]") Long[] ids){ | 
|---|
|  |  |  | for (Long id : ids){ | 
|---|
|  |  |  | weeklyCostTypesService.deleteById(id); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/weeklyCostTypes/export/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R export(@RequestBody JSONObject param){ | 
|---|
|  |  |  | EntityWrapper<WeeklyCostTypes> wrapper = new EntityWrapper<>(); | 
|---|
|  |  |  | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); | 
|---|
|  |  |  | Map<String, Object> map = excludeTrash(param.getJSONObject("weeklyCostTypes")); | 
|---|
|  |  |  | convert(map, wrapper); | 
|---|
|  |  |  | List<WeeklyCostTypes> list = weeklyCostTypesService.selectList(wrapper); | 
|---|
|  |  |  | return R.ok(exportSupport(list, fields)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/weeklyCostTypesQuery/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R query(String condition) { | 
|---|
|  |  |  | EntityWrapper<WeeklyCostTypes> wrapper = new EntityWrapper<>(); | 
|---|
|  |  |  | wrapper.like("id", condition); | 
|---|
|  |  |  | Page<WeeklyCostTypes> page = weeklyCostTypesService.selectPage(new Page<>(0, 10), wrapper); | 
|---|
|  |  |  | List<Map<String, Object>> result = new ArrayList<>(); | 
|---|
|  |  |  | for (WeeklyCostTypes weeklyCostTypes : page.getRecords()){ | 
|---|
|  |  |  | Map<String, Object> map = new HashMap<>(); | 
|---|
|  |  |  | map.put("id", weeklyCostTypes.getId()); | 
|---|
|  |  |  | map.put("value", weeklyCostTypes.getId()); | 
|---|
|  |  |  | result.add(map); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(result); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/weeklyCostTypes/check/column/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R query(@RequestBody JSONObject param) { | 
|---|
|  |  |  | Wrapper<WeeklyCostTypes> wrapper = new EntityWrapper<WeeklyCostTypes>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); | 
|---|
|  |  |  | if (null != weeklyCostTypesService.selectOne(wrapper)){ | 
|---|
|  |  |  | return R.parse(BaseRes.REPEAT).add(getComment(WeeklyCostTypes.class, String.valueOf(param.get("key")))); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //    @RequestMapping("/weeklyCostTypes/all/get/kv") | 
|---|
|  |  |  | //    @ManagerAuth | 
|---|
|  |  |  | //    public R getDataKV(@RequestParam(required = false) String condition) { | 
|---|
|  |  |  | //        List<KeyValueVo> vos = new ArrayList<>(); | 
|---|
|  |  |  | //        Wrapper<WeeklyCostTypes> wrapper = new EntityWrapper<WeeklyCostTypes>().andNew().like("id", condition).orderBy("create_time", false); | 
|---|
|  |  |  | //        weeklyCostTypesService.selectPage(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getId()), item.getId()))); | 
|---|
|  |  |  | //        return R.ok().add(vos); | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/weeklyCostTypes/covert/plan/{id}/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R covert(@PathVariable("id") Integer id) { | 
|---|
|  |  |  | WeeklyDailyPlan weeklyDailyPlan = new WeeklyDailyPlan(id); | 
|---|
|  |  |  | return R.ok().add(weeklyDailyPlan); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // xm-select 搜索商品列表 | 
|---|
|  |  |  | @RequestMapping("/weeklyCostTypes/all/get/kv") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R getReimburseCostTypesDataKV(@RequestParam(required = false) String condition) { | 
|---|
|  |  |  | Wrapper<WeeklyCostTypes> wrapper = new EntityWrapper<WeeklyCostTypes>() | 
|---|
|  |  |  | .andNew().like("type_name", condition); | 
|---|
|  |  |  | List<WeeklyCostTypes> weeklyCostTypesList = weeklyCostTypesService.selectPage(new Page<>(1, 30), wrapper).getRecords(); | 
|---|
|  |  |  | List<com.zy.crm.manager.entity.result.KeyValueVo> valueVos = new ArrayList<>(); | 
|---|
|  |  |  | for (WeeklyCostTypes weeklyCostTypes : weeklyCostTypesList) { | 
|---|
|  |  |  | com.zy.crm.manager.entity.result.KeyValueVo vo = new com.zy.crm.manager.entity.result.KeyValueVo(); | 
|---|
|  |  |  | vo.setName(weeklyCostTypes.getTypeName()); | 
|---|
|  |  |  | vo.setValue(weeklyCostTypes.getId()); | 
|---|
|  |  |  | valueVos.add(vo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok().add(valueVos); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | * ID | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiModelProperty(value= "ID") | 
|---|
|  |  |  | @TableId(value = "id", type = IdType.AUTO) | 
|---|
|  |  |  | private Long id; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.crm.manager.entity; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.enums.IdType; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.annotations.TableField; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import io.swagger.annotations.ApiModelProperty; | 
|---|
|  |  |  | import lombok.Data; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.annotations.TableName; | 
|---|
|  |  |  | import java.io.Serializable; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Data | 
|---|
|  |  |  | @TableName("man_weekly_cost_types") | 
|---|
|  |  |  | public class WeeklyCostTypes implements Serializable { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private static final long serialVersionUID = 1L; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * ID | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiModelProperty(value= "ID") | 
|---|
|  |  |  | @TableId(value = "id", type = IdType.AUTO) | 
|---|
|  |  |  | private Long id; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 名称 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiModelProperty(value= "名称") | 
|---|
|  |  |  | @TableField("type_name") | 
|---|
|  |  |  | private String typeName; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public WeeklyCostTypes() {} | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public WeeklyCostTypes(String typeName) { | 
|---|
|  |  |  | this.typeName = typeName; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //    WeeklyCostTypes weeklyCostTypes = new WeeklyCostTypes( | 
|---|
|  |  |  | //            null    // 名称 | 
|---|
|  |  |  | //    ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.baomidou.mybatisplus.annotations.TableId; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.enums.IdType; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.annotations.TableField; | 
|---|
|  |  |  | import com.zy.crm.manager.service.WeeklyCostTypesService; | 
|---|
|  |  |  | import com.zy.crm.system.entity.*; | 
|---|
|  |  |  | import com.zy.crm.system.service.*; | 
|---|
|  |  |  | import org.springframework.format.annotation.DateTimeFormat; | 
|---|
|  |  |  | 
|---|
|  |  |  | * ID | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiModelProperty(value= "ID") | 
|---|
|  |  |  | @TableId(value = "id", type = IdType.AUTO) | 
|---|
|  |  |  | private Long id; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | this.memo = memo; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public WeeklyDailyPlan(Integer weeklyDay) { | 
|---|
|  |  |  | this.weeklyDay = weeklyDay; | 
|---|
|  |  |  | //        this.userId = userId; | 
|---|
|  |  |  | //        this.hostId = hostId; | 
|---|
|  |  |  | //        this.deptId = deptId; | 
|---|
|  |  |  | //        this.status = status; | 
|---|
|  |  |  | //        this.settle = settle; | 
|---|
|  |  |  | //        this.settleMsg = settleMsg; | 
|---|
|  |  |  | //        this.comment = comment; | 
|---|
|  |  |  | //        this.createBy = createBy; | 
|---|
|  |  |  | //        this.createTime = createTime; | 
|---|
|  |  |  | //        this.updateBy = updateBy; | 
|---|
|  |  |  | //        this.updateTime = updateTime; | 
|---|
|  |  |  | //        this.weeklyMatter = weeklyMatter; | 
|---|
|  |  |  | //        this.director = director; | 
|---|
|  |  |  | //        this.settleSize = settleSize; | 
|---|
|  |  |  | //        this.settleCurrent = settleCurrent; | 
|---|
|  |  |  | //        this.weeklyId = weeklyId; | 
|---|
|  |  |  | //        this.cstmrId = cstmrId; | 
|---|
|  |  |  | //        this.memo = memo; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //    WeeklyDailyPlan weeklyDailyPlan = new WeeklyDailyPlan( | 
|---|
|  |  |  | //            null,    // 日报日期[非空] | 
|---|
|  |  |  | //            null,    // 所属人员[非空] | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public String getWeeklyDay$(){ | 
|---|
|  |  |  | if (null == this.weeklyDay){ return ""; } | 
|---|
|  |  |  | WeeklyCostTypesService weeklyCostTypesService = SpringUtils.getBean(WeeklyCostTypesService.class); | 
|---|
|  |  |  | WeeklyCostTypes weeklyCostTypes = weeklyCostTypesService.selectById(this.weeklyDay); | 
|---|
|  |  |  | if (!Cools.isEmpty(weeklyCostTypes)){ | 
|---|
|  |  |  | return String.valueOf(weeklyCostTypes.getTypeName()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public String getSettle$(){ | 
|---|
|  |  |  | if (null == this.settle){ return null; } | 
|---|
|  |  |  | switch (this.settle){ | 
|---|
|  |  |  | 
|---|
|  |  |  | * ID | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiModelProperty(value= "ID") | 
|---|
|  |  |  | @TableId(value = "id", type = IdType.AUTO) | 
|---|
|  |  |  | private Long id; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | * ID | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiModelProperty(value= "ID") | 
|---|
|  |  |  | @TableId(value = "id", type = IdType.AUTO) | 
|---|
|  |  |  | private Long id; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.crm.manager.entity.param; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.zy.crm.manager.entity.WeeklyDailyPlan; | 
|---|
|  |  |  | import com.zy.crm.manager.entity.WeeklyDailyReality; | 
|---|
|  |  |  | import lombok.Data; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Data | 
|---|
|  |  |  | public class WeeklyDomainParam { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Integer weeklyType; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Integer type; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private List<WeeklyDailyPlan> weeklyDailyPlanList; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private List<WeeklyDailyReality> weeklyDailyRealities; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.crm.manager.mapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.zy.crm.manager.entity.WeeklyCostTypes; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.BaseMapper; | 
|---|
|  |  |  | import org.apache.ibatis.annotations.Mapper; | 
|---|
|  |  |  | import org.springframework.stereotype.Repository; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Mapper | 
|---|
|  |  |  | @Repository | 
|---|
|  |  |  | public interface WeeklyCostTypesMapper extends BaseMapper<WeeklyCostTypes> { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.crm.manager.service; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.zy.crm.manager.entity.WeeklyCostTypes; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.service.IService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public interface WeeklyCostTypesService extends IService<WeeklyCostTypes> { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.crm.manager.service.impl; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.zy.crm.manager.mapper.WeeklyCostTypesMapper; | 
|---|
|  |  |  | import com.zy.crm.manager.entity.WeeklyCostTypes; | 
|---|
|  |  |  | import com.zy.crm.manager.service.WeeklyCostTypesService; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.service.impl.ServiceImpl; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Service("weeklyCostTypesService") | 
|---|
|  |  |  | public class WeeklyCostTypesServiceImpl extends ServiceImpl<WeeklyCostTypesMapper, WeeklyCostTypes> implements WeeklyCostTypesService { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | return dateList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取周一到周末 | 
|---|
|  |  |  | public static List<Date> WeeklyListDays(List<Date> dates){ | 
|---|
|  |  |  | Date date = dates.get(0); | 
|---|
|  |  |  | Date nowMonday = WeeklyMonday(date); | 
|---|
|  |  |  | List<Date> dateList = new ArrayList<>(); | 
|---|
|  |  |  | dateList.add(nowMonday); | 
|---|
|  |  |  | for (int i = 1; i<7 ; i++){ | 
|---|
|  |  |  | dateList.add(timeYesterdayN(nowMonday,i)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return dateList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static void main(String[] args) { | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | int weeklyNowMonth = WeeklyNowMonthDay(now); | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | -- save weekly record | 
|---|
|  |  |  | -- mysql | 
|---|
|  |  |  | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'weekly/weekly.html', 'weekly管理', null , '2', null , '1'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'weekly#view', '查询', '', '3', '0', '1'); | 
|---|
|  |  |  | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'weekly#btn-add', '新增', '', '3', '1', '1'); | 
|---|
|  |  |  | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'weekly#btn-edit', '编辑', '', '3', '2', '1'); | 
|---|
|  |  |  | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'weekly#btn-delete', '删除', '', '3', '3', '1'); | 
|---|
|  |  |  | insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'weekly#btn-export', '导出', '', '3', '4', '1'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | -- sqlserver | 
|---|
|  |  |  | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'weekly/weekly.html', N'周计划', null, '2', null, '1'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'weekly#view', N'查询', '', '3', '0', '1'); | 
|---|
|  |  |  | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'weekly#btn-add', N'新增', '', '3', '1', '1'); | 
|---|
|  |  |  | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'weekly#btn-edit', N'编辑', '', '3', '2', '1'); | 
|---|
|  |  |  | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'weekly#btn-delete', N'删除', '', '3', '3', '1'); | 
|---|
|  |  |  | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'weekly#btn-export', N'导出', '', '3', '4', '1'); | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | <?xml version="1.0" encoding="UTF-8"?> | 
|---|
|  |  |  | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 
|---|
|  |  |  | <mapper namespace="com.zy.crm.manager.mapper.WeeklyCostTypesMapper"> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- 通用查询映射结果 --> | 
|---|
|  |  |  | <resultMap id="BaseResultMap" type="com.zy.crm.manager.entity.WeeklyCostTypes"> | 
|---|
|  |  |  | <id column="id" property="id" /> | 
|---|
|  |  |  | <result column="type_name" property="typeName" /> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </resultMap> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </mapper> | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | var pageCurr; | 
|---|
|  |  |  | var admin; | 
|---|
|  |  |  | var treeCond; | 
|---|
|  |  |  | layui.config({ | 
|---|
|  |  |  | base: baseUrl + "/static/layui/lay/modules/" | 
|---|
|  |  |  | }).extend({ | 
|---|
|  |  |  | steps: 'steps/steps', | 
|---|
|  |  |  | cascader: 'cascader/cascader', | 
|---|
|  |  |  | }).use(['table','laydate', 'form', 'admin', 'xmSelect', 'element', 'cascader', 'tree', 'dropdown'], function(){ | 
|---|
|  |  |  | var table = layui.table; | 
|---|
|  |  |  | var $ = layui.jquery; | 
|---|
|  |  |  | var layer = layui.layer; | 
|---|
|  |  |  | var layDate = layui.laydate; | 
|---|
|  |  |  | var tree = layui.tree; | 
|---|
|  |  |  | var form = layui.form; | 
|---|
|  |  |  | var dropdown = layui.dropdown; | 
|---|
|  |  |  | admin = layui.admin; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | $('#organization').html(localStorage.getItem('nickname') + ' <i class="layui-icon"></i>'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 部门人员 筛选 | 
|---|
|  |  |  | dropdown.render({ | 
|---|
|  |  |  | elem: '#organization' | 
|---|
|  |  |  | ,content: ['<div id="organizationTree" style="height: calc(100vh - 525px);border: none"></div>'].join('') | 
|---|
|  |  |  | ,style: 'width: 370px; height: 350px; padding: 0 15px; box-shadow: 1px 1px 30px rgb(0 0 0 / 12%);' | 
|---|
|  |  |  | ,ready: function(){ | 
|---|
|  |  |  | loadTree(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 树形图 | 
|---|
|  |  |  | var organizationTree; | 
|---|
|  |  |  | window.loadTree = function(condition){ | 
|---|
|  |  |  | var loadIndex = layer.load(2); | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: baseUrl+"/dept/user/tree/auth", | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | 'condition': condition | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | layer.close(loadIndex); | 
|---|
|  |  |  | if (res.code === 200){ | 
|---|
|  |  |  | organizationTree = tree.render({ | 
|---|
|  |  |  | elem: '#organizationTree', | 
|---|
|  |  |  | id: 'organizationTree', | 
|---|
|  |  |  | onlyIconControl: true, | 
|---|
|  |  |  | data: res.data, | 
|---|
|  |  |  | click: function (obj) { | 
|---|
|  |  |  | treeCond = { | 
|---|
|  |  |  | key: obj.data.key, | 
|---|
|  |  |  | val: obj.data.id | 
|---|
|  |  |  | } | 
|---|
|  |  |  | $('#organization').html(obj.data.title + ' <i class="layui-icon"></i>'); | 
|---|
|  |  |  | $('#organizationTree').find('.ew-tree-click').removeClass('ew-tree-click'); | 
|---|
|  |  |  | $(obj.elem).children('.layui-tree-entry').addClass('ew-tree-click'); | 
|---|
|  |  |  | clearFormVal($('#search-box')); | 
|---|
|  |  |  | tableIns.reload({ | 
|---|
|  |  |  | where: {[obj.data.key]: obj.data.id}, | 
|---|
|  |  |  | page: {curr: 1} | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | treeData = res.data; | 
|---|
|  |  |  | } else if (res.code === 403){ | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | layer.msg(res.msg) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 数据渲染 | 
|---|
|  |  |  | tableIns = table.render({ | 
|---|
|  |  |  | elem: '#weekly', | 
|---|
|  |  |  | headers: {token: localStorage.getItem('token')}, | 
|---|
|  |  |  | url: baseUrl+'/weekly/list/auth', | 
|---|
|  |  |  | page: true, | 
|---|
|  |  |  | limit: 16, | 
|---|
|  |  |  | limits: [16, 30, 50, 100, 200, 500], | 
|---|
|  |  |  | toolbar: '#toolbar', | 
|---|
|  |  |  | cellMinWidth: 150, | 
|---|
|  |  |  | cols: [[ | 
|---|
|  |  |  | // {type: 'checkbox'}, | 
|---|
|  |  |  | {field: 'id', align: 'center',title: 'ID',hide : true} | 
|---|
|  |  |  | ,{field: 'startTime$', align: 'center',title: '开始日期',hide : true} | 
|---|
|  |  |  | ,{field: 'endTime$', align: 'center',title: '结束日期',hide : true} | 
|---|
|  |  |  | ,{field: 'userId$', align: 'center',title: '所属人员',hide : true} | 
|---|
|  |  |  | ,{field: 'hostId$', align: 'center',title: '所属商户',hide : true} | 
|---|
|  |  |  | ,{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: 'comment', align: 'center',title: '评论',hide : false} | 
|---|
|  |  |  | ,{field: 'createBy$', align: 'center',title: '添加人员',hide : true} | 
|---|
|  |  |  | ,{field: 'createTime$', align: 'center',title: '添加时间',hide : true} | 
|---|
|  |  |  | ,{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: 'settleSize', align: 'center',title: '流程长度',hide : true} | 
|---|
|  |  |  | ,{field: 'settleCurrent', align: 'center',title: '当前进度',hide : true} | 
|---|
|  |  |  | ,{field: 'cstmrIdsPlan', align: 'center',title: '计划甲方单位ID集合',hide : true} | 
|---|
|  |  |  | ,{field: 'weeklyAll', align: 'center',title: '周数',hide : false} | 
|---|
|  |  |  | ,{field: 'weeklyNowMonth', align: 'center',title: '当月第几周',hide : true} | 
|---|
|  |  |  | ,{field: 'weeklyYear', align: 'center',title: '年',hide : true} | 
|---|
|  |  |  | ,{field: 'weeklyMonth', align: 'center',title: '月',hide : true} | 
|---|
|  |  |  | ,{field: 'weeklyDay', align: 'center',title: '日',hide : true} | 
|---|
|  |  |  | ,{field: 'weeklyDayMonth', align: 'center',title: '周',hide : true} | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120} | 
|---|
|  |  |  | ]], | 
|---|
|  |  |  | request: { | 
|---|
|  |  |  | pageName: 'curr', | 
|---|
|  |  |  | pageSize: 'limit' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | parseData: function (res) { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | 'code': res.code, | 
|---|
|  |  |  | 'msg': res.msg, | 
|---|
|  |  |  | 'count': res.data.total, | 
|---|
|  |  |  | 'data': res.data.records | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | response: { | 
|---|
|  |  |  | statusCode: 200 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | done: function(res, curr, count) { | 
|---|
|  |  |  | if (res.code === 403) { | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | pageCurr=curr; | 
|---|
|  |  |  | limit(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 监听排序事件 | 
|---|
|  |  |  | table.on('sort(weekly)', function (obj) { | 
|---|
|  |  |  | var searchData = {}; | 
|---|
|  |  |  | $.each($('#search-box [name]').serializeArray(), function() { | 
|---|
|  |  |  | searchData[this.name] = this.value; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | searchData['orderByField'] = obj.field; | 
|---|
|  |  |  | searchData['orderByType'] = obj.type; | 
|---|
|  |  |  | tableIns.reload({ | 
|---|
|  |  |  | where: searchData, | 
|---|
|  |  |  | page: { | 
|---|
|  |  |  | curr: 1 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | done: function (res, curr, count) { | 
|---|
|  |  |  | if (res.code === 403) { | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | pageCurr=curr; | 
|---|
|  |  |  | limit(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 监听头工具栏事件 | 
|---|
|  |  |  | table.on('toolbar(weekly)', function (obj) { | 
|---|
|  |  |  | var checkStatus = table.checkStatus(obj.config.id); | 
|---|
|  |  |  | switch(obj.event) { | 
|---|
|  |  |  | case 'addBlank': | 
|---|
|  |  |  | showEditModel(); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 'refreshData': | 
|---|
|  |  |  | tableIns.reload({ | 
|---|
|  |  |  | page: { | 
|---|
|  |  |  | curr: pageCurr | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | limit(); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 'deleteData': | 
|---|
|  |  |  | var data = checkStatus.data; | 
|---|
|  |  |  | var ids=[]; | 
|---|
|  |  |  | data.map(function (track) { | 
|---|
|  |  |  | ids.push(track.id); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if (ids.length === 0){ | 
|---|
|  |  |  | layer.msg('请选择数据'); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | layer.confirm('确定删除'+(ids.length===1?'此':ids.length)+'条数据吗', function(){ | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: baseUrl+"/weekly/delete/auth", | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | data: {ids: ids}, | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | traditional:true, | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | if (res.code === 200){ | 
|---|
|  |  |  | layer.closeAll(); | 
|---|
|  |  |  | tableReload(false); | 
|---|
|  |  |  | } else if (res.code === 403){ | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | layer.msg(res.msg) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 'exportData': | 
|---|
|  |  |  | layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){ | 
|---|
|  |  |  | var titles=[]; | 
|---|
|  |  |  | var fields=[]; | 
|---|
|  |  |  | obj.config.cols[0].map(function (col) { | 
|---|
|  |  |  | if (col.type === 'normal' && col.hide === false && col.toolbar == null) { | 
|---|
|  |  |  | titles.push(col.title); | 
|---|
|  |  |  | fields.push(col.field); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | var exportData = {}; | 
|---|
|  |  |  | $.each($('#search-box [name]').serializeArray(), function() { | 
|---|
|  |  |  | exportData[this.name] = this.value; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | var param = { | 
|---|
|  |  |  | 'config': exportData, | 
|---|
|  |  |  | 'fields': fields | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: baseUrl+"/weekly/export/auth", | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | data: JSON.stringify(param), | 
|---|
|  |  |  | dataType:'json', | 
|---|
|  |  |  | contentType:'application/json;charset=UTF-8', | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | layer.closeAll(); | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | table.exportFile(titles,res.data,'xls'); | 
|---|
|  |  |  | } else if (res.code === 403) { | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | layer.msg(res.msg) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 监听行工具事件 | 
|---|
|  |  |  | table.on('tool(weekly)', function(obj){ | 
|---|
|  |  |  | var data = obj.data; | 
|---|
|  |  |  | switch (obj.event) { | 
|---|
|  |  |  | case 'approval2': | 
|---|
|  |  |  | layer.confirm('审批通过?', { | 
|---|
|  |  |  | skin: 'layui-layer-admin', | 
|---|
|  |  |  | shade: .1, | 
|---|
|  |  |  | offset: '200px', | 
|---|
|  |  |  | title: data.name | 
|---|
|  |  |  | }, function (i) { | 
|---|
|  |  |  | layer.close(i); | 
|---|
|  |  |  | approval2(data.id); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 'more': | 
|---|
|  |  |  | top.weeklyByMore=data.id; | 
|---|
|  |  |  | console.log(top.weeklyByMore) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | admin.popupRight({ | 
|---|
|  |  |  | type: 1, | 
|---|
|  |  |  | window: "top", | 
|---|
|  |  |  | area: "1250px", | 
|---|
|  |  |  | url: "weekly_more.html", | 
|---|
|  |  |  | end: function () { | 
|---|
|  |  |  | // $(".layui-laypage-btn")[0].click(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | break; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | case 'del': | 
|---|
|  |  |  | layer.confirm('确定删除这条数据吗', function(){ | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | 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){ | 
|---|
|  |  |  | layer.closeAll(); | 
|---|
|  |  |  | tableReload(false); | 
|---|
|  |  |  | } else if (res.code === 403){ | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | layer.msg(res.msg) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case "edit": | 
|---|
|  |  |  | showEditModel(data); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case "look": | 
|---|
|  |  |  | var $a = $(obj.tr).find('a[lay-event="look"]'); | 
|---|
|  |  |  | var offset = $a.offset(); | 
|---|
|  |  |  | var top2 = offset.top; | 
|---|
|  |  |  | var left = offset.left; | 
|---|
|  |  |  | layer.open({ | 
|---|
|  |  |  | type: 1, | 
|---|
|  |  |  | title: false, | 
|---|
|  |  |  | area: '2100px', | 
|---|
|  |  |  | offset: [top2 + 'px', (left - 1430 + $a.outerWidth()) + 'px'], | 
|---|
|  |  |  | shade: .01, | 
|---|
|  |  |  | shadeClose: true, | 
|---|
|  |  |  | fixed: false, | 
|---|
|  |  |  | content: '<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>', | 
|---|
|  |  |  | success: function (layero) { | 
|---|
|  |  |  | table.render({ | 
|---|
|  |  |  | elem: '#lookSSXMTable', | 
|---|
|  |  |  | headers: {token: localStorage.getItem('token')}, | 
|---|
|  |  |  | url: baseUrl+'/weeklyDetl/list/auth', | 
|---|
|  |  |  | where: { | 
|---|
|  |  |  | order_id: data.id | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | page: true, | 
|---|
|  |  |  | cellMinWidth: 100, | 
|---|
|  |  |  | cols: [[ | 
|---|
|  |  |  | {type: 'checkbox'} | 
|---|
|  |  |  | ,{field: 'id', align: 'center',title: 'ID'} | 
|---|
|  |  |  | ,{field: 'dailyTime$', align: 'center',title: '日报日期'} | 
|---|
|  |  |  | ,{field: 'userId$', align: 'center',title: '所属人员'} | 
|---|
|  |  |  | ,{field: 'hostId$', align: 'center',title: '所属商户'} | 
|---|
|  |  |  | ,{field: 'deptId$', align: 'center',title: '所属部门'} | 
|---|
|  |  |  | ,{field: 'status$', align: 'center',title: '状态'} | 
|---|
|  |  |  | ,{field: 'settle$', align: 'center',title: '进度'} | 
|---|
|  |  |  | ,{field: 'settleMsg', align: 'center',title: '审核进度'} | 
|---|
|  |  |  | ,{field: 'comment', align: 'center',title: '评论'} | 
|---|
|  |  |  | ,{field: 'createBy$', align: 'center',title: '添加人员'} | 
|---|
|  |  |  | ,{field: 'createTime$', align: 'center',title: '添加时间'} | 
|---|
|  |  |  | ,{field: 'updateBy$', align: 'center',title: '修改人员'} | 
|---|
|  |  |  | ,{field: 'updateTime$', align: 'center',title: 'update_time'} | 
|---|
|  |  |  | ,{field: 'weeklyMatter', align: 'center',title: '需协助事项'} | 
|---|
|  |  |  | ,{field: 'director$', align: 'center',title: '负责人'} | 
|---|
|  |  |  | ,{field: 'settleSize', align: 'center',title: '流程长度'} | 
|---|
|  |  |  | ,{field: 'settleCurrent', align: 'center',title: '当前进度'} | 
|---|
|  |  |  | ,{field: 'weeklyId', align: 'center',title: '周报ID'} | 
|---|
|  |  |  | ,{field: 'cstmrId', align: 'center',title: '甲方单位ID'} | 
|---|
|  |  |  | ,{field: 'weeklyDay', align: 'center',title: '星期'} | 
|---|
|  |  |  | ,{field: 'memo', align: 'center',title: '备注'} | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120} | 
|---|
|  |  |  | ]], | 
|---|
|  |  |  | request: { | 
|---|
|  |  |  | pageName: 'curr', | 
|---|
|  |  |  | pageSize: 'limit' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | parseData: function (res) { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | 'code': res.code, | 
|---|
|  |  |  | 'msg': res.msg, | 
|---|
|  |  |  | 'count': res.data.total, | 
|---|
|  |  |  | 'data': res.data.records | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | response: { | 
|---|
|  |  |  | statusCode: 200 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | done: function () { | 
|---|
|  |  |  | $(layero).find('.layui-table-view').css('margin', '0'); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | size: '' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 搜索 | 
|---|
|  |  |  | form.on('submit(search)', function (data) { | 
|---|
|  |  |  | pageCurr = 1; | 
|---|
|  |  |  | pageCount = 0; | 
|---|
|  |  |  | tableReload(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 显示表单弹窗 | 
|---|
|  |  |  | function showEditModel(expTpe) { | 
|---|
|  |  |  | admin.open({ | 
|---|
|  |  |  | type: 1, | 
|---|
|  |  |  | title: (expTpe ? '修改' : '添加') + '报销审批', | 
|---|
|  |  |  | content: $('#editDialog').html(), | 
|---|
|  |  |  | area: '2200px', | 
|---|
|  |  |  | success: function (layero, dIndex) { | 
|---|
|  |  |  | $(layero).children('.layui-layer-content').css('overflow', 'visible'); | 
|---|
|  |  |  | var isExpAdd = !expTpe; | 
|---|
|  |  |  | // if (expTpe){ | 
|---|
|  |  |  | //     document.getElementById('weeklyDisplay').style.display = 'none'; | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | // 回显数据 | 
|---|
|  |  |  | form.val('editForm', expTpe); | 
|---|
|  |  |  | console.log(expTpe) | 
|---|
|  |  |  | if (expTpe) { | 
|---|
|  |  |  | // $('#orderNo').attr("disabled", "disabled"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 表单提交事件 | 
|---|
|  |  |  | form.on('submit(weeklyEditSubmit)', function (data) { | 
|---|
|  |  |  | // 组装数据 | 
|---|
|  |  |  | if (xxDataList.length <= 0) { | 
|---|
|  |  |  | layer.tips('请添加报销明细', '#matAddBtnComment', {tips: [1, '#ff4c4c']}); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | let nList = admin.util.deepClone(xxDataList); | 
|---|
|  |  |  | for (let xi = 0; xi < nList.length; xi++) { | 
|---|
|  |  |  | // if (nList[xi].anfme <= 0){ | 
|---|
|  |  |  | //     layer.msg('明细修改数量不合法', {icon: 2}); | 
|---|
|  |  |  | //     return false; | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | layer.load(2); | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: baseUrl+"/weekly/from/" + (isExpAdd?"add":"modify") + "/auth", | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | data: JSON.stringify({ | 
|---|
|  |  |  | weeklyType: Number(data.field.weeklyType), | 
|---|
|  |  |  | orderId: data.field.orderId, | 
|---|
|  |  |  | // type: Number(data.field.type), | 
|---|
|  |  |  | type: Number(1), | 
|---|
|  |  |  | weeklyDailyPlanList: nList | 
|---|
|  |  |  | }), | 
|---|
|  |  |  | contentType:'application/json;charset=UTF-8', | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | console.log(data) | 
|---|
|  |  |  | layer.closeAll('loading'); | 
|---|
|  |  |  | if (res.code === 200){ | 
|---|
|  |  |  | layer.close(dIndex); | 
|---|
|  |  |  | $(".layui-laypage-btn")[0].click(); | 
|---|
|  |  |  | layer.msg(res.msg, {icon: 1}); | 
|---|
|  |  |  | } else if (res.code === 403){ | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | layer.msg(res.msg, {icon: 2}); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // 明细表格 | 
|---|
|  |  |  | var xxDataList = []; | 
|---|
|  |  |  | var tbOptions = { | 
|---|
|  |  |  | elem: '#formSSXMTable', | 
|---|
|  |  |  | headers: {token: localStorage.getItem('token')}, | 
|---|
|  |  |  | data: xxDataList, | 
|---|
|  |  |  | page: true, | 
|---|
|  |  |  | height: '350px;', | 
|---|
|  |  |  | cellMinWidth: 100, | 
|---|
|  |  |  | cols: [[ | 
|---|
|  |  |  | {type: 'numbers', title: '#'} | 
|---|
|  |  |  | ,{field: 'weeklyDay$', align: 'center',title: '星期'} | 
|---|
|  |  |  | ,{field: 'comment', title: '评论', width: 100, style: 'color: blue;font-weight: bold', edit:true} | 
|---|
|  |  |  | ,{field: 'weeklyMatter', title: '需协助事项', width: 100, style: 'color: blue;font-weight: bold', edit:true} | 
|---|
|  |  |  | ,{field: 'dailyTime$', align: 'center',title: '日报日期'} | 
|---|
|  |  |  | ,{field: 'settleMsg', align: 'center',title: '审核进度'} | 
|---|
|  |  |  | ,{field: 'director', align: 'center',title: '负责人'} | 
|---|
|  |  |  | ,{field: 'settleSize', align: 'center',title: '流程长度'} | 
|---|
|  |  |  | ,{field: 'settleCurrent', align: 'center',title: '当前进度'} | 
|---|
|  |  |  | ,{field: 'cstmrId', align: 'center',title: '甲方单位ID'} | 
|---|
|  |  |  | ,{field: 'memo', align: 'center',title: '备注', width: 100, style: 'color: blue;font-weight: bold', edit:true} | 
|---|
|  |  |  | ,{align: 'center', title: '操作', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80, fixed: 'right'} | 
|---|
|  |  |  | ]], | 
|---|
|  |  |  | done: function (res, curr, count) { | 
|---|
|  |  |  | $(layero).find('.layui-table-view').css('margin', '0'); | 
|---|
|  |  |  | var options = this; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取当前行数据 | 
|---|
|  |  |  | table.getRowData = function(elem){ | 
|---|
|  |  |  | var index = $(elem).closest('tr').data('index'); | 
|---|
|  |  |  | return table.cache[options.id][index] || {}; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | $('.input-occupation').on('text', function(){ | 
|---|
|  |  |  | var value = this.value; // 获取选中项 value | 
|---|
|  |  |  | var data = table.getRowData(this); | 
|---|
|  |  |  | console.log(value); | 
|---|
|  |  |  | console.log("value------==="); | 
|---|
|  |  |  | xxDataList.forEach(res => { | 
|---|
|  |  |  | if (data.id === res.id){ | 
|---|
|  |  |  | console.log(res) | 
|---|
|  |  |  | res.occupation = value; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | size: '' | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | if (!isExpAdd) { | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: baseUrl+"/weekly/detl/all/auth?weeklyId=" + expTpe.id, | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | method: 'GET', | 
|---|
|  |  |  | async: false, | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | if (res.code === 200){ | 
|---|
|  |  |  | xxDataList = res.data; | 
|---|
|  |  |  | tbOptions.data = xxDataList; | 
|---|
|  |  |  | } else if (res.code === 403){ | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | layer.msg(res.msg, {icon: 2}) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | var insTbSSXM = table.render(tbOptions); | 
|---|
|  |  |  | // 工具条点击事件 | 
|---|
|  |  |  | table.on('tool(formSSXMTable)', function (obj) { | 
|---|
|  |  |  | var data = obj.data; | 
|---|
|  |  |  | var layEvent = obj.event; | 
|---|
|  |  |  | if (layEvent === 'edit') { | 
|---|
|  |  |  | showEditModel2(data); | 
|---|
|  |  |  | } else if (layEvent === 'del') { | 
|---|
|  |  |  | layer.confirm('确定要删除吗?', { | 
|---|
|  |  |  | shade: .1, | 
|---|
|  |  |  | skin: 'layui-layer-admin' | 
|---|
|  |  |  | }, function (i) { | 
|---|
|  |  |  | layer.close(i); | 
|---|
|  |  |  | for (var j = 0; j < xxDataList.length; j++) { | 
|---|
|  |  |  | if (xxDataList[j].matnr === data.matnr && xxDataList[j].batch === data.batch) { | 
|---|
|  |  |  | xxDataList.splice(j, 1); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | insTbSSXM.reload({data: xxDataList, page: {curr: 1}}); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // 明细数据修改 | 
|---|
|  |  |  | table.on('edit(formSSXMTable)', function (obj) { | 
|---|
|  |  |  | let index = obj.tr.attr("data-index"); | 
|---|
|  |  |  | let data = xxDataList[index]; | 
|---|
|  |  |  | if (obj.field === 'anfme'){ | 
|---|
|  |  |  | let vle = Number(obj.value); | 
|---|
|  |  |  | if (isNaN(vle)) { | 
|---|
|  |  |  | layer.msg("请输入数字", {icon: 2}); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | if (vle <= 0) { | 
|---|
|  |  |  | layer.msg("数量必须大于零", {icon: 2}); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | data[obj.field] = obj.value; | 
|---|
|  |  |  | insTbSSXM.reload({data: xxDataList}); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | $('#matAddBtnComment').click(function () { | 
|---|
|  |  |  | showEditModel2(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 显示添加明细表单弹窗 | 
|---|
|  |  |  | function showEditModel2(exp) { | 
|---|
|  |  |  | admin.open({ | 
|---|
|  |  |  | type: 1, | 
|---|
|  |  |  | offset: '150px', | 
|---|
|  |  |  | area: '680px', | 
|---|
|  |  |  | title: (exp ? '修改' : '添加') + '明细', | 
|---|
|  |  |  | content: $('#matEditDialog').html(), | 
|---|
|  |  |  | success: function (layero, dIndex) { | 
|---|
|  |  |  | // 回显数据 | 
|---|
|  |  |  | form.val('matEditForm', exp); | 
|---|
|  |  |  | // 表单提交事件 | 
|---|
|  |  |  | form.on('submit(matEditSubmit)', function (data) { | 
|---|
|  |  |  | let selectList = matXmSelect.getValue(); | 
|---|
|  |  |  | console.log(selectList) | 
|---|
|  |  |  | for (let i = 0; i<selectList.length; i++) { | 
|---|
|  |  |  | let item = selectList[i]; | 
|---|
|  |  |  | // 查询物料详情 | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: baseUrl+"/weeklyCostTypes/covert/plan/"+item.value+"/auth", | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | method: 'GET', | 
|---|
|  |  |  | async: false, | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | if (res.code === 200){ | 
|---|
|  |  |  | var bige=true; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (bige){ | 
|---|
|  |  |  | // console.log("-------2.3-------") | 
|---|
|  |  |  | xxDataList.push(res.data); | 
|---|
|  |  |  | insTbSSXM.reload({data: xxDataList, page: {curr: 1}}); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (res.code === 403){ | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | layer.msg(res.msg, {icon: 2}) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | layer.close(dIndex); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // 渲染物料选择 | 
|---|
|  |  |  | var matXmSelect = xmSelect.render({ | 
|---|
|  |  |  | el: '#weeklyCostTypes', | 
|---|
|  |  |  | style: { | 
|---|
|  |  |  | width: '340px', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | autoRow: true, | 
|---|
|  |  |  | toolbar: { show: true }, | 
|---|
|  |  |  | filterable: true, | 
|---|
|  |  |  | remoteSearch: true, | 
|---|
|  |  |  | remoteMethod: function(val, cb, show){ | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: baseUrl+"/weeklyCostTypes/all/get/kv", | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | condition: val | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | if (res.code === 200){ | 
|---|
|  |  |  | cb(res.data) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | cb([]); | 
|---|
|  |  |  | layer.msg(res.msg, {icon: 2}); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | // 弹窗不出现滚动条 | 
|---|
|  |  |  | $(layero).children('.layui-layer-content').css('overflow', 'visible'); | 
|---|
|  |  |  | layui.form.render('select'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function approval2(planId, plannerId, dIdx) { | 
|---|
|  |  |  | let loadIndex = layer.load(2); | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: baseUrl+"/weekly/approval2/auth", | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | planId: planId, | 
|---|
|  |  |  | plannerId: plannerId | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | if (dIdx) { | 
|---|
|  |  |  | layer.close(dIdx); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | layer.close(loadIndex); | 
|---|
|  |  |  | if (res.code === 200){ | 
|---|
|  |  |  | layer.msg(res.msg, {icon: 1}); | 
|---|
|  |  |  | tableReload(); | 
|---|
|  |  |  | } else if (res.code === 403){ | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | layer.msg(res.msg, {icon: 2}); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 关闭动作 | 
|---|
|  |  |  | $(document).on('click','#data-detail-close', function () { | 
|---|
|  |  |  | parent.layer.closeAll(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function tableReload(child) { | 
|---|
|  |  |  | var searchData = {}; | 
|---|
|  |  |  | $.each($('#search-box [name]').serializeArray(), function() { | 
|---|
|  |  |  | searchData[this.name] = this.value; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | (child ? parent.tableIns : tableIns).reload({ | 
|---|
|  |  |  | where: searchData, | 
|---|
|  |  |  | page: { | 
|---|
|  |  |  | curr: pageCurr | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | done: function (res, curr, count) { | 
|---|
|  |  |  | if (res.code === 403) { | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | pageCurr=curr; | 
|---|
|  |  |  | if (res.data.length === 0 && count !== 0) { | 
|---|
|  |  |  | tableIns.reload({ | 
|---|
|  |  |  | where: searchData, | 
|---|
|  |  |  | page: { | 
|---|
|  |  |  | curr: pageCurr-1 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | pageCurr -= 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | limit(child); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function setFormVal(el, data, showImg) { | 
|---|
|  |  |  | for (var val in data) { | 
|---|
|  |  |  | var find = el.find(":input[id='" + val + "']"); | 
|---|
|  |  |  | find.val(data[val]); | 
|---|
|  |  |  | if (showImg){ | 
|---|
|  |  |  | var next = find.next(); | 
|---|
|  |  |  | if (next.get(0)){ | 
|---|
|  |  |  | if (next.get(0).localName === "img") { | 
|---|
|  |  |  | find.hide(); | 
|---|
|  |  |  | next.attr("src", data[val]); | 
|---|
|  |  |  | next.show(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function clearFormVal(el) { | 
|---|
|  |  |  | $(':input', el) | 
|---|
|  |  |  | .val('') | 
|---|
|  |  |  | .removeAttr('checked') | 
|---|
|  |  |  | .removeAttr('selected'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function detailScreen(index) { | 
|---|
|  |  |  | var detail = layer.getChildFrame('#data-detail', index); | 
|---|
|  |  |  | var height = detail.height()+60; | 
|---|
|  |  |  | if (height > ($(window).height()*0.9)) { | 
|---|
|  |  |  | height = ($(window).height()*0.9); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | layer.style(index, { | 
|---|
|  |  |  | top: (($(window).height()-height)/3)+"px", | 
|---|
|  |  |  | height: height+'px' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | $(".layui-layer-shade").remove(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | $('body').keydown(function () { | 
|---|
|  |  |  | if (event.keyCode === 13) { | 
|---|
|  |  |  | $("#search").click(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 压缩 | 
|---|
|  |  |  | function zip(data) { | 
|---|
|  |  |  | if (!data) return data | 
|---|
|  |  |  | // 判断数据是否需要转为JSON | 
|---|
|  |  |  | const dataJson = typeof data !== 'string' && typeof data !== 'number' ? JSON.stringify(data) : data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 使用Base64.encode处理字符编码,兼容中文 | 
|---|
|  |  |  | const str = Base64.encode(dataJson) | 
|---|
|  |  |  | let binaryString = pako.gzip(str); | 
|---|
|  |  |  | let arr = Array.from(binaryString); | 
|---|
|  |  |  | let s = ""; | 
|---|
|  |  |  | arr.forEach((item, index) => { | 
|---|
|  |  |  | s += String.fromCharCode(item) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | return btoa(s) | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | <!DOCTYPE html> | 
|---|
|  |  |  | <html lang="en"> | 
|---|
|  |  |  | <head> | 
|---|
|  |  |  | <meta charset="utf-8"> | 
|---|
|  |  |  | <title></title> | 
|---|
|  |  |  | <meta name="renderer" content="webkit"> | 
|---|
|  |  |  | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | 
|---|
|  |  |  | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> | 
|---|
|  |  |  | <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> | 
|---|
|  |  |  | <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> | 
|---|
|  |  |  | <link rel="stylesheet" href="../../static/css/cool.css" media="all"> | 
|---|
|  |  |  | <link rel="stylesheet" href="../../static/css/tree.css" media="all"> | 
|---|
|  |  |  | <link rel="stylesheet" href="../../static/layui/lay/modules/formDesigner/coolForm.css"/> | 
|---|
|  |  |  | <style> | 
|---|
|  |  |  | .nav-box { | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | top: 1px; | 
|---|
|  |  |  | left: 5px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .nav-box-item { | 
|---|
|  |  |  | display: inline-block; | 
|---|
|  |  |  | vertical-align: middle; | 
|---|
|  |  |  | margin-right: 5px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </style> | 
|---|
|  |  |  | </head> | 
|---|
|  |  |  | <body> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <div class="layui-fluid"> | 
|---|
|  |  |  | <div class="layui-card"> | 
|---|
|  |  |  | <div class="layui-card-body"> | 
|---|
|  |  |  | <div id="search-box" class="layui-form toolbar" | 
|---|
|  |  |  | style="display: flex;justify-content: flex-end;position: relative"> | 
|---|
|  |  |  | <div class="nav-box"> | 
|---|
|  |  |  | <div class="nav-box-item"> | 
|---|
|  |  |  | <i class="layui-icon" style="color: #1890ff;font-weight: bold"></i> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="nav-box-item"> | 
|---|
|  |  |  | <button id="organization" style="border: none;padding-right: 35px;" | 
|---|
|  |  |  | class="layui-btn layui-btn-primary icon-btn"> | 
|---|
|  |  |  | 未知 | 
|---|
|  |  |  | </button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-form-item"> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off" | 
|---|
|  |  |  | style="border-color: #e1e1e1"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline">  | 
|---|
|  |  |  | <button class="layui-btn icon-btn layui-btn-sm" lay-filter="search" lay-submit> | 
|---|
|  |  |  | <i class="layui-icon"></i>搜索 | 
|---|
|  |  |  | </button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <table class="layui-hide" id="weekly" lay-filter="weekly"></table> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- 表格操作列 --> | 
|---|
|  |  |  | <script type="text/html" id="tbLook"> | 
|---|
|  |  |  | <span class="layui-text"> | 
|---|
|  |  |  | <a href="javascript:;" lay-event="look"> | 
|---|
|  |  |  | <i class="layui-icon" style="font-size: 12px;"></i> 查看周计划 | 
|---|
|  |  |  | </a> | 
|---|
|  |  |  | </span> | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <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>--> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <form id="uploadFile" enctype="multipart/form-data" style="display: none;"> | 
|---|
|  |  |  | <input type="file" name="file" id="uploadQuote"> | 
|---|
|  |  |  | <input type="button" onclick="upload()" value="上传"/> | 
|---|
|  |  |  | </form> | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script type="text/html" id="operate"> | 
|---|
|  |  |  | {{# 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 == 0) { }} | 
|---|
|  |  |  | <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval2">提交</a> | 
|---|
|  |  |  | {{# } }} | 
|---|
|  |  |  | <!--  <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">提交</a>--> | 
|---|
|  |  |  | <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">编辑</a> | 
|---|
|  |  |  | <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a> | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/js/luckysheet_js/luckyexcel.umd.js"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/js/luckysheet_js/pako.es5.js" charset="utf-8"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/js/luckysheet_js/base64.min.js" charset="utf-8"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/js/weekly/weekly.js" charset="utf-8"></script> | 
|---|
|  |  |  | <script type="text/javascript" src="../../static/layui/lay/modules/cascader/citys-data.js" charset="utf-8"></script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script type="text/html" id="editDialog"> | 
|---|
|  |  |  | <form id="editForm" lay-filter="editForm" class="layui-form model-form"> | 
|---|
|  |  |  | <input name="id" type="hidden"/> | 
|---|
|  |  |  | <!--        <div class="layui-form-item" style="display: block" id="weeklyDisplay">--> | 
|---|
|  |  |  | <!--            <label class="layui-form-label">项目名: </label>--> | 
|---|
|  |  |  | <!--            <div class="layui-input-block cool-auto-complete">--> | 
|---|
|  |  |  | <!--                <input class="layui-input" name="orderId" placeholder="请输入项目名" style="display: none">--> | 
|---|
|  |  |  | <!--                <input id="orderId$" name="orderId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入项目名" onfocus=this.blur()>--> | 
|---|
|  |  |  | <!--                <div class="cool-auto-complete-window">--> | 
|---|
|  |  |  | <!--                    <input class="cool-auto-complete-window-input" data-key="orderQueryNameBydirector" onkeyup="autoLoad(this.getAttribute('data-key'))">--> | 
|---|
|  |  |  | <!--                    <select class="cool-auto-complete-window-select" data-key="orderQueryNameBydirectorSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> | 
|---|
|  |  |  | <!--                    </select>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--            </div>--> | 
|---|
|  |  |  | <!--        </div>--> | 
|---|
|  |  |  | <div class="layui-form-item"> | 
|---|
|  |  |  | <label class="layui-form-label layui-form-required">日期: </label> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <select class="layui-input" name="weeklyType" lay-vertype="tips" lay-verify="required"> | 
|---|
|  |  |  | <option style="display: none"></option> | 
|---|
|  |  |  | <option value="1">上周</option> | 
|---|
|  |  |  | <option value="2">本周</option> | 
|---|
|  |  |  | <option value="3">下周</option> | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!--        <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--            <label class="layui-form-label layui-form-required">类型: </label>--> | 
|---|
|  |  |  | <!--            <div class="layui-input-inline">--> | 
|---|
|  |  |  | <!--                <select class="layui-input" name="type" lay-vertype="tips" lay-verify="required">--> | 
|---|
|  |  |  | <!--                    <option style="display: none"></option>--> | 
|---|
|  |  |  | <!--                    <option value="1">计划</option>--> | 
|---|
|  |  |  | <!--                    <option value="2">实际</option>--> | 
|---|
|  |  |  | <!--                </select>--> | 
|---|
|  |  |  | <!--            </div>--> | 
|---|
|  |  |  | <!--        </div>--> | 
|---|
|  |  |  | <div class="layui-form-item" style="position: relative;"> | 
|---|
|  |  |  | <label class="layui-form-label">周计划:</label> | 
|---|
|  |  |  | <div class="layui-input-block"> | 
|---|
|  |  |  | <table id="formSSXMTable" lay-filter="formSSXMTable"></table> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <button class="layui-btn layui-btn-sm icon-btn" id="matAddBtnComment" | 
|---|
|  |  |  | style="position: absolute; left: 20px;top: 60px;padding: 0 5px;" type="button"> | 
|---|
|  |  |  | <i class="layui-icon"></i>添加日计划 | 
|---|
|  |  |  | </button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-form-item text-right"> | 
|---|
|  |  |  | <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button> | 
|---|
|  |  |  | <button class="layui-btn" lay-filter="weeklyEditSubmit" lay-submit>保存</button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </form> | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- 表格操作列 --> | 
|---|
|  |  |  | <script type="text/html" id="formSSXMTableBar"> | 
|---|
|  |  |  | <!--    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>--> | 
|---|
|  |  |  | <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  | <!-- 表单弹窗 --> | 
|---|
|  |  |  | <script type="text/html" id="matEditDialog"> | 
|---|
|  |  |  | <form id="matEditForm" lay-filter="matEditForm" class="layui-form model-form"> | 
|---|
|  |  |  | <input name="experimentId" type="hidden"/> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <div class="layui-form-item" style="float: left"> | 
|---|
|  |  |  | <label class="layui-form-label">费用类型 - 多选</label> | 
|---|
|  |  |  | <div class="layui-input-block"> | 
|---|
|  |  |  | <div id="weeklyCostTypes" name="weeklyCostTypes"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <div class="layui-form-item text-right" style="display: inline-block; margin-left: 35px"> | 
|---|
|  |  |  | <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button> | 
|---|
|  |  |  | <button class="layui-btn" lay-filter="matEditSubmit" lay-submit>保存</button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </form> | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  | <!--<!– 表单弹窗 –>--> | 
|---|
|  |  |  | <!--<script type="text/html" id="editDialog">--> | 
|---|
|  |  |  | <!--    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">--> | 
|---|
|  |  |  | <!--        <input name="id" type="hidden">--> | 
|---|
|  |  |  | <!--        <div class="layui-row">--> | 
|---|
|  |  |  | <!--            <div class="layui-col-md12">--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">开始日期: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="startTime" id="startTime$" placeholder="请输入开始日期" lay-vertype="tips" lay-verify="required">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">结束日期: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="endTime" id="endTime$" placeholder="请输入结束日期" lay-vertype="tips" lay-verify="required">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">所属人员: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block cool-auto-complete">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="userId" placeholder="请输入所属人员" lay-vertype="tips" lay-verify="required" style="display: none">--> | 
|---|
|  |  |  | <!--                        <input id="userId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入所属人员" onfocus=this.blur()>--> | 
|---|
|  |  |  | <!--                        <div class="cool-auto-complete-window">--> | 
|---|
|  |  |  | <!--                            <input class="cool-auto-complete-window-input" data-key="userQueryByuserId" onkeyup="autoLoad(this.getAttribute('data-key'))">--> | 
|---|
|  |  |  | <!--                            <select class="cool-auto-complete-window-select" data-key="userQueryByuserIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> | 
|---|
|  |  |  | <!--                            </select>--> | 
|---|
|  |  |  | <!--                        </div>--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">所属商户: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block cool-auto-complete">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="hostId" placeholder="请输入所属商户" lay-vertype="tips" lay-verify="required" style="display: none">--> | 
|---|
|  |  |  | <!--                        <input id="hostId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入所属商户" onfocus=this.blur()>--> | 
|---|
|  |  |  | <!--                        <div class="cool-auto-complete-window">--> | 
|---|
|  |  |  | <!--                            <input class="cool-auto-complete-window-input" data-key="hostQueryByhostId" onkeyup="autoLoad(this.getAttribute('data-key'))">--> | 
|---|
|  |  |  | <!--                            <select class="cool-auto-complete-window-select" data-key="hostQueryByhostIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> | 
|---|
|  |  |  | <!--                            </select>--> | 
|---|
|  |  |  | <!--                        </div>--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">所属部门: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block cool-auto-complete">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="deptId" placeholder="请输入所属部门" lay-vertype="tips" lay-verify="required" style="display: none">--> | 
|---|
|  |  |  | <!--                        <input id="deptId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入所属部门" onfocus=this.blur()>--> | 
|---|
|  |  |  | <!--                        <div class="cool-auto-complete-window">--> | 
|---|
|  |  |  | <!--                            <input class="cool-auto-complete-window-input" data-key="deptQueryBydeptId" onkeyup="autoLoad(this.getAttribute('data-key'))">--> | 
|---|
|  |  |  | <!--                            <select class="cool-auto-complete-window-select" data-key="deptQueryBydeptIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> | 
|---|
|  |  |  | <!--                            </select>--> | 
|---|
|  |  |  | <!--                        </div>--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label">实际甲方单位ID集合: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="cstmrIdsReality" placeholder="请输入实际甲方单位ID集合">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">状态: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <select name="status" lay-vertype="tips" lay-verify="required">--> | 
|---|
|  |  |  | <!--                            <option value="">请选择状态</option>--> | 
|---|
|  |  |  | <!--                            <option value="3">已关闭</option>--> | 
|---|
|  |  |  | <!--                            <option value="2">需处理</option>--> | 
|---|
|  |  |  | <!--                            <option value="1">进行中</option>--> | 
|---|
|  |  |  | <!--                            <option value="0">未开始</option>--> | 
|---|
|  |  |  | <!--                        </select>--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label">进度: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <select name="settle">--> | 
|---|
|  |  |  | <!--                            <option value="">请选择进度</option>--> | 
|---|
|  |  |  | <!--                            <option value="0">默认</option>--> | 
|---|
|  |  |  | <!--                            <option value="1">开始</option>--> | 
|---|
|  |  |  | <!--                            <option value="2">组长待审</option>--> | 
|---|
|  |  |  | <!--                            <option value="3">组长审核</option>--> | 
|---|
|  |  |  | <!--                            <option value="4">规划待审</option>--> | 
|---|
|  |  |  | <!--                            <option value="5">规划审核</option>--> | 
|---|
|  |  |  | <!--                            <option value="6">审批中</option>--> | 
|---|
|  |  |  | <!--                            <option value="7">审批通过</option>--> | 
|---|
|  |  |  | <!--                        </select>--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label">审核进度: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="settleMsg" placeholder="请输入审核进度">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label">评论: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="comment" placeholder="请输入评论">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">添加人员: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block cool-auto-complete">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="createBy" placeholder="请输入添加人员" lay-vertype="tips" lay-verify="required" style="display: none">--> | 
|---|
|  |  |  | <!--                        <input id="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入添加人员" onfocus=this.blur()>--> | 
|---|
|  |  |  | <!--                        <div class="cool-auto-complete-window">--> | 
|---|
|  |  |  | <!--                            <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">--> | 
|---|
|  |  |  | <!--                            <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> | 
|---|
|  |  |  | <!--                            </select>--> | 
|---|
|  |  |  | <!--                        </div>--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">添加时间: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="createTime" id="createTime$" placeholder="请输入添加时间" lay-vertype="tips" lay-verify="required">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">修改人员: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block cool-auto-complete">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="updateBy" placeholder="请输入修改人员" lay-vertype="tips" lay-verify="required" style="display: none">--> | 
|---|
|  |  |  | <!--                        <input id="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入修改人员" onfocus=this.blur()>--> | 
|---|
|  |  |  | <!--                        <div class="cool-auto-complete-window">--> | 
|---|
|  |  |  | <!--                            <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">--> | 
|---|
|  |  |  | <!--                            <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> | 
|---|
|  |  |  | <!--                            </select>--> | 
|---|
|  |  |  | <!--                        </div>--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">update_time: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="updateTime" id="updateTime$" placeholder="请输入update_time" lay-vertype="tips" lay-verify="required">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label">备注(50字): </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="memo" placeholder="请输入备注(50字)">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">审批人: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block cool-auto-complete">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="director" placeholder="请输入审批人" lay-vertype="tips" lay-verify="required" style="display: none">--> | 
|---|
|  |  |  | <!--                        <input id="director$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入审批人" onfocus=this.blur()>--> | 
|---|
|  |  |  | <!--                        <div class="cool-auto-complete-window">--> | 
|---|
|  |  |  | <!--                            <input class="cool-auto-complete-window-input" data-key="userQueryBydirector" onkeyup="autoLoad(this.getAttribute('data-key'))">--> | 
|---|
|  |  |  | <!--                            <select class="cool-auto-complete-window-select" data-key="userQueryBydirectorSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> | 
|---|
|  |  |  | <!--                            </select>--> | 
|---|
|  |  |  | <!--                        </div>--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">流程长度: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="settleSize" placeholder="请输入流程长度" lay-vertype="tips" lay-verify="required">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label">当前进度: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="settleCurrent" placeholder="请输入当前进度">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label">计划甲方单位ID集合: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="cstmrIdsPlan" placeholder="请输入计划甲方单位ID集合">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">周数: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="weeklyAll" placeholder="请输入周数" lay-vertype="tips" lay-verify="required">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">当月第几周: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="weeklyNowMonth" placeholder="请输入当月第几周" lay-vertype="tips" lay-verify="required">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">年: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="weeklyYear" placeholder="请输入年" lay-vertype="tips" lay-verify="required">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">月: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="weeklyMonth" placeholder="请输入月" lay-vertype="tips" lay-verify="required">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">日: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="weeklyDay" placeholder="请输入日" lay-vertype="tips" lay-verify="required">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  | <!--                <div class="layui-form-item">--> | 
|---|
|  |  |  | <!--                    <label class="layui-form-label layui-form-required">周: </label>--> | 
|---|
|  |  |  | <!--                    <div class="layui-input-block">--> | 
|---|
|  |  |  | <!--                        <input class="layui-input" name="weeklyDayMonth" placeholder="请输入周" lay-vertype="tips" lay-verify="required">--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                </div>--> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!--            </div>--> | 
|---|
|  |  |  | <!--        </div>--> | 
|---|
|  |  |  | <!--        <hr class="layui-bg-gray">--> | 
|---|
|  |  |  | <!--        <div class="layui-form-item text-right">--> | 
|---|
|  |  |  | <!--            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button>--> | 
|---|
|  |  |  | <!--            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>--> | 
|---|
|  |  |  | <!--        </div>--> | 
|---|
|  |  |  | <!--    </form>--> | 
|---|
|  |  |  | <!--</script>--> | 
|---|
|  |  |  | </body> | 
|---|
|  |  |  | </html> | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|