jinhui.wang

Merge remote-tracking branch 'origin/release-pdd-cache-v1.0.12' into dev

Showing 128 changed files with 2940 additions and 1058 deletions
NODE_ENV = production
# 演示环境配置
ENV = 'demo'
VUE_APP_BASE_ENV = "demo"
VUE_APP_Version = '1.0.0'
#测试环境
VUE_APP_BASE_API = 'http://192.168.1.251:7023/Exp'
VUE_APP_BASE_ROUTE = '/EcomDemo'
VUE_APP_BASE_LOGINOUT = '/EcomDemo'
#后端版本校验版本号
VUE_APP_APIVERSION = 'BD6DBD063F5AB7394879E3C08781CD72.A3889C390C14952AD666ABC3BE46BE40'
#iclearEmp系统地址
VUE_APP_REDIRECT_EMP = 'http://192.168.1.251/Emp/#login'
#Fcl登录地址
VUE_APP_REDIRECT_FCL = 'https://www.fedex.com/secure-login/#login-credentials?redirectUrl=https://iclearuat.cndcdmz.apac.fedex.com/Exp/sysUserController/wlgnForward'
#图文版使用指南
VUE_APP_FEDEX_HANDBOOK = 'http://192.168.1.251/Emp/FedEx.pdf'
#视频版使用指南
VUE_APP_FEDEX_VIDEO = '/manager-server/OperationManual_cp.mp4'
#隐私政策
VUE_APP_PRIVACT_POLICY = 'https://www.fedex.com/zh-cn/privacy-policy.html'
#使用条款
VUE_APP_TERMS_OF_USE = 'https://www.fedex.com/zh-cn/terms-of-use.html'
#营业执照
VUE_APP_BUSINESS_LICENSE = 'https://www.fedex.com/content/dam/fedex/apac-asia-pacific/MVP-APAC/images/2019/Q3/CN_EN_2019_1_Master_image_NA_business_license_marketing_913515423.jpg'
#快递业务经营许可证
VUE_APP_BUSINESS_PERMIT = 'https://www.fedex.com/content/dam/fedex/apac-asia-pacific/downloads/fedex-express-delivery-business-permit-cn.jpg'
#沪公网安备号
VUE_APP_SHANGHAI_FILLING_NUMBER = 'http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31010102007222'
#京ICP
VUE_APP_BEIJING_FILLING_NUMBER = 'https://beian.miit.gov.cn/#/Integrated/recordQuery'
VUE_APP_BASE_API_dev = 'http://192.168.1.251:7021/Exp'
VUE_APP_BASE_API_test = 'http://192.168.1.251:7022/Exp'
VUE_APP_BASE_API_demo = 'http://192.168.1.251:7023/Exp'
VUE_APP_BASE_API_uat = 'https://declarationuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_pre = 'https://iclearexpuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_prod = 'https://declaration.fedex.com.cn/Exp'
\ No newline at end of file
......@@ -3,27 +3,29 @@ ENV = 'development'
VUE_APP_BASE_ENV = "dev"
VUE_APP_Version = '1.0.0'
VUE_APP_Version = '1.0.12'
VUE_APP_BASE_URL = 'http://101.132.100.41:7001/EcomExp'
# FedEx 在线申报工具/开发环境
VUE_APP_BASE_API = 'http://101.132.100.41:7001/Ecom'
# http://101.132.100.41:7001/EcomExp
VUE_APP_BASE_API = /EcomExp
VUE_APP_BASE_ROUTE = '/Ecom'
VUE_APP_BASE_ROUTE = '/EcomDev'
VUE_APP_BASE_LOGINOUT = '/Ecom'
VUE_APP_BASE_LOGINOUT = '/EcomDev'
#后端版本校验版本号
VUE_APP_APIVERSION = 'BFEDDF560FF988C07141DF6135A9BFCF.A3889C390C14952AD666ABC3BE46BE40'
VUE_APP_APIVERSION = 'BFEDDF560FF988C07141DF6135A9BFCF.AD2F981820C1E26B9C95B61832AF190A'
#路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true
#iclearEmp系统地址
VUE_APP_REDIRECT_EMP = 'http://192.168.1.251/Emp/#login'
# VUE_APP_REDIRECT_EMP = 'http://192.168.1.251/Emp/#login'
#Fcl登录地址
VUE_APP_REDIRECT_FCL = 'https://www.fedex.com/secure-login/#login-credentials?redirectUrl=https://iclearuat.cndcdmz.apac.fedex.com/Exp/sysUserController/wlgnForward'
# VUE_APP_REDIRECT_FCL = 'https://www.fedex.com/secure-login/#login-credentials?redirectUrl=https://iclearuat.cndcdmz.apac.fedex.com/Exp/sysUserController/wlgnForward'
#图文版使用指南
VUE_APP_FEDEX_HANDBOOK = 'http://192.168.1.251/Emp/FedEx.pdf'
# VUE_APP_FEDEX_HANDBOOK = 'http://192.168.1.251/Emp/FedEx.pdf'
#视频版使用指南
VUE_APP_FEDEX_VIDEO = '/manager-server/OperationManual_cp.mp4'
#隐私政策
......@@ -37,11 +39,14 @@ VUE_APP_BUSINESS_PERMIT = 'https://www.fedex.com/content/dam/fedex/apac-asia-pac
#沪公网安备号
VUE_APP_SHANGHAI_FILLING_NUMBER = 'http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31010102007222'
#京ICP
VUE_APP_BEIJING_FILLING_NUMBER = 'https://beian.miit.gov.cn/#/Integrated/recordQuery'
VUE_APP_BASE_API_dev = 'http://192.168.1.251:7021/Exp'
VUE_APP_BASE_API_test = 'http://192.168.1.251:7022/Exp'
VUE_APP_BASE_API_demo = 'http://192.168.1.251:7023/Exp'
VUE_APP_BASE_API_uat = 'https://declarationuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_pre = 'https://iclearexpuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_prod = 'https://declaration.fedex.com.cn/Exp'
\ No newline at end of file
VUE_APP_BEIJING_FILLING_NUMBER = 'https://beian.miit.gov.cn/#/Integrated/recordQuery'
# VUE_APP_BASE_API_dev = 'http://192.168.1.251:7021/Exp'
# VUE_APP_BASE_API_test = 'http://192.168.1.251:7022/Exp'
# VUE_APP_BASE_API_demo = 'http://192.168.1.251:7023/Exp'
# VUE_APP_BASE_API_uat = 'https://declarationuat.fedex.com.cn/Exp'
# VUE_APP_BASE_API_pre = 'https://iclearexpuat.fedex.com.cn/Exp'
# VUE_APP_BASE_API_prod = 'https://declaration.fedex.com.cn/Exp'
......
NODE_ENV = production
# 开发环境配置
ENV = 'deving'
VUE_APP_BASE_ENV = "deving"
ENV = 'dev_erry'
VUE_APP_Version = '1.0.0'
VUE_APP_BASE_ENV = "dev"
VUE_APP_Version = '1.0.12'
#测试环境
VUE_APP_BASE_API = 'http://101.132.100.41:7001/Ecom'
VUE_APP_BASE_API = 'http://101.132.100.41:7008/EcomExp'
VUE_APP_BASE_ROUTE = '/EcomDev'
VUE_APP_BASE_LOGINOUT = '/EcomDev'
#后端版本校验版本号
VUE_APP_APIVERSION = 'BFEDDF560FF988C07141DF6135A9BFCF.A3889C390C14952AD666ABC3BE46BE40'
VUE_APP_APIVERSION = 'BFEDDF560FF988C07141DF6135A9BFCF.AD2F981820C1E26B9C95B61832AF190A'
#iclearEmp系统地址
VUE_APP_REDIRECT_EMP = 'http://192.168.1.251/Emp/#login'
# VUE_APP_REDIRECT_EMP = 'http://192.168.1.251/Emp/#login'
#Fcl登录地址
VUE_APP_REDIRECT_FCL = 'https://www.fedex.com/secure-login/#login-credentials?redirectUrl=https://iclearuat.cndcdmz.apac.fedex.com/Exp/sysUserController/wlgnForward'
# VUE_APP_REDIRECT_FCL = 'https://www.fedex.com/secure-login/#login-credentials?redirectUrl=https://iclearuat.cndcdmz.apac.fedex.com/Exp/sysUserController/wlgnForward'
#图文版使用指南
VUE_APP_FEDEX_HANDBOOK = 'http://192.168.1.251/Emp/FedEx.pdf'
# VUE_APP_FEDEX_HANDBOOK = 'http://192.168.1.251/Emp/FedEx.pdf'
#视频版使用指南
VUE_APP_FEDEX_VIDEO = '/manager-server/OperationManual_cp.mp4'
#隐私政策
......@@ -35,11 +36,11 @@ VUE_APP_BUSINESS_PERMIT = 'https://www.fedex.com/content/dam/fedex/apac-asia-pac
#沪公网安备号
VUE_APP_SHANGHAI_FILLING_NUMBER = 'http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31010102007222'
#京ICP
VUE_APP_BEIJING_FILLING_NUMBER = 'https://beian.miit.gov.cn/#/Integrated/recordQuery'
VUE_APP_BASE_API_dev = 'http://192.168.1.251:7021/Exp'
VUE_APP_BASE_API_test = 'http://192.168.1.251:7022/Exp'
VUE_APP_BASE_API_demo = 'http://192.168.1.251:7023/Exp'
VUE_APP_BASE_API_uat = 'https://declarationuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_pre = 'https://iclearexpuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_prod = 'https://declaration.fedex.com.cn/Exp'
\ No newline at end of file
VUE_APP_BEIJING_FILLING_NUMBER = 'https://beian.miit.gov.cn/#/Integrated/recordQuery'
# VUE_APP_BASE_API_dev = 'http://192.168.1.251:7021/Exp'
# VUE_APP_BASE_API_test = 'http://192.168.1.251:7022/Exp'
# VUE_APP_BASE_API_demo = 'http://192.168.1.251:7023/Exp'
# VUE_APP_BASE_API_uat = 'https://declarationuat.fedex.com.cn/Exp'
# VUE_APP_BASE_API_pre = 'https://iclearexpuat.fedex.com.cn/Exp'
# VUE_APP_BASE_API_prod = 'https://declaration.fedex.com.cn/Exp'
......
NODE_ENV = production
# 预生产环境配置
ENV = 'pre'
# 文件名
ENV = 'pre_fedex'
# 没用到
VUE_APP_BASE_ENV = "pre"
VUE_APP_Version = '1.0.0'
VUE_APP_Version = '1.0.12'
#测试环境
VUE_APP_BASE_API = 'https://iclearexpuat.fedex.com.cn/Exp'
#预生产UAT测试环境 https://declarationuat.fedex.com.cn
VUE_APP_BASE_API = 'https://declarationuat.fedex.com.cn/EcomExp'
VUE_APP_BASE_ROUTE = '/Ecom'
VUE_APP_BASE_ROUTE = '/EcomExp'
VUE_APP_BASE_LOGINOUT = '/Ecom'
VUE_APP_BASE_LOGINOUT = '/EcomExp'
#后端版本校验版本号
VUE_APP_APIVERSION = 'D5B582ED9ED4002BF2BCB386A68519CF.A3889C390C14952AD666ABC3BE46BE40'
VUE_APP_APIVERSION = '19DD6C1CEC504AC854645F352EB03209.AD2F981820C1E26B9C95B61832AF190A'
#iclearEmp系统地址
VUE_APP_REDIRECT_EMP = 'https://iclearexpuat.fedex.com.cn/Emp/#/login'
# VUE_APP_REDIRECT_EMP = 'https://iclearexpuat.fedex.com.cn/Emp/#/login'
#Fcl登录地址
VUE_APP_REDIRECT_FCL = 'https://www.fedex.com/secure-login/#login-credentials?redirectUrl=https://iclearuat.cndcdmz.apac.fedex.com/Exp/sysUserController/wlgnForward'
# VUE_APP_REDIRECT_FCL = 'https://www.fedex.com/secure-login/#login-credentials?redirectUrl=https://iclearuat.cndcdmz.apac.fedex.com/Exp/sysUserController/wlgnForward'
#图文版使用指南
VUE_APP_FEDEX_HANDBOOK = 'https://iclearexpuat.fedex.com.cn/Exp/manager-server/FedEx.pdf'
# VUE_APP_FEDEX_HANDBOOK = 'https://iclearexpuat.fedex.com.cn/Exp/manager-server/FedEx.pdf'
#视频版使用指南
VUE_APP_FEDEX_VIDEO = '/manager-server/OperationManual_cp.mp4'
#隐私政策
......@@ -37,9 +40,9 @@ VUE_APP_SHANGHAI_FILLING_NUMBER = 'http://www.beian.gov.cn/portal/registerSystem
#京ICP
VUE_APP_BEIJING_FILLING_NUMBER = 'https://beian.miit.gov.cn/#/Integrated/recordQuery'
VUE_APP_BASE_API_dev = 'https://iclearexpuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_test = 'https://iclearexpuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_demo = 'https://iclearexpuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_uat = 'https://declarationuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_pre = 'https://iclearexpuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_prod = 'https://declaration.fedex.com.cn/Exp'
\ No newline at end of file
# VUE_APP_BASE_API_dev = 'https://iclearexpuat.fedex.com.cn/Exp'
# VUE_APP_BASE_API_test = 'https://iclearexpuat.fedex.com.cn/Exp'
# VUE_APP_BASE_API_demo = 'https://iclearexpuat.fedex.com.cn/Exp'
# VUE_APP_BASE_API_uat = 'https://declarationuat.fedex.com.cn/Exp'
# VUE_APP_BASE_API_pre = 'https://iclearexpuat.fedex.com.cn/Exp'
# VUE_APP_BASE_API_prod = 'https://declaration.fedex.com.cn/Exp'
\ No newline at end of file
......
# 生产环境配置
ENV = 'production'
ENV = 'production_fedex'
VUE_APP_BASE_ENV = "prod"
# FedEx 在线申报工具/生产环境
VUE_APP_BASE_API = '/prod-api'
VUE_APP_Version = '1.0.12'
VUE_APP_Version = '1.0.0'
#生产环境
VUE_APP_BASE_API = 'https://declaration.fedex.com.cn/EcomExp'
#测试环境
VUE_APP_BASE_API = 'https://declaration.fedex.com.cn/Exp'
VUE_APP_BASE_ROUTE = '/EcomExp'
VUE_APP_BASE_ROUTE = '/Ecom'
VUE_APP_BASE_LOGINOUT = '/Ecom'
VUE_APP_BASE_LOGINOUT = '/EcomExp'
#后端版本校验版本号
VUE_APP_APIVERSION = 'C8074BB318FB85693233E64ACC64C1ED.A3889C390C14952AD666ABC3BE46BE40'
VUE_APP_APIVERSION = 'C8074BB318FB85693233E64ACC64C1ED.AD2F981820C1E26B9C95B61832AF190A'
#iclearEmp系统地址
VUE_APP_REDIRECT_EMP = 'https://declaration.fedex.com.cn/Emp/#/login'
# VUE_APP_REDIRECT_EMP = 'https://declaration.fedex.com.cn/Emp/#/login'
#Fcl登录地址
VUE_APP_REDIRECT_FCL = 'https://www.fedex.com/secure-login/#login-credentials?redirectUrl=https://iclearuat.cndcdmz.apac.fedex.com/Exp/sysUserController/wlgnForward'
# VUE_APP_REDIRECT_FCL = 'https://www.fedex.com/secure-login/#login-credentials?redirectUrl=https://iclearuat.cndcdmz.apac.fedex.com/Exp/sysUserController/wlgnForward'
#图文版使用指南
VUE_APP_FEDEX_HANDBOOK = 'https://declaration.fedex.com.cn/Exp/manager-server/FedEx.pdf'
# VUE_APP_FEDEX_HANDBOOK = 'https://declaration.fedex.com.cn/Exp/manager-server/FedEx.pdf'
#视频版使用指南
VUE_APP_FEDEX_VIDEO = '/manager-server/OperationManual_cp.mp4'
#隐私政策
......@@ -37,11 +34,11 @@ VUE_APP_BUSINESS_PERMIT = 'https://www.fedex.com/content/dam/fedex/apac-asia-pac
#沪公网安备号
VUE_APP_SHANGHAI_FILLING_NUMBER = 'http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31010102007222'
#京ICP
VUE_APP_BEIJING_FILLING_NUMBER = 'https://beian.miit.gov.cn/#/Integrated/recordQuery'
VUE_APP_BASE_API_dev = 'https://declaration.fedex.com.cn/Exp'
VUE_APP_BASE_API_test = 'https://declaration.fedex.com.cn/Exp'
VUE_APP_BASE_API_demo = 'https://declaration.fedex.com.cn/Exp'
VUE_APP_BASE_API_uat = 'https://declaration.fedex.com.cn/Exp'
VUE_APP_BASE_API_pre = 'https://declaration.fedex.com.cn/Exp'
VUE_APP_BASE_API_prod = 'https://declaration.fedex.com.cn/Exp'
\ No newline at end of file
VUE_APP_BEIJING_FILLING_NUMBER = 'https://beian.miit.gov.cn/#/Integrated/recordQuery'
# VUE_APP_BASE_API_dev = 'https://declaration.fedex.com.cn/Exp'
# VUE_APP_BASE_API_test = 'https://declaration.fedex.com.cn/Exp'
# VUE_APP_BASE_API_demo = 'https://declaration.fedex.com.cn/Exp'
# VUE_APP_BASE_API_uat = 'https://declaration.fedex.com.cn/Exp'
# VUE_APP_BASE_API_pre = 'https://declaration.fedex.com.cn/Exp'
# VUE_APP_BASE_API_prod = 'https://declaration.fedex.com.cn/Exp'
......
NODE_ENV = production
# 测试环境配置
ENV = 'staging'
ENV = 'test_erry'
VUE_APP_BASE_ENV = "staging"
VUE_APP_BASE_ENV = "test"
VUE_APP_Version = '1.0.0'
VUE_APP_Version = '1.0.12'
#测试环境
VUE_APP_BASE_API = 'http://101.132.100.41:7001/Ecom'
VUE_APP_BASE_API = 'http://101.132.100.41:7001/EcomExp'
VUE_APP_BASE_ROUTE = '/EcomTest'
VUE_APP_BASE_ROUTE = '/EcomExpTest'
VUE_APP_BASE_LOGINOUT = '/EcomTest'
VUE_APP_BASE_LOGINOUT = '/EcomExpTest'
#后端版本校验版本号
VUE_APP_APIVERSION = '033BD94B1168D7E4F0D644C3C95E35BF.A3889C390C14952AD666ABC3BE46BE40'
VUE_APP_APIVERSION = '033BD94B1168D7E4F0D644C3C95E35BF.AD2F981820C1E26B9C95B61832AF190A'
#iclearEmp系统地址
VUE_APP_REDIRECT_EMP = 'http://192.168.1.251/Emp/#login'
# VUE_APP_REDIRECT_EMP = 'http://192.168.1.251/Emp/#login'
#Fcl登录地址
VUE_APP_REDIRECT_FCL = 'https://www.fedex.com/secure-login/#login-credentials?redirectUrl=https://iclearuat.cndcdmz.apac.fedex.com/Exp/sysUserController/wlgnForward'
# VUE_APP_REDIRECT_FCL = 'https://www.fedex.com/secure-login/#login-credentials?redirectUrl=https://iclearuat.cndcdmz.apac.fedex.com/Exp/sysUserController/wlgnForward'
#图文版使用指南
VUE_APP_FEDEX_HANDBOOK = 'http://192.168.1.251/Emp/FedEx.pdf'
# VUE_APP_FEDEX_HANDBOOK = 'http://192.168.1.251/Emp/FedEx.pdf'
#视频版使用指南
VUE_APP_FEDEX_VIDEO = '/manager-server/OperationManual_cp.mp4'
#隐私政策
......@@ -38,9 +38,9 @@ VUE_APP_SHANGHAI_FILLING_NUMBER = 'http://www.beian.gov.cn/portal/registerSystem
#京ICP
VUE_APP_BEIJING_FILLING_NUMBER = 'https://beian.miit.gov.cn/#/Integrated/recordQuery'
VUE_APP_BASE_API_dev = 'http://192.168.1.251:7021/Exp'
VUE_APP_BASE_API_test = 'http://192.168.1.251:7022/Exp'
VUE_APP_BASE_API_demo = 'http://192.168.1.251:7023/Exp'
VUE_APP_BASE_API_uat = 'https://declarationuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_pre = 'https://iclearexpuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_prod = 'https://declaration.fedex.com.cn/Exp'
\ No newline at end of file
# VUE_APP_BASE_API_dev = 'http://192.168.1.251:7021/Exp'
# VUE_APP_BASE_API_test = 'http://192.168.1.251:7022/Exp'
# VUE_APP_BASE_API_demo = 'http://192.168.1.251:7023/Exp'
# VUE_APP_BASE_API_uat = 'https://declarationuat.fedex.com.cn/Exp'
# VUE_APP_BASE_API_pre = 'https://iclearexpuat.fedex.com.cn/Exp'
# VUE_APP_BASE_API_prod = 'https://declaration.fedex.com.cn/Exp'
\ No newline at end of file
......
NODE_ENV = production
# uat环境配置
ENV = 'uat'
# 测试环境配置
ENV = 'uat_erry'
VUE_APP_BASE_ENV = "uat"
VUE_APP_Version = '1.0.0'
VUE_APP_Version = '1.0.12'
#测试环境
VUE_APP_BASE_API = 'https://declarationuat.fedex.com.cn/Exp'
VUE_APP_BASE_API = 'http://101.132.100.41:7023/EcomExp'
VUE_APP_BASE_ROUTE = '/Ecom'
#VUE_APP_BASE_ROUTE = '/EcomUat'
# VUE_APP_BASE_ROUTE = '/Ecom'
VUE_APP_BASE_ROUTE = '/EcomExp'
VUE_APP_BASE_LOGINOUT = '/Ecom'
#VUE_APP_BASE_LOGINOUT = '/EcomUat'
# VUE_APP_BASE_LOGINOUT = '/Ecom'
VUE_APP_BASE_LOGINOUT = '/EcomExp'
#后端版本校验版本号
VUE_APP_APIVERSION = '19DD6C1CEC504AC854645F352EB03209.A3889C390C14952AD666ABC3BE46BE40'
VUE_APP_APIVERSION = '19DD6C1CEC504AC854645F352EB03209.AD2F981820C1E26B9C95B61832AF190A'
#iclearEmp系统地址
VUE_APP_REDIRECT_EMP = 'https://declarationuat.fedex.com.cn/Emp/#/login'
# VUE_APP_REDIRECT_EMP = 'http://192.168.1.251/Emp/#login'
#Fcl登录地址
VUE_APP_REDIRECT_FCL = 'https://www.fedex.com/secure-login/#login-credentials?redirectUrl=https://iclearuat.cndcdmz.apac.fedex.com/Exp/sysUserController/wlgnForward'
# VUE_APP_REDIRECT_FCL = 'https://www.fedex.com/secure-login/#login-credentials?redirectUrl=https://iclearuat.cndcdmz.apac.fedex.com/Exp/sysUserController/wlgnForward'
#图文版使用指南
VUE_APP_FEDEX_HANDBOOK = 'https://declarationuat.fedex.com.cn/Exp/manager-server/FedEx.pdf'
# VUE_APP_FEDEX_HANDBOOK = 'http://192.168.1.251/Emp/FedEx.pdf'
#视频版使用指南
VUE_APP_FEDEX_VIDEO = '/manager-server/OperationManual_cp.mp4'
#隐私政策
......@@ -38,9 +42,9 @@ VUE_APP_SHANGHAI_FILLING_NUMBER = 'http://www.beian.gov.cn/portal/registerSystem
#京ICP
VUE_APP_BEIJING_FILLING_NUMBER = 'https://beian.miit.gov.cn/#/Integrated/recordQuery'
VUE_APP_BASE_API_dev = 'https://declarationuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_test = 'https://declarationuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_demo = 'https://declarationuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_uat = 'https://declarationuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_pre = 'https://iclearexpuat.fedex.com.cn/Exp'
VUE_APP_BASE_API_prod = 'https://declaration.fedex.com.cn/Exp'
\ No newline at end of file
# VUE_APP_BASE_API_dev = 'http://192.168.1.251:7021/Exp'
# VUE_APP_BASE_API_test = 'http://192.168.1.251:7022/Exp'
# VUE_APP_BASE_API_demo = 'http://192.168.1.251:7023/Exp'
# VUE_APP_BASE_API_uat = 'https://declarationuat.fedex.com.cn/Exp'
# VUE_APP_BASE_API_pre = 'https://iclearexpuat.fedex.com.cn/Exp'
# VUE_APP_BASE_API_prod = 'https://declaration.fedex.com.cn/Exp'
\ No newline at end of file
......
......@@ -39,3 +39,6 @@ build/
/out/
package-lock.json
dist_staging
dist_uat
\ No newline at end of file
......
{
"name": "iCearExport",
"version": "1.0.0",
"version": "1.0.12",
"description": "FedEx 在线申报工具",
"author": "ICE",
"license": "MIT",
......
{
"name": "iCearExport",
"version": "1.0.0",
"name": "FedEx",
"version": "1.0.12",
"description": "FedEx 在线申报工具",
"author": "ICE",
"license": "MIT",
"scripts": {
"dev": "vue-cli-service serve",
"build:deving": "vue-cli-service build --mode deving",
"build:stage": "vue-cli-service build --mode staging",
"build:demo": "vue-cli-service build --mode demo",
"build:dev": "vue-cli-service build --mode deving",
"build:test": "vue-cli-service build --mode test",
"build:uat": "vue-cli-service build --mode uat",
"build:pre": "vue-cli-service build --mode pre",
"build:prod": "vue-cli-service build",
"build:pre:fedex": "vue-cli-service build --mode pre",
"build:prod:fedex": "vue-cli-service build",
"preview": "node build/index.js --preview",
"lint": "eslint --ext .js,.vue src"
},
......@@ -41,13 +40,16 @@
},
"dependencies": {
"axios": "0.21.1",
"big.js": "^7.0.1",
"core-js": "3.8.3",
"crypto-js": "^4.2.0",
"docx-preview": "^0.1.20",
"element-ui": "^2.15.14",
"vue": "2.6.14",
"vue-i18n": "^8.28.2",
"vue-router": "3.5.2",
"vuex": "3.6.2"
"vuex": "3.6.2",
"vxe-table": "^3.15.34"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.5.13",
......@@ -56,7 +58,7 @@
"babel-eslint": "10.1.0",
"chalk": "4.1.1",
"connect": "3.6.6",
"eslint": "7.30.0",
"eslint": "^6.8.0",
"eslint-plugin-vue": "7.12.1",
"lint-staged": "10.5.4",
"runjs": "4.4.2",
......
......@@ -28,15 +28,16 @@
size="mini"
:loading="closeLoading"
@click="close"
>{{ $t("system.confirm") }}</el-button
>
{{ $t("system.confirm") }}
</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { setTime, getTime, getToken, removeToken } from "@/utils/auth";
import { setTime } from "@/utils/auth";
import { getTokenTime } from "@/api/system/user.js";
export default {
name: "App",
......@@ -63,13 +64,11 @@ export default {
// if (getToken()) {
// this.upDateTokenTime();
// }
// let upDateTime = setInterval(() => {
// if (getToken()) {
// this.upDateTokenTime();
// }
// }, this.timeOption.updateTime);
// let timeInterval = setInterval(() => {
// if (getTime() && getToken()) {
// let three = 1000 * 60 * this.timeOption.tokenTimeLength;
......
import request from "@/utils/request";
// 删除用户key
// POST
// /applyKey/deleteKey/{id}
export function deleteKey(id) {
return request({
url: "/bus-customer/applyKey/deleteKey/" + id,
method: "post",
});
}
// 申请key
// /applyKey/generateKey
export function generateKey(params) {
return request({
url: `/bus-customer/applyKey/generateKey`,
method: "post",
data: params.toString(),
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
});
}
// 获取用户key列表
// POST
// /applyKey/queryKeyList
export function queryKeyList(data) {
return request({
url: "/bus-customer/applyKey/queryKeyList",
method: "post",
data: data,
});
}
// 修改用户key相关信息
// POST
// /applyKey/updateKeyInfo
export function updateKeyInfo(data) {
return request({
url: "/bus-customer/applyKey/updateKeyInfo",
method: "post",
data: data,
});
}
import request from "@/utils/request";
// /exportArrivalIn/getExportArrivalInList
export function getExportArrivalInList(data) {
return request({
url: "/bus-customer/exportArrivalIn/getExportArrivalInList",
method: "post",
data: data,
});
}
// GET ​/exportArrivalIn​/receipt​/{copNo} 运抵单回执
export function getExportArrivalInReceipt({ copNo }) {
return request({
url: `/bus-customer/exportArrivalIn/receipt/${copNo}`,
method: "get",
});
}
// GET ​/exportArrivalIn​/details​/{id} 查询运抵单详情
export function getExportArrivalInDetails({ id }) {
return request({
url: `/bus-customer/exportArrivalIn/details/${id}`,
method: "get",
});
}
// /hsCodeMgr/getHsCodeList
export function getHsCodeList(data) {
return request({
url: "/bus-customer/hsCodeMgr/getHsCodeList",
method: "post",
data: data,
});
}
// GET
// ​/hsCodeMgr​/hsCodeIncr
// 增量数据同步
export function getHsCodeIncr({ beginDate }) {
return request({
url: `/bus-customer/hsCodeMgr/hsCodeIncr/${beginDate}`,
method: "get",
});
}
// GET
// ​/hsCodeMgr​/singleSync​/{id}
// 单条hsCode同步更新;
export function getHsCodeSingleSync({ id }) {
return request({
url: `/bus-customer/hsCodeMgr/singleSync/${id}`,
method: "get",
});
}
import request from "@/utils/request";
/**
* @description 获取配置
* @param {Object} data
* @method GET
*/
export function getConfigList(data) {
return request({
url: "/bus-customer/sysConfigCenter/getConfigList",
method: "post",
data,
});
}
/**
* @description 刷新配置
* */
export function refreshConfig(data) {
return request({
url: `/bus-customer/sysConfigCenter/refreshConfig/${data.id}`,
method: "get",
});
}
/**
* @description 添加配置
* @param {Object} data
* @method POST
*/
export function addConfig(data) {
return request({
url: "/bus-customer/sysConfigCenter/addConfig",
method: "post",
data,
});
}
/**
* @description 修改配置
* @param {Object} data
* @method POST
*/
export function updateConfig(data) {
return request({
url: "/bus-customer/sysConfigCenter/updateConfig",
method: "post",
data,
});
}
import request from '@/utils/request'
import request from "@/utils/request";
//获取自定义设置数据
/**
......@@ -6,11 +6,15 @@ import request from '@/utils/request'
* @param queryType * 查询分类(1#查询条件,2#显示及导出)
*/
export function getCustomData(data) {
return request({
url: '/bus-employees/custom/setting/pool/query/' + data.queryType + '/' + data.belongBizType,
method: 'get',
data: data,
})
return request({
url:
"/bus-employees/custom/setting/pool/query/" +
data.queryType +
"/" +
data.belongBizType,
method: "get",
data: data,
});
}
//保存自定义设置数据
......@@ -25,11 +29,11 @@ export function getCustomData(data) {
* poolCode 对应在待选池里的ID(source.poolCode) } }
*/
export function setCustomData(data) {
return request({
url: '/bus-employees/custom/setting/pool/merge',
method: 'post',
data: data,
})
return request({
url: "/bus-employees/custom/setting/pool/merge",
method: "post",
data: data,
});
}
//获取查询条件数据
......@@ -37,11 +41,11 @@ export function setCustomData(data) {
* @param belongBizType * 所属业务功能类型(11#员工端预审,12#员工端站点,13#员工端口岸,14#员工端运单查询)
*/
export function getSreachFormData(data) {
return request({
url: '/bus-employees/custom/setting/condition/' + data.belongBizType,
method: 'get',
data: data,
})
return request({
url: "/bus-employees/custom/setting/condition/" + data.belongBizType,
method: "get",
data: data,
});
}
//获取表头数据
......@@ -49,11 +53,11 @@ export function getSreachFormData(data) {
* @param belongBizType * 所属业务功能类型(11#员工端预审,12#员工端站点,13#员工端口岸,14#员工端运单查询)
*/
export function getTableData(data) {
return request({
url: '/bus-employees/custom/setting/display/' + data.belongBizType,
method: 'get',
data: data,
})
return request({
url: "/bus-employees/custom/setting/display/" + data.belongBizType,
method: "get",
data: data,
});
}
//自定义查询接口
......@@ -72,18 +76,18 @@ export function getTableData(data) {
* @param osprVaildFlag 站点页面操作ospr功能
*/
export function auditionEntrySreachCustomData(data) {
return request({
url: '/bus-employees' + data.url,
method: 'post',
data: data.data,
})
return request({
url: "/bus-employees" + data.url,
method: "post",
data: data.data,
});
}
//获取查询导出是否完成
export function getdownloadExlFileType(data) {
return request({
url: '/bus-employees/export/custom/exportResult?exportSign=' + data,
method: 'get',
data: data,
})
}
\ No newline at end of file
return request({
url: "/bus-employees/export/custom/exportResult?exportSign=" + data,
method: "get",
data: data,
});
}
......
import request from '@/utils/request'
import request from "@/utils/request";
const baseUrl = process.env.VUE_APP_BASE_API; //接口地址
//获取自定义设置数据
/**
......@@ -13,11 +14,11 @@ import request from '@/utils/request'
* @param pageSize *
*/
export function searchDeclareData(data) {
return request({
url: '/bus-customer/declareData/getDeclareDataList',
method: 'post',
data: data,
})
return request({
url: "/bus-customer/declareData/getDeclareDataList",
method: "post",
data: data,
});
}
//申报数据导入
......@@ -25,26 +26,44 @@ export function searchDeclareData(data) {
* @param multipartFile * 提运单号
*/
export function uploadDeclareData(data) {
let formData = new FormData
formData.append("multipartFile", data.multipartFile);
return request({
url: '/bus-customer/declareData/import',
method: 'post',
data: formData,
})
let formData = new FormData();
formData.append("multipartFile", data.multipartFile);
return request({
url: "/bus-customer/declareData/import",
method: "post",
data: formData,
});
}
//数据申报
/**
* @param declareIds * id list
* @param type *
* @param type *
*/
export function declareDataUpload(data) {
return request({
url: '/bus-customer/declareData/' + data.type,
method: 'post',
data: data.declareIds,
})
return request({
url: "/bus-customer/declareData/" + data.type,
method: "post",
data: {
cancellationReason: data.cancellationReason,
declareIds: data.declareIds,
changeFlag: data?.changeFlag || false,
},
});
}
// 删单deleteFlag:true,note:删单原因
// 变更changeFlag:true
export function declareDataUploadNew(data) {
return request({
url: "/bus-customer/declareData/" + data.type,
method: "post",
data: {
declareIds: data.declareIds, //申报id
deleteFlag: data?.deleteFlag || false, // 是否删单
changeFlag: data?.changeFlag || false,
note: data.note || null, // 删单原因
},
});
}
//查询订单回执
......@@ -52,36 +71,35 @@ export function declareDataUpload(data) {
* @param declareId * id
*/
export function getOrderReceipt(data) {
return request({
url: '/bus-customer/declareData/orderReceipt',
method: 'get',
params: data,
})
return request({
url: "/bus-customer/declareData/orderReceipt",
method: "get",
params: data,
});
}
//查询物流单回执
//查看离境回执
/**
* @param declareId * id
*/
export function getLogisticsReceipt(data) {
return request({
url: '/bus-customer/declareData/wayBillReceipt',
method: 'get',
params: data,
})
return request({
url: "/bus-customer/declareData/logisticsReceipt",
method: "get",
params: data,
});
}
//查询清单回执
/**
* @param declareId * id
*/
export function getListReceipt(data) {
return request({
url: '/bus-customer/declareData/listReceipt',
method: 'get',
params: data,
})
return request({
url: "/bus-customer/declareData/listReceipt",
method: "get",
params: data,
});
}
//查询清单总分单回执
......@@ -89,11 +107,250 @@ export function getListReceipt(data) {
* @param declareId * id
*/
export function getTotalReceipt(data) {
return request({
url: '/bus-customer/declareData/totalReceipt',
method: 'get',
params: data,
return request({
url: "/bus-customer/declareData/totalReceipt",
method: "get",
params: data,
});
}
/**
* 查看物流回执
* @param {*} data
* @returns
*/
export function getWayBillReceipt(data) {
return request({
url: "/bus-customer/declareData/wayBillReceipt",
method: "get",
params: data,
});
}
/**
* 查询总申报日志
* @param data id---->申报id
*/
export function getDeclarationLog(data) {
return request({
url: "/bus-customer/declareData/getDeclarationLog/" + data,
method: "get",
params: data,
});
}
// GET
// ​/declareData​/arrivalInReceipt
// 运抵单回执
export function arrivalInReceipt(data) {
return request({
url: "/bus-customer/declareData/arrivalInReceipt",
method: "get",
params: data,
});
}
/**
* 导出回执数据
* @param {*} data
* @returns
*/
export function exportDeclareData(data) {
return new Promise((resolve, reject) => {
var url = baseUrl + "/bus-customer/declareData/exportDeclareData";
request({
url: url,
method: "post",
responseType: "blob", // 确保响应类型为 blob
data: data,
})
.then((res) => {
const aLink = document.createElement("a");
aLink.href = URL.createObjectURL(res);
aLink.setAttribute("download", "申报数据.xlsx"); // 设置下载文件名称
document.body.appendChild(aLink);
aLink.click();
document.body.removeChild(aLink);
resolve(res);
})
.catch((err) => {
reject(err);
});
});
}
//获取客户列表
export function getCustomerList(data) {
return request({
url: "/bus-customer/customers/getCustomerList",
method: "post",
data: {
pageIndex: 1,
pageSize: 1000,
},
});
}
// /exportSummary/exportSummaryList
export function getNewCustomerList(data) {
return request({
url: "/bus-customer/exportSummary/get/customers",
method: "post",
data: {
pageIndex: 1,
pageSize: 1000,
...data,
},
});
}
//获取口岸表数据
export function getPortList(data) {
return request({
url: "/bus-customer/portInfo/getPortList",
method: "post",
data: {
pageIndex: 1,
pageSize: 1000,
},
});
}
//获取申报信息
export function getDeclareData(data) {
return request({
url: "/bus-customer/declareData/get/" + data.declareId,
method: "get",
params: data,
});
}
//更新申报信息
export function updateDeclareData(data) {
return request({
url: "/bus-customer/declareData/update",
method: "post",
data,
});
}
//申报数据批量修改-航班号,运单号
export function bathDeclareDate(data) {
return request({
url: "/bus-customer/declareData/bathDeclareDate",
method: "post",
data,
});
}
// GET
// ​/operatorPlace​/getCurrUserOperatorCode
// 获取当前用户监管场所代码
export function getCurrUserOperatorCode() {
return request({
url: "/bus-customer/operatorPlace/getCurrUserOperatorCode",
method: "get",
});
}
export function declareUpload(data) {
return request({
url: "/bus-customer/declareData/" + data.type,
method: "post",
data: {
...data,
},
});
}
// 根据提运单号 查询提运单号下的所有物流运单号
// bus-customer/declareData/checkBillNo
export function checkBillNo(data) {
return request({
url: "/bus-customer/declareData/checkBillNo",
method: "post",
data: data.declareIds,
});
}
// /declareData/getArrivalIneList
// 运抵单申报列表
export function getArrivalIneList(data) {
return request({
url: "/bus-customer/declareData/getArrivalIneList",
method: "post",
data: data,
});
}
// /declareData/getWeight/{billNo}
export function getWeight(data) {
return request({
url: "/bus-customer/declareData/getWeight/" + data.billNo,
method: "get",
data: data,
});
}
// POST
// ​/declareData​/modifyWeight
// 修改重量
export function modifyWeight(data) {
return request({
url: "/bus-customer/declareData/modifyWeight",
method: "post",
data: data,
});
}
// GET /declareData/getTotalDocumentsLevelLog​/{billNo}
export function getTotalDocumentsLevelLog(data) {
return request({
url: "/bus-customer/declareData/getTotalDocumentsLevelLog/" + data.billNo,
method: "get",
data: data,
});
}
// 分单级 根据提运单号获取操作日志
export function getOperationLogByLogisticsNo(data) {
return request({
url:
"/bus-customer/declareData/getOperationLogByLogisticsNo/" +
data.LogisticsNo,
method: "get",
data: data,
});
}
// ​/declareData​/getOperationLogByBillNo​/{billNo}
// 总 根据提运单号获取操作日志
export function getOperationLogByBillNo(data) {
return request({
url: "/bus-customer/declareData/getOperationLogByBillNo/" + data.billNo,
method: "get",
data: data,
});
}
// 查询导出的任务ID
// POST
// /exportList/submitExportTask
export function getSubmitExportTask(data) {
return request({
url: "/bus-customer/declareData/submitExportTask",
method: "post",
data: data,
});
}
// /asyncExport/taskStatus/{taskId}
export function getTaskStatus(data) {
return request({
url: "/bus-customer/asyncExport/taskStatus/" + data.taskId,
method: "get",
});
}
// /asyncExport/download/{taskId}
export function getDownload(data) {
return request({
url: "/bus-customer/asyncExport/download/" + data.taskId,
method: "get",
});
}
......
import request from '@/utils/request'
import request from "@/utils/request";
//清单总分单查询
/**
......@@ -14,21 +14,79 @@ import request from '@/utils/request'
* @param pageSize *
*/
export function getAllexportList(data) {
return request({
url: '/bus-customer/exportList/search',
method: 'post',
data: data,
})
return request({
url: "/bus-customer/exportList/search",
method: "post",
data: data,
});
}
//清单回执
/**
* @param copNo * 运单id
*/
export function getListReceiptData(data) {
return request({
url: '/bus-customer/exportList/receipt/' + data.copNo,
method: 'get',
})
}
\ No newline at end of file
return request({
url: "/bus-customer/exportList/receipt/" + data.copNo,
method: "get",
});
}
// POST
// /exportList/customizeExcelFormat
// 自定义清单表格导出格式
export function getCustomizeExcelFormat(data) {
return request({
url: "/bus-customer/exportList/customizeExcelFormat",
method: "post",
data: data,
});
}
// POST
// /exportList/listExport
// 清单导出
export function getListExport(data) {
return request({
url: "/bus-customer/exportList/listExport",
method: "post",
data: data,
});
}
// GET
// /exportList/getCustomizeExcelFormat
// 获取自定义清单导出格式
export function getCustomizeExcel(data) {
return request({
url: "/bus-customer/exportList/getCustomizeExcelFormat",
method: "get",
data: data,
});
}
// 查询导出的任务ID
// POST
// /exportList/submitExportTask
export function getSubmitExportTask(data) {
return request({
url: "/bus-customer/exportList/submitExportTask",
method: "post",
data: data,
});
}
// /asyncExport/taskStatus/{taskId}
export function getTaskStatus(data) {
return request({
url: "/bus-customer/asyncExport/taskStatus/" + data.taskId,
method: "get",
});
}
// /asyncExport/download/{taskId}
export function getDownload(data) {
return request({
url: "/bus-customer/asyncExport/download/" + data.taskId,
method: "get",
});
}
......
......@@ -15,4 +15,14 @@ export function getAllCancellation(data) {
method: 'post',
data: data,
})
}
//出口撤销单回执
/**
* @param copNo * 清单总分单号
*/
export function getExportCancellationReceiptData(data) {
return request({
url: '/bus-customer/exportCancellation/receipt/' + data.copNo,
method: 'get',
})
}
\ No newline at end of file
......
import request from "@/utils/request";
/**
* 汇总申请单查询
* @param data.billNo 提运单号
* @param data.preNo 预录入编号
* @param data.agentCode 电商企业代码
* @param data.startTime 汇总开始时间
* @param data.endTime 汇总结束时间
* @param data.sumNo 汇总申请编号
* @param data.declagAgentCode 报关企业代码
* @param data.returnStatus 业务状态
* @param data.msgSeqNo 报文序号
* @param data.pageIndex 当前页码
* @param data.pageSize 分页最大数据量
*/
export function searchExportSummaryList(data) {
return request({
url: "/bus-customer/exportSummary/exportSummaryList",
method: "post",
data: data,
});
}
/**
* 查询汇总回执
* @param data.copNo 企业唯一编号
*/
export function getExportSummaryReceiptData(data) {
return request({
url: "/bus-customer/exportSummary/receipt/" + data.copNo,
method: "get",
});
}
/**
* 获取汇总申请单详情
* @param data.id 汇总申请单id
*/
export function getExportSummaryDetail(data) {
return request({
url: "/bus-customer/exportSummary/exportSummaryDetail/" + data.id,
method: "get",
});
}
/**
* 汇总申报
* @param data
* @returns {*}
*/
export function declareSummaryApplication(data) {
return request({
url: "/bus-customer/exportSummary/declare",
method: "post",
data: data,
});
}
// POST
// ​/exportSummary​/get​/customers
// 根据条件获取可以汇总申报的企业
export function getCustomers(data) {
return request({
url: "/bus-customer/exportSummary/get/customers",
method: "post",
data: data,
});
}
// POST /exportSummary​/preview 预览
export function preview(data) {
return request({
url: "/bus-customer/exportSummary/preview",
method: "post",
data: data,
});
}
import request from "@/utils/request";
// POST
// ​/operationLog​/getOperationLogList
// 查询操作日志列表
export function getOperationLogList(data) {
return request({
url: "/bus-customer/operationLog/getOperationLogList",
method: "post",
data: data,
});
}
import request from '@/utils/request'
// 登录方法
export function login(loginName, password, rememberMe, equipmentType, userAgent, selectedLocale) {
// const data = {
// loginName,
// password,
// rememberMe
// }
// const data = {
// "email": "247908967@qq.com",
// "name": "测试用户",
// "phone": 18221643976,
// "port": "TSN",
// "purpleId": '测试用户',
// "role": 170
// }
// return request({
// url: '/bus-customer/login',
// method: 'post',
// data: data
// })
const data = {
"email": "247908967@qq.com",
"name": "肖玉兰",
"phone": 18221643976,
"port": "TSN",
"purpleId": '肖玉兰',
"role": 170
"loginName":loginName,
"password":password,
}
return request({
url: '/bus-customer/login',
method: 'post',
data: data
})
url: '/bus-customer/customerLogin',
method: 'post',
data: data
})
}
// 退出方法
......
import request from '@/utils/request'
import request from "@/utils/request";
// 获取路由
// 获取路由所有路由
export const getRouters = () => {
return request({
url: '/bus-customer/menu/selectMenu',
method: 'get'
})
}
url: "/bus-customer/menu/selectMenu",
method: "get",
});
};
//获取用户可访问的路由
export const getUserRouters = () => {
return request({
url: "/bus-customer/obtainUserRights",
method: "post",
});
};
// /menu/addMenu 添加菜单
export const addMenu = (data) => {
return request({
url: "/bus-customer/menu/addMenu",
method: "post",
data: data,
});
};
// PUT /menu​/deleteMenu 删除菜单
export const deleteMenu = (data) => {
return request({
url: `/bus-customer/menu/deleteMenu?menuId=${data.menuId}`,
method: "put",
});
};
// POST /menu​/updateMenu 更新菜单
export const updateMenu = (data) => {
return request({
url: "/bus-customer/menu/updateMenu",
method: "post",
data: data,
});
};
......
import request from "@/utils/request";
// GET
// /customerDeclareData/info/{customerDeclareDataId}
// 查询客户申报数据信息
export function getCustomerDeclareDataId({ customerDeclareDataId }) {
return request({
url: `/bus-customer/customerDeclareData/info/${customerDeclareDataId}`,
method: "get",
});
}
// POST
// /customerDeclareData/search
// 查询客户申报数据列表
export function getPddInfo(data) {
return request({
url: "/bus-customer/customerDeclareData/search",
method: "post",
data: data,
});
}
// GET
// /customerDeclareData/resend/{id}
// 重新发送申报数据
export function getResend({ id }) {
return request({
url: `/bus-customer/customerDeclareData/resend/${id}`,
method: "get",
});
}
//提交广州客户申报数据异步导出任务
export function getSubmitExportTask(data) {
return request({
url: `/bus-customer/customerDeclareData/submitExportTask`,
method: "post",
data: data,
});
}
\ No newline at end of file
import request from "@/utils/request";
// POST
// /mockReceipt/add
// 新增模拟回执
export function addInfo(data) {
return request({
url: "/bus-customer/mockReceipt/add",
method: "post",
data: data,
});
}
// POST
// /mockReceipt/generateReceiptXml
// 生成回执xml
export function generateReceiptXml(data) {
return request({
url: "/bus-customer/mockReceipt/generateReceiptXml",
method: "post",
data: data,
});
}
// POST
// /mockReceipt/search
// 搜索
export function searchList(data) {
return request({
url: "/bus-customer/mockReceipt/search",
method: "post",
data: data,
});
}
// GET
// /mockReceipt/searchOrderNo
// 搜索订单号
export function searchOrderNo(data) {
return request({
url: "/bus-customer/mockReceipt/searchLogisticsNo",
method: "get",
params: data,
});
}
// /mockReceipt/getListInfo/{logisticsNo}
export function getListInfo(logisticsNo) {
return request({
url: "/bus-customer/mockReceipt/getListInfo/" + logisticsNo,
method: "get",
});
}
// name 收发货人名称 搜索模拟回执汇总申报下拉信息
export function searchMockReceiptSummary(data) {
return request({
url: `/bus-customer/mockReceipt/searchMockReceiptSummary?name=${data.name}`,
method: "get",
});
}
//获取清单模拟回执信息
export function getListInfoByLogisticsNo(data) {
return request({
url: `/bus-customer/mockReceipt/getListInfo/${data.logisticsNo}`,
method: "get",
});
}
import request from "@/utils/request";
// POST
// ​/operatorPlace​/addOperatorPlace
// 新增监管场所
export function addOperatorPlace(data) {
return request({
url: "/bus-customer/operatorPlace/addOperatorPlace",
method: "post",
data: data,
});
}
// POST
// ​/operatorPlace​/getOperatorPlaceList
// 查询监管场所列表
export function getOperatorPlaceList(data) {
return request({
url: "/bus-customer/operatorPlace/getOperatorPlaceList",
method: "post",
data: data,
});
}
// POST
// ​/operatorPlace​/updateOperatorPlace
// 修改监管场所
export function updateOperatorPlace(data) {
return request({
url: "/bus-customer/operatorPlace/updateOperatorPlace",
method: "post",
data: data,
});
}
// GET
// ​/portInfo​/getPortCodeList
// 获取口岸列表作用于条件查询的下拉框
export function getPortCodeList() {
return request({
url: "/bus-customer/portInfo/getPortCodeList",
method: "get",
});
}
import request from '@/utils/request'
import request from "@/utils/request";
import axios from "axios";
const baseUrl = process.env.VUE_APP_BASE_API; //接口地址
// 查询客户数据
/**
......@@ -12,11 +15,11 @@ import request from '@/utils/request'
* @param pageSize *
*/
export function getCustomerList(data) {
return request({
url: '/bus-customer/customers/getCustomerList',
method: 'post',
data: data
})
return request({
url: "/bus-customer/customers/getCustomerList",
method: "post",
data: data,
});
}
// 新增客户数据
......@@ -34,22 +37,118 @@ export function getCustomerList(data) {
* @param qingdaoUserId 青岛用户ID
*/
export function addCustomerData(data) {
let formData = new FormData
formData.append("beijingDxpid", data.beijingDxpid);
formData.append("certificare", data.certificare);
formData.append("clientId", data.clientId);
formData.append("ecomEntCode", data.ecomEntCode);
formData.append("ecomEntEmail", data.ecomEntEmail);
formData.append("orderRequester", data.orderRequester);
formData.append("qingdaoDanyiUserDxpid", data.qingdaoDanyiUserDxpid);
formData.append("qingdaoKey", data.qingdaoKey);
formData.append("qingdaoUserDxpid", data.qingdaoUserDxpid);
formData.append("qingdaoUserId", data.qingdaoUserId);
return request({
url: '/bus-customer/customers/add',
method: 'post',
data: formData
// let formData = new FormData
// formData.append("beijingDxpid", data.beijingDxpid);
// formData.append("certificare", data.certificare);
// formData.append("clientId", data.clientId);
// formData.append("ecomEntCode", data.ecomEntCode);
// formData.append("ecomEntEmail", data.ecomEntEmail);
// formData.append("orderRequester", data.orderRequester);
// formData.append("qingdaoDanyiUserDxpid", data.qingdaoDanyiUserDxpid);
// formData.append("qingdaoKey", data.qingdaoKey);
// formData.append("qingdaoUserDxpid", data.qingdaoUserDxpid);
// formData.append("qingdaoUserId", data.qingdaoUserId);
console.log(data);
return request({
url: "/bus-customer/customers/add",
method: "post",
data: data,
});
}
//上传证书
export function uploadCertificate(ecomEntCode, certificate) {
const formData = new FormData();
formData.append("certificate", certificate);
formData.append("ecomEntCode", ecomEntCode);
return request({
url: "/bus-customer/customers/uploadCertificate",
method: "post",
data: formData,
});
}
//上传青岛证书
export function uploadQingdaoCertificate(ecomEntCode, certificate) {
const formData = new FormData();
formData.append("certificate", certificate);
formData.append("ecomEntCode", ecomEntCode);
return request({
url: "/bus-customer/customers/uploadQingDaoCertificate",
method: "post",
data: formData,
});
}
//删除证书
export function delCertificate(id, certificate) {
return request({
url: "/bus-customer/customers/deleteCertificate",
method: "post",
params: { id: id, certificate: certificate },
});
}
//删除青岛证书
export function delQingdaoCertificate(id, certificate) {
return request({
url: "/bus-customer/customers/deleteQingdaoCertificate",
method: "post",
params: { id: id, certificatePath: certificate },
});
}
//下载证书
export function downloadCertificate(id, filename) {
console.log("fileName" + filename);
return new Promise((resolve, reject) => {
// axios({
// method: "get",
// url: '/bus-customer/customers/getCertificate/' + id,
// responseType: "blob",
// })
var url = baseUrl + "/bus-customer/customers/getCertificate/" + id;
request({
url: url,
method: "get",
responseType: "blob", // 确保响应类型为 blob
params: id,
})
.then((res) => {
const aLink = document.createElement("a");
aLink.href = URL.createObjectURL(res);
aLink.setAttribute("download", filename); // 设置下载文件名称
document.body.appendChild(aLink);
aLink.click();
document.body.removeChild(aLink);
resolve(res);
})
.catch((err) => {
reject(err);
});
});
}
//下载青岛证书
export function downloadQingdaoCertificate(id, filename) {
return new Promise((resolve, reject) => {
var url = baseUrl + "/bus-customer/customers/getQingDaoCertificate/" + id;
request({
url: url,
method: "get",
responseType: "blob", // 确保响应类型为 blob
params: id,
})
.then((res) => {
const aLink = document.createElement("a");
aLink.href = URL.createObjectURL(res);
aLink.setAttribute("download", filename); // 设置下载文件名称
document.body.appendChild(aLink);
aLink.click();
document.body.removeChild(aLink);
resolve(res);
})
.catch((err) => {
reject(err);
});
});
}
// 修改客户数据
......@@ -68,21 +167,39 @@ export function addCustomerData(data) {
* @param qingdaoUserId 青岛用户ID
*/
export function updateCustomerData(data) {
let formData = new FormData
formData.append("id", data.id);
formData.append("beijingDxpid", data.beijingDxpid);
formData.append("certificare", data.certificare);
formData.append("clientId", data.clientId);
formData.append("ecomEntCode", data.ecomEntCode);
formData.append("ecomEntEmail", data.ecomEntEmail);
formData.append("orderRequester", data.orderRequester);
formData.append("qingdaoDanyiUserDxpid", data.qingdaoDanyiUserDxpid);
formData.append("qingdaoKey", data.qingdaoKey);
formData.append("qingdaoUserDxpid", data.qingdaoUserDxpid);
formData.append("qingdaoUserId", data.qingdaoUserId);
return request({
url: '/bus-customer/customers/update',
method: 'put',
data: formData
})
}
\ No newline at end of file
// let formData = new FormData
// formData.append("id", data.id);
// formData.append("beijingDxpid", data.beijingDxpid);
// formData.append("certificare", data.certificare);
// formData.append("clientId", data.clientId);
// formData.append("ecomEntCode", data.ecomEntCode);
// formData.append("ecomEntEmail", data.ecomEntEmail);
// formData.append("orderRequester", data.orderRequester);
// formData.append("qingdaoDanyiUserDxpid", data.qingdaoDanyiUserDxpid);
// formData.append("qingdaoKey", data.qingdaoKey);
// formData.append("qingdaoUserDxpid", data.qingdaoUserDxpid);
// formData.append("qingdaoUserId", data.qingdaoUserId);
return request({
url: "/bus-customer/customers/update",
method: "put",
data: data,
});
}
// /portInfo
export function getPortInfo(data) {
return request({
url: "/bus-customer/portInfo/getAllPort",
method: "get",
data: data,
});
}
// GET
// ​/customers​/customerDetails​/{id}
// 获取客户详情
export function getCustomerDetails(data) {
return request({
url: "/bus-customer/customers/customerDetails/" + data.id,
method: "get",
});
}
......
......@@ -50,4 +50,16 @@ export function updatePortData(data) {
method: 'put',
data: data
})
}
\ No newline at end of file
}
// 获取口岸字典
/**
* @param
*/
export function getPortCodeList() {
return request({
url: '/bus-customer/portInfo/getPortCodeList',
method: 'get',
// params: data
})
}
\ No newline at end of file
......
import request from "@/utils/request";
// POST
// ​/operatorPlace​/addOperatorPlace
// 新增监管场所
export function addOperatorPlace(data) {
return request({
url: "/bus-customer/operatorPlace/addOperatorPlace",
method: "post",
data: data,
});
}
// POST
// ​/operatorPlace​/getOperatorPlaceList
// 查询监管场所列表
export function getOperatorPlaceList(data) {
return request({
url: "/bus-customer/operatorPlace/getOperatorPlaceList",
method: "post",
data: data,
});
}
// POST
// ​/operatorPlace​/updateOperatorPlace
// 修改监管场所
export function updateOperatorPlace(data) {
return request({
url: "/bus-customer/operatorPlace/updateOperatorPlace",
method: "post",
data: data,
});
}
......@@ -66,7 +66,7 @@ export function updateRoleMenuData(data) {
* @param userName 用户名称
* @param port 口岸
* @param roleIds list
* @param pageIndex *
* @param pageIndex *
* @param pageSize *
*/
export function getUserData(data) {
......@@ -95,7 +95,7 @@ export function getUserDetailData(data) {
* @param userName 用户名称
* @param port 口岸
* @param email 邮件
* @param id *
* @param id *
* @param remark 备注
* @param phone 口岸
*/
......@@ -113,21 +113,21 @@ export function updateUserData(data) {
* @param userName 用户名称
* @param port 口岸
* @param email 邮件
* @param id *
* @param id *
* @param remark 备注
* @param phone 口岸
*/
export function updateUserRoleChange(data) {
return request({
url: '/bus-customer/user/updateUser',
url: '/bus-customer/user/roleEditing',
method: 'put',
data: data
})
}
// 获取口岸字典
// 获取用户口岸字典
/**
* @param
* @param
*/
export function getPortList(data) {
return request({
......@@ -139,7 +139,7 @@ export function getPortList(data) {
// 获取角色字典
/**
* @param
* @param
*/
export function getRoleDict(data) {
return request({
......@@ -159,4 +159,27 @@ export function getUserRoleType(data) {
method: 'get',
params: data
})
}
\ No newline at end of file
}
/**
* 获取role已绑定的Menue
* @param {} roleId
* @returns
*/
export function getMenuByRoleId(roleId) {
return request({
url: '/bus-customer/role/selectMenu?roleId='+roleId,
method: 'get',
// params: data
})
}
/**
* 获取当前用户的口岸信息
* @returns {AxiosPromise}
*/
export function getCurrUserPortInfo(){
return request({
url:'/bus-customer/user/getCurrUserPortInfo',
method:'get'
})
}
......
No preview for this file type
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1763694170210" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3134" id="mx_n_1763694170211" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M682.666667 0a42.666667 42.666667 0 0 1 25.941333 8.789333l4.266667 3.712 207.061333 207.061334a64 64 0 0 1 18.432 38.954666l0.298667 6.314667V469.333333a42.666667 42.666667 0 0 1-85.034667 4.992L853.333333 469.333333v-128h-192a64 64 0 0 1-63.701333-57.856l-0.298667-6.144v-192h-426.666666v853.333334h256a42.666667 42.666667 0 0 1 42.325333 37.674666l0.298667 4.992a42.666667 42.666667 0 0 1-37.674667 42.368l-4.992 0.298667H149.333333a64 64 0 0 1-63.701333-57.856l-0.298667-6.144v-896a64 64 0 0 1 57.856-63.701333l6.144-0.298667H682.666667z m153.045333 256l-153.045333-152.96V256h153.045333z" fill="#191919" p-id="3135"></path><path d="M298.666667 341.333333m42.666666 0l128 0q42.666667 0 42.666667 42.666667l0 0q0 42.666667-42.666667 42.666667l-128 0q-42.666667 0-42.666666-42.666667l0 0q0-42.666667 42.666666-42.666667Z" fill="#191919" p-id="3136"></path><path d="M298.666667 512m42.666666 0l128 0q42.666667 0 42.666667 42.666667l0 0q0 42.666667-42.666667 42.666666l-128 0q-42.666667 0-42.666666-42.666666l0 0q0-42.666667 42.666666-42.666667Z" fill="#191919" p-id="3137"></path><path d="M298.666667 682.666667m42.666666 0l128 0q42.666667 0 42.666667 42.666666l0 0q0 42.666667-42.666667 42.666667l-128 0q-42.666667 0-42.666666-42.666667l0 0q0-42.666667 42.666666-42.666666Z" fill="#191919" p-id="3138"></path><path d="M828.970667 517.376a21.333333 21.333333 0 0 1 3.029333 10.965333v70.058667A213.333333 213.333333 0 1 1 597.333333 810.666667a38.826667 38.826667 0 1 1 77.568 0 135.765333 135.765333 0 1 0 157.141334-134.101334l-0.042667 32.426667a21.333333 21.333333 0 0 1-32.298667 18.304l-150.528-90.325333a21.333333 21.333333 0 0 1 0-36.608l150.528-90.325334a21.333333 21.333333 0 0 1 29.269334 7.338667z" fill="#191919" p-id="3139"></path></svg>
\ No newline at end of file
<svg width="23" height="23" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.937 21.5617H0V1.4375H18.6868V11.4996H17.2493V2.87495H1.43745V20.1243H11.4996L12.937 21.5617Z" fill="#333333"/>
<path d="M16.5307 11.4996C19.2619 11.4996 21.5618 13.7995 21.5618 16.5306C21.5618 19.2618 19.2619 21.5617 16.5307 21.5617C13.7996 21.5617 11.4997 19.2618 11.4997 16.5306C11.4997 13.7995 13.7996 11.4996 16.5307 11.4996ZM16.5307 10.0621C12.9371 10.0621 10.0622 12.937 10.0622 16.5306C10.0622 20.1242 12.9371 22.9991 16.5307 22.9991C20.1243 22.9991 22.9992 20.1242 22.9992 16.5306C22.9992 12.937 20.1243 10.0621 16.5307 10.0621ZM4.31245 0H5.74989V4.31234H4.31245V0ZM12.9371 0H14.3746V4.31234H12.9371V0ZM2.875 7.18723H15.812V8.62467H2.875V7.18723ZM2.875 11.4996H10.0622V12.937H2.875V11.4996ZM2.875 15.8119H8.62478V17.2493H2.875V15.8119Z" fill="#333333"/>
<path d="M20.1248 18.6873H15.8125V12.9375H17.2499V17.2498H20.1248V18.6873Z" fill="#333333"/>
</svg>
<svg width="21" height="23" viewBox="0 0 21 23" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18.6508 17.8358H12.1641C11.6754 17.8358 11.3555 17.5101 11.3555 17.0273C11.3555 16.5387 11.6813 16.2188 12.1641 16.2188H18.6508C19.1395 16.2188 19.4594 16.5445 19.4594 17.0273C19.4594 17.5101 18.9766 17.8358 18.6508 17.8358Z" fill="#333333"/>
<path d="M20.2746 17.8456C20.1117 17.8456 19.7859 17.8456 19.623 17.6827L16.8654 14.9255C16.5396 14.5997 16.5396 14.1169 16.8654 13.7912C17.1912 13.4654 17.6741 13.4654 17.9999 13.7912L20.7574 16.5484C21.0832 16.8741 21.0832 17.3569 20.7574 17.6827C20.6004 17.8456 20.4375 17.8456 20.2746 17.8456Z" fill="#333333"/>
<path d="M17.354 20.5976C17.1911 20.5976 16.8653 20.5976 16.7024 20.4347C16.3766 20.109 16.3766 19.6262 16.7024 19.3004L19.46 16.5432C19.7858 16.2175 20.2686 16.2175 20.5944 16.5432C20.9202 16.869 20.9202 17.3518 20.5944 17.6775L17.8369 20.4347C17.6614 20.5227 17.6798 20.5976 17.354 20.5976ZM11.356 22.0576H1.62312C0.651575 22.0576 0 21.4061 0 20.4347V1.62291C0 0.651491 0.651575 0 1.62312 0H18.1627C19.1342 0 19.7858 0.651491 19.7858 1.62291V9.56878C19.7858 10.0574 19.46 10.3773 18.9771 10.3773C18.4884 10.3773 18.1685 10.0516 18.1685 9.56878V1.62291H1.62312V20.4347H11.1931C11.6818 20.4347 12.1647 20.7605 12.1647 21.2433C12.1647 21.7319 11.676 22.0576 11.356 22.0576Z" fill="#333333"/>
<path d="M13.7884 6.64053H5.51568C5.027 6.64053 4.70703 6.31479 4.70703 5.83198C4.70703 5.34337 5.03282 5.02344 5.51568 5.02344H13.7884C14.277 5.02344 14.597 5.34918 14.597 5.83198C14.597 6.3206 14.2712 6.64053 13.7884 6.64053ZM11.3566 11.3464H5.51568C5.027 11.3464 4.70703 11.0206 4.70703 10.5378C4.70703 10.0492 5.03282 9.7293 5.51568 9.7293H11.3566C11.6824 9.7293 12.1652 10.055 12.1652 10.5378C12.1652 11.0206 11.6766 11.3464 11.3566 11.3464ZM9.57057 16.2093H5.51568C5.027 16.2093 4.70703 15.8836 4.70703 15.4008C4.70703 14.9121 5.03282 14.5922 5.51568 14.5922H9.57057C10.0593 14.5922 10.3792 14.918 10.3792 15.4008C10.3792 15.8836 9.89636 16.2093 9.57057 16.2093Z" fill="#333333"/>
</svg>
<svg width="16" height="12" viewBox="0 0 16 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 1H16" stroke="#FF6600" stroke-miterlimit="10"/>
<path d="M2 6H14" stroke="#FF6600" stroke-miterlimit="10"/>
<path d="M4 11H12" stroke="#FF6600" stroke-miterlimit="10"/>
</svg>
This diff is collapsed. Click to expand it.
/**
/**
* 通用css样式布局处理
* Copyright (c) 2019 ruoyi
*/
/** 基础通用 **/
.pt5 {
padding-top: 5px;
}
.pr5 {
padding-right: 5px;
}
.pb5 {
padding-bottom: 5px;
}
.pl10 {
padding-left: 10px;
}
.mt5 {
margin-top: 5px;
}
.mr5 {
margin-right: 5px;
}
.mb5 {
margin-bottom: 5px;
}
.mb8 {
margin-bottom: 8px;
}
.ml5 {
margin-left: 5px;
}
.mt10 {
margin-top: 10px;
}
.mr10 {
margin-right: 10px;
}
.mb10 {
margin-bottom: 10px;
}
.ml0 {
margin-left: 10px;
}
.mt20 {
margin-top: 20px;
}
.mr20 {
margin-right: 20px;
}
.mb20 {
margin-bottom: 20px;
}
.m20 {
margin-left: 20px;
}
.el-dialog:not(.is-fullscreen) {
margin-top: 6vh !important;
}
.textCenter {
text-align: center;
}
/** 表单布局 **/
.form-header {
font-size: 15px;
color: #6379bb;
border-bottom: 1px solid #ddd;
margin: 8px 10px 25px 10px;
padding-bottom: 5px
}
/** 表格布局 **/
.pagination-container {
position: relative;
height: 25px;
margin-bottom: 10px;
margin-top: 15px;
padding: 10px 20px !important;
}
/* tree border */
.tree-border {
margin-top: 5px;
border: 1px solid #e5e6e7;
background: #FFFFFF none;
border-radius: 4px;
}
.pagination-container .el-pagination {
right: 0;
position: absolute;
}
.el-table .fixed-width .el-button--mini {
padding-left: 0;
padding-right: 0;
width: inherit;
}
.el-tree-node__content>.el-checkbox {
margin-right: 8px;
}
.list-group-striped>.list-group-item {
border-left: 0;
border-right: 0;
border-radius: 0;
padding-left: 0;
padding-right: 0;
}
.list-group {
padding-left: 0px;
list-style: none;
}
.list-group-item {
border-bottom: 1px solid #e7eaec;
border-top: 1px solid #e7eaec;
margin-bottom: -1px;
padding: 11px 0px;
font-size: 13px;
}
.pull-right {
float: right !important;
}
.el-card__header {
padding: 14px 15px 7px;
min-height: 40px;
}
.el-card__body {
padding: 15px 20px 20px 20px;
}
.card-box {
padding-right: 15px;
padding-left: 15px;
margin-bottom: 10px;
}
/* button color */
.el-button--cyan.is-active,
.el-button--cyan:active {
background: #20B2AA;
border-color: #20B2AA;
color: #FFFFFF;
}
.el-button--cyan:focus,
.el-button--cyan:hover {
background: #48D1CC;
border-color: #48D1CC;
color: #FFFFFF;
}
.el-button--cyan {
background-color: #20B2AA;
border-color: #20B2AA;
color: #FFFFFF;
}
/* text color */
.text-navy {
color: #1ab394;
}
.text-primary {
color: inherit;
}
.text-success {
color: #1c84c6;
}
.text-info {
color: #23c6c8;
}
.text-warning {
color: #f8ac59;
}
.text-danger {
color: #ed5565;
}
.text-muted {
color: #888888;
}
/* image */
.img-circle {
border-radius: 50%;
}
.img-lg {
width: 120px;
height: 120px;
}
.avatar-upload-preview {
position: absolute;
top: 50%;
transform: translate(50%, -50%);
width: 200px;
height: 200px;
border-radius: 50%;
box-shadow: 0 0 4px #ccc;
overflow: hidden;
}
/* 拖拽列样式 */
.sortable-ghost {
opacity: .8;
color: #fff !important;
background: #42b983 !important;
}
.top-right-btn {
position: relative;
float: right;
}
\ No newline at end of file
/** 基础通用 **/
.pt5 {
padding-top: 5px;
}
.pr5 {
padding-right: 5px;
}
.pb5 {
padding-bottom: 5px;
}
.pl10 {
padding-left: 10px;
}
.mt5 {
margin-top: 5px;
}
.mr5 {
margin-right: 5px;
}
.mb5 {
margin-bottom: 5px;
}
.mb8 {
margin-bottom: 8px;
}
.ml5 {
margin-left: 5px;
}
.mt10 {
margin-top: 10px;
}
.mr10 {
margin-right: 10px;
}
.mb10 {
margin-bottom: 10px;
}
.ml0 {
margin-left: 10px;
}
.mt20 {
margin-top: 20px;
}
.mr20 {
margin-right: 20px;
}
.mb20 {
margin-bottom: 20px;
}
.m20 {
margin-left: 20px;
}
.el-dialog:not(.is-fullscreen) {
margin-top: 1vh !important;
}
.el-dialog {
top: 40% !important;
}
.textCenter {
text-align: center;
}
/** 表单布局 **/
.form-header {
font-size: 15px;
color: #6379bb;
border-bottom: 1px solid #ddd;
margin: 8px 10px 25px 10px;
padding-bottom: 5px;
}
/** 表格布局 **/
.pagination-container {
position: relative;
height: 25px;
margin-bottom: 10px;
margin-top: 15px;
padding: 10px 20px !important;
}
/* tree border */
.tree-border {
margin-top: 5px;
border: 1px solid #e5e6e7;
background: #ffffff none;
border-radius: 4px;
}
.pagination-container .el-pagination {
right: 0;
position: absolute;
}
.el-table .fixed-width .el-button--mini {
padding-left: 0;
padding-right: 0;
width: inherit;
}
.el-tree-node__content > .el-checkbox {
margin-right: 8px;
}
.list-group-striped > .list-group-item {
border-left: 0;
border-right: 0;
border-radius: 0;
padding-left: 0;
padding-right: 0;
}
.list-group {
padding-left: 0px;
list-style: none;
}
.list-group-item {
border-bottom: 1px solid #e7eaec;
border-top: 1px solid #e7eaec;
margin-bottom: -1px;
padding: 11px 0px;
font-size: 13px;
}
.pull-right {
float: right !important;
}
.el-card__header {
padding: 14px 15px 7px;
min-height: 40px;
}
.el-card__body {
padding: 15px 20px 20px 20px;
}
.card-box {
padding-right: 15px;
padding-left: 15px;
margin-bottom: 10px;
}
/* button color */
.el-button--cyan.is-active,
.el-button--cyan:active {
background: #20b2aa;
border-color: #20b2aa;
color: #ffffff;
}
.el-button--cyan:focus,
.el-button--cyan:hover {
background: #48d1cc;
border-color: #48d1cc;
color: #ffffff;
}
.el-button--cyan {
background-color: #20b2aa;
border-color: #20b2aa;
color: #ffffff;
}
/* text color */
.text-navy {
color: #1ab394;
}
.text-primary {
color: inherit;
}
.text-success {
color: #1c84c6;
}
.text-info {
color: #23c6c8;
}
.text-warning {
color: #f8ac59;
}
.text-danger {
color: #ed5565;
}
.text-muted {
color: #888888;
}
/* image */
.img-circle {
border-radius: 50%;
}
.img-lg {
width: 120px;
height: 120px;
}
.avatar-upload-preview {
position: absolute;
top: 50%;
transform: translate(50%, -50%);
width: 200px;
height: 200px;
border-radius: 50%;
box-shadow: 0 0 4px #ccc;
overflow: hidden;
}
/* 拖拽列样式 */
.sortable-ghost {
opacity: 0.8;
color: #fff !important;
background: #42b983 !important;
}
.top-right-btn {
position: relative;
float: right;
}
......
@import './variables.scss';
@import './mixin.scss';
@import './transition.scss';
@import './element-ui.scss';
@import './sidebar.scss';
@import './btn.scss';
@import "./variables.scss";
@import "./mixin.scss";
@import "./transition.scss";
@import "./element-ui.scss";
@import "./sidebar.scss";
@import "./btn.scss";
@font-face {
font-family: FedExSans;
font-style: normal;
font-weight: 300;
src: url('../fonts/FedExSans_W-Light.woff') format("woff")
src: url("../fonts/FedExSans_W-Light.woff") format("woff");
}
@font-face {
font-family: FedExSans;
font-style: normal;
font-weight: 400;
src: url('../fonts/FedExSans_W-Regular.woff') format("woff")
src: url("../fonts/FedExSans_W-Regular.woff") format("woff");
}
@font-face {
font-family: FedExSans;
font-style: normal;
font-weight: 700;
src: url('../fonts/FedExSans_W-Bold.woff') format("woff")
src: url("../fonts/FedExSans_W-Bold.woff") format("woff");
}
@font-face {
font-family: FedExSansArabic;
font-style: normal;
font-weight: 700;
src: url('../fonts/FedExSans_W-Bold.woff') format("woff")
src: url("../fonts/FedExSans_W-Bold.woff") format("woff");
}
@font-face {
font-family: FedExSansArabic;
font-style: normal;
font-weight: 300;
src: url('../fonts/FedExSans_W-Light.woff') format("woff")
src: url("../fonts/FedExSans_W-Light.woff") format("woff");
}
@font-face {
font-family: FedExSansArabic;
font-style: normal;
font-weight: 400;
src: url('../fonts/FedExSans_W-Regular.woff') format("woff")
src: url("../fonts/FedExSans_W-Regular.woff") format("woff");
}
@font-face {
font-family: "iconfont";
font-style: normal;
font-weight: 200;
src: url("../fonts/fedex_table_fonticon.ttf?t=1748505224980")
format("truetype");
}
html,
body {
font-family: sans-serif !important;
font-family: sans-serif !important;
}
body {
......@@ -58,7 +65,7 @@ body {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
font-family: sans-serif !important;
font-family: sans-serif !important;
}
label {
......@@ -160,7 +167,8 @@ aside {
display: block;
line-height: 32px;
font-size: 16px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
color: #2c3e50;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
......@@ -190,7 +198,7 @@ aside {
}
.text-center {
text-align: center
text-align: center;
}
.sub-navbar {
......@@ -201,7 +209,13 @@ aside {
text-align: right;
padding-right: 20px;
transition: 600ms ease position;
background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%);
background: linear-gradient(
90deg,
rgba(32, 182, 249, 1) 0%,
rgba(32, 182, 249, 1) 0%,
rgba(33, 120, 241, 1) 100%,
rgba(33, 120, 241, 1) 100%
);
.subtitle {
font-size: 20px;
......@@ -246,7 +260,10 @@ aside {
z-index: 1000 !important;
}
.el-checkbox__input.is-checked+.el-checkbox__label {
.el-checkbox__input.is-checked + .el-checkbox__label {
color: #333333 !important;
}
\ No newline at end of file
}
html {
--vxe-ui-font-primary-color: #007ab7 !important;
}
......
// base color
$blue: #324157;
$light-blue: #3A71A8;
$red: #C03639;
$pink: #E65D6E;
$green: #30B08F;
$tiffany: #4AB7BD;
$yellow: #FEC171;
$panGreen: #30B08F;
$light-blue: #3a71a8;
$red: #c03639;
$pink: #e65d6e;
$green: #30b08f;
$tiffany: #4ab7bd;
$yellow: #fec171;
$panGreen: #30b08f;
// sidebar
$menuText: #bfcbd9;
$menuActiveText: #4D148C;
$subMenuActiveText: #4D148C; // https://github.com/ElemeFE/element/issues/12951
$menuActiveText: #4d148c;
$subMenuActiveText: #4d148c; // https://github.com/ElemeFE/element/issues/12951
$menuBg: #304156;
$menuHover: #263445;
......@@ -24,16 +24,16 @@ $sidebarLightTitle: #001529;
$subMenuBg: #1f2d3d;
$subMenuHover: #001528;
$sideBarWidth: 220px;
$fedexColor: #4D148C;
$fedexBorder: #E3E3E3;
$fedexButton: #007AB7;
$sideBarWidth: 210px;
$fedexColor: #4d148c;
$fedexBorder: #e3e3e3;
$fedexButton: #007ab7;
$fedexError: #de002e;
$fedexBottonColor: #FF6200;
$formItemBackgroundColor: #F2F2F2;
$fedexTablebackgroundColor: #FAFAFA;
$fedexBottonColor: #ff6200;
$formItemBackgroundColor: #f2f2f2;
$fedexTablebackgroundColor: #fafafa;
$fedexTableBorderColor: #e3e3e3;
$formDisabledColor: #8E8E8E;
$formDisabledColor: #8e8e8e;
// the :export directive is the magic sauce for webpack
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
......@@ -59,5 +59,4 @@ $formDisabledColor: #8E8E8E;
formDisabledColor: $formDisabledColor;
fedexTablebackgroundColor: $fedexTablebackgroundColor;
fedexTableBorderColor: $fedexTableBorderColor;
}
\ No newline at end of file
}
......
......@@ -8,10 +8,10 @@
v-model="textareaVisible"
>
<el-input
:name="`${dataKey}-textarea`"
:name="`${dataKey}${curKey}-textarea`"
type="textarea"
:rows="5"
:id="`popoverInput${dataKey}`"
:id="`popoverInput${dataKey}${curKey}`"
class="inputShadow textareaPopover"
v-model="formData[dataKey]"
resize="none"
......@@ -63,29 +63,45 @@ export default {
type: String,
default: "",
},
curKey: {
type: Number,
default: 1,
},
},
data() {
return {
textareaVisible: false,
};
},
watch: {
formData: {
handler(val) {
if (!val[this.dataKey] || val[this.dataKey].length <= 0) {
this.textareaVisible = false;
let inputInner = document.querySelector(
"#inputInner--" + this.dataKey
);
inputInner?.classList.remove("inputFocus");
}
},
deep: true,
},
},
methods: {
//文本域展示状态切换
textareaFocus(val) {
this.textareaVisible = true;
this.$nextTick(() => {
document
.querySelector("#popoverInput" + val.target.name.split("-")[0])
.querySelector(`#popoverInput${this.dataKey}${this.curKey}`)
.focus();
document.querySelector(
"#inputInner--" + val.target.name.split("-")[0]
).style.display = "none";
document.querySelector("#inputInner--" + this.dataKey).style.display =
"none";
});
},
textareaBlur(val) {
let inputInner = document.querySelector(
"#inputInner--" + val.target.name.split("-")[0]
);
let inputInner = document.querySelector("#inputInner--" + this.dataKey);
this.textareaVisible = false;
inputInner.style.display = "block";
this.$nextTick(() => {
......@@ -101,7 +117,7 @@ export default {
}
});
let arr = [];
this.formData[val.target.name.split("-")[0]]
this.formData[this.dataKey]
.replace(/[\n\,\;\;]/g, ",")
.replace(/[\t]/g, "")
.split(",")
......@@ -110,7 +126,7 @@ export default {
arr.push(str.trim());
}
});
this.formData[val.target.name.split("-")[0]] = arr.join("\n");
this.formData[this.dataKey] = arr.join("\n");
this.$emit("formChange", this.formData);
this.$forceUpdate();
},
......
<template>
<!-- <div> -->
<el-form-item
class="fedexFormItem"
:label="itemLabel"
:prop="prop"
:required="required"
:error="error"
:id="'inputOuter-' + type + '-' + prop"
style="pointer-events: auto"
@click="formItemClick"
<el-form-item
class="fedexFormItem"
:label="itemLabel"
:prop="prop"
:required="required"
:error="error"
:id="'inputOuter-' + type + '-' + prop"
style="pointer-events: auto"
@click="formItemClick"
>
<slot name="title" slot="label"></slot>
<el-tooltip
v-if="toolyipShow"
class="item"
effect="dark"
:content="content"
:disabled="tooltipDisabled"
placement="top"
>
<slot name="title" slot="label"></slot>
<el-tooltip
v-if="toolyipShow"
class="item"
effect="dark"
:content="content"
:disabled="tooltipDisabled"
placement="top"
>
<slot></slot>
</el-tooltip>
<slot v-else></slot>
<template v-slot:error="scoped">
<div class="formError">{{ scoped.error }}</div>
</template>
</el-form-item>
<slot></slot>
</el-tooltip>
<slot v-else></slot>
<template v-slot:error="scoped">
<div class="formError">{{ scoped.error }}</div>
</template>
</el-form-item>
<!-- </div> -->
</template>
......@@ -68,6 +68,10 @@ export default {
type: Boolean,
default: false,
},
rules: {
type: Array,
default: () => [],
},
},
data() {
return {
......
......@@ -12,7 +12,6 @@
:show-header="showHeader"
:show-summary="showSummary"
:summary-method="getSummaries"
:height="height"
:empty-text="emptyText"
:max-height="maxHeight"
:highlight-current-row="highlightCurrentRow"
......@@ -38,6 +37,7 @@
@header-dragend="headerDragend"
@cell-mouse-leave="cellMouseLeave"
@cell-mouse-enter="cellMouseEnter"
@filter-change="filterChange"
>
<!-- 多选框 -->
<el-table-column
......@@ -79,6 +79,9 @@
:header-align="item.align"
:sort-orders="['descending', 'ascending', null]"
:key="index"
:filters="item.filters"
:filter-method="item.filterMethod"
:column-key="item.columnKey || index.toString()"
>
<template slot="header" slot-scope="scope">
<Tooltip
......@@ -102,7 +105,7 @@
:align="item.align ? item.align : 'center'"
:fixed="item.fixed ? item.fixed : false"
:sortable="item.sorTable ? true : false"
:column-key="index.toString()"
:column-key="item.columnKey || index.toString()"
:show-overflow-tooltip="
item.showOverflowTooltip != undefined
? item.showOverflowTooltip
......@@ -111,6 +114,8 @@
:header-align="item.align"
:sort-orders="['descending', 'ascending', null]"
:formatter="formatter"
:filters="item.filters"
:filter-method="item.filterMethod"
:key="index"
>
<template slot="header" slot-scope="scope">
......@@ -134,7 +139,7 @@
:align="item.align ? item.align : 'center'"
:fixed="item.fixed ? item.fixed : false"
:sortable="item.sorTable ? true : false"
:column-key="index.toString()"
:column-key="item.columnKey || index.toString()"
:show-overflow-tooltip="
item.showOverflowTooltip != undefined
? item.showOverflowTooltip
......@@ -143,6 +148,8 @@
:header-align="item.align"
:sort-orders="['descending', 'ascending', null]"
:formatter="formatter"
:filters="item.filters"
:filter-method="item.filterMethod"
:key="index"
>
<template slot="header" slot-scope="scope">
......@@ -303,7 +310,9 @@ export default {
},
pageSizes: {
type: Array,
default: [10, 20, 30, 40, 50, 100],
default() {
return [10, 20, 50, 100, 500, 1000];
},
},
expandRowKeys: {
type: Array,
......@@ -425,25 +434,28 @@ export default {
limitSize() {
this.sizes = this.limitSize;
},
data(val) {
let table = document.querySelector(".el-table__body-wrapper");
let tableBody = document.querySelector(".el-table__body");
if (this.data != null && this.data.length > 0) {
this.rowData = [this.data[0]];
this.data.forEach((item, index) => {
item.index = index;
});
}
this.$nextTick(() => {
if (table) {
table.style.maxHeight = this.maxHeight;
tableBody.clientHeight >= this.maxHeight
? (table.style.height = this.maxHeight - 40 + "px")
: (table.style.height = tableBody.clientHeight + "px");
this.$refs.tables.doLayout();
}
});
},
// data(val) {
// let table = document.querySelector(".el-table__body-wrapper");
// let tableBody = document.querySelector(".el-table__body");
// if (this.data != null && this.data.length > 0) {
// this.rowData = [this.data[0]];
// this.data.forEach((item, index) => {
// item.index = index;
// });
// }
// this.$nextTick(() => {
// if (table) {
// table.style.maxHeight = this.maxHeight + "px";
// if (val.length * 50 > this.maxHeight) {
// table.style.height = this.maxHeight + "px";
// } else {
// table.style.height = val.length * 50 + "px";
// }
// console.log(table);
// this.$refs.tables.doLayout();
// }
// });
// },
expandRowKeys(val) {
let tableBodyRow = document.getElementsByClassName("el-table__row");
if (val.length > 0) {
......@@ -464,8 +476,13 @@ export default {
},
},
mounted() {
let table = document.querySelector(".el-table__body-wrapper");
table.style.maxHeight = this.maxHeight + "px";
// this.$nextTick(() => {
// let table = document.querySelector(".el-table__body-wrapper");
// console.log(this.maxHeight, this.maxHeight);
// table.style.maxHeight = this.maxHeight + "px";
// // table.style.height = this.maxHeight + "px";
// console.log(table.style.maxHeight);
// });
},
methods: {
sizeChange(val) {
......@@ -536,6 +553,11 @@ export default {
this.selectTable = [];
this.$emit("sortChange", { prop: prop, order: order });
},
//
filterChange(filters) {
console.log(filters);
this.$emit("filterChange", filters);
},
//双击行
dblclick(val) {
this.$emit("dblclick", val);
......
......@@ -17,26 +17,34 @@
</div>
<div v-loading="tableLoading">
<slot name="title"></slot>
<Table
class="fedexDetialTable mt20"
:data="rowData.popoverData"
:headerData="receiptDataHead"
:selection="false"
:selectFixed="false"
:order="false"
:border="true"
:rowSelectDataType="false"
<div style="height: 10px"></div>
<el-table
:pagination="false"
:page="1"
:pageSizes="[20, 30, 50, 100]"
:totalCount="0"
:loading="tableLoading"
:emptyText="$t('portEntry.emptyText')"
height="350px"
maxHeight="500px"
:border="true"
tooltip-effect="dark"
max-height="300px"
:empty-text="
loadingDatas &&
rowData &&
rowData.popoverData &&
!rowData.popoverData.length
? '数据加载中'
: $t('portEntry.emptyText')
"
:data="rowData.popoverData"
rowKey="id"
>
</Table>
<el-table-column
v-for="(item, index) in receiptDataHead"
:key="index"
:prop="item.value"
:label="item.name"
:align="item.align"
:width="item.width"
:show-overflow-tooltip="true"
>
</el-table-column>
</el-table>
</div>
<el-button
slot="reference"
......@@ -85,14 +93,24 @@ export default {
tableLoading: false,
};
},
computed: {
loadingDatas() {
return this.$store.state.viewOption.loadingDatas;
},
},
methods: {
//弹框关闭
popoverClose() {
this.$emit("popoverClose");
this.parentDom.$refs.tables.$refs.bodyWrapper.style.overflowY = "auto";
if (this.parentDom.$refs.tables) {
this.parentDom.$refs.tables.$refs.bodyWrapper.style.overflowY = "auto";
}
this.$store.dispatch("setLoadingState", true);
},
//弹框状态改版
popoverChange(data, type) {
console.log(data, type);
this.popoverClose();
let arr = JSON.parse(JSON.stringify(this.tableData));
arr.forEach((item) => {
......@@ -107,12 +125,16 @@ export default {
);
}
});
if (!data[`${type}PopoverType`]) {
this.parentDom.$refs.tables.$refs.bodyWrapper.style.overflowY =
"hidden";
} else {
this.parentDom.$refs.tables.$refs.bodyWrapper.style.overflowY = "auto";
if (this.parentDom.$refs.tables) {
if (!data[`${type}PopoverType`]) {
this.parentDom.$refs.tables.$refs.bodyWrapper.style.overflowY =
"hidden";
} else {
this.parentDom.$refs.tables.$refs.bodyWrapper.style.overflowY =
"auto";
}
}
this.$emit("popoverChange", {
tableData: arr,
data: data,
......@@ -151,4 +173,18 @@ export default {
};
</script>
<style></style>
<style lang="scss" scoped>
.tableList {
width: 200px;
max-height: 500px;
padding: 5px;
margin: 0;
position: absolute;
bottom: 35px;
right: 0px;
border: 1px solid #ccc;
border-radius: 3%;
background: #fff;
overflow-y: scroll;
}
</style>
......
<template>
<section class="app-main">
<transition name="fade-transform" mode="out-in">
<keep-alive :include="cachedViews">
<!-- <keep-alive :include="cachedViews">
<router-view :key="key" />
</keep-alive> -->
<!-- <router-view v-if="!cachedViews.includes(cachesName)"></router-view> -->
<keep-alive :include="tagsViewNames">
<router-view :key="key"></router-view>
</keep-alive>
</transition>
</section>
......@@ -13,11 +17,20 @@ export default {
name: "AppMain",
computed: {
cachedViews() {
console.log(this.$store.state.tagsView);
return this.$store.state.tagsView.cachedViews;
},
tagsViewNames() {
console.log(this.$store.state.tagsView);
return this.$store.state.tagsView.tagsViewNames;
},
key() {
console.log(this.$route, this.$route.fullPath);
return this.$route.fullPath;
},
cachesName() {
return this.$route.name;
},
},
};
</script>
......@@ -42,7 +55,7 @@ export default {
.hasTagsView {
.app-main {
/* 84 = navbar + tags-view = 50 + 34 */
min-height: calc(100vh - 84px);
min-height: calc(100vh - 98px);
}
.fixed-header + .app-main {
......
......@@ -5,39 +5,41 @@
</template>
<script>
import { isExternal } from '@/utils/validate'
import { isExternal } from "@/utils/validate";
export default {
props: {
to: {
type: String,
required: true
}
required: true,
},
},
computed: {
isExternal() {
return isExternal(this.to)
return isExternal(this.to);
},
type() {
if (this.isExternal) {
return 'a'
return "a";
}
return 'router-link'
}
return "router-link";
},
},
methods: {
linkProps(to) {
// console.log(to);
if (this.isExternal) {
return {
href: to,
target: '_blank',
rel: 'noopener'
}
target: "_blank",
rel: "noopener",
};
}
return {
to: to
}
}
}
}
to: to,
};
},
},
};
</script>
......
This diff is collapsed. Click to expand it.
export const routeNameMap = {
"/reportingData": "ReportingData", // 分单级申报数据
"/editReportingData": "EditReportingData", // 申报数据编辑
"/arrival-declare": "ArrivalDeclare", // 总单级申报数据
"/receipt-management": "ReceiptManagement", //模拟回执管理
"/exportBillQuery": "ExportBillQuery",
"/exportBillDetail": "ExportBillDetail",
"/exportTransportBillQuery": "ExportTransportBillQuery",
"/exportTransportDetail": "ExportTransportDetail", //出口运单详情
"/exportListQuery": "ExportListQuery",
"/exportListDetail": "ExportListDetail",
"/listBranchQuery": "ListBranchQuery",
"/listBranchDetail": "ListBranchDetail",
"/arrival-list": "ArrivalList",
"/arrival-list-detail": "ArrivalListDetail",
"/logisticsExitQuery": "LogisticsExitQuery",
"/logisticsExitDetail": "LogisticsExitDetail",
"/exportRevokeBillQuery": "ExportRevokeBillQuery",
"/pdd-info": "PddList",
"/pdd-detail": "PddListDetail",
"/summaryEdit": "SummaryEdit",
"/summaryDetail": "SummaryDetail",
"/summaryDataSearch": "SummaryDataSearch",
"/log-search": "LogSearch",
"/portConfig": "PortConfig",
"/customerConfig": "CustomerConfig",
"/hs-code": "HsCode",
"/cipherMachineConfig": "CipherMachineConfig",
"/api-key": "ApiKey",
"/supervise-place-manage": "SupervisePlaceManage",
"/userRoleConfig": "UserRoleConfig",
"/roleConfig": "RoleConfig",
};
......@@ -99,15 +99,15 @@ export default {
watch: {
$route(val) {
this.activeRoute = val;
this.setMainHeight();
// this.setMainHeight();
},
},
mounted() {},
methods: {
setMainHeight(val) {
document.querySelector(".main-container").style.height =
"calc(100% - 64px)";
},
// setMainHeight(val) {
// document.querySelector(".main-container").style.height =
// "calc(100% - 64px)";
// },
handleClickOutside() {
this.$store.dispatch("app/closeSideBar", { withoutAnimation: false });
},
......@@ -127,6 +127,10 @@ export default {
@import "~@/assets/styles/mixin.scss";
@import "~@/assets/styles/variables.scss";
.main-container {
height: calc(100vh - 98px) !important;
}
.app-wrapper {
@include clearfix;
position: relative;
......
import Vue from 'vue'
import Element from 'element-ui'
import './assets/styles/element-variables.scss'
import '@/assets/styles/index.scss' // global css
import '@/assets/styles/iClearExp.scss' // iClearExp css
import '@/assets/styles/variables.scss'
import '@/assets/styles/fedex.scss'
import App from './App'
import store from './store'
import router from './router'
import i18n from '@/assets/languages'
import permission from './directive/permission'
import './assets/icons' // icon
import './permission' // permission control
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, download, handleTree, hscodeElementInfo, elementTostring, numberRound, detailUnitConversion, setDict, sendNotificationHandler, promptMessage, upDateTokenTime, sreachEntryLock, tableFixedTypeChange, getDownLoadFileStatus, approvalPortType, getSystemOption, currencySystemDisableType, imageTaskStatusShowType } from "@/utils/iClearExp";
import { formatDate, debounce, alertWarningMsg, alertSuccessMsg, alertErrorMsg, alertInfoMsg, toHead, compare, createRandom, ctho, base64ConvertFile } from "@/utils/index";
import * as fileDownload from '@/utils/zipdownload.js'
import * as filters from '@/utils/filters.js'
import dictData from '@/utils/dict.js'
import regExp from '@/utils/regExp.js'
import Vue from "vue";
import Element from "element-ui";
import "./assets/styles/element-variables.scss";
import "@/assets/styles/index.scss"; // global css
import "@/assets/styles/iClearExp.scss"; // iClearExp css
import "@/assets/styles/variables.scss";
import "@/assets/styles/fedex.scss";
import App from "./App";
import store from "./store";
import router from "./router";
import i18n from "@/assets/languages";
import permission from "./directive/permission";
import "./assets/icons"; // icon
import "./permission"; // permission control
import {
parseTime,
resetForm,
addDateRange,
selectDictLabel,
selectDictLabels,
download,
handleTree,
hscodeElementInfo,
elementTostring,
numberRound,
detailUnitConversion,
setDict,
sendNotificationHandler,
promptMessage,
upDateTokenTime,
sreachEntryLock,
tableFixedTypeChange,
getDownLoadFileStatus,
approvalPortType,
getSystemOption,
currencySystemDisableType,
imageTaskStatusShowType,
} from "@/utils/iClearExp";
import {
formatDate,
debounce,
alertWarningMsg,
alertSuccessMsg,
alertErrorMsg,
alertInfoMsg,
toHead,
compare,
createRandom,
ctho,
base64ConvertFile,
} from "@/utils/index";
import * as fileDownload from "@/utils/zipdownload.js";
import * as filters from "@/utils/filters.js";
import dictData from "@/utils/dict.js";
import regExp from "@/utils/regExp.js";
import Pagination from "@/components/Pagination";
// 自定义表格工具扩展
import RightToolbar from "@/components/RightToolbar"
import Table from "@/components/Table"
import Formitem from "@/components/Formitem"
import EditStep from "@/components/EditStep"
import FedexAlert from "@/components/FedexAlert"
import FedexEdit from "@/components/FedexEdit"
import Tooltip from "@/components/Tooltip"
import InputNodes from '@/components/InputNodes'
import AlterDialog from '@/components/AlterDialog'
import CustomTransfer from '@/components/CustomTransfer'
import CustomForm from '@/components/CustomForm'
import CustomTable from '@/components/CustomTable'
import EditTag from '@/components/EditTag'
import TablePopover from '@/components/TablePopover'
import FormTextareaInput from '@/components/FormTextareaInput'
import RightToolbar from "@/components/RightToolbar";
import Table from "@/components/Table";
import Formitem from "@/components/Formitem";
import EditStep from "@/components/EditStep";
import FedexAlert from "@/components/FedexAlert";
import FedexEdit from "@/components/FedexEdit";
import Tooltip from "@/components/Tooltip";
import InputNodes from "@/components/InputNodes";
import AlterDialog from "@/components/AlterDialog";
import CustomTransfer from "@/components/CustomTransfer";
import CustomForm from "@/components/CustomForm";
import CustomTable from "@/components/CustomTable";
import EditTag from "@/components/EditTag";
import TablePopover from "@/components/TablePopover";
import FormTextareaInput from "@/components/FormTextareaInput";
import VxeUITable from "vxe-table";
import "vxe-table/lib/style.css";
(function () {
if (typeof EventTarget !== "undefined") {
let func = EventTarget.prototype.addEventListener;
......@@ -49,89 +88,87 @@ import FormTextareaInput from '@/components/FormTextareaInput'
}
this.func(type, fn, capture);
};
};
}());
}
})();
// 全局方法挂载
Vue.prototype.parseTime = parseTime
Vue.prototype.resetForm = resetForm
Vue.prototype.addDateRange = addDateRange
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.selectDictLabels = selectDictLabels
Vue.prototype.download = download
Vue.prototype.handleTree = handleTree
Vue.prototype.hscodeElementInfo = hscodeElementInfo
Vue.prototype.elementTostring = elementTostring
Vue.prototype.formatDate = formatDate
Vue.prototype.debounce = debounce
Vue.prototype.regExp = regExp
Vue.prototype.numberRound = numberRound
Vue.prototype.detailUnitConversion = detailUnitConversion
Vue.prototype.fileDownload = fileDownload
Vue.prototype.alertWarningMsg = alertWarningMsg
Vue.prototype.alertSuccessMsg = alertSuccessMsg
Vue.prototype.alertErrorMsg = alertErrorMsg
Vue.prototype.alertInfoMsg = alertInfoMsg
Vue.prototype.toHead = toHead
Vue.prototype.setDict = setDict
Vue.prototype.compare = compare
Vue.prototype.sendNotificationHandler = sendNotificationHandler
Vue.prototype.promptMessage = promptMessage
Vue.prototype.createRandom = createRandom
Vue.prototype.upDateTokenTime = upDateTokenTime
Vue.prototype.sreachEntryLock = sreachEntryLock
Vue.prototype.tableFixedTypeChange = tableFixedTypeChange
Vue.prototype.ctho = ctho
Vue.prototype.getDownLoadFileStatus = getDownLoadFileStatus
Vue.prototype.base64ConvertFile = base64ConvertFile
Vue.prototype.approvalPortType = approvalPortType
Vue.prototype.getSystemOption = getSystemOption
Vue.prototype.currencySystemDisableType = currencySystemDisableType
Vue.prototype.imageTaskStatusShowType = imageTaskStatusShowType
Vue.prototype.dictData = dictData
Vue.prototype.parseTime = parseTime;
Vue.prototype.resetForm = resetForm;
Vue.prototype.addDateRange = addDateRange;
Vue.prototype.selectDictLabel = selectDictLabel;
Vue.prototype.selectDictLabels = selectDictLabels;
Vue.prototype.download = download;
Vue.prototype.handleTree = handleTree;
Vue.prototype.hscodeElementInfo = hscodeElementInfo;
Vue.prototype.elementTostring = elementTostring;
Vue.prototype.formatDate = formatDate;
Vue.prototype.debounce = debounce;
Vue.prototype.regExp = regExp;
Vue.prototype.numberRound = numberRound;
Vue.prototype.detailUnitConversion = detailUnitConversion;
Vue.prototype.fileDownload = fileDownload;
Vue.prototype.alertWarningMsg = alertWarningMsg;
Vue.prototype.alertSuccessMsg = alertSuccessMsg;
Vue.prototype.alertErrorMsg = alertErrorMsg;
Vue.prototype.alertInfoMsg = alertInfoMsg;
Vue.prototype.toHead = toHead;
Vue.prototype.setDict = setDict;
Vue.prototype.compare = compare;
Vue.prototype.sendNotificationHandler = sendNotificationHandler;
Vue.prototype.promptMessage = promptMessage;
Vue.prototype.createRandom = createRandom;
Vue.prototype.upDateTokenTime = upDateTokenTime;
Vue.prototype.sreachEntryLock = sreachEntryLock;
Vue.prototype.tableFixedTypeChange = tableFixedTypeChange;
Vue.prototype.ctho = ctho;
Vue.prototype.getDownLoadFileStatus = getDownLoadFileStatus;
Vue.prototype.base64ConvertFile = base64ConvertFile;
Vue.prototype.approvalPortType = approvalPortType;
Vue.prototype.getSystemOption = getSystemOption;
Vue.prototype.currencySystemDisableType = currencySystemDisableType;
Vue.prototype.imageTaskStatusShowType = imageTaskStatusShowType;
Vue.prototype.dictData = dictData;
Vue.prototype.msgSuccess = function (msg) {
this.$message({ showClose: true, message: msg, type: "success" });
}
};
Vue.prototype.msgError = function (msg) {
this.$message({ showClose: true, message: msg, type: "error" });
}
};
Vue.prototype.msgWarning = function (msg) {
this.$message({ showClose: true, message: msg, type: "warning" });
}
};
Vue.prototype.msgInfo = function (msg) {
this.$message.info(msg);
}
};
// 全局组件挂载
Vue.component('Pagination', Pagination)
Vue.component('RightToolbar', RightToolbar)
Vue.component('InputNodes', InputNodes)
Vue.component('Table', Table)
Vue.component('Formitem', Formitem)
Vue.component('EditStep', EditStep)
Vue.component('FedexAlert', FedexAlert)
Vue.component('FedexEdit', FedexEdit)
Vue.component('Tooltip', Tooltip)
Vue.component('AlterDialog', AlterDialog)
Vue.component('CustomTransfer', CustomTransfer)
Vue.component('CustomForm', CustomForm)
Vue.component('CustomTable', CustomTable)
Vue.component('EditTag', EditTag)
Vue.component('TablePopover', TablePopover)
Vue.component('FormTextareaInput', FormTextareaInput)
Vue.use(permission)
Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key])
})
Vue.component("Pagination", Pagination);
Vue.component("RightToolbar", RightToolbar);
Vue.component("InputNodes", InputNodes);
Vue.component("Table", Table);
Vue.component("Formitem", Formitem);
Vue.component("EditStep", EditStep);
Vue.component("FedexAlert", FedexAlert);
Vue.component("FedexEdit", FedexEdit);
Vue.component("Tooltip", Tooltip);
Vue.component("AlterDialog", AlterDialog);
Vue.component("CustomTransfer", CustomTransfer);
Vue.component("CustomForm", CustomForm);
Vue.component("CustomTable", CustomTable);
Vue.component("EditTag", EditTag);
Vue.component("TablePopover", TablePopover);
Vue.component("FormTextareaInput", FormTextareaInput);
Vue.use(permission);
Vue.use(VxeUITable);
Object.keys(filters).forEach((key) => {
Vue.filter(key, filters[key]);
});
// window.addEventListener('resize', () => {
// // 获取当前的缩放级别
......@@ -154,15 +191,15 @@ Object.keys(filters).forEach(key => {
*/
Vue.use(Element, {
size: localStorage.getItem('size') || 'medium' // set element-ui default size
})
size: localStorage.getItem("size") || "medium", // set element-ui default size
});
Vue.config.productionTip = false
Vue.config.productionTip = false;
new Vue({
el: '#app',
el: "#app",
router,
store,
i18n,
render: h => h(App)
})
render: (h) => h(App),
});
......
import router from './router'
import store from './store'
import { Message, MessageBox } from 'element-ui'
import { getToken, getLoginType } from '@/utils/auth'
import { alertWarningMsg, alertSuccessMsg, alertErrorMsg } from "@/utils/index";
import router from "./router";
import store from "./store";
import { getToken } from "@/utils/auth";
import { getParamsObj } from "@/utils/parseUrlParams";
const whiteList = [
"/login",
"/auth-redirect",
"/bind",
"/register",
"/relogin",
];
const whiteList = ['/login', '/auth-redirect', '/bind', '/register', '/relogin']
const userToken = getParamsObj(location.href).token;
router.beforeEach((to, from, next) => {
if (to.path == '/relogin') {
next()
if (userToken) {
store.dispatch("LoginWithoutPassword", userToken).then(() => {});
}
if (to.path == "/relogin") {
next();
} else {
if (getToken()) {
let path = ''
let path = "";
/* has token*/
if (to.path === '/login') {
next({ path: path })
if (to.path === "/login") {
next({ path: path });
} else {
if (store.getters.userData == null) {
// 判断当前用户是否已拉取完user_info信息
store.dispatch('GetInfo').then((res) => {
// if (res.success) {
store.dispatch('GenerateRoutes').then(accessRoutes => {
store.dispatch("GetDict", ['DECLARE_F_FLAG', 'MEASUREMENT_UNIT', 'RECEIPT_STATUS', 'DECLARE_APPTYPE', 'CURRENCY', 'DECLARE_STATISTICS_FLAG', 'ORDER_DECLARATION_PARTY']);
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes) // 动态添加可访问路由表
next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
store
.dispatch("GetInfo")
.then((res) => {
// if (res.success) {
store.dispatch("GenerateRoutes").then((accessRoutes) => {
store.dispatch("GetDict", [
"DECLARE_F_FLAG",
"MEASUREMENT_UNIT",
"TEMPLATE_TYPE",
"PACKAGE_TYPE_CODE",
"RECEIPT_STATUS",
"DECLARE_APPTYPE",
"CURRENCY",
"COUNTRY_REGION_CODE",
"DECLARE_STATISTICS_FLAG",
"ORDER_DECLARATION_PARTY",
"APP_STATUS",
"METHOD_OF_SIGNATURE",
"ORDER_DECLARE_CHANNEL",
"DECLARE_STATISTICS_FLAG",
"RETURN_STATUS",
"FORWARD_STATUS",
"DATA_SOURCE_IMPORT",
"DECLARE_TRAFMODE",
]);
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes); // 动态添加可访问路由表
next({ ...to, replace: true }); // hack方法 确保addRoutes已完成
});
// }
})
// }
}).catch(err => {
if (err != undefined) {
store.dispatch('FedLogOut')
}
})
.catch((err) => {
if (err != undefined) {
store.dispatch("FedLogOut");
}
});
} else {
next()
next();
}
}
} else {
// 没有token
if (whiteList.indexOf(to.path) !== -1) {
// 在免登录白名单,直接进入
next()
next();
} else {
next(`/login`) // 否则全部重定向到登录页
if (to.path === "/reportingData") {
store.dispatch("LoginWithoutPassword", userToken).then(() => {
next(`/reportingData`);
});
} else {
next(`/login`); // 否则全部重定向到登录页
}
}
}
}
})
});
router.afterEach(() => {
})
router.afterEach(() => {});
......
This diff is collapsed. Click to expand it.
module.exports = {
title: '跨境电商在线申报',
title: "跨境电商在线申报",
/**
* 侧边栏主题 深色主题theme-dark,浅色主题theme-light
*/
sideTheme: 'theme-light',
sideTheme: "theme-light",
/**
* 是否系统布局配置
......@@ -19,7 +19,7 @@ module.exports = {
/**
* 是否显示 tagsView
*/
tagsView: false,
tagsView: true,
/**
* 是否固定头部
......@@ -37,5 +37,5 @@ module.exports = {
* The default is only used in the production env
* If you want to also use it in dev, you can pass ['production', 'development']
*/
errorLog: 'production'
}
errorLog: "production",
};
......
This diff is collapsed. Click to expand it.
import { routeNameMap } from "../../layout/components/TagsView/route";
const state = {
visitedViews: [],
cachedViews: []
}
cachedViews: [],
tagsViewNames: [],
};
const mutations = {
ADD_VISITED_VIEW: (state, view) => {
if (state.visitedViews.some(v => v.path === view.path)) return
if (state.visitedViews.some((v) => v.path === view.path)) return;
state.visitedViews.push(
Object.assign({}, view, {
title: view.meta.title || 'no-name'
title: view.meta.title || "no-name",
})
)
);
},
ADD_CACHED_VIEW: (state, view) => {
if (state.cachedViews.includes(view.name)) return
if (state.cachedViews.includes(view.name)) return;
if (!view.meta.noCache) {
state.cachedViews.push(view.name)
state.cachedViews.push(view.name);
}
},
DEL_VISITED_VIEW: (state, view) => {
for (const [i, v] of state.visitedViews.entries()) {
if (v.path === view.path) {
state.visitedViews.splice(i, 1)
break
state.visitedViews.splice(i, 1);
break;
}
}
},
DEL_CACHED_VIEW: (state, view) => {
const index = state.cachedViews.indexOf(view.name)
index > -1 && state.cachedViews.splice(index, 1)
const index = state.cachedViews.indexOf(view.name);
index > -1 && state.cachedViews.splice(index, 1);
},
DEL_OTHERS_VISITED_VIEWS: (state, view) => {
state.visitedViews = state.visitedViews.filter(v => {
return v.meta.affix || v.path === view.path
})
state.visitedViews = state.visitedViews.filter((v) => {
return v.meta.affix || v.path === view.path;
});
},
DEL_OTHERS_CACHED_VIEWS: (state, view) => {
const index = state.cachedViews.indexOf(view.name)
const index = state.cachedViews.indexOf(view.name);
if (index > -1) {
state.cachedViews = state.cachedViews.slice(index, index + 1)
state.cachedViews = state.cachedViews.slice(index, index + 1);
} else {
state.cachedViews = []
state.cachedViews = [];
}
},
DEL_ALL_VISITED_VIEWS: state => {
DEL_ALL_VISITED_VIEWS: (state) => {
// keep affix tags
const affixTags = state.visitedViews.filter(tag => tag.meta.affix)
state.visitedViews = affixTags
const affixTags = state.visitedViews.filter((tag) => tag.meta.affix);
state.visitedViews = affixTags;
},
DEL_ALL_CACHED_VIEWS: state => {
state.cachedViews = []
DEL_ALL_CACHED_VIEWS: (state) => {
state.cachedViews = [];
},
UPDATE_VISITED_VIEW: (state, view) => {
for (let v of state.visitedViews) {
if (v.path === view.path) {
v = Object.assign(v, view)
break
v = Object.assign(v, view);
break;
}
}
},
DEL_RIGHT_VIEWS: (state, view) => {
const index = state.visitedViews.findIndex(v => v.path === view.path)
const index = state.visitedViews.findIndex((v) => v.path === view.path);
if (index === -1) {
return
return;
}
state.visitedViews = state.visitedViews.filter((item, idx) => {
if (idx <= index || (item.meta && item.meta.affix)) {
return true
return true;
}
const i = state.cachedViews.indexOf(item.name)
const i = state.cachedViews.indexOf(item.name);
if (i > -1) {
state.cachedViews.splice(i, 1)
state.cachedViews.splice(i, 1);
state.tagsViewNames.splice(i, 1);
}
return false
})
}
}
return false;
});
},
// add Name tagsViewNames
ADD_CACHED_NAME: (state, view) => {
const name = routeNameMap[view.path];
if (state.tagsViewNames.includes(name)) return;
if (!view.meta.noCache) {
state.tagsViewNames.push(name);
}
},
DEL_CACHED_NAME: (state, view) => {
const name = routeNameMap[view.path];
const index = state.tagsViewNames.indexOf(name);
index > -1 && state.tagsViewNames.splice(index, 1);
},
DEL_OTHERS_CACHED_NAMES: (state, view) => {
const name = routeNameMap[view.path];
const index = state.tagsViewNames.indexOf(name);
if (index > -1) {
state.tagsViewNames = state.tagsViewNames.slice(index, index + 1);
} else {
state.tagsViewNames = [];
}
},
DEL_ALL_CACHED_NAMES: (state) => {
state.tagsViewNames = [];
},
};
const actions = {
addView({ dispatch }, view) {
dispatch('addVisitedView', view)
dispatch('addCachedView', view)
dispatch("addVisitedView", view);
dispatch("addCachedView", view);
dispatch("addCachedName", view);
console.log("addView", view);
},
addVisitedView({ commit }, view) {
commit('ADD_VISITED_VIEW', view)
commit("ADD_VISITED_VIEW", view);
},
addCachedView({ commit }, view) {
commit('ADD_CACHED_VIEW', view)
commit("ADD_CACHED_VIEW", view);
},
addCachedName({ commit }, view) {
commit("ADD_CACHED_NAME", view);
},
delView({ dispatch, state }, view) {
return new Promise(resolve => {
dispatch('delVisitedView', view)
dispatch('delCachedView', view)
return new Promise((resolve) => {
dispatch("delVisitedView", view);
dispatch("delCachedView", view);
dispatch("delCachedName", view);
resolve({
visitedViews: [...state.visitedViews],
cachedViews: [...state.cachedViews]
})
})
cachedViews: [...state.cachedViews],
tagsViewNames: [...state.tagsViewNames],
});
});
},
delVisitedView({ commit, state }, view) {
return new Promise(resolve => {
commit('DEL_VISITED_VIEW', view)
resolve([...state.visitedViews])
})
return new Promise((resolve) => {
commit("DEL_VISITED_VIEW", view);
resolve([...state.visitedViews]);
});
},
delCachedView({ commit, state }, view) {
return new Promise(resolve => {
commit('DEL_CACHED_VIEW', view)
resolve([...state.cachedViews])
})
return new Promise((resolve) => {
commit("DEL_CACHED_VIEW", view);
resolve([...state.cachedViews]);
});
},
delCachedName({ commit, state }, view) {
return new Promise((resolve) => {
commit("DEL_CACHED_NAME", view);
resolve([...state.tagsViewNames]);
});
},
delOthersViews({ dispatch, state }, view) {
return new Promise(resolve => {
dispatch('delOthersVisitedViews', view)
dispatch('delOthersCachedViews', view)
return new Promise((resolve) => {
dispatch("delOthersVisitedViews", view);
dispatch("delOthersCachedViews", view);
dispatch("delOthersCachedName", view);
resolve({
visitedViews: [...state.visitedViews],
cachedViews: [...state.cachedViews]
})
})
cachedViews: [...state.cachedViews],
tagsViewNames: [...state.tagsViewNames],
});
});
},
delOthersVisitedViews({ commit, state }, view) {
return new Promise(resolve => {
commit('DEL_OTHERS_VISITED_VIEWS', view)
resolve([...state.visitedViews])
})
return new Promise((resolve) => {
commit("DEL_OTHERS_VISITED_VIEWS", view);
resolve([...state.visitedViews]);
});
},
delOthersCachedViews({ commit, state }, view) {
return new Promise(resolve => {
commit('DEL_OTHERS_CACHED_VIEWS', view)
resolve([...state.cachedViews])
})
return new Promise((resolve) => {
commit("DEL_OTHERS_CACHED_VIEWS", view);
resolve([...state.cachedViews]);
});
},
delOthersCachedName({ commit, state }, view) {
return new Promise((resolve) => {
commit("DEL_OTHERS_CACHED_NAMES", view);
resolve([...state.tagsViewNames]);
});
},
delAllViews({ dispatch, state }, view) {
return new Promise(resolve => {
dispatch('delAllVisitedViews', view)
dispatch('delAllCachedViews', view)
return new Promise((resolve) => {
dispatch("delAllVisitedViews", view);
dispatch("delAllCachedViews", view);
dispatch("delAllCachedName", view);
resolve({
visitedViews: [...state.visitedViews],
cachedViews: [...state.cachedViews]
})
})
cachedViews: [...state.cachedViews],
tagsViewNames: [...state.tagsViewNames],
});
});
},
delAllVisitedViews({ commit, state }) {
return new Promise(resolve => {
commit('DEL_ALL_VISITED_VIEWS')
resolve([...state.visitedViews])
})
return new Promise((resolve) => {
commit("DEL_ALL_VISITED_VIEWS");
resolve([...state.visitedViews]);
});
},
delAllCachedViews({ commit, state }) {
return new Promise(resolve => {
commit('DEL_ALL_CACHED_VIEWS')
resolve([...state.cachedViews])
})
return new Promise((resolve) => {
commit("DEL_ALL_CACHED_VIEWS");
resolve([...state.cachedViews]);
});
},
delAllCachedName({ commit, state }) {
return new Promise((resolve) => {
commit("DEL_ALL_CACHED_NAMES");
resolve([...state.tagsViewNames]);
});
},
updateVisitedView({ commit }, view) {
commit('UPDATE_VISITED_VIEW', view)
commit("UPDATE_VISITED_VIEW", view);
},
delRightTags({ commit }, view) {
return new Promise(resolve => {
commit('DEL_RIGHT_VIEWS', view)
resolve([...state.visitedViews])
})
}
}
return new Promise((resolve) => {
commit("DEL_RIGHT_VIEWS", view);
resolve([...state.visitedViews]);
});
},
};
export default {
namespaced: true,
state,
mutations,
actions
}
actions,
};
......
import { login, logout } from '@/api/login'
import { getInfo } from '@/api/system/user.js'
import { getLogisticsCodeLis, getDictData } from '@/api/system/dict-api.js'
import { getToken, setToken, removeToken, removeUserId, removeTime } from '@/utils/auth'
import { alertWarningMsg } from '@/utils/index.js'
import { login, logout } from "@/api/login";
import { getInfo } from "@/api/system/user.js";
import { getDictData } from "@/api/system/dict-api.js";
import {
getToken,
setToken,
removeToken,
removeUserId,
removeTime,
} from "@/utils/auth";
import { removeAuthCode } from "../../utils/auth";
const user = {
state: {
token: getToken(),
userData: null,
name: '',
avatar: '',
name: "",
avatar: "",
roles: [],
permissions: [],
linkList: [],
dict: {
DECLARE_TRAFMODE: [{ itemCode: 'DECLARE_TRAFMODE_AVIATION', itemChineseName: '航空运输', itemValue: '5' }]
// DECLARE_TRAFMODE: [
// {
// itemCode: "DECLARE_TRAFMODE_AVIATION",
// itemChineseName: "航空运输",
// itemValue: "5",
// },
// ],
},
loading: {
type: false,
text: '拼命加载中"'
}
text: '拼命加载中"',
},
},
mutations: {
SET_TOKEN: (state, token) => {
state.token = token
state.token = token;
},
SET_USERDATA: (state, data) => {
state.userData = data
state.userData = data;
},
SET_NAME: (state, name) => {
state.name = name
state.name = name;
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
state.avatar = avatar;
},
SET_ROLES: (state, roles) => {
state.roles = roles
state.roles = roles;
},
SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions
state.permissions = permissions;
},
SET_LINKLIST: (state, linkList) => {
state.linkList = linkList
state.linkList = linkList;
},
SET_DICT: (state, dict) => {
state.dict = dict
state.dict = dict;
},
SET_LOAD: (state, loading) => {
state.loading.type = loading.type
state.loading.text = loading.text
state.loading.type = loading.type;
state.loading.text = loading.text;
},
},
actions: {
// 登录
Login({ commit, state }, userInfo) {
const loginName = userInfo.userName.trim()
const password = userInfo.password
const rememberMe = userInfo.rememberMe
const loginName = userInfo.userName.trim();
const password = userInfo.password;
const rememberMe = userInfo.rememberMe;
return new Promise((resolve, reject) => {
login(loginName, password, rememberMe).then(res => {
if (res.code != '200') {
reject(res)
} else {
if (!getToken()) {
setToken(res.data)
commit('SET_TOKEN', res.data)
resolve(res)
login(loginName, password, rememberMe)
.then((res) => {
if (res.code != "200") {
reject(res);
} else {
resolve(res)
if (!getToken()) {
setToken(res.data);
commit("SET_TOKEN", res.data);
resolve(res);
} else {
resolve(res);
}
}
}
}).catch(error => {
reject(error)
})
})
})
.catch((error) => {
reject(error);
});
});
},
//非账号密码登录
LoginWithoutPassword({ commit }, token) {
return new Promise((resolve) => {
setToken(token);
commit("SET_TOKEN", token);
resolve(token);
// if (!getToken()) {
// setToken(token);
// commit("SET_TOKEN", token);
// resolve(token);
// } else {
// resolve(token);
// }
});
},
// 获取用户信息
async GetInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getInfo().then(res => {
if (res.code === '200') {
commit("SET_USERDATA", res.data);
resolve(res)
} else {
reject(res)
}
}).catch(error => {
reject(error)
})
})
getInfo()
.then((res) => {
if (res.code === "200") {
commit("SET_USERDATA", res.data);
resolve(res);
} else {
reject(res);
}
})
.catch((error) => {
reject(error);
});
});
},
//获取字典数据
async GetDict({ commit, state }, codeList) {
let obj = state.dict
let obj = state.dict;
codeList.forEach((item, idx) => {
if (obj[item] == undefined || obj[item].length == 0) {
obj[item] = []
getDictData({ doctCode: item }).then(res => {
if (res.code === '200') {
obj[item] = res.data
}
}).catch(err => {
console.log(err);
}).finally(() => {
if (idx == codeList.length - 1) {
console.log(obj);
commit('SET_DICT', obj)
}
})
obj[item] = [];
getDictData({ doctCode: item })
.then((res) => {
if (res.code === "200") {
obj[item] = res.data;
}
})
.catch((err) => {
console.log(err);
})
.finally(() => {
if (idx == codeList.length - 1) {
console.log(obj);
commit("SET_DICT", obj);
}
});
} else {
if (idx == codeList.length - 1) {
console.log(obj);
commit('SET_DICT', obj)
commit("SET_DICT", obj);
}
}
})
});
},
//退出系统
LogOut({ commit, state }) {
return new Promise((resolve, reject) => {
logout(state.token).then(() => {
commit('SET_TOKEN', '')
commit('SET_USERDATA', null)
removeToken()
removeTime()
resolve()
}).catch(error => {
reject(error)
})
})
logout(state.token)
.then(() => {
commit("SET_TOKEN", "");
commit("SET_USERDATA", null);
removeToken();
removeTime();
removeAuthCode();
resolve();
})
.catch((error) => {
reject(error);
});
});
},
// 前端 登出
FedLogOut({ commit, state }) {
return new Promise(resolve => {
commit('SET_TOKEN', '')
commit('SET_USERDATA', null)
removeToken()
removeTime()
removeUserId()
location.replace(process.env.VUE_APP_BASE_ROUTE);
resolve()
})
}
}
}
return new Promise((resolve) => {
commit("SET_TOKEN", "");
commit("SET_USERDATA", null);
removeToken();
removeTime();
removeUserId();
window.location.replace(process.env.VUE_APP_BASE_ROUTE);
resolve();
});
},
},
};
function getLogisticsCode() {
return new Promise((resolve, reject) => {
getLogisticsCodeList().then(res => {
if (res.code === '200') {
resolve(res.data)
} else {
reject()
}
}).catch(err => {
console.log(err);
reject()
})
})
getLogisticsCodeList()
.then((res) => {
if (res.code === "200") {
resolve(res.data);
} else {
reject();
}
})
.catch((err) => {
console.log(err);
reject();
});
});
}
export default user
export default user;
......
......@@ -7,13 +7,17 @@ const viewOption = {
tab: '',
submitType: false,
updateType: false,
}
},
loadingDatas:true
},
mutations: {
SET_ENTRYDATA(state, entryData) {
state.entryEdit = entryData
}
},
SET_LOADINGDATA(state, isLoading) {
state.loadingDatas = isLoading
},
},
actions: {
......@@ -28,7 +32,10 @@ const viewOption = {
submitType: false,
updateType: false,
})
}
},
setLoadingState({ commit, state }, data) {
commit('SET_LOADINGDATA', data)
},
}
}
......
const TokenKey = 'Ecom-Token'
const TokenKey = "Ecom-Token";
export const auth_code = "PERMISSION_AUTH_CODE";
export function getToken() {
return localStorage.getItem(TokenKey)
return localStorage.getItem(TokenKey);
// return sessionStorage.getItem(TokenKey)
}
export function setToken(token) {
setTime(new Date().getTime())
return localStorage.setItem(TokenKey, token)
setTime(new Date().getTime());
return localStorage.setItem(TokenKey, token);
// return sessionStorage.setItem(TokenKey, token)
}
export function removeToken() {
sessionStorage.removeItem('magicFcl')
return localStorage.removeItem(TokenKey)
sessionStorage.removeItem("magicFcl");
return localStorage.removeItem(TokenKey);
// return sessionStorage.removeItem(TokenKey)
}
export function getUserId() {
return localStorage.getItem('EcomUser')
return localStorage.getItem("EcomUser");
// return sessionStorage.getItem(TokenKey)
}
export function setUserId(id) {
return localStorage.setItem('EcomUser', id)
return localStorage.setItem("EcomUser", id);
// return sessionStorage.setItem(TokenKey, token)
}
export function removeUserId() {
return localStorage.removeItem('EcomUser')
return localStorage.removeItem("EcomUser");
// return sessionStorage.getItem(TokenKey)
}
export function setCookie(cookie) {
return localStorage.setItem('EcomLoginTIp', cookie)
return localStorage.setItem("EcomLoginTIp", cookie);
}
export function getCookie() {
return localStorage.getItem('EcomLoginTIp')
return localStorage.getItem("EcomLoginTIp");
}
export function setTime(date) {
return localStorage.setItem('EcomLoginTime', date)
return localStorage.setItem("EcomLoginTime", date);
}
export function getTime() {
return localStorage.getItem('EcomLoginTime')
return localStorage.getItem("EcomLoginTime");
}
export function removeTime() {
return localStorage.removeItem('EcomLoginTime')
return localStorage.removeItem("EcomLoginTime");
}
export function setLoginType(type) {
return sessionStorage.setItem('magicFcl', type)
return sessionStorage.setItem("magicFcl", type);
}
export function getLoginType() {
return sessionStorage.getItem('magicFcl')
return sessionStorage.getItem("magicFcl");
}
export function removeLoginType() {
return sessionStorage.removeItem('magicFcl')
return sessionStorage.removeItem("magicFcl");
}
export function setEntrySreachType(type) {
return sessionStorage.setItem('sreachEntryType', type)
return sessionStorage.setItem("sreachEntryType", type);
}
export function getEntrySreachType() {
return sessionStorage.getItem('sreachEntryType')
return sessionStorage.getItem("sreachEntryType");
}
export function removeEntrySreachType() {
return sessionStorage.removeItem('sreachEntryType')
}
\ No newline at end of file
return sessionStorage.removeItem("sreachEntryType");
}
// 用于解放权限
export function removeAuthCode() {
return localStorage.removeItem(auth_code);
}
// 获取权限 并判断传进来的code 是否有权限
export function isHasAuth(code) {
const authCode = localStorage.getItem(auth_code);
const stored = authCode ? JSON.parse(authCode) : [];
// console.log(stored);
if (stored.includes(code)) {
return true;
} else {
return false;
}
}
......
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
export function buildMenuTree(menuList) {
// 创建一个映射,用于快速查找菜单项
const menuMap = new Map();
const tree = [];
// 首先将所有菜单项放入映射中
menuList.forEach((menu) => {
menuMap.set(menu.menuId, { ...menu, children: [] });
});
// 构建树形结构
menuList.forEach((menu) => {
const menuItem = menuMap.get(menu.menuId);
if (menu.parentMenuId === 0) {
// 如果是顶级菜单,直接添加到树中
tree.push(menuItem);
} else {
// 如果不是顶级菜单,找到其父菜单并添加到父菜单的children中
const parent = menuMap.get(menu.parentMenuId);
if (parent) {
parent.children.push(menuItem);
}
}
});
return tree;
}
export function getBindingLeafMenuIds(menuList) {
// 创建一个映射,用于快速查找菜单项
const menuMap = new Map();
const bindingMenuIds = new Set();
const parentMenuIds = new Set();
// 首先处理所有菜单项
menuList.forEach((menu) => {
menuMap.set(menu.menuId, menu);
// 记录所有父级menuId
if (menu.parentMenuId !== 0) {
parentMenuIds.add(menu.parentMenuId);
}
// 记录所有isBinding为true的menuId
if (menu.isBinding) {
bindingMenuIds.add(menu.menuId);
}
});
// 从bindingMenuIds中移除所有父级menuId
parentMenuIds.forEach((parentId) => {
bindingMenuIds.delete(parentId);
});
return Array.from(bindingMenuIds);
}
export const getParamsObj = (url) => {
const params = new URLSearchParams(url.split('?')[1]);
const paramObj = {};
for (const [key, value] of params) {
paramObj[key] = value;
}
return paramObj;
}
\ No newline at end of file
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
<template>
<el-dialog
class="entryDialog classCUploadDialog"
:title="title"
:visible.sync="outerVisible"
:show-close="false"
width="40%"
:close-on-click-modal="false"
v-loading="loadings.dialogLoading"
@close="close(false)"
>
<div class="modelItem">
<el-form
class="fedexFormStyle"
ref="formData"
:model="formData"
:rules="type == 'roleChange' ? {} : rules"
label-position="top"
:disabled="type == 'roleChange'"
size="small"
>
<el-row :gutter="5">
<!-- 用户ID -->
<el-col :span="12">
<Formitem label="用户ID" prop="userId" type="edit">
<el-input
type="text"
class="inputShadow"
id="inputInner-edit-userId"
resize="none"
v-model="formData.userId"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<!-- key -->
<el-col :span="12">
<Formitem label="KEY" prop="key" type="edit">
<el-input
type="text"
class="inputShadow"
id="inputInner-edit-key"
resize="none"
v-model="formData.key"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<!-- 说明 -->
<el-col :span="24">
<Formitem label="说明" prop="description" type="edit">
<el-input
type="text"
class="inputShadow"
id="inputInner-edit-description"
resize="none"
v-model="formData.description"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
</el-row>
</el-form>
</div>
<div class="dialogOption entrySave">
<el-button
class="entrySaveButton"
:disabled="loadings.submitLoading"
@click="submit"
>确 定</el-button
>
<el-button
class="entrySaveButton"
:disabled="loadings.uploadLoading"
@click="close(false)"
>关 闭</el-button
>
</div>
</el-dialog>
</template>
<script>
import { generateKey, updateKeyInfo } from "@/api/api-key.js";
export default {
props: {
outerVisible: {
type: Boolean,
default: false,
},
title: {
type: String,
default: "新增密码机",
},
type: {
type: String,
default: "",
},
active: {
type: Object,
default: null,
},
},
data() {
return {
formData: {
description: "",
userId: "",
key: "",
id: undefined,
},
rules: {
key: [
{
required: false,
trigger: "blur",
message: "用户ID不能为空!",
},
],
userId: [
{
required: true,
trigger: "blur",
message: "KEY不能为空!",
},
],
},
loadings: {
dialogLoading: false,
uploadLoading: false,
submitLoading: false,
},
loadingText: "",
};
},
watch: {
outerVisible(val) {
if (val) {
this.loadings.dialogLoading = false;
if (this.type == "update") {
this.formData = JSON.parse(JSON.stringify(this.active));
}
}
},
},
methods: {
//数据保存
submit() {
this.loadings.dialogLoading = true;
let obj = {};
if (this.type == "add") {
this.$refs.formData.validate((valid) => {
if (valid) {
obj = this.formData;
this.addApi(obj);
} else {
this.loadings.dialogLoading = false;
}
});
} else if (this.type == "update") {
this.$refs.formData.validate((valid) => {
if (valid) {
obj.description = this.formData.description;
obj.userId = this.formData.userId;
obj.key = this.formData.key;
obj.id = this.formData.id;
this.updateapi(obj);
} else {
this.loadings.dialogLoading = false;
}
});
}
},
//新增
addApi(val) {
const { description = "", userId = "", key = "" } = val;
const params = new URLSearchParams();
params.append("description", description);
params.append("userId", userId);
params.append("key", key);
generateKey(params)
.then((res) => {
if (res.code === "200") {
this.msgSuccess(res.message);
this.close(true);
} else {
this.alertWarningMsg(res.message);
this.loadings.dialogLoading = false;
}
})
.catch((err) => {
console.log(err);
this.loadings.dialogLoading = false;
});
},
//修改
updateapi(val) {
updateKeyInfo(val)
.then((res) => {
if (res.code === "200") {
this.msgSuccess(res.message);
this.close(true);
} else {
this.alertWarningMsg(res.message);
this.loadings.dialogLoading = false;
}
})
.catch((err) => {
console.log(err);
this.loadings.dialogLoading = false;
});
},
close(flag) {
this.formData = {
description: "",
userId: "",
key: "",
};
this.$emit("close", flag);
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/styles/variables.scss";
</style>
<template>
<div class="entrySreach">
<el-form
class="fedexFormStyle fedexformSreach fedexformSreachBottomBorder"
ref="sreachForm"
:model="sreachFormData"
label-position="top"
size="small"
>
<el-row class="row-border">
<!-- 角色名称 -->
<el-col :span="5">
<Formitem label="用户ID" prop="userId">
<el-input
type="text"
class="inputShadow"
id="inputInner--userId"
resize="none"
v-model="sreachFormData.userId"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<el-col :span="2">
<el-form-item class="textCenter">
<el-button
class="entrySreachButton"
type="text"
icon="el-icon-search"
:loading="loadings.searchLoading"
@click="search(0)"
></el-button>
</el-form-item>
</el-col>
<el-col :span="2">
<!-- 清空查询条件-->
<el-form-item class="textLeft textCenter">
<el-button
type="text"
size="small"
icon="el-icon-refresh"
@click="clear"
>
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="optionButton">
<el-button
class="entrySaveButton"
icon="el-icon-plus"
size="small"
@click="addcipherMachine"
>
新 增
</el-button>
</div>
<Table
class="fedexDetialTable fedexSreachTable"
ref="entryTable"
:data="tableData"
:headerData="headerData"
:maxHeight="tableMaxheight"
:border="true"
:pagination="true"
:order="true"
noLabel="序号"
:loading="loadings.searchLoading"
:page="page.pageIndex"
:totalCount="page.total"
@sizeChange="sizeChange"
@currentChange="currentChange"
:selection="false"
:selectFixed="false"
:rowSelectDataType="false"
>
<template v-slot:key="scope">
<template v-if="!scope.row.show">
{{ scope.row.key.replace(/(?<=.{4}).(?=.{4})/g, "*") }}
<span style="margin-left: 8px; cursor: pointer"" @click="scope.row.show = true">
<svg-icon
class="el-icon-user-solid"
icon-class="eye-open"
></svg-icon
></span>
</template>
<template v-else
>{{ scope.row.noKey }}
<span
style="margin-left: 8px; cursor: pointer"
@click="scope.row.show = false"
>
<svg-icon class="el-icon-user-solid" icon-class="eye"></svg-icon
></span>
</template>
</template>
<template slot="optionColumn">
<el-table-column align="left" label="操作" width="100">
<template slot-scope="scope">
<el-button type="text" @click="update(scope.row)"> 修改 </el-button>
<el-button type="text" @click="deleteRow(scope.row)">
删除
</el-button>
</template>
</el-table-column>
</template>
</Table>
<DialogVue
:outerVisible="outerVisible"
:title="dialogTitle"
:type="editType"
:active="activeData"
@close="dialogClose"
/>
</div>
</template>
<script>
import { queryKeyList, deleteKey } from "@/api/api-key.js";
import DialogVue from "./dialog.vue";
export default {
name: "ApiKey",
components: {
DialogVue,
},
data() {
return {
sreachFormData: {
userId: "",
},
page: {
pageIndex: 1,
pageSize: 20,
total: 0,
},
activeData: null,
tableData: [], // 用户ID KEY 说明 操作(新增、删除、修改) key 控制显示,点击眼睛可查看全部
headerData: [
{
name: "用户ID",
value: "userId",
width: "",
align: "left",
},
{
name: "KEY",
value: "key",
width: "",
align: "left",
slot: true,
},
{
name: "说明",
value: "description",
width: "",
align: "left",
},
],
loadings: {
searchLoading: false,
},
tableMaxheight: null,
outerVisible: false,
dialogTitle: "",
editType: "",
};
},
created() {
this.search(0);
},
mounted() {
this.tableMaxheight = window.innerHeight - 300;
},
methods: {
//查询
search(val) {
this.loadings.searchLoading = true;
if (val == 0) {
this.page.pageIndex = 1;
}
let obj = this.sreachFormData;
obj.pageIndex = this.page.pageIndex;
obj.pageSize = this.page.pageSize;
queryKeyList(obj)
.then((res) => {
if (res.code === "200") {
this.page.total = res.data.totalItems;
this.tableData = res.data.value.map((item, index) => {
item.index = index;
item.noKey = item.key;
item.show = false;
return item;
});
} else {
this.alertWarningMsg(res.message);
}
this.loadings.searchLoading = false;
})
.catch((err) => {
console.log(err);
this.loadings.searchLoading = false;
});
},
addcipherMachine() {
this.dialogTitle = "新增";
this.editType = "add";
this.outerVisible = true;
},
update(val) {
this.dialogTitle = "修改";
this.editType = "update";
this.outerVisible = true;
this.activeData = val;
},
deleteRow(row) {
this.$confirm("是否确认删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
deleteKey(row.id).then((res) => {
if (+res.code === 200) {
this.alertSuccessMsg(res.message);
this.search(0);
} else {
this.alertWarningMsg(res.message);
}
});
})
.catch((e) => {
console.log(e);
});
},
dialogClose(flag = false) {
this.outerVisible = false;
this.activeData = null;
if (flag) {
this.search(0);
}
},
//分页
currentChange(val) {
this.page.pageIndex = val.page;
this.search(1);
},
sizeChange(val) {
this.page.pageSize = val;
this.search(1);
},
input() {
this.$forceUpdate();
},
dateChange(val) {
if (val == "" || val == null) {
this.$nextTick(() => {
this.sreachFormData.creationTime = [];
});
}
},
clear() {
this.sreachFormData = {
userId: "",
};
},
},
};
</script>
<style scoped lang="scss">
@import "@/assets/styles/variables.scss";
.entrySreach {
height: 100%;
background-color: $menuLightBg;
.entrySreachButton {
display: inline-block;
font-size: 20px;
color: $fedexButton !important;
}
.optionButton {
padding: 10px;
text-align: left;
.el-button {
color: $fedexButton;
border-color: $fedexButton !important;
svg {
display: inline-block;
margin-right: 5px;
fill: $fedexButton;
}
}
.entrySaveButton:hover,
.entrySaveButton:focus {
color: $menuLightBg !important;
background-color: $fedexButton !important;
}
}
}
.texttareaTip {
position: absolute;
top: 52%;
right: 20px;
transform: translate(0, -50%);
z-index: 10;
}
</style>
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.