Browse Source

Merge remote-tracking branch 'origin/master'

user5 4 years ago
parent
commit
a8b8b78b1e
16 changed files with 5677 additions and 85 deletions
  1. 716 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralPeojectRecordChooseCheckAllService.java
  2. 353 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectRecordChooseCheckAllController.java
  3. 29 29
      src/main/java/com/jeeplus/modules/workinvoice/web/WorkInvoiceAllController.java
  4. 16 16
      src/main/java/com/jeeplus/modules/workreimbursement/web/WorkReimbursementAllController.java
  5. 363 0
      src/main/webapp/webpage/modules/ruralprojectrecords/check/ruralProjectRecordsAllList.jsp
  6. 3 3
      src/main/webapp/webpage/modules/ruralprojectrecords/cost/ruralCostProjectRecordsList.jsp
  7. 10 10
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralProjectRecordsList.jsp
  8. 1 5
      src/main/webapp/webpage/modules/sys/roleForm.jsp
  9. 509 0
      src/main/webapp/webpage/modules/workinvoice/conditionWorkInvoiceAllForm.jsp
  10. 605 0
      src/main/webapp/webpage/modules/workinvoice/workInvoiceAllForm.jsp
  11. 592 0
      src/main/webapp/webpage/modules/workinvoice/workInvoiceAllModify.jsp
  12. 412 0
      src/main/webapp/webpage/modules/workinvoice/workInvoiceAllReceiptForm.jsp
  13. 3 3
      src/main/webapp/webpage/modules/workinvoice/workInvoiceForm.jsp
  14. 959 0
      src/main/webapp/webpage/modules/workreimbursement/workReimbursementAllFormAdd.jsp
  15. 19 19
      src/main/webapp/webpage/modules/workreimbursement/workReimbursementAllList.jsp
  16. 1087 0
      src/main/webapp/webpage/modules/workreimbursement/workReimbursementAllModifyApply.jsp

+ 716 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralPeojectRecordChooseCheckAllService.java

@@ -0,0 +1,716 @@
+package com.jeeplus.modules.ruralprojectrecords.service;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.Collections3;
+import com.jeeplus.common.utils.MenuStatusEnum;
+import com.jeeplus.modules.act.entity.Act;
+import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.ruralprojectrecords.dao.RuralPeojectRecordChooseCheckDao;
+import com.jeeplus.modules.ruralprojectrecords.dao.RuralWorkProjectUserDao;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
+import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.service.OfficeService;
+import com.jeeplus.modules.sys.utils.DictUtils;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workactivity.dao.WorkActivityProcessDao;
+import com.jeeplus.modules.workactivity.entity.Activity;
+import com.jeeplus.modules.workactivity.entity.WorkActivityProcess;
+import com.jeeplus.modules.workactivity.service.ActivityService;
+import com.jeeplus.modules.workactivity.service.WorkActivityProcessService;
+import com.jeeplus.modules.workactivitymenu.entity.WorkActivityMenu;
+import com.jeeplus.modules.workactivitymenu.service.WorkActivityMenuService;
+import com.jeeplus.modules.workclientinfo.dao.WorkClientLinkmanDao;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workclientinfo.service.WorkClientInfoService;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import com.jeeplus.modules.workcontractinfo.service.WorkContractInfoService;
+import com.jeeplus.modules.workprojectnotify.entity.WorkProjectNotify;
+import com.jeeplus.modules.workprojectnotify.service.WorkProjectNotifyService;
+import com.jeeplus.modules.workprojectnotify.util.UtilNotify;
+import org.activiti.engine.HistoryService;
+import org.activiti.engine.IdentityService;
+import org.activiti.engine.RuntimeService;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author: 徐滕
+ * @create: 2021-03-09 09:54
+ **/
+@Service
+@Transactional(readOnly = true)
+public class RuralPeojectRecordChooseCheckAllService extends CrudService<RuralPeojectRecordChooseCheckDao, RuralProjectRecords> {
+
+
+
+    @Autowired
+    private RuralWorkProjectUserDao workProjectUserDao;
+    @Autowired
+    private WorkClientLinkmanDao workClientLinkmanDao;
+    @Autowired
+    private IdentityService identityService;
+    @Autowired
+    private OfficeService officeService;
+    @Autowired
+    private WorkActivityMenuService workActivityMenuService;
+    @Autowired
+    private RuntimeService runtimeService;
+    @Autowired
+    private WorkActivityProcessService workActivityProcessService;
+    @Autowired
+    private WorkProjectNotifyService workProjectNotifyService;
+    @Autowired
+    protected HistoryService historyService;
+    @Autowired
+    private WorkContractInfoService contractInfoService;
+    @Autowired
+    private WorkClientInfoService workClientInfoService;
+    @Autowired
+    private ActTaskService actTaskService;
+    @Autowired
+    private ActivityService activityService;
+    @Autowired
+    private WorkActivityProcessDao workActivityProcessDao;
+
+    private static byte[] SYN_BYTE = new byte[0];
+
+    public RuralProjectRecords get(String id) {
+        return super.get(id);
+    }
+
+    public Page<RuralProjectRecords> findPage(Page<RuralProjectRecords> page, RuralProjectRecords projectRecords) {
+//        //设置数据权限
+//        if(!UserUtils.getUser().isAdmin()) {
+//            String dataScopeSql = dataScopeFilterOR(projectRecords.getCurrentUser(), "o", "u", "s", MenuStatusEnum.OVERALL_WORK_RECORDS.getValue());
+//            //判断查询为工程咨询信息
+//            if(StringUtils.isBlank(dataScopeSql)){
+//                dataScopeSql = dataScopeFilterOR(projectRecords.getCurrentUser(), "o", "u", "s", MenuStatusEnum.OVERALL_COST_WORK_RECORDS.getValue());
+//            }
+//            projectRecords.getSqlMap().put("dsf", dataScopeSql);
+//            projectRecords.getSqlMap().put("delFlag", "AND a.del_flag = 0");
+//        }
+        int count = dao.queryCount(projectRecords);
+        page.setCount(count);
+        page.setCountFlag(false);
+        projectRecords.setPage(page);
+        List<RuralProjectRecords> recordsList = findList(projectRecords);
+        //查询负责人信息
+        for (RuralProjectRecords records : recordsList) {
+            this.queryContractInfos(records);
+            List<User> users = workProjectUserDao.queryProjectUsers(records.getId(), "1");
+            records.setProjectLeaders(users);
+            records.setLeaderNameStr(Collections3.extractToString(users, "name", ","));
+            records.setLeaderIds(Collections3.extractToString(users, "id", ","));
+        }
+        page.setList(recordsList);
+        return page;
+    }
+
+    /**
+     * 查询合同信息
+     * @param projectRecords
+     */
+    public void queryContractInfos(RuralProjectRecords projectRecords) {
+        WorkContractInfo workContractInfo = contractInfoService.get(projectRecords.getWorkContractInfo().getId());
+        if(workContractInfo!=null){
+            workContractInfo.setConstructionProjectTypeStr(DictUtils.getMainDictLabel(String.valueOf(workContractInfo.getContractType()), "contract_type", ""));
+            if(workContractInfo.getWorkClientInfoList()!=null&&!workContractInfo.getWorkClientInfoList().isEmpty()){
+                StringBuilder workClinetInfoIds = new StringBuilder();
+                for (WorkClientInfo workClientInfo : workContractInfo.getWorkClientInfoList()) {
+                    workClinetInfoIds.append(workClientInfo.getId()).append(",");
+                }
+                workClinetInfoIds.deleteCharAt(workClinetInfoIds.length()-1);
+                workContractInfo.setWorkClinetInfoIds(workClinetInfoIds.toString());
+            }
+        }
+        projectRecords.setWorkContractInfo(workContractInfo);
+    }
+
+
+    /**
+     * 设置联系人信息
+     *
+     * @param projectRecords
+     */
+    public void queryLinkmanInfos(RuralProjectRecords projectRecords) {
+        List<WorkClientLinkman> clientLinkmanList = workClientLinkmanDao.queryProjectLinkmans(projectRecords.getId(), 1);
+        for(WorkClientLinkman linkman :clientLinkmanList){
+            WorkClientInfo clientInfo = workClientInfoService.get(linkman.getClientId().getId());
+            linkman.setClientId(clientInfo);
+        }
+        projectRecords.setWorkClientLinkmanList(clientLinkmanList);
+        List<WorkClientLinkman> constructionLinkmanList = workClientLinkmanDao.queryProjectLinkmans(projectRecords.getId(), 3);
+        projectRecords.setWorkConstructionLinkmanList(constructionLinkmanList);
+    }
+
+    @Transactional(readOnly = false)
+    public String saveCheck(RuralProjectRecords projectRecords, ProjectStatusEnum projectStatus) throws Exception {
+        List<User> masters = workProjectUserDao.queryProjectUsers(projectRecords.getId(), "1");
+        Map<String, Object> variables = new HashMap<String, Object>();
+        Integer oldStatus = projectRecords.getCheckStatus();
+        projectRecords.setCheckStatus(projectStatus.getValue());
+
+        //启动审批流程
+        if (projectRecords.getCheckStatus()== ProjectStatusEnum.IN_APRL.getValue() && (oldStatus==null|| ProjectStatusEnum.REJECTED.getValue()!=oldStatus)) {
+            User user = UserUtils.getUser();
+            Office office =UserUtils.getSelectOffice();
+            Office company = UserUtils.getSelectCompany();
+            projectRecords.setOffice(office);
+            projectRecords.setCompany(company);
+            String contentStr = "项目【"+ projectRecords.getProjectName()+"】选查归档待审批,项目编号:"+projectRecords.getProjectId();
+            String titleStr = "项目【"+ projectRecords.getProjectName()+"】选查归档待审批";
+            String businessKey = projectRecords.getId();
+            // 用来设置启动流程的人员ID,引擎会自动把用户ID保存到activiti:initiator中
+            identityService.setAuthenticatedUserId(user.getId());
+            // 启动流程
+            WorkActivityMenu workActivityMenu = workActivityMenuService.findByParentAndOffice("9764872f45b84acd893010e66a3db2c8", office);
+            // 启动流程
+            String processType = workActivityMenu.getProcessType();
+            StringBuffer buffer = new StringBuffer();
+            Activity activity = new Activity();
+            WorkProjectNotify workProjectNotify = UtilNotify
+                    .saveNotify(projectRecords.getId(),
+                            null,
+                            projectRecords.getCompany().getId(),
+                            titleStr,
+                            contentStr,
+                            "140",
+                            "0",
+                            "待审批",
+                            ""
+                    );
+            List<User> users = new ArrayList<>();
+                super.save(projectRecords);
+            //总工
+            //List<User> bzshbs = UserUtils.getByRoleActivityEnname("bzshb",3,office.getId(),"12",projectRecords.getCreateBy());
+            //线下归档员
+            List<User> bggdglys = UserUtils.getByRoleActivityEnname("xxgdydyhu",3,office.getId(),"10",projectRecords.getCreateBy());
+            //总工(给个空值)
+            List<User> bzshbList = Lists.newArrayList();
+            if (StringUtils.isNotBlank(workActivityMenu.getId())) {
+                workProjectNotify.setNotifyRole("");
+                workActivityMenu = workActivityMenuService.get(workActivityMenu.getId());
+                List<Activity> activities = workActivityMenu.getActivities();
+                for (Activity a : activities) {
+                    String encount = a.getEncount();
+                    String enlist = a.getEnlist();
+                    if (a.getRole()!=null && com.jeeplus.common.utils.StringUtils.isNotBlank(a.getRole().getEnname())){
+                        List enusers = UserUtils.getByRoleActivityEnnames(a.getRole().getEnname(),office.getId(),"8",projectRecords.getCreateBy());
+                        if (enusers.size()==0){
+                            throw new Exception("流程审批人不能为空,角色"+a.getRole().getName()+"下无用户,请联系管理员!");
+                        }
+                        variables.put(encount, enusers.size());
+                        variables.put(enlist, enusers);
+                    }
+                    if (a.getDelFlag().equals("0") && a.getCount() == 1) {
+                        activity = a;
+                    }
+                }
+                buffer.append(activity.getRole().getEnname());
+                if (activity != null && com.jeeplus.common.utils.StringUtils.isNotBlank(activity.getId())) {
+                    //角色审批
+                    if (StringUtils.isNotBlank(activity.getRole().getEnname())) {
+                        users = UserUtils.getByRoleActivityEnnames(activity.getRole().getEnname(),office.getId(),"4",projectRecords.getCreateBy());
+                    }
+                    //人员审批
+                    if (StringUtils.isNotBlank(activity.getUser().getId())) {
+                        users.add(activity.getUser());
+                    }
+                }
+                workProjectNotify.setId("");
+            } else {
+                if (masters.size()==0){
+                    return "流程审批人不能为空,项目负责人下无用户,请联系管理员!";
+                }
+                processType = "checkAudit";
+                users.addAll(masters);
+                variables.put("masterList", masters);
+                variables.put("mastercount", masters.size());
+            }
+            for (User u : users){
+                workProjectNotify.setUser(u);
+                workProjectNotify.setNotifyRole("项目负责人审批");
+                workProjectNotify.setId("");
+                workProjectNotifyService
+                        .save(workProjectNotify);
+                Map<String,Object> extras = new HashMap<>();
+                extras.put("type","7001");
+                extras.put("id",workProjectNotify.getId());
+                extras.put("procDefKey","140");
+                UserUtils.pushInfoToApp(titleStr,contentStr,extras,u.getId());
+            }
+            variables.put("type", processType);
+            variables.put("busId", businessKey);
+            variables.put("title", "审批单:" + projectRecords.getProjectName());//设置标题;
+
+            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processType, businessKey, variables);
+            if (StringUtils.isNotBlank(projectRecords.getCheckProcessInstanceId())) {
+                workActivityProcessService.updateProcessInstanceId(processInstance.getId(),projectRecords.getCheckProcessInstanceId());
+                workActivityProcessService.deleteProcessInstanceId(projectRecords.getCheckProcessInstanceId());
+                workActivityProcessService.deleteProcessIdAuditUsers(projectRecords.getCheckProcessInstanceId());
+            }
+            // 更新流程实例ID
+            projectRecords.setCheckProcessInstanceId(processInstance.getId());
+            projectRecords.setCheckUserId(UserUtils.getUser().getId());
+            dao.updateProcessIdAndStatus(projectRecords);
+            List<Activity> list = workActivityMenu.getActivities();
+            if (list != null && list.size() != 0) {
+                workActivityProcessService.saveList(list, processInstance.getId());
+            } else {
+                WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+                workActivityProcess.setProcessKey(processType);
+                workActivityProcess.setCount(1);
+                workActivityProcess.setProcessInstanceId(processInstance.getId());
+                workActivityProcess.setIsApproval("0");
+                workActivityProcessService.insert(workActivityProcess);
+                workActivityProcess.setCount(2);
+                workActivityProcessService.insert(workActivityProcess);
+                workActivityProcess.setCount(3);
+                workActivityProcessService.insert(workActivityProcess);
+                workActivityProcessService.insertAuditsByType(masters,processInstance.getId(),1,1);
+                workActivityProcessService.insertAuditsByType(bzshbList,processInstance.getId(),2,0);
+                workActivityProcessService.insertAuditsByType(bggdglys,processInstance.getId(),3,0);
+            }
+            return "true";
+        }
+        return "";
+    }
+
+    /**
+     * 项目检查审批
+     * @param projectRecords
+     * @param auditUsers
+     * @return
+     * @throws Exception
+     */
+    @Transactional(readOnly = false)
+    public String auditSave(RuralProjectRecords projectRecords, List<User> auditUsers) throws Exception {
+        RuralProjectRecords records = this.get(projectRecords.getId());
+        //设置当前审核中总审人员流程信息
+        if (StringUtils.isBlank(records.getBzshbUserId())) {
+            //获取总审用户信息
+            User bzshbUser = UserUtils.get(projectRecords.getBzshbUserId());
+            List<User> bzshbList = Lists.newArrayList();
+            bzshbList.add(bzshbUser);
+            workActivityProcessService.insertAuditsByType(bzshbList,projectRecords.getCheckProcessInstanceId(),2,0);
+
+        }
+        int checkStatus = projectRecords.getCheckStatus();
+        String taskDefKey = projectRecords.getAct().getTaskDefKey();
+        if (!"modifyApply".equals(taskDefKey) && !taskDefKey.contains("audit") ) {
+            actTaskService.claim(projectRecords.getAct().getTaskId(), UserUtils.getUser().getId());
+        }else {
+            projectRecords.getAct().setFlag("yes");
+            saveCheck(projectRecords, ProjectStatusEnum.IN_APRL);
+        }
+
+        String comment = "";
+        if ( checkStatus == ProjectStatusEnum.REJECTED.getValue()) {
+            comment = ("yes".equals(projectRecords.getAct().getFlag())?"[重新申请] ":"[已撤销] ");
+        }else {
+            comment = ("yes".equals(projectRecords.getAct().getFlag())?"[同意] ":"[驳回] ")+projectRecords.getAct().getComment();
+        }
+
+        if (!"yes".equals(projectRecords.getAct().getFlag())) {
+            projectRecords.setCheckStatus(ProjectStatusEnum.REJECTED.getValue());
+        }
+
+        User createUser = UserUtils.get(projectRecords.getCreateBy().getId());
+
+        Map<String, Object> vars = Maps.newHashMap();
+        String notifyRole = "";
+        //业务逻辑对应的条件表达式
+        User user = null;
+        List<Activity> activitieList = activityService.getByProcessInstanceId(projectRecords.getCheckProcessInstanceId());
+        WorkActivityMenu workActivityMenu = new WorkActivityMenu();
+        if (activitieList != null && activitieList.size() != 0) {
+            workActivityMenu.setProcessType(activitieList.get(0).getProcessKey());
+            workActivityMenu.setActivities(activitieList);
+        }
+
+        WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+        WorkActivityProcess selectProcess = new WorkActivityProcess();
+        selectProcess.setProcessInstanceId(projectRecords.getCheckProcessInstanceId());
+        List<WorkActivityProcess> workActivityProcesses = workActivityProcessService.findList(selectProcess);
+        List<Activity> activities = workActivityMenu.getActivities();
+        String  taskCount = "1";
+        String enname = "";
+        Office office = projectRecords.getOffice();
+        office = officeService.get(office.getId());
+        projectRecords.setOffice(office);
+        String notifyStr = "项目编号:"+projectRecords.getProjectId()+",项目名称:"+ projectRecords.getProjectName();
+        String str = notifyStr+",创建人:"+projectRecords.getCreateBy().getName()+",所属部门:"+projectRecords.getOffice().getName();
+        String titleStr = "项目名称:"+ projectRecords.getProjectName();
+        int key = 0;
+        if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("checkAudit")) {
+            key = 1;
+            for (int i = 0; i < workActivityProcesses.size(); i++) {
+                WorkActivityProcess activityProcess = workActivityProcesses.get(i);
+                if (taskDefKey.equals("modifyApply")) {
+                    taskCount = "0";
+                    workActivityProcess.setId("");
+                    workActivityProcess.setCount(0);
+                    if (!"yes".equals(projectRecords.getAct().getFlag())) {
+                        projectRecords.setCheckStatus(ProjectStatusEnum.RECALL.getValue());
+                        workActivityProcess.setIsApproval("2");
+                        vars.put("pass", false);
+                    } else {
+                        vars.put("pass", true);
+                        workActivityProcess.setIsApproval("1");
+                    }
+                    break;
+                } else {
+                    taskCount = activityProcess.getCount()+"";
+                    workActivityProcess = activityProcess;
+                    if (!workActivityProcess.getIsApproval().equals("0")) {
+                        workActivityProcess.setId("");
+                    }
+                    for (Activity activity : activities) {
+                        if (activity.getCount() == activityProcess.getCount()) {
+                            notifyRole = activity.getName();
+                            break;
+                        }
+                    }
+                    if (!"yes".equals(projectRecords.getAct().getFlag())) {
+                        notifyRole = "调整项目";
+                        projectRecords.setCheckStatus(ProjectStatusEnum.REJECTED.getValue());
+                        workActivityProcess.setIsApproval("2");
+                        String returnBack = "-1";
+                        for (Activity activity : activities) {
+                            if (activity.getCount() == activityProcess.getCount()) {
+                                returnBack = activity.getReturnBack();
+                                break;
+                            }
+                        }
+                        if (returnBack.equals("0")) {
+                            workActivityProcess.setId("");
+                        }
+                        vars.put("pass", false);
+                    } else {
+                        workActivityProcess.setIsApproval("1");
+                        vars.put("pass", true);
+                    }
+                    break;
+                }
+            }
+        }else {
+            workActivityMenu.setProcessType("checkAudit");
+            for (int i = 0; i < workActivityProcesses.size(); i++) {
+                WorkActivityProcess activityProcess = workActivityProcesses.get(i);
+                String count = String.valueOf(activityProcess.getCount());
+                workActivityProcess = activityProcess;
+                if (!workActivityProcess.getIsApproval().equals("0")) {
+                    workActivityProcess.setId("");
+                }
+                // 审核环节
+                if ("master".equals(taskDefKey) && "1".equals(count)) {
+                    taskCount = count;
+                    if ("yes".equals(projectRecords.getAct().getFlag())) {
+                        notifyRole = "总工审批";
+                        workActivityProcess.setIsApproval("1");
+                        enname = "bzshb";
+                        vars.put("bzshbList", auditUsers);
+                        vars.put("bzshbcount",auditUsers.size());
+                        vars.put("pass", true);
+                        vars.put("passs", true);
+                    } else {
+                        workActivityProcess.setIsApproval("2");
+                        vars.put("pass", false);
+                        vars.put("passs", false);
+                        user = createUser;
+                        notifyRole = "调整项目";
+                    }
+                    break;
+                }
+                if ("bzshb".equals(taskDefKey) && "2".equals(count)) {
+                    taskCount = count;
+                    if ("yes".equals(projectRecords.getAct().getFlag())) {
+                        notifyRole = "项目归档员审批";
+                        workActivityProcess.setIsApproval("1");
+                        enname = "bggdgly";
+                        vars.put("bggdglyList", auditUsers);
+                        vars.put("bggdglycount",auditUsers.size());
+                        vars.put("pass", true);
+                        vars.put("passs", true);
+                    } else {
+                        workActivityProcess.setIsApproval("2");
+                        vars.put("pass", false);
+                        vars.put("passs", false);
+                        user = createUser;
+                        notifyRole = "调整项目";
+                    }
+                    break;
+                }else if ("bggdgly".equals(taskDefKey) && count.contains("3")) {
+                    taskCount = count;
+                    if ("yes".equals(projectRecords.getAct().getFlag())) {
+                        notifyRole = "审批通过";
+                        workActivityProcess.setIsApproval("1");
+                        vars.put("pass", true);
+                        vars.put("passs", true);
+                    } else {
+                        notifyRole = "调整报告";
+                        workActivityProcess.setIsApproval("2");
+                        vars.put("pass", false);
+                        vars.put("passs", false);
+                    }
+                    break;
+                } else if ("modifyApply".equals(taskDefKey) && "0".equals(count)) {
+                    notifyRole = "负责人审批";
+                    taskCount = "0";
+                    enname = "master";
+                    workActivityProcess.setCount(0);
+                    if("yes".equals(projectRecords.getAct().getFlag())){
+                        workActivityProcess.setIsApproval("1");
+                        vars.put("pass",true);
+                        vars.put("passs",true);
+                    }else{
+                        workActivityProcess.setIsApproval("2");
+                        projectRecords.setCheckStatus(ProjectStatusEnum.RECALL.getValue());
+                        vars.put("pass",false);
+                        vars.put("passs",false);
+                    }
+                    break;
+                }
+            }
+        }
+        workActivityProcessService.updateProcess(workActivityProcess,workActivityMenu,key,taskCount,projectRecords.getCheckProcessInstanceId(),taskDefKey,"modifyApply",projectRecords.getAct().getFlag(),comment, activities);
+        // 设置意见
+        projectRecords.getAct().setComment(comment);
+        projectRecords.preUpdate();
+        //判断是否是审核通过
+        if("yes".equals(projectRecords.getAct().getFlag())){
+            actTaskService.complete(projectRecords.getAct().getTaskId(), projectRecords.getAct().getProcInsId(), projectRecords.getAct().getComment(), vars);
+        }else{
+            //不通过需要查询审核组角色id
+            List<Act> list2 = actTaskService.toMyStartedList(projectRecords.getCheckProcessInstanceId());
+            // 提交流程任务
+            //如果是驳回,并且审核角色为多个,需要对每个角色的审核流都进行处理
+            for (Act actInfo: list2) {
+                actTaskService.complete(actInfo.getTask().getId(), actInfo.getProcInsId(), projectRecords.getAct().getComment(), vars);
+            }
+        }
+        boolean state = actTaskService.isProcessEnd(projectRecords.getAct().getProcInsId());
+        List<User> users = new ArrayList<>();
+        List<User> userList = new ArrayList<>();
+        if(!state) {
+            users.add(projectRecords.getCreateBy());
+            //审核完成提示框
+            String title = "项目【"+projectRecords.getProjectName()+"】项目选查归档完成";
+            String content = "项目【"+projectRecords.getProjectName()+"】项目选查归档完成,项目编号:"+projectRecords.getProjectId();
+            if ("yes".equals(projectRecords.getAct().getFlag())) {
+                projectRecords.setCheckStatus(ProjectStatusEnum.SIGNED.getValue());
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectRecords.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                users.add(projectRecords.getCreateBy());
+                workProjectNotifyService
+                        .save(UtilNotify
+                                .saveNotify(projectRecords.getId(),
+                                        projectRecords.getCreateBy(),
+                                        projectRecords.getCompany().getId(),
+                                        title,
+                                        content,
+                                        "140",
+                                        "0",
+                                        "待通知",
+                                        notifyRole));
+            } else {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectRecords.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                users.add(projectRecords.getCreateBy());
+                if (projectRecords.getCheckStatus()!= ProjectStatusEnum.RECALL.getValue()){
+                    projectRecords.setCheckStatus(ProjectStatusEnum.REJECTED.getValue());
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(projectRecords.getId(),
+                                            projectRecords.getCreateBy(),
+                                            projectRecords.getCompany().getId(),
+                                            titleStr,
+                                            notifyStr,
+                                            "140",
+                                            "0",
+                                            "待通知",
+                                            notifyRole));
+                }
+            }
+            workActivityProcessService.deleteProcessIdAuditUsers(projectRecords.getCheckProcessInstanceId());
+
+        }else{
+            if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("checkAudit")) {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectRecords.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                WorkProjectNotify workProjectNotify = UtilNotify
+                        .saveNotify(projectRecords.getId(),
+                                new User(),
+                                projectRecords.getCompany().getId(),
+                                titleStr,
+                                str,
+                                "140",
+                                "0",
+                                "待审批",
+                                notifyRole);
+                String count = taskDefKey.replace("audit","").replace("task","");
+                List<WorkProjectNotify> workProjectNotifys = activityService.getByFlagAndTaskDefKeyList(
+                        activities,
+                        workProjectNotify,
+                        taskDefKey,
+                        projectRecords.getAct().getFlag(),
+                        count,
+                        projectRecords.getCreateBy(),
+                        projectRecords.getOffice().getId(),
+                        "4");
+                for (WorkProjectNotify workProjectNotify1:workProjectNotifys){
+                    users.add(workProjectNotify1.getUser());
+                    workProjectNotify1.setId("");
+                    workProjectNotify1.setIsNewRecord(false);
+                    workProjectNotifyService.save(workProjectNotify1);
+                }
+            }else {
+                if (!"yes".equals(projectRecords.getAct().getFlag())) {//驳回待办提醒
+                    str = "项目【"+ projectRecords.getProjectName()+"】项目选查归档被驳回,请选择重新申请或删除";
+                    titleStr = "项目【"+ projectRecords.getProjectName()+"】项目选查归档被驳回";
+                    WorkProjectNotify notify = new WorkProjectNotify();
+                    notify.setNotifyId(projectRecords.getId());
+                    userList = workProjectNotifyService.readByNotifyId(notify);
+                    users.add(user);
+                    User informUser = UserUtils.get(records.getCheckUserId());
+                    WorkProjectNotify workProjectNotify = UtilNotify
+                            .saveNotify(projectRecords.getId(),
+                                    informUser,
+                                    projectRecords.getCompany().getId(),
+                                    titleStr,
+                                    str,
+                                    "140",
+                                    "0",
+                                    "重新申请",
+                                    notifyRole);
+                    workProjectNotifyService.save(workProjectNotify);
+                } else {
+                    if (StringUtils.isNotBlank(enname)) {//驳回重新申请待办信息
+                        str = "项目【"+ projectRecords.getProjectName()+"】重新选查归档,待审批,项目编号:"+projectRecords.getProjectId();
+                        titleStr = "项目【"+ projectRecords.getProjectName()+"】重新选查归档,待审批";
+                        WorkProjectNotify notify = new WorkProjectNotify();
+                        notify.setNotifyId(projectRecords.getId());
+                        userList = workProjectNotifyService.readByNotifyId(notify);
+                        WorkProjectNotify workProjectNotify = UtilNotify
+                                .saveNotify(projectRecords.getId(),
+                                        new User(),
+                                        projectRecords.getCompany().getId(),
+                                        titleStr,
+                                        str,
+                                        "140",
+                                        "0",
+                                        "待审批",
+                                        notifyRole);
+                        for (User user1:auditUsers){
+                            users.add(user1);
+                            workProjectNotify.setUser(user1);
+                            workProjectNotify.setId("");
+                            workProjectNotify.setIsNewRecord(false);
+                            workProjectNotifyService.save(workProjectNotify);
+                            Map<String,Object> extras = new HashMap<>();
+                            extras.put("type","7003");
+                            extras.put("procDefKey","140");
+                            extras.put("id",workProjectNotify.getId());
+                            UserUtils.pushInfoToApp(titleStr,str,extras,user1.getId());
+                        }
+                    }else {
+                        WorkProjectNotify notify = new WorkProjectNotify();
+                        notify.setNotifyId(projectRecords.getId());
+                        userList = workProjectNotifyService.readByNotifyId(notify);
+                        users.add(projectRecords.getCreateBy());
+                        workProjectNotifyService
+                                .save(UtilNotify
+                                        .saveNotify(projectRecords.getId(),
+                                                projectRecords.getCreateBy(),
+                                                projectRecords.getCompany().getId(),
+                                                titleStr,
+                                                str,
+                                                "140",
+                                                "0",
+                                                "重新申请",
+                                                notifyRole));
+                    }
+                }
+            }
+        }
+        dao.updateSelectiveById(projectRecords);
+        return "保存审核意见成功!";
+    }
+
+
+    @Transactional(readOnly = false)
+    public void cancelProcess(RuralProjectRecords projectRecords) throws Exception {
+        WorkActivityProcess process = new WorkActivityProcess();
+        process.setProcessInstanceId(projectRecords.getCheckProcessInstanceId());
+        process.setIsApproval("0");
+        WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+        workActivityProcess.setProcessInstanceId(projectRecords.getCheckProcessInstanceId());
+        List<WorkActivityProcess> processList = workActivityProcessService.findList(workActivityProcess);
+        WorkProjectNotify notify = new WorkProjectNotify();
+        notify.setNotifyId(projectRecords.getId());
+        List<User> userList = workProjectNotifyService.readByNotifyId(notify);
+        if (userList!=null && userList.size()!=0) {
+            for (User u : userList) {
+                User user = UserUtils.get(u.getId());
+                UserUtils.pushIm(u.getId(),"申请人 "+user.getName() +",项目登记审批:"+projectRecords.getProjectName() +" 强制撤销!");
+            }
+        }
+        if(processList!=null && processList.size()>0) {
+            for (int i = 0; i < processList.size(); i++) {
+                WorkActivityProcess p = processList.get(i);
+                if (StringUtils.isNotBlank(p.getIsApproval()) && "0".equals(p.getIsApproval())) {
+                    p.setIsApproval("-1");
+                    p.setDelFlag("1");
+                    workActivityProcessDao.updateDelFlagAndIsApproval(p);
+                }
+            }
+            WorkActivityProcess pro = new WorkActivityProcess();
+            pro.setId("");
+            pro.setDelFlag("0");
+            pro.preInsert();
+            pro.setRemarks("[强制撤销]");
+            pro.setProcessKey(processList.get(0).getProcessKey());
+            pro.setIsApproval("1");
+            pro.setProcessInstanceId(processList.get(0).getProcessInstanceId());
+            pro.setCount(0);
+            workActivityProcessDao.insert(pro);
+
+            //结束该流程,设为"撤销"状态月
+            RuralProjectRecords newRecords = new RuralProjectRecords();
+            newRecords.setId(projectRecords.getId());
+            newRecords.setCheckStatus(ProjectStatusEnum.RECALL.getValue());
+            newRecords.preUpdate();
+            dao.updateSelectiveById(newRecords);
+            actTaskService.endProcessInstance(projectRecords.getCheckProcessInstanceId(), "项目登记-撤回");
+        }
+    }
+
+    /**
+     * 删除项目选查流程信息
+     * @param projectRecords
+     */
+    @Transactional(readOnly = false)
+    public void delete(RuralProjectRecords projectRecords){
+        if(null != projectRecords && StringUtils.isNotBlank(projectRecords.getId())){
+            dao.delete(projectRecords);
+        }
+    }
+
+}

+ 353 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectRecordChooseCheckAllController.java

@@ -0,0 +1,353 @@
+package com.jeeplus.modules.ruralprojectrecords.web;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.MyBeanUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.act.entity.Act;
+import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportRecord;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
+import com.jeeplus.modules.projectrecord.entity.ProjectPlanInfo;
+import com.jeeplus.modules.projectrecord.service.ProjectPlanService;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralPeojectRecordChooseCheckAllService;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralPeojectRecordChooseCheckService;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageService;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.service.UserService;
+import com.jeeplus.modules.sys.utils.DictUtils;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import jersey.repackaged.com.google.common.collect.Lists;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.activiti.engine.task.Task;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @author: 徐滕
+ * @create: 2021-03-09 09:27
+ **/
+@Controller
+@RequestMapping(value = "${adminPath}/project/recordChooseCheckAll")
+public class RuralProjectRecordChooseCheckAllController extends BaseController {
+
+    @Autowired
+    private RuralPeojectRecordChooseCheckAllService service;
+    @Autowired
+    private RuralProjectRecordsService ruralProjectRecordsService;
+    @Autowired
+    private ProjectPlanService projectPlanService;
+    @Autowired
+    private ProjectReportDataService projectReportDataService;
+    @Autowired
+    private RuralProjectMessageService ruralProjectMessageService;
+    @Autowired
+    private ActTaskService actTaskService;
+    @Autowired
+    private UserService userService;
+
+
+    @ModelAttribute
+    public RuralProjectRecords get(@RequestParam(required=false) String id) {
+        RuralProjectRecords entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = service.get(id);
+        }
+        if (entity == null){
+            entity = new RuralProjectRecords();
+        }
+        return entity;
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequiresPermissions("project:recordChooseCheck:list")
+    @RequestMapping(value = {"list", ""})
+    public String list(RuralProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        List<String> typeList = Lists.newArrayList();
+        typeList.add("1");
+        typeList.add("2");
+        //添加查询类型list
+        projectRecords.setTypeList(typeList);
+        //获取项目信息
+        Page<RuralProjectRecords> page = service.findPage(new Page<RuralProjectRecords>(request, response), projectRecords);
+        //无合同状态下,获取委托方的名称
+        List<RuralProjectRecords> list = page.getList();
+        for (int i = 0; i < list.size(); i++) {
+            RuralProjectRecords records1 = list.get(i);
+            if (records1.getWorkContractInfo() == null) {
+                service.queryLinkmanInfos(records1);
+                if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+                    WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+                    WorkContractInfo contractInfo = new WorkContractInfo();
+                    contractInfo.setClient(linkman.getClientId());
+                    records1.setWorkContractInfo(contractInfo);
+                }
+            }
+            //判断是否为admin
+            if (UserUtils.isManager()){
+                records1.setFlagAdmin("1");
+            }else{
+                records1.setFlagAdmin("0");
+            }
+        }
+        model.addAttribute("page", page);
+        return "modules/ruralprojectrecords/check/ruralProjectRecordsAllList";
+    }
+
+    /**
+     * 查看,增加,编辑项目表单页面
+     */
+    @RequiresPermissions(value={"ruralProject:ruralProjectRecords:add","ruralProject:ruralProjectRecords:edit"},logical=Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(RuralProjectRecords projectRecords, Model model) {
+        if (projectRecords!=null&&StringUtils.isNotBlank(projectRecords.getId())) {
+            projectRecords = service.get(projectRecords.getId());
+            ruralProjectRecordsService.queryProjectDetail(projectRecords);
+            ProjectPlanInfo projectPlanInfo = new ProjectPlanInfo();
+            projectPlanInfo.setProjectId(projectRecords.getId());
+            //获取项目计划信息
+            List<ProjectPlanInfo> projectPlanList = projectPlanService.getProjectPlanList(projectPlanInfo);
+            //项目计划附件信息
+            List<WorkClientAttachment> projectPlanAttachment = projectPlanService.getWorkAttachment(projectRecords.getId());
+            projectRecords.setProjectPlanList(projectPlanList);
+            projectRecords.setWorkAttachments(projectPlanAttachment);
+            if(StringUtils.isNotBlank(projectRecords.getAttachmentProjectSort())){
+                //处理项目类别
+                List<MainDictDetail> mainDictList = DictUtils.getMainDictList("attachment_project_sort");
+                for (MainDictDetail info: mainDictList) {
+                    if(projectRecords.getAttachmentProjectSort().equals(info.getValue())){
+                        projectRecords.setAttachmentProjectSort(info.getLabel());
+                        break;
+                    }
+                }
+            }
+
+            //查询项目报告信息
+            ProjectReportData projectReportData = projectReportDataService.getReportDataByProjectId(projectRecords.getId());
+            //如果项目报告不为空,则查询项目线上归档信息
+            if(null != projectReportData){
+                ProjectReportRecord projectReportRecord = ruralProjectMessageService.getProjectReportRecord(projectReportData.getId());
+                if(null != projectReportRecord){
+                    model.addAttribute("projectId", projectRecords.getId());
+                }else{
+                    model.addAttribute("projectId", "");
+                }
+            }
+        }
+        model.addAttribute("projectRecords", projectRecords);
+        return "modules/ruralprojectrecords/check/ruralProjectRecordsForm";
+    }
+
+    /**
+     * 保存项目
+     */
+    @RequiresPermissions(value={"project:recordChooseCheck:add","project:recordChooseCheck:edit"},logical= Logical.OR)
+    @RequestMapping(value = "save")
+    public String save(RuralProjectRecords projectRecords, RedirectAttributes redirectAttributes) throws Exception {
+        try {
+            RuralProjectRecords t = service.get(projectRecords.getId());//从数据库取出记录的值
+            if(t.getCheckStatus() == 3 || t.getCheckStatus() == 1) {
+                MyBeanUtils.copyBeanNotNull2Bean(projectRecords, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+                service.saveCheck(t, ProjectStatusEnum.IN_APRL);//保存
+            }else if(t.getCheckStatus() == 2){
+                addMessage(redirectAttributes, "选查项目已送审,无法重复送审");
+                return "redirect:"+ Global.getAdminPath()+"/project/recordChooseCheck/?repage";
+            }else if(t.getCheckStatus() == 5){
+                addMessage(redirectAttributes, "选查项目已登记完成,无法再次送审");
+                return "redirect:"+Global.getAdminPath()+"/project/recordChooseCheck/?repage";
+            } else {//新增表单保存
+                service.saveCheck(projectRecords, ProjectStatusEnum.IN_APRL);//保存
+            }
+            addMessage(redirectAttributes, "选查项目流程创建成功");
+        }catch (Exception e){
+            logger.error("项目检查流程创建异常:",e);
+            addMessage(redirectAttributes, "选查项目流程创建异常:"+e.getMessage());
+        }
+        return "redirect:"+Global.getAdminPath()+"/project/recordChooseCheck/?repage";
+    }
+
+    /**
+     * 检查流程审批
+     * @param projectRecords
+     * @param redirectAttributes
+     * @return
+     */
+    @RequestMapping("saveAudit")
+    public String saveAudit(RuralProjectRecords projectRecords,RedirectAttributes redirectAttributes) {
+        String home = projectRecords.getHome();
+        try {
+            String taskDefKey = projectRecords.getAct().getTaskDefKey();
+            //当状态为未通过时,重新修改数据
+            if ("modifyApply".equals(taskDefKey)) {
+                projectRecords.getAct().setComment("重新申请");
+            }
+            List<User> users = UserUtils.getByProssType(projectRecords.getCheckProcessInstanceId(),1);
+            if ("master".equals(taskDefKey)){
+                users = UserUtils.getByProssType(projectRecords.getCheckProcessInstanceId(),2);
+                if (users==null )
+                    users = UserUtils.getByRoleActivityEnname("bzshb",3,projectRecords.getOffice().getId(),"12",projectRecords.getCreateBy());
+            }else if ("bzshb".equals(taskDefKey)){
+                users = UserUtils.getByProssType(projectRecords.getCheckProcessInstanceId(),5);
+                if (users==null )
+                    users = UserUtils.getByRoleActivityEnname("xxgdydyhu",3,projectRecords.getOffice().getId(),"12",projectRecords.getCreateBy());
+            }else if ("bggdgly".equals(taskDefKey)){
+                users = UserUtils.getByProssType(projectRecords.getCheckProcessInstanceId(),5);
+                if (users==null )
+                    users = UserUtils.getByRoleActivityEnname("xxgdydyhu",3,projectRecords.getOffice().getId(),"12",projectRecords.getCreateBy());
+            }else if ("modifyApply".equals(taskDefKey)){
+                users = UserUtils.getByProssType(projectRecords.getCheckProcessInstanceId(),1);
+            }
+            String flag = projectRecords.getAct().getFlag();
+            if ("yes".equals(flag) && (users==null || users.size()==0)){
+                addMessage(redirectAttributes, "审批失败,审批人为空,请联系管理员!");
+            }else {
+                RuralProjectRecords t = service.get(projectRecords.getId());//从数据库取出记录的值
+                /*if( t.getCheckStatus() != 4 && t.getCheckStatus() != 5){
+                    addMessage(redirectAttributes, "项目已送审,请勿重复送审");
+                    return "redirect:"+Global.getAdminPath()+"/project/recordChooseCheck/?repage";
+                }*/
+                if(t.getCheckStatus() == 5){
+                    addMessage(redirectAttributes, "选查项目已登记完成,无法再次送审");
+                    return "redirect:"+Global.getAdminPath()+"/project/recordChooseCheck/?repage";
+                }
+
+                String str = service.auditSave(projectRecords,users);
+                addMessage(redirectAttributes, str);
+            }
+        }catch (Exception e){
+            addMessage(redirectAttributes, "选查项目流程审批失败");
+        }
+
+        if (StringUtils.isNotBlank(home) && "home".equals(home)){
+            return "redirect:" + Global.getAdminPath() + "/home/?repage";
+        }else {
+            return "redirect:" + Global.getAdminPath() + "/project/recordChooseCheck/?repage";
+        }
+    }
+
+    /**
+     * 查询流程信息
+     * @param projectRecords
+     * @param model
+     * @return
+     */
+    @RequestMapping(value = "getProcess")
+    public String getProcess(RuralProjectRecords projectRecords, Model model){
+        projectRecords = service.get(projectRecords.getId());
+        model.addAttribute("processInstanceId", projectRecords.getCheckProcessInstanceId());
+        return "modules/ruralprojectrecords/ruralProjectRecordsTask";
+    }
+
+
+
+    /**
+     * 编辑项目表单页面
+     */
+    @RequiresPermissions(value={"project:recordChooseCheck:edit"},logical=Logical.OR)
+    @RequestMapping(value = "modify")
+    public String modify(RuralProjectRecords projectRecords, Model model, RedirectAttributes redirectAttributes) {
+        projectRecords=service.get(projectRecords.getId());
+        ProcessInstance processInstance = actTaskService.getProcIns(projectRecords.getCheckProcessInstanceId());
+        if (processInstance!=null) {
+            Task taskInfok = actTaskService.getCurrentTaskInfo(processInstance);
+            Act act = new Act();
+            act.setTaskId(taskInfok.getId());
+            act.setTaskName(taskInfok.getName());
+            act.setTaskDefKey(taskInfok.getTaskDefinitionKey());
+            act.setProcDefId(taskInfok.getProcessDefinitionId());
+            act.setProcInsId(taskInfok.getProcessInstanceId());
+            act.setTask(taskInfok);
+            projectRecords.setAct(act);
+        }
+
+        if(StringUtils.isNotBlank(projectRecords.getAttachmentProjectSort())){
+            //处理项目类别
+            List<MainDictDetail> mainDictList = DictUtils.getMainDictList("attachment_project_sort");
+            for (MainDictDetail info: mainDictList) {
+                if(projectRecords.getAttachmentProjectSort().equals(info.getValue())){
+                    projectRecords.setAttachmentProjectSort(info.getLabel());
+                    break;
+                }
+            }
+        }
+        //查询总审人员信息
+        List<User> auditUserList = userService.getAuditUserList();
+        projectRecords.setBzshbUserList(auditUserList);
+        ruralProjectRecordsService.queryProjectDetail(projectRecords);
+        model.addAttribute("projectRecords", projectRecords);
+        return "modules/ruralprojectrecords/check/ruralProjectRecordsModify";
+    }
+
+
+    /**
+     * 撤回审批
+     * @param request
+     * @param redirectAttributes
+     * @return
+     */
+    @RequestMapping(value = "revoke")
+    public String revoke(HttpServletRequest request, RedirectAttributes redirectAttributes) {
+        HashMap<String, String> requestMap = findRequestMap(request);
+        String processInstanceId = requestMap.get("processInstanceId");
+        String id = requestMap.get("id");
+        //获取项目状态
+        Integer projectStatus = Integer.parseInt(requestMap.get("checkStatus"));
+        try {
+            RuralProjectRecords projectRecords = service.get(id);
+            if(projectRecords.getCheckStatus() != projectStatus){
+                addMessage(redirectAttributes, "选查项目不是送审状态,无法撤回");
+                return "redirect:"+Global.getAdminPath()+"/project/recordChooseCheck/?repage";
+            }
+            service.cancelProcess(projectRecords);
+            addMessage(redirectAttributes, "撤回该选查项目成功");
+        }catch (Exception e){
+            logger.info(e.getMessage());
+            addMessage(redirectAttributes, "撤回该选查项目失败");
+        }
+        return "redirect:" + Global.getAdminPath() + "/project/recordChooseCheck/?repage";
+    }
+
+
+    /**
+     * 删除项目
+     */
+    @RequiresPermissions("project:recordChooseCheck:del")
+    @RequestMapping(value = "delete")
+    public String delete(RuralProjectRecords projectRecords, RedirectAttributes redirectAttributes) {
+        int status = projectRecords.getCheckStatus();
+        if(status== ProjectStatusEnum.TSTORE.getValue()||status== ProjectStatusEnum.REJECTED.getValue()||status== ProjectStatusEnum.RECALL.getValue()){
+            service.delete(projectRecords);
+            addMessage(redirectAttributes, "删除项目选查流程成功");
+            return "redirect:"+Global.getAdminPath()+"/project/recordChooseCheck/?repage";
+        }else {
+            addMessage(redirectAttributes, "删除项目选查流程失败,只有“暂存”、“驳回”、“撤回”状态的流程才能删除");
+        }
+        return "redirect:"+Global.getAdminPath()+"/project/recordChooseCheck/?repage";
+    }
+}

+ 29 - 29
src/main/java/com/jeeplus/modules/workinvoice/web/WorkInvoiceAllController.java

@@ -194,7 +194,7 @@ public class WorkInvoiceAllController extends BaseController {
 		if (StringUtils.isNotBlank(workInvoice.getHome()) && "home".equals(workInvoice.getHome())){
 			return "redirect:" + Global.getAdminPath() + "/home/?repage";
 		}else {
-			return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+			return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 		}
 	}
 	/**
@@ -203,7 +203,7 @@ public class WorkInvoiceAllController extends BaseController {
 	@RequiresPermissions(value={"workinvoice:workInvoice:view","workinvoice:workInvoice:add","workinvoice:workInvoice:edit"},logical= Logical.OR)
 	@RequestMapping(value = "form")
 	public String form(WorkInvoice workInvoice, Model model) {
-		String view = "workInvoiceForm";
+		String view = "workInvoiceAllForm";
 		String tabId = request.getParameter("tabId");
 		if("1".equals(tabId)){
 			view = "workInvoiceView";
@@ -219,7 +219,7 @@ public class WorkInvoiceAllController extends BaseController {
 				act.setProcInsId(taskInfok.getProcessInstanceId());
 				act.setTask(taskInfok);
 				workInvoice.setAct(act);
-				view = "workInvoiceModify";
+				view = "workInvoiceAllModify";
 			}
 		}
 		// 环节编号
@@ -249,7 +249,7 @@ public class WorkInvoiceAllController extends BaseController {
 	@RequestMapping(value = "receiptForm")
 	public String receiptForm(WorkInvoice workInvoice, Model model) {
 		model.addAttribute("workInvoice", workInvoice);
-		return "modules/workinvoice/workInvoiceReceiptForm";
+		return "modules/workinvoice/workInvoiceAllReceiptForm";
 	}
 
 	/**
@@ -259,7 +259,7 @@ public class WorkInvoiceAllController extends BaseController {
 	public String saveReceipt(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) {
 		workInvoiceService.saveReceipt(workInvoice);
 		addMessage(redirectAttributes, "保留收款信息成功");
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 
 	/**
@@ -270,7 +270,7 @@ public class WorkInvoiceAllController extends BaseController {
 		workInvoiceService.saveReceipt(workInvoice);
 		workInvoiceService.receiptMoney(workInvoice);
 		addMessage(redirectAttributes, "确认收款信息成功");
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 
 	/**
@@ -286,7 +286,7 @@ public class WorkInvoiceAllController extends BaseController {
 		String invoiceState = workInvoice.getInvoiceState();
 		if(user!=null && !UserUtils.getUser().getId().equals(user.getId()) && StringUtils.isNotBlank(user.getId())){
 			addMessage(redirectAttributes, "您不是申请人,无法修改");
-			return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+			return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 		}
 		//启动流程
 		workInvoice.setInvoiceState("2");
@@ -326,7 +326,7 @@ public class WorkInvoiceAllController extends BaseController {
 //			addMessage(redirectAttributes, "发票申请提交失败!");
 //			addMessage(redirectAttributes, "系统内部错误");
 //		}
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 
 
@@ -335,7 +335,7 @@ public class WorkInvoiceAllController extends BaseController {
 	 */
 	@RequestMapping(value = "cancellationForm")
 	public String cancellationForm(WorkInvoice workInvoice, Model model) {
-		String view = "conditionWorkInvoiceForm";
+		String view = "conditionWorkInvoiceAllForm";
 		String tabId = request.getParameter("tabId");
 		if("1".equals(tabId)){
 			view = "workInvoiceView";
@@ -424,9 +424,9 @@ public class WorkInvoiceAllController extends BaseController {
 		}
 		else{
 			addMessage(redirectAttributes, "您不是申请人或财务部成员,无法作废");
-			return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+			return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 		}
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 
 
@@ -487,7 +487,7 @@ public class WorkInvoiceAllController extends BaseController {
 		if (StringUtils.isNotBlank(workInvoice.getHome()) && "home".equals(workInvoice.getHome())){
 			return "redirect:" + Global.getAdminPath() + "/home/?repage";
 		}else {
-			return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+			return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 		}
 	}
 
@@ -507,7 +507,7 @@ public class WorkInvoiceAllController extends BaseController {
 		String sta = workInvoice.getInvoiceState();
 		if(!UserUtils.getUser().getId().equals(submitter) && !Strings.isNullOrEmpty(submitter) && sta != null){
 			addMessage(redirectAttributes, "您不是申请人,无法修改");
-			return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+			return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 		}
 		if(!workInvoice.getIsNewRecord()){//编辑表单保存
 			WorkInvoice t = workInvoiceService.get(workInvoice.getId());//从数据库取出记录的值
@@ -524,7 +524,7 @@ public class WorkInvoiceAllController extends BaseController {
 			workInvoiceService.save(workInvoice);//保存
 		}
 		addMessage(redirectAttributes, "保存发票成功");
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 
 	/**
@@ -557,7 +557,7 @@ public class WorkInvoiceAllController extends BaseController {
 	public String delete(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) {
 		workInvoiceService.delete(workInvoice);
 		addMessage(redirectAttributes, "删除发票管理成功");
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 	/**
 	 * 财务收款状态更改方法
@@ -566,7 +566,7 @@ public class WorkInvoiceAllController extends BaseController {
 	public String receiptMoney(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) {
 		workInvoiceService.receiptMoney(workInvoice);
 		addMessage(redirectAttributes, "发票收款成功");
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 	
 	/**
@@ -580,7 +580,7 @@ public class WorkInvoiceAllController extends BaseController {
 			workInvoiceService.delete(workInvoiceService.get(id));
 		}
 		addMessage(redirectAttributes, "作废发票管理成功");
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 	
 	/**
@@ -597,7 +597,7 @@ public class WorkInvoiceAllController extends BaseController {
 		} catch (Exception e) {
 			addMessage(redirectAttributes, "导出发票管理记录失败!失败信息:"+e.getMessage());
 		}
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
     }
 
 	/**
@@ -630,7 +630,7 @@ public class WorkInvoiceAllController extends BaseController {
 		} catch (Exception e) {
 			addMessage(redirectAttributes, "导入发票管理失败!失败信息:"+e.getMessage());
 		}
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
     }
 	
 	/**
@@ -647,7 +647,7 @@ public class WorkInvoiceAllController extends BaseController {
 		} catch (Exception e) {
 			addMessage(redirectAttributes, "导入模板下载失败!失败信息:"+e.getMessage());
 		}
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
     }
 	
 	
@@ -953,7 +953,7 @@ public class WorkInvoiceAllController extends BaseController {
 	@RequestMapping(value = "applyOnWorkInvoice")
 	public String applyOnWorkInvoice(Act act, HttpServletResponse response, Model model) {
 		// 获取流程XML上的表单KEY
-			String formKey = "/workinvoice/workInvoice/form";
+			String formKey = "/workinvoiceAll/workInvoiceAll/form";
 		//logger.info("------formKeys:"+formKeys);
 		// 获取流程实例对象
 		if (act.getProcInsId() != null){
@@ -1000,7 +1000,7 @@ public class WorkInvoiceAllController extends BaseController {
 	@RequestMapping("cancelInvalidate")
 	public String cancelInvalidate(WorkInvoice workInvoice,RedirectAttributes redirectAttributes){
 		workInvoiceService.cancelInvalidate(workInvoice);
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 	@RequiresPermissions(value={"workinvoice:workInvoice:alteredit"},logical= Logical.OR)
 	@RequestMapping(value = "alterForm")
@@ -1054,7 +1054,7 @@ public class WorkInvoiceAllController extends BaseController {
 		String processInstanceId = "";
 		String str = workInvoiceService.save(workInvoice, variables,processInstanceId);
 		addMessage(redirectAttributes, "启动流程成功");
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 	/**
 	 * 收款
@@ -1081,7 +1081,7 @@ public class WorkInvoiceAllController extends BaseController {
 		workProjectNotify.setType("21");//开票管理对应type21
 		workProjectNotify.setStatus("0");
 		workProjectNotifyService.save(workProjectNotify);
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 	/**
 	 * 取消收款
@@ -1108,7 +1108,7 @@ public class WorkInvoiceAllController extends BaseController {
 		workProjectNotify.setType("21");//开票管理对应type21
 		workProjectNotify.setStatus("0");
 		workProjectNotifyService.save(workProjectNotify);
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 	/**
 	 * 发票作废页面跳转
@@ -1155,7 +1155,7 @@ public class WorkInvoiceAllController extends BaseController {
 //			workInvoiceService.saveCancle(workInvoice, variables);
 //			addMessage(redirectAttributes, "提交审批'" + workInvoice.getDrawer().getName() + "'成功");
 //		}
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 
 	/**
@@ -1173,7 +1173,7 @@ public class WorkInvoiceAllController extends BaseController {
 //		}
 		workInvoiceService.cancleSave(workInvoice);
 		//return "redirect:" + adminPath + "/act/task";
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 /*--------------------------分割线---------------------------------*/
 
@@ -1185,7 +1185,7 @@ public class WorkInvoiceAllController extends BaseController {
 	@RequestMapping("conditionCancelInvalidate")
 	public String conditionCancelInvalidate(WorkInvoice workInvoice,RedirectAttributes redirectAttributes){
 		workInvoiceService.conditionCancelInvalidate(workInvoice);
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 
 	/**
@@ -1195,7 +1195,7 @@ public class WorkInvoiceAllController extends BaseController {
 	public String cancellationDelete(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) {
 		workInvoiceService.cancellationDelete(workInvoice);
 		addMessage(redirectAttributes, "作废发票删除成功");
-		return "redirect:"+Global.getAdminPath()+"/workinvoice/workInvoice/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
 	}
 
 }

+ 16 - 16
src/main/java/com/jeeplus/modules/workreimbursement/web/WorkReimbursementAllController.java

@@ -172,10 +172,10 @@ public class WorkReimbursementAllController extends BaseController {
 	 * 查看,增加,编辑报销单表单页面
 	 */
 //	@RequiresPermissions(value={"workreimbursement:workReimbursement:view","workreimbursement:workReimbursement:add","workreimbursement:workReimbursement:edit"},logical=Logical.OR)
-	@RequiresPermissions(value={"workreimbursement:workReimbursementAll:add","workreimbursement:workReimbursementAll:edit"})
+//	@RequiresPermissions(value={"workreimbursement:workReimbursementAll:add","workreimbursement:workReimbursementAll:edit"})
 	@RequestMapping(value = "form")
 	public String form(WorkReimbursement workReimbursement,Model model) {
-		String view = "workReimbursementFormAdd";
+		String view = "workReimbursementAllFormAdd";
 		Office office = UserUtils.getSelectOffice();
 		String tabId = request.getParameter("tabId");
 		//判断报销类型状态并添加报销类型信息数据
@@ -200,7 +200,7 @@ public class WorkReimbursementAllController extends BaseController {
 				act.setProcInsId(taskInfok.getProcessInstanceId());
 				act.setTask(taskInfok);
 				workReimbursement.setAct(act);
-				view = "workReimbursementModifyApply";
+				view = "workReimbursementAllModifyApply";
 			}
 		}
 		// 环节编号
@@ -236,7 +236,7 @@ public class WorkReimbursementAllController extends BaseController {
 			workReimbursement.setOfficeId(office.getId());
 			workReimbursement.setOfficeName(office.getTopCompany());
 		}
-		if ("workReimbursementFormAdd".equals(view)&&"0".equals(tabId)){
+		if ("workReimbursementAllFormAdd".equals(view)&&"0".equals(tabId)){
 			if(UserUtils.getBasicInfo()!=null && StringUtils.isNotBlank(UserUtils.getBasicInfo().getId())) {
 				List<WorkReimbursementBack> backList = workReimbursementBackService.findLoanList(UserUtils.getBasicInfo().getId());
 				workReimbursement.setReimbursementBackList(backList);
@@ -273,7 +273,7 @@ public class WorkReimbursementAllController extends BaseController {
 			workReimbursementService.save(workReimbursement);//保存
 		}
 		addMessage(redirectAttributes, "保存报销单成功");
-		return "redirect:" + adminPath +"/workreimbursement/workReimbursement/?repage";
+		return "redirect:" + adminPath +"/workreimbursement/workReimbursementAll/?repage";
 	}
 
 	/**
@@ -312,7 +312,7 @@ public class WorkReimbursementAllController extends BaseController {
 			addMessage(redirectAttributes, "报销申请提交失败!");
 			addMessage(redirectAttributes, "系统内部错误");
 		}
-		return "redirect:" + adminPath +"/workreimbursement/workReimbursement/?repage";
+		return "redirect:" + adminPath +"/workreimbursement/workReimbursementAll/?repage";
 //		return "modules/workreimbursement/reimbursementTodoList";
 	}
 
@@ -370,7 +370,7 @@ public class WorkReimbursementAllController extends BaseController {
 		if (StringUtils.isNotBlank(workReimbursement.getHome()) && "home".equals(workReimbursement.getHome())) {
 			return "redirect:" + Global.getAdminPath() + "/home/?repage";
 		} else {
-			return "redirect:" + Global.getAdminPath() + "/workreimbursement/workReimbursement/?repage";
+			return "redirect:" + Global.getAdminPath() + "/workreimbursement/workReimbursementAll/?repage";
 		}
 	}
 
@@ -385,15 +385,15 @@ public class WorkReimbursementAllController extends BaseController {
 		if("5".equals(sta) || "2".equals(sta) ){
 			if("5".equals(sta)){
 				addMessage(redirectAttributes, "报销单已报销,无法删除");
-				return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursement/?repage";
+				return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursementAll/?repage";
 			}else{
 				addMessage(redirectAttributes, "报销单正在审核中,无法删除");
-				return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursement/?repage";
+				return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursementAll/?repage";
 			}
 		}
 		workReimbursementService.delete(workReimbursement);
 		addMessage(redirectAttributes, "删除报销单成功");
-		return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursement/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursementAll/?repage";
 	}
 
 	/**
@@ -407,7 +407,7 @@ public class WorkReimbursementAllController extends BaseController {
 			workReimbursementService.delete(workReimbursementService.get(id));
 		}
 		addMessage(redirectAttributes, "删除报销单成功");
-		return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursement/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursementAll/?repage";
 	}
 
 	/**
@@ -425,7 +425,7 @@ public class WorkReimbursementAllController extends BaseController {
 		} catch (Exception e) {
 			addMessage(redirectAttributes, "导出报销单记录失败!失败信息:"+e.getMessage());
 		}
-		return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursement/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursementAll/?repage";
 	}
 
 	/**
@@ -458,7 +458,7 @@ public class WorkReimbursementAllController extends BaseController {
 		} catch (Exception e) {
 			addMessage(redirectAttributes, "导入报销单失败!失败信息:"+e.getMessage());
 		}
-		return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursement/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursementAll/?repage";
 	}
 
 	/**
@@ -476,7 +476,7 @@ public class WorkReimbursementAllController extends BaseController {
 		} catch (Exception e) {
 			addMessage(redirectAttributes, "导入模板下载失败!失败信息:"+e.getMessage());
 		}
-		return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursement/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursementAll/?repage";
 	}
 
 	/**
@@ -583,7 +583,7 @@ public class WorkReimbursementAllController extends BaseController {
 	@RequestMapping(value = "applyOnLeave")
 	public String applyOnCompany(Act act, HttpServletResponse response, Model model) {
 		// 获取流程XML上的表单KEY
-		String formKey = "/workreimbursement/workReimbursement/form";
+		String formKey = "/workreimbursement/workReimbursementAll/form";
 //        String formKey = actTaskService.getFormKey(act.getProcDefId(), act.getTaskDefKey());
 		// 获取流程实例对象
 		if (act.getProcInsId() != null){
@@ -732,7 +732,7 @@ public class WorkReimbursementAllController extends BaseController {
 			logger.error("Exception e"+e);
 			addMessage(redirectAttributes, "报销申请撤回失败");
 		}
-		return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursement/?repage";
+		return "redirect:"+Global.getAdminPath()+"/workreimbursement/workReimbursementAll/?repage";
 	}
 	/**
 	 * 合同管理列表页面

+ 363 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/check/ruralProjectRecordsAllList.jsp

@@ -0,0 +1,363 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目登记</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+, trigger: 'click'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+, trigger: 'click'
+            });
+        });
+
+        function reset() {
+            $("#searchForm").resetForm();
+        }
+
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'three-btns',
+                btn: ['送审', '暂存', '关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+
+        function openDialogre(title,url,width,height,target,buttons) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            var split = buttons.split(",");
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url,
+                btn: split,
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    if(split.length==2){return}
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="ruralProjectRecords" action="${ctx}/project/recordChooseCheck/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目编号:</label>
+							<div class="layui-input-block with-icon">
+								<form:input path="projectId" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目名称:</label>
+							<div class="layui-input-block">
+								<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">项目负责人:</label>
+							<div class="layui-input-block">
+								<form:input path="leaderNameStr" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">合同名称:</label>
+							<div class="layui-input-block">
+								<form:input path="workContractInfo.name" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">委托方:</label>
+							<div class="layui-input-block">
+								<form:input path="workContractInfo.client.name" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${projectRecords.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+                                <span class="group-sep">-</span>
+                                <input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                       value="<fmt:formatDate value="${projectRecords.endDate}" pattern="yyyy-MM-dd"/>"/>
+                                </input>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">状态:</label>
+							<div class="layui-input-block">
+								<form:select path="checkStatus" class=" form-control  simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getRuralDictList('check_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</div>
+						</div>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable1'
+            ,page: false
+            ,cols: [[
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'projName',align:'center', title: '项目名称',minWidth:200,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/ruralProject/ruralProjectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
+                    }}
+				,{field:'projId',align:'center', title: '项目编号',  width:150}
+                ,{field:'contract', align:'center',title: '合同名称',minWidth:200,templet:function(d){
+                    	return "<span title='"+ d.contract +"'>" + d.contract + "</span>";
+					}}
+                ,{field:'projMaster', align:'center',title: '负责人', width:65,templet:function(d){
+                        return "<span title=\"" + d.projMaster + "\">" + d.projMaster + "</span>";
+                    }}
+                ,{field:'client',align:'center', title: '委托方',  width:150,templet:function(d){
+                        return "<span title=\"" + d.client + "\">" + d.client + "</span>";
+                    }}
+                ,{field:'createDate',align:'center', title: '创建日期',  width:80}
+                ,{align:'center', title: '状态',  width:70,templet:function(d){
+                        var st = getCheckProjectState(d.checkStatus);
+                        if(st.action)
+                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/project/recordChooseCheck/getProcess?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                        else
+                            var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                        return xml;
+                    }}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml="";
+                        if(d.canAdd != undefined && d.canAdd =="1")
+                        {
+							xml+="<a href=\"#\" onclick=\"openDialogre('修改项目', '${ctx}/project/recordChooseCheck/form?id=" + d.id +"','95%', '95%','','送审,关闭')\" class=\"op-btn layui-bg-green\" ><i class=\"fa fa-plus\"></i> 检查</a>";
+                        }
+                        if(d.canedit1 != undefined && d.canedit1 =="1")
+                        {
+                            xml+="<a href=\"#\" onclick=\"openDialogre('修改项目', '${ctx}/project/recordChooseCheck/form?id=" + d.id +"','95%', '95%','','送审,关闭')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        }
+                        if(d.canedit2 != undefined && d.canedit2 =="1")
+                        {
+                            xml+="<a href=\"#\" onclick=\"openDialogre('调整项目', '${ctx}/project/recordChooseCheck/modify?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        }
+                        if(d.canrecall != undefined && d.canrecall =="1")
+                        {
+                            xml+="<a href=\"#\" onclick=\"openDialogre('调整项目', '${ctx}/project/recordChooseCheck/form?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        }
+                        if(d.candel != undefined && d.candel =="1")
+                        {
+                            xml+="<a href=\"${ctx}/project/recordChooseCheck/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该选查项目流程吗?', this.href)\" class=\"op-btn op-btn-invalid\"><i class=\"fa fa-trash-o\"></i> 删除</a>";
+                        }
+                        if(d.cancancel != undefined && d.cancancel =="1")
+                        {
+                            xml+="<a href=\"${ctx}/project/recordChooseCheck/revoke?id=" + d.id + "&processInstanceId=" + d.procId + "&checkStatus="+d.checkStatus+"\" onclick=\"return confirmx('确认要撤回该项目审批吗?', this.href)\" class=\"op-btn op-btn-cancel\" ><i class=\"glyphicon glyphicon-share-alt\"></i> 撤回</a>";
+                        }
+                        return xml;
+
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="projectRecords" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${projectRecords.id}"
+                    ,"projId":"${projectRecords.projectId}"
+                    ,"projName":"<c:out value="${projectRecords.projectName}" escapeXml="true"/>"
+                    ,"projMaster":"<c:forEach items="${projectRecords.projectLeaders}" var="leader" varStatus="status"><c:choose><c:when test="${status.last}">${leader.name}</c:when><c:otherwise>${leader.name},</c:otherwise></c:choose></c:forEach>"
+                    ,"contract":"${projectRecords.workContractInfo.name}"
+                    ,"client":"${projectRecords.workContractInfo.client.name}"
+                    ,"createDate":"<fmt:formatDate value="${projectRecords.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"projectStatus":"${projectRecords.projectStatus}"
+                    ,"checkStatus":"${projectRecords.checkStatus}"
+                    ,"procId":"${projectRecords.checkProcessInstanceId}"
+					,"flagAdmin":"${projectRecords.flagAdmin}"
+					,"checkStatus":"${projectRecords.checkStatus}"
+
+					<shiro:hasPermission name="project:recordChooseCheck:del">,"candel":	<c:choose><c:when test="${(projectRecords.checkStatus == 1 or projectRecords.checkStatus == 3 or projectRecords.checkStatus == 4)}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+					<shiro:hasPermission name="project:recordChooseCheck:edit">
+					,"canAdd":	<c:choose><c:when test="${projectRecords.checkStatus == 0}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+					,"canedit1":<c:choose><c:when test="${projectRecords.checkStatus == 1}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+					,"canedit2":<c:choose><c:when test="${projectRecords.checkStatus == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+					,"canrecall":<c:choose><c:when test="${projectRecords.checkStatus == 3}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+					</shiro:hasPermission>
+					,"cancancel":<c:choose><c:when test="${projectRecords.checkStatus == 2}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+    })
+
+    resizeListTable();
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow2();
+    $(window).resize(function(){
+        resizeListWindow2();
+    });
+</script>
+</body>
+</html>

+ 3 - 3
src/main/webapp/webpage/modules/ruralprojectrecords/cost/ruralCostProjectRecordsList.jsp

@@ -307,7 +307,7 @@
                 ,{align:'center', title: '状态',  width:70,templet:function(d){
                         var st = getruralProjectState(d.projectStatus);
                         if(st.action)
-                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/ruralProject/ruralCostProjectRecords/getProcess?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                            var xml ="<span onclick=\"openDialogView('流程追踪', '${ctx}/ruralProject/ruralCostProjectRecords/getProcess?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
                         else
                             var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
                         return xml;
@@ -336,7 +336,7 @@
                             xml+="<a href=\"${ctx}/ruralProject/ruralCostProjectRecords/revoke?id=" + d.id + "&processInstanceId=" + d.procId + "&projectStatus="+d.projectStatus+"\" onclick=\"return confirmx('确认要撤回该项目审批吗?', this.href)\" class=\"op-btn op-btn-cancel\" ><i class=\"glyphicon glyphicon-share-alt\"></i> 撤回</a>";
                         }
 						//项目在没有归档完成之前可对文档进行操作
-						if(d.recordStatus != undefined &&(d.recordStatus =="1"||d.recordStatus =="0") && d.projectReportRecordStatus!=2)
+						if(d.recordStatus != undefined && d.recordStatus =="1")
 						{
 							xml+="<a href=\"#\" onclick=\"openDialogView('文件上传', '${ctx}/ruralProject/ruralCostProjectRecords/formAccessory?id=" + d.id + "','95%', '95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 上传文件</a>";
 						}
@@ -399,7 +399,7 @@
 					<shiro:hasPermission name="ruralProject:ruralCostProjectRecords:accessory">
 						,"recordStatus":
 							<c:choose>
-								<c:when test="${projectRecords.projectStatus == 5 && '0' != projectRecords.projectReportStatus && '5' != projectRecords.projectReportRecordStatus}">"1"</c:when>
+								<c:when test="${projectRecords.projectStatus == 5 && 0 ==projectRecords.projectReportRecordStatus}">"1"</c:when>
 								<c:otherwise>"0"</c:otherwise>
 							</c:choose>
 					</shiro:hasPermission>

+ 10 - 10
src/main/webapp/webpage/modules/ruralprojectrecords/ruralProjectRecordsList.jsp

@@ -364,15 +364,15 @@
                             xml+="<a href=\"${ctx}/ruralProject/ruralProjectRecords/revoke?id=" + d.id + "&processInstanceId=" + d.procId + "&projectStatus="+d.projectStatus+"\" onclick=\"return confirmx('确认要撤回该项目审批吗?', this.href)\" class=\"op-btn op-btn-cancel\" ><i class=\"glyphicon glyphicon-share-alt\"></i> 撤回</a>";
                         }
                         //项目在没有归档完成之前可对文档进行操作
-                        if(d.recordStatus != undefined && (d.recordStatus =="1"||d.recordStatus =="0") && d.projectReportRecordStatus==0)
+                        if(d.recordStatus != undefined && d.recordStatus =="1")
                         {
 							xml+="<a href=\"#\" onclick=\"openDialogView('文件上传', '${ctx}/ruralProject/ruralProjectRecords/formAccessory?id=" + d.id + "','95%', '95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 上传文件</a>";
                         }
-						<%--//项目在没有归档完成之前可对文档进行操作--%>
-						<%--if(d.adminAccessory != undefined && d.adminAccessory =="1")--%>
-						<%--{--%>
-						<%--	xml+="<a href=\"#\" onclick=\"openDialogView('归档管理员文件上传', '${ctx}/ruralProject/ruralProjectRecords/formAccessory?id=" + d.id + "','95%', '95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 上传文件</a>";--%>
-						<%--}--%>
+						//项目在没有归档完成之前可对文档进行操作
+						if(d.adminAccessory != undefined && d.adminAccessory =="1")
+						{
+							xml+="<a href=\"#\" onclick=\"openDialogView('归档管理员文件上传', '${ctx}/ruralProject/ruralProjectRecords/formAccessory?id=" + d.id + "','95%', '95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 上传文件</a>";
+						}
                         if(d.canedit3 != undefined && d.canedit3 =="1")
                         {
                             //xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogre('项目变更管理', '${ctx}/ruralProject/ruralProjectRecordsAlter/form?alterBeforeRecords.id='+encodeURIComponent('" + d.id + "'),'95%','95%','','送审,暂存,关闭')\" style=\"color: white;background: darkseagreen\" class=\"op-btn op-btn-op-btn-revert\" ><i class=\"fa fa-edit\"></i> 变更</a>";
@@ -426,15 +426,15 @@
                     <shiro:hasPermission name="ruralProject:ruralProjectRecords:edit">,"canedit3":<c:choose><c:when test="${projectRecords.projectStatus == 5 && fn:contains(projectRecords.leaderIds,fns:getUser().id)}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
 					<shiro:hasPermission name="ruralProject:ruralProjectRecords:accessory">
 					,"recordStatus":
-							<c:choose>
-							<c:when test="${projectRecords.projectStatus == 5 && '0' != projectRecords.projectReportStatus && '5' != projectRecords.projectReportRecordStatus}">"1"</c:when>
-					<c:otherwise>"0"</c:otherwise>
+					<c:choose>
+							<c:when test="${projectRecords.projectStatus == 5 && 0 == projectRecords.projectReportRecordStatus}">"1"</c:when>
+							<c:otherwise>"0"</c:otherwise>
 					</c:choose>
 					</shiro:hasPermission>
 					<shiro:hasPermission name="ruralProject:ruralProjectRecords:adminAccessory">
 					,"adminAccessory":
 							<c:choose>
-							<c:when test="${projectRecords.projectStatus == 5 && '0' != projectRecords.projectReportStatus}">"1"</c:when>
+							<c:when test="${projectRecords.projectStatus == 5}">"1"</c:when>
 					<c:otherwise>"0"</c:otherwise>
 					</c:choose>
 					</shiro:hasPermission>

+ 1 - 5
src/main/webapp/webpage/modules/sys/roleForm.jsp

@@ -25,7 +25,6 @@
                 $("#inputForm").submit();
                 return true;
             }
-
             return false;
         }
         $(document).ready(function(){
@@ -117,17 +116,14 @@
         });
 
         function changeRole(obj) {
-            var count = 0;
             var total = obj.length;
             var trlen = $("#roleActivityList tr").length;
             for(var i=0;i<obj.length;i++){
-                trlen = trlen+i;
                 var str = "";
                 var id = obj[i].id;
                 var tr = $("#"+id);
                 if(tr.length>0){
                     $("#"+id).show();
-                    count++;
                 }else {
                     var name = obj[i].name;
                     var type = obj[i].type;
@@ -150,7 +146,7 @@
                         '</td>' +
                         '</tr>';
                     $("#roleActivityList").append(str);
-                    count++;
+                    trlen++;
                 }
             }
         }

+ 509 - 0
src/main/webapp/webpage/modules/workinvoice/conditionWorkInvoiceAllForm.jsp

@@ -0,0 +1,509 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>发票管理</title>
+	<meta name="decorator" content="default"/>
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+	<style>
+		#contractTypeDoc-error{
+			top:80px;
+			left:0;
+		}
+	</style>
+	<script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            //debugger
+            if(validateForm.form()){
+                $("#inputForm").submit();
+                return true;
+            }else {
+				parent.layer.msg("信息未填写完整!", {icon: 5});
+			}
+            return false;
+        }
+        $(document).ready(function() {
+            /*$('#money').keyup(function(){
+                var c=$(this);
+                if(/[^\d]/.test(c.val())){//替换非数字字符
+                    var temp_amount=c.val().replace(/[^\d]/g,'');
+                    $(this).val(temp_amount);
+                }
+            })*/
+            jQuery.validator.addMethod("isUscCode", function(value, element) {
+                if (this.optional(element)){
+                    return true;
+                }
+                var uscCode = /^((\w{15})|(\w{18})|(\w{20}))$/;
+                return uscCode.test(value);
+            }, "请填写正确的纳税人识别号");
+
+            /* $("input[name='ext']").on('ifChecked', function(event){
+                 var radioVal = $(this).val();
+                 if(radioVal == 0){
+                     $("#td1").removeClass("hide");
+                     $("#td2").addClass("hide");
+                     $("#tr1").show()
+                 }else{
+                     $("#td1").addClass("hide");
+                     $("#td2").removeClass("hide");
+                     $("#tr1").hide()
+                 }
+             });*/
+            if("${workInvoice.ext}" == "1"){
+                $("#ext1").iCheck('check')
+            }else{
+                $("#ext").iCheck('check')
+            }
+            if("${workInvoice.invoiceType}" == "1"){
+                $("#invoiceType1").iCheck('check');
+                $(".invoicetype").show();
+            }else{
+                $("#invoiceType").iCheck('check');
+                $(".invoicetype").hide();
+            }
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+
+            $("input[name='invoiceType']").on('ifChecked', function(event){
+                var radioVal = $(this).val();
+                //专票必填
+                if(radioVal == 1){
+                    $(".invoicetype").show();
+                    $("#bank").attr("class","form-control required layui-input");
+                    $("#bankNumber").attr("class","form-control number required layui-input");
+                    $("#orUnicode").attr("class","form-control isUscCode required layui-input");
+                    $("#address").attr("class","form-control required layui-input");
+                    $("#telephone").attr("class","form-control isTel required layui-input");
+                }else if(radioVal == 2){
+                    $(".invoicetype").hide();
+                    $("#bank").attr("class","form-control layui-input");
+                    $("#bankNumber").attr("class","form-control number layui-input");
+                    $("#orUnicode").attr("class","form-control isUscCode layui-input");
+                    $("#address").attr("class","form-control layui-input");
+                    $("#telephone").attr("class","form-control isTel layui-input");
+                }
+            });
+            /*--------------*/
+
+        });
+        function setValuee(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workinvoiceAll/workInvoiceAll/getWorkClientInfo',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#bank").val(d.bank);
+                    $("#orUnicode").val(d.orUnicode);
+                    $("#bankNumber").val(d.bankNumber);
+                    $("#telephone").val(d.telephone);
+                    $("#address").val(d.adress);
+                    $("#ids").val(d.ids);
+                }
+            })
+        }
+        function setDp(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workinvoiceAll/workInvoiceAll/getUserDp',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#dp").val(d.dp);
+                }
+            })
+        }
+        function setPNumber(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workinvoiceAll/workInvoiceAll/getPNumber',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#pNumber").val(d.pNumber);
+                    $("#cInfoName").val(d.cInfoName);
+                    $("#cName").val(d.cName);
+                    $("#officeName").val(d.officeName);
+                    $("#officeId").val(d.officeId);
+                }
+            })
+        }
+
+        function addRow(list, idx, tpl, row){
+            var idx1 = $("#workAccountList tr").length;
+            if(list == '#workAccountList' && idx1 < 100){
+                bornTemplete(list, idx, tpl, row, idx1);
+            }
+        }
+        function bornTemplete(list, idx, tpl, row, idx1){
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+        function provinceForShort(province){
+            if(province == "北京市")
+                return "京";
+            else if(province == "天津市")
+                return "津";
+            else if(province == "重庆市")
+                return "渝";
+            else if(province == "上海市")
+                return "沪";
+            else if(province == "河北省")
+                return "冀";
+            else if(province == "山西省")
+                return "晋";
+            else if(province == "辽宁省")
+                return "辽";
+            else if(province == "吉林省")
+                return "吉";
+            else if(province == "黑龙江省")
+                return "黑";
+            else if(province == "江苏省")
+                return "苏";
+            else if(province == "浙江省")
+                return "浙";
+            else if(province == "安徽省")
+                return "皖";
+            else if(province == "福建省")
+                return "闽";
+            else if(province == "江西省")
+                return "赣";
+            else if(province == "山东省")
+                return "鲁";
+            else if(province == "河南省")
+                return "豫";
+            else if(province == "湖北省")
+                return "鄂";
+            else if(province == "湖南省")
+                return "湘";
+            else if(province == "广东省")
+                return "粤";
+            else if(province == "海南省")
+                return "琼";
+            else if(province == "四川省")
+                return "川/蜀";
+            else if(province == "贵州省")
+                return "黔/贵";
+            else if(province == "云南省")
+                return "云/滇";
+            else if(province == "陕西省")
+                return "陕/秦";
+            else if(province == "甘肃省")
+                return "甘/陇";
+            else if(province == "青海省")
+                return "青";
+            else if(province == "台湾省")
+                return "台";
+            else if(province == "内蒙古自治区")
+                return "内蒙古";
+            else if(province == "广西壮族自治区")
+                return "桂";
+            else if(province == "宁夏回族自治区")
+                return "宁";
+            else if(province == "新疆维吾尔自治区 ")
+                return "新";
+            else if(province == "西藏自治区")
+                return "藏";
+            else if(province == "香港特别行政区")
+                return "港";
+            else if(province == "澳门特别行政区")
+                return "澳";
+        }
+
+        function setVs(obj){
+            var a = $(obj).attr("id");
+            var b = a.replace('allPrice','proportion');
+            var value = obj.value;
+            var p = $("#price").val() || 0;
+            if(!p || p == 0){
+                parent.layer.msg("请先填写造价指标,且不能为零",{icon:5});
+                return;
+            }
+            var num = value/p ;
+            if(!/^\d+(\.\d{1,2})?$/.test( value )){
+                parent.layer.msg("合价必须输入数字",{icon:5});
+            }else{
+                $("#" +  b ).val(parseFloat(num.toFixed(2)));
+            }
+        }
+        function setTaxMoney(obj){
+            var a = $(obj).attr("id");
+            var b = a.replace('tax','taxMoney');
+            var t = a.replace('tax','totalMoney');
+            var tr = a.replace('tax','taxRate');
+            var value = obj.value || 0;
+            console.log("-value----"+value);
+            var tax = 1 + value/100;
+            console.log("-tax----"+tax);
+            var p = $("#" +  t ).val() || 0;//获取价税合计
+            console.log("-----"+p);
+            if(!p || p == 0){
+                parent.layer.msg("请先填写价税合计,且不能为零",{icon:5});
+                return;
+            }
+            var num = p/tax || 0;
+            console.log("-----"+num);
+            if(!/^\d+(\.\d{1,2})?$/.test( tax )){
+                parent.layer.msg("税率必须输入数字",{icon:5});
+            }else{
+                $("#" +  b ).val(parseFloat(num.toFixed(2)));
+                var taxRate = p - num;
+                $("#" +  tr ).val(parseFloat(taxRate.toFixed(2)));
+            }
+        }
+        function setV(obj){
+            var a =  $(obj).attr("id");
+            var c = "京";
+            var date=new Date;
+            var year=date.getFullYear();
+            var month=date.getMonth()+1;
+            month =(month<10 ? "0"+month:month);
+            var mydate = (year.toString()+month.toString());
+            var timestamp="["+mydate+"]";//获取固定格式年月
+            var number = c+timestamp;
+            $("#" +  a ).val(number);
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workInvoice" action="${ctx}/workinvoiceAll/workInvoiceAll/cancellationAudit" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+			<form:hidden path="invoiceDate"/>
+			<form:hidden path="province" id="province"/>
+
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>基本信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.project.projectName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>发票申请编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.number}"/>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>合同名称:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.project.workContractInfo.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>项目编号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.project.projectId}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>委托方:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.project.workContractInfo.client.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">报告号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${workInvoice.project.reportData.number}"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>发票详情</h2></div>
+				<%--<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>上级/本公司开票:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="<c:choose><c:when test="${workInvoice.ext eq '0'}">本公司开票	</c:when><c:when test="${workInvoice.ext eq '1'}">上级公司开票</c:when></c:choose>"/>
+					</div>
+				</div>--%>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>发票类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="<c:choose><c:when test="${workInvoice.invoiceType eq '1'}">专票</c:when><c:when test="${workInvoice.invoiceType eq '2'}">普票</c:when></c:choose>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>实际开票单位:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.client.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">纳税人识别号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.orUnicode}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">地址:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.address}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">电话:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.telephone}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开户银行:</label>
+					<div class="layui-input-block  ">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.bank}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">银行账号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.bankNumber}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>价税合计(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="<fmt:formatNumber value="${workInvoice.money}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开票内容要求:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.content}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开票人:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.drawerName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开票时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${workInvoice.invoiceDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">领票时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${workInvoice.takeDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>作废原因:</label>
+					<div class="layui-input-block">
+						<form:textarea path="cancellationRemark" htmlEscape="false" rows="4"  maxlength="255"  class="form-control required"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>发票明细</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container">
+					<table id="contentTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th><span class="require-item">*</span>发票代码</th>
+							<th><span class="require-item">*</span>发票号</th>
+							<th><span class="require-item">*</span>价税合计</th>
+							<th><span class="require-item">*</span>税率</th>
+							<th><span class="require-item">*</span>金额</th>
+							<th><span class="require-item">*</span>税额</th>
+							<th><span class="require-item">*</span>累计登记金额</th>
+							<th><span class="require-item">*</span>发票状态</th><%--正常--%>
+							<th><span class="require-item">*</span>被退标记</th>
+								<%--<th><span class="require-item">*</span>被退票号</th>
+                                <th><span class="require-item">*</span>开票日期</th>--%>
+						</tr>
+						</thead>
+						<tbody id="workAccountList">
+						<c:if test="${not empty workInvoice.workAccountList}">
+							<c:forEach items="${workInvoice.workAccountList}" var="workAccount" varStatus="index">
+								<tr id="workAccountList${index.index}">
+									<td title="${workAccount.code}">
+											${workAccount.code}
+									</td>
+									<td title="${workAccount.number}">
+											${workAccount.number}
+									</td>
+
+									<td title="<fmt:formatNumber value="${workAccount.totalMoney}" pattern="#,#00.00"/>">
+										<fmt:formatNumber value="${workAccount.totalMoney}" pattern="#,#00.00"/>
+									</td>
+									<td title="${workAccount.tax}">
+											${workAccount.tax}
+									</td>
+									<td title="<fmt:formatNumber value="${workAccount.taxMoney}" pattern="#,#00.00"/>">
+										<fmt:formatNumber value="${workAccount.taxMoney}" pattern="#,#00.00"/>
+									</td>
+									<td title="<fmt:formatNumber value="${workAccount.taxRate}" pattern="#,#00.00"/>">
+										<fmt:formatNumber value="${workAccount.taxRate}" pattern="#,#00.00"/>
+									</td>
+									<td title="<fmt:formatNumber value="${workAccount.incomeMoney}" pattern="#,#00.00"/>">
+										<fmt:formatNumber value="${workAccount.incomeMoney}" pattern="#,#00.00"/>
+									</td>
+									<td title="${workAccount.state}">
+											${workAccount.state}
+									</td>
+									<td title="${workAccount.backSign}">
+											${workAccount.backSign}
+									</td>
+										<%--<td title="${workAccount.backNumber}">
+                                                ${workAccount.backNumber}
+                                        </td>
+                                        <td title="<fmt:formatDate value="${workInvoice.invoiceDate}" pattern="yyyy-MM-dd"/>">
+                                            <fmt:formatDate value="${workInvoice.invoiceDate}" pattern="yyyy-MM-dd"/>
+                                        </td>--%>
+								</tr>
+							</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+
+</body>
+</html>

+ 605 - 0
src/main/webapp/webpage/modules/workinvoice/workInvoiceAllForm.jsp

@@ -0,0 +1,605 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>发票管理</title>
+	<meta name="decorator" content="default"/>
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+	<style>
+		#contractTypeDoc-error{
+			top:80px;
+			left:0;
+		}
+	</style>
+	<script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            //debugger
+            if(validateForm.form()){
+                if(obj == 2){
+                    $("#inputForm").attr("action","${ctx}/workinvoiceAll/workInvoiceAll/store");
+                }else{
+                    $("#inputForm").attr("action","${ctx}/workinvoiceAll/workInvoiceAll/save");
+                }
+                $("#inputForm").submit();
+                return true;
+            }else {
+				parent.layer.msg("信息未填写完整!", {icon: 5});
+			}
+            return false;
+        }
+        $(document).ready(function() {
+            /*$('#money').keyup(function(){
+                var c=$(this);
+                if(/[^\d]/.test(c.val())){//替换非数字字符
+                    var temp_amount=c.val().replace(/[^\d]/g,'');
+                    $(this).val(temp_amount);
+                }
+            })*/
+            jQuery.validator.addMethod("isUscCode", function(value, element) {
+                if (this.optional(element)){
+                    return true;
+                }
+                var uscCode = /^((\w{15})|(\w{18})|(\w{20}))$/;
+                return uscCode.test(value);
+            }, "请填写正确的纳税人识别号");
+
+            /* $("input[name='ext']").on('ifChecked', function(event){
+                 var radioVal = $(this).val();
+                 if(radioVal == 0){
+                     $("#td1").removeClass("hide");
+                     $("#td2").addClass("hide");
+                     $("#tr1").show()
+                 }else{
+                     $("#td1").addClass("hide");
+                     $("#td2").removeClass("hide");
+                     $("#tr1").hide()
+                 }
+             });*/
+            if("${workInvoice.ext}" == "1"){
+                $("#ext1").iCheck('check')
+            }else{
+                $("#ext").iCheck('check')
+            }
+            if("${workInvoice.invoiceType}" == "1"){
+                $("#invoiceType1").iCheck('check');
+                $(".invoicetype").show();
+            }else{
+                $("#invoiceType").iCheck('check');
+                $(".invoicetype").hide();
+            }
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+
+            $("input[name='invoiceType']").on('ifChecked', function(event){
+                var radioVal = $(this).val();
+                //专票必填
+                if(radioVal == 1){
+                    $(".invoicetype").show();
+                    $("#bank").attr("class","form-control required layui-input");
+                    $("#bankNumber").attr("class","form-control number required layui-input");
+                    $("#orUnicode").attr("class","form-control isUscCode required layui-input");
+                    $("#address").attr("class","form-control required layui-input");
+                    $("#telephone").attr("class","form-control isTel required layui-input");
+                }else if(radioVal == 2){
+                    $(".invoicetype").hide();
+                    $("#bank").attr("class","form-control layui-input");
+                    $("#bankNumber").attr("class","form-control number layui-input");
+                    $("#orUnicode").attr("class","form-control isUscCode layui-input");
+                    $("#address").attr("class","form-control layui-input");
+                    $("#telephone").attr("class","form-control isTel layui-input");
+                }
+            });
+            /*--------------*/
+
+        });
+        function setValuee(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workinvoiceAll/workInvoiceAll/getWorkClientInfo',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#bank").val(d.bank);
+                    $("#orUnicode").val(d.orUnicode);
+                    $("#bankNumber").val(d.bankNumber);
+                    $("#telephone").val(d.telephone);
+                    $("#address").val(d.registerAddress);
+                    $("#ids").val(d.ids);
+                }
+            })
+        }
+        function setDp(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workinvoiceAll/workInvoiceAll/getUserDp',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#dp").val(d.dp);
+                }
+            })
+        }
+        function setPNumber(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workinvoiceAll/workInvoiceAll/getPNumber',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#pNumber").val(d.pNumber);
+                    $("#cInfoName").val(d.cInfoName);
+                    $("#cName").val(d.cName);
+                    $("#officeName").val(d.officeName);
+                    $("#officeId").val(d.officeId);
+					$("#prdNumber").val(d.prdNumber);
+                }
+            })
+        }
+
+        function addRow(list, idx, tpl, row){
+            var idx1 = $("#workAccountList tr").length;
+            if(list == '#workAccountList' && idx1 < 100){
+                bornTemplete(list, idx, tpl, row, idx1);
+            }
+        }
+        function bornTemplete(list, idx, tpl, row, idx1){
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+        /*function delRow(obj, prefix) {
+            var id = $(prefix + "_id");
+            var delFlag = $(prefix + "_delFlag");
+            if (id.val() == "") {
+                $(obj).parent().parent().remove();
+            } else if (delFlag.val() == "0") {
+                delFlag.val("1");
+                $(obj).html("&divide;").attr("title", "撤回删除");
+                $(obj).parent().parent().addClass("error");
+                $(obj).parent().parent().addClass("hide");
+            } else if (delFlag.val() == "1") {
+                delFlag.val("0");
+                $(obj).html("&times;").attr("title", "删除");
+                $(obj).parent().parent().removeClass("error");
+            }
+            // var idx1 = $("#workAccountList tr").length; //tr 总数
+            // for (var i = 0; i < idx1; i++) {
+            //     $("#workAccountList tr").eq(i).find("td").eq(1).html(i + 1);
+            // }
+        }*/
+        function provinceForShort(province){
+            if(province == "北京市")
+                return "京";
+            else if(province == "天津市")
+                return "津";
+            else if(province == "重庆市")
+                return "渝";
+            else if(province == "上海市")
+                return "沪";
+            else if(province == "河北省")
+                return "冀";
+            else if(province == "山西省")
+                return "晋";
+            else if(province == "辽宁省")
+                return "辽";
+            else if(province == "吉林省")
+                return "吉";
+            else if(province == "黑龙江省")
+                return "黑";
+            else if(province == "江苏省")
+                return "苏";
+            else if(province == "浙江省")
+                return "浙";
+            else if(province == "安徽省")
+                return "皖";
+            else if(province == "福建省")
+                return "闽";
+            else if(province == "江西省")
+                return "赣";
+            else if(province == "山东省")
+                return "鲁";
+            else if(province == "河南省")
+                return "豫";
+            else if(province == "湖北省")
+                return "鄂";
+            else if(province == "湖南省")
+                return "湘";
+            else if(province == "广东省")
+                return "粤";
+            else if(province == "海南省")
+                return "琼";
+            else if(province == "四川省")
+                return "川/蜀";
+            else if(province == "贵州省")
+                return "黔/贵";
+            else if(province == "云南省")
+                return "云/滇";
+            else if(province == "陕西省")
+                return "陕/秦";
+            else if(province == "甘肃省")
+                return "甘/陇";
+            else if(province == "青海省")
+                return "青";
+            else if(province == "台湾省")
+                return "台";
+            else if(province == "内蒙古自治区")
+                return "内蒙古";
+            else if(province == "广西壮族自治区")
+                return "桂";
+            else if(province == "宁夏回族自治区")
+                return "宁";
+            else if(province == "新疆维吾尔自治区 ")
+                return "新";
+            else if(province == "西藏自治区")
+                return "藏";
+            else if(province == "香港特别行政区")
+                return "港";
+            else if(province == "澳门特别行政区")
+                return "澳";
+        }
+
+        function setVs(obj){
+            var a = $(obj).attr("id");
+            var b = a.replace('allPrice','proportion');
+            var value = obj.value;
+            var p = $("#price").val() || 0;
+            if(!p || p == 0){
+                parent.layer.msg("请先填写造价指标,且不能为零",{icon:5});
+                return;
+            }
+            var num = value/p ;
+            if(!/^\d+(\.\d{1,2})?$/.test( value )){
+                parent.layer.msg("合价必须输入数字",{icon:5});
+            }else{
+                $("#" +  b ).val(parseFloat(num.toFixed(2)));
+            }
+        }
+        function setTaxMoney(obj){
+            var a = $(obj).attr("id");
+            var b = a.replace('tax','taxMoney');
+            var t = a.replace('tax','totalMoney');
+            var tr = a.replace('tax','taxRate');
+            var value = obj.value || 0;
+            console.log("-value----"+value);
+            var tax = 1 + value/100;
+            console.log("-tax----"+tax);
+            var p = $("#" +  t ).val() || 0;//获取发票金额
+            console.log("-----"+p);
+            if(!p || p == 0){
+                parent.layer.msg("请先填写发票金额,且不能为零",{icon:5});
+                return;
+            }
+            var num = p/tax || 0;
+            console.log("-----"+num);
+            if(!/^\d+(\.\d{1,2})?$/.test( tax )){
+                parent.layer.msg("税率必须输入数字",{icon:5});
+            }else{
+                $("#" +  b ).val(parseFloat(num.toFixed(2)));
+                var taxRate = p - num;
+                $("#" +  tr ).val(parseFloat(taxRate.toFixed(2)));
+            }
+        }
+
+        /*function setV(obj){
+            var a =  $(obj).attr("id");
+            var b = $("#province").val();
+            var c = provinceForShort(b);//开票单位所在省/直辖市简称
+            var date=new Date;
+            var year=date.getFullYear();
+            var month=date.getMonth()+1;
+            month =(month<10 ? "0"+month:month);
+            var mydate = (year.toString()+month.toString());
+            var timestamp="["+mydate+"]";//获取固定格式年月
+			var number = c+timestamp;
+            $("#" +  a ).val(number);
+        }*/
+        function setV(obj){
+            var a =  $(obj).attr("id");
+            var c = "京";
+            var date=new Date;
+            var year=date.getFullYear();
+            var month=date.getMonth()+1;
+            month =(month<10 ? "0"+month:month);
+            var mydate = (year.toString()+month.toString());
+            var timestamp="["+mydate+"]";//获取固定格式年月
+            var number = c+timestamp;
+            $("#" +  a ).val(number);
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workInvoice" action="${ctx}/workinvoiceAll/workInvoiceAll/save" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+			<form:hidden path="invoiceDate"/>
+			<form:hidden path="province" id="province"/>
+
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>基本信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
+					<div class="layui-input-block  with-icon">
+						<input type="hidden" value="" id ="ids">
+						<sys:gridselectcallprojectt url="${ctx}/workinvoiceAll/workInvoiceAll/selectproject" id="project" name="project.id"  value="${workInvoice.project.id}"  title="选择所属项目" labelName="workInvoice.project.projectName"
+													labelValue="${workInvoice.project.projectName}" cssClass="form-control required layui-input" fieldLabels="项目" fieldKeys="projectName" searchLabel="项目名称" searchKey="projectName" ></sys:gridselectcallprojectt>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line">发票申请编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input path="number" htmlEscape="false" readonly="true"   class="form-control layui-input"/>
+							<span class="input-group-btn">
+								<label class="form-status"><c:choose><c:when test="${ empty workInvoice.invoiceState}">新添</c:when><c:otherwise>${fns:getDictLabel(workInvoice.invoiceState, 'audit_state','')}</c:otherwise>	</c:choose></label>
+							</span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">合同名称:</label>
+					<div class="layui-input-block">
+						<form:input id ="cInfoName" path="project.workContractInfo.name" htmlEscape="false"  readonly="true" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目编号:</label>
+					<div class="layui-input-block">
+						<form:input id ="pNumber" path="project.projectId" htmlEscape="false"  readonly="true" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">委托方:</label>
+					<div class="layui-input-block">
+						<form:input id ="cName" path="project.workContractInfo.client.name" htmlEscape="false"  readonly="true" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">报告号:</label>
+					<div class="layui-input-block">
+						<form:input id ="prdNumber" path="project.reportData.number" htmlEscape="false"  readonly="true" class="form-control layui-input"/>
+					</div>
+				</div>
+				<%--<div class="layui-item layui-col-sm6">--%>
+					<%--<label class="layui-form-label"><span class="require-item">*</span>所属部门:</label>--%>
+					<%--<div class="layui-input-block">--%>
+						<%--<form:input id ="officeName" path="office.name" htmlEscape="false"  readonly="true" class="form-control layui-input"/>--%>
+						<%--<form:hidden path="office.id" id ="officeId" />--%>
+					<%--</div>--%>
+				<%--</div>--%>
+			</div>
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>发票详情</h2></div>
+				<%--<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>上级/本公司开票:</label>
+					<div class="layui-input-block">
+						<c:choose>
+							<c:when test="${workInvoice.invoiceState == 4}">
+								<c:choose>
+									<c:when test="${workInvoice.ext ==0}">
+										<input value = "本公司开票" readonly="true" class="form-control layui-input"/>
+									</c:when>
+									<c:otherwise>
+										<input value = "上级公司开票" readonly="true"  class="form-control layui-input"/>
+									</c:otherwise>
+								</c:choose>
+							</c:when>
+							<c:otherwise>
+								<input type="radio" class="i-checks" name="ext" checked id="ext" value="0">
+								<label for="ext">本公司开票</label>
+								<input type="radio" class="i-checks" name="ext" id="ext1" value="1">
+								<label for="ext1">上级公司开票</label>
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>--%>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>发票类型:</label>
+					<div class="layui-input-block">
+						<input type="radio" class="i-checks" name="invoiceType" checked id="invoiceType1" value="1">
+						<label for="invoiceType1">专票</label>
+						<input type="radio" class="i-checks" name="invoiceType" id="invoiceType" value="2">
+						<label for="invoiceType">普票</label>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>实际开票单位:</label>
+					<div class="layui-input-block with-icon">
+						<sys:gridselect url="${ctx}/workinvoiceAll/workInvoiceAll/selectclient" id="client" name="client.id"  value="${workInvoice.client.id}"  title="选择开票单位" labelName="workInvoice.client.name"
+										labelValue="${workInvoice.client.name}" cssClass="form-control required layui-input" fieldLabels="单位" fieldKeys="name" searchLabel="客户名称" searchKey="name" ></sys:gridselect>
+						</td>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label double-line"><span class="require-item invoicetype">*</span>纳税人识别号:</label>
+					<div class="layui-input-block">
+						<form:input id="orUnicode" path="orUnicode" htmlEscape="false"    class="form-control isUscCode layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item invoicetype">*</span>地址:</label>
+					<div class="layui-input-block">
+						<form:input id="address" path="address" htmlEscape="false"    class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item invoicetype">*</span>电话:</label>
+					<div class="layui-input-block">
+						<form:input id="telephone" path="telephone" htmlEscape="false"    class="form-control isTel layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item invoicetype">*</span>开户银行:</label>
+					<div class="layui-input-block">
+						<form:input id ="bank"  path="bank" htmlEscape="false"   class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item invoicetype">*</span>银行账号:</label>
+					<div class="layui-input-block">
+						<form:input id="bankNumber" path="bankNumber" htmlEscape="false"   class="form-control number layui-input"/>
+					</div>
+				</div>
+
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>收款类型:</label>
+					<div class="layui-input-block">
+						<form:select  path="chargeType" class="form-control simple-select required">
+							<form:options items="${fns:getMainDictList('receipt_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>开票内容:</label>
+					<div class="layui-input-block">
+						<form:select path="billingContent" class="form-control simple-select required">
+							<form:options items="${fns:getMainDictList('billing_content')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label double-line"><span class="require-item">*</span>发票金额(元):</label>
+					<div class="layui-input-block">
+							<%--<form:input id=""  path="money" htmlEscape="false" class="form-control number required layui-input"/>--%>
+						<input name="money" htmlEscape="false"  value="${workInvoice.money}" class="form-control required number layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label double-line">开票内容要求:</label>
+					<div class="layui-input-block">
+						<form:textarea path="content" id="contractTypeDoc" htmlEscape="false" rows="4"    class="form-control"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开票人:</label>
+					<div class="layui-input-block">
+						<form:input id=""  path="" htmlEscape="false" readonly="true"  class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开票时间:</label>
+					<div class="layui-input-block">
+						<form:input id=""  path="" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">领票时间:</label>
+					<div class="layui-input-block">
+						<form:input id=""  path="" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>发票明细</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container">
+					<table id="contentTable" class="table table-bordered table-condensed can-edit">
+						<thead>
+						<tr>
+							<th><span class="require-item">*</span>发票代码</th>
+							<th><span class="require-item">*</span>发票号</th>
+							<th><span class="require-item">*</span>发票金额</th>
+							<th><span class="require-item">*</span>税率</th>
+							<th><span class="require-item">*</span>金额</th>
+							<th><span class="require-item">*</span>税额</th>
+							<th><span class="require-item">*</span>累计登记金额</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="workAccountList">
+						</tbody>
+					</table>
+					<script type="text/template" id="workAccountListTpl">//<!--
+                                    <tr id="workAccountList{{idx}}">
+                                        <td class="hide">
+                                            <input id="workAccountList{{idx}}_id" name="workAccountList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                                            <input id="workAccountList{{idx}}_delFlag" name="workAccountList[{{idx}}].delFlag" type="hidden" value="0"/>
+                                        </td>
+                                    	<td>
+                                        	<input id="workAccountList{{idx}}_code" name="workAccountList[{{idx}}].code" type="text" value="{{row.code}}"    class="form-control required"/>
+                                   		 </td>
+                                    	 <td>
+                                        	<input id="workAccountList{{idx}}_number" name="workAccountList[{{idx}}].number" type="text" value="{{row.number}}"    class="form-control required"/>
+                                   		 </td>
+                                    	<td>
+                                            <input id="workAccountList{{idx}}_totalMoney"  name="workAccountList[{{idx}}].totalMoney" type="text" value="{{row.totalMoney}}"    class="form-control required"/>
+                                        </td>
+                                        <td>
+                                        <div class="input-group">
+                                            <input id="workAccountList{{idx}}_tax" onblur="setTaxMoney(this)" name="workAccountList[{{idx}}].tax" type="text" value="{{row.tax}}"    class="form-control number required"/><span class="input-group-addon">%</span>
+                                            </div>
+
+                                        </td>
+                                        <td>
+                                            <input id="workAccountList{{idx}}_taxMoney" name="workAccountList[{{idx}}].taxMoney" type="text" value="{{row.taxMoney}}"    class="form-control required"/>
+                                        </td>
+										<td>
+                                            <input id="workAccountList{{idx}}_taxRate" name="workAccountList[{{idx}}].taxRate" type="text" value="{{row.taxRate}}"    class="form-control required"/>
+                                        </td>
+                                        <td>
+                                            <input id="workAccountList{{idx}}_incomeMoney" name="workAccountList[{{idx}}].incomeMoney" type="text" value="0"  readonly="true"  class="form-control required"/>
+                                        </td>
+
+                                            <input id="workAccountList{{idx}}_state" name="workAccountList[{{idx}}].state"  type="hidden" value="正常"   class="form-control"/>
+
+                                            <input id="workAccountList{{idx}}_backSign" name="workAccountList[{{idx}}].backSign"  type="hidden" value="正常"  readonly="true"  class="form-control required"/>
+
+                                            <input id="workAccountList{{idx}}_backNumber" name="workAccountList[{{idx}}].backNumber"  type="hidden" value=""  readonly="true"  class="form-control required"/>
+
+
+                                        <td class="text-center op-td">
+                                            {{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#workAccountList{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
+                                        </td>
+                                    </tr>//-->
+					</script>
+					<script type="text/javascript">
+                        var workAccountListRowIdx = 0, workAccountListTpl = $("#workAccountListTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                        $(document).ready(function() {
+                            var data = ${fns:toJson(workInvoice.workAccountList)};
+                            for (var i=0; i<data.length; i++){
+                                addRow('#workAccountList', workAccountListRowIdx, workAccountListTpl, data[i]);
+                                workAccountListRowIdx = workAccountListRowIdx + 1;
+                            }
+                        });
+					</script>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+
+</body>
+</html>

+ 592 - 0
src/main/webapp/webpage/modules/workinvoice/workInvoiceAllModify.jsp

@@ -0,0 +1,592 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>发票管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            //debugger
+            if(validateForm.form()){
+                if(obj == 2){
+                    $("#flag").val("no");
+                }else{
+                    $("#flag").val("yes");
+                }
+                $("#inputForm").submit();
+                return true;
+            }else {
+				parent.layer.msg("信息未填写完整!", {icon: 5});
+			}
+            return false;
+        }
+        $(document).ready(function() {
+            /*$('#money').keyup(function(){
+                var c=$(this);
+                if(/[^\d]/.test(c.val())){//替换非数字字符
+                    var temp_amount=c.val().replace(/[^\d]/g,'');
+                    $(this).val(temp_amount);
+                }
+            })*/
+            jQuery.validator.addMethod("isUscCode", function(value, element) {
+                if (this.optional(element)){
+                    return true;
+                }
+                var uscCode = /^((\w{15})|(\w{18})|(\w{20}))$/;
+                return uscCode.test(value);
+            }, "请填写正确的纳税人识别号");
+
+            $("input[name='ext']").on('ifChecked', function(event){
+                var radioVal = $(this).val();
+                if(radioVal == 0){
+                    $("#td1").removeClass("hide");
+                    $("#td2").addClass("hide");
+                    $("#tr1").show()
+                }else{
+                    $("#td1").addClass("hide");
+                    $("#td2").removeClass("hide");
+                    $("#tr1").hide()
+                }
+            });
+            if("${workInvoice.ext}" == "1"){
+                $("#ext1").iCheck('check')
+            }else{
+                $("#ext").iCheck('check')
+            }
+            if("${workInvoice.invoiceType}" == "1"){
+                $("#invoiceType1").iCheck('check');
+                $(".invoicetype").show();
+            }else{
+                $("#invoiceType").iCheck('check');
+                $(".invoicetype").hide();
+            }
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+
+            $("input[name='invoiceType']").on('ifChecked', function(event){
+                var radioVal = $(this).val();
+                //专票必填
+                if(radioVal == 1){
+                    $(".invoicetype").show();
+                    $("#bank").attr("class","form-control required layui-input");
+                    $("#bankNumber").attr("class","form-control number required layui-input");
+                    $("#orUnicode").attr("class","form-control isUscCode required layui-input");
+                    $("#address").attr("class","form-control required layui-input");
+                    $("#telephone").attr("class","form-control isTel required layui-input");
+                }else if(radioVal == 2){
+                    $(".invoicetype").hide();
+                    $("#bank").attr("class","form-control layui-input");
+                    $("#bankNumber").attr("class","form-control number layui-input");
+                    $("#orUnicode").attr("class","form-control isUscCode layui-input");
+                    $("#address").attr("class","form-control layui-input");
+                    $("#telephone").attr("class","form-control isTel layui-input");
+                }
+            });
+
+        });
+        function setValuee(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workinvoiceAll/workInvoiceAll/getWorkClientInfo',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#bank").val(d.bank);
+                    $("#orUnicode").val(d.orUnicode);
+                    $("#bankNumber").val(d.bankNumber);
+                    $("#telephone").val(d.telephone);
+                    $("#address").val(d.adress);
+                    $("#ids").val(d.ids);
+                }
+            })
+        }
+        function setDp(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workinvoiceAll/workInvoiceAll/getUserDp',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#dp").val(d.dp);
+                }
+            })
+        }
+        function setPNumber(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workinvoiceAll/workInvoiceAll/getPNumber',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#pNumber").val(d.pNumber);
+                    $("#cInfoName").val(d.cInfoName);
+                    $("#cName").val(d.cName);
+                    $("#officeName").val(d.officeName);
+                    $("#officeId").val(d.officeId);
+					$("#prdNumber").val(d.prdNumber);
+                }
+            })
+        }
+
+        function addRow(list, idx, tpl, row){
+            var idx1 = $("#workAccountList tr").length;
+            if(list == '#workAccountList' && idx1 < 100){
+                bornTemplete(list, idx, tpl, row, idx1);
+            }
+        }
+        function bornTemplete(list, idx, tpl, row, idx1){
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+        /*function delRow(obj, prefix) {
+            var id = $(prefix + "_id");
+            var delFlag = $(prefix + "_delFlag");
+            if (id.val() == "") {
+                $(obj).parent().parent().remove();
+            } else if (delFlag.val() == "0") {
+                delFlag.val("1");
+                $(obj).html("&divide;").attr("title", "撤回删除");
+                $(obj).parent().parent().addClass("error");
+                $(obj).parent().parent().addClass("hide");
+            } else if (delFlag.val() == "1") {
+                delFlag.val("0");
+                $(obj).html("&times;").attr("title", "删除");
+                $(obj).parent().parent().removeClass("error");
+            }
+            // var idx1 = $("#workAccountList tr").length; //tr 总数
+            // for (var i = 0; i < idx1; i++) {
+            //     $("#workAccountList tr").eq(i).find("td").eq(1).html(i + 1);
+            // }
+        }*/
+        function provinceForShort(province){
+            if(province == "北京市")
+                return "京";
+            else if(province == "天津市")
+                return "津";
+            else if(province == "重庆市")
+                return "渝";
+            else if(province == "上海市")
+                return "沪";
+            else if(province == "河北省")
+                return "冀";
+            else if(province == "山西省")
+                return "晋";
+            else if(province == "辽宁省")
+                return "辽";
+            else if(province == "吉林省")
+                return "吉";
+            else if(province == "黑龙江省")
+                return "黑";
+            else if(province == "江苏省")
+                return "苏";
+            else if(province == "浙江省")
+                return "浙";
+            else if(province == "安徽省")
+                return "皖";
+            else if(province == "福建省")
+                return "闽";
+            else if(province == "江西省")
+                return "赣";
+            else if(province == "山东省")
+                return "鲁";
+            else if(province == "河南省")
+                return "豫";
+            else if(province == "湖北省")
+                return "鄂";
+            else if(province == "湖南省")
+                return "湘";
+            else if(province == "广东省")
+                return "粤";
+            else if(province == "海南省")
+                return "琼";
+            else if(province == "四川省")
+                return "川/蜀";
+            else if(province == "贵州省")
+                return "黔/贵";
+            else if(province == "云南省")
+                return "云/滇";
+            else if(province == "陕西省")
+                return "陕/秦";
+            else if(province == "甘肃省")
+                return "甘/陇";
+            else if(province == "青海省")
+                return "青";
+            else if(province == "台湾省")
+                return "台";
+            else if(province == "内蒙古自治区")
+                return "内蒙古";
+            else if(province == "广西壮族自治区")
+                return "桂";
+            else if(province == "宁夏回族自治区")
+                return "宁";
+            else if(province == "新疆维吾尔自治区 ")
+                return "新";
+            else if(province == "西藏自治区")
+                return "藏";
+            else if(province == "香港特别行政区")
+                return "港";
+            else if(province == "澳门特别行政区")
+                return "澳";
+        }
+
+        function setVs(obj){
+            var a = $(obj).attr("id");
+            var b = a.replace('allPrice','proportion');
+            var value = obj.value;
+            var p = $("#price").val() || 0;
+            if(!p || p == 0){
+                parent.layer.msg("请先填写造价指标,且不能为零",{icon:5});
+                return;
+            }
+            var num = value/p ;
+            if(!/^\d+(\.\d{1,2})?$/.test( value )){
+                parent.layer.msg("合价必须输入数字",{icon:5});
+            }else{
+                $("#" +  b ).val(parseFloat(num.toFixed(2)));
+            }
+        }
+        function setTaxMoney(obj){
+            var a = $(obj).attr("id");
+            var b = a.replace('tax','taxMoney');
+            var t = a.replace('tax','totalMoney');
+            var tr = a.replace('tax','taxRate');
+            var value = obj.value || 0;
+            console.log("-value----"+value);
+            var tax = 1 + value/100;
+            console.log("-tax----"+tax);
+            var p = $("#" +  t ).val() || 0;//获取开票金额
+            console.log("-----"+p);
+            if(!p || p == 0){
+                parent.layer.msg("请先填写开票金额,且不能为零",{icon:5});
+                return;
+            }
+            var num = p/tax || 0;
+            console.log("-----"+num);
+            if(!/^\d+(\.\d{1,2})?$/.test( tax )){
+                parent.layer.msg("税率必须输入数字",{icon:5});
+            }else{
+                $("#" +  b ).val(parseFloat(num.toFixed(2)));
+                var taxRate = p - num;
+                $("#" +  tr ).val(parseFloat(taxRate.toFixed(2)));
+            }
+        }
+
+        /*function setV(obj){
+            var a =  $(obj).attr("id");
+            var b = $("#province").val();
+            var c = provinceForShort(b);//开票单位所在省/直辖市简称
+            var date=new Date;
+            var year=date.getFullYear();
+            var month=date.getMonth()+1;
+            month =(month<10 ? "0"+month:month);
+            var mydate = (year.toString()+month.toString());
+            var timestamp="["+mydate+"]";//获取固定格式年月
+			var number = c+timestamp;
+            $("#" +  a ).val(number);
+        }*/
+        function setV(obj){
+            var a =  $(obj).attr("id");
+            var c = "京";
+            var date=new Date;
+            var year=date.getFullYear();
+            var month=date.getMonth()+1;
+            month =(month<10 ? "0"+month:month);
+            var mydate = (year.toString()+month.toString());
+            var timestamp="["+mydate+"]";//获取固定格式年月
+            var number = c+timestamp;
+            $("#" +  a ).val(number);
+        }
+	</script>
+</head>
+<body>
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workInvoice" action="${ctx}/workinvoiceAll/workInvoiceAll/saveAudit" method="post" class="form-horizontal">
+			<form:hidden path="id"/>
+			<form:hidden path="invoiceDate"/>
+			<form:hidden path="home"/>
+			<form:hidden path="act.taskId"/>
+			<form:hidden path="act.taskName"/>
+			<form:hidden path="act.taskDefKey"/>
+			<form:hidden path="act.procInsId"/>
+			<form:hidden path="act.procDefId"/>
+			<form:hidden id="flag" path="act.flag"/>
+			<form:hidden path="province" id="province"/>
+			<%--<form:hidden path="invoiceNumber"/>--%>
+
+			<div class="form-group layui-row first lw14">
+				<div class="form-group-label"><h2>基本信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
+					<div class="layui-input-block  with-icon">
+						<input type="hidden" value="" id ="ids">
+						<sys:gridselectcallprojectt url="${ctx}/workinvoiceAll/workInvoiceAll/selectproject" id="project" name="project.id"  value="${workInvoice.project.id}"  title="选择所属项目" labelName="workInvoice.project.projectName"
+													labelValue="${workInvoice.project.projectName}" cssClass="form-control required layui-input" fieldLabels="项目" fieldKeys="projectName" searchLabel="项目名称" searchKey="projectName" ></sys:gridselectcallprojectt>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">发票申请编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input path="number" htmlEscape="false" readonly="true"   class="form-control layui-input"/>
+							<span class="input-group-btn">
+								<label class="form-status"><c:choose><c:when test="${ empty workInvoice.invoiceState}">新添</c:when><c:otherwise>${fns:getDictLabel(workInvoice.invoiceState, 'audit_state','')}</c:otherwise>	</c:choose></label>
+							</span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">合同名称:</label>
+					<div class="layui-input-block">
+						<form:input id ="cInfoName" path="project.workContractInfo.name" htmlEscape="false"  readonly="true" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目编号:</label>
+					<div class="layui-input-block">
+						<form:input id ="pNumber" path="project.projectId" htmlEscape="false"  readonly="true" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">委托方:</label>
+					<div class="layui-input-block">
+						<form:input id ="cName" path="project.workContractInfo.client.name" htmlEscape="false"  readonly="true" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">报告号:</label>
+					<div class="layui-input-block">
+						<form:input id ="prdNumber" path="project.reportData.number" htmlEscape="false"  readonly="true" class="form-control layui-input"/>
+					</div>
+				</div>
+				<%--<div class="layui-item layui-col-sm6">--%>
+					<%--<label class="layui-form-label"><span class="require-item">*</span>所属部门:</label>--%>
+					<%--<div class="layui-input-block">--%>
+						<%--<form:input id ="officeName" path="office.name" htmlEscape="false"  readonly="true" class="form-control layui-input"/>--%>
+						<%--<form:hidden path="office.id" id ="officeId" />--%>
+					<%--</div>--%>
+				<%--</div>--%>
+			</div>
+			<div class="form-group layui-row first lw14">
+				<div class="form-group-label"><h2>发票详情</h2></div>
+				<%--<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>上级/本公司开票:</label>
+					<div class="layui-input-block">
+						<c:choose>
+							<c:when test="${workInvoice.invoiceState == 4}">
+								<c:choose>
+									<c:when test="${workInvoice.ext ==0}">
+										<input value = "本公司开票" readonly="true" class="form-control layui-input"/>
+									</c:when>
+									<c:otherwise>
+										<input value = "上级公司开票" readonly="true"  class="form-control layui-input"/>
+									</c:otherwise>
+								</c:choose>
+							</c:when>
+							<c:otherwise>
+								<input type="radio" class="i-checks" name="ext" checked id="ext" value="0">
+								<label for="ext">本公司开票</label>
+								<input type="radio" class="i-checks" name="ext" id="ext1" value="1">
+								<label for="ext1">上级公司开票</label>
+							</c:otherwise>
+						</c:choose>
+					</div>
+				</div>--%>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>发票类型:</label>
+					<div class="layui-input-block">
+						<input type="radio" class="i-checks" name="invoiceType" checked id="invoiceType1" value="1">
+						<label for="invoiceType1">专票</label>
+						<input type="radio" class="i-checks" name="invoiceType" id="invoiceType" value="2">
+						<label for="invoiceType">普票</label>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>实际开票单位:</label>
+					<div class="layui-input-block with-icon">
+						<sys:gridselect url="${ctx}/workinvoiceAll/workInvoiceAll/selectclient" id="client" name="client.id"  value="${workInvoice.client.id}"  title="选择开票单位" labelName="workInvoice.client.name"
+										labelValue="${workInvoice.client.name}" cssClass="form-control required layui-input" fieldLabels="单位" fieldKeys="name" searchLabel="客户名称" searchKey="name" ></sys:gridselect>
+						</td>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item invoicetype">*</span>纳税人识别号:</label>
+					<div class="layui-input-block">
+						<form:input id="orUnicode" path="orUnicode" htmlEscape="false"    class="form-control isUscCode layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item invoicetype">*</span>地址:</label>
+					<div class="layui-input-block">
+						<form:input id="address" path="address" htmlEscape="false"    class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item invoicetype">*</span>电话:</label>
+					<div class="layui-input-block">
+						<form:input id="telephone" path="telephone" htmlEscape="false"    class="form-control isTel layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item invoicetype">*</span>开户银行:</label>
+					<div class="layui-input-block">
+						<form:input id ="bank"  path="bank" htmlEscape="false"   class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item invoicetype">*</span>银行账号:</label>
+					<div class="layui-input-block">
+						<form:input id="bankNumber" path="bankNumber" htmlEscape="false"   class="form-control number layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label"><span class="require-item">*</span>开票金额(元):</label>
+					<div class="layui-input-block">
+						<input name="money" htmlEscape="false"  value="<fmt:formatNumber value="${workInvoice.money}" pattern="#.00#"/>" class="form-control required number layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 with-textarea">
+					<label class="layui-form-label">开票内容要求:</label>
+					<div class="layui-input-block">
+						<form:textarea path="content" id="contractTypeDoc" htmlEscape="false" rows="4"    class="form-control"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开票人:</label>
+					<div class="layui-input-block">
+						<form:input id=""  path="" htmlEscape="false" readonly="true"  class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开票时间:</label>
+					<div class="layui-input-block">
+						<form:input id=""  path="" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">领票时间:</label>
+					<div class="layui-input-block">
+						<form:input id=""  path="" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>发票明细</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container">
+					<table id="contentTable" class="table table-bordered table-condensed can-edit">
+						<thead>
+						<tr>
+							<th><span class="require-item">*</span>发票代码</th>
+							<th><span class="require-item">*</span>发票号</th>
+							<th><span class="require-item">*</span>开票金额</th>
+							<th><span class="require-item">*</span>税率</th>
+							<th><span class="require-item">*</span>金额</th>
+							<th><span class="require-item">*</span>税额</th>
+							<th><span class="require-item">*</span>累计登记金额</th>
+							<th width="150px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="workAccountList">
+						</tbody>
+					</table>
+					<script type="text/template" id="workAccountListTpl">//<!--
+                                    <tr id="workAccountList{{idx}}">
+                                        <td class="hide">
+                                            <input id="workAccountList{{idx}}_id" name="workAccountList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                                            <input id="workAccountList{{idx}}_delFlag" name="workAccountList[{{idx}}].delFlag" type="hidden" value="0"/>
+                                        </td>
+                                    	<td>
+                                        	<input id="workAccountList{{idx}}_code" name="workAccountList[{{idx}}].code" type="text" value="{{row.code}}"    class="form-control required"/>
+                                   		 </td>
+                                    	 <td>
+                                        	<input id="workAccountList{{idx}}_number" name="workAccountList[{{idx}}].number" type="text" value="{{row.number}}"    class="form-control required"/>
+                                   		 </td>
+                                    	<td>
+                                            <input id="workAccountList{{idx}}_totalMoney"  name="workAccountList[{{idx}}].totalMoney" type="text" value="{{row.totalMoney}}"    class="form-control required"/>
+                                        </td>
+                                        <td>
+                                        <div class="input-group">
+                                            <input id="workAccountList{{idx}}_tax" onblur="setTaxMoney(this)" name="workAccountList[{{idx}}].tax" type="text" value="{{row.tax}}"    class="form-control number required"/><span class="input-group-addon">%</span>
+                                            </div>
+
+                                        </td>
+                                        <td>
+                                            <input id="workAccountList{{idx}}_taxMoney" name="workAccountList[{{idx}}].taxMoney" type="text" value="{{row.taxMoney}}"    class="form-control required"/>
+                                        </td>
+										<td>
+                                            <input id="workAccountList{{idx}}_taxRate" name="workAccountList[{{idx}}].taxRate" type="text" value="{{row.taxRate}}"    class="form-control required"/>
+                                        </td>
+                                        <td>
+                                            <input id="workAccountList{{idx}}_incomeMoney" name="workAccountList[{{idx}}].incomeMoney" type="text" value="0"  readonly="true"  class="form-control required"/>
+                                        </td>
+
+                                            <input id="workAccountList{{idx}}_state" name="workAccountList[{{idx}}].state"  type="hidden" value="正常"   class="form-control"/>
+
+                                            <input id="workAccountList{{idx}}_backSign" name="workAccountList[{{idx}}].backSign"  type="hidden" value="正常"  readonly="true"  class="form-control required"/>
+
+                                            <input id="workAccountList{{idx}}_backNumber" name="workAccountList[{{idx}}].backNumber"  type="hidden" value=""  readonly="true"  class="form-control required"/>
+
+
+                                        <td class="text-center" width="10">
+                                            {{#delBtn}}<span class="close" onclick="delRow(this, '#workAccountList{{idx}}')" title="删除">&times;</span>{{/delBtn}}
+                                        </td>
+                                    </tr>//-->
+					</script>
+					<script type="text/javascript">
+                        var workAccountListRowIdx = 0, workAccountListTpl = $("#workAccountListTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                        $(document).ready(function() {
+                            var data = ${fns:toJson(workInvoice.workAccountList)};
+                            for (var i=0; i<data.length; i++){
+                                addRow('#workAccountList', workAccountListRowIdx, workAccountListTpl, data[i]);
+                                workAccountListRowIdx = workAccountListRowIdx + 1;
+                            }
+                        });
+					</script></div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审批流程</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<act:flowChart procInsId="${workInvoice.act.procInsId}"/>
+					<act:histoicFlow procInsId="${workInvoice.act.procInsId}" />
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+</body>
+</html>

+ 412 - 0
src/main/webapp/webpage/modules/workinvoice/workInvoiceAllReceiptForm.jsp

@@ -0,0 +1,412 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>发票管理</title>
+	<meta name="decorator" content="default"/>
+	<style>
+		td input{
+			margin-left:0px !important;
+			height: 42px !important;
+		}
+		#receiptTable td{
+			padding-left: 0px;
+			padding-right: 0px;
+		}
+	</style>
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+			  var length = $("#workReceiptList tr").length;
+			  var invoiceMoneyStr = $("#invoiceMoney").val();
+			  invoiceMoneyStr = invoiceMoneyStr.replace(/\,/g, "");
+			  var invoiceMoney = parseFloat(invoiceMoneyStr);
+			  if(length==0){
+				  parent.layer.msg('请录入收款信息',{icon:5});
+				  return false;
+			  }else{
+			  	var moneys = 0;
+				  for(var i=0; i<length; i++) {
+				  	//获取每一行的汇款金额
+				  	var money = parseFloat(workReceiptList.rows[i].cells[2].getElementsByTagName("INPUT")[0].value);
+					//计算所有汇款综合
+				  	moneys = moneys+money;
+				  }
+			  }
+			  if(obj == 2){
+			  	if(moneys<invoiceMoney){
+					layer.confirm('收款金额小于发票金额,确定收款吗?', {
+						btn: ['确定', '关闭'],
+						btn1: function(index, layero){
+							$("#inputForm").attr("action","${ctx}/workinvoiceAll/workInvoiceAll/saveAffirmReceipt");
+							$("#inputForm").submit();
+							top.layer.close(index);//关闭对话框。
+							//关闭iframe页面
+							var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
+							parent.layer.close(index);
+						},btn2: function(index){
+						}
+					});
+				}else if(moneys>invoiceMoney){
+					parent.layer.msg('收款金额不得大于开票金额',{icon:5});
+					return false;
+				}else if(moneys == invoiceMoney){
+					$("#inputForm").attr("action","${ctx}/workinvoiceAll/workInvoiceAll/saveAffirmReceipt");
+					$("#inputForm").submit();
+					top.layer.close();//关闭对话框。
+					//关闭iframe页面
+					var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
+					parent.layer.close(index);
+				}
+			  }else{
+			  	if(moneys > invoiceMoney){
+					parent.layer.msg('收款金额不能大于开票金额',{icon:5});
+					return false;
+				}
+				$("#inputForm").attr("action","${ctx}/workinvoiceAll/workInvoiceAll/saveReceipt");
+				  $("#inputForm").submit();
+				  return true;
+			  }
+		  }
+		}
+		$(document).ready(function() {
+			$("#name").focus();
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+
+			laydate.render({
+				elem: '#receiptDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+			});
+		});
+
+
+
+		function addRow(list, idx, tpl, row){
+			var idx1 = $("#workReceiptList tr").length;
+			bornTemplete(list, idx, tpl, row, idx1);
+		}
+
+		function bornTemplete(list, idx, tpl, row, idx1){
+			$(list).append(Mustache.render(tpl, {
+				idx: idx, delBtn: true, row: row,
+				order:idx1 + 1
+			}));
+			$(list+idx).find("select").each(function(){
+				$(this).val($(this).attr("data-value"));
+			});
+			$(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+				var ss = $(this).attr("data-value").split(',');
+				for (var i=0; i<ss.length; i++){
+					if($(this).val() == ss[i]){
+						$(this).attr("checked","checked");
+					}
+				}
+			});
+
+			laydate.render({
+				elem : (list+idx+"_receiptDate"),
+				event: 'focus',
+				type : 'date'
+				, trigger: 'click',
+				trigger: 'click'
+			});
+		}
+		function delRow(obj, prefix){
+			var id = $(prefix+"_id");
+			var delFlag = $(prefix+"_delFlag");
+			if (id.val() == ""){
+				$(obj).parent().parent().remove();
+			}else if(delFlag.val() == "0"){
+				delFlag.val("1");
+				$(obj).html("&divide;").attr("title", "撤回删除");
+				$(obj).parent().parent().addClass("error");
+				$(obj).parent().parent().addClass("hide");
+			}else if(delFlag.val() == "1"){
+				delFlag.val("0");
+				$(obj).html("&times;").attr("title", "删除");
+				$(obj).parent().parent().removeClass("error");
+			}
+
+		}
+	</script>
+</head>
+<body >
+<div class="single-form view-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="workInvoice" action="${ctx}/workinvoiceAll/workInvoiceAll/saveReceipt" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+
+			<div class="form-group layui-row first lw14">
+				<div class="form-group-label"><h2>基本信息</h2></div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.project.projectName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">发票申请编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.number}"/>
+							<span class="input-group-btn">
+							<label class="form-status"><c:choose><c:when test="${ empty workInvoice.invoiceState}">新添</c:when><c:otherwise>${fns:getDictLabel(workInvoice.invoiceState, 'audit_state','')}</c:otherwise>	</c:choose></label>
+						</span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">合同名称:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.project.workContractInfo.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">项目编号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.project.projectId}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">委托方:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.project.workContractInfo.client.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">报告号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${workInvoice.project.reportData.number}"/>
+					</div>
+				</div>
+				<%--<div class="layui-item layui-col-sm6">--%>
+					<%--<label class="layui-form-label"><span class="require-item">*</span>所属部门:</label>--%>
+					<%--<div class="layui-input-block">--%>
+						<%--<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.office.name}"/>--%>
+					<%--</div>--%>
+				<%--</div>--%>
+			</div>
+			<div class="form-group layui-row first lw14">
+				<div class="form-group-label"><h2>发票详情</h2></div>
+				<%--<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>上级/本公司开票:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="<c:choose><c:when test="${workInvoice.ext eq '0'}">本公司开票	</c:when><c:when test="${workInvoice.ext eq '1'}">上级公司开票</c:when></c:choose>"/>
+					</div>
+				</div>--%>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>发票类型:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="<c:choose><c:when test="${workInvoice.invoiceType eq '1'}">专票</c:when><c:when test="${workInvoice.invoiceType eq '2'}">普票</c:when></c:choose>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>实际开票单位:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.client.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">纳税人识别号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.orUnicode}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">地址:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.address}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">电话:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.telephone}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开户银行:</label>
+					<div class="layui-input-block  ">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.bank}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">银行账号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.bankNumber}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label"><span class="require-item">*</span>开票金额(元):</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  id="invoiceMoney" class="form-control layui-input" value="<fmt:formatNumber value="${workInvoice.money}" pattern="#,#00.00"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开票内容要求:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.content}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开票人:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.drawerName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">开票时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${workInvoice.invoiceDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label">领票时间:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${workInvoice.takeDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>发票明细</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container">
+					<table id="contentTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th><span class="require-item">*</span>发票代码</th>
+							<th><span class="require-item">*</span>发票号</th>
+							<th><span class="require-item">*</span>开票金额</th>
+							<th><span class="require-item">*</span>税率</th>
+							<th><span class="require-item">*</span>金额</th>
+							<th><span class="require-item">*</span>税额</th>
+							<th><span class="require-item">*</span>累计登记金额</th>
+							<th><span class="require-item">*</span>发票状态</th><%--正常--%>
+							<th><span class="require-item">*</span>被退标记</th>
+							<%--<th><span class="require-item">*</span>被退票号</th>
+							<th><span class="require-item">*</span>开票日期</th>--%>
+						</tr>
+						</thead>
+						<tbody id="workAccountList">
+						<c:if test="${not empty workInvoice.workAccountList}">
+						<c:forEach items="${workInvoice.workAccountList}" var="workAccount" varStatus="index">
+							<tr id="workAccountList${index.index}">
+								<td title="${workAccount.code}">
+										${workAccount.code}
+								</td>
+								<td title="${workAccount.number}">
+										${workAccount.number}
+								</td>
+
+								<td title="<fmt:formatNumber value="${workAccount.totalMoney}" pattern="#,#00.00"/>">
+									<fmt:formatNumber value="${workAccount.totalMoney}" pattern="#,#00.00"/>
+								</td>
+								<td title="${workAccount.tax}">
+										${workAccount.tax}
+								</td>
+								<td title="<fmt:formatNumber value="${workAccount.taxMoney}" pattern="#,#00.00"/>">
+									<fmt:formatNumber value="${workAccount.taxMoney}" pattern="#,#00.00"/>
+								</td>
+								<td title="<fmt:formatNumber value="${workAccount.taxRate}" pattern="#,#00.00"/>">
+									<fmt:formatNumber value="${workAccount.taxRate}" pattern="#,#00.00"/>
+								</td>
+								<td title="<fmt:formatNumber value="${workAccount.incomeMoney}" pattern="#,#00.00"/>">
+									<fmt:formatNumber value="${workAccount.incomeMoney}" pattern="#,#00.00"/>
+								</td>
+								<td title="${workAccount.state}">
+										${workAccount.state}
+								</td>
+								<td title="${workAccount.backSign}">
+										${workAccount.backSign}
+								</td>
+								<%--<td title="${workAccount.backNumber}">
+										${workAccount.backNumber}
+								</td>
+								<td title="<fmt:formatDate value="${workInvoice.invoiceDate}" pattern="yyyy-MM-dd"/>">
+									<fmt:formatDate value="${workInvoice.invoiceDate}" pattern="yyyy-MM-dd"/>
+								</td>--%>
+							</tr>
+						</c:forEach>
+						</c:if>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>收款明细</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container">
+					<div class="layui-item nav-btns" style="padding-left:0px;">
+						<a class="nav-btn nav-btn-add"
+						   onclick="addRow('#workReceiptList', workClientBankRowIdx, workClientBankTpl);workClientBankRowIdx = workClientBankRowIdx + 1;"
+						   title="新增"><i class="fa fa-plus"></i> 新增</a>
+					</div>
+					<table id="receiptTable" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+							<th><span class="require-item">*</span>汇款单位</th>
+							<th><span class="require-item">*</span>汇款金额</th>
+							<th width="160px"><span class="require-item">*</span>汇款时间</th>
+							<th width="100px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="workReceiptList">
+						</tbody>
+					</table>
+					<script type="text/template" id="workClientBankTpl">//<!--
+                                <tr id="workReceiptList{{idx}}">
+                                    <td class="hide">
+                                        <input id="workReceiptList{{idx}}_id" name="workReceiptList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                                        <input id="workReceiptList{{idx}}_delFlag" name="workReceiptList[{{idx}}].delFlag" type="hidden" value="0"/>
+                                    </td>
+                                    <td>
+                                        <input id="workReceiptList{{idx}}_companyName" name="workReceiptList[{{idx}}].companyName" value="{{row.companyName}}" style="text-align: center" class="form-control required"/>
+                                    </td>
+                                    <td>
+                                        <input id="workReceiptList{{idx}}_money" name="workReceiptList[{{idx}}].money" value="{{row.money}}" style="text-align: center" class="form-control number required"/>
+                                    </td>
+
+                                    <td>
+                                        <input lay-verify="date" readonly="true" placeholder="yyyy-MM-dd" autocomplete="off" id="workReceiptList{{idx}}_receiptDate" name="workReceiptList[{{idx}}].receiptDate" type="text" value="{{row.receiptDate}}" style="text-align: center" class="form-control required datetime"/>
+                                    </td>
+
+                                    <td class="text-center op-td" width="10">
+                                        {{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#workReceiptList{{idx}}')" title="删除"><i class="fa fa-trash"></i>&nbsp;删除</span>{{/delBtn}}
+                                    </td>
+                                </tr>//-->
+					</script>
+				</div>
+			</div>
+			<div class="form-group layui-row page-end"></div>
+		</form:form>
+	</div>
+</div>
+<script type="text/javascript">
+	var workClientBankRowIdx = 0,
+			workClientBankTpl = $("#workClientBankTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, "");
+	$(document).ready(function () {
+		var dataBank = ${fns:toJson(workInvoice.workReceiptList)};
+		for (var i = 0; i < dataBank.length; i++) {
+			addRow('#workReceiptList', workClientBankRowIdx, workClientBankTpl, dataBank[i]);
+			workClientBankRowIdx = workClientBankRowIdx + 1;
+		}
+	});
+
+</script>
+</body>
+</html>

+ 3 - 3
src/main/webapp/webpage/modules/workinvoice/workInvoiceForm.jsp

@@ -353,7 +353,7 @@
 					<label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
 					<div class="layui-input-block  with-icon">
 						<input type="hidden" value="" id ="ids">
-						<sys:gridselectcallprojectt url="${ctx}/workinvoice/workInvoice/selectproject" id="project" name="project.id"  value="${workInvoice.project.id}"  title="选择所属项目" labelName="workInvoice.project.projectName"
+						<sys:gridselectcallprojectt url="${ctx}/workinvoice/workInvoice/selectproject" id="project" name="project.id"  value="${workInvoice.project.id}"  title="选择所属项目" labelName="workInvoice.project.projectName" cssStyle="background-color: #fff"
 													labelValue="${workInvoice.project.projectName}" cssClass="form-control required layui-input" fieldLabels="项目" fieldKeys="projectName" searchLabel="项目名称" searchKey="projectName" ></sys:gridselectcallprojectt>
 					</div>
 				</div>
@@ -371,7 +371,7 @@
 				<div class="layui-item layui-col-sm6">
 					<label class="layui-form-label">合同名称:</label>
 					<div class="layui-input-block">
-						<form:input id ="cInfoName" path="project.workContractInfo.name" htmlEscape="false"  readonly="true" class="form-control layui-input"/>
+						<form:input id ="cInfoName" path="project.workContractInfo.name"  htmlEscape="false"  readonly="true" class="form-control layui-input"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6">
@@ -437,7 +437,7 @@
 				<div class="layui-item layui-col-sm6">
 					<label class="layui-form-label double-line"><span class="require-item">*</span>实际开票单位:</label>
 					<div class="layui-input-block with-icon">
-						<sys:gridselect url="${ctx}/workinvoice/workInvoice/selectclient" id="client" name="client.id"  value="${workInvoice.client.id}"  title="选择开票单位" labelName="workInvoice.client.name"
+						<sys:gridselect url="${ctx}/workinvoice/workInvoice/selectclient" id="client" name="client.id"  value="${workInvoice.client.id}"  title="选择开票单位" labelName="workInvoice.client.name" cssStyle="background-color: #fff"
 										labelValue="${workInvoice.client.name}" cssClass="form-control required layui-input" fieldLabels="单位" fieldKeys="name" searchLabel="客户名称" searchKey="name" ></sys:gridselect>
 						</td>
 					</div>

+ 959 - 0
src/main/webapp/webpage/modules/workreimbursement/workReimbursementAllFormAdd.jsp

@@ -0,0 +1,959 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>报销单管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		var validateForm;
+		var count = 0;
+		$(document).ready(function() {
+            if($("#submitterDate").val()==null || $("#submitterDate").val()==''){
+                $("#submitterDate").val(getNowFormatDate());
+            }
+            /*$("input[name='ext']").on('ifChecked', function(event){
+                var radioVal = $(this).val();
+                if(radioVal == 0){
+                    $(".td1").removeClass("hide");
+                    $(".project_reimbursement_div").show();
+                    $(".not_project_reimbursement_div").hide();
+                }else{
+                    $(".td1").addClass("hide");
+                    $(".project_reimbursement_div").hide();
+                    $(".not_project_reimbursement_div").show();
+                }
+            });
+            if("${workReimbursement.ext}" == "1"){
+                $("#ext1").iCheck('check')
+            }else{
+                $("#ext").iCheck('check')
+            }*/
+            $("input[name='isPublic']").on('ifChecked', function(event){
+                var radioVal = $(this).val();
+                if(radioVal == 1){
+                    $(".isPublic").removeClass("hide");
+                    $("#comname").removeClass("required");
+                    $("#bank").removeClass("required");
+                    $("#bankNo").removeClass("required");
+                    $("#reimbursementBackList tr").each(function () {
+                        $(this).remove();
+                        $("#backmoney").val("0.00");
+                    })
+                }else{
+                    $(".isPublic").addClass("hide");
+                    $("#comname").addClass("required");
+                    $("#bank").addClass("required");
+                    $("#bankNo").addClass("required");
+                    getLoan($("#achivesId").val());
+                }
+            });
+            if("${workReimbursement.isPublic}" == "1"){
+                $("#isPublic1").iCheck('check')
+                $(".isPublic").removeClass("hide");
+            }else{
+                $("#isPublic").iCheck('check')
+                $(".isPublic").addClass("hide");
+            }
+            validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+                rules:{
+                },
+                messages:{
+                },
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+            laydate.render({
+                elem: '#submitterDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+, trigger: 'click'
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            // getRandom();
+
+        });
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            var idArr = $("#workAccountList tr:visible");
+            if(idArr.length<1){
+                parent.layer.msg("请添加报销详情!", {icon: 5});
+                return false;
+            }
+            var trlen = $("#workAccountList tr").length;
+            var tdlen = $("#workAccountList tr td").length;
+            var trArr = [];
+            for(var i = 0;i < trlen;i++){
+                var tableMap = {};
+                tableMap["flag"] = $("#workAccountList tr").eq(i).find("td").eq(0).text();
+                tableMap["typeId"] = $("#workAccountList tr").eq(i).find("td").eq(1).text();
+                tableMap["money"] = $("#workAccountList tr").eq(i).find("td").eq(3).text();
+                tableMap["detail"] = $("#workAccountList tr").eq(i).find("td").eq(4).text();
+                tableMap["submitterId"] = $("#workAccountList tr").eq(i).find("td").eq(5).text();
+                tableMap["officeId"] = $("#workAccountList tr").eq(i).find("td").eq(6).text();
+                tableMap["billNumber"] = $("#workAccountList tr").eq(i).find("td").eq(7).text();
+                tableMap["payMode"] = $("#workAccountList tr").eq(i).find("td").eq(8).text();
+                tableMap["travelDays"] = $("#workAccountList tr").eq(i).find("td").eq(9).text();
+                trArr.push(tableMap);
+            }
+            if(obj == 2){
+                $("#inputForm").attr("action","${ctx}/workreimbursement/workReimbursementAll/store");
+            }else{
+                $("#inputForm").attr("action","${ctx}/workreimbursement/workReimbursementAll/save");
+            }
+            if(validateForm.form()){
+                var total=0 //价税合计总额
+                var specialTotal=0;
+                $("#reimbursementVATTaxes tr:visible .sumMoney").each(function () {
+                    total= parseFloat($(this).val()) +total;
+                });
+
+                var falt=0;
+                /*$("#workAccountList tr:visible").each(function () {
+                    var v_id = $(this).attr("id");
+                    if($("#"+v_id+"_invoiceType").val()=="专票"){
+                        falt=1;
+                        specialTotal=specialTotal+parseFloat($("#"+v_id+"_money").val());
+                    }
+                })
+                if(falt==1){
+                    var idArr = $("#reimbursementVATTaxes tr:visible");
+                    if(idArr.length<1){
+                        parent.layer.msg("请添加专用发票信息!", {icon: 5});
+                        return false;
+                    }
+                }
+                if(total!=specialTotal){
+                    parent.layer.msg("专用发票报销金额应等于价税合计总额!", {icon: 5});
+                    return false;
+                }
+                if(parseFloat($("#backmoney").val())>parseFloat($("#moneys").val())){
+                    parent.layer.msg("还款金额不能大于报销金额!", {icon: 5});
+                    return false;
+                }*/
+                var size = $("#reimbursementBackList tr").length;
+                for (var i = 0;i<size;i++){
+                    var backmoney = $("#reimbursementBackList"+i+"_6").val();
+                    var notRepay = $("#reimbursementBackList"+i+"_5").val();
+                    if(backmoney!=''){
+                        if (backmoney!=undefined && isNumber(backmoney)){
+                            if(parseFloat(backmoney)>parseFloat(notRepay)){
+                                parent.layer.msg("还款金额不能大于未还款金额!", {icon: 5});
+                                return false;
+                            }
+                        }
+                    }
+                }
+              $("#inputForm").submit();
+                return true;
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+            return false;
+        }
+
+        function deleteRow(obj,index){
+            $(obj).parent().parent().remove();
+            str[index] = " ";
+            mon[index] = 0;
+            countMoney();
+        }
+        function countMoney(){
+            var m = 0;
+           $.each(mon,function (index,item) {
+                m += Number(item);
+           });
+           $("#mont").val(m);
+        }
+        /*function setValue(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workreimbursement/workReimbursement/getProjectInfo',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#businessType").val(d.projectType);
+                    $("#projectMasterName").val(d.projectMasterName);
+                    $("#officeName").val(d.officeName);
+                    $("#officeId").val(d.officeId);
+                }
+            })
+        }*/
+        function getLoan(id){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workreimbursementback/workReimbursementBack/getLoan',
+                data:{
+                    "id":id
+                },
+                success:function(data){
+                    var idx1 = $("#reimbursementBackList tr").length;
+                    for(var i=0;i<data.length;i++){
+                        addRowRecord('#reimbursementBackList', reimbursementBackIdx, reimbursementBackTpl,data[i]);
+
+                    }
+                }
+            });
+        }
+        function selectUserInfo(id) {
+            if( $("#achivesId").val()!=id){
+                $("#reimbursementBackList tr").each(function () {
+                    $(this).remove();
+                    $("#backmoney").val("0.00");
+                })
+                if($('#isPublic').is(':checked')) {
+                    getLoan(id);
+                }
+
+                $.ajax({
+                    type:'post',
+                    data:{
+                        "id":id
+                    },
+                    url:'${ctx}/workregularapply/workRegularApply/userInfo',
+                    success:function(data){
+                        $("#bankCard").val(data.bankCard);
+                        $("#achivesId").val(id);
+                        $("#officeId").val(data.office.id);
+                        $("#officeName").val(data.office.name);
+                        $("#projectId").val("");
+                        $("#projectName").val("");
+
+                    }
+                });
+            }
+
+        }
+        function getNowFormatDate() {
+            var date = new Date();
+            var seperator1 = "-";
+            var seperator2 = ":";
+            var month = date.getMonth() + 1;
+            var strDate = date.getDate();
+                month = (month < 10)?"0"+month:month;
+                strDate = (strDate < 10)?"0"+strDate:strDate;
+            var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
+            return currentdate;
+        }
+
+        function getRandom(){
+            var GetRandomn = 1;
+            //js生成时间戳
+            var timestamp=new Date().getTime();
+            //获取随机范围内数值的函数
+            function GetRandom(n){
+                //由随机数+时间戳+1组成
+                GetRandomn=Math.floor(Math.random()*n+timestamp+1);
+            }
+            //开始调用,获得一个1-100的随机数
+            GetRandom("30");
+            if(!$("#numberFlag").val()){
+                $("#number").val(GetRandomn)
+            }
+        }
+
+        function addRow(list, idx, tpl, row){
+            var idx1 = $("#workAccountList tr").length;
+            if(list == '#workAccountList'){
+                tpl = tpl.replace("workAccountList[0].financialSubjects","workAccountList["+idx1+"].financialSubjects");
+                tpl = tpl.replace("workAccountList[0].financialSubjectss","workAccountList["+idx1+"].financialSubjectss");
+                /*var ext = $("input[name='ext']:checked").val();
+                if(ext == 0){
+                    tpl = tpl.replace("not_project_reimbursement_div","not_project_reimbursement_div\" style=\"display:none;\"");
+                    tpl = tpl.replace("project_reimbursement_div\" style=\"display:none;\"","project_reimbursement_div");
+                }else {
+                    tpl = tpl.replace("project_reimbursement_div","project_reimbursement_div\" style=\"display:none;\"");
+                    tpl = tpl.replace("not_project_reimbursement_div\" style=\"display:none;\"","not_project_reimbursement_div\"");
+                }*/
+                tpl = tpl.replace("not_project_reimbursement_div","not_project_reimbursement_div\" style=\"display:none;\"");
+                tpl = tpl.replace("project_reimbursement_div\" style=\"display:none;\"","project_reimbursement_div");
+                bornTemplete(list, idx, tpl, row, idx1);
+            }
+            var idx2 = $("#reimbursementVATTaxes tr").length;
+            if(list == '#reimbursementVATTaxes'){
+                bornTemplete(list, idx, tpl, row, idx2);
+            }
+        }
+        function bornTemplete(list, idx, tpl, row, idx1){
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+        function delRow(obj, prefix){
+            var id = $(prefix+"_id");
+            var workAccountmoney= $(prefix+"_money").val();
+            var money = $("#moneys").val();
+            if (isNumber(workAccountmoney)){
+                if(money==""){
+                    money = parseFloat(workAccountmoney).toFixed(2);
+                }else {
+                    money = (parseFloat(money) - parseFloat(workAccountmoney)).toFixed(2);
+                }
+            }
+            if(money>=0){
+                count++;
+                $("#moneys").val(money);
+                var delFlag = $(prefix+"_delFlag");
+                if (id.val() == ""){
+                    delFlag.val("1");
+                    $(obj).parent().parent().remove();
+                }else if(delFlag.val() == "0"){
+                    delFlag.val("1");
+                    $(obj).html("&divide;").attr("title", "撤回删除");
+                    $(obj).parent().parent().addClass("error");
+                    $(obj).parent().parent().addClass("hide");
+                }else if(delFlag.val() == "1"){
+                    delFlag.val("0");
+                    $(obj).html("&times;").attr("title", "删除");
+                    $(obj).parent().parent().removeClass("error");
+                }
+            }else{
+                parent.layer.msg('删除失败',{icon:2});
+            }
+
+        }
+        function delRowA(obj, prefix){
+            var id = $(prefix+"_id");
+            var delFlag = $(prefix+"_delFlag");
+            if (id.val() == ""){
+                delFlag.val("1");
+                $(obj).parent().parent().remove();
+            }else if(delFlag.val() == "0"){
+                delFlag.val("1");
+                $(obj).html("&divide;").attr("title", "撤销删除");
+                $(obj).parent().parent().addClass("error");
+                $(obj).parent().parent().addClass("hide");
+            }else if(delFlag.val() == "1"){
+                delFlag.val("0");
+                $(obj).html("&times;").attr("title", "删除");
+                $(obj).parent().parent().removeClass("error");
+            }
+        }
+        function urlRedict(file,attach){
+            parent.layer.confirm('确定删除吗?', {
+                btn: ['确认', '取消'] //可以无限个按钮
+            }, function(index, layero){
+                var index1 = parent.layer.load(0, {shade: false});
+                $.post("${ctx}/workfullmanage/workFullManage/deleteFile",
+                    {"file":file,"attach":attach},
+                    function(result){
+                        var d = JSON.parse(result);
+                        if(d.str){
+                            location.reload();
+                            parent.layer.msg("删除成功!!!",{icon:6});
+                            parent.layer.close(index1);
+                            parent.layer.close(index);
+                        }
+                    });
+            }, function(index){
+                parent.layer.close(index)
+            });
+
+        }
+        function insertTitle(tValue){
+            var list = "${workReimbursement.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "6";
+            console.log(file);
+            var timestamp=new Date().getTime();
+
+            var storeAs = "wrkReimbursement";
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+
+        function getMoney(value){
+            var money = "0.00";
+            //方法一使用id选择器进行计算。
+            //获取输入的数字
+            //自动计算出结果并填充在相应的输入框中
+            var size = $("#workAccountList tr").length+count;
+            for (var i = 0;i<size;i++){
+                var workAccountmoney = $("#workAccountList"+i+"_money").val();
+                var delFlag = $("#workAccountList"+i+"_delFlag").val();
+                if (workAccountmoney!=undefined && isNumber(workAccountmoney) && delFlag==0){
+                    if(money==""){
+                        money = parseFloat(workAccountmoney).toFixed(2);
+                    }else {
+                        money = (parseFloat(money) + parseFloat(workAccountmoney)).toFixed(2);
+                    }
+                }
+            }
+                $("#moneys").val(money);
+        }
+        function getMoneyVATT(index){
+            var money = "0.00";
+            //方法一使用id选择器进行计算。
+            //获取输入的数字
+            //自动计算出结果并填充在相应的输入框中
+            var workmoney = $("#reimbursementVATTaxes"+index+"_money").val();
+            if(parseFloat(workmoney)<0){
+                workmoney=0;
+                $("#reimbursementVATTaxes"+index+"_money").val(0);
+            }
+            if(workmoney==undefined||!isNumber(workmoney)||workmoney==''){
+                workmoney=0;
+            }
+            var taxAmount = $("#reimbursementVATTaxes"+index+"_taxAmount").val();
+            if(parseFloat(taxAmount)<0){
+                taxAmount=0;
+                $("#reimbursementVATTaxes"+index+"_taxAmount").val(0);
+            }
+            if(taxAmount==undefined||!isNumber(taxAmount)||taxAmount==''){
+                taxAmount=0;
+            }
+            if (workmoney!=undefined && isNumber(workmoney) ){
+                money = (parseFloat(taxAmount) + parseFloat(workmoney)).toFixed(2);
+            }
+            $("#reimbursementVATTaxes"+index+"_sumMoney").val(money);
+        }
+
+        function getBackMoney(value){
+            var money = "0.00";
+            var size = $("#reimbursementBackList tr").length;
+            for (var i = 0;i<size;i++){
+                var backmoney = $("#reimbursementBackList"+i+"_6").val();
+                var notRepay = $("#reimbursementBackList"+i+"_5").val();
+                if (backmoney!=undefined && isNumber(backmoney)){
+                    if(money==""){
+                        money = parseFloat(backmoney).toFixed(2);
+                    }else {
+                        money = (parseFloat(money) + parseFloat(backmoney)).toFixed(2);
+                    }
+                }
+            }
+                $("#backmoney").val(money);
+        }
+
+        function isNumber(val){
+            if(val === "" || val ==null){
+                return false;
+            }
+            var regPos = /^\d+(\.\d+)?$/; //非负浮点数
+            var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
+            if(regPos.test(val) || regNeg.test(val)){
+                return true;
+            }else{
+                return false;
+            }
+        }
+        function setParentInfo(parentId){
+            $.ajax({
+                url:"${ctx}/reimbursementType/reimbursementType/jsonData",
+                dataType:"json",
+                data:{id:parentId},
+                success:function (data) {
+                    if(data.proofread==1&&data.grade==1){
+                        $("#maxDeductTr").show();
+                    }else {
+                        $("#maxDeductTr").hide();
+                    }
+                }
+            })
+        }
+    </script>
+    <style>
+        /*超过5个汉字,调整label的长度,以下是配套的*/
+        .layui-item .layui-form-label{
+            width:90px;
+        }
+        .form-group .layui-item .layui-input-block,
+        .query .layui-input-block {
+            margin-left: 116px;
+        }
+        #workAccountList td{
+            padding-left: 0px;
+            padding-right: 0px;
+        }
+    </style>
+</head>
+<body>
+<div class="single-form">
+<div class="container">
+    <form:form id="inputForm" modelAttribute="workReimbursement" action="${ctx}/workreimbursement/workReimbursementAll/save" method="post" class="form-horizontal" >
+        <form:hidden path="id"/>
+        <form:hidden path="achivesId"/>
+        <form:hidden path="submitterId"/>
+        <input type="hidden" id="numberFlag" value="${workReimbursement.number}" />
+        <input id="wId" type="hidden" value="${workReimbursement.id}">
+        <div class="form-group layui-row first">
+            <div class="form-group-label"><h2>基础信息</h2></div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label">经办人:</label>
+                <div class="layui-input-block with-icon">
+                    <div class="input-group">
+                        <form:input path="submitterName" htmlEscape="false" readonly="true" class="form-control layui-input" value = "${workReimbursement.submitterName}"/>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label">报销编号:</label>
+                <div class="layui-input-block">
+                    <div class="input-group">
+                        <form:input path="number" id="number" htmlEscape="false"  readonly="true"  class="form-control layui-input"/>
+                        <span class="input-group-btn">
+                            <label class="form-status"><c:choose><c:when test="${not empty workReimbursement.status}">${fns:getDictLabel(workReimbursement.status, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                         </span>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label">所属部门:</label>
+                <div class="layui-input-block">
+                    <form:input path="officeName" htmlEscape="false"  readonly="true" id="officeName"  class="form-control required layui-input" value = "${workReimbursement.officeName}"/>
+                    <input type="hidden" id="officeId" name="officeId" value="${workReimbursement.officeId}">
+                </div>
+            </div>
+            <%--<div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>银行卡号:</label>
+                <div class="layui-input-block">
+                    <form:input path="bankCard" htmlEscape="false"  id="bankCard" minlength="16" maxlength="19" class="form-control number required layui-input" value = "${workReimbursement.bankCard}"/>
+                </div>
+            </div>--%>
+            <%--<div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>报销类型:</label>
+                <div class="layui-input-block">
+                    <input type="radio" class="i-checks" name="ext" checked id="ext" value="0">
+                    <label for="ext">项目报销</label>
+                    <input type="radio" class="i-checks" name="ext" id="ext1" value="1">
+                    <label for="ext1">非项目报销</label>
+                        &lt;%&ndash;<input type="text" name="title" lay-verify="title" autocomplete="off" readonly="true" placeholder="" class="layui-input" value="全过程管理用户01">&ndash;%&gt;
+                </div>
+            </div>--%>
+
+            <%--<div class="layui-item layui-col-sm6 td1">
+                <label class="layui-form-label"><span class="require-item">*</span>报销项目:</label>
+                <div class="layui-input-block with-icon">
+                    <sys:gridselectReproject url="${ctx}/workreimbursement/workReimbursement/selectReproject" id="project" name="project.id"  value="${workReimbursement.project.id}"  title="选择报销项目" labelName="project.projectName"
+                                               labelValue="${workReimbursement.project.projectName}" cssClass="form-control layui-input" fieldLabels="工程" fieldKeys="projectName" searchLabel="工程名称" searchKey="projectName" ></sys:gridselectReproject>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label">报销类别:</label>
+                <div class="layui-input-block with-icon">
+                    <sys:treeselectAccessoryNoParent id="reviewParent" name="type" value="${workReimbursement.workReimbursementTypeInfo.id}" labelName="typeName" labelValue="${workReimbursement.workReimbursementTypeInfo.standardDetail}"
+                                                     title="报销类别" url="/reimbursementType/reimbursementType/treeData" extId="${workReimbursement.workReimbursementTypeInfo.id}"  cssClass="form-control  layui-input" allowClear="true" notAllowSelectParent="true"/>
+                </div>
+            </div>--%>
+            <%--<div class="layui-item layui-col-sm6">
+                <label class="layui-form-label">报销类别:</label>
+                <div class="layui-input-block">
+                    <form:select id="type" path="type" class="form-control simple-select ">
+                        <form:option value="" label=""/>
+                        <form:options items="${fns:getMainDictList('reimbursement_type')}" itemLabel="label" itemValue="label" htmlEscape="false"/>
+                    </form:select>
+                </div>
+            </div>--%>
+            <%--<div class="layui-item layui-col-sm6 td1">
+                <label class="layui-form-label">项目负责人:</label>
+                <div class="layui-input-block">
+                    <form:input path="projectMasterName" htmlEscape="false"  readonly="true" id="projectMasterName"  class="form-control layui-input"/>
+                </div>
+            </div>--%>
+            <%--<div class="layui-item layui-col-sm6">
+                <label class="layui-form-label double-line"><span class="require-item">*</span>是否对公报销:</label>
+                <div class="layui-input-block">
+                    <input type="radio" class="i-checks" name="isPublic" checked id="isPublic" value="0">
+                    <label for="isPublic">否</label>
+                    <input type="radio" class="i-checks" name="isPublic" id="isPublic1" value="1">
+                    <label for="isPublic1">是</label>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 isPublic">
+                <label class="layui-form-label"><span class="require-item">*</span>公司名称:</label>
+                <div class="layui-input-block with-icon">
+                    <div class="input-group">
+                        <sys:gridworkSupplier id="comnameId" name="comnameId" value="${workReimbursement.comname}" labelName="comname" labelValue="${workReimbursement.comname}"
+                                            allowInput="true"   title="供应商/客户" url="${ctx}/workreimbursement/workReimbursement/gridSelectComname" cssClass="form-control required layui-input" ></sys:gridworkSupplier>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 isPublic">
+                <label class="layui-form-label"><span class="require-item">*</span>开户行:</label>
+                <div class="layui-input-block">
+                    <form:input path="bank" htmlEscape="false"  id="bank"  class="form-control  layui-input" value = "${workReimbursement.bank}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 isPublic">
+                <label class="layui-form-label"><span class="require-item">*</span>银行账号:</label>
+                <div class="layui-input-block">
+                    <form:input path="bankNo" htmlEscape="false"  id="bankNo" minlength="16" maxlength="19" class="form-control number layui-input" value = "${workReimbursement.bankNo}"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label">申请人:</label>
+                <div class="layui-input-block">
+                    <form:input path="userName" htmlEscape="false"  readonly="true" id="userName"  class="form-control required layui-input" value="${workReimbursement.submitterName}"/>
+                    <input type="hidden" id="createById" name="createBy.id" value="${workReimbursement.createBy.id}">
+                </div>
+            </div>--%>
+
+            <div class="layui-item layui-col-sm6">
+                <label class="layui-form-label"><span class="require-item">*</span>报销日期:</label>
+                <div class="layui-input-block">
+                    <input id="submitterDate" name="submitterDate" type="text" readonly="true" maxlength="20" class="laydate-icondate form-control layer-date required layui-input laydate-icon"
+                           value="<fmt:formatDate value="${submitterDate.submitterDate}" pattern="yyyy-MM-dd"/>"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-sm6 with-textarea">
+                <label class="layui-form-label ">备注:</label>
+                <div class="layui-input-block">
+                    <form:textarea path="remarks" htmlEscape="false" rows="4"  maxlength="255" value="${workReimbursement.remarks}"  class="form-control "/>
+                </div>
+            </div>
+        </div>
+        <div class="form-group layui-row">
+            <div class="form-group-label"><h2>报销详情</h2></div>
+            <div class="layui-item nav-btns">
+                <a class="nav-btn nav-btn-add" onclick="addRow('#workAccountList', workAccountListRowIdx, workAccountListTpl);workAccountListRowIdx = workAccountListRowIdx + 1;" title="新增"><i class="fa fa-plus"></i>&nbsp;新增</a>
+            </div>
+            <div class="layui-table-body layui-item layui-col-xs12 form-table-container"  style="padding:0px">
+                <table id="contentTable" class="table table-bordered table-condensed can-edit no-bottom-margin details">
+                    <thead>
+                    <tr>
+                        <%--<th width="60px">编号</th>--%>
+                        <th width="200px"><font color="red">*</font>报销人</th>
+                        <th width="200px">报销部门</th>
+                        <th width="200px">报销项目</th>
+                        <th width="200px">报告号</th>
+                        <th width="200px">报销类型</th>
+                        <th width="200px"><font color="red">*</font>费用(元)</th>
+                        <th width="200px">收据张数</th>
+                        <th width="200px">出差天数</th>
+                        <th width="200px">内容</th>
+                        <th width="100px">操作</th>
+                    </tr>
+                    </thead>
+                    <tbody id="workAccountList">
+                    <c:if test="${not empty workReimbursement.workAccountList}">
+                        <c:forEach items="${workReimbursement.workAccountList}" var="workAccount" varStatus="index">
+                            <tr id="workAccountList${index.index}">
+                                <td class="hide">
+                                    <input id="workAccountList${index.index}_id" name="workAccountList[${index.index}].id" type="hidden" value="${workAccount.id}"/>
+                                    <input id="workAccountList${index.index}_projectRadio" name="workAccountList[${index.index}].projectRadio" type="hidden" value="${workAccount.projectRadio}"/>
+                                    <input id="workAccountList${index.index}_delFlag" name="workAccountList[${index.index}].delFlag" type="hidden" value="0"/>
+                                </td>
+                                <%--<td>
+                                    <div style="width: 60px">
+                                        <input readonly="readonly" style="text-align: center"  value="${index.index+1}" type="text" class="form-control contentDetail"/>
+
+                                    </div>
+                                </td>--%>
+                                <td>
+                                    <div class="project_reimbursement_div"  style="width: 200px">
+                                        <sys:reimburtreeselectUser id="workAccountList${index.index}_reimbursementName" name="workAccountList[${index.index}].reimbursementName" value="${projectRecords.leaderIds}" labelName="reimbursementNameName" labelValue="${workAccount.reimbursementName}"
+                                                                   title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+                                    </div>
+                                </td>
+                                <td>
+                                    <input id="workAccountList${index.index}_reimbursementNameofficeId"  name="workAccountList[${index.index}].officeId" maxlength="32" type="text" value="${workAccount.officeId}" readonly="readonly"  class="form-control required"/>
+                                </td>
+
+
+                                <td>
+                                    <div class="not_project_reimbursement_div"  style="width: 200px">
+                                        <sys:reimburselectReproject url="${ctx}/workreimbursement/workReimbursementAll/selectReproject" id="workAccountList${index.index}_project" name="workAccountList[${index.index}].project.id"  value="${workAccount.project.id}"  title="选择报销项目" labelName="workAccountList[${index.index}].project.projectName"
+                                                                    labelValue="${workAccount.project.projectName}" cssClass="form-control layui-input" fieldLabels="工程" fieldKeys="projectName" searchLabel="工程名称" searchKey="projectName" />
+                                    </div>
+                                </td>
+                                <td>
+                                    <input id="workAccountList${index.index}_projectReportNumber"  name="workAccountList[${index.index}].projectReportNumber" type="text" value="${workAccount.projectReportNumber}" maxlength="32" readonly="readonly"  class="form-control"/>
+                                </td>
+                                <td style="text-align:center;">
+                                    <div class="project_reimbursement_div"  style="width: 200px">
+                                        <sys:treeselectAccessoryNoParent id="workAccountList${index.index}_type" name="workAccountList[${index.index}].type" value="${workAccount.type}" labelName="workAccountList[${index.index}].typeName" labelValue="${workAccount.typeName}"
+                                                                         title="报销类别" url="/reimbursementType/reimbursementType/treeData" extId=""  cssClass="form-control  layui-input" allowClear="true" notAllowSelectParent="true"/>
+                                    </div>
+                                </td>
+
+                                <td>
+                                    <input id="workAccountList${index.index}_money" onchange="getMoney(this.value)" name="workAccountList[${index.index}].money" type="text" value="${workAccount.money}"  placeholder="请输入金额" maxlength="10"  class="form-control number required"/>
+                                </td>
+                                <td style="text-align:center;">
+                                    <input id="workAccountList${index.index}_bills"  name="workAccountList[${index.index}].bills" type="text" value="${workAccount.bills}" maxlength="32" placeholder="请输入单据张数"  class="form-control number"/>
+                                </td>
+                                <td style="text-align:center;">
+                                    <input id="workAccountList${index.index}_evectionNumber"  name="workAccountList[${index.index}].evectionNumber" type="text" value="${workAccount.evectionNumber}" maxlength="32" placeholder="请输入出差天数"  class="form-control number"/>
+                                </td>
+                                <td>
+                                    <input id="workAccountList${index.index}_remarks" name="workAccountList[${index.index}].remarks" type="text" value="${workAccount.remarks}" maxlength="32" placeholder="请输入备注"  class="form-control"/>
+                                </td>
+
+                                <td class="text-center op-td" >
+                                    <span class="op-btn op-btn-delete" onclick="delRow(this, '#workAccountList${index.index}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                    </c:if>
+                    </tbody>
+                </table>
+                <table id="contentMoneys" class="table table-bordered table-condensed can-edit no-bottom-margin details">
+                    <thead>
+                        <tr style="border: 0px">
+                            <td width="200px" style="vertical-align:middle;text-align: center;"><label><font color="red">*</font>总报销费用(元):</label></td>
+                            <td width="200px"></td>
+                            <td width="200px"></td>
+                            <td width="200px"></td>
+                            <td width="200px"></td>
+                            <td width="200px" style="border: 0px">
+                                <input htmlEscape="false" style="border: 0px; font-weight: bold;" id="moneys" name="money" readonly="true" class="form-control layui-input" value="${workReimbursement.money}"/>
+                            </td>
+                            <td width="200px"></td>
+                            <td width="200px"></td>
+                            <td width="200px"></td>
+                            <td width="100px"></td>
+                        </tr>
+                    </thead>
+                </table>
+                <script type="text/template" id="workAccountListTpl">//<!--
+                    <tr id="workAccountList{{idx}}">
+                        <td class="hide">
+                            <input id="workAccountList{{idx}}_id" name="workAccountList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                            <input id="workAccountList{{idx}}_projectRadio"  name="workAccountList[{{idx}}].projectRadio" type="hidden" value="{{row.projectRadio}}"/>
+                            <input id="workAccountList{{idx}}_delFlag" name="workAccountList[{{idx}}].delFlag" type="hidden" value="0"/>
+                        </td>
+                        <%--<td>
+                            <div style="width: 60px">
+                                <input readonly="readonly" style="text-align: center"  value="{{idx}}" type="text" class="form-control contentDetail"/>
+                            </div>
+                        </td>--%>
+                        <td>
+                            <div class="project_reimbursement_div"  style="width: 200px">
+                                <sys:reimburtreeselectUser id="workAccountList{{idx}}_reimbursementName" name="workAccountList[{{idx}}].reimbursementName" value="${projectRecords.leaderIds}" labelName="workAccountList[{{idx}}].name" labelValue="{{row.reimbursementName}}"
+                                    title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+                            </div>
+                        </td>
+                        <td>
+                            <div class="not_project_reimbursement_div"  style="width: 200px">
+                                <input id="workAccountList{{idx}}_reimbursementNameofficeId"  type="text" value="{{row.officeId}}" maxlength="32" readonly="readonly"  class="form-control"/>
+                            </div>
+                        </td>
+                        <td>
+                            <div class="not_project_reimbursement_div"  style="width: 200px">
+                                <sys:reimburselectReproject url="${ctx}/workreimbursement/workReimbursementAll/selectReproject" id="workAccountList{{idx}}_project" name="workAccountList[{{idx}}].project.id"  value="${workReimbursement.project.id}"  title="选择报销项目" labelName="workAccountList[{{idx}}].project.projectName"
+                                               labelValue="{{row.projectName}}" cssClass="form-control layui-input" fieldLabels="工程" fieldKeys="projectName" searchLabel="工程名称" searchKey="projectName" ></sys:reimburselectReproject>
+                            </div>
+                        </td>
+                        <td>
+                            <input id="workAccountList{{idx}}_projectReportNumber"  name="workAccountList[{{idx}}].projectReportNumber" type="text" value="{{row.projectReportNumber}}" maxlength="32" readonly="readonly"  class="form-control"/>
+                        </td>
+                        <td style="text-align:center;">
+                            <div class="project_reimbursement_div"  style="width: 200px">
+                                <sys:treeselectAccessoryNoParent id="workAccountList{{idx}}_type" name="workAccountList[{{idx}}].type" value="${workReimbursement.workReimbursementTypeInfo.id}" labelName="workAccountList[{{idx}}].typeName" labelValue="${workReimbursement.workReimbursementTypeInfo.standardDetail}"
+                                     title="报销类别" url="/reimbursementType/reimbursementType/treeData" extId=""  cssClass="form-control  layui-input" allowClear="true" notAllowSelectParent="true"/>
+                            </div>
+                        </td>
+                        <td>
+                            <input id="workAccountList{{idx}}_money" onchange="getMoney(this.value)" name="workAccountList[{{idx}}].money" type="text" value="{{row.money}}"  placeholder="请输入费用" maxlength="10" class="form-control number"/>
+                        </td>
+                        <td style="text-align:center;">
+                            <input id="workAccountList{{idx}}_bills"  name="workAccountList[{{idx}}].bills" type="text" value="{{row.bills}}" maxlength="3" placeholder="请输入单据张数"  class="form-control number"/>
+                        </td>
+                        <td style="text-align:center;">
+                            <input id="workAccountList{{idx}}_evectionNumber"  name="workAccountList[{{idx}}].evectionNumber" type="text" value="{{row.evectionNumber}}" maxlength="3" placeholder="请输入出差天数"  class="form-control number"/>
+                        </td>
+                        <td>
+                            <input id="workAccountList{{idx}}_remarks" name="workAccountList[{{idx}}].remarks" type="text" value="{{row.remarks}}"  placeholder="请输入内容" maxlength="32" class="form-control "/>
+                        </td>
+
+                        <td class="text-center op-td" >
+                            {{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#workAccountList{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
+                        </td>
+                    </tr>//-->
+                </script>
+            </div>
+        </div>
+        <div class="form-group layui-row">
+            <div class="form-group-label"><h2>专用发票信息</h2></div>
+            <div class="layui-item nav-btns">
+                <a class="nav-btn nav-btn-add" onclick="addRow('#reimbursementVATTaxes', reimbursementVATTaxesRowIdx, reimbursementVATTaxesTpl);reimbursementVATTaxesRowIdx = reimbursementVATTaxesRowIdx + 1;" title="新增"><i class="fa fa-plus"></i>&nbsp;新增</a>
+            </div>
+            <div class="layui-item layui-col-xs12 form-table-container">
+                <table id="contentTable2" class="table table-bordered table-condensed can-edit">
+                    <thead>
+                    <tr>
+                        <th width="300px"><font color="red">*</font>发票代码</th>
+                        <th width="200px"><font color="red">*</font>发票号</th>
+                        <th width="200px"><font color="red">*</font>金额</th>
+                        <th width="200px"><font color="red">*</font>税额</th>
+                        <th width="200px"><font color="red">*</font>价税合计</th>
+                        <th width="150px">操作</th>
+                    </tr>
+                    </thead>
+                    <tbody id="reimbursementVATTaxes">
+                    <c:if test="${not empty workReimbursement.reimbursementVATTaxes}">
+                        <c:forEach items="${workReimbursement.reimbursementVATTaxes}" var="reimbursementVATTaxes" varStatus="index">
+                            <tr id="reimbursementVATTaxes${index.index}">
+                                <td class="hide">
+                                    <input id="reimbursementVATTaxes${index.index}_id" name="reimbursementVATTaxes[${index.index}].id" type="hidden" value="${reimbursementVATTaxes.id}"/>
+                                    <input id="reimbursementVATTaxes${index.index}_delFlag" name="reimbursementVATTaxes[${index.index}].delFlag" type="hidden" value="0"/>
+                                </td>
+                                <td>
+                                    <input id="reimbursementVATTaxes${index.index}_invoiceCode" maxlength="10" minlength="10" name="reimbursementVATTaxes[${index.index}].invoiceCode" type="text" maxlength="32" value="${reimbursementVATTaxes.invoiceCode}"  placeholder="请输入发票代码"  class="form-control required number"/>
+                                </td>
+
+                                <td>
+                                    <input id="reimbursementVATTaxes${index.index}_invoiceNumber" maxlength="8" minlength="8" name="reimbursementVATTaxes[${index.index}].invoiceNumber" type="text" maxlength="32" value="${reimbursementVATTaxes.invoiceNumber}"  placeholder="请输入发票号"  class="form-control number required"/>
+                                </td>
+                                <td>
+                                    <input id="reimbursementVATTaxes${index.index}_money" onchange="getMoneyVATT(${index.index})" name="reimbursementVATTaxes[${index.index}].money" type="text" maxlength="32" value="${reimbursementVATTaxes.money}"  placeholder="请输入金额"  class="form-control number required"/>
+                                </td>
+                                <td>
+                                    <input id="reimbursementVATTaxes${index.index}_taxAmount" onchange="getMoneyVATT(${index.index})" name="reimbursementVATTaxes[${index.index}].taxAmount" type="text" maxlength="32" value="${reimbursementVATTaxes.taxAmount}"  placeholder="请输入税额"  class="form-control number required"/>
+                                </td>
+                                <td>
+                                    <input id="reimbursementVATTaxes${index.index}_sumMoney" readOnly="true"  name="reimbursementVATTaxes[${index.index}].sumMoney" type="text" maxlength="32" value="${reimbursementVATTaxes.sumMoney}"    class="form-control number required sumMoney"/>
+                                </td>
+                                <td class="text-center op-td">
+                                    <span class="op-btn op-btn-delete" onclick="delRowA(this, '#reimbursementVATTaxes${index.index}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                    </c:if>
+                    </tbody>
+                </table>
+                <script type="text/template" id="reimbursementVATTaxesTpl">//<!--
+                                    <tr id="reimbursementVATTaxes{{idx}}">
+                                        <td class="hide">
+                                            <input id="reimbursementVATTaxes{{idx}}_id" name="reimbursementVATTaxes[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                                            <input id="reimbursementVATTaxes{{idx}}_delFlag" name="reimbursementVATTaxes[{{idx}}].delFlag" type="hidden" value="0"/>
+                                        </td>
+                                        <td>
+                                            <input id="reimbursementVATTaxes{{idx}}_invoiceCode"  maxlength="10" minlength="10" name="reimbursementVATTaxes[{{idx}}].invoiceCode" type="text" value="{{row.invoiceCode}}" maxlength="32" placeholder="请输入发票代码"  class="form-control number required"/>
+                                        </td>
+
+                                        <td>
+                                            <input id="reimbursementVATTaxes{{idx}}_invoiceNumber" maxlength="8" minlength="8" name="reimbursementVATTaxes[{{idx}}].invoiceNumber" type="text" value="{{row.invoiceNumber}}" maxlength="32" placeholder="请输入发票号"  class="form-control number required"/>
+                                        </td>
+                                         <td>
+                                            <input id="reimbursementVATTaxes{{idx}}_money" onchange="getMoneyVATT({{idx}})" name="reimbursementVATTaxes[{{idx}}].money" type="text" value="{{row.money}}" maxlength="32" placeholder="请输入金额"  class="form-control number required"/>
+                                        </td>
+                                        <td>
+                                            <input id="reimbursementVATTaxes{{idx}}_taxAmount"  onchange="getMoneyVATT({{idx}})"name="reimbursementVATTaxes[{{idx}}].taxAmount" type="text" value="{{row.taxAmount}}" maxlength="32" placeholder="请输入税额"  class="form-control number required"/>
+                                        </td>
+                                         <td>
+                                            <input id="reimbursementVATTaxes{{idx}}_sumMoney" readOnly="true"  name="reimbursementVATTaxes[{{idx}}].sumMoney" type="text" value="{{row.sumMoney}}" maxlength="32"  class="form-control number required sumMoney"/>
+                                        </td>
+                                        <td class="text-center op-td">
+                                            {{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRowA(this, '#reimbursementVATTaxes{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
+                                        </td>
+                                    </tr>//-->
+                </script>
+                <script type="text/javascript">
+                    var workAccountListRowIdx = 0, workAccountListTpl = $("#workAccountListTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                    var reimbursementVATTaxesRowIdx = 0, reimbursementVATTaxesTpl = $("#reimbursementVATTaxesTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                    if($("#id").val()){
+                        workAccountListRowIdx = ${fn:length(workReimbursement.workAccountList)};
+                        reimbursementVATTaxesRowIdx = ${fn:length(workReimbursement.reimbursementVATTaxes)};
+                    }
+                    $(document).ready(function() {
+                        /*var data = ${fns:toJson(workReimbursement.reimbursementVATTaxes)};
+                    for (var i=0; i<data.length; i++){
+                        addRow('#reimbursementVATTaxes', reimbursementVATTaxesRowIdx, reimbursementVATTaxesTpl, data[i]);
+                        reimbursementVATTaxesRowIdx = reimbursementVATTaxesRowIdx + 1;
+                    }*/
+                    });
+                </script>
+            </div>
+        </div>
+        <div class="form-group layui-row">
+            <div class="form-group-label"><h2>报销附件信息</h2></div>
+            <div class="layui-item nav-btns">
+                <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+            </div>
+            <div id="addFile_attachment" style="display: none" class="upload-progress">
+                <span id="fileName_attachment" ></span>
+                <b><span id="baifenbi_attachment" ></span></b>
+                <div class="progress">
+                    <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                    </div>
+                </div>
+            </div>
+            <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+            <span id="attachment_title"></span>
+            <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                <table id="upTable" class="table table-bordered table-condensed details">
+                    <thead>
+                    <tr>
+                            <%-- <th>序号</th>--%>
+                        <th>文件预览</th>
+                        <th>上传人</th>
+                        <th>上传时间</th>
+                        <th width="150px">操作</th>
+                    </tr>
+                    </thead>
+                    <tbody id="file_attachment">
+                    <c:forEach items="${workReimbursement.workAttachments}" var = "workClientAttachment" varStatus="status">
+                        <tr>
+                                <%-- <td>${status.index + 1}</td>--%>
+                            <c:choose>
+                                <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                    <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+                                </c:when>
+                                <c:otherwise>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                            <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                        </c:otherwise>
+                                    </c:choose>
+                                </c:otherwise>
+                            </c:choose>
+                            <td>${workClientAttachment.createBy.name}</td>
+                            <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                            <td class="op-td">
+                                <div class="op-btn-box" >
+                                    <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                    <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                        <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                    </c:if>
+                                </div>
+                            </td>
+                        </tr>
+                    </c:forEach>
+                    </tbody>
+                </table>
+            </div>
+        </div>
+        <div class="form-group layui-row page-end"></div>
+    </form:form>
+</div>
+</div>
+</body>
+</html>

+ 19 - 19
src/main/webapp/webpage/modules/workreimbursement/workReimbursementAllList.jsp

@@ -235,25 +235,25 @@
                     ,"submitterDate":"<fmt:formatDate value="${workReimbursement.submitterDate}" pattern="yyyy-MM-dd"/>"
                     ,"money":"<fmt:formatNumber value="${workReimbursement.money}" pattern="#,#0.00"/>"
                     ,"status":"${workReimbursement.status}"
-<%--                    <shiro:hasPermission name="workreimbursement:workReimbursement:del">--%>
-<%--                    ,"candelete":--%>
-<%--                        <c:if test="${fns:getUser().id == workReimbursement.createBy.id && (workReimbursement.status == '1' or workReimbursement.status == '3' or workReimbursement.status == '4')}">"1"</c:if>--%>
-<%--                    <c:if test="${fns:getUser().id != workReimbursement.createBy.id || (workReimbursement.status != '1' and workReimbursement.status != '3' and workReimbursement.status != '4')}">"0"</c:if>--%>
-<%--                    </shiro:hasPermission>--%>
-<%--                    ,"cancancel":--%>
-<%--                        <c:if test="${workReimbursement.status == '2' && fns:getUser().id == workReimbursement.createBy.id}">"1"</c:if>--%>
-<%--                    <c:if test="${workReimbursement.status != '2' || fns:getUser().id != workReimbursement.createBy.id}">"0"</c:if>--%>
-<%--                    <shiro:hasPermission name="workreimbursement:workReimbursement:edit">--%>
-<%--                    ,"canedit1":--%>
-<%--                        <c:if test="${fns:getUser().id == workReimbursement.createBy.id && workReimbursement.status == '1' }">"1"</c:if>--%>
-<%--                    <c:if test="${fns:getUser().id != workReimbursement.createBy.id || workReimbursement.status != '1' }">"0"</c:if>--%>
-<%--                    ,"canedit2":--%>
-<%--                        <c:if test="${fns:getUser().id == workReimbursement.createBy.id && workReimbursement.status == '4' && fns:getUser().id == workReimbursement.createBy.id}">"1"</c:if>--%>
-<%--                    <c:if test="${fns:getUser().id != workReimbursement.createBy.id || workReimbursement.status != '4' || fns:getUser().id != workReimbursement.createBy.id}">"0"</c:if>--%>
-<%--                    ,"canedit3":--%>
-<%--                        <c:if test="${workReimbursement.status == '3' && fns:getUser().id == workReimbursement.createBy.id}">"1"</c:if>--%>
-<%--                    <c:if test="${workReimbursement.status != '3' || fns:getUser().id != workReimbursement.createBy.id}">"0"</c:if>--%>
-<%--                    </shiro:hasPermission>--%>
+                    <shiro:hasPermission name="workreimbursement:workReimbursementAll:del">
+                    ,"candelete":
+                        <c:if test="${fns:getUser().id == workReimbursement.createBy.id && (workReimbursement.status == '1' or workReimbursement.status == '3' or workReimbursement.status == '4')}">"1"</c:if>
+                    <c:if test="${fns:getUser().id != workReimbursement.createBy.id || (workReimbursement.status != '1' and workReimbursement.status != '3' and workReimbursement.status != '4')}">"0"</c:if>
+                    </shiro:hasPermission>
+                    ,"cancancel":
+                        <c:if test="${workReimbursement.status == '2' && fns:getUser().id == workReimbursement.createBy.id}">"1"</c:if>
+                    <c:if test="${workReimbursement.status != '2' || fns:getUser().id != workReimbursement.createBy.id}">"0"</c:if>
+                    <shiro:hasPermission name="workreimbursement:workReimbursementAll:edit">
+                    ,"canedit1":
+                        <c:if test="${fns:getUser().id == workReimbursement.createBy.id && workReimbursement.status == '1' }">"1"</c:if>
+                    <c:if test="${fns:getUser().id != workReimbursement.createBy.id || workReimbursement.status != '1' }">"0"</c:if>
+                    ,"canedit2":
+                        <c:if test="${fns:getUser().id == workReimbursement.createBy.id && workReimbursement.status == '4' && fns:getUser().id == workReimbursement.createBy.id}">"1"</c:if>
+                    <c:if test="${fns:getUser().id != workReimbursement.createBy.id || workReimbursement.status != '4' || fns:getUser().id != workReimbursement.createBy.id}">"0"</c:if>
+                    ,"canedit3":
+                        <c:if test="${workReimbursement.status == '3' && fns:getUser().id == workReimbursement.createBy.id}">"1"</c:if>
+                    <c:if test="${workReimbursement.status != '3' || fns:getUser().id != workReimbursement.createBy.id}">"0"</c:if>
+                    </shiro:hasPermission>
                 }
                 </c:forEach>
                 </c:if>

File diff suppressed because it is too large
+ 1087 - 0
src/main/webapp/webpage/modules/workreimbursement/workReimbursementAllModifyApply.jsp