Browse Source

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

钱惠东 1 week ago
parent
commit
7c310e61d7

+ 2 - 0
RuoYi-Vue-fast-master/src/main/java/com/ruoyi/project/business/domain/vo/contract/TqContractVo.java

@@ -73,5 +73,7 @@ public class TqContractVo extends TqContract
     /** 单位 */
     /** 单位 */
     private String unit;
     private String unit;
 
 
+    private String typeAuthority;
+
 
 
 }
 }

+ 2 - 2
RuoYi-Vue-fast-master/src/main/java/com/ruoyi/project/business/enums/AuditFlowEnum.java

@@ -13,8 +13,8 @@ public enum AuditFlowEnum {
     QUOTATION(1, "报价", "quotation.review"),
     QUOTATION(1, "报价", "quotation.review"),
 
 
     BARGAIN(2, "议价", "quotation.approve"),
     BARGAIN(2, "议价", "quotation.approve"),
-    CONTRACT_FINANCE_YES(3, "合同(财务)", "quotation.approve"),
-    CONTRACT_FINANCE_NO(4, "合同(非财务)", "quotation.approve"),
+    CONTRACT_FINANCE_YES(3, "非制式合同", "contract.approveInformation"),
+    CONTRACT_FINANCE_NO(4, "制式合同", "contract.approveInformation"),
     ;
     ;
 
 
     private Integer value;
     private Integer value;

+ 17 - 8
RuoYi-Vue-fast-master/src/main/java/com/ruoyi/project/business/service/impl/TqContractLiftServiceImpl.java

@@ -109,24 +109,30 @@ public class TqContractLiftServiceImpl implements ITqContractLiftService
     @Override
     @Override
     public int updateTqContractLiftBatch(List<TqContractLift> tqContractLiftList){
     public int updateTqContractLiftBatch(List<TqContractLift> tqContractLiftList){
         //根据实际排产日期查询汇率
         //根据实际排产日期查询汇率
-        List<ContractCurrencyTime> scheduleList = tqContractLiftList.stream()
-                .filter(tqContractLift -> tqContractLift.getSigningDate() != null) // Filter out null signing dates
+        List<ContractCurrencyTime> scheduleList = tqContractLiftList.stream().filter(tqContractLift -> tqContractLift.getActualProductionScheduleDate() != null) // Filter out null signing dates
                 .map(tqContractLift -> new ContractCurrencyTime(
                 .map(tqContractLift -> new ContractCurrencyTime(
-                        Long.parseLong(tqContractLift.getCurrencyId()), // Assuming this returns a long
-                        tqContractLift.getActualProductionScheduleDate()
+                        Long.parseLong(tqContractLift.getCurrencyId()), tqContractLift.getActualProductionScheduleDate()
                 ))
                 ))
                 .collect(Collectors.toList());
                 .collect(Collectors.toList());
         Map<Long, BigDecimal> scheduleListIdAndRateMap = tbContractCurrencyService.selectExchangeRateByCurrencyId(scheduleList);
         Map<Long, BigDecimal> scheduleListIdAndRateMap = tbContractCurrencyService.selectExchangeRateByCurrencyId(scheduleList);
+
         //根据实际发货排产日期查询汇率
         //根据实际发货排产日期查询汇率
-        List<ContractCurrencyTime> deliveryList = tqContractLiftList.stream()
-                .filter(tqContractLift -> tqContractLift.getSigningDate() != null) // Filter out null signing dates
+        List<ContractCurrencyTime> deliveryList = tqContractLiftList.stream().filter(tqContractLift -> tqContractLift.getActualDeliveryDate() != null) // Filter out null signing dates
                 .map(tqContractLift -> new ContractCurrencyTime(
                 .map(tqContractLift -> new ContractCurrencyTime(
-                        Long.parseLong(tqContractLift.getCurrencyId()), // Assuming this returns a long
-                        tqContractLift.getActualDeliveryDate()
+                        Long.parseLong(tqContractLift.getCurrencyId()), tqContractLift.getActualDeliveryDate()
                 ))
                 ))
                 .collect(Collectors.toList());
                 .collect(Collectors.toList());
         Map<Long, BigDecimal> deliveryListIdAndRateMap = tbContractCurrencyService.selectExchangeRateByCurrencyId(deliveryList);
         Map<Long, BigDecimal> deliveryListIdAndRateMap = tbContractCurrencyService.selectExchangeRateByCurrencyId(deliveryList);
 
 
+
+        //根据签单日期查询汇率
+        List<ContractCurrencyTime> signingDateList = tqContractLiftList.stream()
+                .map(tqContractLift -> new ContractCurrencyTime(
+                        Long.parseLong(tqContractLift.getCurrencyId()), tqContractLift.getSigningDate()
+                ))
+                .collect(Collectors.toList());
+        Map<Long, BigDecimal> signingDateListIdAndRateMap = tbContractCurrencyService.selectExchangeRateByCurrencyId(signingDateList);
+
         tqContractLiftList.forEach(item -> {
         tqContractLiftList.forEach(item -> {
             //将签单币种汇率赋值
             //将签单币种汇率赋值
             if(scheduleListIdAndRateMap.containsKey(Long.parseLong(item.getCurrencyId()))){
             if(scheduleListIdAndRateMap.containsKey(Long.parseLong(item.getCurrencyId()))){
@@ -135,6 +141,9 @@ public class TqContractLiftServiceImpl implements ITqContractLiftService
             if(deliveryListIdAndRateMap.containsKey(Long.parseLong(item.getCurrencyId()))){
             if(deliveryListIdAndRateMap.containsKey(Long.parseLong(item.getCurrencyId()))){
                 item.setRate4Shipment(deliveryListIdAndRateMap.get(Long.parseLong(item.getCurrencyId())));
                 item.setRate4Shipment(deliveryListIdAndRateMap.get(Long.parseLong(item.getCurrencyId())));
             }
             }
+            if(signingDateListIdAndRateMap.containsKey(Long.parseLong(item.getCurrencyId()))){
+                item.setRate4SigningContracts(signingDateListIdAndRateMap.get(Long.parseLong(item.getCurrencyId())));
+            }
         });
         });
         return tqContractLiftMapper.updateTqContractLiftBatch(tqContractLiftList);
         return tqContractLiftMapper.updateTqContractLiftBatch(tqContractLiftList);
     }
     }

+ 15 - 6
RuoYi-Vue-fast-master/src/main/java/com/ruoyi/project/business/service/impl/TqContractServiceImpl.java

@@ -219,11 +219,7 @@ public class TqContractServiceImpl implements ITqContractService
         ));
         ));
         //将合同的初始version设置为1
         //将合同的初始version设置为1
         tqContractDto.setVersion(1L);
         tqContractDto.setVersion(1L);
-        Map<Long, BigDecimal> idAndRateMap = tbContractCurrencyService.selectExchangeRateByCurrencyId(contractCurrencyTimeList);
-        //将签单币种汇率赋值
-        if(idAndRateMap.containsKey(Long.parseLong(tqContractDto.getCurrencyId()))){
-            tqContractDto.setRate4SigningContracts(idAndRateMap.get((Long.parseLong(tqContractDto.getCurrencyId()))));
-        }
+
         //将合同的
         //将合同的
         tqContractMapper.insertTqContract(tqContractDto);
         tqContractMapper.insertTqContract(tqContractDto);
         //附件上传
         //附件上传
@@ -348,6 +344,7 @@ public class TqContractServiceImpl implements ITqContractService
                 ))
                 ))
                 .collect(Collectors.toList());
                 .collect(Collectors.toList());
         Map<Long, BigDecimal> scheduleListIdAndRateMap = tbContractCurrencyService.selectExchangeRateByCurrencyId(scheduleList);
         Map<Long, BigDecimal> scheduleListIdAndRateMap = tbContractCurrencyService.selectExchangeRateByCurrencyId(scheduleList);
+
         //根据实际发货排产日期查询汇率
         //根据实际发货排产日期查询汇率
         List<ContractCurrencyTime> deliveryList = tqContractLiftList.stream().filter(tqContractLift -> tqContractLift.getActualDeliveryDate() != null) // Filter out null signing dates
         List<ContractCurrencyTime> deliveryList = tqContractLiftList.stream().filter(tqContractLift -> tqContractLift.getActualDeliveryDate() != null) // Filter out null signing dates
                 .map(tqContractLift -> new ContractCurrencyTime(
                 .map(tqContractLift -> new ContractCurrencyTime(
@@ -356,6 +353,15 @@ public class TqContractServiceImpl implements ITqContractService
                 .collect(Collectors.toList());
                 .collect(Collectors.toList());
         Map<Long, BigDecimal> deliveryListIdAndRateMap = tbContractCurrencyService.selectExchangeRateByCurrencyId(deliveryList);
         Map<Long, BigDecimal> deliveryListIdAndRateMap = tbContractCurrencyService.selectExchangeRateByCurrencyId(deliveryList);
 
 
+
+        //根据签单日期查询汇率
+        List<ContractCurrencyTime> signingDateList = tqContractLiftList.stream()
+                .map(tqContractLift -> new ContractCurrencyTime(
+                        Long.parseLong(tqContractLift.getCurrencyId()), tqContractDto.getSigningDate()
+                ))
+                .collect(Collectors.toList());
+        Map<Long, BigDecimal> signingDateListIdAndRateMap = tbContractCurrencyService.selectExchangeRateByCurrencyId(signingDateList);
+
         tqContractLiftList.forEach(item -> {
         tqContractLiftList.forEach(item -> {
             item.setContractNo(tqContractDto.getContractNo());
             item.setContractNo(tqContractDto.getContractNo());
             item.setContractName(tqContractDto.getContractName());
             item.setContractName(tqContractDto.getContractName());
@@ -374,7 +380,6 @@ public class TqContractServiceImpl implements ITqContractService
             item.setPaymentRatio(tqContractDto.getPaymentRatio());
             item.setPaymentRatio(tqContractDto.getPaymentRatio());
             item.setContractNoVersionNo(tqContractDto.getContractNo()+"-"+tqContractDto.getVersion());
             item.setContractNoVersionNo(tqContractDto.getContractNo()+"-"+tqContractDto.getVersion());
             item.setPermissionChar(SecurityUtils.getPermissionCharIns());
             item.setPermissionChar(SecurityUtils.getPermissionCharIns());
-            item.setRate4SigningContracts(tqContractDto.getRate4SigningContracts());
             item.setType(tqContractDto.getType());
             item.setType(tqContractDto.getType());
             //将签单币种汇率赋值
             //将签单币种汇率赋值
             if(scheduleListIdAndRateMap.containsKey(Long.parseLong(item.getCurrencyId()))){
             if(scheduleListIdAndRateMap.containsKey(Long.parseLong(item.getCurrencyId()))){
@@ -384,6 +389,10 @@ public class TqContractServiceImpl implements ITqContractService
             if(deliveryListIdAndRateMap.containsKey(Long.parseLong(item.getCurrencyId()))){
             if(deliveryListIdAndRateMap.containsKey(Long.parseLong(item.getCurrencyId()))){
                 item.setRate4Shipment(deliveryListIdAndRateMap.get(Long.parseLong(item.getCurrencyId())));
                 item.setRate4Shipment(deliveryListIdAndRateMap.get(Long.parseLong(item.getCurrencyId())));
             }
             }
+            //签单汇率
+            if(signingDateListIdAndRateMap.containsKey(Long.parseLong(item.getCurrencyId()))){
+                item.setRate4SigningContracts(signingDateListIdAndRateMap.get(Long.parseLong(item.getCurrencyId())));
+            }
         });
         });
         return tqContractLiftList;
         return tqContractLiftList;
     }
     }

+ 3 - 1
RuoYi-Vue-fast-master/src/main/resources/i18n/messages_en_US.properties

@@ -308,6 +308,7 @@ lead.convert.mustBeConvertProject=Leads need to be pre-positioned for [Conversio
 relatedCase.validateDeleteError=This linkage use case has been referenced by a quote and cannot be deleted!
 relatedCase.validateDeleteError=This linkage use case has been referenced by a quote and cannot be deleted!
 validation.validateDeleteError=This checking rule has been quoted and cannot be deleted!
 validation.validateDeleteError=This checking rule has been quoted and cannot be deleted!
 excel.message.templateNotEmpty=The import template cannot be empty
 excel.message.templateNotEmpty=The import template cannot be empty
+message.alertAudit.contract=您有一份合同需要评审确认,合同号为:{0}({1})_US
 message.alertAudit.quotation=您有一份非标报价单需要评审确认,报价单号为:{0}({1})_US
 message.alertAudit.quotation=您有一份非标报价单需要评审确认,报价单号为:{0}({1})_US
 message.alertAudit.bargain=您收到一份报价单议价请求,请审批,报价单号为:{0}({1})_US
 message.alertAudit.bargain=您收到一份报价单议价请求,请审批,报价单号为:{0}({1})_US
 area.elevator.mismatch=[{0}] The elevator model in the area where the unlinked project is located, pleas modify it!
 area.elevator.mismatch=[{0}] The elevator model in the area where the unlinked project is located, pleas modify it!
@@ -468,4 +469,5 @@ contract.destinationPort=目的口岸_US
 contract.shipmentDeadline=装船期限_US
 contract.shipmentDeadline=装船期限_US
 contract.representative=代表人_US
 contract.representative=代表人_US
 project.reasonType=丢单原因_US
 project.reasonType=丢单原因_US
-project.loseRemark=Lost remark
+project.loseRemark=Lost remark
+contract.approveInformation=You have received a contract approval request, please approve. The contract number is: {0}

+ 3 - 1
RuoYi-Vue-fast-master/src/main/resources/i18n/messages_es_ES.properties

@@ -308,6 +308,7 @@ lead.convert.mustBeConvertProject=Pista necesita [Proyecto de Conversión] condi
 relatedCase.validateDeleteError=0
 relatedCase.validateDeleteError=0
 validation.validateDeleteError=La regla ya está citada en la cotización , no elimina
 validation.validateDeleteError=La regla ya está citada en la cotización , no elimina
 excel.message.templateNotEmpty=Plantilla importada no puede ser vacía
 excel.message.templateNotEmpty=Plantilla importada no puede ser vacía
+message.alertAudit.contract=您有一份合同需要评审确认,合同号为:{0}({1})_ES
 message.alertAudit.quotation=您有一份非标报价单需要评审确认,报价单号为:{0}({1})_ES
 message.alertAudit.quotation=您有一份非标报价单需要评审确认,报价单号为:{0}({1})_ES
 message.alertAudit.bargain=您收到一份报价单议价请求,请审批,报价单号为:{0}({1})_ES
 message.alertAudit.bargain=您收到一份报价单议价请求,请审批,报价单号为:{0}({1})_ES
 area.elevator.mismatch=Modelo de ascensor en ese área donde proyecto no asociado está ubicado , por favor modificarlo
 area.elevator.mismatch=Modelo de ascensor en ese área donde proyecto no asociado está ubicado , por favor modificarlo
@@ -468,4 +469,5 @@ contract.destinationPort=目的口岸_ES
 contract.shipmentDeadline=装船期限_ES
 contract.shipmentDeadline=装船期限_ES
 contract.representative=代表人_ES
 contract.representative=代表人_ES
 project.reasonType=丢单原因_ES
 project.reasonType=丢单原因_ES
-project.loseRemark=Nota de pérdida de pedidos
+project.loseRemark=Nota de pérdida de pedidos
+contract.approveInformation=Usted recibe una solicitud de aprobación del contrato, por favor apruebe, el número del contrato es: {0}

+ 3 - 1
RuoYi-Vue-fast-master/src/main/resources/i18n/messages_ru_RU.properties

@@ -308,6 +308,7 @@ lead.convert.mustBeConvertProject=Лид требует предваритель
 relatedCase.validateDeleteError=Этот вариант использования связи указан в предложении и не может быть удален!
 relatedCase.validateDeleteError=Этот вариант использования связи указан в предложении и не может быть удален!
 validation.validateDeleteError=Это правило проверки указано в предложении и не может быть удалено!
 validation.validateDeleteError=Это правило проверки указано в предложении и не может быть удалено!
 excel.message.templateNotEmpty=Шаблон импорта не может быть пустым
 excel.message.templateNotEmpty=Шаблон импорта не может быть пустым
+message.alertAudit.contract=您有一份合同需要评审确认,合同号为:{0}({1})_RU
 message.alertAudit.quotation=您有一份非标报价单需要评审确认,报价单号为:{0}({1})_RU
 message.alertAudit.quotation=您有一份非标报价单需要评审确认,报价单号为:{0}({1})_RU
 message.alertAudit.bargain=您收到一份报价单议价请求,请审批,报价单号为:{0}({1})_RU
 message.alertAudit.bargain=您收到一份报价单议价请求,请审批,报价单号为:{0}({1})_RU
 area.elevator.mismatch=[{0}] Модель лифта в районе, где расположен несвязанный проект, измените ее!
 area.elevator.mismatch=[{0}] Модель лифта в районе, где расположен несвязанный проект, измените ее!
@@ -468,4 +469,5 @@ contract.destinationPort=目的口岸_RU
 contract.shipmentDeadline=装船期限_RU
 contract.shipmentDeadline=装船期限_RU
 contract.representative=代表人_RU
 contract.representative=代表人_RU
 project.reasonType=丢单原因_RU
 project.reasonType=丢单原因_RU
-project.loseRemark=Размер не должен превышать
+project.loseRemark=Размер не должен превышать
+contract.approveInformation=Вы получили запрос на утверждение контракта, пожалуйста, утверждайте, номер контракта:  {0}

+ 3 - 1
RuoYi-Vue-fast-master/src/main/resources/i18n/messages_zh_CN.properties

@@ -308,6 +308,7 @@ lead.convert.mustBeConvertProject=线索需要[转化项目]前置状态
 relatedCase.validateDeleteError=该联动用例已被报价引用,无法删除!
 relatedCase.validateDeleteError=该联动用例已被报价引用,无法删除!
 validation.validateDeleteError=该校验规则已被报价引用,无法删除!
 validation.validateDeleteError=该校验规则已被报价引用,无法删除!
 excel.message.templateNotEmpty=导入模板不能为空
 excel.message.templateNotEmpty=导入模板不能为空
+message.alertAudit.contract=您有一份合同需要评审确认,合同号为:{0}({1})
 message.alertAudit.quotation=您有一份非标报价单需要评审确认,报价单号为:{0}({1})
 message.alertAudit.quotation=您有一份非标报价单需要评审确认,报价单号为:{0}({1})
 message.alertAudit.bargain=您收到一份报价单议价请求,请审批,报价单号为:{0}({1})
 message.alertAudit.bargain=您收到一份报价单议价请求,请审批,报价单号为:{0}({1})
 area.elevator.mismatch=[{0}] 非关联项目所在区域的电梯型号,请修改!
 area.elevator.mismatch=[{0}] 非关联项目所在区域的电梯型号,请修改!
@@ -468,4 +469,5 @@ contract.destinationPort=目的口岸
 contract.shipmentDeadline=装船期限
 contract.shipmentDeadline=装船期限
 contract.representative=代表人
 contract.representative=代表人
 project.reasonType=丢单原因
 project.reasonType=丢单原因
-project.loseRemark=丢单备注
+project.loseRemark=丢单备注
+contract.approveInformation=您收到一份合同审批请求,请审批,合同号为:{0}

+ 4 - 1
RuoYi-Vue-fast-master/src/main/resources/mybatis/business/contract/TqContractMapper.xml

@@ -52,6 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="paymentMethodName"    column="paymentMethodName"    />
         <result property="paymentMethodName"    column="paymentMethodName"    />
         <result property="tradeTermsName"    column="tradeTermsName"    />
         <result property="tradeTermsName"    column="tradeTermsName"    />
         <result property="paymentRadioName"    column="paymentRadioName"    />
         <result property="paymentRadioName"    column="paymentRadioName"    />
+        <result property="typeAuthority"    column="type_authority"    />
     </resultMap>
     </resultMap>
 
 
     <sql id="selectTqContractVo">
     <sql id="selectTqContractVo">
@@ -97,7 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where id = #{id}
         where id = #{id}
     </select>
     </select>
     <select id="selectTqContractBoList" resultMap="TqContractVoResult">
     <select id="selectTqContractBoList" resultMap="TqContractVoResult">
-        select ah.*,account.account_name as account_name,flow.status as flowStatus,u.nick_name as salesman_name,ag.agent_name,RIGHT(dict.remark, 1) as unit,
+        select ah.*,account.account_name as account_name,flow.status as flowStatus,u.nick_name as salesman_name,ag.agent_name,RIGHT(dict.remark, 1) as unit,vo.type as type_authority,
             CASE #{language}
             CASE #{language}
             WHEN 'chinese' THEN country.country_name
             WHEN 'chinese' THEN country.country_name
             WHEN 'english' THEN country.country_nameUS
             WHEN 'english' THEN country.country_nameUS
@@ -118,6 +119,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN tb_area area on area.area_id = ah.area_id  AND ah.del_flag = area.del_flag
         LEFT JOIN tb_area area on area.area_id = ah.area_id  AND ah.del_flag = area.del_flag
         left join tb_agent ag on ah.agent_id = ag.agent_id AND ah.del_flag = ag.del_flag
         left join tb_agent ag on ah.agent_id = ag.agent_id AND ah.del_flag = ag.del_flag
         LEFT JOIN sys_dict_data dict ON dict.dict_type = 'currency_type' and dict.dict_value = ah.currency_id
         LEFT JOIN sys_dict_data dict ON dict.dict_type = 'currency_type' and dict.dict_value = ah.currency_id
+        LEFT JOIN (select DISTINCT contract_no,CAST(SUBSTRING_INDEX(contract_no_version_no, '-', -1) AS UNSIGNED) as version,type from tq_contract_lift where del_flag = '0'  and  type = 'toVoid' ) as vo
+                ON vo.contract_no = ah.contract_no and vo.version = ah.version
         <where>
         <where>
             ah.del_flag != '1'
             ah.del_flag != '1'
             and flow.del_flag = '0'
             and flow.del_flag = '0'

+ 6 - 1
ruoyi-ui-vue2/src/main.js

@@ -193,7 +193,9 @@ requireComponent.keys().forEach((fileName) => {
 
 
 const AUDIT_FLOW = {
 const AUDIT_FLOW = {
   QUOTATION: 1,
   QUOTATION: 1,
-  BARGAIN: 2
+  BARGAIN: 2,
+  CONTRACT_NOT_SISTEMA:3,
+  CONTRACT_SISTEMA:4
 };
 };
 Vue.prototype.AUDIT_FLOW = AUDIT_FLOW;
 Vue.prototype.AUDIT_FLOW = AUDIT_FLOW;
 
 
@@ -226,6 +228,9 @@ Vue.prototype.todoPage = params => {
     case AUDIT_FLOW.BARGAIN:
     case AUDIT_FLOW.BARGAIN:
       tab.refreshPage({name:'Quotation',path: '/quotation/quotation', query: params})
       tab.refreshPage({name:'Quotation',path: '/quotation/quotation', query: params})
       break;
       break;
+    case AUDIT_FLOW.CONTRACT_NOT_SISTEMA || AUDIT_FLOW.CONTRACT_SISTEMA:
+      tab.refreshPage({name:'Contract',path: '/contract/contract', query: params})
+      break;
     default:
     default:
       break;
       break;
   }
   }

+ 2 - 0
ruoyi-ui-vue2/src/utils/common.js

@@ -204,6 +204,8 @@ export function getMessageTitle(type) {
       break;
       break;
     case "11" : code+="projectUnFollow";
     case "11" : code+="projectUnFollow";
       break;
       break;
+    case "12" : code+="contractFollow";
+      break;
     case "13" : code+="nonStandFollow";
     case "13" : code+="nonStandFollow";
       break;
       break;
     case "14" : code+="bargainFollow";
     case "14" : code+="bargainFollow";

+ 3 - 2
ruoyi-ui-vue2/src/utils/lang/en-us.js

@@ -769,7 +769,7 @@
     validateDeleteError:"This checking rule has been quoted and cannot be deleted!",
     validateDeleteError:"This checking rule has been quoted and cannot be deleted!",
   },
   },
   home: {
   home: {
-    title:"Global Project Management Platform",
+    title:"Welcome to Global Management System",
     login:"Login",
     login:"Login",
     rememberPassword:"Remember password",
     rememberPassword:"Remember password",
     logining:"Logging in",
     logining:"Logging in",
@@ -926,7 +926,7 @@
     salesReject:"Dismiss",
     salesReject:"Dismiss",
     salesRejectTitle:"Dismiss",
     salesRejectTitle:"Dismiss",
     elevatorCode:"Elevator Number",
     elevatorCode:"Elevator Number",
-    specification:"Specification",
+    specification:"Specifications",
     elevatorNumber:"Quantity",
     elevatorNumber:"Quantity",
     landShipFees:"Inland freight",
     landShipFees:"Inland freight",
     seaShipFees:"Maritime freight",
     seaShipFees:"Maritime freight",
@@ -1006,6 +1006,7 @@
     quotationFollow:"Quote message alerts",
     quotationFollow:"Quote message alerts",
     projectDealDay:"Decision date reminder message",
     projectDealDay:"Decision date reminder message",
     agentContractDay:"Contract expiration reminder message",
     agentContractDay:"Contract expiration reminder message",
+    contractFollow:"Contract approval message reminder",
   },
   },
   paraCategory: {
   paraCategory: {
     Basic:"Basic parameter",
     Basic:"Basic parameter",

+ 3 - 2
ruoyi-ui-vue2/src/utils/lang/es-es.js

@@ -769,7 +769,7 @@
     validateDeleteError:"La regla ya está citada en la cotización , no elimina",
     validateDeleteError:"La regla ya está citada en la cotización , no elimina",
   },
   },
   home: {
   home: {
-    title:"Plataforma global de gestión de proyectos",
+    title:"Bienvenido a Sistema de Gestión Global",
     login:"Login",
     login:"Login",
     rememberPassword:"Recordar contraseña",
     rememberPassword:"Recordar contraseña",
     logining:"Login en proceso",
     logining:"Login en proceso",
@@ -926,7 +926,7 @@
     salesReject:"Despedir",
     salesReject:"Despedir",
     salesRejectTitle:"Despedir",
     salesRejectTitle:"Despedir",
     elevatorCode:"Número de Ascensor",
     elevatorCode:"Número de Ascensor",
-    specification:"Especificación",
+    specification:"Especificaciones",
     elevatorNumber:"Cantidad",
     elevatorNumber:"Cantidad",
     landShipFees:"Flete interior",
     landShipFees:"Flete interior",
     seaShipFees:"Flete marítimo",
     seaShipFees:"Flete marítimo",
@@ -1006,6 +1006,7 @@
     quotationFollow:"Recordatorio de mensaje de cotización",
     quotationFollow:"Recordatorio de mensaje de cotización",
     projectDealDay:"Mensaje de recordatorio de la fecha de decisión",
     projectDealDay:"Mensaje de recordatorio de la fecha de decisión",
     agentContractDay:"Mensaje de recordatorio de vencimiento de la firma",
     agentContractDay:"Mensaje de recordatorio de vencimiento de la firma",
+    contractFollow:"Recordatorio de mensajes de aprobación de contratos",
   },
   },
   paraCategory: {
   paraCategory: {
     Basic:"Parámetro básico",
     Basic:"Parámetro básico",

+ 3 - 2
ruoyi-ui-vue2/src/utils/lang/ru-ru.js

@@ -769,7 +769,7 @@
     validateDeleteError:"Это правило проверки указано в предложении и не может быть удалено!",
     validateDeleteError:"Это правило проверки указано в предложении и не может быть удалено!",
   },
   },
   home: {
   home: {
-    title:"Глобальная платформа управления проектами",
+    title:"Добро пожаловать в Глобальную систему управления",
     login:"Войти",
     login:"Войти",
     rememberPassword:"Запомнить пароль",
     rememberPassword:"Запомнить пароль",
     logining:"Вход в систему",
     logining:"Вход в систему",
@@ -926,7 +926,7 @@
     salesReject:"Увольнять",
     salesReject:"Увольнять",
     salesRejectTitle:"Увольнять",
     salesRejectTitle:"Увольнять",
     elevatorCode:"Лифт №",
     elevatorCode:"Лифт №",
-    specification:"Спецификация",
+    specification:"Характеристики",
     elevatorNumber:"Количество",
     elevatorNumber:"Количество",
     landShipFees:"Внутренний груз",
     landShipFees:"Внутренний груз",
     seaShipFees:"Морской груз",
     seaShipFees:"Морской груз",
@@ -1006,6 +1006,7 @@
     quotationFollow:"Напоминание о предложении сообщении",
     quotationFollow:"Напоминание о предложении сообщении",
     projectDealDay:"Напоминание о дате принятия решения",
     projectDealDay:"Напоминание о дате принятия решения",
     agentContractDay:"Напоминание об истечении срока действия контракта",
     agentContractDay:"Напоминание об истечении срока действия контракта",
+    contractFollow:"Напоминание об утверждении контракта",
   },
   },
   paraCategory: {
   paraCategory: {
     Basic:"Основные параметры",
     Basic:"Основные параметры",

+ 3 - 2
ruoyi-ui-vue2/src/utils/lang/zh-cn.js

@@ -769,7 +769,7 @@
     validateDeleteError:"该校验规则已被报价引用,无法删除!",
     validateDeleteError:"该校验规则已被报价引用,无法删除!",
   },
   },
   home: {
   home: {
-    title:"全球项目管理平台",
+    title:"欢迎登录全球管理系统",
     login:"登录",
     login:"登录",
     rememberPassword:"记住密码",
     rememberPassword:"记住密码",
     logining:"登录中",
     logining:"登录中",
@@ -910,7 +910,7 @@
     elevatorLoading:"正在加载电梯参数,请稍候…",
     elevatorLoading:"正在加载电梯参数,请稍候…",
     quotationLoading:"正在加载报价信息,请稍候…",
     quotationLoading:"正在加载报价信息,请稍候…",
     noImg:"暂无图片",
     noImg:"暂无图片",
-    outOfDiscount:"该报价单的折扣超出您的折扣范围,是否确认",
+    outOfDiscount:"该报价单的折扣超出您的折扣范围,需上级领导审批,是否确认",
     isSure:"是否确认",
     isSure:"是否确认",
     isTurnDown:"是否进行驳回",
     isTurnDown:"是否进行驳回",
     priceTotalError:"价格合计为0,无法议价",
     priceTotalError:"价格合计为0,无法议价",
@@ -1006,6 +1006,7 @@
     quotationFollow:"报价消息提醒",
     quotationFollow:"报价消息提醒",
     projectDealDay:"决定日期提醒消息",
     projectDealDay:"决定日期提醒消息",
     agentContractDay:"签约到期提醒消息",
     agentContractDay:"签约到期提醒消息",
+    contractFollow:"合同审批消息提醒",
   },
   },
   paraCategory: {
   paraCategory: {
     Basic:"基础参数",
     Basic:"基础参数",

+ 7 - 4
ruoyi-ui-vue2/src/views/contract/edit.vue

@@ -4,7 +4,7 @@
       <div class="account-title">{{ contractTitle }}</div>
       <div class="account-title">{{ contractTitle }}</div>
       <div class="button-group">
       <div class="button-group">
         <!--通过"-->
         <!--通过"-->
-        <el-button icon="el-icon-circle-check"  type="success" v-if="type === 'approve'"  @click="approveYes">{{ $t('contract.approveYes') }}</el-button>
+        <el-button icon="el-icon-circle-check"  type="primary" v-if="type === 'approve'"  @click="approveYes">{{ $t('contract.approveYes') }}</el-button>
         <!--驳回v-if="type === 'approve'"-->
         <!--驳回v-if="type === 'approve'"-->
         <el-button icon="el-icon-circle-close"  type="primary" v-if="type === 'approve'" @click="approveNoOpen">{{ $t('contract.approveNo') }}</el-button>
         <el-button icon="el-icon-circle-close"  type="primary" v-if="type === 'approve'" @click="approveNoOpen">{{ $t('contract.approveNo') }}</el-button>
         <el-button v-if="!disableFlag" type="primary" icon="el-icon-circle-check" @click="submitForm"
         <el-button v-if="!disableFlag" type="primary" icon="el-icon-circle-check" @click="submitForm"
@@ -793,7 +793,7 @@ export default {
         //非新增并且只是查询
         //非新增并且只是查询
         console.log("this.type===============>",this.type)
         console.log("this.type===============>",this.type)
         if (this.type == 'history') {
         if (this.type == 'history') {
-          this.getHistoryForm();
+          await this.getHistoryForm();
         } else {
         } else {
           //编辑或者变更
           //编辑或者变更
           await this.getContractInformation();
           await this.getContractInformation();
@@ -999,7 +999,9 @@ export default {
         await getContractHistory4Contract(this.contractId).then(response => {
         await getContractHistory4Contract(this.contractId).then(response => {
           this.form = response.data;
           this.form = response.data;
           this.form.amount = comdify(delcommafy(this.form.amount), 2);
           this.form.amount = comdify(delcommafy(this.form.amount), 2);
-          this.equipmentList = response.data.tqContractLiftHistoryList
+          this.$nextTick(()=>{
+            this.$set(this,"equipmentList",response.data.tqContractLiftHistoryList)
+          })
         });
         });
       }
       }
     },
     },
@@ -1018,6 +1020,7 @@ export default {
           //获取设备数据
           //获取设备数据
           listLift({contractNo:this.form.contractNo,version:this.form.version}).then(res=>{
           listLift({contractNo:this.form.contractNo,version:this.form.version}).then(res=>{
             if(res ){
             if(res ){
+
               this.equipmentList = res.rows
               this.equipmentList = res.rows
               //暂存履历信息
               //暂存履历信息
               this.contractHistory = {...this.form}
               this.contractHistory = {...this.form}
@@ -1483,7 +1486,7 @@ export default {
       return amount
       return amount
     },
     },
     handleHistory(row){
     handleHistory(row){
-      this.$tab.openPage("查看合同", '/contract-edit/index/' + row.id, {type: 'history'});
+      this.$tab.openPage("查看履历", '/contract-edit/index/' + row.id, {type: 'history'});
     },
     },
     //审核通过
     //审核通过
     async approveYes(){
     async approveYes(){

+ 2 - 2
ruoyi-ui-vue2/src/views/contract/index.vue

@@ -76,10 +76,10 @@
                 <MoreBtn :handle-command="handleCommand" :row="row" :btns="[
                 <MoreBtn :handle-command="handleCommand" :row="row" :btns="[
                   { label: $t('common.edit'), command: 'edit', icon: 'el-icon-edit', permi: 'contract:edit' ,showAble: hasPermission(row) && row.approveStatus !== '0' && row.approveStatus !== '2'},
                   { label: $t('common.edit'), command: 'edit', icon: 'el-icon-edit', permi: 'contract:edit' ,showAble: hasPermission(row) && row.approveStatus !== '0' && row.approveStatus !== '2'},
                   { label: $t('contract.approve'), command: 'approve', icon: 'el-icon-edit', permi: 'contract:approve' ,showAble: hasPermissionApprove(row) && row.approveStatus === '0' && main.isAuditor(row.flow) },
                   { label: $t('contract.approve'), command: 'approve', icon: 'el-icon-edit', permi: 'contract:approve' ,showAble: hasPermissionApprove(row) && row.approveStatus === '0' && main.isAuditor(row.flow) },
-                  { label: $t('contract.amendment'), command: 'amendment', icon: 'el-icon-refresh', permi: 'contract:amendment',showAble:hasPermission(row) && row.approveStatus === '2'},
+                  { label: $t('contract.amendment'), command: 'amendment', icon: 'el-icon-refresh', permi: 'contract:amendment',showAble:row.typeAuthority !== 'toVoid' && hasPermission(row) && row.approveStatus === '2'},
                   // { label: $t('contract.delete'), command: 'delete', icon: 'el-icon-delete', permi: 'contract:delete', showAble:hasPermission(row) && row.approveStatus === '0' },
                   // { label: $t('contract.delete'), command: 'delete', icon: 'el-icon-delete', permi: 'contract:delete', showAble:hasPermission(row) && row.approveStatus === '0' },
                   { label: $t('contract.delete'), command: 'cancel', icon: 'el-icon-refresh-left', permi: 'contract:cancel', showAble:hasPermission(row) && row.approveStatus === '0' },
                   { label: $t('contract.delete'), command: 'cancel', icon: 'el-icon-refresh-left', permi: 'contract:cancel', showAble:hasPermission(row) && row.approveStatus === '0' },
-                  { label: $t('contract.toVoid'), command: 'toVoid', icon: 'el-icon-refresh-left', permi: 'contract:toVoid', showAble:hasPermission(row) && row.approveStatus === '2' },
+                  { label: $t('contract.toVoid'), command: 'toVoid', icon: 'el-icon-refresh-left', permi: 'contract:toVoid', showAble:row.typeAuthority !== 'toVoid' && hasPermission(row) && row.approveStatus === '2' },
             ]"/>
             ]"/>
               </template>
               </template>
         </Column>
         </Column>