Merge branch 'dev' of https://git.yfgame.vip/r/hangtag into dev
# Conflicts: # hangtag-ui/hangtag-ui-front/src/locales/en.ts # hangtag-ui/hangtag-ui-front/src/views/oms/saleorder/index.vue
This commit is contained in:
commit
a232b6fe67
|
|
@ -11,4 +11,8 @@ public interface DictTypeConstants {
|
|||
String BILL_STATUS = "oms_bill_status"; // 单据状态
|
||||
|
||||
String ORDER_STATUS = "oms_order_status"; // 订单状态
|
||||
|
||||
String OMS_CONTRACT_TYPE = "oms_contract_type"; // 合约类型
|
||||
|
||||
String OMS_CURRENCY_TYPE = "currency_type"; // 结算币种
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package cn.hangtag.module.oms.controller.admin.app;
|
|||
|
||||
|
||||
import cn.hangtag.framework.apilog.core.annotation.ApiAccessLog;
|
||||
import cn.hangtag.framework.common.exception.ErrorCode;
|
||||
import cn.hangtag.framework.common.pojo.CommonResult;
|
||||
import cn.hangtag.framework.common.pojo.PageParam;
|
||||
import cn.hangtag.framework.common.pojo.PageResult;
|
||||
|
|
@ -36,6 +37,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
import static cn.hangtag.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
|
||||
import static cn.hangtag.framework.common.pojo.CommonResult.error;
|
||||
import static cn.hangtag.framework.common.pojo.CommonResult.success;
|
||||
|
||||
@Tag(name = "APP - 销售订单")
|
||||
|
|
@ -97,9 +99,12 @@ public class AppSaleOrderController{
|
|||
public CommonResult<PageResult<SaleOrderRespVO>> getSaleOrderPage(@Valid SaleOrderPageReqVO pageReqVO) {
|
||||
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||
CustomerDO customer = customerService.getCustomerByUserId(loginUser.getId());
|
||||
pageReqVO.setCustomerId(customer.getId());
|
||||
PageResult<SaleOrderDO> pageResult = saleOrderService.getSaleOrderPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, SaleOrderRespVO.class));
|
||||
if(customer!=null){
|
||||
pageReqVO.setCustomerId(customer.getId());
|
||||
PageResult<SaleOrderDO> pageResult = saleOrderService.getSaleOrderPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, SaleOrderRespVO.class));
|
||||
}
|
||||
return error(new ErrorCode(99999,"该用户未绑定客户资料,请联系管理员维护数据!"));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
|
|
|
|||
|
|
@ -77,6 +77,9 @@ public class ProduceOrderSaveReqVO {
|
|||
@Schema(description = "交货数量")
|
||||
private Long deliveryQty;
|
||||
|
||||
@Schema(description = "合约类型")
|
||||
private String contractType;
|
||||
|
||||
@Schema(description = "详情")
|
||||
private String details;
|
||||
|
||||
|
|
|
|||
|
|
@ -55,6 +55,12 @@ public class SaleContractSaveReqVO {
|
|||
@Schema(description = "地址")
|
||||
private String address;
|
||||
|
||||
@Schema(description = "合约类型")
|
||||
private String contractType;
|
||||
|
||||
@Schema(description = "结算币种")
|
||||
private String currencyType;
|
||||
|
||||
@Schema(description = "OMS销售合约分录列表")
|
||||
private List<SaleContractEntryDO> saleContractEntrys;
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,16 @@ public class SaleOrderRespVO {
|
|||
@DictFormat(DictTypeConstants.ORDER_STATUS)
|
||||
private Integer orderStatus;
|
||||
|
||||
@Schema(description = "合约类型", example = "2")
|
||||
@ExcelProperty(value = "合约类型", converter = DictConvert.class)
|
||||
@DictFormat(DictTypeConstants.OMS_CONTRACT_TYPE)
|
||||
private String contractType;
|
||||
|
||||
@Schema(description = "结算币种", example = "2")
|
||||
@ExcelProperty(value = "结算币种", converter = DictConvert.class)
|
||||
@DictFormat(DictTypeConstants.OMS_CURRENCY_TYPE)
|
||||
private String currencyType;
|
||||
|
||||
@Schema(description = "业务日期")
|
||||
@ExcelProperty("业务日期")
|
||||
private LocalDateTime bizdate;
|
||||
|
|
|
|||
|
|
@ -59,6 +59,12 @@ public class SaleOrderSaveReqVO {
|
|||
@Schema(description = "单据状态", example = "2")
|
||||
private String billStatus;
|
||||
|
||||
@Schema(description = "合约类型", example = "2")
|
||||
private String contractType;
|
||||
|
||||
@Schema(description = "结算币种", example = "2")
|
||||
private String currencyType;
|
||||
|
||||
@Schema(description = "订单状态", example = "2")
|
||||
private Integer orderStatus;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,9 @@ public interface SaleOrderConvert {
|
|||
@Mapping(source = "invoiceCode", target = "invoiceCode"),
|
||||
@Mapping(source = "invoiceName", target = "invoiceName"),
|
||||
@Mapping(source = "address", target = "address"),
|
||||
@Mapping(source = "emails", target = "emails")
|
||||
@Mapping(source = "emails", target = "emails"),
|
||||
@Mapping(source = "contractType", target = "contractType"),
|
||||
@Mapping(source = "currencyType", target = "currencyType")
|
||||
})
|
||||
SaleOrderRespVO convert(SaleOrderDO bean);
|
||||
|
||||
|
|
|
|||
|
|
@ -81,5 +81,13 @@ public class SaleContractDO extends BaseDO {
|
|||
* 地址
|
||||
*/
|
||||
private String address;
|
||||
/**
|
||||
* 合约类型
|
||||
*/
|
||||
private String contractType;
|
||||
/**
|
||||
* 结算币种
|
||||
*/
|
||||
private String currencyType;
|
||||
|
||||
}
|
||||
|
|
@ -164,6 +164,16 @@ public class SaleOrderDO extends BaseDO {
|
|||
*/
|
||||
private String orderFollowerUser;
|
||||
|
||||
/**
|
||||
* 合约类型
|
||||
*/
|
||||
private String contractType;
|
||||
|
||||
/**
|
||||
* 结算币种
|
||||
*/
|
||||
private String currencyType;
|
||||
|
||||
public SaleOrderDO(CreateSaleOrderDTO dto) {
|
||||
BeanUtil.copyProperties(dto, this,"bizdate","plansenddate");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ 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.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.ConstraintViolationException;
|
||||
|
|
@ -59,7 +60,11 @@ public class ProduceOrderServiceImpl implements ProduceOrderService {
|
|||
if(FuncUtil.isNotEmpty(code)){
|
||||
checkCode(produceOrder.getId(),code);
|
||||
}else {
|
||||
produceOrder.setBillno(getNewCode());
|
||||
String newCode = getNewCode();
|
||||
if(StringUtils.isNotBlank(createReqVO.getContractType())){
|
||||
newCode = newCode.replace("XSHY-",createReqVO.getContractType()+"-");
|
||||
}
|
||||
produceOrder.setBillno(newCode);
|
||||
}
|
||||
produceOrderMapper.insert(produceOrder);
|
||||
// 返回
|
||||
|
|
@ -76,10 +81,12 @@ public class ProduceOrderServiceImpl implements ProduceOrderService {
|
|||
Double specSizeWidth = productInfo.getSpecSizeWidth();
|
||||
Double specSizeHeight = productInfo.getSpecSizeHeight();
|
||||
String specMaterial = productInfo.getSpecMaterial();
|
||||
String productionInfo = productInfo.getProductionInfo();
|
||||
StringBuffer str = new StringBuffer();
|
||||
str.append(String.format("货名:%s\r\n",productInfo.getName()));
|
||||
/* str.append(String.format("货名:%s\r\n",productInfo.getName()));
|
||||
str.append(String.format("规格:%s × %s \r\n",specSizeWidth,specSizeHeight));
|
||||
str.append(String.format("纸质:%s \r\n",specMaterial));
|
||||
str.append(String.format("纸质:%s \r\n",specMaterial));*/;
|
||||
str.append(String.format("%s ",productionInfo));
|
||||
updateObj.setDetails(str.toString());
|
||||
|
||||
produceOrderMapper.updateById(updateObj);
|
||||
|
|
|
|||
|
|
@ -160,6 +160,12 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
// 插入
|
||||
SaleOrderDO saleOrder = BeanUtils.toBean(createReqVO, SaleOrderDO.class);
|
||||
saleOrder.setOrderStatus(SaleOrderStatusEnum.YXD.getValue());
|
||||
List<SaleOrderEntryDO> entrys = createReqVO.getEntrys();
|
||||
String currency = null;
|
||||
if(entrys!=null&&entrys.size()>0){
|
||||
currency = entrys.get(0).getCurrency();
|
||||
}
|
||||
saleOrder.setCurrency(currency);
|
||||
saleOrderMapper.insert(saleOrder);
|
||||
// 插入子表
|
||||
createSaleOrderEntryList(saleOrder.getId(), createReqVO.getEntrys());
|
||||
|
|
@ -322,8 +328,15 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
case "audit": //审核
|
||||
for (SaleOrderDO saleOrder : saleOrders) {
|
||||
if (BillStatusEnum.SUBMIT.getValue().equals(saleOrder.getBillStatus())) {
|
||||
|
||||
List<SaleOrderEntryDO> entrys = getSaleOrderEntryListByParentId(saleOrder.getId());
|
||||
String contractType = saleOrder.getContractType();
|
||||
String currencyType = saleOrder.getCurrencyType();
|
||||
if(StringUtils.isBlank(contractType)){
|
||||
throw new ServiceException(001, "合约类型不允许为空!");
|
||||
}
|
||||
if(StringUtils.isBlank(currencyType)){
|
||||
throw new ServiceException(001, "结算币种不允许为空!");
|
||||
}
|
||||
if (entrys == null || entrys.isEmpty()) {
|
||||
throw new ServiceException(001, "产品明细为空");
|
||||
}
|
||||
|
|
@ -401,7 +414,7 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case "unaudit": //审核
|
||||
case "unaudit": //反审核
|
||||
for (SaleOrderDO saleOrder : saleOrders) {
|
||||
if (!BillStatusEnum.AUDIT.getValue().equals(saleOrder.getBillStatus())) {
|
||||
throw new ServiceException(001, "订单状态不等于已审核状态,不允许反审核!");
|
||||
|
|
@ -439,7 +452,7 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
ProductInfoDO productInfo = productInfoService.getProductInfo(entry.getMaterialId());
|
||||
ProduceOrderSaveReqVO saveReqVO = new ProduceOrderSaveReqVO();
|
||||
saveReqVO.setOrderNo(saleOrder.getBillno());
|
||||
saveReqVO.setSaleContractNo(saleOrder.getBillno());
|
||||
saveReqVO.setSaleContractNo(saleOrder.getContractCode());
|
||||
saveReqVO.setCustomerId(customer.getId());
|
||||
saveReqVO.setCustomerCode(customer.getNumber());
|
||||
saveReqVO.setProductId(entry.getMaterialId());
|
||||
|
|
@ -474,6 +487,7 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
SaleOrderDO saleOrderDO = new SaleOrderDO();
|
||||
saleOrderDO.setId(saleOrder.getId());
|
||||
saleOrderDO.setOrderStatus(SaleOrderStatusEnum.YWC.getValue());
|
||||
saleOrderDO.setBillStatus(BillStatusEnum.YPLAN.getValue());
|
||||
saleOrderMapper.updateById(saleOrderDO);
|
||||
//}
|
||||
}
|
||||
|
|
@ -508,6 +522,7 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
context.setVariable("clerk", saleContract.getClerk());
|
||||
context.setVariable("saleOrderNo", saleContract.getCustomerBuyNo());
|
||||
context.setVariable("totalAmount", saleContract.getAmount());
|
||||
context.setVariable("currencyType", saleContract.getCurrencyType());
|
||||
context.setVariable("zhTotalAmount", "合共人民币" + NumberChineseFormatterUtils.convertToChinese(saleContract.getAmount()) + "整");
|
||||
|
||||
for (int i = 0; i < saleContractEntrys.size(); i++) {
|
||||
|
|
@ -973,11 +988,17 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
private SaleContractSaveReqVO toSaleContractVO(SaleOrderDO saleOrder, List<SaleOrderEntryDO> entrys) {
|
||||
CustomerDO customer = customerService.getCustomer(saleOrder.getCustomerId());
|
||||
SaleContractSaveReqVO saveReqVO = new SaleContractSaveReqVO();
|
||||
// 优先使用销售订单合同号
|
||||
String billno = getNewOrderCode2();
|
||||
String contractType = saleOrder.getContractType();
|
||||
if(StringUtils.isNotBlank(contractType)){
|
||||
billno = billno.replace("XXXX-",contractType+"-");
|
||||
}
|
||||
/* // 优先使用销售订单合同号
|
||||
String billno = saleOrder.getContractCode();
|
||||
if (FuncUtil.isEmpty(billno)) {
|
||||
billno = getNewContractCode2();
|
||||
}
|
||||
}*/
|
||||
|
||||
saveReqVO.setBillno(billno);
|
||||
saveReqVO.setCustomerId(saleOrder.getCustomerId());
|
||||
saveReqVO.setCustomerName(customer.getName());
|
||||
|
|
@ -990,6 +1011,8 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
saveReqVO.setFax(saleOrder.getFax());
|
||||
saveReqVO.setAmount(saleOrder.getOrderAmount());
|
||||
saveReqVO.setAddress(saleOrder.getDeliveryAddress());
|
||||
saveReqVO.setContractType(saleOrder.getContractType());
|
||||
saveReqVO.setCurrencyType(saleOrder.getCurrencyType());
|
||||
|
||||
List<SaleContractEntryDO> list = new ArrayList<>();
|
||||
for (SaleOrderEntryDO entry : entrys) {
|
||||
|
|
@ -1155,4 +1178,44 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
return saleOrderDO;
|
||||
}
|
||||
|
||||
private String getNewOrderCode2() {
|
||||
String s = "";
|
||||
int count = 10;
|
||||
while (true){
|
||||
count --;
|
||||
try {
|
||||
s = CodingRulesUtils.generateCode(saleContractCodeId, false);
|
||||
checkCode2(null,s);
|
||||
return s;
|
||||
}catch (ServiceException e){
|
||||
log.warn("重复或者下一个编码");
|
||||
if(count < 0){
|
||||
log.error("编码获取失败");
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void checkCode2(Long id,String code){
|
||||
if(FuncUtil.isNotEmpty(code)){
|
||||
LambdaQueryWrapper<SaleContractDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.select(SaleContractDO::getId,SaleContractDO::getBillno, BaseDO::getDeleted);
|
||||
lambdaQueryWrapper.eq(SaleContractDO::getBillno, code);
|
||||
lambdaQueryWrapper.eq(SaleContractDO::getDeleted,false);
|
||||
List<SaleContractDO> dos = saleContractMapper.selectList(lambdaQueryWrapper);
|
||||
if(FuncUtil.isEmpty(id) && FuncUtil.isNotEmpty(dos)){
|
||||
throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE);
|
||||
}
|
||||
if (FuncUtil.isNotEmpty(id) && FuncUtil.isNotEmpty(dos)) {
|
||||
for (SaleContractDO aDo : dos) {
|
||||
// 出现重复并当前id 不一致
|
||||
if(!FuncUtil.equals(aDo.getId(), id)){
|
||||
throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -118,9 +118,9 @@
|
|||
<th style="width: 4%;">项目</th>
|
||||
<th style="width: 25%;">产品说明</th>
|
||||
<th style="width: 5%;text-align: center;">数量</th>
|
||||
<th style="width: 8%;text-align: center;">单位订价RMB</th>
|
||||
<th style="width: 8%;text-align: center;">单位订价<span th:text="${currencyType}"></span></th>
|
||||
<th style="width: 5%;text-align: center;">折扣%</th>
|
||||
<th style="width: 7%;text-align: center;">金额RMB</th>
|
||||
<th style="width: 7%;text-align: center;">金额<span th:text="${currencyType}"></span></th>
|
||||
<th style="width: 7%;text-align: center;">交货日期</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
@ -252,7 +252,7 @@
|
|||
<span
|
||||
style="font-weight: bold;font-size: 16px; padding: 8px 0px 8px 0px;border-top: 1px solid #dddddd;border-bottom: 2px solid #dddddd;">
|
||||
|
||||
<span style="margin-right: 80px;">RMB</span>
|
||||
<span style="margin-right: 80px;" th:text="${currencyType}">RMB</span>
|
||||
<span th:text="${totalAmount}">XXXXXXXxXX</span>
|
||||
</span>
|
||||
</span>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package cn.hangtag.module.system.controller.admin.auth.vo;
|
||||
|
||||
import cn.hangtag.framework.common.validation.Email;
|
||||
import cn.hangtag.framework.common.validation.Mobile;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
|
|
@ -9,6 +8,7 @@ import lombok.Data;
|
|||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Schema(description = "管理后台 - 邮箱验证码的重置密码 Request VO")
|
||||
@Data
|
||||
|
|
@ -35,7 +35,7 @@ public class AuthMailModifyPwdReqVO {
|
|||
private String code;
|
||||
|
||||
@Schema(description = "账户类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
|
||||
@NotEmpty(message = "账户类型不能为空")
|
||||
@NotNull(message = "账户类型不能为空")
|
||||
private Integer type;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
{
|
||||
"id": 2804,
|
||||
"parentId": 0,
|
||||
"name": "订单管理",
|
||||
"name": "order.ordermanage",
|
||||
"path": "/order",
|
||||
"component": "",
|
||||
"componentName": "",
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
{
|
||||
"id": 2830,
|
||||
"parentId": 2828,
|
||||
"name": "我的订单",
|
||||
"name": "order.myorder",
|
||||
"path": "sale-order",
|
||||
"component": "oms/saleorder/index",
|
||||
"componentName": "SaleOrder",
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
{
|
||||
"id": 2818,
|
||||
"parentId": 2804,
|
||||
"name": "创建订单",
|
||||
"name": "order.createorder",
|
||||
"path": "createorder",
|
||||
"component": "oms/order/createorder/index",
|
||||
"componentName": "CreateOrder",
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ export interface SaleOrderVO {
|
|||
address: string // 地址
|
||||
currency: string // 货币
|
||||
invoiceRemarks: string // 发票备注
|
||||
contractType: string // 合约类型
|
||||
currencyType: string // 结算币种
|
||||
}
|
||||
|
||||
// 销售订单 API
|
||||
|
|
|
|||
|
|
@ -69,12 +69,6 @@ export default defineComponent({
|
|||
{size.value ? (
|
||||
<SizeDropdown class="custom-hover" color="var(--top-header-text-color)"></SizeDropdown>
|
||||
) : undefined}
|
||||
{locale.value ? (
|
||||
<LocaleDropdown
|
||||
class="custom-hover"
|
||||
color="var(--top-header-text-color)"
|
||||
></LocaleDropdown>
|
||||
) : undefined}
|
||||
{message.value ? (
|
||||
<Message class="custom-hover" color="var(--top-header-text-color)"></Message>
|
||||
) : undefined}
|
||||
|
|
|
|||
|
|
@ -207,6 +207,7 @@ export default {
|
|||
toDo: 'To do',
|
||||
introduction: 'A serious introduction',
|
||||
shortcutOperation: 'Quick entry',
|
||||
operationData: 'Operation Data',
|
||||
operation: 'Operation',
|
||||
index: 'Index',
|
||||
personal: 'Personal',
|
||||
|
|
@ -460,6 +461,86 @@ export default {
|
|||
btn_zoom_out: 'Zoom out',
|
||||
preview: 'Preivew'
|
||||
},
|
||||
|
||||
order:{
|
||||
ordermanage:'Order Manage',
|
||||
myorder:'My Order',
|
||||
createorder:'Create Order'
|
||||
},
|
||||
orderstatus:{
|
||||
rejectedOrder:'Rejected Order',
|
||||
waitAuditOrder:'Wait Audit Order',
|
||||
waitArrangeOrder:'Wait Arrange Order',
|
||||
},
|
||||
omsSystem: {
|
||||
title:'Silver Pringting OMS'
|
||||
},
|
||||
billform:{
|
||||
pleaseenter:'pleaseenter ',
|
||||
pleaseselect:'pleaseselect ',
|
||||
startdate:'startdate',
|
||||
enddate:'enddate',
|
||||
},
|
||||
billlist:{
|
||||
search:'Search',
|
||||
reset:'Reset',
|
||||
cancel:'Cancel',
|
||||
submit:'Submit',
|
||||
export:'Export',
|
||||
all:'All',
|
||||
waitAudit:'Wait Audit',
|
||||
waitArrange:'Wait Arrange',
|
||||
planned:'Planned',
|
||||
edit:'edit',
|
||||
details:'details',
|
||||
operate:'operate',
|
||||
},
|
||||
saleorder:{
|
||||
title:{
|
||||
details:'OrderDetails',
|
||||
remarks:'remarks',
|
||||
orderinfo:'OrderInfo',
|
||||
orderstatus:'OrderStatus',
|
||||
productinfo:'ProductInfo',
|
||||
invoiceinfo:'InvoiceInfo',
|
||||
billinfo:'BillInfo',
|
||||
},
|
||||
billno:'orderNo',
|
||||
customer:'customer',
|
||||
salesperson:'salesPerson',
|
||||
followUpPerson:'followUpPerson',
|
||||
bizdate:'bizdate',
|
||||
confirmdate:'confirmdate',
|
||||
plandate:'plandate',
|
||||
orderstatus:'orderstatus',
|
||||
phone:'phone',
|
||||
remark:'remark',
|
||||
contractType:'contractType',
|
||||
emails:'emails',
|
||||
fax:'fax',
|
||||
customerCompany:'customerCompany',
|
||||
customerNumber:'customerNumber',
|
||||
customerName:'customerName',
|
||||
currencyType:'currencyType',
|
||||
invoiceCode:'invoiceCode',
|
||||
invoiceName:'invoiceName',
|
||||
invoiceAddress:'invoiceAddress',
|
||||
invoiceRemarks:'invoiceRemarks',
|
||||
createTime:'createTime',
|
||||
updaterName:'updaterName',
|
||||
updateTime:'updateTime',
|
||||
auditorName:'auditorName',
|
||||
auditorTime:'auditorTime',
|
||||
entry:{
|
||||
productNumber:'productNumber',
|
||||
productName:'productName',
|
||||
productSpec:'productSpec',
|
||||
qty:'qty',
|
||||
price:'price',
|
||||
discount:'discount',
|
||||
amount:'amount',
|
||||
}
|
||||
},
|
||||
designInfo: {
|
||||
"auditSubmitText": "Submit for Review",
|
||||
"auditTips": "This draft is only for content verification and is not the final print file.",
|
||||
|
|
|
|||
|
|
@ -208,6 +208,7 @@ export default {
|
|||
toDo: '待办',
|
||||
introduction: '一个正经的简介',
|
||||
shortcutOperation: '快捷入口',
|
||||
operationData: '运营数据',
|
||||
operation: '操作',
|
||||
index: '指数',
|
||||
personal: '个人',
|
||||
|
|
@ -454,6 +455,87 @@ export default {
|
|||
btn_zoom_out: '缩小',
|
||||
preview: '预览'
|
||||
},
|
||||
'OAuth 2.0': 'OAuth 2.0' // 避免菜单名是 OAuth 2.0 时,一直 warn 报错
|
||||
,
|
||||
order:{
|
||||
ordermanage:'订单管理',
|
||||
myorder:'我的订单',
|
||||
createorder:'创建订单'
|
||||
},
|
||||
orderstatus:{
|
||||
rejectedOrder:'已驳回订单',
|
||||
waitAuditOrder:'待审核订单',
|
||||
waitArrangeOrder:'待排产订单',
|
||||
},
|
||||
omsSystem: {
|
||||
title:'嘉晋OMS下单系统'
|
||||
},
|
||||
billform:{
|
||||
pleaseenter:'请输入',
|
||||
pleaseselect:'请选择',
|
||||
startdate:'开始日期',
|
||||
enddate:'结束日期',
|
||||
},
|
||||
billlist:{
|
||||
search:'搜索',
|
||||
reset:'重置',
|
||||
cancel:'作废',
|
||||
submit:'提交',
|
||||
export:'导出',
|
||||
all:'全部',
|
||||
waitAudit:'待审核',
|
||||
waitArrange:'待排产',
|
||||
planned:'已排产',
|
||||
edit:'编辑',
|
||||
details:'详情',
|
||||
operate:'操作',
|
||||
},
|
||||
saleorder:{
|
||||
title:{
|
||||
details:'订单详情',
|
||||
remarks:'备注',
|
||||
orderinfo:'订单信息',
|
||||
orderstatus:'订单状态',
|
||||
productinfo:'产品信息',
|
||||
invoiceinfo:'发票信息',
|
||||
billinfo:'制单信息',
|
||||
},
|
||||
billno:'订单号',
|
||||
customer:'客户',
|
||||
salesperson:'销售员',
|
||||
followUpPerson:'跟单员',
|
||||
bizdate:'业务日期',
|
||||
confirmdate:'确认日期',
|
||||
plandate:'计划日期',
|
||||
orderstatus:'订单状态',
|
||||
phone:'手机',
|
||||
remark:'备注',
|
||||
contractType:'合约类型',
|
||||
emails:'邮箱',
|
||||
fax:'传真',
|
||||
customerCompany:'客户公司',
|
||||
customerNumber:'客户编号',
|
||||
customerName:'客户名称',
|
||||
currencyType:'结算币种',
|
||||
invoiceCode:'发票抬头',
|
||||
invoiceName:'发票名称',
|
||||
invoiceAddress:'发票地址',
|
||||
invoiceRemarks:'发票备注',
|
||||
createTime:'创建时间',
|
||||
updaterName:'修改人',
|
||||
updateTime:'修改时间',
|
||||
auditorName:'审核人',
|
||||
auditorTime:'审核时间',
|
||||
entry:{
|
||||
productNumber:'产品编码',
|
||||
productName:'产品名称',
|
||||
productSpec:'产品规格',
|
||||
qty:'数量',
|
||||
price:'单价',
|
||||
discount:'折扣',
|
||||
amount:'金额',
|
||||
}
|
||||
},
|
||||
designInfo: {
|
||||
auditSubmitText: '批稿',
|
||||
auditTips: '此稿件仅仅作为核对内容使用用,不作为最终印刷稿件;',
|
||||
|
|
@ -586,5 +668,4 @@ export default {
|
|||
colLabelRemark: '备注',
|
||||
colLabelDetails: '详情描述',
|
||||
},
|
||||
'OAuth 2.0': 'OAuth 2.0' // 避免菜单名是 OAuth 2.0 时,一直 warn 报错
|
||||
}
|
||||
|
|
|
|||
|
|
@ -221,5 +221,6 @@ export enum DICT_TYPE {
|
|||
OMS_ORDER_STATUS = 'oms_order_status',// 订单状态
|
||||
OMS_PRODUCT_CARE_ITEM_TYPE = 'oms_product_care_item_type', //产品保养项目类型 1.成分说明 2.洗涤说明 3.使用说明 4.尺码
|
||||
OMS_PRODUCT_CARE_PROCESS_TYPE = 'oms_product_care_process_type', //产品护理过程类型 1洗涤 2漂白 3烘干 4自然干燥 5熨烫 6专业纺织品护理工艺
|
||||
OMS_CONTRACT_TYPE = 'oms_contract_type', //合约类型
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -175,6 +175,7 @@ import startPreview from "./components/preview.vue"
|
|||
import {dateUtil} from "@/utils/dateUtil";
|
||||
import {dateFormatter, formatDate} from '@/utils/formatTime'
|
||||
import ProductInfoListDialog from "@/components/Dialog/src/ProductInfoListDialog/index.vue";
|
||||
import {ProductInfoApi} from "@/api/oms/productinfo";
|
||||
|
||||
|
||||
/** 生产制单 表单 */
|
||||
|
|
@ -306,6 +307,7 @@ const downpdf = async () => {
|
|||
if (id) {
|
||||
formData.value = await ProduceOrderApi.getProduceOrder(id)
|
||||
}
|
||||
|
||||
//日期转换
|
||||
formData.value.contractDateStr = formatDate(formData.value.contractDate,'YYYY-MM-DD')
|
||||
formData.value.reportDateStr = formatDate(formData.value.reportDate,'YYYY-MM-DD')
|
||||
|
|
@ -315,6 +317,17 @@ const downpdf = async () => {
|
|||
formData.value.deliverydateStr = formatDate(formData.value.deliverydate,'YYYY-MM-DD')
|
||||
//formData.value.saleContractNo = formData.value.orderNo
|
||||
|
||||
if(formData.value.productId){
|
||||
const material = await ProductInfoApi.getProductInfo(formData.value.productId)
|
||||
formData.value.productCode = material.code
|
||||
formData.value.productName = material.name
|
||||
formData.value.details = material.productionInfo
|
||||
}else {
|
||||
formData.value.productCode = ''
|
||||
formData.value.productName = ''
|
||||
formData.value.details = ''
|
||||
}
|
||||
|
||||
let printData = JSON.stringify(formData.value)
|
||||
printData = JSON.parse(printData)
|
||||
let hiprintTemplate = new hiprint.PrintTemplate({template: template1});
|
||||
|
|
@ -345,6 +358,19 @@ const preview = async () => {
|
|||
formData.value.deliverydateStr = formatDate(formData.value.deliverydate,'YYYY-MM-DD')
|
||||
//formData.value.saleContractNo = formData.value.orderNo
|
||||
|
||||
if(formData.value.productId){
|
||||
const material = await ProductInfoApi.getProductInfo(formData.value.productId)
|
||||
formData.value.productCode = material.code
|
||||
formData.value.productName = material.name
|
||||
formData.value.details = material.productionInfo
|
||||
}else {
|
||||
formData.value.productCode = ''
|
||||
formData.value.productName = ''
|
||||
formData.value.details = ''
|
||||
}
|
||||
|
||||
|
||||
|
||||
let printData = JSON.stringify(formData.value)
|
||||
printData = JSON.parse(printData)
|
||||
let hiprintTemplate = new hiprint.PrintTemplate({template: template1});
|
||||
|
|
|
|||
|
|
@ -408,14 +408,14 @@ export default {
|
|||
{
|
||||
"options": {
|
||||
"left": 474,
|
||||
"top": 177,
|
||||
"top": 187.5,
|
||||
"height": 9.75,
|
||||
"width": 120,
|
||||
"title": "数量",
|
||||
"right": 574.5,
|
||||
"bottom": 131.25,
|
||||
"vCenter": 514.5,
|
||||
"hCenter": 126.375,
|
||||
"right": 593.9926071166992,
|
||||
"bottom": 186.7401351928711,
|
||||
"vCenter": 533.9926071166992,
|
||||
"hCenter": 181.8651351928711,
|
||||
"field": "deliveryQty",
|
||||
"coordinateSync": false,
|
||||
"widthHeightSync": false,
|
||||
|
|
|
|||
|
|
@ -21,16 +21,48 @@
|
|||
@click="remark">备注</el-button>
|
||||
<!-- 订单信息 -->
|
||||
<el-descriptions title="订单信息">
|
||||
<el-descriptions-item label="订单号: ">{{ formData.billno }}</el-descriptions-item>
|
||||
<el-descriptions-item label="业务日期: ">{{ formatDate(formData.bizdate,'YYYY-MM-DD') }}</el-descriptions-item>
|
||||
<el-descriptions-item label="确认日期: ">{{ formatDate(formData.confirmdate,'YYYY-MM-DD') }}</el-descriptions-item>
|
||||
<el-descriptions-item label="计划日期: ">{{ formatDate(formData.plansenddate,'YYYY-MM-DD') }}</el-descriptions-item>
|
||||
<el-descriptions-item label="订单号: " width="1000px">{{ formData.billno }}</el-descriptions-item>
|
||||
<el-descriptions-item label="合约类型: " width="1000px" v-if="formData.billStatus == 'B'">
|
||||
<el-select
|
||||
v-model="formData.contractType"
|
||||
placeholder="请选择合约类型"
|
||||
clearable
|
||||
class="!w-300px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions(DICT_TYPE.OMS_CONTRACT_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="合约类型: " width="1000px" v-else>{{ formData.contractType }}</el-descriptions-item>
|
||||
<el-descriptions-item label="业务日期: " width="500px">{{ formatDate(formData.bizdate,'YYYY-MM-DD') }}</el-descriptions-item>
|
||||
<el-descriptions-item label="确认日期: " >{{ formatDate(formData.confirmdate,'YYYY-MM-DD') }}</el-descriptions-item>
|
||||
<el-descriptions-item label="计划日期: " >{{ formatDate(formData.plansenddate,'YYYY-MM-DD') }}</el-descriptions-item>
|
||||
<el-descriptions-item label="手机: ">{{ formData.phone }}</el-descriptions-item>
|
||||
<el-descriptions-item label="传真: ">{{ formData.fax }}</el-descriptions-item>
|
||||
<el-descriptions-item label="邮箱: ">{{ formData.emails }}</el-descriptions-item>
|
||||
<el-descriptions-item label="客户编号: ">{{ formData?.customer?.number }}</el-descriptions-item>
|
||||
<el-descriptions-item label="客户名称: ">{{ formData?.customer?.name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="客户公司: ">{{ formData?.customer?.company }}</el-descriptions-item>
|
||||
<el-descriptions-item label="结算币种: " v-if="formData.billStatus == 'B'">
|
||||
<el-select
|
||||
v-model="formData.currencyType"
|
||||
placeholder="请选择结算币种"
|
||||
clearable
|
||||
class="!w-300px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions(DICT_TYPE.CURRENCY_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label+'('+dict.value+')'"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="结算币种: " v-else >{{ formData.currencyType }}</el-descriptions-item>
|
||||
<el-descriptions-item label="订单备注: ">{{ formData.remark }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
|
|
@ -149,19 +181,19 @@
|
|||
|
||||
<!-- 订单信息 -->
|
||||
<el-descriptions title="发票信息">
|
||||
<el-descriptions-item label="发票抬头: ">{{ formData.invoiceCode }}</el-descriptions-item>
|
||||
<el-descriptions-item label="发票名称: ">{{ formData.invoiceName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="货币: ">{{ formData.currency }}</el-descriptions-item>
|
||||
<el-descriptions-item label="发票备注: ">{{ formData.invoiceRemarks }}</el-descriptions-item>
|
||||
<el-descriptions-item label="发票抬头: " width="1000px">{{ formData.invoiceCode }}</el-descriptions-item>
|
||||
<el-descriptions-item label="发票名称: " width="1000px">{{ formData.invoiceName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="发票地址: " width="500px">{{ formData.address }}</el-descriptions-item>
|
||||
<el-descriptions-item label="发票备注: " width="500px">{{ formData.invoiceRemarks }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
|
||||
|
||||
<!-- 订单信息 -->
|
||||
<el-descriptions title="制单信息">
|
||||
<el-descriptions-item label="创建时间: ">{{ formatDate(formData.createTime) }}</el-descriptions-item>
|
||||
<el-descriptions-item label="修改人: ">{{ formData.updaterName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="修改时间: ">{{ formatDate(formData.updateTime) }}</el-descriptions-item>
|
||||
<el-descriptions-item label="创建时间: " width="1000px">{{ formatDate(formData.createTime) }}</el-descriptions-item>
|
||||
<el-descriptions-item label="修改人: " width="1000px">{{ formData.updaterName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="修改时间: " width="500px">{{ formatDate(formData.updateTime) }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核人: ">{{ formData.auditorName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间: ">{{ formatDate(formData.auditorTime) }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
|
@ -172,8 +204,8 @@
|
|||
<OrderUpdateAddressForm ref="updateAddressFormRef" @success="getDetail" />
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import { fenToYuan } from '@/utils'
|
||||
import { DICT_TYPE, getDictLabel, getDictObj } from '@/utils/dict'
|
||||
import { formatDate } from '@/utils/formatTime'
|
||||
import OrderUpdateRemarkForm from '@/views/oms/saleorder/form/OrderUpdateRemarkForm.vue'
|
||||
import OrderUpdateAddressForm from '@/views/oms/saleorder/form/OrderUpdateAddressForm.vue'
|
||||
|
|
@ -187,16 +219,22 @@ const message = useMessage() // 消息弹窗
|
|||
|
||||
|
||||
|
||||
// 订单详情
|
||||
const formData = ref<SaleOrderVO>({
|
||||
logs: []
|
||||
})
|
||||
const itemFormRules = reactive({
|
||||
contractType: [{ required: true, message: '合约类型不能为空', trigger: 'blur' }],
|
||||
})
|
||||
|
||||
|
||||
const itemFormEntrysRef = ref() // 表单 Ref
|
||||
|
||||
const itemFormEntrysRules = reactive({
|
||||
price: [{ required: true, message: '单价不能为空', trigger: 'blur' }],
|
||||
})
|
||||
|
||||
// 订单详情
|
||||
const formData = ref<SaleOrderVO>({
|
||||
logs: []
|
||||
})
|
||||
|
||||
|
||||
/** 各种操作 */
|
||||
const updateRemarkForm = ref() // 订单备注表单 Ref
|
||||
|
|
@ -214,16 +252,26 @@ const changeRow = async (row,key:string) => {
|
|||
let price = row.price
|
||||
let qty = row.qty
|
||||
let discount = row.discount
|
||||
row.amount = (price*qty) * (1-(discount/100))
|
||||
let amount = (price*qty) * (1-(discount/100))
|
||||
row.amount = amount.toFixed(2);
|
||||
//100*(1-(2/100))
|
||||
}
|
||||
}
|
||||
const handleSave = async () => {
|
||||
try {
|
||||
if(!formData.value.contractType){
|
||||
message.alertError("合约类型不能为空")
|
||||
return
|
||||
}
|
||||
if(!formData.value.currencyType){
|
||||
message.alertError("结算币种不能为空")
|
||||
return
|
||||
}
|
||||
// 校验表单
|
||||
await itemFormEntrysRef.value.validate()
|
||||
// 提交
|
||||
await SaleOrderApi.updateOrderEntrys(formData.value)
|
||||
await SaleOrderApi.updateSaleOrder(formData.value)
|
||||
//await SaleOrderApi.updateOrderEntrys(formData.value)
|
||||
message.success('保存成功')
|
||||
// 刷新列表
|
||||
await getDetail()
|
||||
|
|
@ -233,6 +281,14 @@ const handleSave = async () => {
|
|||
/** 审核 */
|
||||
const handleAudit = async () => {
|
||||
try {
|
||||
if(!formData.value.contractType){
|
||||
message.alertError("合约类型不能为空")
|
||||
return
|
||||
}
|
||||
if(!formData.value.currencyType){
|
||||
message.alertError("结算币种不能为空")
|
||||
return
|
||||
}
|
||||
// 校验表单
|
||||
await itemFormEntrysRef.value.validate()
|
||||
// 二次确认
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@ import { isString } from '@/utils/is'
|
|||
import { useAppStoreWithOut } from '@/store/modules/app'
|
||||
|
||||
const appStore = useAppStoreWithOut()
|
||||
|
||||
const { t } = useI18n()
|
||||
export const useTitle = (newTitle?: string) => {
|
||||
const { t } = useI18n()
|
||||
const title = ref(
|
||||
newTitle ? `${appStore.getTitle} - ${t(newTitle as string)}` : appStore.getTitle
|
||||
newTitle ? t('omsSystem.title') + ` - ${t(newTitle as string)}` : t('omsSystem.title')
|
||||
)
|
||||
|
||||
watch(
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ defineOptions({ name: 'Footer' })
|
|||
const { getPrefixCls } = useDesign()
|
||||
|
||||
const prefixCls = getPrefixCls('footer')
|
||||
|
||||
const { t } = useI18n()
|
||||
const appStore = useAppStore()
|
||||
|
||||
const title = computed(() => appStore.getTitle)
|
||||
|
|
@ -19,6 +19,6 @@ const title = computed(() => appStore.getTitle)
|
|||
:class="prefixCls"
|
||||
class="h-[var(--app-footer-height)] bg-[var(--app-content-bg-color)] text-center leading-[var(--app-footer-height)] text-[var(--el-text-color-placeholder)] dark:bg-[var(--el-bg-color)]"
|
||||
>
|
||||
<span class="text-14px">Copyright ©2022-{{ title }}</span>
|
||||
<span class="text-14px">Copyright ©2022-{{ t('omsSystem.title') }}</span>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -207,6 +207,7 @@ export default {
|
|||
toDo: 'To do',
|
||||
introduction: 'A serious introduction',
|
||||
shortcutOperation: 'Quick entry',
|
||||
operationData: 'Operation Data',
|
||||
operation: 'Operation',
|
||||
index: 'Index',
|
||||
personal: 'Personal',
|
||||
|
|
@ -460,6 +461,86 @@ export default {
|
|||
btn_zoom_out: 'Zoom out',
|
||||
preview: 'Preivew'
|
||||
},
|
||||
|
||||
order:{
|
||||
ordermanage:'Order Manage',
|
||||
myorder:'My Order',
|
||||
createorder:'Create Order'
|
||||
},
|
||||
orderstatus:{
|
||||
rejectedOrder:'Rejected Order',
|
||||
waitAuditOrder:'Wait Audit Order',
|
||||
waitArrangeOrder:'Wait Arrange Order',
|
||||
},
|
||||
omsSystem: {
|
||||
title:'Silver Pringting OMS'
|
||||
},
|
||||
billform:{
|
||||
pleaseenter:'pleaseenter ',
|
||||
pleaseselect:'pleaseselect ',
|
||||
startdate:'startdate',
|
||||
enddate:'enddate',
|
||||
},
|
||||
billlist:{
|
||||
search:'Search',
|
||||
reset:'Reset',
|
||||
cancel:'Cancel',
|
||||
submit:'Submit',
|
||||
export:'Export',
|
||||
all:'All',
|
||||
waitAudit:'Wait Audit',
|
||||
waitArrange:'Wait Arrange',
|
||||
planned:'Planned',
|
||||
edit:'edit',
|
||||
details:'details',
|
||||
operate:'operate',
|
||||
},
|
||||
saleorder:{
|
||||
title:{
|
||||
details:'OrderDetails',
|
||||
remarks:'remarks',
|
||||
orderinfo:'OrderInfo',
|
||||
orderstatus:'OrderStatus',
|
||||
productinfo:'ProductInfo',
|
||||
invoiceinfo:'InvoiceInfo',
|
||||
billinfo:'BillInfo',
|
||||
},
|
||||
billno:'orderNo',
|
||||
customer:'customer',
|
||||
salesperson:'salesPerson',
|
||||
followUpPerson:'followUpPerson',
|
||||
bizdate:'bizdate',
|
||||
confirmdate:'confirmdate',
|
||||
plandate:'plandate',
|
||||
orderstatus:'orderstatus',
|
||||
phone:'phone',
|
||||
remark:'remark',
|
||||
contractType:'contractType',
|
||||
emails:'emails',
|
||||
fax:'fax',
|
||||
customerCompany:'customerCompany',
|
||||
customerNumber:'customerNumber',
|
||||
customerName:'customerName',
|
||||
currencyType:'currencyType',
|
||||
invoiceCode:'invoiceCode',
|
||||
invoiceName:'invoiceName',
|
||||
invoiceAddress:'invoiceAddress',
|
||||
invoiceRemarks:'invoiceRemarks',
|
||||
createTime:'createTime',
|
||||
updaterName:'updaterName',
|
||||
updateTime:'updateTime',
|
||||
auditorName:'auditorName',
|
||||
auditorTime:'auditorTime',
|
||||
entry:{
|
||||
productNumber:'productNumber',
|
||||
productName:'productName',
|
||||
productSpec:'productSpec',
|
||||
qty:'qty',
|
||||
price:'price',
|
||||
discount:'discount',
|
||||
amount:'amount',
|
||||
}
|
||||
},
|
||||
designInfo: {
|
||||
"auditSubmitText": "Submit for Review",
|
||||
"auditTips": "This draft is only for content verification and is not the final print file.",
|
||||
|
|
|
|||
|
|
@ -208,6 +208,7 @@ export default {
|
|||
toDo: '待办',
|
||||
introduction: '一个正经的简介',
|
||||
shortcutOperation: '快捷入口',
|
||||
operationData: '运营数据',
|
||||
operation: '操作',
|
||||
index: '指数',
|
||||
personal: '个人',
|
||||
|
|
@ -454,6 +455,87 @@ export default {
|
|||
btn_zoom_out: '缩小',
|
||||
preview: '预览'
|
||||
},
|
||||
'OAuth 2.0': 'OAuth 2.0' // 避免菜单名是 OAuth 2.0 时,一直 warn 报错
|
||||
,
|
||||
order:{
|
||||
ordermanage:'订单管理',
|
||||
myorder:'我的订单',
|
||||
createorder:'创建订单'
|
||||
},
|
||||
orderstatus:{
|
||||
rejectedOrder:'已驳回订单',
|
||||
waitAuditOrder:'待审核订单',
|
||||
waitArrangeOrder:'待排产订单',
|
||||
},
|
||||
omsSystem: {
|
||||
title:'嘉晋OMS下单系统'
|
||||
},
|
||||
billform:{
|
||||
pleaseenter:'请输入',
|
||||
pleaseselect:'请选择',
|
||||
startdate:'开始日期',
|
||||
enddate:'结束日期',
|
||||
},
|
||||
billlist:{
|
||||
search:'搜索',
|
||||
reset:'重置',
|
||||
cancel:'作废',
|
||||
submit:'提交',
|
||||
export:'导出',
|
||||
all:'全部',
|
||||
waitAudit:'待审核',
|
||||
waitArrange:'待排产',
|
||||
planned:'已排产',
|
||||
edit:'编辑',
|
||||
details:'详情',
|
||||
operate:'操作',
|
||||
},
|
||||
saleorder:{
|
||||
title:{
|
||||
details:'订单详情',
|
||||
remarks:'备注',
|
||||
orderinfo:'订单信息',
|
||||
orderstatus:'订单状态',
|
||||
productinfo:'产品信息',
|
||||
invoiceinfo:'发票信息',
|
||||
billinfo:'制单信息',
|
||||
},
|
||||
billno:'订单号',
|
||||
customer:'客户',
|
||||
salesperson:'销售员',
|
||||
followUpPerson:'跟单员',
|
||||
bizdate:'业务日期',
|
||||
confirmdate:'确认日期',
|
||||
plandate:'计划日期',
|
||||
orderstatus:'订单状态',
|
||||
phone:'手机',
|
||||
remark:'备注',
|
||||
contractType:'合约类型',
|
||||
emails:'邮箱',
|
||||
fax:'传真',
|
||||
customerCompany:'客户公司',
|
||||
customerNumber:'客户编号',
|
||||
customerName:'客户名称',
|
||||
currencyType:'结算币种',
|
||||
invoiceCode:'发票抬头',
|
||||
invoiceName:'发票名称',
|
||||
invoiceAddress:'发票地址',
|
||||
invoiceRemarks:'发票备注',
|
||||
createTime:'创建时间',
|
||||
updaterName:'修改人',
|
||||
updateTime:'修改时间',
|
||||
auditorName:'审核人',
|
||||
auditorTime:'审核时间',
|
||||
entry:{
|
||||
productNumber:'产品编码',
|
||||
productName:'产品名称',
|
||||
productSpec:'产品规格',
|
||||
qty:'数量',
|
||||
price:'单价',
|
||||
discount:'折扣',
|
||||
amount:'金额',
|
||||
}
|
||||
},
|
||||
designInfo: {
|
||||
auditSubmitText: '批稿',
|
||||
auditTips: '此稿件仅仅作为核对内容使用用,不作为最终印刷稿件;',
|
||||
|
|
@ -586,5 +668,4 @@ export default {
|
|||
colLabelRemark: '备注',
|
||||
colLabelDetails: '详情描述',
|
||||
},
|
||||
'OAuth 2.0': 'OAuth 2.0' // 避免菜单名是 OAuth 2.0 时,一直 warn 报错
|
||||
}
|
||||
|
|
|
|||
|
|
@ -257,7 +257,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
|
|||
component: () => import('@/views/oms/saleorder/detail/index.vue'),
|
||||
name: 'SaleOrderDetail',
|
||||
meta: {
|
||||
title: '订单详情',
|
||||
title: t('saleorder.title.details'),
|
||||
icon: 'ep:view',
|
||||
activeMenu: '/oms/saleorder'
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<CardTitle title="运营数据" />
|
||||
<CardTitle :title="t('workplace.operationData')" />
|
||||
</template>
|
||||
<div class="flex flex-row flex-wrap items-center gap-8 p-4">
|
||||
<div
|
||||
|
|
@ -27,14 +27,14 @@ import { CardTitle } from '@/components/Card'
|
|||
|
||||
/** 运营数据卡片 */
|
||||
defineOptions({ name: 'OperationDataCard' })
|
||||
|
||||
const { t } = useI18n()
|
||||
const router = useRouter() // 路由
|
||||
|
||||
/** 数据 */
|
||||
const data = reactive({
|
||||
orderCountAA: { name: '已驳回订单', value: 0, routerName: 'SaleOrder' },
|
||||
orderCountB: { name: '待审核订单', value: 0, routerName: 'SaleOrder' },
|
||||
orderCountC: { name: '待排产订单', value: 0, routerName: 'SaleOrder' }
|
||||
orderCountAA: { name: t('orderstatus.rejectedOrder'), value: 0, routerName: 'SaleOrder' },
|
||||
orderCountB: { name: t('orderstatus.waitAuditOrder'), value: 0, routerName: 'SaleOrder' },
|
||||
orderCountC: { name: t('orderstatus.waitArrangeOrder'), value: 0, routerName: 'SaleOrder' }
|
||||
})
|
||||
|
||||
/** 查询订单数据 */
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<CardTitle title="快捷入口" />
|
||||
<CardTitle :title="t('workplace.shortcutOperation')" />
|
||||
</template>
|
||||
<div class="flex flex-row flex-wrap gap-8 p-4">
|
||||
<div
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
>
|
||||
<Icon :icon="menu.icon" class="text-7.5!" />
|
||||
</div>
|
||||
<span>{{ menu.name }}</span>
|
||||
<span>{{ menu.name }} </span>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
|
|
@ -26,14 +26,14 @@
|
|||
import { CardTitle } from '@/components/Card'
|
||||
|
||||
defineOptions({ name: 'ShortcutCard' })
|
||||
|
||||
const { t } = useI18n()
|
||||
const router = useRouter() // 路由
|
||||
|
||||
/** 菜单列表 */
|
||||
const menuList = [
|
||||
{ name: '订单管理', icon: 'ep:list', bgColor: 'bg-yellow-500', routerName: 'SaleOrder' },
|
||||
{ name: t('order.ordermanage'), icon: 'ep:list', bgColor: 'bg-yellow-500', routerName: 'SaleOrder' },
|
||||
{
|
||||
name: '创建订单',
|
||||
name: t('order.createorder'),
|
||||
icon: 'fa-solid:project-diagram',
|
||||
bgColor: 'bg-green-600',
|
||||
routerName: 'CreateOrder'
|
||||
|
|
|
|||
|
|
@ -10,7 +10,8 @@
|
|||
<!-- 左上角的 logo + 系统标题 -->
|
||||
<div class="relative flex items-center text-white">
|
||||
<img alt="" class="mr-10px h-48px w-48px" src="@/assets/imgs/logo.png" />
|
||||
<span class="text-20px font-bold">{{ underlineToHump(appStore.getTitle) }}</span>
|
||||
<!-- <span class="text-20px font-bold">{{ underlineToHump(appStore.getTitle) }}</span>-->
|
||||
<span class="text-20px font-bold">{{ t('omsSystem.title') }}</span>
|
||||
</div>
|
||||
<!-- 左边的背景图 + 欢迎语 -->
|
||||
<div class="h-[calc(100%-60px)] flex items-center justify-center">
|
||||
|
|
|
|||
|
|
@ -13,25 +13,27 @@
|
|||
<el-button
|
||||
v-if="formData.billStatus == 'AA' || formData.billStatus == 'B' "
|
||||
type="primary"
|
||||
@click="remark">备注</el-button>
|
||||
@click="remark">{{t('saleorder.title.remarks')}}</el-button>
|
||||
<!-- 订单信息 -->
|
||||
<el-descriptions title="订单信息">
|
||||
<el-descriptions-item label="订单号: ">{{ formData.billno }}</el-descriptions-item>
|
||||
<el-descriptions-item label="业务日期: ">{{ formatDate(formData.bizdate,'YYYY-MM-DD') }}</el-descriptions-item>
|
||||
<el-descriptions-item label="确认日期: ">{{ formatDate(formData.confirmdate,'YYYY-MM-DD') }}</el-descriptions-item>
|
||||
<el-descriptions-item label="计划日期: ">{{ formatDate(formData.plansenddate,'YYYY-MM-DD') }}</el-descriptions-item>
|
||||
<el-descriptions-item label="手机: ">{{ formData.phone }}</el-descriptions-item>
|
||||
<el-descriptions-item label="传真: ">{{ formData.fax }}</el-descriptions-item>
|
||||
<el-descriptions-item label="邮箱: ">{{ formData.emails }}</el-descriptions-item>
|
||||
<el-descriptions-item label="客户编号: ">{{ formData?.customer?.number }}</el-descriptions-item>
|
||||
<el-descriptions-item label="客户名称: ">{{ formData?.customer?.name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="客户公司: ">{{ formData?.customer?.company }}</el-descriptions-item>
|
||||
<el-descriptions-item label="订单备注: ">{{ formData.remark }}</el-descriptions-item>
|
||||
<el-descriptions :title="t('saleorder.title.orderinfo')">
|
||||
<el-descriptions-item :label="t('saleorder.billno')+':' " width="1000px">{{ formData.billno }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.contractType')+':'" width="1000px">{{formData.contractType}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.bizdate')+':'" width="500px">{{ formatDate(formData.bizdate,'YYYY-MM-DD') }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.confirmdate')+':'">{{ formatDate(formData.confirmdate,'YYYY-MM-DD') }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.plandate')+':'">{{ formatDate(formData.plansenddate,'YYYY-MM-DD') }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.phone')+':'">{{ formData.phone }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.fax')+':'">{{ formData.fax }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.emails')+':'">{{ formData.emails }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.customerNumber')+':'">{{ formData?.customer?.number }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.customerName')+':'">{{ formData?.customer?.name }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.customerCompany')+':'">{{ formData?.customer?.company }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.currencyType')+':'">{{ formData.currencyType }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.remark')+':'">{{ formData.remark }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<!-- 订单状态 -->
|
||||
<el-descriptions :column="3" title="订单状态">
|
||||
<el-descriptions-item label="订单状态: ">
|
||||
<el-descriptions :column="3" :title="t('saleorder.title.orderstatus')">
|
||||
<el-descriptions-item :label="t('saleorder.orderstatus')+':'">
|
||||
<dict-tag :type="DICT_TYPE.OMS_BILL_STATUS" :value="formData.billStatus" />
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="订单状态: ">
|
||||
|
|
@ -73,7 +75,7 @@
|
|||
|
||||
|
||||
<!-- 商品信息 -->
|
||||
<el-descriptions title="产品信息">
|
||||
<el-descriptions :title="t('saleorder.title.productinfo')">
|
||||
<el-descriptions-item labelClassName="no-colon">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="544">
|
||||
|
|
@ -90,10 +92,10 @@
|
|||
|
||||
>
|
||||
|
||||
<el-table-column label="产品编码" prop="materialName" width="150"/>
|
||||
<el-table-column label="产品名称" prop="materialName" width="150"/>
|
||||
<el-table-column label="产品规格" prop="materialSpec" width="150" />
|
||||
<el-table-column label="数量" prop="qty" width="150" />
|
||||
<el-table-column :label="t('saleorder.entry.productNumber')" prop="materialName" width="150"/>
|
||||
<el-table-column :label="t('saleorder.entry.productName')" prop="materialName" width="150"/>
|
||||
<el-table-column :label="t('saleorder.entry.productSpec')" prop="materialSpec" width="150" />
|
||||
<el-table-column :label="t('saleorder.entry.qty')" prop="qty" width="150" />
|
||||
<!-- <el-table-column label="单价" width="250" v-if="formData.billStatus == 'B'">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.price`" :rules="itemFormEntrysRules.price" class="mb-0px!"
|
||||
|
|
@ -111,7 +113,7 @@
|
|||
<span v-else @click="editRow($index)">{{ row.price }}</span>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column label="单价" prop="price" width="250" />
|
||||
<el-table-column :label="t('saleorder.entry.price')" prop="price" width="250" />
|
||||
<!-- <el-table-column label="折扣(%)" prop="discount" width="250" v-if="formData.billStatus == 'B'">
|
||||
<template #default="{ row, $index }">
|
||||
<el-input-number
|
||||
|
|
@ -128,8 +130,8 @@
|
|||
<span v-else @click="editRow($index)">{{ row.discount }}</span>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column label="折扣(%)" prop="discount" width="250" />
|
||||
<el-table-column label="金额" prop="amount" width="250" />
|
||||
<el-table-column :label="t('saleorder.entry.discount')+'(%)'" prop="discount" width="250" />
|
||||
<el-table-column :label="t('saleorder.entry.amount')" prop="amount" width="250" />
|
||||
<!-- <el-table-column label="合计" prop="payPrice" width="150">
|
||||
<template #default="{ row }">{{ fenToYuan(row.payPrice) }}元</template>
|
||||
</el-table-column>-->
|
||||
|
|
@ -142,22 +144,22 @@
|
|||
</el-descriptions>
|
||||
|
||||
<!-- 订单信息 -->
|
||||
<el-descriptions title="发票信息">
|
||||
<el-descriptions-item label="发票抬头: ">{{ formData.invoiceCode }}</el-descriptions-item>
|
||||
<el-descriptions-item label="发票名称: ">{{ formData.invoiceName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="货币: ">{{ formData.currency }}</el-descriptions-item>
|
||||
<el-descriptions-item label="发票备注: ">{{ formData.invoiceRemarks }}</el-descriptions-item>
|
||||
<el-descriptions :title="t('saleorder.title.productinfo')">
|
||||
<el-descriptions-item :label="t('saleorder.invoiceCode')+': '" width="1000px">{{ formData.invoiceCode }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.invoiceName')+': '" width="1000px">{{ formData.invoiceName }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.invoiceAddress')+': '" width="500px">{{ formData.address }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.invoiceRemarks')+': '" width="500px">{{ formData.invoiceRemarks }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
|
||||
|
||||
<!-- 订单信息 -->
|
||||
<el-descriptions title="制单信息">
|
||||
<el-descriptions-item label="创建时间: ">{{ formatDate(formData.createTime) }}</el-descriptions-item>
|
||||
<el-descriptions-item label="修改人: ">{{ formData.updaterName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="修改时间: ">{{ formatDate(formData.updateTime) }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核人: ">{{ formData.auditorName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间: ">{{ formatDate(formData.auditorTime) }}</el-descriptions-item>
|
||||
<el-descriptions :title="t('saleorder.title.billinfo')">
|
||||
<el-descriptions-item :label="t('saleorder.createTime')+': '" width="1000px">{{ formatDate(formData.createTime) }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.updaterName')+': '" width="1000px">{{ formData.updaterName }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.updateTime')+': '" width="500px">{{ formatDate(formData.updateTime) }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.auditorName')+': '">{{ formData.auditorName }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="t('saleorder.auditorTime')+': '">{{ formatDate(formData.auditorTime) }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</ContentWrap>
|
||||
|
||||
|
|
@ -179,7 +181,7 @@ defineOptions({ name: 'TradeOrderDetail' })
|
|||
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
const itemFormEntrysRef = ref() // 表单 Ref
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue