From 5f981e23f997306f1c82c46e47f21ee370e09e6d Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Thu, 20 Feb 2025 13:34:35 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E5=94=AE=E5=90=8E=E7=AE=A1=E7=90=86?= =?UTF-8?q?=20=E6=8C=89=E7=85=A7=E4=B8=87=E6=9D=90=E8=A6=81=E6=B1=82?= =?UTF-8?q?=EF=BC=8C=E5=9F=BA=E7=A1=80=E8=B5=84=E6=96=99=E5=91=98=E5=B7=A5?= =?UTF-8?q?=E6=8A=A5=E9=94=80=E5=8D=95=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=94=AF=E6=8C=81=E9=83=A8=E5=88=86?= =?UTF-8?q?=E8=A1=8C=E5=92=8C=E5=85=A8=E9=83=A8=E8=A1=8C=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=EF=BC=8C=E5=AF=BC=E5=87=BA=E6=9B=B4=E5=A4=9A=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=87=BA=E6=89=80=E6=9C=89?= =?UTF-8?q?=E5=92=8C=E9=80=89=E6=8B=A9=E5=AF=BC=E5=87=BA=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E6=96=B0=E5=A2=9E=20=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E8=B5=84=E6=96=99=E6=8A=A5=E9=94=80=E5=8D=95?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=96=B9=E6=B3=95=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E5=9F=BA=E7=A1=80=E8=B5=84=E6=96=99=E6=8A=A5?= =?UTF-8?q?=E9=94=80=E5=8D=95=E9=9B=86=E5=90=88=E6=96=B9=E6=B3=95=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=87=BA=E5=9F=BA=E7=A1=80=E8=B5=84?= =?UTF-8?q?=E6=96=99=E6=8A=A5=E9=94=80=E5=8D=95=E6=98=8E=E7=BB=86=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=8C=E6=8A=A5=E9=94=80=E5=8D=95=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=9F=A5=E8=AF=A2=E5=A4=9A=E4=BD=99=E7=9A=84=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=8A=9B=E5=87=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseExpenseAccountController.java | 27 ++++- .../domain/Vo/ExportBaseExpenseAccountVo.java | 114 ++++++++++++++++++ .../mapper/BaseExpenseAccountChildMapper.java | 4 + .../mapper/BaseExpenseAccountMapper.java | 5 + .../service/IBaseExpenseAccountService.java | 18 ++- .../impl/BaseExpenseAccountServiceImpl.java | 111 ++++++++++++++++- .../system/BaseExpenseAccountChildMapper.xml | 8 ++ .../system/BaseExpenseAccountMapper.xml | 10 +- .../system/baseExpense/baseExpense.html | 28 ++++- 9 files changed, 315 insertions(+), 10 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/ExportBaseExpenseAccountVo.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseExpenseAccountController.java b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseExpenseAccountController.java index 7bc2b1c5..4a40b7e8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseExpenseAccountController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseExpenseAccountController.java @@ -20,14 +20,16 @@ import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.MoneyUtils; import com.ruoyi.common.utils.ShiroUtils; -import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileDownloadUtils; import com.ruoyi.financial.service.IFinacialExpenseService; import com.ruoyi.process.general.service.IProcessService; import com.ruoyi.remind.service.RemindService; import com.ruoyi.system.domain.BaseExpenseAccountChild; import com.ruoyi.system.domain.BaseExpenseConfirmAmount; +import com.ruoyi.system.domain.Vo.BaseEmpRequisiteOrderVO; import com.ruoyi.system.domain.Vo.BaseExpenseAccountVo; +import com.ruoyi.system.domain.Vo.ExportBaseEmpRequisiteOrderVO; +import com.ruoyi.system.domain.Vo.ExportBaseExpenseAccountVo; import com.ruoyi.system.service.*; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; @@ -41,6 +43,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.util.ResourceUtils; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.enums.BusinessType; @@ -113,7 +116,7 @@ public class BaseExpenseAccountController extends BaseController @RequiresPermissions("system:baseExpense:list") @PostMapping("/list") @ResponseBody - public TableDataInfo list(BaseExpenseAccountVo baseExpenseAccount) throws Exception { + public TableDataInfo list(BaseExpenseAccountVo baseExpenseAccount){ startPage(); List list = baseExpenseAccountService.selectBaseExpenseAccountList(baseExpenseAccount); return getDataTable(list); @@ -126,10 +129,22 @@ public class BaseExpenseAccountController extends BaseController @Log(title = "报销单", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody - public AjaxResult export(BaseExpenseAccountVo baseExpenseAccount) throws Exception { - List list = baseExpenseAccountService.selectBaseExpenseAccountList(baseExpenseAccount); - ExcelUtil util = new ExcelUtil(BaseExpenseAccountVo.class); - return util.exportExcel(list, "报销单数据"); + public AjaxResult export(BaseExpenseAccountVo baseExpenseAccount, String ids){ + + if (StringUtils.isEmpty(ids)){ + List list = baseExpenseAccountService.selectBaseExpenseAccountListByObject(baseExpenseAccount); + + List exportBaseExpenseAccountVoS = baseExpenseAccountService.exportBaseExpenseAccountList(list); + ExcelUtil util = new ExcelUtil(ExportBaseExpenseAccountVo.class); + return util.exportExcel(exportBaseExpenseAccountVoS, "报销单数据"); + }else { + String[] expenseCodes = ids.split(","); + List list = baseExpenseAccountService.selectBaseExpenseAccountByCodes(expenseCodes); + List exportBaseExpenseAccountVoS = baseExpenseAccountService.exportBaseExpenseAccountList(list); + ExcelUtil util = new ExcelUtil(ExportBaseExpenseAccountVo.class); + return util.exportExcel(exportBaseExpenseAccountVoS, "报销单数据"); + } + } @RequiresPermissions("system:baseExpense:export") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/ExportBaseExpenseAccountVo.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/ExportBaseExpenseAccountVo.java new file mode 100644 index 00000000..393f4a6d --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/ExportBaseExpenseAccountVo.java @@ -0,0 +1,114 @@ +package com.ruoyi.system.domain.Vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.Excel; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** +* 导出报销单明细 +* */ +@Data +public class ExportBaseExpenseAccountVo +{ + + + /** 报销单编号 */ + @Excel(name = "报销单编号") + private String expenseCode; + + /** 部门 */ + @Excel(name = "部门") + private String deptName; + + /** 岗位 */ + @Excel(name = "岗位") + private String postName; + + /** 姓名 */ + @Excel(name = "姓名") + private String fullName; + + /** 报销方式 个人报销 0,公转报销 1 */ + @Excel(name = "报销方式",dictType = "sys_base_expense_method") + private String expenseMethod; + + /** 是否是委外/采购采销 */ + @Excel(name = "是否是委外/采购采销",dictType = "sys_whether") + private String isPurchaseOutsource; + + /** 供应商ID */ + @Excel(name = "供应商ID") + private String supplierCode; + + /** 对公收款方 */ + @Excel(name = "对公收款方") + private String corporatePayee; + + /** 对公收款账户 */ + @Excel(name = "对公收款账户") + private String corporateReceivingAccount; + + /** 对公开户行 */ + @Excel(name = "对公开户行") + private String publicAccountBanks; + + /** 申请人 */ + @Excel(name = "申请人") + private String applyUser; + + /** 使用状态 */ + @Excel(name = "使用状态",dictType = "useStatus") + private String useStatus; + + + /** 上级审核状态 */ + @Excel(name = "上级审核状态",dictType = "auditStatus") + private String auditStatus; + + /** 总经理审核状态 */ + @Excel(name = "总经理审核状态",dictType = "auditStatus") + private String managerAuditStatus; + + /** 财务审核状态(0待审核,1审核通过,2审核拒绝,3待打款,4已打款) */ + @Excel(name = "财务审核状态",dictType = "financial_expense_status") + private String financeAuditStatus; + + + /** 成本类型 */ + @Excel(name = "成本类型") + private String costType; + + /** 成本小类 */ + @Excel(name = "成本小类") + private String costSmallType; + + /** 用途 */ + @Excel(name = "用途") + private String purpose; + + /** 金额 */ + @Excel(name = "金额") + private BigDecimal amounts; + + /** 报销时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "报销时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date expenseTime; + + /** 出差单号 */ + @Excel(name = "出差单号") + private String evectionCode; + + /** 采购单号 */ + @Excel(name = "采购单号") + private String purchaseCode; + + /** 委外单号 */ + @Excel(name = "委外单号") + private String outsourceCode; + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BaseExpenseAccountChildMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BaseExpenseAccountChildMapper.java index e2976535..036f0249 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BaseExpenseAccountChildMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BaseExpenseAccountChildMapper.java @@ -124,4 +124,8 @@ public interface BaseExpenseAccountChildMapper */ public int deleteBaseExpenseAccountChildByExpenseCodes(String[] expenseCodes); + /** + * 根据报销单编号查询报销单子类 + * */ + List selectBaseExpenseAccountChildListByCodeList(List collectExpenseCodes); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BaseExpenseAccountMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BaseExpenseAccountMapper.java index 680f10ca..0c22b843 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BaseExpenseAccountMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BaseExpenseAccountMapper.java @@ -107,4 +107,9 @@ public interface BaseExpenseAccountMapper public Integer deleteBaseExpenseAccountByExpenseCode(String expenseCode); BaseExpenseAccount selectBaseExpenseAccountByCode(String expenseCode); + + /** + * 通过报销单编号查询报销单明细 + * */ + List selectBaseExpenseAccountByCodes(String[] expenseCodes); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseExpenseAccountService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseExpenseAccountService.java index c6b0c658..55aa5b49 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseExpenseAccountService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseExpenseAccountService.java @@ -6,6 +6,7 @@ import java.util.Set; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.system.domain.BaseExpenseAccount; import com.ruoyi.system.domain.Vo.BaseExpenseAccountVo; +import com.ruoyi.system.domain.Vo.ExportBaseExpenseAccountVo; import org.activiti.engine.runtime.ProcessInstance; import org.springframework.transaction.annotation.Transactional; @@ -33,7 +34,7 @@ public interface IBaseExpenseAccountService */ // public List selectBaseExpenseAccountList(BaseExpenseAccount baseExpenseAccount); - public List selectBaseExpenseAccountList(BaseExpenseAccountVo baseExpenseAccount) throws Exception; + public List selectBaseExpenseAccountList(BaseExpenseAccountVo baseExpenseAccount); /** * 新增报销单 @@ -98,4 +99,19 @@ public interface IBaseExpenseAccountService // 获取当前登录名下可看用户列表 Set userLimitedList(Set roleKeys, SysUser curUser); + + /** + * 导出报销单明细 + * */ + List exportBaseExpenseAccountList(List list); + + /** + * 通过报销单编号查询报销单明细 + * */ + List selectBaseExpenseAccountByCodes(String[] expenseCodes); + + /** + * 通过报销单对象查询报销单明细 + * */ + List selectBaseExpenseAccountListByObject(BaseExpenseAccountVo baseExpenseAccount); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseExpenseAccountServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseExpenseAccountServiceImpl.java index 2ecac636..75565072 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseExpenseAccountServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseExpenseAccountServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.system.service.impl; import java.math.BigDecimal; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import com.github.pagehelper.Page; @@ -22,6 +23,8 @@ import com.ruoyi.system.domain.BaseExpenseAccountChild; import com.ruoyi.system.domain.Vo.BaseEmpRequisiteOrderVO; import com.ruoyi.system.domain.Vo.BaseExpenseAccountVo; import com.ruoyi.system.domain.Vo.BaseRequisitioningOrderVo; +import com.ruoyi.system.domain.Vo.ExportBaseExpenseAccountVo; +import com.ruoyi.system.mapper.BaseExpenseAccountChildMapper; import com.ruoyi.system.mapper.SysDeptMapper; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.service.IBaseExpenseAccountChildService; @@ -59,6 +62,9 @@ public class BaseExpenseAccountServiceImpl implements IBaseExpenseAccountService @Autowired private IBaseExpenseAccountChildService baseExpenseAccountChildService; + @Autowired + private BaseExpenseAccountChildMapper baseExpenseAccountChildMapper; + @Autowired private SysUserMapper userMapper; @@ -97,6 +103,23 @@ public class BaseExpenseAccountServiceImpl implements IBaseExpenseAccountService return baseExpenseAccountVo; } + + /** + * 通过报销单编号查询报销单明细 + * */ + @Override + public List selectBaseExpenseAccountByCodes(String[] expenseCodes) { + return baseExpenseAccountMapper.selectBaseExpenseAccountByCodes(expenseCodes); + } + + /** + * 通过报销单对象查询报销单明细 + * */ + @Override + public List selectBaseExpenseAccountListByObject(BaseExpenseAccountVo baseExpenseAccount) { + return baseExpenseAccountMapper.selectBaseExpenseAccountList(baseExpenseAccount); + } + /** * 查询报销单列表 * @@ -104,7 +127,7 @@ public class BaseExpenseAccountServiceImpl implements IBaseExpenseAccountService * @return 报销单 */ @Override - public List selectBaseExpenseAccountList(BaseExpenseAccountVo baseExpenseAccount) throws Exception { + public List selectBaseExpenseAccountList(BaseExpenseAccountVo baseExpenseAccount) { SysUser curUser = ShiroUtils.getSysUser(); Long userId = curUser.getUserId(); Set roleKeys = roleService.selectRoleKeys(userId); @@ -592,4 +615,90 @@ public class BaseExpenseAccountServiceImpl implements IBaseExpenseAccountService } return curUserName; } + + + /** + * 导出报销单明细 + * */ + @Override + public List exportBaseExpenseAccountList(List list) { + // 获取所有的报销单编号 + List collectExpenseCodes = list.stream() + .map(BaseExpenseAccountVo::getExpenseCode) + .collect(Collectors.toList()); + + // 根据报销单编号查询对应的明细列表 + List baseExpenseAccountChildren = baseExpenseAccountChildMapper.selectBaseExpenseAccountChildListByCodeList(collectExpenseCodes); + + // 创建一个 BaseExpenseAccountVo 的 Map,键为报销单编号 + Map baseExpenseAccountVoMap = list.stream() + .collect(Collectors.toMap(BaseExpenseAccountVo::getExpenseCode, Function.identity())); + + // 成本类型和成本小类的对应关系 + Map costTypeMap = new HashMap<>(); + costTypeMap.put("xsfy", "销售费用"); + costTypeMap.put("yffy", "研发费用"); + costTypeMap.put("scfy", "生产费用"); + costTypeMap.put("shfy", "售后费用"); + costTypeMap.put("glfy", "管理费用"); + costTypeMap.put("cwfy", "财务费用"); + + Map costSmallTypeMap = new HashMap<>(); + costSmallTypeMap.put("sj", "税金"); + costSmallTypeMap.put("gdzc", "固定资产"); + costSmallTypeMap.put("xhp", "消耗品"); + costSmallTypeMap.put("by", "搬运"); + costSmallTypeMap.put("ys", "运输"); + costSmallTypeMap.put("bg", "报关"); + costSmallTypeMap.put("qt", "其它"); + costSmallTypeMap.put("aqsc", "安全生产"); + + // 初始化导出列表 + List exportBaseExpenseAccountVos = new ArrayList<>(); + + for (BaseExpenseAccountChild child : baseExpenseAccountChildren) { + ExportBaseExpenseAccountVo exportVo = new ExportBaseExpenseAccountVo(); + + // 从 BaseExpenseAccountChild 填充数据 + String costSmallType = costSmallTypeMap.getOrDefault(child.getCostSmallType(), ""); + exportVo.setCostSmallType(costSmallType); + // 如果需要,可以根据 costSmallType 转换后的值进一步处理 + String costType = costTypeMap.getOrDefault(child.getCostType(), ""); + exportVo.setCostType(costType); // 假设有一个字段用于存储转换后的名称 + + exportVo.setPurpose(child.getPurpose()); + exportVo.setAmounts(child.getAmounts()); + exportVo.setExpenseTime(child.getExpenseTime()); + exportVo.setEvectionCode(child.getEvectionCode()); + exportVo.setPurchaseCode(child.getPurchaseCode()); + exportVo.setOutsourceCode(child.getOutsourceCode()); + + + // 从 BaseExpenseAccountVo 填充数据,通过报销单编号进行关联 + BaseExpenseAccountVo order = baseExpenseAccountVoMap.get(child.getExpenseCode()); + if (order != null) { + exportVo.setExpenseCode(order.getExpenseCode()); + exportVo.setDeptName(order.getDeptName()); + exportVo.setPostName(order.getPostName()); + exportVo.setFullName(order.getFullName()); + exportVo.setExpenseMethod(order.getExpenseMethod()); + exportVo.setIsPurchaseOutsource(order.getIsPurchaseOutsource()); + exportVo.setSupplierCode(order.getSupplierCode()); + exportVo.setCorporatePayee(order.getCorporatePayee()); + exportVo.setCorporateReceivingAccount(order.getCorporateReceivingAccount()); + exportVo.setPublicAccountBanks(order.getPublicAccountBanks()); + exportVo.setApplyUser(order.getApplyUser()); + exportVo.setUseStatus(order.getUseStatus()); + exportVo.setAuditStatus(order.getAuditStatus()); + exportVo.setManagerAuditStatus(order.getManagerAuditStatus()); + exportVo.setFinanceAuditStatus(order.getFinanceAuditStatus()); + + } + + // 添加到结果列表 + exportBaseExpenseAccountVos.add(exportVo); + } + + return exportBaseExpenseAccountVos; + } } diff --git a/ruoyi-admin/src/main/resources/mapper/system/BaseExpenseAccountChildMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/BaseExpenseAccountChildMapper.xml index feef17e6..5fbeefb1 100644 --- a/ruoyi-admin/src/main/resources/mapper/system/BaseExpenseAccountChildMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/system/BaseExpenseAccountChildMapper.xml @@ -58,6 +58,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where expense_code = #{code} limit #{start} offset #{pageSize} + + insert into base_expense_account_child diff --git a/ruoyi-admin/src/main/resources/mapper/system/BaseExpenseAccountMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/BaseExpenseAccountMapper.xml index 087ca067..97555599 100644 --- a/ruoyi-admin/src/main/resources/mapper/system/BaseExpenseAccountMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/system/BaseExpenseAccountMapper.xml @@ -108,7 +108,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where expense_code = #{expenseCode} - + + + insert into base_expense_account diff --git a/ruoyi-admin/src/main/resources/templates/system/baseExpense/baseExpense.html b/ruoyi-admin/src/main/resources/templates/system/baseExpense/baseExpense.html index cc9029ef..abf62fa6 100644 --- a/ruoyi-admin/src/main/resources/templates/system/baseExpense/baseExpense.html +++ b/ruoyi-admin/src/main/resources/templates/system/baseExpense/baseExpense.html @@ -94,7 +94,9 @@ 添加 - + + 导出 +
@@ -302,6 +304,30 @@ window.location.href = prefix + "/excelExpenseVoucher/" + expenseId; }) } + + // 导出 + function exportExcel() { + var ids = $.table.selectColumns("expenseCode"); + var dataParam = $("#formId").serializeArray(); + + let tipMsg = "确定导出当前所有数据吗?"; + if ($.common.isNotEmpty(ids)) { + tipMsg = `确定导出 ${ids} 数据吗?`; + dataParam.push({ "name": "ids", "value": ids }); + } + $.modal.confirm(tipMsg, function () { + $.modal.loading("正在导出数据,请稍后..."); + $.post( prefix + "/export", dataParam, function (result) { + if (result.code === web_status.SUCCESS) { + window.location.href = ctx + "common/download?fileName="+ encodeURI(result.msg) + "&delete=" + true; + } else { + $.modal.alertError(result.msg); + } + $.modal.closeLoading(); + }); + }); + } + \ No newline at end of file