Browse Source

Merge remote-tracking branch 'origin/dev' into dev

dev
王晓迪 3 months ago
parent
commit
ec2f432c63
  1. 21
      ruoyi-activiti/src/main/java/com/ruoyi/process/todoitem/controller/BizTodoItemController.java
  2. 66
      ruoyi-admin/src/main/java/com/ruoyi/financial/controller/FinancialReceivablesController.java
  3. 40
      ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialReceivables.java
  4. 12
      ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialReceivablesRecords.java
  5. 2
      ruoyi-admin/src/main/java/com/ruoyi/financial/domain/VO/FinancialReceivablesRecordsVO.java
  6. 8
      ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialTaxInvoiceHistoryMapper.java
  7. 7
      ruoyi-admin/src/main/java/com/ruoyi/financial/service/IFinancialReceivablesService.java
  8. 14
      ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialReceivablesServiceImpl.java
  9. 35
      ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialTaxInvoiceServiceImpl.java
  10. 166
      ruoyi-admin/src/main/java/com/ruoyi/remind/controller/RemindController.java
  11. 32
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysSalesOrderController.java
  12. 11
      ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysSalesOrderVo.java
  13. 8
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysSalesOrderMapper.java
  14. 29
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesOrderServiceImpl.java
  15. BIN
      ruoyi-admin/src/main/resources/FinancialReceiptVoucherTemplate.xlsx
  16. 0
      ruoyi-admin/src/main/resources/attachments/test.docx
  17. 60
      ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesMapper.xml
  18. 5
      ruoyi-admin/src/main/resources/mapper/financial/FinancialTaxInvoiceHistoryMapper.xml
  19. 12
      ruoyi-admin/src/main/resources/mapper/system/SysSalesOrderMapper.xml
  20. 9
      ruoyi-admin/src/main/resources/static/ruoyi/css/ry-ui.css
  21. 2
      ruoyi-admin/src/main/resources/templates/financial/receivables/addFinancialReceivables.html
  22. 110
      ruoyi-admin/src/main/resources/templates/financial/receivables/addReceivablesVoucher.html
  23. 82
      ruoyi-admin/src/main/resources/templates/financial/receivables/addReceivablesVoucherNoSales.html
  24. 160
      ruoyi-admin/src/main/resources/templates/financial/receivables/receivables.html
  25. 8
      ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceRMB.html
  26. 337
      ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceUSD.html
  27. 299
      ruoyi-admin/src/main/resources/templates/index.html
  28. 170
      ruoyi-admin/src/main/resources/templates/process/todoitem/doneitem.html
  29. 74
      ruoyi-admin/src/main/resources/templates/process/todoitem/todoList.html
  30. 111
      ruoyi-admin/src/main/resources/templates/process/todoitem/todoitem.html

21
ruoyi-activiti/src/main/java/com/ruoyi/process/todoitem/controller/BizTodoItemController.java

@ -9,10 +9,14 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.process.leave.domain.BizLeaveVo;
import com.ruoyi.process.leave.service.IBizLeaveService;
import com.ruoyi.process.todoitem.domain.BizTodoItem;
import com.ruoyi.process.todoitem.service.IBizTodoItemService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@ -42,6 +46,9 @@ public class BizTodoItemController extends BaseController {
// @Autowired
// private IBizLeaveService bizLeaveService;
@Autowired
private IBizLeaveService bizLeaveService;
@Autowired
private TaskService taskService;
@ -70,11 +77,11 @@ public class BizTodoItemController extends BaseController {
// Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
// String processInstanceId = task.getProcessInstanceId();
// ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
// BizLeaveVo bizLeave = bizLeaveService.selectBizLeaveById(new Long(processInstance.getBusinessKey()));
// mmap.put("bizLeave", bizLeave);
//// BizLeaveVo bizLeave = bizLeaveService.selectBizLeaveById(new Long(processInstance.getBusinessKey()));
//// mmap.put("bizLeave", bizLeave);
// mmap.put("taskId", taskId);
//// String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1);
// return "process/" + module + "/" + formPageName;
// String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1);
// return prefix + "/task" + verifyName;
// }
@RequiresPermissions("process:todoitem:view")
@ -283,10 +290,4 @@ public class BizTodoItemController extends BaseController {
result.put("total", total);
return result;
}
}

66
ruoyi-admin/src/main/java/com/ruoyi/financial/controller/FinancialReceivablesController.java

@ -1,11 +1,24 @@
package com.ruoyi.financial.controller;
import java.io.*;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.ruoyi.financial.domain.FinancialReceivablesRecords;
import com.ruoyi.financial.service.IFinancialReceivablesRecordsService;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
@ -17,6 +30,12 @@ import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.metadata.WriteSheet;
/**
* 财务应收账款Controller
@ -28,6 +47,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
@RequestMapping("/financial/receivables")
public class FinancialReceivablesController extends BaseController
{
private static final String CHARSET_UTF8 = "utf-8";
private String prefix = "financial/receivables";
@Autowired
@ -127,6 +147,49 @@ public class FinancialReceivablesController extends BaseController
}
return prefix + "/addReceivablesVoucher";
}
/**导出收款凭证*/
@RequiresPermissions("financial:receivables:export")
@Log(title = "财务应收账款凭证", businessType = BusinessType.EXPORT)
@GetMapping("/excelReceivablesVoucher/{financialReceivablesId}")
public void excelReceivablesVoucher(@PathVariable("financialReceivablesId") Long financialReceivablesId,HttpServletResponse response) throws IOException {
FinancialReceivables financialReceivables = financialReceivablesService.selectFinancialReceivablesById(financialReceivablesId);
// 模版位置
String name = "FinancialReceiptVoucherTemplate.xlsx";
// 设置响应头,指定文件名和文件类型
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("FinancialReceiptVoucher.xlsx", "UTF-8"));
response.setContentType("application/octet-stream");
InputStream inputStream = null;
try {
// 获取模板文件的输入流
inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(name);
if (inputStream == null) {
throw new FileNotFoundException("模板文件未找到:" + name);
}
// 创建一个ExcelWriterBuilder对象,并指定输出流和输入流
ExcelWriterBuilder writerBuilder = EasyExcel.write(response.getOutputStream());
// 创建一个WriteSheet对象,并指定模板中的Sheet编号
WriteSheet writeSheet = EasyExcel.writerSheet(0).build();
// 将数据写入Excel文件
writerBuilder.withTemplate(inputStream).sheet("sheet1").doFill(financialReceivables);
} finally {
// 关闭输入流
if (inputStream != null) {
inputStream.close();
}
}
// 刷新输出流
response.flushBuffer();
}
/**
* 新增保存销售订单创建收款凭证
@ -241,4 +304,7 @@ public class FinancialReceivablesController extends BaseController
return getDataTable(financialReceivablesRecords);
}
}

40
ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialReceivables.java

@ -6,10 +6,12 @@ import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.financial.domain.VO.FinancialReceivablesRecordsVO;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
/**
* 财务应收账款对象 financial_receivables
@ -17,6 +19,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
* @author 刘晓旭
* @date 2024-05-08
*/
@Data
public class FinancialReceivables extends BaseEntity
{
private static final long serialVersionUID = 1L;
@ -35,6 +38,9 @@ public class FinancialReceivables extends BaseEntity
/** 关联销售订单号 */
@Excel(name = "关联销售订单号")
private String salesOrderCode;
/*借方科目*/
@Excel(name = "借方科目", readConverterExp="0=银行存款,1=现金")
private String debitAccount;
/** 贷方科目 */
@Excel(name = "贷方科目")
@ -45,7 +51,7 @@ public class FinancialReceivables extends BaseEntity
private String creditDetail;
/** 开户银行 */
@Excel(name = "开户银行")
@Excel(name = "开户银行",readConverterExp="0=中行基本户,建行一般户")
private String openBank;
/** 开户账号 */
@ -113,10 +119,41 @@ public class FinancialReceivables extends BaseEntity
@Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date operatingTime;
/*年*/
private String year;
/*月*/
private String month;
/*日*/
private String day;
/** 收款备注 */
@Excel(name = "收款备注")
private String receivablesRemark;
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getMonth() {
return month;
}
public void setMonth(String month) {
this.month = month;
}
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
/** 收款记录集合 */
List<FinancialReceivablesRecords> receivablesRecordsList;
@ -354,7 +391,6 @@ public class FinancialReceivables extends BaseEntity
public void setReceivablesRecordsVOList(List<FinancialReceivablesRecordsVO> receivablesRecordsVOList) {
this.receivablesRecordsVOList = receivablesRecordsVOList;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

12
ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialReceivablesRecords.java

@ -51,8 +51,18 @@ public class FinancialReceivablesRecords extends BaseEntity
/** 收款备注 */
@Excel(name = "收款备注")
private String receivablesRemark;
/*获取当前登录的账号*/
private String operatingPerson;
public void setReceivablesRecordsId(Long receivablesRecordsId)
public String getOperatingPerson() {
return operatingPerson;
}
public void setOperatingPerson(String operatingPerson) {
this.operatingPerson = operatingPerson;
}
public void setReceivablesRecordsId(Long receivablesRecordsId)
{
this.receivablesRecordsId = receivablesRecordsId;
}

2
ruoyi-admin/src/main/java/com/ruoyi/financial/domain/VO/FinancialReceivablesRecordsVO.java

@ -47,3 +47,5 @@ public class FinancialReceivablesRecordsVO extends BaseEntity {
@Excel(name = "收款备注")
private String receivablesRemark;
}

8
ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialTaxInvoiceHistoryMapper.java

@ -82,4 +82,12 @@ public interface FinancialTaxInvoiceHistoryMapper
* @return 结果
*/
List<FinancialTaxInvoiceHistory> selectInvoiceHistoryListBySalesOrderCode(String salesOrderCode);
/**
* 根据发票编号查询发票历史记录
*
* @param taxInvoiceCode 发票编号
* @return 结果
*/
FinancialTaxInvoiceHistory selectInvoiceHistoryByInvoiceCode(String taxInvoiceCode);
}

7
ruoyi-admin/src/main/java/com/ruoyi/financial/service/IFinancialReceivablesService.java

@ -1,6 +1,8 @@
package com.ruoyi.financial.service;
import java.util.List;
import java.util.Map;
import com.ruoyi.financial.domain.FinancialReceivables;
/**
@ -87,4 +89,9 @@ public interface IFinancialReceivablesService
* 销售订单审批完成后根据销售单号生成财务应收账款
* */
int generateReceivablesBySalesOrderCode(String salesOrderCode);
/**
* 查询导出收款凭证
*/
Map<String, Object> exportReceivables(FinancialReceivables financialReceivables);
}

14
ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialReceivablesServiceImpl.java

@ -4,7 +4,9 @@ import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.ruoyi.common.exception.BusinessException;
import com.ruoyi.common.utils.DateUtils;
@ -198,6 +200,18 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer
}
@Override
public Map<String, Object> exportReceivables(FinancialReceivables financialReceivables) {
//获取应收账款列表
FinancialReceivables financialReceivablesList = financialReceivablesMapper.selectFinancialReceivablesById(financialReceivables.getFinancialReceivablesId());
FinancialReceivablesRecords financialReceivablesRecords = new FinancialReceivablesRecords();
financialReceivablesRecords.setFinancialReceivablesCode(financialReceivablesList.getFinancialReceivablesCode());
//再获取对应应收账款的收款凭证列表
List<FinancialReceivablesRecords> financialReceivablesRecordsList = receivablesRecordsMapper.selectFinancialReceivablesRecordsList(financialReceivablesRecords);
Map<String, Object> map = new HashMap<>();
return map;
}
/**
* 删除财务应收账款对象

35
ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialTaxInvoiceServiceImpl.java

@ -53,6 +53,7 @@ public class FinancialTaxInvoiceServiceImpl implements IFinancialTaxInvoiceServi
@Autowired
private RedisCache redisCache;
/**
* 查询国税发票
*
@ -263,15 +264,31 @@ public class FinancialTaxInvoiceServiceImpl implements IFinancialTaxInvoiceServi
/**
* 审核国税发票
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int auditInvoiceFinancialTaxInvoice(FinancialTaxInvoice financialTaxInvoice,String taxInvoiceStatus) {
if ("1".equals(taxInvoiceStatus)){
//审核通过
financialTaxInvoice.setTaxInvoiceStatus(taxInvoiceStatus);
return financialTaxInvoiceMapper.updateFinancialTaxInvoice(financialTaxInvoice);
}else {
financialTaxInvoice.setTaxInvoiceStatus(taxInvoiceStatus);
return financialTaxInvoiceMapper.updateFinancialTaxInvoice(financialTaxInvoice);
}
public int auditInvoiceFinancialTaxInvoice(FinancialTaxInvoice financialTaxInvoice, String taxInvoiceStatus) {
String loginName = ShiroUtils.getLoginName();
String taxInvoiceCode = financialTaxInvoice.getTaxInvoiceCode();
FinancialTaxInvoiceHistory invoiceHistory = invoiceHistoryMapper.selectInvoiceHistoryByInvoiceCode(taxInvoiceCode);
invoiceHistory.setUpdateTime(new Date());
invoiceHistory.setUpdateBy(loginName);
financialTaxInvoice.setUpdateTime(new Date());
financialTaxInvoice.setUpdateBy(loginName);
if ("1".equals(taxInvoiceStatus)) {
//审核通过
invoiceHistory.setTaxInvoiceStatus(taxInvoiceStatus);
invoiceHistoryMapper.updateFinancialTaxInvoiceHistory(invoiceHistory);
financialTaxInvoice.setTaxInvoiceStatus(taxInvoiceStatus);
return financialTaxInvoiceMapper.updateFinancialTaxInvoice(financialTaxInvoice);
} else {
//审核拒绝
invoiceHistory.setTaxInvoiceStatus(taxInvoiceStatus);
invoiceHistoryMapper.updateFinancialTaxInvoiceHistory(invoiceHistory);
financialTaxInvoice.setTaxInvoiceStatus(taxInvoiceStatus);
return financialTaxInvoiceMapper.updateFinancialTaxInvoice(financialTaxInvoice);
}
}
}

166
ruoyi-admin/src/main/java/com/ruoyi/remind/controller/RemindController.java

@ -1,13 +1,27 @@
package com.ruoyi.remind.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.remind.domain.Remind;
import com.ruoyi.remind.mapper.RemindMapper;
import com.ruoyi.remind.service.RemindService;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.service.ISysUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -16,23 +30,147 @@ import java.util.Map;
* Created by sunzhenhu on 2021/5/28 10:52
*/
@RequestMapping("/remind")
public class RemindController {
@Controller
public class RemindController extends BaseController {
Logger logger = LoggerFactory.getLogger(getClass());
private String prefix = "remind";
@Autowired
private RemindService remindService;
// @Autowired
// private RemindMapper remindMapper;
@RequestMapping("/getRemindListNoPaging")
@ResponseBody
public List<Remind> getRemindListNoPaging(HttpServletRequest request) {
Map<String, Object> paraMap = new HashMap<String, Object>();
paraMap.put("receiver", ShiroUtils.getLoginName());
paraMap.put("isView", "0");
List<Remind> list = remindService.getRemindListNoPaging(paraMap);
return list;
}
@Autowired
private SysUserMapper userMapper;
@Autowired
private RemindMapper remindMapper;
@GetMapping()
public String remind(ModelMap mmap) {
mmap.put("currentUser", ShiroUtils.getSysUser());
return prefix + "/remind";
}
@GetMapping("/view/{id}")
public String edit(@PathVariable("id")String id, ModelMap mmap) {
System.out.println("id="+id);
mmap.put("id",id);
return prefix + "/view";
}
//
@RequestMapping("/getRemindList")
@ResponseBody
public Map<String, Object> getRemindList(Integer pageIndex, Integer pageSize, HttpServletRequest request) {
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Map<String, Object> paraMap = new HashMap<String, Object>();
// 分页参数
paraMap.put("pageIndex", pageIndex);
paraMap.put("pageSize", pageSize);
// 查询参数
String fromBegin = request.getParameter("fromBegin");
String toEnd = request.getParameter("toEnd");
String vague = request.getParameter("vague");
paraMap.put("fromBegin", fromBegin);
paraMap.put("toEnd", toEnd);
paraMap.put("vague", vague);
if (!SysUser.isAdmin(ShiroUtils.getUserId())) {
paraMap.put("receiver",ShiroUtils.getLoginName());
}
Map<String, Object> result = new HashMap<String, Object>();
List<Remind> list = remindService.getRemindList(paraMap);
for(Remind remind:list) {
SysUser remindUser = userMapper.selectUserByLoginName(remind.getRemind());
remind.setRemindName(remindUser.getUserName());
remind.setRemindDeptName(remindUser.getDept().getDeptName());
SysUser receiver = userMapper.selectUserByLoginName(remind.getReceiver());
remind.setReceiverName(receiver.getUserName());
}
long total = remindService.getRemindTotal(paraMap);
result.put("rows", list);
result.put("total", total);
return result;
}
@RequestMapping("/getRemindListNoPaging")
@ResponseBody
public List<Remind> getRemindListNoPaging(HttpServletRequest request) {
startPage();
Map<String, Object> paraMap = new HashMap<String, Object>();
paraMap.put("receiver",ShiroUtils.getLoginName());
paraMap.put("isView", "0");
paraMap.put("pageIndex", 1);
paraMap.put("pageSize", 11);
List<Remind> list = remindService.getRemindListNoPaging(paraMap);
return list;
}
}
// 结账资料申请单(浦东)主表查询单个对象
@RequestMapping("/getRemind")
@ResponseBody
public Remind getRemind(HttpServletRequest request) {
String id = request.getParameter("id");
Remind mc = remindService.getRemind(id);
SysUser remindUser = userMapper.selectUserByLoginName(mc.getRemind());
mc.setRemindName(remindUser.getUserName());
mc.setRemindDeptName(remindUser.getDept().getDeptName());
return mc;
}
//添
@RequestMapping("/edit")
@ResponseBody
public String edit(HttpServletRequest request) {
String id = request.getParameter("id");
String loginName = ShiroUtils.getLoginName();
Remind remind = remindService.getRemind(id);
if(remind.getReceiver().equals(loginName)) {
Remind remind2 = new Remind();
remind2.setId(Long.parseLong(id));
remind2.setIsView("1");
remindService.edit(remind2);
}
return "success";
}
/**
* 发票申请单 综合管理部节点推送消息给维保部负责人
* @param request
* @return
*/
@RequestMapping("/sendInvoiceRemind")
@ResponseBody
public Map<String,Object> sendInvoiceRemind(HttpServletRequest request){
Map<String,Object> result = new HashMap<String,Object>();
String msg = "";
String gmUserId = request.getParameter("gmUserId");
String keyNo = request.getParameter("keyNo");
String companyNames = request.getParameter("companyNames");
String formName = "发票申请单";
Integer remindCount = remindMapper.getRemindCountByCondi(formName, keyNo);
if(remindCount>0) {
msg = "这笔发票申请单的提醒已推送过维保部负责人,无法重复推送!";
}else {
Remind remind = new Remind();
remind.setRemind(gmUserId);
String wbDeptLeaderId = userMapper.selectUserByUniqueRolekey("wbDeptLeader");
remind.setReceiver(wbDeptLeaderId);
SysUser finance = userMapper.selectUserByLoginName(gmUserId);
remind.setRemindDept(finance.getDeptId()+"");
remind.setRemindDate(DateUtils.getTime());
remind.setFormUrl("invoiceForm/edit/" + keyNo);
remind.setFormName(formName);
remind.setRemindContent("公司名称为["+companyNames+"]的这些公司的发票到了,请来我这里拿发票!!!");
remind.setIsView("0");
int add = remindService.add(remind);
if(add<1) {
msg = "提醒推送失败,请联系系统管理员!";
}else {
msg = "提醒推送成功!";
}
}
result.put("msg", msg);
return result;
}
}

32
ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysSalesOrderController.java

@ -123,41 +123,9 @@ public class SysSalesOrderController extends BaseController
@ResponseBody
public TableDataInfo list(SysSalesOrderVo sysSalesOrderVo)
{
try {
startPage();
List<SysSalesOrderVo> list = sysSalesOrderService.selectSysSalesOrderList(sysSalesOrderVo);
SysUser curUser = ShiroUtils.getSysUser();
String loginName = ShiroUtils.getLoginName();
Long userId = curUser.getUserId();
Set<String> roleKeys = roleService.selectRoleKeys(userId);
List<SysUser> sysUserlist = sysUserService.selectRoleToUserList("ywyRole");
sysUserlist.add(curUser);
if (curUser.getUserName().contains("admin")) {
SysSalesOrderVo sysSalesOrderVo2 = new SysSalesOrderVo();
startPage();
List<SysSalesOrderVo> list2 = sysSalesOrderService.selectSysSalesOrderList(sysSalesOrderVo2);
return getDataTable(list2);
}
//如果主管审批,查看当前自己部门的审核
//如果经理审计需要查询自己部门下所有业务员的提交的订单,以及自身的提交的订单
if (roleKeys.contains("ywjlRole")) {
List<SysUser> findUser = sysUserlist.stream().filter(item -> (item.getDeptId().equals(curUser.getDeptId()))).collect(Collectors.toList());
Set<String> user = findUser.stream().map(SysUser::getLoginName).collect(Collectors.toSet());
startPage();
List<SysSalesOrderVo> list2 = list.stream().filter(item -> user.contains(item.getApplyUser())).collect(Collectors.toList());
return getDataTable(list2);
}
// 业务员角色只能看到自己创建的数据
if (roleKeys.contains("ywyRole")) {
sysSalesOrderVo.setApplyUser(curUser.getLoginName());
startPage();
List<SysSalesOrderVo> list2 = sysSalesOrderService.selectSysSalesOrderList(sysSalesOrderVo);
return getDataTable(list2);
}
return getDataTable(list);
}catch(NullPointerException e){
throw new NullPointerException("当前用户没有申请客户资料");
}
}
/**

11
ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysSalesOrderVo.java

@ -1,6 +1,7 @@
package com.ruoyi.system.domain;
import java.util.Date;
import java.util.List;
public class SysSalesOrderVo extends SysSalesOrder{
/** 申请人姓名 */
@ -19,8 +20,18 @@ public class SysSalesOrderVo extends SysSalesOrder{
private String todoUserId;
/** 流程实例类型名称 */
private String instanceTypeName;
/*上级经理和所属业务员*/
private List<String> applyUsers;
public List<String> getApplyUsers() {
return applyUsers;
}
public void setApplyUsers(List<String> applyUsers) {
this.applyUsers = applyUsers;
}
/**
* 关键词
*/

8
ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysSalesOrderMapper.java

@ -30,6 +30,14 @@ public interface SysSalesOrderMapper
*/
public List<SysSalesOrderVo> selectSysSalesOrderList(SysSalesOrderVo sysSalesOrderVo);
/**
* 查询销售订单列表(根据经理的部门)
*
* @param sysSalesOrderVo 销售订单
* @return 销售订单集合
*/
public List<SysSalesOrderVo> selectSysSalesOrderByMange(SysSalesOrderVo sysSalesOrderVo);
/**
* 新增销售订单
*

29
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesOrderServiceImpl.java

@ -30,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
* 销售订单Service业务层处理
@ -81,6 +82,8 @@ public class SysSalesOrderServiceImpl implements ISysSalesOrderService
@Autowired
private IWarehouseOutOrderService warehouseOutOrderService;
@Autowired
private ISysUserService sysUserService;
/**
* 查询销售订单
@ -122,9 +125,28 @@ public class SysSalesOrderServiceImpl implements ISysSalesOrderService
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
SysUser curUser = ShiroUtils.getSysUser();
String loginName = ShiroUtils.getLoginName();
Long userId = curUser.getUserId();
List<SysSalesOrderVo> returnList = new ArrayList<>();
//PageHelper 仅对第一List分页有效
Page<SysSalesOrderVo> list = (Page<SysSalesOrderVo>) sysSalesOrderMapper.selectSysSalesOrderList(sysSalesOrderVo1);
Page<SysSalesOrderVo> returnList = new Page<>();
List<SysSalesOrderVo> list =sysSalesOrderMapper.selectSysSalesOrderList(sysSalesOrderVo1);
Set<String> roleKeys = roleService.selectRoleKeys(userId);
List<SysUser> sysUserlist = sysUserService.selectRoleToUserList("ywyRole");
sysUserlist.add(curUser);
//如果主管审批,查看当前自己部门的审核
//如果经理审计需要查询自己部门下所有业务员的提交的订单,以及自身的提交的订单
if (roleKeys.contains("ywjlRole")) {
List<SysUser> findUser = sysUserlist.stream().filter(item -> (item.getDeptId().equals(curUser.getDeptId()))).collect(Collectors.toList());
List<String> user = findUser.stream().map(SysUser::getLoginName).collect(Collectors.toList());
String userStr = String.join(",", user);
sysSalesOrderVo1.setApplyUsers(user);
list = sysSalesOrderMapper.selectSysSalesOrderList(sysSalesOrderVo1);
}
if (roleKeys.contains("ywyRole")) {
sysSalesOrderVo1.setApplyUser(curUser.getLoginName());
list = list.stream().filter(item -> item.getApplyUser().equals(curUser.getLoginName())).collect(Collectors.toList());
}
for(SysSalesOrderVo sysSalesOrderVo : list){
SysUser sysUser = userMapper.selectUserByLoginName(sysSalesOrderVo.getCreateBy());
if (sysUser != null) {
@ -166,9 +188,6 @@ public class SysSalesOrderServiceImpl implements ISysSalesOrderService
}
returnList.add(sysSalesOrderVo);
}
returnList.setTotal(CollectionUtils.isEmpty(list) ? 0 : list.getTotal());
returnList.setPageNum(pageNum);
returnList.setPageSize(pageSize);
return returnList;
}

BIN
ruoyi-admin/src/main/resources/FinancialReceiptVoucherTemplate.xlsx

Binary file not shown.

0
ruoyi-admin/src/main/resources/attachments/test.docx

60
ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesMapper.xml

@ -5,34 +5,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<mapper namespace="com.ruoyi.financial.mapper.FinancialReceivablesMapper">
<resultMap type="FinancialReceivables" id="FinancialReceivablesResult">
<result property="financialReceivablesId" column="financial_receivables_id" />
<result property="financialReceivablesCode" column="financial_receivables_code" />
<result property="receivablesClosingStatus" column="receivables_closing_status" />
<result property="salesOrderCode" column="sales_order_code" />
<result property="creditAccount" column="credit_account" />
<result property="creditDetail" column="credit_detail" />
<result property="openBank" column="open_bank" />
<result property="openAccount" column="open_account" />
<result property="customerId" column="customer_id" />
<result property="customerName" column="customer_name" />
<result property="contractNumber" column="contract_number" />
<result property="currencyType" column="currency_type" />
<result property="priceExcludingTax" column="price_excluding_tax" />
<result property="priceIncludesTax" column="price_includes_tax" />
<result property="paymentCondition" column="payment_condition" />
<result property="receivedIncludesTax" column="received_includes_tax" />
<result property="notReceivedIncludesTax" column="not_received_includes_tax" />
<result property="businessMembers" column="business_members" />
<result property="financialDeliverStatus" column="financial_deliver_status" />
<result property="receivablesDate" column="receivables_date" />
<result property="receivablesPrice" column="receivables_price" />
<result property="receivablesAbstract" column="receivables_abstract" />
<result property="operatingTime" column="operating_time" />
<result property="receivablesRemark" column="receivables_remark" />
<result property="createTime" column="create_time" />
<result property="createBy" column="create_by" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="financialReceivablesId" column="financial_receivables_id" />
<result property="financialReceivablesCode" column="financial_receivables_code" />
<result property="receivablesClosingStatus" column="receivables_closing_status" />
<result property="salesOrderCode" column="sales_order_code" />
<result property="debitAccount" column="debit_account" />
<result property="creditAccount" column="credit_account" />
<result property="creditDetail" column="credit_detail" />
<result property="openBank" column="open_bank" />
<result property="openAccount" column="open_account" />
<result property="customerId" column="customer_id" />
<result property="customerName" column="customer_name" />
<result property="contractNumber" column="contract_number" />
<result property="currencyType" column="currency_type" />
<result property="priceExcludingTax" column="price_excluding_tax" />
<result property="priceIncludesTax" column="price_includes_tax" />
<result property="paymentCondition" column="payment_condition" />
<result property="receivedIncludesTax" column="received_includes_tax" />
<result property="notReceivedIncludesTax" column="not_received_includes_tax" />
<result property="businessMembers" column="business_members" />
<result property="financialDeliverStatus" column="financial_deliver_status" />
<result property="receivablesDate" column="receivables_date" />
<result property="receivablesPrice" column="receivables_price" />
<result property="receivablesAbstract" column="receivables_abstract" />
<result property="operatingTime" column="operating_time" />
<result property="receivablesRemark" column="receivables_remark" />
<result property="createTime" column="create_time" />
<result property="createBy" column="create_by" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectFinancialReceivablesVo">
@ -70,6 +71,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="financialReceivablesCode != null">financial_receivables_code,</if>
<if test="receivablesClosingStatus != null">receivables_closing_status,</if>
<if test="salesOrderCode != null">sales_order_code,</if>
<if test="creditAccount != null">debit_account,</if>
<if test="creditAccount != null">credit_account,</if>
<if test="creditDetail != null">credit_detail,</if>
<if test="openBank != null">open_bank,</if>
@ -99,6 +101,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="financialReceivablesCode != null">#{financialReceivablesCode},</if>
<if test="receivablesClosingStatus != null">#{receivablesClosingStatus},</if>
<if test="salesOrderCode != null">#{salesOrderCode},</if>
<if test="creditAccount != null">#{debitAccount},</if>
<if test="creditAccount != null">#{creditAccount},</if>
<if test="creditDetail != null">#{creditDetail},</if>
<if test="openBank != null">#{openBank},</if>
@ -132,6 +135,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="financialReceivablesCode != null">financial_receivables_code = #{financialReceivablesCode},</if>
<if test="receivablesClosingStatus != null">receivables_closing_status = #{receivablesClosingStatus},</if>
<if test="salesOrderCode != null">sales_order_code = #{salesOrderCode},</if>
<if test="creditAccount != null">debit_account = #{debitAccount},</if>
<if test="creditAccount != null">credit_account = #{creditAccount},</if>
<if test="creditDetail != null">credit_detail = #{creditDetail},</if>
<if test="openBank != null">open_bank = #{openBank},</if>

5
ruoyi-admin/src/main/resources/mapper/financial/FinancialTaxInvoiceHistoryMapper.xml

@ -44,6 +44,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where sales_order_code = #{salesOrderCode}
</select>
<select id="selectInvoiceHistoryByInvoiceCode" parameterType="String" resultMap="FinancialTaxInvoiceHistoryResult">
<include refid="selectFinancialTaxInvoiceHistoryVo"/>
where tax_invoice_code = #{taxInvoiceCode}
</select>
<insert id="insertFinancialTaxInvoiceHistory" parameterType="FinancialTaxInvoiceHistory" useGeneratedKeys="true" keyProperty="invoiceHistoryId">
insert into financial_tax_invoice_history
<trim prefix="(" suffix=")" suffixOverrides=",">

12
ruoyi-admin/src/main/resources/mapper/system/SysSalesOrderMapper.xml

@ -129,10 +129,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="applyUser != null and applyUser != ''"> and s.apply_user = #{applyUser}</if>
<if test="applyTime != null and applyTime != ''"> and s.apply_time = #{applyTime}</if>
<if test="applyTitle != null and applyTitle != ''"> and s.apply_title = #{applyTitle}</if>
<if test="applyUsers != null and applyUsers != ''"> and s.apply_user in
<foreach item="user" index="index" collection="applyUsers" open="(" separator="," close=")">
#{user}
</foreach>
</if>
</where>
order by s.audit_status asc, s.create_time desc
order by s.create_time desc
</select>
<select id="selectSysSalesOrderById" parameterType="Long" resultMap="SysSalesOrderResult">
<include refid="selectSysSalesOrderVo"/>
where sales_order_id = #{salesOrderId}
@ -203,6 +207,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="applyTime != null">apply_time,</if>
<if test="applyTitle != null">apply_title,</if>
<if test="createTime!= null">create_time,</if>
<if test="createBy != null">create_by,</if>
first_add_time,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
@ -264,6 +269,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="applyTime != null">#{applyTime},</if>
<if test="applyTitle != null">#{applyTitle},</if>
<if test="createTime!= null">#{createTime},</if>
<if test="creatBy != null">#{creatBy},</if>
now()
</trim>
</insert>
@ -330,6 +336,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="applyTime != null">apply_time = #{applyTime},</if>
<if test="applyTitle != null">apply_title = #{applyTitle},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
update_info_time = now()
</trim>
where sales_order_id = #{salesOrderId}
@ -398,6 +405,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="applyTime != null">apply_time = #{applyTime},</if>
<if test="applyTitle != null">apply_title = #{applyTitle},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
</trim>
where sales_order_code = #{salesOrderCode}
</update>

9
ruoyi-admin/src/main/resources/static/ruoyi/css/ry-ui.css

@ -1242,3 +1242,12 @@ table.rc-table-resizing thead > th > a {
:-ms-input-placeholder {
color: #b3b3b3!important;
}
.v-modal {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
opacity: .5;
/* background:#000; */
}

2
ruoyi-admin/src/main/resources/templates/financial/receivables/addFinancialReceivables.html

@ -31,7 +31,7 @@
<input name="openAccount" class="form-control" type="text">
</div>
</div>
<div class="form-group"><label class="col-sm-3 control-label">币种:</label>
<div class="form-group"><label class="col-sm-3 control-label is-required">收款币种:</label>
<div class="col-sm-8">
<div class="radio-box" th:each="dict : ${@dict.getType('sys_common_currency')}">
<input type="radio"

110
ruoyi-admin/src/main/resources/templates/financial/receivables/addReceivablesVoucher.html

@ -15,6 +15,15 @@
<input name="financialReceivablesCode" th:field="*{financialReceivablesCode}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">借方科目:</label>
<div class="col-sm-8">
<select name="debitAccount" th:field="*{debitAccount}" class="form-control" th:with="type=${@dict.getType('receivables_debit_entry')}">
<option value=""></option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{debitAccount}"></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">收款状态:</label>
<div class="col-sm-8">
@ -44,7 +53,11 @@
<div class="form-group">
<label class="col-sm-3 control-label">开户银行:</label>
<div class="col-sm-8">
<input name="openBank" th:field="*{openBank}" class="form-control" type="text">
<select name="openBank" th:field="*{openBank}" class="form-control" th:with="type=${@dict.getType('receivables_bank')}">
<option value=""></option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{openBank}"></option>
</select>
<!-- <input name="openBank" th:field="*{openBank}" class="form-control" type="text" readonly>-->
</div>
</div>
<div class="form-group">
@ -53,13 +66,13 @@
<input name="openAccount" th:field="*{openAccount}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<div class="form-group" hidden="hidden">
<label class="col-sm-3 control-label">客户ID:</label>
<div class="col-sm-8">
<input name="customerId" th:field="*{customerId}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<div class="form-group" hidden="hidden">
<label class="col-sm-3 control-label">合同编号:</label>
<div class="col-sm-8">
<input name="contractNumber" th:field="*{contractNumber}" class="form-control" type="text" readonly>
@ -92,6 +105,12 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">已收金额:</label>
<div class="col-sm-8">
<input name="paymentCond" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group" hidden="hidden">
<label class="col-sm-3 control-label">发货状态:</label>
<div class="col-sm-8">
<select name="financialDeliverStatus" class="form-control m-b" th:with="type=${@dict.getType('financial_deliver_status')}" readonly disabled>
@ -99,7 +118,7 @@
</select>
</div>
</div>
<div class="form-group">
<div class="form-group" hidden="hidden">
<label class="col-sm-3 control-label">业务员:</label>
<div class="col-sm-8">
<input name="businessMembers" th:field="*{businessMembers}" class="form-control" type="text" readonly>
@ -142,9 +161,7 @@
<script th:inline="javascript">
var financialReceivables = [[${financialReceivables}]];
var prefix = ctx + "financial/receivables";
$("#form-receivables-edit").validate({
focusCleanup: true
});
$("#form-receivables-edit").validate({focusCleanup: true});
function submitHandler() {
// 获取表单数据
@ -208,35 +225,17 @@
showSearch:false,
queryParams:queryParams,
columns: [
{
title: '财务应收账款记录id',
field: 'receivablesRecordsId',
visible: false
},
{
title: '操作时间',
field: 'operatingTime',
},
{
title: '摘要',
field: 'receivablesAbstract',
},
{
title: '收款金额',
field: 'receivablesPrice',
{title: '财务应收账款记录id', field: 'receivablesRecordsId', visible: false},
{title: '操作时间', field: 'operatingTime',},
{title: '摘要', field: 'receivablesAbstract',},
{title: '收款金额', field: 'receivablesPrice',
formatter: function(value, row, index) {
// 格式化收款金额为保留两位小数的字符串
return parseFloat(value).toFixed(2);
}
},
{
title: '收款日期',
field: 'receivablesDate',
},
{
title: '收款备注',
field: 'receivablesRemark',
},
{title: '收款日期', field: 'receivablesDate',},
{title: '收款备注', field: 'receivablesRemark',},
]
};
$.table.init(options);
@ -277,47 +276,22 @@
showRefresh:false,
showSearch:false,
singleSelect:true,
columns: [{
checkbox: false
},
{
title: '财务应收账款记录id',
field: 'receivablesRecordsId',
visible: false
},
{
title: '收款日期',
field: 'receivablesDate',
editable : {
type: 'date',
clear: false,
title: '请选择日期:'
}
columns: [
{checkbox: false},
{title: '财务应收账款记录id', field: 'receivablesRecordsId', visible: false},
{title: '收款日期', field: 'receivablesDate',
editable : {type: 'date', clear: false, title: '请选择日期:'}
},
{
title: '收款金额',
field: 'receivablesPrice',
editable: {
type: 'text', // 表示该列可以被编辑为文本
},
{title: '收款金额', field: 'receivablesPrice',
editable: {type: 'text',},
},
{
title: '收款摘要',
field: 'receivablesAbstract',
editable: {
type: 'text', // 表示该列可以被编辑为文本
},
{title: '收款摘要', field: 'receivablesAbstract',
editable: {type: 'text',},
},
{
title: '收款备注',
field: 'receivablesRemark',
editable: {
type: 'text', // 表示该列可以被编辑为文本
},
{title: '收款备注', field: 'receivablesRemark',
editable: {type: 'text', },
},
{
title: '操作',
align: 'center',
{title: '操作', align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="removeRow(\'' + row.receivablesRecordsId + '\')"><i class="fa fa-remove"></i>删除</a> ');

82
ruoyi-admin/src/main/resources/templates/financial/receivables/addReceivablesVoucherNoSales.html

@ -15,6 +15,15 @@
<input name="financialReceivablesCode" th:field="*{financialReceivablesCode}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">借方科目:</label>
<div class="col-sm-8">
<select name="debitAccount" th:field="*{debitAccount}" class="form-control" th:with="type=${@dict.getType('receivables_debit_entry')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{debitAccount}"></option>
</select>
<!-- <input name="openBank" th:field="*{openBank}" class="form-control" type="text" readonly>-->
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">收款状态:</label>
<div class="col-sm-8">
@ -38,7 +47,10 @@
<div class="form-group">
<label class="col-sm-3 control-label">开户银行:</label>
<div class="col-sm-8">
<input name="openBank" th:field="*{openBank}" class="form-control" type="text" readonly>
<select name="openBank" th:field="*{openBank}" class="form-control" th:with="type=${@dict.getType('receivables_bank')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{openBank}"></option>
</select>
<!-- <input name="openBank" th:field="*{openBank}" class="form-control" type="text" readonly>-->
</div>
</div>
<div class="form-group">
@ -47,7 +59,7 @@
<input name="openAccount" th:field="*{openAccount}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<div class="form-group" hidden="hidden">
<label class="col-sm-3 control-label">合同编号:</label>
<div class="col-sm-8">
<input name="contractNumber" th:field="*{contractNumber}" class="form-control" type="text" readonly>
@ -79,6 +91,12 @@
<input name="paymentCondition" th:field="*{paymentCondition}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">已收金额:</label>
<div class="col-sm-8">
<input name="remarks" class="form-control" type="text" readonly>
</div>
</div>
</form>
<div class="container">
<!-- 收款记录 -->
@ -116,10 +134,7 @@
<script th:inline="javascript">
var financialReceivables = [[${financialReceivables}]];
var prefix = ctx + "financial/receivables";
$("#form-receivables-edit").validate({
focusCleanup: true
});
$("#form-receivables-edit").validate({focusCleanup: true});
function submitHandler() {
// 获取表单数据
const financialReceivablesData = $("#form-receivables-edit").serializeArray().reduce((obj, item) => {
@ -153,20 +168,6 @@
$.operate.saveJson(prefix + "/addReceivablesVoucherNoSales", jsonData);
}
$("input[name='receivablesDate']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='operatingTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
/*根据收款编号对应的收款明细*/
$(function() {
var options = {
@ -239,31 +240,12 @@
showRefresh:false,
showSearch:false,
singleSelect:true,
columns: [{
checkbox: false
},
{
title: '财务应收账款记录id',
field: 'receivablesRecordsId',
visible: false
},
{
title: '收款摘要',
field: 'receivablesAbstract',
editable: {
type: 'text', // 表示该列可以被编辑为文本
},
},
{
title: '收款金额',
field: 'receivablesPrice',
editable: {
type: 'text', // 表示该列可以被编辑为文本
},
},
{
title: '操作',
align: 'center',
columns: [
{checkbox: false},
{title: '财务应收账款记录id', field: 'receivablesRecordsId', visible: false},
{title: '收款摘要', field: 'receivablesAbstract', editable: {type: 'text',},},
{title: '收款金额', field: 'receivablesPrice', editable: {type: 'text',},},
{title: '操作', align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="removeRow(\'' + row.receivablesRecordsId + '\')"><i class="fa fa-remove"></i>删除</a> ');
@ -285,6 +267,16 @@
values: receivablesRecordsId
});
}
$("input[name='operatingTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='receivablesDate']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
</script>
</body>
</html>

160
ruoyi-admin/src/main/resources/templates/financial/receivables/receivables.html

@ -72,9 +72,9 @@
</li>
<li class="select-time">
<label>上次更新时间:</label>
<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginUpdateTime]"/>
<input type="text" class="time-input" id="startTime1" placeholder="开始时间" name="params[beginUpdateTime]"/>
<span>-</span>
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endUpdateTime]"/>
<input type="text" class="time-input" id="endTime1" placeholder="结束时间" name="params[endUpdateTime]"/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
@ -89,6 +89,9 @@
<a class="btn btn-success" onclick="addFinancialReceivables()" shiro:hasPermission="financial:receivables:add">
<i class="fa fa-plus"></i> 添加应收账款
</a>
<a class="btn btn-warning" onclick="exportReceivablesVoucher()" shiro:hasPermission="financial:receivables:export">
<i class="fa fa-download"></i> 导出收款凭证
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="financial:receivables:export">
<i class="fa fa-download"></i> 导出应收账单
</a>
@ -108,7 +111,6 @@
var currencyTypeDatas = [[${@dict.getType('sys_common_currency')}]];
var financialDeliverStatusDatas = [[${@dict.getType('financial_deliver_status')}]];
var prefix = ctx + "financial/receivables";
$(function() {
var options = {
url: prefix + "/list",
@ -119,116 +121,41 @@
restoreUrl: prefix + "/restore/{id}",
exportUrl: prefix + "/export",
modalName: "财务应收账款",
columns: [{
checkbox: true
},
{
title: '财务应收账款id',
field: 'financialReceivablesId',
visible: false
},
{
title: '应收单号',
field: 'financialReceivablesCode',
},
{
title: '收款结案状态',
field: 'receivablesClosingStatus',
formatter: function(value, row, index) {
return $.table.selectDictLabel(receivablesClosingStatusDatas, value);
}
},
{
title: '关联单号',
field: 'salesOrderCode',
},
{
title: '贷方科目',
field: 'creditAccount',
},
{
title: '贷方明细',
field: 'creditDetail',
},
{
title: '开户银行',
field: 'openBank',
},
{
title: '开户账号',
field: 'openAccount',
},
{
title: '客户ID',
field: 'customerId',
},
{
title: '合同编号',
field: 'contractNumber',
},
{
title: '币种',
field: 'currencyType',
formatter: function(value, row, index) {
return $.table.selectDictLabel(currencyTypeDatas, value);
}
},
{
title: '不含税金额',
field: 'priceExcludingTax',
},
{
title: '含税金额',
field: 'priceIncludesTax',
},
{
title: '付款条件',
field: 'paymentCondition',
},
{
title: '实收含税金额',
field: 'receivedIncludesTax',
},
{
title: '未收含税金额',
field: 'notReceivedIncludesTax',
},
{
title: '业务员',
field: 'businessMembers',
},
{
title: '发货状态',
field: 'financialDeliverStatus',
formatter: function(value, row, index) {
return $.table.selectDictLabel(financialDeliverStatusDatas, value);
}
},
{
title: '录入时间',
field: 'createTime',
},
{
title: '更新人',
field: 'updateBy',
},
{
title: '上次更新时间',
field: 'updateTime',
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + addReceivablesVoucherFlag + '" href="javascript:void(0)" onclick="addReceivablesVoucher(\'' + row.financialReceivablesId + '\')"><i class="fa fa-edit"></i>创建收款凭证</a> ');
if (row.receivablesClosingStatus !== '2') {
actions.push('<a class="btn btn-success btn-xs ' + closingFlag + '" href="javascript:void(0)" onclick="confirmAndClose(\'' + row.financialReceivablesId + '\')"><i class="fa fa-edit"></i>结案</a> ');
columns: [
{checkbox: true},
{title: '财务应收账款id', field: 'financialReceivablesId', visible: false},
{title: '应收单号', field: 'financialReceivablesCode',},
{title: '收款结案状态', field: 'receivablesClosingStatus', formatter: function(value, row, index) {return $.table.selectDictLabel(receivablesClosingStatusDatas, value);}},
{title: '关联单号', field: 'salesOrderCode',},
{title: '贷方科目', field: 'creditAccount',},
{title: '贷方明细', field: 'creditDetail',},
{title: '开户银行', field: 'openBank',},
{title: '开户账号', field: 'openAccount',},
{title: '客户ID', field: 'customerId',},
{title: '合同编号', field: 'contractNumber',},
{title: '币种', field: 'currencyType', formatter: function(value, row, index) {return $.table.selectDictLabel(currencyTypeDatas, value);}},
{title: '不含税金额', field: 'priceExcludingTax',},
{title: '含税金额', field: 'priceIncludesTax',},
{title: '付款条件', field: 'paymentCondition',},
{title: '实收含税金额', field: 'receivedIncludesTax',},
{title: '未收含税金额', field: 'notReceivedIncludesTax',},
{title: '业务员', field: 'businessMembers',},
{title: '发货状态', field: 'financialDeliverStatus', formatter: function(value, row, index) {return $.table.selectDictLabel(financialDeliverStatusDatas, value);}},
{title: '录入时间', field: 'createTime',},
{title: '更新人', field: 'updateBy',},
{title: '上次更新时间', field: 'updateTime',},
{title: '操作', align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + addReceivablesVoucherFlag + '" href="javascript:void(0)" onclick="addReceivablesVoucher(\'' + row.financialReceivablesId + '\')"><i class="fa fa-edit"></i>创建收款凭证</a> ');
if (row.receivablesClosingStatus !== '2') {
actions.push('<a class="btn btn-success btn-xs ' + closingFlag + '" href="javascript:void(0)" onclick="confirmAndClose(\'' + row.financialReceivablesId + '\')"><i class="fa fa-edit"></i>结案</a> ');
}
actions.push('<a class="btn btn-success btn-xs ' + receivablesVoucherDetailFlag + '" href="javascript:void(0)" onclick="receivablesVoucherDetail(\'' + row.financialReceivablesId + '\')"><i class="fa fa-edit"></i>详情</a> ');
return actions.join('');
}
actions.push('<a class="btn btn-success btn-xs ' + receivablesVoucherDetailFlag + '" href="javascript:void(0)" onclick="receivablesVoucherDetail(\'' + row.financialReceivablesId + '\')"><i class="fa fa-edit"></i>详情</a> ');
return actions.join('');
}
}]
]
};
$.table.init(options);
});
@ -286,6 +213,17 @@
}
});
}
//导出应收款账单收款凭证,单个导出
function exportReceivablesVoucher() {
var bootstrpa = $("#bootstrap-table").bootstrapTable('getSelections');
var financialReceivablesId = bootstrpa[0].financialReceivablesId;
if (bootstrpa.length !== 1) {
$.modal.alertWarning("请选择一条数据");
return;
}
window.location.href = ctx + "financial/receivables/excelReceivablesVoucher/" + financialReceivablesId;
}
</script>
</body>
</html>

8
ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceRMB.html

@ -314,14 +314,6 @@
title: '物料的不含税单价(RMB)',
field: 'noTaxRmb',
},
{
title: '物料的含税单价(美元)',
field: 'taxUsd',
},
{
title: '物料的不含税单价(美元)',
field: 'noTaxUsd',
},
{
title: '已出库数量',
field: 'outBoundQuantity',

337
ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceUSD.html

@ -0,0 +1,337 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('审核国税发票')" />
<th:block th:include="include :: datetimepicker-css" />
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-taxInvoice-auditRmb" th:object="${taxInvoice}">
<input name="taxInvoiceId" th:field="*{taxInvoiceId}" type="hidden">
<div class="form-group">
<label class="col-sm-5 control-label">发票单号:</label>
<div class="col-sm-7">
<input name="taxInvoiceCode" th:field="*{taxInvoiceCode}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">销售订单编号:</label>
<div class="col-sm-7">
<input name="salesOrderCode" th:field="*{salesOrderCode}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">订单类型:</label>
<div class="col-sm-7">
<select name="salesOrderType" class="form-control m-b" th:with="type=${@dict.getType('sys_order_type')}" readonly>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{salesOrderType}"></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">报价币种:</label>
<div class="col-sm-7">
<select name="commonCurrency" class="form-control m-b" th:with="type=${@dict.getType('sys_common_currency')}" readonly>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{commonCurrency}"></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">客户代码/ID:</label>
<div class="col-sm-7">
<input name="enterpriseCode" th:field="*{enterpriseCode}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">客户名称:</label>
<div class="col-sm-7">
<input name="enterpriseName" th:field="*{enterpriseName}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">联系电话:</label>
<div class="col-sm-7">
<input name="contactNumber" th:field="*{contactNumber}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">公司地址:</label>
<div class="col-sm-7">
<input name="enterpriseAddress" th:field="*{enterpriseAddress}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">开票公司名称:</label>
<div class="col-sm-7">
<input name="invoiceCompanyName" th:field="*{invoiceCompanyName}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">开票公司税号:</label>
<div class="col-sm-7">
<input name="invoiceCompanyCode" th:field="*{invoiceCompanyCode}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">公司开户行:</label>
<div class="col-sm-7">
<input name="depositBank" th:field="*{depositBank}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">公司开户账号:</label>
<div class="col-sm-7">
<input name="bankAccount" th:field="*{bankAccount}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">税率:</label>
<div class="col-sm-7">
<div class="input-group">
<input name="taxRate" th:field="*{taxRate}" class="form-control" type="text" readonly>
<span class="input-group-addon">%</span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label is-required" >发票种类:</label>
<div class="col-sm-7">
<div class="radio-box" th:each="dict : ${@dict.getType('tax_invoice_class')}">
<input type="radio" th:id="${'taxInvoiceClass_' + dict.dictCode}" name="taxInvoiceClass" th:value="${dict.dictValue}" th:field="*{taxInvoiceClass}" disabled>
<label th:for="${'taxInvoiceClass_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label is-required">发票类型:</label>
<div class="col-sm-7">
<div class="radio-box" th:each="dict : ${@dict.getType('tax_invoice_type')}">
<input type="radio" th:id="${'taxInvoiceType_' + dict.dictCode}" name="taxInvoiceType" th:value="${dict.dictValue}" th:field="*{taxInvoiceType}" disabled>
<label th:for="${'taxInvoiceType_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label is-required">发票抬头:</label>
<div class="col-sm-7">
<div class="radio-box" th:each="dict : ${@dict.getType('tax_invoice_title')}">
<input type="radio" th:id="${'taxInvoiceTitle_' + dict.dictCode}" name="taxInvoiceTitle" th:value="${dict.dictValue}" th:field="*{taxInvoiceTitle}" disabled>
<label th:for="${'taxInvoiceTitle_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">邮箱:</label>
<div class="col-sm-7">
<input name="invoiceEmail" th:field="*{invoiceEmail}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">业务备注:</label>
<div class="col-sm-7">
<input name="businessRemark" th:field="*{businessRemark}" class="form-control" type="text" readonly>
</div>
</div>
<div class="container">
<div class="row">
<h4 class="font-weight-bold">开票物料</h4>
</div>
<div class="row">
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table-material"></table>
</div>
</div>
</div>
<div class="container">
<div class="row">
<h4 class="font-weight-bold">开票额度</h4>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">不含税总价(美元):</label>
<div class="col-sm-7">
<input name="noUsdSum" th:field="*{noUsdSum}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">含税总价(美元):</label>
<div class="col-sm-7">
<input name="usdTaxSum" th:field="*{usdTaxSum}" class="form-control" type="text" id="usdTaxSumInput" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">物料数合计:</label>
<div class="col-sm-7">
<input name="materialSum" th:field="*{materialSum}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">数量合计:</label>
<div class="col-sm-7">
<input name="enterpriseSum" th:field="*{enterpriseSum}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">开票额度比例:</label>
<div class="col-sm-7">
<div class="input-group">
<input name="invoiceQuotaRatio" th:field="*{invoiceQuotaRatio}" class="form-control" type="text" id="invoiceQuotaRatioInput" readonly>
<span class="input-group-addon">%</span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">开票金额(美元):</label>
<div class="col-sm-7">
<input name="invoiceAmountUsd" th:field="*{invoiceAmountUsd}" class="form-control" type="text" id="invoiceAmountUsdInput" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">开票用途:</label>
<div class="col-sm-7">
<input name="invoicePurpose" th:field="*{invoicePurpose}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">备注:</label>
<div class="col-sm-7">
<input name="remark" th:field="*{remark}" class="form-control" type="text">
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" />
<script th:inline="javascript">
var materialProcessMethodDatas = [[${@dict.getType('processMethod')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
var taxInvoiceStatusDatas = [[${@dict.getType('tax_invoice_status')}]];
var taxInvoice = [[${taxInvoice}]];
var prefix = ctx + "financial/taxInvoice";
$("#form-taxInvoice-auditRmb").validate({
focusCleanup: true
});
// function submitHandler() {
//
//
// $.operate.save(prefix + "/auditRmb", $('#form-taxInvoice-auditRmb').serialize());
// }
//开票物料
$(function() {
var options = {
id: 'bootstrap-table-material',
url: prefix + "/getInvoiceMaterialListByCode",
queryParams: function(params) {
return {
taxInvoiceCode: $("#taxInvoiceCode").val(),
}
},
showSearch: false,
showRefresh: false,
showToggle: false,
showColumns: false,
pagination: false, // 设置不分页
modalName: "国税发票物料",
columns: [{
checkbox: true
},
{
title: '国税发票物料ID',
field: 'invoiceMaterialId',
visible: false
},
{
title: '物料编号',
field: 'materialCode',
},
{
title: '物料名称',
field: 'materialName',
},
{
field: 'materialType',
title: '物料类型',
formatter: function(value, row, index) {
return $.table.selectCategoryLabel(materialTypeDatas, value);
}
},
{
title: '物料加工方式',
field: 'materialProcessMethod',
formatter: function(value, row, index) {
return $.table.selectDictLabel(materialProcessMethodDatas, value);
}
},
{
title: '物料品牌',
field: 'materialBrand',
},
{
title: '物料图片',
field: 'materialPhotourl',
},
{
title: '物料单位',
field: 'materialUnit',
},
{
title: '物料描述',
field: 'materialDescribe',
},
{
title: '物料的数量',
field: 'materialNum',
},
{
title: '物料的含税单价(美元)',
field: 'taxUsd',
},
{
title: '物料的不含税单价(美元)',
field: 'noTaxUsd',
},
{
title: '已出库数量',
field: 'outBoundQuantity',
},
{
title: '已验收数',
field: 'hasCheckNum',
},
{
title: '退货数',
field: 'refundsNum',
}]
};
$.table.init(options);
});
</script>
</body>
</html>

299
ruoyi-admin/src/main/resources/templates/index.html

@ -9,7 +9,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- <link th:href="@{favicon.ico}" rel="shortcut icon"/>-->
<link rel="icon" href="../static/img/favicon.ico" type="image/x-icon" th:href="@{/img/favicon.ico}">
<link href="/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
<link href="../static/css/bootstrapv4/bootstrap.min.css" th:href="@{/css/bootstrapv4/bootstrap.min.css}"
rel="stylesheet"/>
<link th:href="@{/css/jquery.contextMenu.min.css}" rel="stylesheet"/>
@ -142,7 +141,7 @@
<div class="noti-head">
<h6 class="d-inline-block m-b-0">待办任务</h6>
<div class="float-right">
<h8>你有<strong id="todoSize"></strong>任务</h8>
<h6>你有<strong id="todoSize"></strong>任务</h6>
<!-- <a href="javascript:;" onclick="viewAllTasks();">查看全部</a>-->
</div>
</div>
@ -151,7 +150,7 @@
<!-- <li class="n-title"><p class="m-b-0">更早时候</p></li>-->
</ul>
<div class="noti-footer">
<a href="javascript:" onclick="viewAllTasks();">查看全部</a>
<a href="javascript:">查看全部</a>
</div>
</div>
</div>
@ -168,16 +167,15 @@
<div class="float-right">
<h8>你有<strong id="remindSize"></strong>提醒</h8>
<!-- <a href="javascript:" class="m-r-10">已读</a>-->
<!-- <a href="javascript:">清除全部</a>-->
</div>
</div>
<ul class="noti-body" id="remindList">
<ul class="noti-body" id="remindList" style="height: 300px;overflow-y: scroll">
<li class="n-title"><p class="m-b-0">新的提醒</p></li>
<!-- <li class="n-title"><p class="m-b-0">更早之前</p></li>-->
</ul>
<div class="noti-footer">
<a href="javascript:">查看全部</a>
<a href="/remind"><i class="feather icon-bell"></i>查看全部</a>
</div>
</div>
</div>
@ -199,11 +197,11 @@
</div>
<ul class="pro-body">
<!--<li><a href="javascript:" class="dropdown-item menuItem"><i class="feather icon-settings"></i>个人中心</a></li>-->
<li><a href="javascript:" onclick="viewMyProfile()" class="dropdown-item menuItem"><i class="feather icon-user"></i>个人中心</a></li>
<li><a href="javascript:" onclick="viewAllRequestItem()" class="dropdown-item menuItem"><i class="feather icon-mail"></i>我的请求</a></li>
<li><a href="javascript:" onclick="viewAllRemind()" class="dropdown-item menuItem"><i class="feather icon-bell"></i>我的提醒</a></li>
<li><a href="javascript:;" onclick="viewAllTasks()" class="dropdown-item menuItem" id="todoBadge2"><i class="feather icon-rocket"></i>我的待办</a></li>
<li><a href="javascript:;" onclick="viewAllDoneTasks()" class="dropdown-item menuItem" id="todoBadge3"><i class="feather icon-rocket"></i>我的已办</a></li>
<li><a href="/system/user/profile" class="dropdown-item menuItem"><i class="feather icon-user"></i>个人中心</a></li>
<li><a href="/process/requestitem" class="dropdown-item menuItem"><i class="feather icon-mail"></i>我的请求</a></li>
<li><a href="/remind" class="dropdown-item menuItem"><i class="feather icon-bell"></i>我的提醒</a></li>
<li><a href="/process/todoitem" class="dropdown-item menuItem" id="todoBadge2"><i class="fa fa-rocket"></i>我的待办</a></li>
<li><a href="/process/doneitem" class="dropdown-item menuItem" id="todoBadge3"><i class="fa fa-fighter-jet"></i>我的已办</a></li>
</ul>
</div>
</div>
@ -259,9 +257,9 @@
<script th:src="@{/js/pcoded.min.js}"></script>
<script th:src="@{/ruoyi/index.js?v=20201208}"></script>
<script th:inline="javascript">var loginName = [[${user.loginName}]]</script>
<script th:inline="javascript">var ctx = [[@{/}]];</script>
<script th:inline="javascript">
window.history.forward(1);
var ctx = [[@{/}]];
var lockscreen = [[${session.lockscreen}]];
if (lockscreen) {window.top.location = ctx + "lockscreen";}
// 皮肤缓存
@ -441,252 +439,6 @@
})
}
//解决frame高度问题
function reinitIframe() {
var iframe = document.getElementById("erpFrame");
try {
//var bHeight = iframe.contentWindow.document.body.scrollHeight;
/* var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
var height = Math.max(bHeight, dHeight);
iframe.height = height; */
// iframe.height = bHeight;
/* var iframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow;
if (iframeWin.document.body) {
iframe.height = iframeWin.document.documentElement.scrollHeight || iframeWin.document.body.scrollHeight;
} */
//var bHeight = iframe.contentWindow.document.body.scrollHeight;
//var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
//var height = Math.min(bHeight, dHeight);
//iframe.height = height;
//iframe.height = iframe.document.body.scrollHeight;
//该方法有白边
/* var bHeight = iframe.contentWindow.document.body.scrollHeight;
var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
var height = Math.min(bHeight, dHeight);
iframe.height = height+50; */
/* var idoc = iframe.contentWindow && iframe.contentWindow.document || iframe.contentDocument;
var iheight = Math.min(idoc.body.scrollHeight, idoc.documentElement.scrollHeight); //取得其高
iframe.height = iheight+50; */
//有多余部分出现
// iframe.height=document.documentElement.clientHeight;
//显示不全
//iframe.height = iframe.document.body.scrollHeight;
//有多余部分出现
/* var iframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow;
if (iframeWin.document.body) {
iframe.height = iframeWin.document.documentElement.scrollHeight || iframeWin.document.body.scrollHeight;
} */
//显示不全
/* if (document.getElementById)
{
if (iframe && !window.opera)
{
if (iframe.contentDocument && iframe.contentDocument.body.offsetHeight)
iframe.height = iframe.contentDocument.body.offsetHeight;
else if(iframe.Document && iframe.Document.body.scrollHeight)
iframe.height = iframe.Document.body.scrollHeight;
}
} */
/* alert(iframe.contentWindow.document.documentElement.scrollHeight);
alert(iframe.contentDocument.body.offsetHeight);
alert(iframe.contentWindow.document.body.scrollHeight); */
} catch (ex) {
}
}
//下拉项设置
$('.menuItem').click(function () {
var dataUrl = $(this).attr('href');
var itemText = $(this).text();
//console.log(dataUrl);
//console.log(itemText);
//设置frame路径
$('#erpFrame').attr("src", dataUrl);
//取消悬浮
$('.menu-dropdown').removeClass('open');
//修改导航条下面的内容
$('.page-title').find("h1").html(itemText + "<small></small>");
//修改菜单选中
//清除选中
clearActive();
//清除面包屑
$('.page-breadcrumb>li').remove();
//设置选中
$(this).parent().addClass("active");
//alert($(this).parent().parent().parent("li").length);
if ($(this).parent().parent().parent("li").length != 0) {
$(this).parent().parent().parent().addClass("active");
if ($(this).parent().parent().parent().parent().parent("li").length != 0) {
$(this).parent().parent().parent().parent().parent().addClass("active");
//alert($(this).parent().parent().parent().children("a").text().trim());
if ($(this).parent().parent().parent().parent().parent().parent().parent("li").length != 0) {
$(this).parent().parent().parent().parent().parent().parent().parent().addClass("active");
/* $('.page-breadcrumb').append(
'<li><a href='+ctx+'index>Home</a><i class="fa fa-circle"></i></li><li><a href="#">'
+ $(this).parent().parent().parent().parent().parent().children("a").text().trim() + '</a> <i class="fa fa-circle"></i></li><li class="active">'
+ itemText + '</li>'); */
$('.page-breadcrumb').append(
'<li><a href=' + ctx + 'index>Home</a><i class="fa fa-circle"></i></li><li><a href="#">'
+ $(this).parent().parent().parent().parent().parent().parent().parent().children("a").text().trim() + '</a> <i class="fa fa-circle"></i></li><li><a href="#">'
+ $(this).parent().parent().parent().parent().parent().children("a").text().trim() + '</a> <i class="fa fa-circle"></i></li><li><a href="#">'
+ $(this).parent().parent().parent().children("a").text().trim() + '</a> <i class="fa fa-circle"></i></li><li class="active">'
+ itemText + '</li>');
} else {
$('.page-breadcrumb').append(
'<li><a href=' + ctx + 'index>Home</a><i class="fa fa-circle"></i></li><li><a href="#">'
+ $(this).parent().parent().parent().parent().parent().children("a").text().trim() + '</a> <i class="fa fa-circle"></i></li><li><a href="#">'
+ $(this).parent().parent().parent().children("a").text().trim() + '</a> <i class="fa fa-circle"></i></li><li class="active">'
+ itemText + '</li>');
}
} else {
$('.page-breadcrumb').append(
'<li><a href=' + ctx + 'index>Home</a><i class="fa fa-circle"></i></li><li><a href="#">'
+ $(this).parent().parent().parent().children("a").text().trim() + '</a> <i class="fa fa-circle"></i></li><li class="active">'
+ itemText + '</li>');
}
} else {
//home和自己
$('.page-breadcrumb').append('<li><a href=' + ctx + 'index>Home</a><i class="fa fa-circle"></i></li><li class="active">' + itemText + '</li>');
}
$(".page-header .menu-toggler").click();
return false;
})
//查看所有待办任务
function viewAllTasks() {
//控制iframe跳转
$('#erpFrame').attr("src", ctx + "process/todoitem");
$('.page-title').find("h1").html("我的待办" + "<small></small>");
//清除面包屑
$('.page-breadcrumb>li').remove();
$('.page-breadcrumb').append(
'<li>' +'<a href=' + ctx + 'index' + '>Home</a><i class="fa fa-circle"></i></li>' +
' <li>' +'<a href="#">我的待办</a> ' +' <i class= "fa fa-circle"></i>' +'</li>' +'<li class="active">我的待办</li>'
);
//清除选中
clearActive();
//控制选中
/* $('#flowManager').addClass("active");
$('#myTodoParent').addClass("active");
$('#myTodo').addClass("active");*/
}
//查看所有提醒
function viewAllRemind() {
//控制iframe跳转
$('#erpFrame').attr("src", ctx + "remind");
$('.page-title').find("h1").html("我的提醒" + "<small></small>");
//清除面包屑
$('.page-breadcrumb>li').remove();
$('.page-breadcrumb').append(
'<li><a href=' + ctx + 'index>Home</a><i class="fa fa-circle"></i></li><li><a href="#">我的提醒</a> <i class="fa fa-circle"></i></li><li class="active">我的提醒</li>');
//清除选中
clearActive();
//控制选中
$('#flowManager').addClass("active");
$('#myRemindParent').addClass("active");
$('#myRemind').addClass("active");
}
//所需单据绑定回车键
$('#allSearch').bind('keydown', function (event) {
if (event.keyCode == "13") {
viewAllselect();
}
});
//查看所有提醒
function viewAllselect() {
//控制iframe跳转
var value = $('#allSearch').val();
$('#erpFrame').attr("src", ctx + "remind/");
$('.page-title').find("h1").html("我的提醒" + "<small></small>");
//清除面包屑
$('.page-breadcrumb>li').remove();
$('.page-breadcrumb').append(
'<li><a href='+ctx+'index>Home</a><i class="fa fa-circle"></i></li><li><a href="#">我的提醒</a> <i class="fa fa-circle"></i></li><li class="active">我的提醒</li>');
//清除选中
clearActive();
//控制选中
/*$('#flowManager').addClass("active");
$('#myRemindParent').addClass("active");
$('#myRemind').addClass("active"); */
}
//查看个人资料
function viewMyProfile() {
//控制iframe跳转
$('#erpFrame').attr("src", ctx + "system/user/profile");
$('.page-title').find("h1").html("我的个人资料" + "<small></small>");
//清除面包屑
$('.page-breadcrumb>li').remove();
$('.page-breadcrumb').append(
'<li><a href=' + ctx + 'index>Home</a><i class="fa fa-circle"></i></li><li><a href="#">我的个人资料</a> <i class="fa fa-circle"></i></li><li class="active">我的个人资料</li>');
//清除选中
clearActive();
}
//新建流程
//我的请求
function viewAllRequestItem() {
//控制iframe跳转
$('#erpFrame').attr("src", ctx + "process/requestitem");
$('.page-title').find("h1").html("我的请求" + "<small></small>");
//清除面包屑
$('.page-breadcrumb>li').remove();
$('.page-breadcrumb').append(
'<li><a href=' + ctx + 'index>Home</a><i class="fa fa-circle"></i></li><li><a href="#">我的请求</a> <i class="fa fa-circle"></i></li><li class="active">我的请求</li>');
//清除选中
clearActive();
//控制选中
/*$('#flowManager').addClass("active");
$('#myTodoParent').addClass("active");
$('#myTodo').addClass("active");*/
}
//我的已办
function viewAllDoneTasks() {
//控制iframe跳转
$('#erpFrame').attr("src", ctx + "process/doneitemView");
$('.page-title').find("h1").html("我的已办" + "<small></small>");
//清除面包屑
$('.page-breadcrumb>li').remove();
$('.page-breadcrumb').append(
'<li><a href=' + ctx + 'index>Home</a><i class="fa fa-circle"></i></li><li><a href="#">我的已办</a> <i class="fa fa-circle"></i></li><li class="active">我的已办</li>');
//清除选中
clearActive();
//控制选中
/*$('#flowManager').addClass("active");
$('#myTodoParent').addClass("active");
$('#myTodo').addClass("active");*/
}
//清除选中
function clearActive() {
$('.menuItem').parent().removeClass("active");
if ($('.menuItem').parent().parent().parent("li").length != 0) {
$('.menuItem').parent().parent().parent().removeClass("active");
if ($('.menuItem').parent().parent().parent().parent().parent("li").length != 0) {
$('.menuItem').parent().parent().parent().parent().parent().removeClass("active");
if ($('.menuItem').parent().parent().parent().parent().parent().parent().parent("li").length != 0) {
$('.menuItem').parent().parent().parent().parent().parent().parent().parent().removeClass("active");
}
}
}
}
// 计算耗时
function transDate(todoTime) {
date = new Date(todoTime);
@ -716,37 +468,6 @@
}
return result;
}
$('#todoItemList').on('click', 'li', function (e) {
var dataUrl = $(this).children('a').attr('href');
//console.log(aa);
$('#erpFrame').attr("src", dataUrl);
return false;
});
$('#remindList').on('click', 'li', function (e) {
var dataUrl = $(this).children('a').attr('href');
//console.log(aa);
$('#erpFrame').attr("src", dataUrl);
return false;
});
$(".notification").on("click", function () {
let id = $(this).val();
$.ajax({
url: ctx + "remind/getRemindListNoPaging",
type: "post",
dataType: "json",
data: {"id": id},
success: function (resp) {
$("li[value='"+id+"']").css("display","none")
},
error: function () {
$.modal.msgError("出错了!");
}
})
})
</script>
</body>
</html>

170
ruoyi-admin/src/main/resources/templates/process/todoitem/doneitem.html

@ -0,0 +1,170 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('已办事项列表')" />
<th:block th:include="include :: select2-css" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="formId">
<div class="select-list">
<ul>
<li>
<p>事项标题:</p>
<input type="text" name="itemName"/>
</li>
<li>
<p>模块名称:</p>
<input type="text" name="module"/>
</li>
<li>
<p>任务 ID:</p>
<input type="text" name="taskId"/>
</li>
<li>
<p>任务名称:</p>
<input type="text" name="taskName"/>
</li>
<li>
<p>待办人 ID:</p>
<input type="text" name="todoUserId"/>
</li>
<li>
<p>待办人名称:</p>
<input type="text" name="todoUserName"/>
</li>
<li>
<p>处理人 ID:</p>
<input type="text" name="handleUserId"/>
</li>
<li>
<p>处理人名称:</p>
<input type="text" name="handleUserName"/>
</li>
<li class="select-time">
<p>通知时间:</p>
<input type="text" class="time-input" id="todoItemStartTime" placeholder="开始时间" name="params[todoItemStartTime]"/>
<span>-</span>
<input type="text" class="time-input" id="todoItemEndTime" placeholder="结束时间" name="params[todoItemEndTime]"/>
</li>
<li class="select-time">
<p>处理时间:</p>
<input type="text" class="time-input" id="handleStartTime" placeholder="开始时间" name="params[handleStartTime]"/>
<span>-</span>
<input type="text" class="time-input" id="handleEndTime" placeholder="结束时间" name="params[handleEndTime]"/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="process:todoitem:export">
<i class="fa fa-download"></i> 导出
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var editFlag = [[${@permission.hasPermi('process:todoitem:edit')}]];
var removeFlag = [[${@permission.hasPermi('process:todoitem:remove')}]];
var prefix = ctx + "process/todoitem";
$(function() {
var options = {
url: prefix + "/doneList",
exportUrl: prefix + "/doneExport",
modalName: "已办事项",
columns: [{
checkbox: true
},
{
field : 'id',
title : '主键 ID',
visible: false
},
{
field : 'itemName',
title : '事项标题'
},
{
field : 'itemContent',
title : '事项内容'
},
{
field : 'module',
title : '模块名称'
},
{
field : 'taskId',
title : '任务 ID'
},
{
field : 'taskName',
title : '任务名称'
},
{
field : 'isView',
title : '是否查看'
},
{
field : 'isHandle',
title : '是否处理'
},
{
field : 'todoUserId',
title : '待办人ID'
},
{
field : 'todoUserName',
title : '待办人名称'
},
{
field : 'handleUserId',
title : '处理人ID'
},
{
field : 'handleUserName',
title : '处理人名称'
},
{
field : 'todoTime',
title : '通知时间'
},
{
field : 'handleTime',
title : '处理时间'
},
{
field: 'nodeName',
title: '已办任务名称',
align: 'center',
formatter: function(value, row, index) {
return '<span class="badge badge-primary">' + value + '</span>';
}
}/*,
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.detail(\'' + row.id + '\')"><i class="fa fa-edit"></i> 查看</a> ');
return actions.join('');
}
}*/]
};
$.table.init(options);
});
</script>
</body>
</html>

74
ruoyi-admin/src/main/resources/templates/process/todoitem/todoList.html

@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('时间轴')" />
</head>
<body class="gray-bg">
<div class="container-div">
<div th:if="${#lists.isEmpty(todoItemList)}" style="text-align: center; height: 500px; line-height: 500px;">暂无任务</div>
<div th:unless="${#lists.isEmpty(todoItemList)}" class="row animated fadeInRight">
<div class="ibox float-e-margins">
<div id="ibox-content">
<div id="vertical-timeline" class="vertical-container light-timeline">
<div th:each="todoItem: ${todoItemList}" class="vertical-timeline-block">
<div class="vertical-timeline-icon navy-bg">
<i class="fa fa-file-text"></i>
</div>
<div class="vertical-timeline-content">
<h2>【[[${ todoItem.nodeName }]]】[[${ todoItem.itemName }]]</h2>
<p>[[${ todoItem.itemContent }]]
</p>
<a href="javascript:void(0)" class="btn btn-sm btn-primary" th:onclick="showVerifyDialog([[${todoItem.taskId}]], [[${todoItem.module}]], [[${todoItem.taskName}]], [[${todoItem.nodeName}]])"> 办理</a>
<span class="vertical-date">
<!--今天--><!--<span id="todoTimeSpan" th:text="${#dates.format(todoItem.todoTime, 'yyyy-MM-dd HH:mm:ss')}"></span>--> <br>
<small th:text="${#dates.format(todoItem.todoTime, 'yyyy-MM-dd HH:mm:ss')}"></small>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<script th:src="@{/js/activiti.js}"></script>
<script th:inline="javascript">
var userName = [[${@permission.getPrincipalProperty('userName')}]];
var prefix = ctx + "process/todoitem";
function showVerifyDialog(taskId, module, pageName, nodeName) {
var url = prefix + "/showVerifyDialog/" + taskId + "?module=" + module + "&formPageName=" + pageName;
$.modal.open(nodeName, url);
}
function transDate() {
var $time =document.getElementById("todoTimeSpan");
var date = $time.innerHTML.trim();
date = new Date(date);
var tt = date;
var days = parseInt((new Date().getTime() - date) / 86400000);
var today = new Date().getDate();
var year = tt.getFullYear();
var mouth = tt.getMonth() + 1;
var day = tt.getDate();
var time = tt.getHours() < 10 ? "0" + tt.getHours() : tt.getHours();
var min = tt.getMinutes() < 10 ? "0" + tt.getMinutes() : tt.getMinutes();
var result, offset;
offset = Math.abs(today - day);
if (days < 4&&offset<4) {
if (offset === 0) {
result = "今天" + time + ":" + min;
} else if (offset === 1) {
result = "昨天" + time + ":" + min;
} else if (offset === 2) {
result = "前天" + time + ":" + min;
} else if (offset === 2) {
result = "3天前" + time + ":" + min;
}
} else {
// result = year + "-" + mouth + "-" + day + " " + time + ":" + min;
result = "3天以前";
}
$time.innerHTML = result;
}
</script>
</body>
</html>

111
ruoyi-admin/src/main/resources/templates/process/todoitem/todoitem.html

@ -0,0 +1,111 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('待办事项列表')" />
<th:block th:include="include :: select2-css" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="formId">
<div class="select-list">
<ul>
<li><p>事项标题:</p><input type="text" name="itemName"/></li>
<li><p>模块名称:</p><input type="text" name="module"/></li>
<li><p>任务 ID:</p><input type="text" name="taskId"/></li>
<li><p>任务名称:</p><input type="text" name="taskName"/></li>
<!-- <li><p>待办人 ID:</p><input type="text" name="todoUserId"/></li>-->
<li><p>待办人名称:</p><input type="text" name="todoUserName"/></li>
<li><p>处理人 ID:</p><input type="text" name="handleUserId"/></li>
<li><p>处理人名称:</p><input type="text" name="handleUserName"/></li>
<li class="select-time">
<p>通知时间:</p>
<input type="text" class="time-input" id="todoItemStartTime" placeholder="开始时间" name="params[todoItemStartTime]"/>
<span>-</span>
<input type="text" class="time-input" id="todoItemEndTime" placeholder="结束时间" name="params[todoItemEndTime]"/>
</li>
<li class="select-time">
<p>处理时间:</p>
<input type="text" class="time-input" id="handleStartTime" placeholder="开始时间" name="params[handleStartTime]"/>
<span>-</span>
<input type="text" class="time-input" id="handleEndTime" placeholder="结束时间" name="params[handleEndTime]"/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="process:todoitem:export">
<i class="fa fa-download"></i> 导出
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<script th:src="@{/js/activiti.js}"></script>
<script th:inline="javascript">
var removeFlag = [[${@permission.hasPermi('process:todoitem:remove')}]];
var prefix = ctx + "process/todoitem";
var currentUser = [[${currentUser}]];
$(function() {
var options = {
url: prefix + "/list",
createUrl: prefix + "/add",
updateUrl: prefix + "/edit/{id}",
removeUrl: prefix + "/remove",
exportUrl: prefix + "/export",
modalName: "待办事项",
columns: [
{checkbox: true},
{field : 'id', title : '主键 ID', visible: false},
{field : 'itemName', title : '事项标题'},
{field : 'itemContent', title : '事项内容'},
{field : 'module', title : '模块名称'},
{field : 'taskId', title : '任务 ID',visible: false},
{field : 'taskName', title : '任务名称'},
{field : 'isView', title : '是否查看'},
{field : 'isHandle', title : '是否处理'},
{field : 'todoUserId', title : '待办人ID',visible: false},
{field : 'todoUserName', title : '待办人名称'},
{field : 'handleUserId', title : '处理人ID'},
{field : 'handleUserName', title : '处理人名称'},
{field : 'todoTime', title : '通知时间'},
{field : 'handleTime', title : '处理时间'},
{field: 'nodeName', title: '待办任务名称', align: 'center',
formatter: function(value, row, index) {
return '<span class="badge badge-primary">' + value + '</span>';
}
},
{title: '操作', align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="showVerifyDialog(\'' + row.taskId + '\', \'' + row.module + '\', \'' + row.taskName + '\', \'' + row.nodeName + '\', \'' + row.todoUserId + '\')"><i class="fa fa-edit"></i> 办理</a> ');
return actions.join('');
}
}
]
};
$.table.init(options);
});
function showVerifyDialog(taskId, module, pageName, nodeName, todoUserId) {
if (todoUserId !== currentUser.loginName) {
$.modal.alertWarning("不允许非待办人办理待办事项!");
return;
}
var url = prefix + "/showVerifyDialog/" + taskId + "?module=" + module + "&formPageName=" + pageName;
$.modal.open(nodeName, url);
}
</script>
</body>
</html>
Loading…
Cancel
Save