新增生产制单

This commit is contained in:
Mrking 2024-09-08 23:12:36 +08:00
parent 8d1ce49ac8
commit f1332e2765
23 changed files with 2508 additions and 96 deletions

View File

@ -14,6 +14,7 @@ public interface ErrorCodeConstants extends cn.hangtag.module.system.enums.Erro
ErrorCode CUSTOMER_BRAND_NOT_EXISTS = new ErrorCode(3800, "客户和品牌关联不存在");
ErrorCode PRODUCT_CARE_ITEM_NOT_EXISTS = new ErrorCode(3900, "产品保养项 不存在");
ErrorCode PRODUCE_ORDER_NOT_EXISTS = new ErrorCode(4000, "生产制单不存在");
ErrorCode PRODUCE_ORDER_EXISTS = new ErrorCode(4002, "生产制单已经存在");
ErrorCode PRODUCE_ORDER_IMPORT_LIST_IS_EMPTY = new ErrorCode(4003, "导入生产制单数据不能为空");
}

View File

@ -1,5 +1,10 @@
package cn.hangtag.module.oms.controller.admin.produceorder;
import cn.hangtag.framework.common.enums.CommonStatusEnum;
import cn.hangtag.module.system.controller.admin.user.vo.user.UserImportExcelVO;
import cn.hangtag.module.system.controller.admin.user.vo.user.UserImportRespVO;
import cn.hangtag.module.system.enums.common.SexEnum;
import io.swagger.v3.oas.annotations.Parameters;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -28,6 +33,7 @@ import static cn.hangtag.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.hangtag.module.oms.controller.admin.produceorder.vo.*;
import cn.hangtag.module.oms.dal.dataobject.produceorder.ProduceOrderDO;
import cn.hangtag.module.oms.service.produceorder.ProduceOrderService;
import org.springframework.web.multipart.MultipartFile;
@Tag(name = "管理后台 - 生产制单")
@RestController
@ -92,4 +98,26 @@ public class ProduceOrderController {
BeanUtils.toBean(list, ProduceOrderRespVO.class));
}
@GetMapping("/get-import-template")
@Operation(summary = "获得导入生产制单模板")
public void importTemplate(HttpServletResponse response) throws IOException {
// 输出
ExcelUtils.write(response, "生产制单导入模板.xls", "生产制单列表", ProduceOrderImportExcelVO.class, null);
}
@PostMapping("/import")
@Operation(summary = "导入生产制单")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
})
//@PreAuthorize("@ss.hasPermission('system:user:import')")
public CommonResult<ProduceOrderImportRespVO> importExcel(@RequestParam("file") MultipartFile file,
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
List<ProduceOrderImportExcelVO> list = ExcelUtils.read(file, ProduceOrderImportExcelVO.class);
return success(produceOrderService.importList(list, updateSupport));
}
}

View File

@ -0,0 +1,85 @@
package cn.hangtag.module.oms.controller.admin.produceorder.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* 用户 Excel 导入 VO
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false避免数据导入有问题
public class ProduceOrderImportExcelVO {
@ExcelProperty("单据编号")
private String billno;
@ExcelProperty("订单号")
private String orderNo;
@ExcelProperty("客户编号")
private String customerCode;
@ExcelProperty("客户名称")
private String customerName;
@ExcelProperty("产品编码")
private String productCode;
@ExcelProperty("产品名称")
private String productName;
@ExcelProperty("合约号")
private String saleContractNo;
@ExcelProperty("合约日期")
private LocalDateTime contractDate;
@ExcelProperty("合约数量")
private Long contractQty;
@ExcelProperty("生产数量")
private Long produceQty;
@ExcelProperty("交货地点")
private String deliveryPlace;
@ExcelProperty("职员")
private String clerk;
@ExcelProperty("报告日期")
private LocalDateTime reportDate;
@ExcelProperty("生产日期")
private LocalDateTime produceDate;
@ExcelProperty("天数")
private Long days;
@ExcelProperty("生产线")
private String produceLine;
@ExcelProperty("交货方式")
private String deliveryMethod;
@ExcelProperty("验货日期")
private LocalDateTime inspectionDate;
@Schema(description = "交货日期")
@ExcelProperty("交货日期")
private LocalDateTime deliverydate;
@Schema(description = "交货数量")
@ExcelProperty("交货数量")
private Integer deliveryQty;
}

View File

@ -0,0 +1,24 @@
package cn.hangtag.module.oms.controller.admin.produceorder.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Schema(description = "管理后台 - 生产制单导入 Response VO")
@Data
@Builder
public class ProduceOrderImportRespVO {
@Schema(description = "创建成功的单据编号数组", requiredMode = Schema.RequiredMode.REQUIRED)
private List<String> createBillNos;
@Schema(description = "更新成功的单据编号数组", requiredMode = Schema.RequiredMode.REQUIRED)
private List<String> updateBillNos;
@Schema(description = "导入失败的单据编号集合key 为用户名value 为失败原因", requiredMode = Schema.RequiredMode.REQUIRED)
private Map<String, String> failureBillNos;
}

View File

@ -25,7 +25,7 @@ public class ProduceOrderPageReqVO extends PageParam {
private String customerCode;
@Schema(description = "合约号")
private Integer saleContractNo;
private String saleContractNo;
@Schema(description = "报告日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)

View File

@ -34,7 +34,7 @@ public class ProduceOrderRespVO {
@Schema(description = "合约号")
@ExcelProperty("合约号")
private Integer saleContractNo;
private String saleContractNo;
@Schema(description = "合约日期")
@ExcelProperty("合约日期")

View File

@ -33,10 +33,10 @@ public class ProduceOrderSaveReqVO {
private String productName;
@Schema(description = "合约号")
private Integer saleContractNo;
private String saleContractNo;
@Schema(description = "合约日期")
private Date contractDate;
private LocalDateTime contractDate;
@Schema(description = "合约数量")
private Long contractQty;
@ -51,10 +51,10 @@ public class ProduceOrderSaveReqVO {
private String clerk;
@Schema(description = "报告日期")
private Date reportDate;
private LocalDateTime reportDate;
@Schema(description = "生产日期")
private Date produceDate;
private LocalDateTime produceDate;
@Schema(description = "天数")
private Long days;
@ -66,10 +66,10 @@ public class ProduceOrderSaveReqVO {
private String deliveryMethod;
@Schema(description = "验货日期")
private Date inspectionDate;
private LocalDateTime inspectionDate;
@Schema(description = "交货日期")
private Date deliverydate;
private LocalDateTime deliverydate;
@Schema(description = "交货数量")
private Integer deliveryQty;

View File

@ -63,11 +63,11 @@ public class ProduceOrderDO extends BaseDO {
/**
* 合约号
*/
private Integer saleContractNo;
private String saleContractNo;
/**
* 合约日期
*/
private LocalDateTime contractDate;
private Date contractDate;
/**
* 合约数量
*/
@ -87,11 +87,11 @@ public class ProduceOrderDO extends BaseDO {
/**
* 报告日期
*/
private LocalDateTime reportDate;
private Date reportDate;
/**
* 生产日期
*/
private LocalDateTime produceDate;
private Date produceDate;
/**
* 天数
*/
@ -107,11 +107,11 @@ public class ProduceOrderDO extends BaseDO {
/**
* 验货日期
*/
private LocalDateTime inspectionDate;
private Date inspectionDate;
/**
* 交货日期
*/
private LocalDateTime deliverydate;
private Date deliverydate;
/**
* 交货数量
*/

View File

@ -32,4 +32,7 @@ public interface ProduceOrderMapper extends BaseMapperX<ProduceOrderDO> {
.orderByDesc(ProduceOrderDO::getId));
}
default ProduceOrderDO selectByBillNo(String billNo){
return selectOne(ProduceOrderDO::getBillno, billNo);
}
}

View File

@ -52,4 +52,5 @@ public interface ProduceOrderService {
*/
PageResult<ProduceOrderDO> getProduceOrderPage(ProduceOrderPageReqVO pageReqVO);
ProduceOrderImportRespVO importList(List<ProduceOrderImportExcelVO> list, Boolean updateSupport);
}

View File

@ -3,13 +3,21 @@ package cn.hangtag.module.oms.service.produceorder;
import cn.hangtag.framework.common.exception.ServiceException;
import cn.hangtag.framework.common.exception.enums.GlobalErrorCodeConstants;
import cn.hangtag.framework.common.util.FuncUtil;
import cn.hangtag.framework.common.util.validation.ValidationUtils;
import cn.hangtag.framework.mybatis.core.dataobject.BaseDO;
import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO;
import cn.hangtag.module.oms.serialnumber.CodingRulesUtils;
import cn.hangtag.module.system.controller.admin.user.vo.user.UserImportRespVO;
import cn.hangtag.module.system.controller.admin.user.vo.user.UserSaveReqVO;
import cn.hangtag.module.system.dal.dataobject.user.AdminUserDO;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.validation.ConstraintViolationException;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
@ -86,7 +94,44 @@ public class ProduceOrderServiceImpl implements ProduceOrderService {
return produceOrderMapper.selectPage(pageReqVO);
}
@Override
public ProduceOrderImportRespVO importList(List<ProduceOrderImportExcelVO> importDatas, Boolean isUpdateSupport) {
// 1.1 参数校验
if (CollUtil.isEmpty(importDatas)) {
throw exception(PRODUCE_ORDER_IMPORT_LIST_IS_EMPTY);
}
// 2. 遍历逐个创建 or 更新
ProduceOrderImportRespVO respVO = ProduceOrderImportRespVO.builder().createBillNos(new ArrayList<>())
.updateBillNos(new ArrayList<>()).failureBillNos(new LinkedHashMap<>()).build();
importDatas.forEach(importData -> {
// 2.1.1 校验字段是否符合要求
try {
ValidationUtils.validate(BeanUtils.toBean(importData, ProduceOrderSaveReqVO.class));
} catch (ConstraintViolationException ex){
respVO.getFailureBillNos().put(importData.getBillno(), ex.getMessage());
return;
}
// 2.2.1 判断如果不存在在进行插入
ProduceOrderDO existData = produceOrderMapper.selectByBillNo(importData.getBillno());
if (existData == null) {
produceOrderMapper.insert(BeanUtils.toBean(importData, ProduceOrderDO.class));
respVO.getCreateBillNos().add(importData.getBillno());
return;
}
// 2.2.2 如果存在判断是否允许更新
if (!isUpdateSupport) {
respVO.getFailureBillNos().put(importData.getBillno(), PRODUCE_ORDER_EXISTS.getMsg());
return;
}
ProduceOrderDO updateData = BeanUtils.toBean(importData, ProduceOrderDO.class);
updateData.setId(existData.getId());
produceOrderMapper.updateById(updateData);
respVO.getUpdateBillNos().add(importData.getBillno());
});
return respVO;
}
private String getNewCode() {

View File

@ -1,23 +1,16 @@
package cn.hangtag.module.oms.service.saleorder;
import cn.hangtag.framework.common.exception.ServiceException;
import cn.hangtag.framework.common.exception.enums.GlobalErrorCodeConstants;
import cn.hangtag.framework.common.pojo.PageResult;
import cn.hangtag.framework.common.util.FuncUtil;
import cn.hangtag.framework.common.util.object.BeanUtils;
import cn.hangtag.framework.mybatis.core.dataobject.BaseDO;
import cn.hangtag.module.oms.controller.admin.produceorder.vo.ProduceOrderSaveReqVO;
import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderPageReqVO;
import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderSaveReqVO;
import cn.hangtag.module.oms.dal.dataobject.brand.BrandDO;
import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO;
import cn.hangtag.module.oms.dal.dataobject.saleorderentry.SaleOrderEntryDO;
import cn.hangtag.module.oms.dal.mysql.saleorder.SaleOrderMapper;
import cn.hangtag.module.oms.dal.mysql.saleorderentry.SaleOrderEntryMapper;
import cn.hangtag.module.oms.enums.saleorder.SaleOrderStatusEnum;
import cn.hangtag.module.oms.serialnumber.CodingRulesUtils;
import cn.hangtag.module.oms.service.produceorder.ProduceOrderService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -25,7 +18,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Date;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@ -143,7 +136,7 @@ public class SaleOrderServiceImpl implements SaleOrderService {
saveReqVO.setDeliveryQty(1111111);
saveReqVO.setDays(5L);
saveReqVO.setClerk("职员");
saveReqVO.setContractDate(new Date());
saveReqVO.setContractDate(LocalDateTime.now() );
Long produceOrderId = produceOrderService.createProduceOrder(saveReqVO);
//更新销售订单已完成
/*if(produceOrderId!=null){

View File

@ -3,6 +3,7 @@
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<link rel="stylesheet" type="text/css" media="print" href="/print-lock.css"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta

View File

@ -75,6 +75,7 @@
"vue": "3.4.21",
"vue-dompurify-html": "^4.1.4",
"vue-i18n": "9.10.2",
"vue-plugin-hiprint": "^0.0.56",
"vue-router": "^4.3.0",
"vue-types": "^5.1.1",
"vuedraggable": "^4.1.0",
@ -108,6 +109,7 @@
"eslint-define-config": "^2.1.0",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-vue": "^9.22.0",
"jquery": "^3.7.1",
"lint-staged": "^15.2.2",
"postcss": "^8.4.35",
"postcss-html": "^1.6.0",

View File

@ -158,6 +158,9 @@ importers:
vue-i18n:
specifier: 9.10.2
version: 9.10.2(vue@3.4.21(typescript@5.3.3))
vue-plugin-hiprint:
specifier: ^0.0.56
version: 0.0.56
vue-router:
specifier: ^4.3.0
version: 4.4.3(vue@3.4.21(typescript@5.3.3))
@ -252,6 +255,9 @@ importers:
eslint-plugin-vue:
specifier: ^9.22.0
version: 9.27.0(eslint@8.57.0)
jquery:
specifier: ^3.7.1
version: 3.7.1
lint-staged:
specifier: ^15.2.2
version: 15.2.9
@ -1035,6 +1041,11 @@ packages:
'@camunda/element-templates-json-schema@0.4.0':
resolution: {integrity: sha512-M5xW61ba7z2maBxfoT4c1bjuLD8OIL7863et/hULiNG6+R/B9CZ4Qze1juuIfXv4zpF2fYSuUsTPkTtiZrcspQ==}
'@claviska/jquery-minicolors@2.3.6':
resolution: {integrity: sha512-8Ro6D4GCrmOl41+6w4NFhEOpx8vjxwVRI69bulXsFDt49uVRKhLU5TnzEV7AmOJrylkVq+ugnYNMiGHBieeKUQ==}
peerDependencies:
jquery: '>= 1.7.x'
'@commitlint/cli@19.4.0':
resolution: {integrity: sha512-sJX4J9UioVwZHq7JWM9tjT5bgWYaIN3rC4FP7YwfEwBYiIO+wMyRttRvQLNkow0vCdM0D67r9NEWU0Ui03I4Eg==}
engines: {node: '>=v18'}
@ -1599,6 +1610,9 @@ packages:
'@sinclair/typebox@0.27.8':
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
'@socket.io/component-emitter@3.1.2':
resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==}
'@swc/core-darwin-arm64@1.7.18':
resolution: {integrity: sha512-MwLc5U+VGPMZm8MjlFBjEB2wyT1EK0NNJ3tn+ps9fmxdFP+PL8EpMiY1O1F2t1ydy2OzBtZz81sycjM9RieFBg==}
engines: {node: '>=10'}
@ -1724,6 +1738,9 @@ packages:
'@types/qs@6.9.15':
resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==}
'@types/raf@3.4.3':
resolution: {integrity: sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==}
'@types/semver@7.5.8':
resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
@ -2348,6 +2365,10 @@ packages:
balanced-match@2.0.0:
resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==}
base64-arraybuffer@1.0.2:
resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==}
engines: {node: '>= 0.6.0'}
base@0.11.2:
resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
engines: {node: '>=0.10.0'}
@ -2411,9 +2432,18 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
btoa@1.2.1:
resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==}
engines: {node: '>= 0.4.0'}
hasBin: true
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
bwip-js@4.5.1:
resolution: {integrity: sha512-83yQCKiIftz5YonnsTh6wIkFoHHWl+B/XaGWD1UdRw7aB6XP9JtyYP9n8sRy3m5rzL+Ch/RUPnu28UW0RrPZUA==}
hasBin: true
cac@6.7.14:
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
@ -2444,6 +2474,10 @@ packages:
caniuse-lite@1.0.30001653:
resolution: {integrity: sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==}
canvg@3.0.10:
resolution: {integrity: sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==}
engines: {node: '>=10.0.0'}
chalk@1.1.3:
resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==}
engines: {node: '>=0.10.0'}
@ -2646,6 +2680,9 @@ packages:
resolution: {integrity: sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==}
engines: {node: '>=12 || >=16'}
css-line-break@2.1.0:
resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==}
css-select@4.3.0:
resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
@ -2826,6 +2863,9 @@ packages:
domify@1.4.2:
resolution: {integrity: sha512-m4yreHcUWHBncGVV7U+yQzc12vIlq0jMrtHZ5mW6dQMiL/7skSYNVX9wqKwOtyO9SGCgevrAFEgOCAHmamHTUA==}
dompurify@2.5.6:
resolution: {integrity: sha512-zUTaUBO8pY4+iJMPE1B9XlO2tXVYIcEA4SNGtvDELzTSCQO7RzH+j7S180BmhmJId78lqGU2z19vgVx2Sxs/PQ==}
dompurify@3.1.6:
resolution: {integrity: sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==}
@ -2885,6 +2925,13 @@ packages:
resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
engines: {node: '>= 4'}
engine.io-client@6.5.4:
resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==}
engine.io-parser@5.2.3:
resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==}
engines: {node: '>=10.0.0'}
entities@1.1.2:
resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==}
@ -3114,6 +3161,9 @@ packages:
fastq@1.17.1:
resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
fflate@0.4.8:
resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==}
file-entry-cache@6.0.1:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: ^10.12.0 || >=12.0.0}
@ -3384,6 +3434,10 @@ packages:
html-void-elements@2.0.1:
resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==}
html2canvas@1.4.1:
resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==}
engines: {node: '>=8.0.0'}
htmlparser2@3.10.1:
resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==}
@ -3647,6 +3701,9 @@ packages:
resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
hasBin: true
jquery@3.7.1:
resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==}
js-base64@2.6.4:
resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==}
@ -3660,6 +3717,9 @@ packages:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
jsbarcode@3.11.6:
resolution: {integrity: sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA==}
jsencrypt@3.3.2:
resolution: {integrity: sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==}
@ -3710,6 +3770,9 @@ packages:
resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
engines: {'0': node >= 0.2.0}
jspdf@2.5.1:
resolution: {integrity: sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==}
keycode@2.2.1:
resolution: {integrity: sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==}
@ -4073,6 +4136,9 @@ packages:
nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
nzh@1.0.13:
resolution: {integrity: sha512-K3npIPUq155Oqal3KHZZ8fjiAiBw3NOGcdisTbxr0KQ4N1xlqgsMwzJ1a/oagcsl7f1FWnFh56MSS15fqvCF+Q==}
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
@ -4214,6 +4280,9 @@ packages:
perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
performance-now@2.1.0:
resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==}
picocolors@1.0.1:
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
@ -4399,6 +4468,9 @@ packages:
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
raf@3.4.1:
resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==}
rd@2.0.1:
resolution: {integrity: sha512-/XdKU4UazUZTXFmI0dpABt8jSXPWcEyaGdk340KdHnsEOdkTctlX23aAK7ChQDn39YGNlAJr1M5uvaKt4QnpNw==}
@ -4420,6 +4492,9 @@ packages:
regenerate@1.4.2:
resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==}
regenerator-runtime@0.13.11:
resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
regenerator-runtime@0.14.1:
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
@ -4495,6 +4570,10 @@ packages:
rfdc@1.4.1:
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
rgbcolor@1.0.1:
resolution: {integrity: sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==}
engines: {node: '>= 0.8.15'}
rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
deprecated: Rimraf versions prior to v4 are no longer supported
@ -4648,6 +4727,14 @@ packages:
resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
engines: {node: '>=0.10.0'}
socket.io-client@4.7.5:
resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==}
engines: {node: '>=10.0.0'}
socket.io-parser@4.2.4:
resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==}
engines: {node: '>=10.0.0'}
sortablejs@1.14.0:
resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==}
@ -4689,6 +4776,10 @@ packages:
resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
stackblur-canvas@2.7.0:
resolution: {integrity: sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==}
engines: {node: '>=0.1.14'}
static-extend@0.1.2:
resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
engines: {node: '>=0.10.0'}
@ -4813,6 +4904,10 @@ packages:
svg-baker@1.7.0:
resolution: {integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==}
svg-pathdata@6.0.3:
resolution: {integrity: sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==}
engines: {node: '>=12.0.0'}
svg-tags@1.0.0:
resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
@ -4848,6 +4943,9 @@ packages:
resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==}
engines: {node: '>=8'}
text-segmentation@1.0.3:
resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==}
text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
@ -5068,6 +5166,9 @@ packages:
resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==}
engines: {node: '>= 4'}
utrie@1.0.2:
resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==}
uuid@10.0.0:
resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==}
hasBin: true
@ -5179,6 +5280,9 @@ packages:
peerDependencies:
vue: ^3.0.0
vue-plugin-hiprint@0.0.56:
resolution: {integrity: sha512-YbJHH/MwdwIV1urL8V86ea+E8ixX1RYp/u/8/giPt4vfREUak9s2KYw4JFzM/Z6th9BCCpWTLPC+SOeoggxBbw==}
vue-router@4.4.3:
resolution: {integrity: sha512-sv6wmNKx2j3aqJQDMxLFzs/u/mjA9Z5LCgy6BE0f7yFWMjrPLnS/sPNn8ARY/FXw6byV18EFutn5lTO6+UsV5A==}
peerDependencies:
@ -5283,6 +5387,18 @@ packages:
resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
ws@8.17.1:
resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: '>=5.0.2'
peerDependenciesMeta:
bufferutil:
optional: true
utf-8-validate:
optional: true
xml-js@1.6.11:
resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
hasBin: true
@ -5291,6 +5407,10 @@ packages:
resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
engines: {node: '>=12'}
xmlhttprequest-ssl@2.0.0:
resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==}
engines: {node: '>=0.4.0'}
y18n@4.0.3:
resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
@ -6226,6 +6346,10 @@ snapshots:
'@camunda/element-templates-json-schema@0.4.0': {}
'@claviska/jquery-minicolors@2.3.6(jquery@3.7.1)':
dependencies:
jquery: 3.7.1
'@commitlint/cli@19.4.0(@types/node@20.16.1)(typescript@5.3.3)':
dependencies:
'@commitlint/format': 19.3.0
@ -6762,6 +6886,8 @@ snapshots:
'@sinclair/typebox@0.27.8': {}
'@socket.io/component-emitter@3.1.2': {}
'@swc/core-darwin-arm64@1.7.18':
optional: true
@ -6855,6 +6981,8 @@ snapshots:
'@types/qs@6.9.15': {}
'@types/raf@3.4.3': {}
'@types/semver@7.5.8': {}
'@types/svgo@2.6.4':
@ -7728,6 +7856,8 @@ snapshots:
balanced-match@2.0.0: {}
base64-arraybuffer@1.0.2: {}
base@0.11.2:
dependencies:
cache-base: 1.0.1
@ -7830,8 +7960,12 @@ snapshots:
node-releases: 2.0.18
update-browserslist-db: 1.1.0(browserslist@4.23.3)
btoa@1.2.1: {}
buffer-from@1.1.2: {}
bwip-js@4.5.1: {}
cac@6.7.14: {}
cache-base@1.0.1:
@ -7864,6 +7998,17 @@ snapshots:
caniuse-lite@1.0.30001653: {}
canvg@3.0.10:
dependencies:
'@babel/runtime': 7.25.4
'@types/raf': 3.4.3
core-js: 3.38.1
raf: 3.4.1
regenerator-runtime: 0.13.11
rgbcolor: 1.0.1
stackblur-canvas: 2.7.0
svg-pathdata: 6.0.3
chalk@1.1.3:
dependencies:
ansi-styles: 2.2.1
@ -8071,6 +8216,10 @@ snapshots:
css-functions-list@3.2.2: {}
css-line-break@2.1.0:
dependencies:
utrie: 1.0.2
css-select@4.3.0:
dependencies:
boolbase: 1.0.0
@ -8263,6 +8412,9 @@ snapshots:
domify@1.4.2: {}
dompurify@2.5.6:
optional: true
dompurify@3.1.6: {}
domutils@1.7.0:
@ -8336,6 +8488,20 @@ snapshots:
emojis-list@3.0.0: {}
engine.io-client@6.5.4:
dependencies:
'@socket.io/component-emitter': 3.1.2
debug: 4.3.6
engine.io-parser: 5.2.3
ws: 8.17.1
xmlhttprequest-ssl: 2.0.0
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
engine.io-parser@5.2.3: {}
entities@1.1.2: {}
entities@2.2.0: {}
@ -8685,6 +8851,8 @@ snapshots:
dependencies:
reusify: 1.0.4
fflate@0.4.8: {}
file-entry-cache@6.0.1:
dependencies:
flat-cache: 3.2.0
@ -8956,6 +9124,11 @@ snapshots:
html-void-elements@2.0.1: {}
html2canvas@1.4.1:
dependencies:
css-line-break: 2.1.0
text-segmentation: 1.0.3
htmlparser2@3.10.1:
dependencies:
domelementtype: 1.3.1
@ -9186,6 +9359,8 @@ snapshots:
jiti@1.21.6: {}
jquery@3.7.1: {}
js-base64@2.6.4: {}
js-tokens@4.0.0: {}
@ -9196,6 +9371,8 @@ snapshots:
dependencies:
argparse: 2.0.1
jsbarcode@3.11.6: {}
jsencrypt@3.3.2: {}
jsesc@0.5.0: {}
@ -9235,6 +9412,18 @@ snapshots:
jsonparse@1.3.1: {}
jspdf@2.5.1:
dependencies:
'@babel/runtime': 7.25.4
atob: 2.1.2
btoa: 1.2.1
fflate: 0.4.8
optionalDependencies:
canvg: 3.0.10
core-js: 3.38.1
dompurify: 2.5.6
html2canvas: 1.4.1
keycode@2.2.1: {}
keyv@4.5.4:
@ -9601,6 +9790,8 @@ snapshots:
dependencies:
boolbase: 1.0.0
nzh@1.0.13: {}
object-assign@4.1.1: {}
object-copy@0.1.0:
@ -9729,6 +9920,8 @@ snapshots:
perfect-debounce@1.0.0: {}
performance-now@2.1.0: {}
picocolors@1.0.1: {}
picomatch@2.3.1: {}
@ -9897,6 +10090,10 @@ snapshots:
queue-microtask@1.2.3: {}
raf@3.4.1:
dependencies:
performance-now: 2.1.0
rd@2.0.1:
dependencies:
'@types/node': 10.17.60
@ -9919,6 +10116,8 @@ snapshots:
regenerate@1.4.2: {}
regenerator-runtime@0.13.11: {}
regenerator-runtime@0.14.1: {}
regenerator-transform@0.15.2:
@ -9985,6 +10184,8 @@ snapshots:
rfdc@1.4.1: {}
rgbcolor@1.0.1: {}
rimraf@3.0.2:
dependencies:
glob: 7.2.3
@ -10186,6 +10387,24 @@ snapshots:
transitivePeerDependencies:
- supports-color
socket.io-client@4.7.5:
dependencies:
'@socket.io/component-emitter': 3.1.2
debug: 4.3.6
engine.io-client: 6.5.4
socket.io-parser: 4.2.4
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
socket.io-parser@4.2.4:
dependencies:
'@socket.io/component-emitter': 3.1.2
debug: 4.3.6
transitivePeerDependencies:
- supports-color
sortablejs@1.14.0: {}
source-map-js@1.2.0: {}
@ -10219,6 +10438,8 @@ snapshots:
stable@0.1.8: {}
stackblur-canvas@2.7.0: {}
static-extend@0.1.2:
dependencies:
define-property: 0.2.5
@ -10397,6 +10618,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
svg-pathdata@6.0.3: {}
svg-tags@1.0.0: {}
svg.js@2.7.1: {}
@ -10440,6 +10663,10 @@ snapshots:
text-extensions@2.4.0: {}
text-segmentation@1.0.3:
dependencies:
utrie: 1.0.2
text-table@0.2.0: {}
through@2.3.8: {}
@ -10709,6 +10936,10 @@ snapshots:
utility-types@3.11.0: {}
utrie@1.0.2:
dependencies:
base64-arraybuffer: 1.0.2
uuid@10.0.0: {}
vary@1.1.2: {}
@ -10841,6 +11072,22 @@ snapshots:
'@vue/devtools-api': 6.6.3
vue: 3.4.21(typescript@5.3.3)
vue-plugin-hiprint@0.0.56:
dependencies:
'@claviska/jquery-minicolors': 2.3.6(jquery@3.7.1)
bwip-js: 4.5.1
canvg: 3.0.10
html2canvas: 1.4.1
jquery: 3.7.1
jsbarcode: 3.11.6
jspdf: 2.5.1
nzh: 1.0.13
socket.io-client: 4.7.5
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
vue-router@4.4.3(vue@3.4.21(typescript@5.3.3)):
dependencies:
'@vue/devtools-api': 6.6.3
@ -10959,12 +11206,16 @@ snapshots:
imurmurhash: 0.1.4
signal-exit: 4.1.0
ws@8.17.1: {}
xml-js@1.6.11:
dependencies:
sax: 1.4.1
xml-name-validator@4.0.0: {}
xmlhttprequest-ssl@2.0.0: {}
y18n@4.0.3: {}
y18n@5.0.8: {}

View File

@ -0,0 +1,349 @@
@media print {
body {
margin: 0px;
padding: 0px;
}
}
@page {
margin: 0;
}
.hiprint-printPaper * {
box-sizing: border-box;
-moz-box-sizing: border-box; /* Firefox */
-webkit-box-sizing: border-box; /* Safari */
}
.hiprint-printPaper *:focus {
outline: -webkit-focus-ring-color auto 0px;
}
.hiprint-printPaper {
position: relative;
padding: 0 0 0 0;
page-break-after: always;
-webkit-user-select: none; /* Chrome/Safari/Opera */
-moz-user-select: none; /* Firefox */
user-select: none;
overflow-x: hidden;
overflow: hidden;
}
.hiprint-printPaper .hiprint-printPaper-content {
position: relative;
}
/* 火狐浏览器打印 第一页过后 重叠问题 */
@-moz-document url-prefix() {
.hiprint-printPaper .hiprint-printPaper-content {
position: relative;
margin-top: 20px;
top: -20px
}
}
.hiprint-printPaper.design {
overflow: visible;
}
.hiprint-printTemplate .hiprint-printPanel {
page-break-after: always;
}
.hiprint-printPaper, hiprint-printPanel {
box-sizing: border-box;
border: 0px;
}
.hiprint-printPanel .hiprint-printPaper:last-child {
page-break-after: avoid;
}
.hiprint-printTemplate .hiprint-printPanel:last-child {
page-break-after: avoid;
}
.hiprint-printPaper .hideheaderLinetarget {
border-top: 0px dashed rgb(201, 190, 190) !important;
}
.hiprint-printPaper .hidefooterLinetarget {
border-top: 0px dashed rgb(201, 190, 190) !important;
}
.hiprint-printPaper.design {
border: 1px dashed rgba(170, 170, 170, 0.7);
}
.design .hiprint-printElement-table-content, .design .hiprint-printElement-longText-content {
overflow: hidden;
box-sizing: border-box;
}
.design .resize-panel {
box-sizing: border-box;
border: 1px dotted;
}
.hiprint-printElement-text {
background-color: transparent;
background-repeat: repeat;
padding: 0 0 0 0;
border: 0.75pt none rgb(0, 0, 0);
direction: ltr;
font-family: 'SimSun';
font-size: 9pt;
font-style: normal;
font-weight: normal;
padding-bottom: 0pt;
padding-left: 0pt;
padding-right: 0pt;
padding-top: 0pt;
text-align: left;
text-decoration: none;
line-height: 9.75pt;
box-sizing: border-box;
word-wrap: break-word;
word-break: break-all;
}
.design .hiprint-printElement-text-content {
border: 1px dashed rgb(206, 188, 188);
box-sizing: border-box;
}
.hiprint-printElement-longText {
background-color: transparent;
background-repeat: repeat;
border: 0.75pt none rgb(0, 0, 0);
direction: ltr;
font-family: 'SimSun';
font-size: 9pt;
font-style: normal;
font-weight: normal;
padding-bottom: 0pt;
padding-left: 0pt;
padding-right: 0pt;
padding-top: 0pt;
text-align: left;
text-decoration: none;
line-height: 9.75pt;
box-sizing: border-box;
word-wrap: break-word;
word-break: break-all;
/*white-space: pre-wrap*/
}
.hiprint-printElement-table {
background-color: transparent;
background-repeat: repeat;
color: rgb(0, 0, 0);
border-color: rgb(0, 0, 0);
border-style: none;
direction: ltr;
font-family: 'SimSun';
font-size: 9pt;
font-style: normal;
font-weight: normal;
padding-bottom: 0pt;
padding-left: 0pt;
padding-right: 0pt;
padding-top: 0pt;
text-align: left;
text-decoration: none;
padding: 0 0 0 0;
box-sizing: border-box;
line-height: 9.75pt;
}
.hiprint-printElement-table thead {
background: #e8e8e8;
font-weight: 700;
}
table.hiprint-printElement-tableTarget {
width: 100%;
}
.hiprint-printElement-tableTarget, .hiprint-printElement-tableTarget tr, .hiprint-printElement-tableTarget td {
border-color: rgb(0, 0, 0);
/*border-style: none;*/
/*border: 1px solid rgb(0, 0, 0);*/
font-weight: normal;
direction: ltr;
padding-bottom: 0pt;
padding-left: 4pt;
padding-right: 4pt;
padding-top: 0pt;
text-decoration: none;
vertical-align: middle;
box-sizing: border-box;
word-wrap: break-word;
word-break: break-all;
/*line-height: 9.75pt;
font-size: 9pt;*/
}
.hiprint-printElement-tableTarget-border-all {
border: 1px solid;
}
.hiprint-printElement-tableTarget-border-none {
border: 0px solid;
}
.hiprint-printElement-tableTarget-border-lr {
border-left: 1px solid;
border-right: 1px solid;
}
.hiprint-printElement-tableTarget-border-left {
border-left: 1px solid;
}
.hiprint-printElement-tableTarget-border-right {
border-right: 1px solid;
}
.hiprint-printElement-tableTarget-border-tb {
border-top: 1px solid;
border-bottom: 1px solid;
}
.hiprint-printElement-tableTarget-border-top {
border-top: 1px solid;
}
.hiprint-printElement-tableTarget-border-bottom {
border-bottom: 1px solid;
}
.hiprint-printElement-tableTarget-border-td-none td {
border: 0px solid;
}
.hiprint-printElement-tableTarget-border-td-all td:not(:nth-last-child(-n+2)) {
border-right: 1px solid;
}
.hiprint-printElement-tableTarget-border-td-all td:last-child {
border-left: 1px solid;
}
.hiprint-printElement-tableTarget-border-td-all td:last-child:first-child {
border-left: none;
}
/*.hiprint-printElement-tableTarget tr,*/
.hiprint-printElement-tableTarget td {
height: 18pt;
}
.hiprint-printPaper .hiprint-paperNumber {
font-size: 9pt;
}
.design .hiprint-printElement-table-handle {
position: absolute;
height: 21pt;
width: 21pt;
background: red;
z-index: 1;
}
.hiprint-printPaper .hiprint-paperNumber-disabled {
float: right !important;
right: 0 !important;
color: gainsboro !important;
}
.hiprint-printElement-vline, .hiprint-printElement-hline {
border: 0px none rgb(0, 0, 0);
}
.hiprint-printElement-vline {
border-left: 0.75pt solid #000;
border-right: 0px none rgb(0, 0, 0) !important;
border-bottom: 0px none rgb(0, 0, 0) !important;
border-top: 0px none rgb(0, 0, 0) !important;
}
.hiprint-printElement-hline {
border-top: 0.75pt solid #000;
border-right: 0px none rgb(0, 0, 0) !important;
border-bottom: 0px none rgb(0, 0, 0) !important;
border-left: 0px none rgb(0, 0, 0) !important;
}
.hiprint-printElement-oval, .hiprint-printElement-rect {
border: 0.75pt solid #000;
}
.hiprint-text-content-middle {
}
.hiprint-text-content-middle > div {
display: grid;
align-items: center;
}
.hiprint-text-content-bottom {
}
.hiprint-text-content-bottom > div {
display: grid;
align-items: flex-end;
}
.hiprint-text-content-wrap {
}
.hiprint-text-content-wrap .hiprint-text-content-wrap-nowrap {
white-space: nowrap;
}
.hiprint-text-content-wrap .hiprint-text-content-wrap-clip {
white-space: nowrap;
overflow: hidden;
text-overflow: clip;
}
.hiprint-text-content-wrap .hiprint-text-content-wrap-ellipsis {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/*hi-grid-row */
.hi-grid-row {
position: relative;
height: auto;
margin-right: 0;
margin-left: 0;
zoom: 1;
display: block;
box-sizing: border-box;
}
.hi-grid-row::after, .hi-grid-row::before {
display: table;
content: '';
box-sizing: border-box;
}
.hi-grid-col {
display: block;
box-sizing: border-box;
position: relative;
float: left;
flex: 0 0 auto;
}
.table-grid-row {
margin-left: -0pt;
margin-right: -0pt;
}
.tableGridColumnsGutterRow {
padding-left: 0pt;
padding-right: 0pt;
}
.hiprint-gridColumnsFooter {
text-align: left;
clear: both;
}

View File

@ -1,59 +1,64 @@
import request from '@/config/axios'
// 生产制单 VO
export interface ProduceOrderVO {
id: number // ID
billno: string // 单据编号
orderNo: string // 订单号
customerCode: string // 客户编号
productId: number // 产品id
productCode: string // 产品编号
productName: string // 产品名称
saleContractNo: number // 合约号
contractDate: Date // 合约日期
contractQty: number // 合约数量
produceQty: number // 生产数量
deliveryPlace: string // 交货地点
clerk: string // 职员
reportDate: Date // 报告日期
produceDate: Date // 生产日期
days: number // 天数
produceLine: string // 生产线
deliveryMethod: string // 交货方式
inspectionDate: Date // 验货日期
deliverydate: Date // 交货日期
deliveryQty: number // 交货数量
}
// 生产制单 API
export const ProduceOrderApi = {
// 查询生产制单分页
getProduceOrderPage: async (params: any) => {
return await request.get({ url: `/oms/produce-order/page`, params })
},
// 查询生产制单详情
getProduceOrder: async (id: number) => {
return await request.get({ url: `/oms/produce-order/get?id=` + id })
},
// 新增生产制单
createProduceOrder: async (data: ProduceOrderVO) => {
return await request.post({ url: `/oms/produce-order/create`, data })
},
// 修改生产制单
updateProduceOrder: async (data: ProduceOrderVO) => {
return await request.put({ url: `/oms/produce-order/update`, data })
},
// 删除生产制单
deleteProduceOrder: async (id: number) => {
return await request.delete({ url: `/oms/produce-order/delete?id=` + id })
},
// 导出生产制单 Excel
exportProduceOrder: async (params) => {
return await request.download({ url: `/oms/produce-order/export-excel`, params })
},
}
import request from '@/config/axios'
// 生产制单 VO
export interface ProduceOrderVO {
id: number // ID
billno: string // 单据编号
orderNo: string // 订单号
customerCode: string // 客户编号
productId: number // 产品id
productCode: string // 产品编号
productName: string // 产品名称
saleContractNo: number // 合约号
contractDate: Date // 合约日期
contractQty: number // 合约数量
produceQty: number // 生产数量
deliveryPlace: string // 交货地点
clerk: string // 职员
reportDate: Date // 报告日期
produceDate: Date // 生产日期
days: number // 天数
produceLine: string // 生产线
deliveryMethod: string // 交货方式
inspectionDate: Date // 验货日期
deliverydate: Date // 交货日期
deliveryQty: number // 交货数量
}
// 生产制单 API
export const ProduceOrderApi = {
// 查询生产制单分页
getProduceOrderPage: async (params: any) => {
return await request.get({ url: `/oms/produce-order/page`, params })
},
// 查询生产制单详情
getProduceOrder: async (id: number) => {
return await request.get({ url: `/oms/produce-order/get?id=` + id })
},
// 新增生产制单
createProduceOrder: async (data: ProduceOrderVO) => {
return await request.post({ url: `/oms/produce-order/create`, data })
},
// 修改生产制单
updateProduceOrder: async (data: ProduceOrderVO) => {
return await request.put({ url: `/oms/produce-order/update`, data })
},
// 删除生产制单
deleteProduceOrder: async (id: number) => {
return await request.delete({ url: `/oms/produce-order/delete?id=` + id })
},
// 导出生产制单 Excel
exportProduceOrder: async (params) => {
return await request.download({ url: `/oms/produce-order/export-excel`, params })
},
importTemplate: async (params) => {
return request.download({ url: '/oms/produce-order/get-import-template' })
}
}

View File

@ -0,0 +1,138 @@
<template>
<Dialog v-model="dialogVisible" title="订单导入" width="400">
<el-upload
ref="uploadRef"
v-model:file-list="fileList"
:action="importUrl + '?updateSupport=' + updateSupport"
:auto-upload="false"
:disabled="formLoading"
:headers="uploadHeaders"
:limit="1"
:on-error="submitFormError"
:on-exceed="handleExceed"
:on-success="submitFormSuccess"
accept=".xlsx, .xls"
drag
>
<Icon icon="ep:upload" />
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<template #tip>
<div class="el-upload__tip text-center">
<div class="el-upload__tip">
<el-checkbox v-model="updateSupport" />
是否更新已经存在的订单数据
</div>
<span>仅允许导入 xlsxlsx 格式文件</span>
<el-link
:underline="false"
style="font-size: 12px; vertical-align: baseline"
type="primary"
@click="importTemplate"
>
下载模板
</el-link>
</div>
</template>
</el-upload>
<template #footer>
<el-button :disabled="formLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script lang="ts" setup>
import { ProduceOrderApi } from '@/api/oms/produceorder'
import { getAccessToken, getTenantId } from '@/utils/auth'
import download from '@/utils/download'
defineOptions({ name: 'OmsProduceOrderImportForm' })
const message = useMessage() //
const dialogVisible = ref(false) //
const formLoading = ref(false) //
const uploadRef = ref()
const importUrl =
import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL + '/oms/produce-order/import'
const uploadHeaders = ref() // Header
const fileList = ref([]) //
const updateSupport = ref(0) //
/** 打开弹窗 */
const open = () => {
dialogVisible.value = true
updateSupport.value = 0
fileList.value = []
resetForm()
}
defineExpose({ open }) // open
/** 提交表单 */
const submitForm = async () => {
if (fileList.value.length == 0) {
message.error('请上传文件')
return
}
//
uploadHeaders.value = {
Authorization: 'Bearer ' + getAccessToken(),
'tenant-id': getTenantId()
}
formLoading.value = true
uploadRef.value!.submit()
}
/** 文件上传成功 */
const emits = defineEmits(['success'])
const submitFormSuccess = (response: any) => {
if (response.code !== 0) {
message.error(response.msg)
formLoading.value = false
return
}
//
const data = response.data
let text = '上传成功数量:' + data.createBillNos.length + ';'
for (let billno of data.createBillNos) {
text += '< ' + billno + ' >'
}
text += '更新成功数量:' + data.updateBillNos.length + ';'
for (const billno of data.updateBillNos) {
text += '< ' + billno + ' >'
}
text += '更新失败数量:' + Object.keys(data.failureBillNos).length + ';'
for (const billno in data.failureBillNos) {
text += '< ' + billno + ': ' + data.failureBillNos[billno] + ' >'
}
message.alert(text)
formLoading.value = false
dialogVisible.value = false
//
emits('success')
}
/** 上传错误提示 */
const submitFormError = (): void => {
message.error('上传失败,请您重新上传!')
formLoading.value = false
}
/** 重置表单 */
const resetForm = async (): Promise<void> => {
//
formLoading.value = false
await nextTick()
uploadRef.value?.clearFiles()
}
/** 文件数超出提示 */
const handleExceed = (): void => {
message.error('最多只能上传一个文件!')
}
/** 下载模板操作 */
const importTemplate = async () => {
const res = await ProduceOrderApi.importTemplate()
download.excel(res, '生产制单导入模版.xls')
}
</script>

View File

@ -0,0 +1,63 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible" style="width: 859px">
<div class="modal">
<div class="wrap">
<div class="box">
<div class="preview-body" style="overflow: auto">
<div class="container"></div>
</div>
<div class="modal-box__footer">
</div>
</div>
</div>
</div>
<template #footer>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { ref } from "vue";
import $ from "jquery";
defineOptions({ name: 'startPreview' })
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const showModal = (...html) => {
dialogVisible.value = true;
dialogTitle.value = '预览'
do {
setTimeout(() => {
debugger
$(".container").empty();
$(".container").html(html);
}, 200);
return;
} while ($(".container").length <= 0);
};
defineExpose({ showModal }) // showModal
</script>
<style>
/* 不同模板 间隙 */
.container .hiprint-printTemplate {
background: #fff;
border-bottom: 5px solid #ccc;
}
/* 批量打印 间隙 */
.container .hiprint-printTemplate .hiprint-printPanel:not(:last-of-type) {
border-bottom: 5px solid #ccc;
}
</style>
<style scoped>
.preview-body {
background: red;
padding: 0px 0;
display: flex;
justify-content: center;
}
</style>

View File

@ -114,6 +114,13 @@
<el-row :gutter="10" class="-mb-1px">
<el-col :span="1.5">
<el-button
type="primary"
@click="preview()"
plain
>
<Icon icon="ep:plus" class="mr-5px" /> 打印
</el-button>
<el-button
type="primary"
plain
@ -122,6 +129,14 @@
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="warning"
plain
@click="handleImport"
v-hasPermi="['oms:produce-order:export']"
>
<Icon icon="ep:upload" class="mr-5px" /> 导入
</el-button>
<el-button
type="success"
plain
@ -131,17 +146,22 @@
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-col>
</el-row>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="ID" align="center" prop="id" />
<el-table-column label="单据编号" align="center" prop="billno" />
<el-table-column label="订单号" align="center" prop="orderNo" />
<el-table-column label="客户编号" align="center" prop="customerCode" />
<!-- <el-table-column label="ID" align="center" prop="id" />-->
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="单据编号" align="center" prop="billno" width="240" />
<el-table-column label="订单号" align="center" prop="orderNo" width="140"/>
<el-table-column label="客户编号" align="center" prop="customerCode" width="140"/>
<el-table-column label="产品名称" align="center" prop="productName" />
<el-table-column label="合约号" align="center" prop="saleContractNo" />
<el-table-column
@ -187,7 +207,7 @@
width="180px"
/>
<el-table-column label="交货数量" align="center" prop="deliveryQty" />
<el-table-column label="操作" align="center">
<el-table-column label="操作" align="center" fixed="right" width="150">
<template #default="scope">
<el-button
link
@ -219,6 +239,11 @@
<!-- 表单弹窗添加/修改 -->
<ProduceOrderForm ref="formRef" @success="getList" />
<!-- 用户导入对话框 -->
<ProduceOrderImportForm ref="importFormRef" @success="getList" />
<startPreview ref="previewRef" />
</template>
<script setup lang="ts">
@ -226,7 +251,14 @@ import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { ProduceOrderApi, ProduceOrderVO } from '@/api/oms/produceorder'
import ProduceOrderForm from './ProduceOrderForm.vue'
import template1 from "./template1";
import { hiprint } from 'vue-plugin-hiprint'
import startPreview from "./components/preview.vue"
import ProduceOrderImportForm from './ProduceOrderImportForm.vue'
//
//hiprint.disAutoConnect()
hiprint.init()
/** 生产制单 列表 */
defineOptions({ name: 'ProduceOrder' })
@ -252,6 +284,7 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const previewRef = ref(null);
/** 查询列表 */
const getList = async () => {
@ -311,6 +344,30 @@ const handleExport = async () => {
}
}
/** 用户导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
const preview = async () => {
let printData = {"billno":"AAAAAAAAAAAAACCCCCCCCCCCCCCDD"};
let hiprintTemplate = new hiprint.PrintTemplate({template: template1});
// name
// hiprintTemplate.print(hiprintTemplate);
let html = hiprintTemplate.getHtml(printData);
debugger;
// let html = hiprintTemplate.getHtml(template1);
// htmls.value = html.toString()
// printsx.value = true
previewRef.value.showModal(html);
}
/** 初始化 **/
onMounted(() => {
getList()

File diff suppressed because it is too large Load Diff

View File

@ -124,13 +124,14 @@
<el-button
type="warning"
plain
@click="handleUpdateBillStatus(selectionList.map((item) => item.id),'submit')"
:disabled="selectionList.length === 0"
>提交
</el-button>
<el-button
type="primary"
plain
@click="handleUpdateBillStatus(selectionList.map((item) => item.id),'C')"
@click="handleUpdateBillStatus(selectionList.map((item) => item.id),'audit')"
:disabled="selectionList.length === 0"
>
审核
@ -138,7 +139,7 @@
<el-button
type="primary"
plain
@click="handleUpdateBillStatus(selectionList.map((item) => item.id),'B')"
@click="handleUpdateBillStatus(selectionList.map((item) => item.id),'unaudit')"
:disabled="selectionList.length === 0"
>
反审核
@ -146,7 +147,7 @@
<el-button
type="primary"
plain
@click="generateProduceOrder(selectionList.map((item) => item.id),'B')"
@click="generateProduceOrder(selectionList.map((item) => item.id))"
:disabled="selectionList.length === 0 || queryParams.tabType === 0"
>
生成制单
@ -262,6 +263,22 @@
<!-- 表单弹窗添加/修改 -->
<SaleOrderForm ref="formRef" @success="getList" />
<!-- 驳回对话框 -->
<!-- <el-dialog :title="rejectTitle" :visible.sync="rejectOpen" width="650px" append-to-body>-->
<!-- <el-form ref="form" :model="rejectform" label-width="80px" >-->
<!-- <el-form-item label="驳回原因" prop="rejectReason" >-->
<!-- <el-input v-model="" placeholder="请输入单价" />-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- <div slot="footer" class="dialog-footer">-->
<!-- <el-button type="primary" @click="submitRejectForm"> </el-button>-->
<!-- <el-button @click="rejectCancel"> </el-button>-->
<!-- </div>-->
<!-- </el-dialog>-->
</template>
<script setup lang="ts">
@ -318,6 +335,17 @@ const queryParams = reactive({
const queryFormRef = ref() //
const exportLoading = ref(false) //
//
const rejectOpen = ref(false)
const rejectTitle = ref()
const rejectform = reactive({
rejectReason: undefined
})
/** 查询列表 */
const getList = async () => {
loading.value = true
@ -372,14 +400,47 @@ const handleDelete = async (id: number) => {
}
/** 反审核按钮操作 */
// const handleReject = async () => {
// try {
// let ids = selectionList;
// /*let auditStatuss = row.ifaudit || this.auditStatuss;
//
// for(var vals of auditStatuss) {
// if(vals!='0'){
// message.error("");
// return;
// }
// }*/
//
// rejectform = {
// rejectReason: null
// };
// this.resetForm("rejectform");
// this.rejectTitle = "?";
// this.rejectOpen = true;
// } catch {}
// },
/** 审批/反审批操作 */
const handleUpdateBillStatus = async (ids: number[], status: number) => {
const handleUpdateBillStatus = async (ids: number[], operateKey: string) => {
try {
//
await message.confirm(`确定${status === 'C' ? '审核' : '反审核'}该订单吗?`)
let operateName = ''
if(operateKey === 'submit'){
operateName = '提交'
}else if(operateKey === "audit"){
operateName = '审核'
}else if(operateKey === "unaudit"){
operateName = '反审核'
}else {
return
}
await message.confirm(`确定${operateName}该订单吗?`)
//
await SaleOrderApi.updateSaleOrderBillStatus(ids, status)
message.success(`${status === 'C' ? '审核' : '反审核'}成功`)
await SaleOrderApi.updateSaleOrderBillStatus(ids, operateKey)
message.success(`${operateName}成功`)
//
await getList()
selectionList.value = selectionList.value.filter((item) => !ids.includes(item.id))
@ -388,7 +449,7 @@ const handleUpdateBillStatus = async (ids: number[], status: number) => {
/** 审批/反审批操作 */
const generateProduceOrder = async (ids: number[], status: number) => {
const generateProduceOrder = async (ids: number[]) => {
try {
//
await message.confirm(`是否生成生产制单?`)
@ -432,6 +493,26 @@ const handleSelectionChange = (rows: SaleOrderVO[]) => {
}
/** 驳回提交按钮 */
/*const submitRejectForm = async () => {
const ids = selectionList.map((item) => item.id
if (this.rejectform.rejectReason != null) {
const data = {
ids:ids,
reason:this.rejectform.rejectReason
}
/!* notAuditOrder(data).then(response => {
this.msgSuccess("驳回成功");
this.rejectOpen = false;
this.getList();
});*!/
}else {
message.error(`请选择驳回原因!`)
}
}*/
/** 激活时 */
onActivated(() => {
getList()

5
sql/mysql/init.sql Normal file
View File

@ -0,0 +1,5 @@
-- 初始化新增客户角色
INSERT INTO `system_role` (`id`, `name`, `code`, `sort`, `data_scope`, `data_scope_dept_ids`, `status`, `type`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (-999, '客户', 'customer', 3, 1, '', 0, 1, '客户', '1', '2024-08-26 23:09:05', '1', '2024-09-03 23:42:34', b'0', 1);
-- 初始化新增客户部门
INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (999999, '客户', 0, 1, NULL, NULL, NULL, 0, '113', '2022-03-07 21:44:50', '113', '2024-09-03 00:32:52', b'0', 122);