Browse Source

Merge branch 'master_hella' into hella_chenfang

hella_chenfang
陈放 1 month ago
parent
commit
d2b5ce9c4c
  1. 85
      .env.wyf
  2. 7
      README.md
  3. 11
      src/api/wms/balance/index.ts
  4. 62
      src/api/wms/balanceChangeHistory/index.ts
  5. 4
      src/api/wms/bomDismantle/index.ts
  6. 28
      src/api/wms/containerMainRequest/index.ts
  7. 63
      src/api/wms/containerRecordMain/index.ts
  8. 5
      src/api/wms/countJobMain/index.ts
  9. 14
      src/api/wms/demandforecastingMain/index.ts
  10. 5
      src/api/wms/issueJobMain/index.ts
  11. 54
      src/api/wms/notPackageTransactionBalance/index.ts
  12. 5
      src/api/wms/productionreceiptJobMain/index.ts
  13. 10
      src/api/wms/productionreturnJobMain/index.ts
  14. 10
      src/api/wms/productputawayJobMain/index.ts
  15. 15
      src/api/wms/productreceiptJobMain/index.ts
  16. 5
      src/api/wms/productredressJobMain/index.ts
  17. 6
      src/api/wms/productscrapRequestMain/index.ts
  18. 20
      src/api/wms/purchaseDetail/index.ts
  19. 10
      src/api/wms/purchasereceiptJobMain/index.ts
  20. 5
      src/api/wms/purchasereturnJobMain/index.ts
  21. 5
      src/api/wms/putawayJobMain/index.ts
  22. 5
      src/api/wms/repleinshJobMain/index.ts
  23. 5
      src/api/wms/rule/index.ts
  24. 59
      src/api/wms/spareitemLocation/index.ts
  25. 56
      src/api/wms/supplierApbalanceCalendar/index.ts
  26. 12
      src/api/wms/supplierApbalanceMain/index.ts
  27. 7
      src/api/wms/supplierdeliverRequestMain/index.ts
  28. 24
      src/api/wms/supplierinvoiceInvoiced/index.ts
  29. 13
      src/api/wms/transaction/index.ts
  30. 55
      src/api/wms/transactionBalancePackage/index.ts
  31. 15
      src/components/Annex/src/Annex.vue
  32. 4
      src/components/BasicForm/src/BasicForm.vue
  33. 2
      src/components/ConfigGlobal/src/ConfigGlobal.vue
  34. 7
      src/components/Detail/src/Detail.vue
  35. 2
      src/components/Detail/src/DetailLedger.vue
  36. 2
      src/components/DictTag/src/DictTag.vue
  37. 1
      src/components/Form/src/Form.vue
  38. 37
      src/components/ImportForm/src/ImportDetailForm.vue
  39. 14
      src/components/ImportForm/src/ImportForm.vue
  40. 6
      src/components/LabelForm/src/LabelForm.vue
  41. 11
      src/components/Search/src/Search.vue
  42. 6
      src/components/SearchTable/src/SearchTable.vue
  43. 4
      src/components/SearchTableCount/src/SearchTableCount.vue
  44. 4
      src/components/SearchTableV2/src/SearchTableV2.vue
  45. 2
      src/components/Table/src/Table.vue
  46. 6
      src/components/TableForm/src/TableForm.vue
  47. 58
      src/components/TableFormAdjustment/src/TableFormAdjustment.vue
  48. 44
      src/components/UploadFile/src/UploadFile.vue
  49. 23
      src/components/XButton/src/ButtonBaseMore.vue
  50. 2
      src/config/axios/service.ts
  51. 313
      src/locales/en-US.ts
  52. 315
      src/locales/zh-CN.ts
  53. 25
      src/utils/disposition/defaultButtons.ts
  54. 2
      src/views/login/components/LoginForm.vue
  55. 3
      src/views/login/components/QRCodePDA.vue
  56. 32
      src/views/login/forgetPassword.vue
  57. 4
      src/views/login/updatePassword.vue
  58. 20
      src/views/login/updatePasswordNewTips.vue
  59. 7
      src/views/qms/inspectionRecord/index.vue
  60. 10
      src/views/qms/inspectionRecordFirst/addForm.vue
  61. 11
      src/views/qms/inspectionRecordFirst/index.vue
  62. 36
      src/views/qms/inspectionScheme/addForm.vue
  63. 12
      src/views/qms/inspectionScheme/index.vue
  64. 1
      src/views/qms/inspectionTemplate/detail.vue
  65. 40
      src/views/system/passwordRule/index.vue
  66. 2
      src/views/system/user/index.vue
  67. 7
      src/views/wms/agvManage/backflushDetailbQad/backflushDetailbQad.data.ts
  68. 6
      src/views/wms/basicDataManage/customerManage/customeritem/customeritem.data.ts
  69. 1
      src/views/wms/basicDataManage/customerManage/customeritem/index.vue
  70. 20
      src/views/wms/basicDataManage/factoryModeling/areabasic/areabasic.data.ts
  71. 28
      src/views/wms/basicDataManage/factoryModeling/dock/dock.data.ts
  72. 30
      src/views/wms/basicDataManage/factoryModeling/location/location.data.ts
  73. 12
      src/views/wms/basicDataManage/factoryModeling/locationgroup/locationgroup.data.ts
  74. 14
      src/views/wms/basicDataManage/factoryModeling/warehouse/warehouse.data.ts
  75. 6
      src/views/wms/basicDataManage/itemManage/itemarea/itemarea.data.ts
  76. 23
      src/views/wms/basicDataManage/itemManage/itembasic/itembasic.data.ts
  77. 8
      src/views/wms/basicDataManage/itemManage/itempackage/itempackage.data.ts
  78. 60
      src/views/wms/basicDataManage/itemManage/packageunit/packageunit.data.ts
  79. 7
      src/views/wms/basicDataManage/itemManage/productionlineitem/productionlineitem.data.ts
  80. 7
      src/views/wms/basicDataManage/itemManage/relegate/relegateRequest/index.vue
  81. 64
      src/views/wms/basicDataManage/itemManage/relegate/relegateRequest/relegateRequestMain.data.ts
  82. 6
      src/views/wms/basicDataManage/itemManage/stdcostprice/stdcostprice.data.ts
  83. 32
      src/views/wms/basicDataManage/labelManage/callmaterials/callmaterials.data.ts
  84. 276
      src/views/wms/basicDataManage/strategySetting/spareitemLocation/index.vue
  85. 192
      src/views/wms/basicDataManage/strategySetting/spareitemLocation/spareitemLocation.data.ts
  86. 8
      src/views/wms/basicDataManage/strategySetting/strategy/arrivalInspectionStrategy/AddForm.vue
  87. 10
      src/views/wms/basicDataManage/strategySetting/strategy/batchStrategy/AddForm.vue
  88. 8
      src/views/wms/basicDataManage/strategySetting/strategy/downShelfStrategy/AddForm.vue
  89. 16
      src/views/wms/basicDataManage/strategySetting/strategy/inspectStrategy/AddForm.vue
  90. 8
      src/views/wms/basicDataManage/strategySetting/strategy/manageAccuracyStrategy/AddForm.vue
  91. 8
      src/views/wms/basicDataManage/strategySetting/strategy/purchaseReceiptStrategy/AddForm.vue
  92. 8
      src/views/wms/basicDataManage/strategySetting/strategy/repairMaterialStrategy/AddForm.vue
  93. 8
      src/views/wms/basicDataManage/strategySetting/strategy/storageCapacityStrategy/AddForm.vue
  94. 12
      src/views/wms/basicDataManage/strategySetting/strategy/supplieDeliveryStrategy/AddForm.vue
  95. 16
      src/views/wms/basicDataManage/strategySetting/strategy/upShelfStrategy/AddForm.vue
  96. 26
      src/views/wms/basicDataManage/strategySetting/strategy/upShelfStrategy/index.vue
  97. 8
      src/views/wms/basicDataManage/strategySetting/strategy/utensilCapacityStrategy/AddForm.vue
  98. 8
      src/views/wms/basicDataManage/strategySetting/strategy/warehouseStorageStrategy/AddForm.vue
  99. 22
      src/views/wms/basicDataManage/supplierManage/purchaseprice/purchaseprice.data.ts
  100. 40
      src/views/wms/basicDataManage/supplierManage/supplier/supplier.data.ts

85
.env.wyf

@ -3,19 +3,77 @@ NODE_ENV=test
VITE_DEV=false
# # 达明
# # # 请求路径
# VITE_BASE_URL='http://192.168.0.105:12080'
# # 上传路径
# VITE_UPLOAD_URL='http://192.168.0.105:12080/admin-api/infra/file/upload'
# # 大哥
# # 请求路径
# VITE_BASE_URL='http://192.168.0.113:12080'
# VITE_BASE_URL='http://192.168.0.216:12080'
# # 上传路径
# VITE_UPLOAD_URL='http://192.168.0.216:12080/admin-api/infra/file/upload'
# # 雪冰
# # # 请求路径
# VITE_BASE_URL='http://192.168.1.68:12080'
# # 上传路径
# VITE_UPLOAD_URL='http://192.168.0.113:12080/admin-api/infra/file/upload'
# VITE_UPLOAD_URL='http://192.168.1.68:12080/admin-api/infra/file/upload'
# # 依然
# # # 请求路径
# VITE_BASE_URL='http://192.168.1.253:12080'
# # 上传路径
# VITE_UPLOAD_URL='http://192.168.1.253:12080/admin-api/infra/file/upload'
# # 国强
# # 请求路径
# VITE_BASE_URL='https://scp.faway-hella.com/api'
# VITE_BASE_URL='http://192.168.0.106:12080'
# # 上传路径
# VITE_UPLOAD_URL='https://scp.faway-hella.com/api/admin-api/infra/file/upload'
# VITE_UPLOAD_URL='http:// 192.168.0.106:12080/admin-api/infra/file/upload'
# 请求路径
VITE_BASE_URL='http://172.21.32.13/api'
# 佳兴
# # # 请求路径
# VITE_BASE_URL='http://192.168.1.254:12080'
# # 上传路径
# VITE_UPLOAD_URL='http://192.168.1.254:12080/admin-api/infra/file/upload'
# # zb
# VITE_BASE_URL='http://192.168.0.37:12080'
# # 上传路径
# VITE_UPLOAD_URL='http://192.168.0.37:12080/admin-api/infra/file/upload'
# 81 WMS请求路径 82 SCP
VITE_BASE_URL='http://172.22.32.9/api'
# 上传路径
VITE_UPLOAD_URL='http://172.21.32.13/api/admin-api/infra/file/upload'
VITE_UPLOAD_URL='http://172.22.32.9/api/admin-api/infra/file/upload'
# # 81 WMS请求路径 82 SCP
# VITE_BASE_URL='http://172.21.32.14/api'
# # 上传路径
# VITE_UPLOAD_URL='http://172.21.32.14/api/admin-api/infra/file/upload'
# # 请求路径
# VITE_BASE_URL='https://scptest.faway-hella.com/api'
# # 上传路径
# VITE_UPLOAD_URL='https://scptest.faway-hella.com/api/admin-api/infra/file/upload'
# # scptest
# VITE_BASE_URL='http://172.21.32.16/api'
# # 上传路径
# VITE_UPLOAD_URL='http://172.21.32.16/api/admin-api/infra/file/upload'
# # 请求路径
# VITE_BASE_URL='http://172.21.32.13/api'
# # 上传路径
# VITE_UPLOAD_URL='http://172.21.32.13/api/admin-api/infra/file/upload'
# # 请求路径
@ -55,10 +113,19 @@ VITE_OUT_DIR=sfms3.0
VITE_INTERFACE_URL='http://dev.ccwin-in.com:25310/magic/web/index.html'
# 积木报表请求路径
VITE_JMREPORT_BASE_URL='http://192.168.0.108:12080'
VITE_JMREPORT_BASE_URL='http://172.22.32.9:90'
# 租户配置
VITE_TENANT='["长春1379","成都1397","长春2379"]'
# 查看质检报告环境
VITE_REPORT_URL = 'http://dev.ccwin-in.com:25400'
VITE_REPORT_URL = 'http://localhost'
# 登录系统升级的提示
VITE_SYSTERM_UPDATE_ALERT = false
# 是否需要验证码
VITE_NEED_CODE = false
# 是否需要下载PDA链接
VITE_PDA_URL = true

7
README.md

@ -100,7 +100,12 @@ tableForm:{
}]
},
tableForm: {
type: 'InputNumber',
minField: 0, // 每行数据不同最小值
precision: 2,
maxField:'maxQty' // 每行数据不同最大值
}
**主子表合并需要修改的代码**
1、影响Table表头

11
src/api/wms/balance/index.ts

@ -210,6 +210,17 @@ export const getBalanceByQJ = async (params) => {
}
}
// 查询器具库存余额列表
export const getBalanceByQJToScrap = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/balance/seniorContainerToScrap', data })
} else {
return await request.get({ url: `/wms/balance/pageContainerToScrap`, params })
}
}
// 查询库存余额列表根据业务类型 根据库存状态及库区类型筛选
export const getBalanceByBusinessTypeByItemType = async (params) => {

62
src/api/wms/balanceChangeHistory/index.ts

@ -0,0 +1,62 @@
import request from '@/config/axios'
export interface BalanceChangeHistoryVO {
beforeItemCode: string
beforeBatch: string
beforePackingNumber: string
beforeInventoryStatus: string
beforeLocationCode: string
beforeQty: number
beforeTransNumber: string
beforeId: number
afterItemCode: string
afterBatch: string
afterPackingNumber: string
afterInventoryStatus: string
afterLocationCode: string
afterQty: number
afterTransNumber: string
afterId: number
remark: string
}
// 查询库存余额变更记录列表
export const getBalanceChangeHistoryPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/balance-change-history/senior', data })
} else {
return await request.get({ url: `/wms/balance-change-history/page`, params })
}
}
// 查询库存余额变更记录详情
export const getBalanceChangeHistory = async (id: number) => {
return await request.get({ url: `/wms/balance-change-history/get?id=` + id })
}
// 新增库存余额变更记录
export const createBalanceChangeHistory = async (data: BalanceChangeHistoryVO) => {
return await request.post({ url: `/wms/balance-change-history/create`, data })
}
// 修改库存余额变更记录
export const updateBalanceChangeHistory = async (data: BalanceChangeHistoryVO) => {
return await request.put({ url: `/wms/balance-change-history/update`, data })
}
// 删除库存余额变更记录
export const deleteBalanceChangeHistory = async (id: number) => {
return await request.delete({ url: `/wms/balance-change-history/delete?id=` + id })
}
// 导出库存余额变更记录 Excel
export const exportBalanceChangeHistory = async (params) => {
return await request.download({ url: `/wms/balance-change-history/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/balance-change-history/get-import-template' })
}

4
src/api/wms/bomDismantle/index.ts

@ -41,6 +41,10 @@ export const getProductscrapBomRecordPageBatch = async (params1) => {
}
}
export const getChangeBomQtyPage = async (params) => {
return await request.get({ url: `/wms/productscrap-request-main/pageBom`, params })
}
// 查询制品报废申请子列表
export const getProductscrapBomDismantleRecordPage = async (params) => {
return await request.get({ url: `/wms/productscrap-record-main/bomPage`, params })

28
src/api/wms/containerMainRequest/index.ts

@ -113,14 +113,30 @@ export const exportDeliverContainerMainRequest = async (params) => {
}
}
// 下载用户导入模板(器具初始化/新增)
export const importTemplate = () => {
return request.download({ url: '/wms/container-main-request/get-import-template' })
// 下载用户导入模板(器具初始化)
export const importTemplateInitial = () => {
return request.download({ url: '/wms/container-main-request/get-import-template-initial' })
}
// 下载用户导入模板(器具新增)
export const importTemplateCreate = () => {
return request.download({ url: '/wms/container-main-request/get-import-template-create' })
}
// 下载用户导入模板(器具报废)
export const importTemplateScrap = () => {
return request.download({ url: '/wms/container-main-request/get-import-template-scrap' })
}
// 下载用户导入模板(器具返回/移动/报废)
export const importTemplateReturnAndMove = () => {
return request.download({ url: '/wms/container-main-request/get-import-template-returnAndMove' })
// 下载用户导入模板(器具移动)
export const importTemplateMove = () => {
return request.download({ url: '/wms/container-main-request/get-import-template-move' })
}
// 下载用户导入模板(器具返回)
export const importTemplateReturn = () => {
return request.download({ url: '/wms/container-main-request/get-import-template-return' })
}
// 关闭

63
src/api/wms/containerRecordMain/index.ts

@ -58,7 +58,8 @@ export const exportContainerRecordMain = async (params) => {
}
// 导出器具管理初始化记录主 Excel
export const exportContainerInitRecordMain = async (params) => {
export const exportContainerInitialRecordMain = async (params) => {
params.businessType = 'InitialContainerManage'
if (params.isSearch) {
delete params.isSearch
const data = { ...params }
@ -68,6 +69,66 @@ export const exportContainerInitRecordMain = async (params) => {
}
}
// 导出器具管理创建记录主 Excel
export const exportContainerCreateRecordMain = async (params) => {
params.businessType = 'CreateContainerManage'
if (params.isSearch) {
delete params.isSearch
const data = { ...params }
return await request.downloadPost({ url: '/wms/container-record-main/export-excel-init-senior', data })
} else {
return await request.download({ url: `/wms/container-record-main/export-excel-init`, params })
}
}
// 导出器具管理返回记录主 Excel
export const exportContainerReturnRecordMain = async (params) => {
params.businessType = 'CreateContainerManage'
if (params.isSearch) {
delete params.isSearch
const data = { ...params }
return await request.downloadPost({ url: '/wms/container-record-main/export-excel-senior', data })
} else {
return await request.download({ url: `/wms/container-record-main/export-excel`, params })
}
}
// 导出器具管理移动记录主 Excel
export const exportContainerMoveRecordMain = async (params) => {
params.businessType = 'MoveContainerManage'
if (params.isSearch) {
delete params.isSearch
const data = { ...params }
return await request.downloadPost({ url: '/wms/container-record-main/export-excel-senior', data })
} else {
return await request.download({ url: `/wms/container-record-main/export-excel`, params })
}
}
// 导出器具管理报废记录主 Excel
export const exportContainerScrapRecordMain = async (params) => {
params.businessType = 'ScrapContainerManage'
if (params.isSearch) {
delete params.isSearch
const data = { ...params }
return await request.downloadPost({ url: '/wms/container-record-main/export-excel-scrap-senior', data })
} else {
return await request.download({ url: `/wms/container-record-main/export-excel-scrap`, params })
}
}
// 导出器具管理发运记录主 Excel
export const exportContainerDeliverRecordMain = async (params) => {
params.businessType = 'DeliverContainerManage'
if (params.isSearch) {
delete params.isSearch
const data = { ...params }
return await request.downloadPost({ url: '/wms/container-record-main/export-excel-senior', data })
} else {
return await request.download({ url: `/wms/container-record-main/export-excel`, params })
}
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/container-record-main/get-import-template' })

5
src/api/wms/countJobMain/index.ts

@ -86,7 +86,10 @@ export const exportCountJobMain = async (params) => {
export const importTemplate = () => {
return request.download({ url: '/wms/count-job-main/get-import-template' })
}
// 下载用户导入模板
export const lineTypeImportTemplate = () => {
return request.download({ url: '/wms/count-job-main/get-lineTypeImport-template' })
}
// 关闭盘点任务主
export const closeCountJobMain = (id: number) => {
return request.put({ url: '/wms/count-job-main/close?id=' + id })

14
src/api/wms/demandforecastingMain/index.ts

@ -149,6 +149,14 @@ export const queryUserPlanerList = async () => {
export const querySupplierList = async (data) => {
return await request.post({ url: `/wms/demandforecasting-main/querySupplierList`,data })
}
// 供应商代码
export const queryQadSupplierList = async (data) => {
return await request.post({ url: `/wms/demandforecasting-main/queryQadSupplierList`,data })
}
// 物料代码
export const queryQadItemCodeList = async (data) => {
return await request.post({ url: `/wms/demandforecasting-main/queryQadItemCodeList`,data })
}
// 是否已读接口
@ -156,4 +164,10 @@ export const updateIsRead = async (data) => {
return await request.post({ url: `/wms/demandforecasting-main/updateIsRead`,data })
}
//更新要货预测
export const updateDemandforecaste = async (data) => {
return await request.post({ url: `/wms/demandforecasting-detail/queryQADDemandforecasting`,data })
}

5
src/api/wms/issueJobMain/index.ts

@ -107,4 +107,7 @@ export const executeIssueMain = async (data) => {
return await request.put({ url: `/wms/issue-job-main/execute`, data})
}
// 更新任务配置
export const updateIssueJobConfig = () => {
return request.put({ url: '/wms/issue-job-main/updateIssueJobConfig'})
}

54
src/api/wms/notPackageTransactionBalance/index.ts

@ -0,0 +1,54 @@
import request from '@/config/axios'
export interface NotPackageTransactionBalanceVO {
id: number
itemCode: string
locationCode: string
batch: string
cnt: string
sumQtyTransaction: number
sumQtyBalance: number
differenceQty: number
remark: string
}
// 查询对账_无包装事务余额对数结果列表
export const getNotPackageTransactionBalancePage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/not-package-transaction-balance/senior', data })
} else {
return await request.get({ url: `/wms/not-package-transaction-balance/page`, params })
}
}
// 查询对账_无包装事务余额对数结果详情
export const getNotPackageTransactionBalance = async (id: number) => {
return await request.get({ url: `/wms/not-package-transaction-balance/get?id=` + id })
}
// 新增对账_无包装事务余额对数结果
export const createNotPackageTransactionBalance = async (data: NotPackageTransactionBalanceVO) => {
return await request.post({ url: `/wms/not-package-transaction-balance/create`, data })
}
// 修改对账_无包装事务余额对数结果
export const updateNotPackageTransactionBalance = async (data: NotPackageTransactionBalanceVO) => {
return await request.put({ url: `/wms/not-package-transaction-balance/update`, data })
}
// 删除对账_无包装事务余额对数结果
export const deleteNotPackageTransactionBalance = async (id: number) => {
return await request.delete({ url: `/wms/not-package-transaction-balance/delete?id=` + id })
}
// 导出对账_无包装事务余额对数结果 Excel
export const exportNotPackageTransactionBalance = async (params) => {
return await request.download({ url: `/wms/not-package-transaction-balance/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/not-package-transaction-balance/get-import-template' })
}

5
src/api/wms/productionreceiptJobMain/index.ts

@ -106,3 +106,8 @@ export const closeIssueMain = async (id) => {
export const executeIssueMain = async (data) => {
return await request.put({ url: `/wms/productionreceipt-job-main/execute`, data})
}
// 更新任务配置
export const updateProductionreceiptJobConfig = () => {
return request.put({ url: '/wms/productionreceipt-job-main/updateProductionreceiptJobConfig'})
}

10
src/api/wms/productionreturnJobMain/index.ts

@ -126,3 +126,13 @@ export const closeProductionreturnMain = async (id) => {
export const executeProductionreturnMain = async (data) => {
return await request.put({ url: `/wms/productionreturn-job-main/execute`, data})
}
// 更新任务配置
export const updateProductionreturnJobConfig = () => {
return request.put({ url: '/wms/productionreturn-job-main/updateProductionreturnJobConfig'})
}
// 更新任务配置-隔离收货任务
export const updateProductionreturnJobHoldConfig = () => {
return request.put({ url: '/wms/productionreturn-job-main/updateProductionreturnJobHoldConfig'})
}

10
src/api/wms/productputawayJobMain/index.ts

@ -130,3 +130,13 @@ export const closeProductputawayMain = async (id) => {
export const executeProductputawayMain = async (data) => {
return await request.put({ url: `/wms/productputaway-job-main/execute`, data})
}
// 更新任务配置
export const updateProductputawayJobConfig = () => {
return request.put({ url: '/wms/productputaway-job-main/updateProductputawayJobConfig'})
}
// 更新任务配置装配
export const updateProductputawayJobAssembleConfig = () => {
return request.put({ url: '/wms/productputaway-job-main/updateProductputawayJobAssembleConfig'})
}

15
src/api/wms/productreceiptJobMain/index.ts

@ -163,3 +163,18 @@ export const closeProductreceiptMain = async (id) => {
export const executeProductreceiptMain = async (data) => {
return await request.put({ url: `/wms/productreceipt-job-main/execute`, data})
}
// 更新任务配置
export const updateProductreceiptJobConfig = () => {
return request.put({ url: '/wms/productreceipt-job-main/updateProductreceiptJobConfig'})
}
// 更新任务配置
export const updateProductreceiptJobAssembleConfig = () => {
return request.put({ url: '/wms/productreceipt-job-main/updateProductreceiptJobAssembleConfig'})
}
// 更新任务配置
export const updateProductreceiptScrapJobConfig = () => {
return request.put({ url: '/wms/productreceipt-job-main/updateProductreceiptScrapJobConfig'})
}

5
src/api/wms/productredressJobMain/index.ts

@ -102,3 +102,8 @@ export const exportProductredressJobMain = async (params) => {
export const importTemplate = () => {
return request.download({ url: '/wms/productredress-job-main/get-import-template' })
}
// 更新任务配置
export const updateProductredressJobConfig = () => {
return request.put({ url: '/wms/productredress-job-main/updateProductredressJobConfig'})
}

6
src/api/wms/productscrapRequestMain/index.ts

@ -103,6 +103,12 @@ export const updateProductscrapDetailRequestBom = async (id, data) => {
return await request.post({ url: `/wms/productscrap-request-main/updateBom?id=`+id, data })
}
// 修改制品报废BOM数据
export const updateChangeBomRequest = async (data) => {
return await request.post({ url: `/wms/productscrap-request-main/updateBomQty`, data })
}
// 编辑
export const editReturnNew = async (params) => {
return await request.get({ url: `/wms/productscrap-request-main/editReturnNew`, params })

20
src/api/wms/purchaseDetail/index.ts

@ -47,8 +47,8 @@ export const getPurchaseDetailPage = async (params) => {
// 查询采购订单子列表
export const getPurchaseDetailPageWMS = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
delete data.isSearch
return await request.post({ url: '/wms/purchase-detail/seniorWMS', data })
} else {
return await request.get({ url: `/wms/purchase-detail/pageWMS`, params })
@ -56,11 +56,23 @@ export const getPurchaseDetailPageWMS = async (params) => {
}
// 查询采购订单子列表
export const getPurchaseDetailPageWMSPurchasereceiptRequest = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/purchase-detail/purchasereceiptRequestSeniorWMS', data })
} else {
return await request.get({ url: `/wms/purchase-detail/purchasereceiptRequestPageWMS`, params })
}
}
// 查询M类型的采购订单子列表
export const getPurchaseDetailPageWMSMOrderType = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
delete data.isSearch
return await request.post({ url: '/wms/purchase-detail/seniorWMS-MOrderType', data })
} else {
return await request.get({ url: `/wms/purchase-detail/pageWMS-MOrderType`, params })
@ -69,8 +81,8 @@ export const getPurchaseDetailPageWMSMOrderType = async (params) => {
export const getPurchaseDetailPageWMSTypeM = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
delete data.isSearch
return await request.post({ url: '/wms/purchase-detail/seniorM', data })
} else {
return await request.get({ url: `/wms/purchase-detail/pageM`, params })
@ -80,8 +92,8 @@ export const getPurchaseDetailPageWMSTypeM = async (params) => {
// 查询采购订单子列表
export const getPurchaseDetailPageWMSSpare = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
delete data.isSearch
return await request.post({ url: '/wms/purchase-detail/seniorWMS-Spare', data })
} else {
return await request.get({ url: `/wms/purchase-detail/pageWMS-Spare`, params })

10
src/api/wms/purchasereceiptJobMain/index.ts

@ -139,3 +139,13 @@ export const acceptPurchasereceiptJobMain = (id: number) => {
export const refusalPurchasereceiptJobMain = (data) => {
return request.post({ url: '/wms/purchasereceipt-job-main/refusal',data})
}
// 更新任务配置
export const updatePurchasereceiptJobConfig = () => {
return request.put({ url: '/wms/purchasereceipt-job-main/updatePurchasereceiptJobConfig'})
}
// 维修备件更新任务配置
export const updatePurchasereceiptJobConfigSpare = () => {
return request.put({ url: '/wms/purchasereceipt-job-main/updatePurchasereceiptJobConfigSpare'})
}

5
src/api/wms/purchasereturnJobMain/index.ts

@ -106,3 +106,8 @@ export const acceptPurchasereturnJobMain = (id: number) => {
export const abandonPurchasereturnJobMain = (id: number) => {
return request.put({ url: '/wms/purchasereturn-job-main/abandon?id=' + id })
}
// 更新任务配置
export const updatePurchasereturnJobConfig = () => {
return request.put({ url: '/wms/purchasereturn-job-main/updatePurchasereturnJobConfig'})
}

5
src/api/wms/putawayJobMain/index.ts

@ -101,3 +101,8 @@ export const acceptPutawayJobMain = (id: number) => {
export const abandonPutawayJobMain = (id: number) => {
return request.put({ url: '/wms/putaway-job-main/abandon?id=' + id })
}
// 更新任务配置
export const updatePutawayJobMConfig = () => {
return request.put({ url: '/wms/putaway-job-main/updatePutawayJobConfig'})
}

5
src/api/wms/repleinshJobMain/index.ts

@ -104,3 +104,8 @@ export const closeRepleinshMain = async (id) => {
export const executeRepleinshMain = async (data) => {
return await request.put({ url: `/wms/repleinsh-job-main/execute`, data})
}
// 更新任务配置
export const updateRepleinshJobConfig = () => {
return request.put({ url: '/wms/repleinsh-job-main/updateRepleinshJobConfig'})
}

5
src/api/wms/rule/index.ts

@ -56,3 +56,8 @@ export const exportRule = async (params) => {
export const importTemplate = () => {
return request.download({ url: '/wms/rule/get-import-template' })
}
// 查询规则详情
export const getMaxPriority = async (code: number) => {
return await request.get({ url: `/wms/rule/getMaxPriority?code=` + code })
}

59
src/api/wms/spareitemLocation/index.ts

@ -0,0 +1,59 @@
import request from '@/config/axios'
export interface SpareitemLocationVO {
itemCode: string
name: string
desc1: string
desc2: string
locationCode: string
locationName: string
available: string
remark: string
}
// 查询维修备件默认库位列表
export const getSpareitemLocationPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/spareitem-location/senior', data })
} else {
return await request.get({ url: `/wms/spareitem-location/page`, params })
}
}
// 查询维修备件默认库位详情
export const getSpareitemLocation = async (id: number) => {
return await request.get({ url: `/wms/spareitem-location/get?id=` + id })
}
// 新增维修备件默认库位
export const createSpareitemLocation = async (data: SpareitemLocationVO) => {
return await request.post({ url: `/wms/spareitem-location/create`, data })
}
// 修改维修备件默认库位
export const updateSpareitemLocation = async (data: SpareitemLocationVO) => {
return await request.put({ url: `/wms/spareitem-location/update`, data })
}
// 删除维修备件默认库位
export const deleteSpareitemLocation = async (id: number) => {
return await request.delete({ url: `/wms/spareitem-location/delete?id=` + id })
}
// 导出维修备件默认库位 Excel
export const exportSpareitemLocation = async (params) => {
return await request.download({ url: `/wms/spareitem-location/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/spareitem-location/get-import-template' })
}
// 自动推荐库位
export const queryItemLocation = async (data) => {
return await request.post({ url: `/wms/spareitem-location/queryItemLocation`, data })
}

56
src/api/wms/supplierApbalanceCalendar/index.ts

@ -0,0 +1,56 @@
import request from '@/config/axios'
export interface SupplierApbalanceCalendarVO {
id: number
beginMonth: string
beginDay: string
endMonth: string
endDay: string
descriiption: string
available: string
remark: string
extraProperties: string
concurrencyStamp: number
siteId: string
}
// 查询询证函日历列表
export const getSupplierApbalanceCalendarPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/supplier-apbalance-calendar/senior', data })
} else {
return await request.get({ url: `/wms/supplier-apbalance-calendar/page`, params })
}
}
// 查询询证函日历详情
export const getSupplierApbalanceCalendar = async (id: number) => {
return await request.get({ url: `/wms/supplier-apbalance-calendar/get?id=` + id })
}
// 新增询证函日历
export const createSupplierApbalanceCalendar = async (data: SupplierApbalanceCalendarVO) => {
return await request.post({ url: `/wms/supplier-apbalance-calendar/create`, data })
}
// 修改询证函日历
export const updateSupplierApbalanceCalendar = async (data: SupplierApbalanceCalendarVO) => {
return await request.put({ url: `/wms/supplier-apbalance-calendar/update`, data })
}
// 删除询证函日历
export const deleteSupplierApbalanceCalendar = async (id: number) => {
return await request.delete({ url: `/wms/supplier-apbalance-calendar/delete?id=` + id })
}
// 导出询证函日历 Excel
export const exportSupplierApbalanceCalendar = async (params) => {
return await request.download({ url: `/wms/supplier-apbalance-calendar/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/supplier-apbalance-calendar/get-import-template' })
}

12
src/api/wms/supplierApbalanceMain/index.ts

@ -70,3 +70,15 @@ export const exportSupplierApbalanceMain = async (params) => {
export const importTemplate = () => {
return request.download({ url: '/wms/supplier-apbalance-main/get-import-template' })
}
// 查询年月日
export const getMonthDay = async () => {
return await request.get({ url: `/wms/supplier-apbalance-calendar/getMonthDay`})
}
// 查询供应商余额明细主列表
export const confirmationPage = async (params) => {
return await request.get({ url: `/wms/supplier-apbalance-main/confirmationPage`, params })
}

7
src/api/wms/supplierdeliverRequestMain/index.ts

@ -130,3 +130,10 @@ export const deleteOldLabels = async (id) => {
export const querySupplierResume = (asnNumber:string) => {
return request.get({ url: `/wms/supplierdeliver-request-main/querySupplierResume?asnNumber=` + asnNumber })
}
// 校验是否上传成功
export const checkUploadFileData = async (data) => {
return await request.post({ url: `/infra/file/uploadFileData`,data})
}

24
src/api/wms/supplierinvoiceInvoiced/index.ts

@ -45,6 +45,12 @@ export const getSupplierinvoiceInvoicedPageDiscrete = async (params) => {
}
}
// 查询待开票被删除列表--日程/离散
export const getSupplierinvoiceInvoicedPageScheduleDeleted = async (params) => {
return await request.get({ url: `/wms/supplierinvoice-invoiced/deletedPage`, params })
}
// 查询待开票详情
export const getSupplierinvoiceInvoiced = async (id: number) => {
@ -68,14 +74,26 @@ export const deleteSupplierinvoiceInvoiced = async (id: number) => {
// 导出待开票 Excel
export const exportSupplierinvoiceInvoicedSchedule = async (params) => {
if (params.isSearch) {
const data = {...params}
return await request.downloadPost({ url: `/wms/supplierinvoice-invoiced/export-excel-schedule-senior`, data })
}else{
return await request.download({ url: `/wms/supplierinvoice-invoiced/export-excel-schedule`, params })
}
}
// 导出待开票 Excel
export const exportSupplierinvoiceInvoicedDiscrete = async (params) => {
if (params.isSearch) {
const data = {...params}
return await request.downloadPost({ url: `/wms/supplierinvoice-invoiced/export-excel-discrete-senior`, data })
}else{
return await request.download({ url: `/wms/supplierinvoice-invoiced/export-excel-discrete`, params })
}
}
// 下载用户导入模板
export const importTemplate = () => {
@ -91,3 +109,9 @@ export const agreeSupplierinvoiceInvoiced = async (id: number) => {
export const refuseSupplierinvoiceInvoiced = async (id: number) => {
return await request.post({ url: `/wms/supplierinvoice-invoiced/refuse?id=` + id })
}
// 恢复被删除的待开票
export const receverySupplierinvoiceInvoiced = async (id: number) => {
return await request.post({ url: `/wms/supplierinvoice-invoiced/recevery?id=` + id })
}

13
src/api/wms/transaction/index.ts

@ -60,11 +60,22 @@ export const deleteTransaction = async (id: number) => {
return await request.delete({ url: `/wms/transaction/delete?id=` + id })
}
// 导出库存事务 Excel
export const checkExportTransaction = async (params) => {
if (params.isSearch) {
const data = {...params}
delete data.isSearch
return await request.post({ url: '/wms/transaction/export-excel-senior-checkCnt', data })
} else {
return await request.get({ url: `/wms/transaction/export-excel-checkCnt`, params })
}
}
// 导出库存事务 Excel
export const exportTransaction = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
delete data.isSearch
return await request.downloadPost({ url: '/wms/transaction/export-excel-senior', data })
} else {
return await request.download({ url: `/wms/transaction/export-excel`, params })

55
src/api/wms/transactionBalancePackage/index.ts

@ -0,0 +1,55 @@
import request from '@/config/axios'
export interface TransactionBalancePackageVO {
id: number
packingNumber: string
itemCode: string
batch: string
locationCode: string
inventoryStatusTransaction: string
inventoryStatusBalance: string
qtyTransaction: number
qtyBalance: number
qtyDiff: number
}
// 查询对账_包装号的事务汇总与余额的差异列表
export const getTransactionBalancePackagePage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/transaction-balance-package/senior', data })
} else {
return await request.get({ url: `/wms/transaction-balance-package/page`, params })
}
}
// 查询对账_包装号的事务汇总与余额的差异详情
export const getTransactionBalancePackage = async (id: number) => {
return await request.get({ url: `/wms/transaction-balance-package/get?id=` + id })
}
// 新增对账_包装号的事务汇总与余额的差异
export const createTransactionBalancePackage = async (data: TransactionBalancePackageVO) => {
return await request.post({ url: `/wms/transaction-balance-package/create`, data })
}
// 修改对账_包装号的事务汇总与余额的差异
export const updateTransactionBalancePackage = async (data: TransactionBalancePackageVO) => {
return await request.put({ url: `/wms/transaction-balance-package/update`, data })
}
// 删除对账_包装号的事务汇总与余额的差异
export const deleteTransactionBalancePackage = async (id: number) => {
return await request.delete({ url: `/wms/transaction-balance-package/delete?id=` + id })
}
// 导出对账_包装号的事务汇总与余额的差异 Excel
export const exportTransactionBalancePackage = async (params) => {
return await request.download({ url: `/wms/transaction-balance-package/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/transaction-balance-package/get-import-template' })
}

15
src/components/Annex/src/Annex.vue

@ -3,7 +3,7 @@
<div class="annex">
<div class="title flex items-center">
<!-- <div class="title-txt">附件</div> -->
<UploadFile :isShowFile="false" :isShowTip="false" :fileType="fileType" :fileSize="fileSize" :title="t('ts.添加附件')" :upData="upData" :limit="limit"
<UploadFile :isShowFile="false" :isShowTip="false" :fileType="fileType" :fileSize="fileSize" :title="t('ts.添加附件')" :upData="upData" :limit="limit" :updateUrl="updateUrl" :checkUploadUrl="checkUploadUrl"
@update:modelValue="handleAnnexSuccess" v-if="showAddBtn"/>
<!-- HL-5838 5条限制影响了供应商发货申请上传质检报告这个限制没找到认领的需求所以放开 -->
<!-- @update:modelValue="handleAnnexSuccess" v-if="showAddBtn&&annexData.annexList.length<5"/> -->
@ -36,6 +36,9 @@ import UploadFile from '@/components/UploadFile/src/UploadFile.vue'
import { formatDate } from '@/utils/formatTime'
import * as FileApi from '@/api/wms/file'
import { getBaseUrl } from '@/utils/systemParam'
import { getUploadUrl } from '@/utils/systemParam'
import { func } from 'vue-types'
const message = useMessage() //
const { t } = useI18n() //
defineComponent({
@ -83,6 +86,16 @@ const props = defineProps({
type: Boolean,
default: true
},
updateUrl:{
type: String,
required: false,
default: getUploadUrl()
},
checkUploadUrl:{
type: Function,
required: false,
default: null
}
})
// emit
const emit = defineEmits(['handleAnnexSuccess', 'deleteAnnexSuccess','previewAnnexHandle'])

4
src/components/BasicForm/src/BasicForm.vue

@ -281,7 +281,7 @@ const props = defineProps({
},
//
updateTypeEdiltSubList: {
type: String,
type: Boolean,
required: false,
default: false
},
@ -808,7 +808,7 @@ const submitForm = async () => {
const validateForm = await tableFormRef.value.validateForm()
if (!validateForm && props.tableFormDataLength) {
if (props.tableData.length == 0) {
message.warning('请填写明细信息!')
message.warning(t(`ts.${'请填写明细信息!'}`))
formLoading.value = false
return
}

2
src/components/ConfigGlobal/src/ConfigGlobal.vue

@ -54,7 +54,7 @@ const currentLocale = computed(() => localeStore.currentLocale)
<template>
<ElConfigProvider
:locale="currentLocale.elLocale"
:message="{ max: 1 }"
:message="{ max: 2 }"
:namespace="variables.elNamespace"
:size="size"
>

7
src/components/Detail/src/Detail.vue

@ -124,6 +124,8 @@
:showPreview="annexItem.showPreview"
:showDownload = "annexItem.showDownload"
:hiddenDelete = "annexItem.hiddenDelete"
:checkUploadUrl="annexItem.checkUploadUrl"
:updateUrl="annexItem.updateUrl"
@handleAnnexSuccess="updateAnnexTableHandle"
@deleteAnnexSuccess="updateAnnexTableHandle"
:upData="{...remarksData.data,tableName:annexItem.tableName}"
@ -220,6 +222,7 @@ import TableHead from '@/components/TableHead/src/TableHead.vue'
import DetailTable from '@/components/DetailTable/src/DetailTable.vue'
import { SearchTable } from '@/components/SearchTable'
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
import { getUploadUrl } from '@/utils/systemParam'
defineOptions({ name: 'Detail' })
@ -633,11 +636,15 @@ const getAnnexFileList = async (row) => {
fileType:item.fileType||['apk','doc', 'xls', 'ppt', 'txt', 'pdf','png', 'jpg', 'jpeg'],
limit:item.limit||10,
fileSize:item.fileSize||5,
checkUploadUrl:item.checkUploadUrl || null,
updateUrl:item.updateUrl || getUploadUrl(),
showPreview:item.showPreview||false, //
showDownload:item.showDownload||false, //
hiddenDelete:item.hiddenDelete || false, //
hiddenUpload:hiddenUpload || item.hiddenUpload || false, //
})
console.log('annexTableData',annexTableData.value)
}
if(subDetailTableData){
const { tableObject:subTableObject, tableMethods:subTableMethods } = useTable({

2
src/components/Detail/src/DetailLedger.vue

@ -1162,7 +1162,7 @@ const dialogTitle = ref()
const dialogAllSchemasRef = ref()
const dialogTableObjectRef = ref()
const dialogTableMethodsRef = ref()
const dialogUploadTitle = ref('文件上传')
const dialogUploadTitle = ref(t('ts.文件上传'))
const dialogUploadVisible = ref(false)
const dialogUploadNumber = ref()
const dialogUploadBusiCode = ref()

2
src/components/DictTag/src/DictTag.vue

@ -65,7 +65,7 @@ export default defineComponent({
return (
dictDataList.map(item => {
return <ElTag
style={item?.cssClass=='none'?'background-color: transparent;':item?.cssClass ? 'color: #fff' : ''}
style={item?.cssClass=='none'?'background-color: transparent;':item?.cssClass=='purple_type'?'background-color: #f7ebf9;border-color: #ecd5ec;color: #e348e3;':item?.cssClass ? 'color: #fff' : ''}
type={item?.colorType}
color={
item?.cssClass && isHexColor(item?.cssClass)

1
src/components/Form/src/Form.vue

@ -197,6 +197,7 @@ export default defineComponent({
emit('onChange', field, cur)
}
const onSubmit = (event) => {
event.preventDefault();
emit('onSubmit', event)
}

37
src/components/ImportForm/src/ImportDetailForm.vue

@ -1,6 +1,6 @@
<!-- 导入组件 -->
<template>
<Dialog v-model="dialogVisible" :title="t('ts.导入')" width="600" :close-on-click-modal="false">
<Dialog v-model="dialogVisible" :title="t(`ts.${dialogTitle}`).replace('ts.','')" width="600" :close-on-click-modal="false">
<el-upload
ref="uploadRef"
v-model:file-list="fileList"
@ -76,7 +76,7 @@
<div
class="label h-32px mr-26px color-#acaeb3 font-size-14px w-100px text-right"
style="line-height: 32px"
>是否外部资源</div
>{{t('ts.是否外部资源')}}</div
>
<div class="">
<div class="switch">
@ -198,7 +198,25 @@ const props = defineProps({
required: false,
default: false
},
dialogTitle:{
type: String,
required: false,
default: ()=>{
return '导入'
}
}
})
watch(
() => props.url,
() => {
importUrl.value = getBaseUrl() + import.meta.env.VITE_API_URL + props.url
},
{
deep: true
}
)
const importTemplateData = ref(props.importTemplateData)
const accept = ref(props.accept)
const mode = ref(props.mode) //.1
@ -208,7 +226,7 @@ const coverIsDisable = ref(props.coverIsDisable) //覆盖是否禁用,默认值
const updatePart = ref(props.updatePart) //
const outFile = ref(props.outFile) //
const importUrl = getBaseUrl() + import.meta.env.VITE_API_URL + props.url
const importUrl = ref(getBaseUrl() + import.meta.env.VITE_API_URL + props.url)
/** 打开弹窗 */
const open = () => {
@ -220,7 +238,7 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
/** 提交表单 */
const submitForm = async () => {
if (fileList.value.length == 0) {
message.error('请上传文件')
message.error(t('ts.请上传文件'))
return
}
file.value = fileList.value[0].name
@ -241,12 +259,12 @@ const submitFormSuccess = (response: any) => {
if (response) {
if (response.code == 500) {
uploadRef.value!.clearFiles()
message.error('导入失败')
message.error(t('ts.导入失败'))
formLoading.value = false
return
} else if (response.code == 0) {
if (response.data.errorCount > 0) {
message.confirm('文件中有部分数据导入失败,是否下载失败数据?').then(() => {
message.confirm(t(`ts.${'文件中有部分数据导入失败,是否下载失败数据?'}`).replace('ts.','')).then(() => {
// download.excel(file, 'file_' + new Date().getTime())
// url
// const downloadElement = document.createElement('a')
@ -261,7 +279,7 @@ const submitFormSuccess = (response: any) => {
// downloadElement.click()
})
} else {
message.success('导入成功')
message.success(t('ts.导入成功'))
}
}else if(response.data == null){
message.error(response.msg)
@ -300,7 +318,7 @@ const submitFormSuccess = (response: any) => {
}
/** 上传错误提示 */
const submitFormError = (): void => {
message.error('上传失败,请您重新上传!')
message.error(t(`ts.${'上传失败,请您重新上传!'}`))
formLoading.value = false
}
@ -314,7 +332,8 @@ const resetForm = () => {
/** 文件数超出提示 */
const handleExceed = (): void => {
message.error('最多只能上传一个文件!')
message.error(t(`ts.${'最多只能上传一个文件!'}`))
}
/** 下载模板操作 */

14
src/components/ImportForm/src/ImportForm.vue

@ -89,7 +89,7 @@
<div
class="label h-32px mr-26px color-#acaeb3 font-size-14px w-100px text-right"
style="line-height: 32px"
>是否外部资源</div
>{{t('ts.是否外部资源')}}</div
>
<div class="">
<div class="switch">
@ -253,7 +253,7 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
/** 提交表单 */
const submitForm = async () => {
if (fileList.value.length == 0) {
message.error('请上传文件')
message.error(t('ts.请上传文件'))
return
}
file.value = fileList.value[0].name
@ -274,12 +274,12 @@ const submitFormSuccess = (response: any) => {
if (response) {
if (response.code == 500) {
uploadRef.value!.clearFiles()
message.error('导入失败')
message.error(t('ts.导入失败'))
formLoading.value = false
return
} else if (response.code == 0) {
if (response.data.errorCount > 0) {
message.confirm('文件中有部分数据导入失败,是否下载失败数据?').then(() => {
message.confirm(t(`ts.${'文件中有部分数据导入失败,是否下载失败数据?'}`).replace('ts.','')).then(() => {
// download.excel(file, 'file_' + new Date().getTime())
// url
// const downloadElement = document.createElement('a')
@ -294,7 +294,7 @@ const submitFormSuccess = (response: any) => {
// downloadElement.click()
})
} else {
message.success('导入成功')
message.success(t('ts.导入成功'))
}
}else if(response.data == null){
message.error(response.msg)
@ -333,7 +333,7 @@ const submitFormSuccess = (response: any) => {
}
/** 上传错误提示 */
const submitFormError = (): void => {
message.error('上传失败,请您重新上传!')
message.error(t(`ts.${'上传失败,请您重新上传!'}`))
formLoading.value = false
}
@ -347,7 +347,7 @@ const resetForm = () => {
/** 文件数超出提示 */
const handleExceed = (): void => {
message.error('最多只能上传一个文件!')
message.error(t(`ts.${'最多只能上传一个文件!'}`))
}
/** 下载模板操作 */

6
src/components/LabelForm/src/LabelForm.vue

@ -68,7 +68,7 @@
1
)
"
>移出</el-button
>{{ t('ts.移出') }}</el-button
>
</template>
</el-table-column>
@ -97,7 +97,7 @@
type="warning"
link
@click="removeT(scope.row, scope.$index, scope1.row, scope1.$index)"
>移出</el-button
>{{ t('ts.移出') }}</el-button
>
</template>
</el-table-column>
@ -143,7 +143,7 @@
@click="
removeX(scope.row, scope.$index, item, index, scope1.row, scope1.$index)
"
>移出</el-button
>{{ t('ts.移出') }}</el-button
>
</template>
</el-table-column>

11
src/components/Search/src/Search.vue

@ -273,6 +273,14 @@ const reset = async () => {
emit('reset', model)
}
const getSearchFormData = async () => {
await unref(elFormRef)?.validate()
const { getFormData } = methods
const model = await getFormData()
console.log(model)
return model
}
const bottonButtonStyle = computed(() => {
return {
textAlign: props.buttomPosition as unknown as 'left' | 'center' | 'right'
@ -293,7 +301,7 @@ const onBlur = async (field, e) => {
}
const Search = ref()
onMounted(() => {})
defineExpose({setFormValues,search}) // open
defineExpose({setFormValues,search,getSearchFormData}) // open
</script>
@ -319,6 +327,7 @@ defineExpose({setFormValues,search}) // 提供 open 方法,用于打开弹窗
>
<template #action>
<div v-if="layout === 'inline'">
<slot name="actionMoreTop"></slot>
<!-- update by 芋艿去除搜索的 type="primary"颜色变淡一点 -->
<ElButton type="info" plain v-if="showSearch" @click="search">
<Icon class="mr-5px" icon="ep:search" />

6
src/components/SearchTable/src/SearchTable.vue

@ -39,8 +39,8 @@
<template #footer>
<div class="flex items-center">
<slot :name="'selectionsActions'+formFieldRef" :selections="searchTableRef?searchTableRef.selections:[]"></slot>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="searchDialogVisible = false"> </el-button>
<el-button @click="submitForm" type="primary" :disabled="formLoading">{{ t(`ts.${'确 定'}`) }}</el-button>
<el-button @click="searchDialogVisible = false">{{ t(`ts.${'取 消'}`) }}</el-button>
<slot name="actions"></slot>
</div>
@ -269,7 +269,7 @@ const submitForm = async () => {
//
} else {
if (selections.length == 0) {
message.warning('至少选择一条数据!')
message.warning(t(`ts.${'至少选择一条数据!'}`))
formLoading.value = false
return
}

4
src/components/SearchTableCount/src/SearchTableCount.vue

@ -70,7 +70,7 @@
<script setup lang="ts">
import * as defaultButtons from '@/utils/disposition/defaultButtons'
// const { t } = useI18n() //
const { t } = useI18n() //
const message = useMessage() //
const radioListType = ref(1)
@ -193,7 +193,7 @@ const submitForm = async () => {
//
} else {
if (selections.length == 0) {
message.warning('至少选择一条数据!')
message.warning(t(`ts.${'至少选择一条数据!'}`))
formLoading.value = false
return
}

4
src/components/SearchTableV2/src/SearchTableV2.vue

@ -38,7 +38,7 @@
<script setup lang="ts">
import * as defaultButtons from '@/utils/disposition/defaultButtons'
// const { t } = useI18n() //
const { t } = useI18n() //
const message = useMessage() //
const route = useRoute() //
@ -168,7 +168,7 @@ const submitForm = async () => {
//
}else{
if(selections.length == 0) {
message.warning('至少选择一条数据!')
message.warning(t(`ts.${'至少选择一条数据!'}`))
formLoading.value = false
return
}

2
src/components/Table/src/Table.vue

@ -423,7 +423,7 @@ export default defineComponent({
}}
</ElTable>
{unref(getProps).selectionTotal ? (
<div class="mt-15px float-left" style='height:32px;line-height:32px'>已选{selections.value.length}条数据</div>
<div class="mt-15px float-left" style='height:32px;line-height:32px'>{t('ts.已选')}{selections.value.length}{t('ts.条数据')}</div>
):undefined}
{unref(getProps).pagination ? (
// update by Pagination

6
src/components/TableForm/src/TableForm.vue

@ -97,7 +97,7 @@
:type="headerItem?.tableForm?.inputType"
:placeholder="
t(
`ts.${headerItem?.tableForm?.placeholder || '请输入' + headerItem.label}`
`ts.${headerItem?.tableForm?.placeholder || t('ts.请输入') + t(`ts.${headerItem.label}`).replace('ts.','')}`
).replace('ts.', '')
"
:disabled="disabledInput(headerItem, row)"
@ -148,8 +148,8 @@
style="width: 100%"
:key="headerItem.field + $index"
v-model="row[headerItem.field]"
:max="headerItem?.tableForm?.max"
:min="headerItem?.tableForm?.min"
:max="headerItem?.tableForm?.maxField?row[headerItem?.tableForm?.maxField]:headerItem?.tableForm?.max"
:min="headerItem?.tableForm?.minField?row[headerItem?.tableForm?.minField]:headerItem?.tableForm?.min"
:precision="headerItem?.tableForm?.precision"
:disabled="itemIsDisabled(headerItem, row)"
@change="

58
src/components/TableFormAdjustment/src/TableFormAdjustment.vue

@ -36,7 +36,7 @@
<div class="bottom" style="display: flex; flex-direction: row;">
<!-- - -->
<div style="margin-right:5px">
<el-button type="info" link>调整事项减项以负数列示</el-button>
<el-button type="info" link>{{t(`ts.${'调整事项(减项以负数列示):'}`)}}</el-button>
<el-table border class="top-table" :data="[...bottomLeftTableData,...bottomLeftSumTableData]">
<el-table-column
:label="headerItem.label"
@ -46,29 +46,29 @@
v-for="headerItem in bottomLeftHeader"
>
<template #default="scope">
<el-input :disabled="isDetail" v-if="!scope.row.isSum&&headerItem.type=='input'" v-model="scope.row[headerItem.field]" :placeholder="`请输入${headerItem.label}`"/>
<el-input-number :disabled="isDetail" v-else-if="!scope.row.disabled&&headerItem.type=='inputnumber'" v-model="scope.row[headerItem.field]" :placeholder="`请输入${headerItem.label}`"/>
<el-input :disabled="isDetail" v-if="!scope.row.isSum&&headerItem.type=='input'" v-model="scope.row[headerItem.field]" :placeholder="t('ts.请输入')+`${headerItem.label}`"/>
<el-input-number :disabled="isDetail" v-else-if="!scope.row.disabled&&headerItem.type=='inputnumber'" v-model="scope.row[headerItem.field]" :placeholder="`t('ts.请输入')+${headerItem.label}`"/>
<span v-else>{{ scope.row[headerItem.field] }}</span>
</template>
</el-table-column>
</el-table>
<el-form style="margin-top:20px;width:460px" :model="leftForm" :label-width="300" >
<el-form-item label="经办人">
<el-input :disabled="isDetail" v-model="leftForm.name" placeholder="请输入经办人"/>
<el-form-item :label="t('ts.经办人')">
<el-input :disabled="isDetail" v-model="leftForm.name" :placeholder="t('ts.请输入经办人')"/>
</el-form-item>
<el-form-item label="对账日期">
<el-form-item :label="t('ts.对账日期')">
<el-date-picker :disabled="isDetail" value-format="YYYY-MM-DD HH:mm:ss"
v-model="leftForm.date"
type="datetime"
placeholder="请选择对账日期"
:placeholder="t('ts.请选择对账日期')"
/>
</el-form-item>
</el-form>
</div>
<!-- - -->
<div>
<el-button type="info" link>调整事项减项以负数列示</el-button>
<el-button type="info" link>{{t(`ts.${'调整事项(减项以负数列示):'}`)}}</el-button>
<el-table border class="top-table" :data="[...bottomRightTableData,...bottomRightSumTableData]">
<el-table-column
:label="headerItem.label"
@ -78,22 +78,22 @@
v-for="headerItem in bottomRightHeader"
>
<template #default="scope">
<el-input :disabled="isDetail" v-if="!scope.row.isSum&&headerItem.type=='input'" v-model="scope.row[headerItem.field]" :placeholder="`请输入${headerItem.label}`"/>
<el-input-number :disabled="isDetail" v-else-if="!scope.row.disabled&&headerItem.type=='inputnumber'" v-model="scope.row[headerItem.field]" :placeholder="`请输入${headerItem.label}`"/>
<el-input :disabled="isDetail" v-if="!scope.row.isSum&&headerItem.type=='input'" v-model="scope.row[headerItem.field]" :placeholder="t('ts.请输入')+`${headerItem.label}`"/>
<el-input-number :disabled="isDetail" v-else-if="!scope.row.disabled&&headerItem.type=='inputnumber'" v-model="scope.row[headerItem.field]" :placeholder="t('ts.请输入')+`${headerItem.label}`"/>
<span v-else>{{ scope.row[headerItem.field] }}</span>
</template>
</el-table-column>
</el-table>
<el-form style="margin-top:20px;width:460px" :model="rightForm" :label-width="300" >
<el-form-item label="经办人">
<el-input :disabled="isDetail" v-model="rightForm.name" placeholder="请输入经办人"/>
<el-form-item :label="t('ts.经办人')">
<el-input :disabled="isDetail" v-model="rightForm.name" :placeholder="t('ts.请输入经办人')"/>
</el-form-item>
<el-form-item label="对账日期">
<el-form-item :label="t('ts.对账日期')">
<el-date-picker :disabled="isDetail" value-format="YYYY-MM-DD HH:mm:ss"
v-model="rightForm.date"
type="datetime"
placeholder="请选择对账日期"
:placeholder="t('ts.请选择对账日期')"
/>
</el-form-item>
</el-form>
@ -164,15 +164,15 @@ const setTopHeaderData = ()=>{
let myData = unref(props.rowData)
console.log('myData',myData)
topHeader.value = [{
label:`单位名称:${myData?.ttSupplierName}`,
label:`${t('ts.单位名称')}:${myData?.ttSupplierName}`,
field:'name1',
width:260
},{
label:'金额',
label: t('ts.金额'),
field:'price1',
width:100
},{
label:'备注',
label:t('ts.备注'),
field:'remark1',
width:100
}]
@ -181,10 +181,10 @@ const setTopHeaderData = ()=>{
let month = dayjs(myData?.ttGenerateTime).month()+1
let day = new Date(year,month,0).getDate()
topTableData.value = [{
name1:`截止${year}${month}${day}日账面金额如下`,
name1:`${t('ts.截止')}${year}${t('ts.年')}${month}${t('ts.月')}${day}${t('ts.日')}${t('ts.账面金额如下')}`,
price1:Number(myData?.ttAccountAp)+Number(myData?.ttAccountOthap),
remark1:myData?.remark,
name2:'截止年月日账面金额如下',
name2:t('ts.截止年月日账面金额如下'),
price2:Number(myData?.ttAccountAp)+Number(myData?.ttAccountOthap),
remark2:myData?.remark,
}]
@ -225,31 +225,31 @@ const setDetailData = (adjustmentData)=>{
//
const bottomLeftHeader = ref([{
label:'序号',
label:t('ts.序号'),
field:'index',
width:80
},{
label:'摘要',
label:t('ts.摘要'),
field:'ttAbstractLeft',
width:180,
type:'input'
},{
label:'金额',
label:t('ts.金额'),
field:'ttBalanceLeft',
width:200,
type:'inputnumber'
}])
const bottomRightHeader = ref([{
label:'序号',
label:t('ts.序号'),
field:'index',
width:80
},{
label:'摘要',
label:t('ts.摘要'),
field:'ttAbstractRight',
width:180,
type:'input'
},{
label:'金额',
label:t('ts.金额'),
field:'ttBalanceRight',
width:200,
type:'inputnumber'
@ -341,14 +341,14 @@ const bottomRightTableData = ref([{
//
const bottomLeftSumTableData = ref([{
index:'',
ttAbstractLeft:'调整事项合计',
ttAbstractLeft:t('ts.调整事项合计'),
ttBalanceLeft:'',
remark:'',
isSum:true,
disabled:true
},{
index:'',
ttAbstractLeft:'调整后余额',
ttAbstractLeft:t('ts.调整后余额'),
ttBalanceLeft:'',
remark:'',
isSum:true
@ -379,14 +379,14 @@ watch(
)
const bottomRightSumTableData = ref([{
index:'',
ttAbstractRight:'调整事项合计',
ttAbstractRight:t('ts.调整事项合计'),
ttBalanceRight:'',
remark:'',
isSum:true,
disabled:true
},{
index:'',
ttAbstractRight:'调整后余额',
ttAbstractRight:t('ts.调整后余额'),
ttBalanceRight:'',
remark:'',
isSum:true

44
src/components/UploadFile/src/UploadFile.vue

@ -20,7 +20,7 @@
:on-preview="handlePreview"
class="upload-file-uploader"
>
<el-button type="primary"><Icon icon="ep:upload-filled" />{{ title }}</el-button>
<el-button type="primary"><Icon icon="ep:upload-filled" />{{ t(`ts.${title}`).replace('ts.','') }}</el-button>
<template v-if="isShowTip" #tip>
<div style="font-size: 8px;margin-top: 10px;line-height: initial;">
{{t('ts.大小不超过')}} <b style="color: #f56c6c">{{ fileSize }}MB</b>
@ -65,7 +65,11 @@ const props = defineProps({
drag: propTypes.bool.def(false), //
isShowTip: propTypes.bool.def(true), //
isShowFile: propTypes.bool.def(true), //
checkUploadUrl:{ //
type: Function,
required: false,
default: null
}
})
// ========== ==========
const valueRef = ref(props.modelValue)
@ -108,8 +112,17 @@ const beforeUpload: UploadProps['beforeUpload'] = (file: UploadRawFile) => {
// uploadRef.value.data.path = uploadFile.name
// }
//
const handleFileSuccess: UploadProps['onSuccess'] = (res: any,uploadFile: any): void => {
const handleFileSuccess: UploadProps['onSuccess'] = async (res: any,uploadFile: any): Promise<void> => {
console.log('文件上传成功',res)
if(res&&res.code==0){
if(res.data&&res.data.code==200&&props.checkUploadUrl){
let checkRes = await props.checkUploadUrl(res.data.data)
console.log('checkRes',checkRes)
console.log('fileList.value',fileList.value)
console.log('uploadFile',uploadFile)
if(checkRes['fileExists']=="YES"){
ElMessage.closeAll()
message.success(t('ts.上传成功'))
const fileListNew = fileList.value
fileListNew.pop()
@ -123,6 +136,31 @@ const handleFileSuccess: UploadProps['onSuccess'] = (res: any,uploadFile: any):
emit('update:modelValue', listToString(fileList.value),res,uploadFile)
}
}else{
let findItem = fileList.value.find(item=>item.uid == uploadFile.uid)
if(findItem){
uploadRef?.value?.handleRemove(findItem)
}
ElMessage.closeAll()
message.error(checkRes['msg'])
}
}else{
ElMessage.closeAll()
message.success(t('ts.上传成功'))
const fileListNew = fileList.value
fileListNew.pop()
fileList.value = fileListNew
uploadList.value.push({ name: uploadFile.name, url: res.data })
// if (uploadList.value.length == uploadNumber.value) {
if(fileList.value.every(it => it.status == 'success')) {
fileList.value = fileList.value.concat(uploadList.value)
uploadList.value = []
uploadNumber.value = 0
emit('update:modelValue', listToString(fileList.value),res,uploadFile)
}
}
}else{
ElMessage.closeAll()
message.error(res.msg)
}
}

23
src/components/XButton/src/ButtonBaseMore.vue

@ -14,11 +14,11 @@
<span :style="{width:item.width+'px'||'auto'}" :class="[item.width?'ellipsis':'']">{{ item.label }}</span>
</el-button>
</div>
<el-dropdown placement="top-start" v-if="showList().length>3">
<el-button link class="more"> 更多 </el-button>
<el-dropdown placement="top-start" v-if="showList().length>showMoreLength">
<el-button link class="more" style="justify-self: flex-end;"> {{ t('ts.更多') }} </el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item v-for="(item, index) in getMoreList" :key="index+3" class="btn-div">
<el-dropdown-item v-for="(item, index) in getMoreList" :key="index+showMoreLength" class="btn-div">
<el-button
v-show="!item.hide"
:type="item.type"
@ -44,6 +44,7 @@ import { clearButtonBlurHandle } from '@/utils/index'
import rowDrop from '@/components/rowDrop/index.vue'
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
const { wsCache } = useCache()
const { t } = useI18n() //
const props = defineProps({
Butttondata: {
@ -60,6 +61,10 @@ const props = defineProps({
type: Object,
default: null
},
showMoreLength: {
type: Number,
default: 3
}
})
const showList = ()=>{
const all_permission = '*:*:*'
@ -80,13 +85,13 @@ const showList = ()=>{
}
const getMoreList = computed(()=>{
let list = showList()
return list.slice(3)
return list.slice(props.showMoreLength)
})
const getButtonList = computed(()=>{
let list = showList()
if(list.length>3){
if(list.length>props.showMoreLength){
console.log('list===',list)
return list.slice(0, 3)
return list.slice(0, props.showMoreLength)
}
return list
})
@ -131,5 +136,9 @@ const updataTableColumns = (val) => {
margin: 0px;
}
}
.more{
&.el-button:focus-visible {
outline: none;
}
}
</style>

2
src/config/axios/service.ts

@ -182,7 +182,7 @@ service.interceptors.response.use(
'<div>5 分钟搭建本地环境</div>'
})
return Promise.reject(new Error(msg))
} else if (code === 1002000008) {
} else if (code === 1002000016) {
if (msg === '无效的刷新令牌') {
// hard coding:忽略这个提示,直接登出
console.log(msg)

313
src/locales/en-US.ts

@ -755,6 +755,8 @@ export default {
:'Material Name',
1:'Material Description1',
2:'Material Description2',
1:'Description1',
2:'Description2',
:'Item Code',
:'Quality inspection details',
:'Details of your resume',
@ -871,6 +873,7 @@ export default {
:'Add',
:'Import',
:'Export',
:'UpdatingTaskSettings',
:'Refresh',
:'Filter',
:'As Page',
@ -1297,7 +1300,315 @@ export default {
:'Return of invoice',
: 'The invoice has been successfully forwarded',
: 'Last Updated By',
:'The range of invoices is'
:'The range of invoices is',
: 'Schedule to be invoiced data query',
: 'Discrete invoicing data query',
: 'Pending invoicing delete data query',
: 'Purchase discrete order view',
: 'Supplier reconciliation management',
: 'Confirmation date management',
: 'month',
: 'date',
: 'company code',
: 'month',
: 'day',
: 'year',
: 'monthly',
: 'Amount payable payable',
: 'Other amounts payable',
: 'Amount paid in advance',
: 'Provisional estimated amount',
: 'Provisional estimated balance',
: 'Amount of activity',
: 'Print start time',
: 'Print end time',
: 'Total number of bills',
: 'Actual invoice quantity',
: 'Invoice application number',
: 'Read state',
: 'Total spread',
: 'Invoice amount not taxed',
: 'Invoice tax amount',
: 'Invoice value and tax total',
: 'Untaxed residuals',
: 'The tax tail difference',
: 'Spread sum tail spread',
: 'Total difference in value and tax',
: 'Financial Voucher No.',
: 'Supplier maintenance tax',
: 'supplier maintains the untaxed amount',
: 'Total supplier maintenance price and tax',
: 'Date of return',
: 'Notes',
: 'Turn voucher number',
: 'Credential Description',
: 'recovery',
: 'Partial billing',
: 'The invoice is being transferred',
: 'confirmation',
: 'Please select Year',
: 'Please select month',
: 'Please select day',
: 'Details of callback letter',
: 'Resume',
: 'more',
: 'Request arrival time',
: 'Shipping contact name',
: 'Shipping contact number',
: 'Application for shipment quantity',
: 'Batch of shipment',
: 'Number in transit',
: 'Air transport',
: 'Sea freight',
: 'Land transport',
'请填写要货计划单号!':'Please fill in the requisition plan number!',
: 'Specification of case',
: 'Specifications and quantity of boxes',
: 'Gauge of support',
: 'Specification and quantity',
'重新生成标签后必须撕毁原标签,打印并粘贴新标签,如标签错误将拒绝收货!!': 'After regenerating the label, the original label must be torn, print and paste the new label, if the label is wrong, the goods will be rejected!!',
: 'Move out',
: 'Labels',
: 'Packing line number',
: 'Add box',
: 'Trustee number',
: 'Number of bins',
: 'Add a tray',
: 'Number of brackets',
: 'Quantity of consignment',
: 'Number of boxes',
: 'selected ',
: ' data',
: 'Yes or no read',
: 'Purchase Order Type',
PDA安装程序下载链接:'PDA installer download link',
ASN直接收货: 'The ASN receives the goods directly',
ASN外部收货: 'ASN external receipt',
: 'Receiving spare parts',
: 'Target location',
: 'Has the inspection application been sent',
: 'Whether the shelf application has been generated',
: 'Item Type',
: 'Detailed remarks',
: 'Accounts receivable',
: 'Paid in',
: 'Lack of harvest',
Q2通知单: 'Q2 Notice',
Q2通知单号: 'Q2 Advice No',
退: 'Reasons for return',
退: 'Description of reasons for return',
: 'Tax rebate',
: 'Total rebate value and tax',
: 'Unit price difference',
: 'Quantity of goods arriving',
: 'Rebate the amount of unpaid tax',
: 'Invoice number',
: 'Difference of tail',
: 'Purchase price approval time',
: 'The spread is explained',
: 'Financial Posting date',
: 'Factory location',
: 'Reference credential Description',
: 'Summary information',
: 'Total rebate included',
: 'Including rebate without tax',
: 'Including rebate tax',
: 'Material description',
: 'Amount of contract',
: 'Amount of purchase',
'至少选择一条数据!':'Select at least one piece of data!',
'请填写明细信息!':'Please fill in the details!',
: 'Please select buyer',
: 'Please select user information',
: 'Please select supplier information',
: 'Please select Purchase order',
: 'Whether excessive hair is allowed',
: 'Please select the library code',
: 'Please select the repository code',
: 'Select the library bit group code',
: 'Select Manage Precision',
'计划数量包含0':'The number of plans contains 0',
:'autocomplete',
:'Allow to modify the location of the library',
:'Allow to modify the location of the library',
:'Greater than the recommended number is allowed',
:'Less than the recommended amount is allowed',
:'Allows modification of inventory status',
:'Allows continuous scanning',
:'Allow partial completion',
:'Allow modification of batches',
:'Allow to modify the box code',
:'Position',
:'Take on',
:'Priority increment',
:'Time of acceptance',
:'Adult of completion',
:'Completion time',
:'Expiration time',
:'Request a deadline',
:'Adjustment account code',
:'Write off the journal',
:'Please enter the repository code',
:'Please enter the library code',
50:'Must not exceed 50 characters',
:'Please select if available',
:'Please enter the correct code',
QAD库位代码:'Please QAD library bit code',
:'Please enter the library bit group code',
:'Please enter the warehouse location group code. Please enter the stock priority',
:'Please enter your name',
:'Please complete the rule configuration',
:'Please fill in the lottery rules completely',
:'Have a price difference',
:'Please enter the phone number in the correct format',
11:'Must not exceed 11 characters',
:'Current stage',
:'Whether to deposit the order',
:'Please select an end date',
:'Please select a start date',
:'Please select month',
:'Period of synchronization',
:'The vendor code cannot be empty',
:'Please select Purchase order number',
:'Please select a delivery time',
:'Please select status',
:'Please enter the document number',
:'Please enter the service type',
:'Please enter the shipped quantity',
0:'The number of plans cannot be less than 0',
:'Please select the unit of measurement',
:'Please enter the number of plans',
'请填写订单号!':'Please fill in the order number!',
:'Please select the order line',
:'Package or not',
:'Expiration date reminder days',
ERP管理:'Whether to disengage from ERP management',
ABC类:'ABC class',
:'Product Category',
:'Kinds',
:'Grouping',
:'Color',
:'Configuration',
:'Alternative unit of measurement',
:'Available for purchase',
:'manufacturable',
:'Can outsource processing',
:'Recovery of parts',
:'Virtual part',
:'Method of settlement',
:'Project',
:'Grade of quality',
:'Days of validity',
:'Please enter the vendor code',
:'Please enter the material code',
:'Please select currency',
:'Please enter the price',
:'Please enter the order number',
:'Please enter the scheduled arrival time',
:'File upload',
:'Customer packaging',
:'Inside factory packing',
:'Supplier packaging',
'请填写仓库代码!':'Please fill in the repository code!',
:'To be inspected',
:'Raw material',
:'Semi-finished product',
:'Finished product',
线:'Line edge',
:'Quarantine',
:'Scrap',
:'Unqualified',
:'Client',
'请填写库区代码!':'Please fill in the library code!',
:'Warehouse information',
:'Reservoir area information',
:'Library location group information',
'文件中有部分数据导入失败,是否下载失败数据?':'Some data in the file failed to import. Do you want to download the failed data?',
:'Import failure',
:'Import successfully',
:'Please upload the file',
'上传失败,请您重新上传!':'Upload failed, please upload again!',
'最多只能上传一个文件!':'You can only upload one file at most!',
:'Please select the date before clicking confirmation',
'发票TC余额':'Invoice TC balance',
'发票BC余额':'Invoice BC balance',
:'Credential date',
:'Account type',
ID:'Parent ID',
:'Reset Password',
:'Please enter the old password',
:'Old password',
:'New password',
:'Please enter a new password',
:'Confirm new password',
:'Please enter a new password again',
'两次输入的密码不一致,请重新输入!':'The password you entered twice is different, please enter it again!',
:'Please enter the correct mobile phone number',
:'Please enter a type',
:'Please enter the default library bit code',
:'Please select whether it is a functional area',
:'Please select type',
:'Please enter the abbreviation',
128:'Maximum 128 characters',
:'Please enter the correct email format',
:'Please enter the correct fax',
:'User name',
:'Subtable version',
: 'Please select the version number',
: 'Please enter the untaxed amount',
: 'Please enter the tax amount',
: 'Choose whether to skip the task and generate the record directly',
: 'Select whether to execute automatically',
: 'Please select whether to pass automatically',
: 'Choose whether to submit automatically',
: 'Please enter the department',
: 'Please enter the gold tax voucher number',
: 'Please select the invoice date',
: 'Please enter the spread through the description',
100: 'Up to 100 characters',
'请填订单类型!':'Please fill in the order type!',
:'Please enter the contract price',
'请确认该申请中是否包含返利金额,请注意填写的返利金额应为负数':'Please confirm whether the rebate amount is included in the application. Please note that the rebate amount should be negative',
:'Important Notes',
'调整事项(减项以负数列示):':'Adjustment items (minus items are shown as negative numbers) :',
'请输入':'Please enter',
:'Person in charge',
:'Date of reconciliation',
:'Please select the reconciliation date',
: 'Total adjustment items',
:'Adjusted balance',
:'Abstract',
:'deadline',
:'the carrying amount is as follows',
:'The book amount at the end of the year is as follows',
:'Name of company',
:'Please enter operator',
:'Activity',
:'Deactivate',
A类:'Class A',
B类:'Class B',
C类:'Class C',
Z类:'Class Z',
:'Raw material',
:'Utensils',
:'Finished product',
:'Low value consumables',
:'Special maintenance spare parts',
:'Disposable packaging material',
:'Production consumables',
'漆&胶':'Paint&glue',
:'Self made spare parts',
:'General maintenance spare parts',
'周转箱(周转包装)':'Turnover box (turnover packing)',
'外购件':'Outside purchased parts',
'请填供应商信息!':'Please fill in the supplier information!',
:'Update demand forecast',
:'All updated',
:'Updated by vendor',
:'Update by material',
'填写物料号(填写多个物料号)':'Fill in the material number (fill in multiple material numbers)',
'填写供应商代码(填写多个供应商)':'Fill in the vendor code (fill in multiple vendors)',
},

315
src/locales/zh-CN.ts

@ -757,6 +757,8 @@ export default {
:'物料名称',
1:'物料描述1',
2:'物料描述2',
1:'描述1',
2:'描述2',
:'项目代码',
:'质检明细',
:'履历表明细',
@ -873,6 +875,7 @@ export default {
:'新增',
:'导入',
:'导出',
:'更新任务设置',
:'刷新',
:'筛选',
:'选择当页',
@ -1295,7 +1298,317 @@ export default {
:'发票回转',
: '发票回转成功',
:'最后更新人',
:'可开票数量范围是'
:'可开票数量范围是',
: '日程待开票数据查询',
: '离散待开票数据查询',
: '待开票删除数据查询',
: '采购离散订单查看',
: '供应商对账管理',
: '询证函日期管理',
: '月份',
: '日期',
: '公司代码',
: '月',
: '日',
: '年度',
: '月度',
: '应付挂账金额',
: '其他应付金额',
: '预付金额',
: '暂估金额',
: '暂估余额',
: '活动金额',
: '打印开始时间',
: '打印结束时间',
: '票据总数',
: '实际开票数量',
: '发票申请单号',
: '已读状态',
: '价差合计',
: '发票未税金额',
: '发票税额',
: '发票价税合计',
: '未税尾差',
: '税额尾差',
: '价差合计尾差',
: '价税合计尾差',
: '财务凭证号',
: '供应商维护税额',
: '供应商维护未税金额',
: '供应商维护价税合计',
: '回转日期',
: '说明',
: '回转凭证号',
: '凭证描述',
: '恢复',
: '部分开票',
: '发票回转中',
: '询证',
: '请选择年',
: '请选择月',
: '请选择日',
: '回调函明细',
: '履历表',
: '更多',
: '要求到货时间',
: '发货联系人姓名',
: '发货联系人电话',
: '申请发货数量',
: '发货批次',
: '在途数量',
: '空运',
: '海运',
: '陆运',
'请填写要货计划单号!':'请填写要货计划单号!',
: '箱规格',
: '箱规格数量',
: '托规格',
: '托规格数量',
'重新生成标签后必须撕毁原标签,打印并粘贴新标签,如标签错误将拒绝收货!!': '重新生成标签后必须撕毁原标签,打印并粘贴新标签,如标签错误将拒绝收货!!',
: '移出',
: '标签',
: '箱行号',
: '添加箱',
: '托行号',
: '箱个数',
: '添加托',
: '托个数',
: '托数量',
: '箱数量',
: '已选 ',
: ' 条数据',
: '是否已读',
: '采购订单类型',
PDA安装程序下载链接:'PDA安装程序下载链接',
ASN直接收货: 'ASN直接收货',
ASN外部收货: 'ASN外部收货',
: '备件收货',
: '目标库位',
: '是否已发送检验申请',
: '是否已生成上架申请',
: '物料类型',
: '明细备注',
: '应收',
: '实收',
: '缺收',
Q2通知单: 'Q2通知单',
Q2通知单号: 'Q2通知单号',
退: '退货原因',
退: '退货原因描述',
: '返利税额',
: '返利价税合计',
: '单价差额',
: '到货数量',
: '返利未税金额',
: '发票号码',
: '尾差',
: '采购价格审批时间',
: '价差通过说明',
: '财务过账日期',
: '工厂地点',
: '参考凭证描述',
: '汇总信息',
: '含返利合计',
: '含返利未税',
: '含返利税额',
: '物料描述',
: '合同金额',
: '采购金额',
'至少选择一条数据!':'至少选择一条数据!',
'请填写明细信息!':'请填写明细信息!',
: '请选择采购员',
: '请选择用户信息',
: '请选择供应商信息',
: '请选择采购订单',
: '是否允许超发',
: '请选择库区代码',
: '请选择仓库代码',
: '请选择库位组代码',
: '请选择管理精度',
'计划数量包含0':'计划数量包含0',
:'自动完成',
:'允许修改库位',
:'允许修改数量',
:'允许大于推荐数量',
:'允许小于推荐数量',
:'允许修改库存状态',
:'允许连续扫描',
:'允许部分完成',
:'允许修改批次',
:'允许修改箱码',
:'岗位',
:'承接人',
:'优先级增量',
:'承接时间',
:'完成人',
:'完成时间',
:'过期时间',
:'要求截止时间',
:'调整账代码',
:'冲销日记帐',
:'请输入仓库代码',
:'请输入库区代码',
50:'不得超过50个字符',
:'请选择是否可用',
:'请输入正确的代码',
QAD库位代码:'请QAD库位代码',
:'请输入库位组代码',
:'请输入备货优先级',
:'请输入名字',
:'规则配置请填写完全',
:'抽奖规则请填写完全',
:'有价差',
:'请输入正确格式的电话',
11:'不得超过11个字符',
:'当前阶段',
:'是否寄存订单',
:'请选择结束日期',
:'请选择开始日期',
:'请选择月份',
:'同步周期',
:'供应商代码不能为空',
:'请选择采购订单号',
:'请选择送达时间',
:'请选择状态',
:'请输入单据号',
:'请输入业务类型',
:'请输入已发货数量',
0:'计划数量不能小于0',
:'请选择计量单位',
:'请输入计划数量',
'请填写订单号!':'请填写订单号!',
:'请选择订单行',
:'是否标包',
:'临期提醒天数',
ERP管理:'是否脱离ERP管理',
ABC类:'ABC类',
:'产品类',
:'种类',
:'分组',
:'颜色',
:'配置',
:'替代计量单位',
:'可采购',
:'可制造',
:'可委外加工',
:'回收件',
:'虚零件',
:'结算方式',
:'项目',
:'质量等级',
:'有效天数',
:'请输入供应商代码',
:'请输入物料代码',
:'请选择货币',
:'请输入价格',
:'请输入要货计划单号',
:'请输入计划到货时间',
:'文件上传',
:'客户包装',
:'厂内包装',
:'供应商包装',
'请填写仓库代码!':'请填写仓库代码!',
:'待检',
:'原料',
:'半成品',
:'成品',
线:'线边',
:'隔离',
:'报废',
:'不合格',
:'客户',
'请填写库区代码!':'请填写库区代码!',
:'仓库信息',
:'库区信息',
:'库位组信息',
'文件中有部分数据导入失败,是否下载失败数据?':'文件中有部分数据导入失败,是否下载失败数据?',
:'导入失败',
:'导入成功',
:'请上传文件',
'上传失败,请您重新上传!':'上传失败,请您重新上传!',
'最多只能上传一个文件!':'最多只能上传一个文件!',
:'请选择日期后再点击询证',
'发票TC余额':'发票TC余额',
'发票BC余额':'发票BC余额',
:'凭证日期',
:'账户类型',
ID:'父ID',
:'重置密码',
:'请输入旧密码',
:'旧密码',
:'新密码',
:'请输入新密码',
:'确认新密码',
:'请再次输入新密码',
'两次输入的密码不一致,请重新输入!':'两次输入的密码不一致,请重新输入!',
:'请输入正确的手机号',
:'请输入类型',
:'请输入默认库位代码',
:'请选择是否是功能区',
:'请选择类型',
:'请输入简称',
128:'不得超过128个字符',
:'请输入正确的邮箱格式',
:'请输入正确的传真',
:'用户名称',
:'子表版本',
:'请选择版本号',
:'请输入未税金额',
: '请输入税额',
: '请选择是否跳过任务直接生成记录',
: '请选择是否自动执行',
: '请选择是否自动通过',
: '请选择是否自动提交',
: '请输入部门',
: '请输入金税票号',
: '请选择发票日期',
: '请输入价差通过说明',
100: '最多100字符',
'请填订单类型!':'请填订单类型!',
:'请输入合同价格',
'请确认该申请中是否包含返利金额,请注意填写的返利金额应为负数':'请确认该申请中是否包含返利金额,请注意填写的返利金额应为负数',
:'重要提示',
'调整事项(减项以负数列示):':'调整事项(减项以负数列示):',
'请输入':'请输入',
:'经办人',
:'对账日期',
:'请选择对账日期',
:'调整事项合计',
:'调整后余额',
:'摘要',
:'截止',
:'账面金额如下',
:'截止年月日账面金额如下',
:'单位名称',
:'请输入经办人',
:'活动',
:'停用',
A类:'A类',
B类:'B类',
C类:'C类',
Z类:'Z类',
:'原材料',
:'器具',
:'产成品',
:'低值易耗品',
:'专用维修备件',
:'一次性包材',
:'生产耗材',
'漆&胶':'漆&胶',
:'自制备件',
:'通用维修备件',
'周转箱(周转包装)':'周转箱(周转包装)',
'外购件':'外购件',
'请填供应商信息!':'请填供应商信息!',
:'更新要货预测',
:'全部更新',
:'按供应商更新',
:'按物料更新',
'填写物料号(填写多个物料号)':'填写物料号(填写多个物料号)',
'填写供应商代码(填写多个供应商)':'填写供应商代码(填写多个供应商)',
},
}

25
src/utils/disposition/defaultButtons.ts

@ -68,7 +68,18 @@ export function defaultExportTableBtn(option: any) {
hasPermi: ''
})
}
// 导出按钮
export function defaultUpdateTaskSettingBtn(option: any) {
return __defaultBtnOption(option, {
label: t(`ts.更新任务设置`).replace('ts.', ''),
name: 'updateTaskSetting',
hide: false,
type: 'warning',
icon: 'ep:refresh',
color: '',
hasPermi: ''
})
}
// 字段设置
// export function defaultFieldSettingBtn(option:any) {
@ -452,6 +463,18 @@ export function mainListFinishBtn(option: any) {
})
}
// 待开票被删除数据-恢复按钮
export function mainListReceveryBtn(option: any) {
return __defaultBtnOption(option, {
label: t(`ts.恢复`).replace('ts.', ''),
name: 'recevery',
hide: false,
type: 'primary',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
export function mainListSendBtn(option: any) {
return __defaultBtnOption(option, {
label: t(`ts.发送邮件`).replace('ts.', ''),

2
src/views/login/components/LoginForm.vue

@ -332,7 +332,7 @@
const { wsCache } = useCache()
wsCache.set(CACHE_KEY.DEPT, await DeptApi.getSimpleDeptList())
}catch (e){
if(e.code === 1002000008){
if(e.code === 1002000016){
setTimeout(function (){
router.push({path:"/updatePasswordNewTips",query:{username:loginData.loginForm.username}})
},1500)

3
src/views/login/components/QRCodePDA.vue

@ -5,12 +5,13 @@
<!-- <vue-qr bgSrc='https://img2.baidu.com/it/u=1188690822,3145215011&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1038' logoSrc="https://img1.baidu.com/it/u=605875105,1314303687&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500" text="Hello world!" :size="200"></vue-qr> -->
<vue-qr :text="apkUrl" :size="200" ></vue-qr>
</div>
<el-button type="primary" v-if="pdaUrl" link @click="handleClose">PDA安装程序下载链接</el-button>
<el-button type="primary" v-if="pdaUrl" link @click="handleClose">{{ t('ts.PDA安装程序下载链接') }}</el-button>
</div>
</template>
<script setup lang="ts">
import { downloadApk } from "@/api/login";
import { getPDAUrl,getNeedCode } from '@/utils/systemParam'
const { t } = useI18n() //
// import logoImg from '@/assets/imgs/logo_white_blue.png'

32
src/views/login/forgetPassword.vue

@ -10,6 +10,20 @@
>
<div class="title">{{ t('ts.忘记密码') }}</div>
<el-row type="flex" justify="center" align="middle">
<el-col>
<el-form-item v-if="tenantEnable === 'true'" prop="tenantName">
<!-- <el-input v-model="loginData.loginForm.tenantName" :placeholder="t('login.tenantNamePlaceholder')"
:prefix-icon="iconHouse" link type="primary" /> -->
<el-select v-model="loginData.tenantName" :placeholder="t('login.tenantNamePlaceholder')" :prefix-icon="iconHouse">
<el-option
v-for="item in tenantArray"
:key="item"
:label="t(`ts.${item.aliasName}`).replace('ts.','')"
:value="item.name"
/>
</el-select>
</el-form-item>
</el-col>
<el-col>
<el-form-item :label="t('ts.用户名')" prop="username" align="center">
<el-input v-model="loginData.username" :placeholder="t('ts.请输入用户名')" />
@ -39,6 +53,10 @@ import { setTenantId, setToken } from '@/utils/auth'
import { usePermissionStore } from '@/store/modules/permission'
import { getTenantIdByName, sendSmsCode, smsLogin } from '@/api/login'
import * as UserApi from '@/api/system/user'
import { getTenant } from '@/utils/systemParam'
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
const { wsCache } = useCache()
const language = wsCache.get('lang')
const { t } = useI18n()
const message = useMessage()
@ -53,7 +71,21 @@ const rules = {
email: [{ required: true, message: '请输入邮箱', trigger: 'blur' }]
}
const tenantEnable = import.meta.env.VITE_APP_TENANT_ENABLE
const tenantArray = ref(JSON.parse(getTenant()))
if('en-US'==language){
tenantArray.value = tenantArray.value.map(item => ({
name: item,
aliasName:item.replace('长春','ChangChun').replace('成都','ChengDu')
}));
}else{
tenantArray.value = tenantArray.value.map(item => ({
name: item,
aliasName:item
}));
}
const loginData = reactive({
tenantName: tenantArray.value[0].name,
username: '',
email: ''
})

4
src/views/login/updatePassword.vue

@ -6,7 +6,7 @@
<el-col>
<el-form-item label="新密码" prop="password" align="center">
<el-input v-model="loginData.password" placeholder="请输入新密码" :type="isShowPassword?'text':'password'"/>
<el-icon style="position: absolute; right: 10px;cursor: pointer;" color="#a5a5a5" size="18" @click="isShowPassword = !isShowPassword">
<el-icon style="position: absolute; right: 10px;cursor: pointer;" color="#a5a5a5" size="20" @click="isShowPassword = !isShowPassword">
<View v-if="!isShowPassword"/>
<Hide v-if="isShowPassword"/>
</el-icon>
@ -15,7 +15,7 @@
<el-col>
<el-form-item label="确认新密码" prop="againPassword">
<el-input v-model="loginData.againPassword" placeholder="请再次新密码" :type="isShowAgainPassword?'text':'password'"/>
<el-icon style="position: absolute; right: 10px;cursor: pointer;" color="#a5a5a5" size="18" @click="isShowAgainPassword = !isShowAgainPassword">
<el-icon style="position: absolute; right: 10px;cursor: pointer;" color="#a5a5a5" size="20" @click="isShowAgainPassword = !isShowAgainPassword">
<View v-if="!isShowAgainPassword"/>
<Hide v-if="isShowAgainPassword"/>
</el-icon>

20
src/views/login/updatePasswordNewTips.vue

@ -1,11 +1,11 @@
<template>
<div v-loading="loading" class="box">
<el-form ref="formSmsLogin" :model="loginData" :rules="rules" label-width="130px" label-position="top" size="large">
<div class="title" style="font-size:25px" margin-left="0px">重置密码</div>
<div class="title" style="font-size:25px" margin-left="0px">{{t('ts.重置密码')}}</div>
<el-row type="flex" justify="center" align="middle">
<el-col>
<el-form-item label="旧密码" prop="oldPassword" align="center">
<el-input v-model="loginData.oldPassword" placeholder="请输入旧密码" :type="isShowOldPassword?'text':'password'"/>
<el-form-item :label="t('ts.旧密码')" prop="oldPassword" align="center">
<el-input v-model="loginData.oldPassword" :placeholder="t('ts.请输入旧密码')" :type="isShowOldPassword?'text':'password'"/>
<el-icon style="position: absolute; right: 10px;cursor: pointer;" color="#a5a5a5" size="20" @click="isShowOldPassword = !isShowOldPassword">
<View v-if="!isShowOldPassword"/>
<Hide v-if="isShowOldPassword"/>
@ -13,8 +13,8 @@
</el-form-item>
</el-col>
<el-col>
<el-form-item label="新密码" prop="password" align="center">
<el-input v-model="loginData.password" placeholder="请输入新密码" :type="isShowPassword?'text':'password'"/>
<el-form-item :label="t('ts.新密码')" prop="password" align="center">
<el-input v-model="loginData.password" :placeholder="t('ts.请输入新密码')" :type="isShowPassword?'text':'password'"/>
<el-icon style="position: absolute; right: 10px;cursor: pointer;" color="#a5a5a5" size="20" @click="isShowPassword = !isShowPassword">
<View v-if="!isShowPassword"/>
<Hide v-if="isShowPassword"/>
@ -22,8 +22,8 @@
</el-form-item>
</el-col>
<el-col>
<el-form-item label="确认新密码" prop="againPassword">
<el-input v-model="loginData.againPassword" placeholder="请再次输入新密码" :type="isShowAgainPassword?'text':'password'"/>
<el-form-item :label="t('ts.确认新密码')" prop="againPassword">
<el-input v-model="loginData.againPassword" :placeholder="t('ts.请再次输入新密码')" :type="isShowAgainPassword?'text':'password'"/>
<el-icon style="position: absolute; right: 10px;cursor: pointer;" color="#a5a5a5" size="20" @click="isShowAgainPassword = !isShowAgainPassword">
<View v-if="!isShowAgainPassword"/>
<Hide v-if="isShowAgainPassword"/>
@ -32,9 +32,9 @@
</el-col>
</el-row>
</el-form>
<!-- <div class="tips">温馨提示<span>密码长度通常需要在6-20个字符之间</span></div>-->
<!-- <div class="tips">温馨提示<span>密码长度通常需要在8-20个字符之间</span></div>-->
<div class="dialog-footer">
<el-button type="primary" @click="submitForm" style="width: 100%;height: 40px;line-height: 40px;"> </el-button>
<el-button type="primary" @click="submitForm" style="width: 100%;height: 40px;line-height: 40px;">{{ t(`ts.${'确 定'}`) }}</el-button>
</div>
</div>
</template>
@ -76,7 +76,7 @@
try {
loginData.mailKey = route.query.mailKey;
if (loginData.password != loginData.againPassword) {
message.error('两次输入的密码不一致,请重新输入!')
message.error(t(`ts.${'两次输入的密码不一致,请重新输入!'}`))
} else {
const data = loginData as unknown as UserApi.UserVO
await UserApi.updatePassword(data)

7
src/views/qms/inspectionRecord/index.vue

@ -157,6 +157,11 @@ const tableColumns = ref(InspectionRecordMain.allSchemas.tableColumns)
// }
// }
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const { tableObject, tableMethods } = useTable({
getListApi: InspectionRecordMainApi.getInspectionRecordMainPage //
@ -507,7 +512,7 @@ const searchFormClick = (searchData) => {
)
} else {
searchData.filters.push({
action: 'notIn',
action: 'notin',
column: 'inspectionType',
value: '1,4,11'
})

10
src/views/qms/inspectionRecordFirst/addForm.vue

@ -1408,7 +1408,15 @@ const boxList = ref()
// })
// }
const inputChange = (val,cur) => {
cur.inspectionValue = cur.inspectionValue.replace(/[^0-9.]/g, '')
cur.inspectionValue = cur.inspectionValue.replace(/[^0-9.]/g, '').replace(/\./, '#').replace(/\./, '').replace(/#/, '\.') //
// cur.inspectionValue =
// cur.inspectionValue
// .replace(/[^\d^\.^-]+/g, '') //
// .replace(/^0+(\d)/, '$1') // 00
// .replace(/^-0+(\d)/, '-$1') // -00
// .replace(/-/g, (match: any, offset: number) => offset === 0 ? '-' : '') // -
// .replace(/\./, '#').replace(/\./, '').replace(/#/, '\.') //
}
const inspectionValueInput = (item, cur) => {
for (

11
src/views/qms/inspectionRecordFirst/index.vue

@ -3,8 +3,8 @@
<!-- 搜索工作栏 -->
<Search
:schema="InspectionRecordMain.allSchemas.searchSchema"
@search="setSearchParams"
@reset="setSearchParams"
@search="searchClick"
@reset="searchClick"
/>
</ContentWrap>
@ -332,6 +332,13 @@ const submitForm = async (formType, data) => {
basicFormRef.value.formLoading = false
}
}
const searchClick = async (data)=>{
console.log('searchClick',data)
data.available = 'TRUE'
data.inspectionType = '11'
setSearchParams(data)
}
//
const searchFormClick = (searchData) => {
searchData.filters.push({

36
src/views/qms/inspectionScheme/addForm.vue

@ -910,12 +910,14 @@ const open = async (type: string, row?: any, masterParmas?: any, titleName?: any
let arr = []
list.forEach((item, index) => {
let obj = {
code: item.code,
inspectionCode: item.inspectionCode,
description: item.description,
inspectionCharCode: item.inspectionCharCode,
sequenceCode: item.sequenceCode,
name: String(index + 1),
inspectionCharacteristicsBaseVO: {
code: item.inspectionCharacteristicsBaseVO.code,
description: item.inspectionCharacteristicsBaseVO.description,
featureType: item.inspectionCharacteristicsBaseVO.featureType,
inspectionMethodCode: item.inspectionCharacteristicsBaseVO.inspectionMethodCode,
@ -1388,11 +1390,23 @@ const searchTableSuccess = async (formField, searchField, val, type, row) => {
} else if (formField == 'inspectionType') {
data.value.testTypeName = val[0].description
} else if (formField == 'programmeTemplateCode') {
setDataProgrammeTemplateCode(val[0])
} else if (formField == 'dynamicUpdateCode') {
data.value[formField] = val[0].code
data.value.dynamicUpdateName = val[0].description
}
}
// emit('searchTableSuccess', formField, searchField, val, formRef.value, type, row)
}
const setDataProgrammeTemplateCode = async (dataValue)=>{
isShowField.value = 0 //isShowField == 0aql
data.value.programmeTemplateName = val[0].description
data.value['dynamicUpdateCode'] = val[0].dynamicUpdateCode
data.value.dynamicUpdateName = val[0].dynamicUpdateName
let list = await InspectionProcessPageApi.getListByTempleteCode(val[0].code)
data.value.programmeTemplateName = dataValue.description
data.value['dynamicUpdateCode'] = dataValue.dynamicUpdateCode
data.value.dynamicUpdateName = dataValue.dynamicUpdateName
let list = await InspectionProcessPageApi.getListByTempleteCode(dataValue.code)
rules.value['inspectionCharacteristicsBaseVO.quantifyCapping'][0].required = false
rules.value['inspectionCharacteristicsBaseVO.quantifyLowlimit'][0].required = false
rules.value['inspectionCharacteristicsBaseVO.quantifyTarget'][0].required = false
@ -1426,13 +1440,6 @@ const searchTableSuccess = async (formField, searchField, val, type, row) => {
rules.value.aql[0].required = false
}
data.value.process = list
} else if (formField == 'dynamicUpdateCode') {
data.value[formField] = val[0].code
data.value.dynamicUpdateName = val[0].description
}
}
// emit('searchTableSuccess', formField, searchField, val, formRef.value, type, row)
}
//
const changeIsCapping = (e, item) => {
@ -1508,6 +1515,7 @@ const onItemBlur = async (field, pageApi, item) => {
}
//
const onBlur = async (field, pageApi, item) => {
console.log('onBlur',field, pageApi, item)
const dataObj = item ? item.inspectionCharacteristicsBaseVO : data.value
if (dataObj[field + 'Code']) {
const _searchCondition = {}
@ -1528,6 +1536,7 @@ const onBlur = async (field, pageApi, item) => {
_searchCondition.isSearch = true
_searchCondition.filters = filters
const array = await pageApi(_searchCondition)
console.log('array',array)
Butttondata = [
defaultButtons.formSaveBtn(null), //
defaultButtons.formCloseBtn(null) //
@ -1541,6 +1550,11 @@ const onBlur = async (field, pageApi, item) => {
dataObj[field + 'Code'] = ''
dataObj[field + 'Name'] = ''
}
if(field == 'programmeTemplate'){ //
setDataProgrammeTemplateCode(obj)
}
} else {
dataObj[field + 'Name'] = ''
Butttondata = [

12
src/views/qms/inspectionScheme/index.vue

@ -197,10 +197,16 @@ const buttonTableClick = async (val, row) => {
/** 添加/修改操作 */
const basicFormRef = ref()
const updateRow = ref()
const openForm = (type: string, row?: any) => {
// if(type=='add'){//
// InspectionTemplateMain.allSchemas.formSchema.find(item => item.field == 'programmeTemplateCode').componentProps.disabled = true//
// }
if('update' == type){
updateRow.value = row
}else{
updateRow.value = null
}
basicFormRef.value.open(type, row)
}
@ -240,6 +246,12 @@ const submitForm = async (formType, data) => {
await InspectionSchemeApi.InspectionSchemeCreat(data1)
message.success(t('common.createSuccess'))
} else {
if('update' == formType&&updateRow.value&&updateRow.value.dynamicUpdateCode!=data1.dynamicUpdateCode){
await ElMessageBox.alert(
'请在物料检验计数器管理中,确认对应物料的检验阶段',
'重要提示'
)
}
await InspectionSchemeApi.InspectionSchemeUpdate(data1)
message.success(t('common.updateSuccess'))
}

1
src/views/qms/inspectionTemplate/detail.vue

@ -332,6 +332,7 @@ onMounted(async () => {
let arr = []
list.forEach((item, index) => {
let obj = {
code: item.code,
inspectionCode: item.inspectionCode,
description: item.description,
inspectionCharCode: item.inspectionCharCode,

40
src/views/system/passwordRule/index.vue

@ -26,26 +26,26 @@
</el-form-item>
</el-col>
<div>{{passwordConfig.ruleDesc}}</div>
<el-col>
<el-form-item label="每分钟密码输入错误" prop="tryCount">
<el-input-number
v-model="passwordConfig.tryCount"
:min="3"
:precision="0"
style="margin-right: 10px"
/>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="锁定" prop="lockHours">
<el-input-number
v-model="passwordConfig.lockHours"
:min="1"
:precision="0"
style="margin-right: 10px"
/>
</el-form-item>
</el-col>
<!-- <el-col>-->
<!-- <el-form-item label="每分钟密码输入错误" prop="tryCount">-->
<!-- <el-input-number-->
<!-- v-model="passwordConfig.tryCount"-->
<!-- :min="3"-->
<!-- :precision="0"-->
<!-- style="margin-right: 10px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col>-->
<!-- <el-form-item label="锁定" prop="lockHours">-->
<!-- <el-input-number-->
<!-- v-model="passwordConfig.lockHours"-->
<!-- :min="1"-->
<!-- :precision="0"-->
<!-- style="margin-right: 10px"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col>
<el-form-item label="24小时内密码输入错误" prop="tryCount">
<el-input-number

2
src/views/system/user/index.vue

@ -84,7 +84,7 @@
v-hasPermi="['system:permission:assign-user-role']">
<Icon icon="ep:circle-check" />分配角色
</el-button>
<el-button type="primary" link @click="handleFree(scope.row)" v-hasPermi="['system:user:update-password']" v-if="useUserStore().userSelfInfo.userType=='MASTER'">
<el-button type="primary" link @click="handleFree(scope.row)" v-hasPermi="['system:user:update']">
<Icon icon="ep:edit" />解冻
</el-button>
<el-button type="danger" link @click="handleDelete(scope.row.id)" v-hasPermi="['system:user:delete']">

7
src/views/wms/agvManage/backflushDetailbQad/backflushDetailbQad.data.ts

@ -106,6 +106,13 @@ export const BackflushDetailbQad = useCrudSchemas(reactive<CrudSchema[]>([
field: 'qty',
sort: 'custom',
},
{
label: '是否委外',
field: 'isWw',
sort: 'custom',
dictType: DICT_TYPE.TRUE_FALSE,
dictClass: 'string', // 默认都是字符串类型其他暂不考虑
},
{
label: '操作',
field: 'action',

6
src/views/wms/basicDataManage/customerManage/customeritem/customeritem.data.ts

@ -67,11 +67,7 @@ export const Customeritem = useCrudSchemas(reactive<CrudSchema[]>([
searchTitle: '物料基础信息', // 查询弹窗标题
searchAllSchemas: Itembasic.allSchemas, // 查询弹窗所需类
searchPage: ItembasicApi.getItembasicPage, // 查询弹窗所需分页方法
searchCondition: [{
key: 'available',
value: 'TRUE',
isMainValue: false
}],
searchCondition: [],
verificationParams: [{
key: 'code',
action: '==',

1
src/views/wms/basicDataManage/customerManage/customeritem/index.vue

@ -74,6 +74,7 @@ import { Itembasic } from '../../itemManage/itembasic/itembasic.data'
import { formatDate } from '@/utils/formatTime'
import { usePageLoading } from '@/hooks/web/usePageLoading'
const { loadStart, loadDone } = usePageLoading()
//
defineOptions({ name: 'Customeritem' })
const message = useMessage() //

20
src/views/wms/basicDataManage/factoryModeling/areabasic/areabasic.data.ts

@ -257,30 +257,30 @@ export const Area = useCrudSchemas(reactive<CrudSchema[]>([
//表单校验
export const AreaRules = reactive({
code: [
{ required: true, message: '请输入代码', trigger: 'blur' },
{ max: 50, message: '不得超过50个字符', trigger: 'blur' },
{ validate: validateYS, message: '请输入正确的代码', trigger: 'blur' }
{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' },
{ validate: validateYS, message: t('ts.请输入正确的代码'), trigger: 'blur' }
],
name: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
remark: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
warehouseCode: [
{ required: true, message: '请输入仓库代码', trigger: 'change' }
{ required: true, message: t('ts.请输入仓库代码'), trigger: 'change' }
],
isFunctional: [
{ required: true, message: '请选择是否是功能区', trigger: 'change' }
{ required: true, message: t('ts.请选择是否是功能区'), trigger: 'change' }
],
available: [
{ required: true, message: '请选择是否可用', trigger: 'change' }
{ required: true, message: t('ts.请选择是否可用'), trigger: 'change' }
],
type: [
{ required: true, message: '请选择类型', trigger: 'change' }
{ required: true, message: t('ts.请选择类型'), trigger: 'change' }
],
manageMode: [
{ required: true, message: '请选择管理精度', trigger: 'change' }
{ required: true, message: t('ts.请选择管理精度'), trigger: 'change' }
]
})

28
src/views/wms/basicDataManage/factoryModeling/dock/dock.data.ts

@ -295,39 +295,39 @@ export const Dock = useCrudSchemas(reactive<CrudSchema[]>([
//表单校验
export const DockRules = reactive({
code: [
{ required: true, message: '请输入代码', trigger: 'blur' },
{ max: 50, message: '不得超过50个字符', trigger: 'blur' },
{ validator:validateYS, message: '请输入正确的代码', trigger: 'blur'}
{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' },
{ validator:validateYS, message: t('ts.请输入正确的代码'), trigger: 'blur'}
],
name: [
{ required: true,max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ required: true,max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
city: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
address: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
contactPerson: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
contactPhone: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' },
{ validator:validateHanset, message: '请输入正确的手机号', trigger: 'blur'}
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' },
{ validator:validateHanset, message: t('ts.请输入正确的手机号'), trigger: 'blur'}
],
type: [
{ required: true, message: '请输入类型', trigger: 'change' }
{ required: true, message: t('ts.请输入类型'), trigger: 'change' }
],
warehouseCode: [
{ required: true, message: '请输入仓库代码', trigger: 'change' }
{ required: true, message: t('ts.请输入仓库代码'), trigger: 'change' }
],
defaultLocationCode: [
{ required: true, message: '请输入默认库位代码', trigger: 'change' }
{ required: true, message: t('ts.请输入默认库位代码'), trigger: 'change' }
],
remark: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
available: [
{ required: true, message: '请选择是否可用', trigger: 'change' }
{ required: true, message: t('ts.请选择是否可用'), trigger: 'change' }
],
})

30
src/views/wms/basicDataManage/factoryModeling/location/location.data.ts

@ -91,7 +91,7 @@ export const Location = useCrudSchemas(reactive<CrudSchema[]>([
searchCondition: [{
key:'warehouseCode',
value:'warehouseCode',
message: '请填写仓库代码!',
message: t(`ts.${'请填写仓库代码!'}`),
isMainValue: true
},{
key: 'available',
@ -129,7 +129,7 @@ export const Location = useCrudSchemas(reactive<CrudSchema[]>([
searchCondition: [{
key:'areaCode',
value:'areaCode',
message: '请填写库区代码!',
message: t(`ts.${'请填写库区代码!'}`),
isMainValue: true
},{
key: 'available',
@ -435,33 +435,33 @@ export const Location = useCrudSchemas(reactive<CrudSchema[]>([
//表单校验
export const LocationRules = reactive({
code: [
{ required: true, message: '请输入代码', trigger: 'blur' },
{ max: 50, message: '不得超过50个字符', trigger: 'blur' },
{ validator:validateYS, message: '请输入正确的代码', trigger: 'blur'}
{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' },
{ validator:validateYS, message: t('ts.请输入正确的代码'), trigger: 'blur'}
],
name: [
{required: true, max: 50, message: '不得超过50个字符', trigger: 'blur' }
{required: true, max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
aisle: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
shelf: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
remark: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
warehouseCode: [
{ required: true, message: '请输入仓库代码', trigger: 'change' }
{ required: true, message: t('ts.请输入仓库代码'), trigger: 'change' }
],
qadLocationCode: [
{ required: true, message: '请QAD库位代码', trigger: 'change' }
{ required: true, message: t('ts.请QAD库位代码'), trigger: 'change' }
],
areaCode: [
{ required: true, message: '请输入库区代码', trigger: 'change' }
{ required: true, message: t('ts.请输入库区代码'), trigger: 'change' }
],
locationGroupCode: [
{ required: true, message: '请输入库位组代码', trigger: 'change' }
{ required: true, message: t('ts.请输入库位组代码'), trigger: 'change' }
],
// erpLocationCode: [
// { required: true, message: '请选择ERP库位类型', trigger: 'change' }
@ -470,9 +470,9 @@ export const LocationRules = reactive({
// { required: true, message: '请选择类型', trigger: 'change' }
// ],
pickPriority: [
{ required: true, message: '请输入备货优先级', trigger: 'blur' }
{ required: true, message: t('ts.请输入备货优先级'), trigger: 'blur' }
],
available: [
{ required: true, message: '请选择是否可用', trigger: 'change' }
{ required: true, message: t('ts.请选择是否可用'), trigger: 'change' }
],
})

12
src/views/wms/basicDataManage/factoryModeling/locationgroup/locationgroup.data.ts

@ -88,7 +88,7 @@ export const Locationgroup = useCrudSchemas(reactive<CrudSchema[]>([
searchCondition: [{
key:'warehouseCode',
value:'warehouseCode',
message: '请填写仓库代码!',
message: t(`ts.${'请填写仓库代码!'}`),
isMainValue: true
},{
key: 'available',
@ -257,7 +257,7 @@ export const Locationgroup = useCrudSchemas(reactive<CrudSchema[]>([
//表单校验
export const LocationgroupRules = reactive({
code: [
{ required: true, message: '请输入代码', trigger: 'blur' },
{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },
{ max: 50, message: '不得超过50个字符', trigger: 'blur' },
{ validator:validateYS, message: '请输入正确的代码', trigger: 'blur'}
],
@ -265,15 +265,15 @@ export const LocationgroupRules = reactive({
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
],
warehouseCode: [
{ required: true, message: '请输入仓库代码', trigger: 'change' }
{ required: true, message: t('ts.请输入仓库代码'), trigger: 'change' }
],
areaCode: [
{ required: true, message: '请输入库区代码', trigger: 'change' }
{ required: true, message: t('ts.请输入库区代码'), trigger: 'change' }
],
remark: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
available: [
{ required: true, message: '请选择是否可用', trigger: 'change' }
{ required: true, message: t('ts.请选择是否可用'), trigger: 'change' }
],
})

14
src/views/wms/basicDataManage/factoryModeling/warehouse/warehouse.data.ts

@ -199,20 +199,20 @@ export const Warehouse = useCrudSchemas(reactive<CrudSchema[]>([
//表单校验
export const WarehouseRules = reactive({
code: [
{ required: true, message: '请输入代码', trigger: 'blur' },
{ max: 50, message: '不得超过50个字符', trigger: 'blur' },
{ validator:validateYS, message: '请输入正确的代码', trigger: 'blur'}
{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' },
{ validator:validateYS, message: t('ts.请输入正确的代码'), trigger: 'blur'}
],
name: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
description: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
remark: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
available: [
{ required: true, message: '请选择是否可用', trigger: 'change' }
{ required: true, message: t('ts.请选择是否可用'), trigger: 'change' }
],
})

6
src/views/wms/basicDataManage/itemManage/itemarea/itemarea.data.ts

@ -34,11 +34,7 @@ export const Itemarea = useCrudSchemas(reactive<CrudSchema[]>([
searchTitle: '物料基础信息', // 查询弹窗标题
searchAllSchemas: Itembasic.allSchemas, // 查询弹窗所需类
searchPage: ItembasicApi.getItembasicPage, // 查询弹窗所需分页方法
searchCondition: [{
key: 'available',
value: 'TRUE',
isMainValue: false
}],
searchCondition: [],
verificationParams: [{
key: 'code',
action: '==',

23
src/views/wms/basicDataManage/itemManage/itembasic/itembasic.data.ts

@ -472,6 +472,21 @@ export const Itembasic = useCrudSchemas(reactive<CrudSchema[]>([
width: 180
},
},
{
label: '临期提醒天数',
field: 'adventReminderDay',
sort: 'custom',
table: {
width: 120
},
form: {
component: 'InputNumber',
componentProps: {
min: 0,
precision: 0
}
},
},
{ label: '备注', field: 'remark', sort: 'custom', isTable: false},
{
label: '操作',
@ -544,7 +559,6 @@ export const ItembasicCopy = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
isSearch: true,
table: {
width: 180,
fixed: 'left'
},
},
@ -554,7 +568,6 @@ export const ItembasicCopy = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
isSearch: true,
table: {
width: 150
},
},
{
@ -566,7 +579,6 @@ export const ItembasicCopy = useCrudSchemas(reactive<CrudSchema[]>([
isSearch: true,
isTable: true,
table: {
width: 120
}
},
{
@ -575,9 +587,6 @@ export const ItembasicCopy = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
dictType: DICT_TYPE.ITEM_TYPE,
dictClass: 'string',
isTable: true,
table: {
width: 100
} ,
isTable: true
}
]))

8
src/views/wms/basicDataManage/itemManage/itempackage/itempackage.data.ts

@ -30,11 +30,7 @@ export const Itempackaging = useCrudSchemas(reactive<CrudSchema[]>([
searchTitle: '物料基础信息', // 查询弹窗标题
searchAllSchemas: Itembasic.allSchemas, // 查询弹窗所需类
searchPage: ItembasicApi.getItembasicPage, // 查询弹窗所需分页方法
searchCondition: [{
key: 'available',
value: 'TRUE',
isMainValue: false
}],
searchCondition: [],
verificationParams: [{
key: 'code',
action: '==',
@ -119,7 +115,7 @@ export const Itempackaging = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
isSearch: false,
table: {
width: 150
width: 160
},
},
{

60
src/views/wms/basicDataManage/itemManage/packageunit/packageunit.data.ts

@ -39,7 +39,10 @@ export const Packageunit1 = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
value: 0,
componentProps: {
min: 0
}
},
},
{
@ -48,7 +51,10 @@ export const Packageunit1 = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
value: 0,
componentProps: {
min: 0
}
},
},
{
@ -57,7 +63,10 @@ export const Packageunit1 = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
value: 0,
componentProps: {
min: 0
}
},
},
{
@ -66,7 +75,10 @@ export const Packageunit1 = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
value: 0,
componentProps: {
min: 0
}
},
},
{
@ -383,7 +395,10 @@ export const Packageunit = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
value: 0,
componentProps: {
min: 0
}
},
},
{
@ -392,7 +407,10 @@ export const Packageunit = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
value: 0,
componentProps: {
min: 0
}
},
},
{
@ -401,7 +419,10 @@ export const Packageunit = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
value: 0,
componentProps: {
min: 0
}
},
},
{
@ -410,7 +431,10 @@ export const Packageunit = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
value: 0,
componentProps: {
min: 0
}
},
},
{
@ -762,7 +786,10 @@ export const PackageunitCopy = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
value: 0,
componentProps: {
min: 0
}
},
},
{
@ -771,7 +798,10 @@ export const PackageunitCopy = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
value: 0,
componentProps: {
min: 0
}
},
},
{
@ -780,7 +810,10 @@ export const PackageunitCopy = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
value: 0,
componentProps: {
min: 0
}
},
},
{
@ -789,7 +822,10 @@ export const PackageunitCopy = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
value: 0,
componentProps: {
min: 0
}
},
},
{

7
src/views/wms/basicDataManage/itemManage/productionlineitem/productionlineitem.data.ts

@ -139,13 +139,6 @@ export const Productionlineitem = useCrudSchemas(reactive<CrudSchema[]>([
action: 'notin',
isSearch: true,
isMainValue: false
},
{
key:'available',
value:'TRUE',
action: '==',
isSearch: true,
isMainValue: false
}
]
}

7
src/views/wms/basicDataManage/itemManage/relegate/relegateRequest/index.vue

@ -195,8 +195,8 @@ const searchTableSuccess = (formField, searchField, val, formRef, type, row) =>
newRow['fromLocationCode'] = item['locationCode']
newRow['toLocationCode'] = item['locationCode']
newRow['inventoryStatus'] = item['inventoryStatus']
newRow['packUnit'] = item['packUnit']
newRow['packQty'] = item['packQty']
// newRow['packUnit'] = item['packUnit']
// newRow['packQty'] = item['packQty']
tableData.value.push(newRow)
})
let itemCodes = []
@ -234,6 +234,9 @@ const searchTableSuccess = (formField, searchField, val, formRef, type, row) =>
// console.log(row['itemCode']);
// ItembasicApi.getItemListByCodes(row['itemCode'])
row['downItemCode'] = val[0]['code']
} else if (formField == 'packUnit') {
row['packUnit'] = val[0]['packUnit']
row['packQty'] = val[0]['packQty']
} else {
row[formField] = val[0][searchField]
}

64
src/views/wms/basicDataManage/itemManage/relegate/relegateRequest/relegateRequestMain.data.ts

@ -19,6 +19,8 @@ import { Itempackaging } from '@/views/wms/basicDataManage/itemManage/itempackag
import * as SupplieritemApi from '@/api/wms/supplieritem'
import { Supplieritem } from '@/views/wms/basicDataManage/supplierManage/supplieritem/supplieritem.data'
import * as PackageunitApi from '@/api/wms/packageunit'
import { Packageunit } from '@/views/wms/basicDataManage/itemManage/packageunit/packageunit.data'
import * as ProductionitemcodeSpareitemcodeApi from '@/api/wms/productionitemcodeSpareitemcode'
// 获取自动提交自动通过自动执行,跳过任务直接删生成记录的默认值
const queryParams = {
@ -434,11 +436,67 @@ export const RelegateRequestDetail = useCrudSchemas(reactive<CrudSchema[]>([
field: 'packUnit',
sort: 'custom',
table: {
width: 120
width: 150
},
tableForm: {
disabled: true
form: {
// labelMessage: '信息提示说明!!!',
componentProps: {
enterSearch: true, //可输入回车
isSearchList: true, // 开启查询弹窗
searchListPlaceholder: '请选择包装规格', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '包装规格信息', // 查询弹窗标题
searchAllSchemas: Itempackaging.allSchemas, // 查询弹窗所需类
searchPage: ItempackageApi.getItempackagingPage, // 查询弹窗所需分页方法
searchCondition: [{
key: 'available',
value: 'TRUE',
isMainValue: false
},{
key: 'itemCode',
value: 'downItemCode',
message: '请选择物料代码',
isTableRowValue: true,
isMainValue:false
}],
verificationParams: [{
key: 'code',
action: '==',
value: '',
isMainValue: false,
isSearch: 'true',
isFormModel: true
}], // 失去焦点校验参数
}
},
tableForm:{
isInpuFocusShow: true,
searchListPlaceholder: '请选择包装规格', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '包装规格信息', // 查询弹窗标题
searchAllSchemas: Itempackaging.allSchemas, // 查询弹窗所需类
searchPage: ItempackageApi.getItempackagingPage, // 查询弹窗所需分页方法
searchCondition: [{
key: 'available',
value: 'TRUE',
isMainValue: false
},{
key: 'itemCode',
value: 'downItemCode',
message: '请选择变更物料代码',
isTableRowValue: true,
required:true,
isMainValue:false
}],
verificationParams: [{
key: 'code',
action: '==',
value: '',
isMainValue: false,
isSearch: 'true',
isFormModel: true
}], // 失去焦点校验参数
}
},
{
label: '批次',

6
src/views/wms/basicDataManage/itemManage/stdcostprice/stdcostprice.data.ts

@ -66,11 +66,7 @@ export const Stdcostprice = useCrudSchemas(reactive<CrudSchema[]>([
// value:'supplierCode',
// isMainValue: true
// },
{
key: 'available',
value: 'TRUE',
isMainValue: false
}],
],
verificationParams: [{
key: 'code',
action: '==',

32
src/views/wms/basicDataManage/labelManage/callmaterials/callmaterials.data.ts

@ -352,22 +352,22 @@ export const Callmaterials = useCrudSchemas(reactive<CrudSchema[]>([
}]
},
},
{
label: '叫料库位',
field: 'location',
isTable: true,
sort: 'custom',
table: {
width: 150
},
sortTableDefault:1,
isSearch:true,
form: {
componentProps: {
disabled: true
}
}
},
// {
// label: '叫料库位',
// field: 'location',
// isTable: false,
// sort: 'custom',
// table: {
// width: 150
// },
// sortTableDefault:1,
// isSearch:false,
// form: {
// componentProps: {
// disabled: true
// }
// }
// },
{
label: '项目',
field: 'project',

276
src/views/wms/basicDataManage/strategySetting/spareitemLocation/index.vue

@ -0,0 +1,276 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<Search :schema="SpareitemLocation.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="SpareitemLocation.allSchemas"
/>
<!-- 列表 -->
<ContentWrap>
<Table
:columns="tableColumns"
:data="tableObject.tableList"
:loading="tableObject.loading"
:pagination="{
total: tableObject.total
}"
v-model:pageSize="tableObject.pageSize"
v-model:currentPage="tableObject.currentPage"
v-model:sort="tableObject.sort"
>
<template #code="{row}">
<el-button type="primary" link @click="openDetail(row, '代码', row.code)">
<span>{{ row.code }}</span>
</el-button>
</template>
<template #action="{ row }">
<ButtonBase :Butttondata="butttondata" @button-base-click="buttonTableClick($event,row)" />
</template>
</Table>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<BasicForm
ref="basicFormRef"
@success="formsSuccess"
:rules="SpareitemLocationRules"
:formAllSchemas="SpareitemLocation.allSchemas"
:apiUpdate="SpareitemLocationApi.updateSpareitemLocation"
:apiCreate="SpareitemLocationApi.createSpareitemLocation"
@searchTableSuccess="searchTableSuccess"
@clearSearchInput="clearSearchInput"
:isBusiness="false"
/>
<!-- 详情 -->
<Detail ref="detailRef" :isBasic="true" :allSchemas="SpareitemLocation.allSchemas" />
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/spareitem-location/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import download from '@/utils/download'
import { SpareitemLocation,SpareitemLocationRules } from './spareitemLocation.data'
import * as SpareitemLocationApi from '@/api/wms/spareitemLocation'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
import TableHead from '@/components/TableHead/src/TableHead.vue'
import ImportForm from '@/components/ImportForm/src/ImportForm.vue'
import Detail from '@/components/Detail/src/Detail.vue'
defineOptions({ name: 'SpareitemLocation' })
const message = useMessage() //
const { t } = useI18n() //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(SpareitemLocation.allSchemas.tableColumns)
const clearSearchInput = (field)=>{
console.log('field',field)
if('itemCode' == field){
//
basicFormRef.value.formRef.setValues({
name: '',
desc1: '',
desc2: ''
})
}else if('locationCode' == field){
//
basicFormRef.value.formRef.setValues({
locationName: '',
})
}
}
//
const searchTableSuccess = (formField, searchField, val, formRef) => {
nextTick(() => {
const setV = {}
setV[formField] = val[0][searchField]
if(formField=='itemCode'){
//
setV['name'] = val[0]['code']
setV['desc1'] = val[0]['desc1']
setV['desc2'] = val[0]['desc2']
}else if(formField=='locationCode'){
//
setV['locationName'] = val[0]['name']
}
formRef.setValues(setV)
})
}
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
const { tableObject, tableMethods } = useTable({
getListApi: SpareitemLocationApi.getSpareitemLocationPage //
})
//
const { getList, setSearchParams } = tableMethods
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:spareitemLocation:create'}), //
defaultButtons.defaultImportBtn({hasPermi:'wms:spareitemLocation:import'}), //
defaultButtons.defaultExportBtn({hasPermi:'wms:spareitemLocation:export'}), //
defaultButtons.defaultFreshBtn(null), //
// defaultButtons.defaultFilterBtn(null), //
defaultButtons.defaultSetBtn(null), //
// {
// label: '',
// name: 'zdy',
// hide: false,
// type: 'primary',
// icon: 'Select',
// color: ''
// },
]
//
const buttonBaseClick = (val, item) => {
if (val == 'add') { //
openForm('create')
} else if (val == 'import') { //
handleImport()
} else if (val == 'export') { //
handleExport()
} else if (val == 'refresh') { //
getList()
} else if (val == 'filtrate') { //
} else { //
console.log('其他按钮', item)
}
}
// -
const butttondata = [
defaultButtons.mainListEditBtn({hasPermi:'wms:spareitemLocation:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:spareitemLocation:delete'}), //
]
// -
const buttonTableClick = async (val, row) => {
if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const basicFormRef = ref()
const openForm = (type: string, row?: any) => {
SpareitemLocation.allSchemas.formSchema.forEach(item=>{
if(item.field == 'itemCode'){
item.componentProps.enterSearch = type=='create'
item.componentProps.isSearchList = type=='create'
item.componentProps.disabled = type!='create'
}
})
basicFormRef.value.open(type, row)
}
// form
const formsSuccess = async (formType,data) => {
var isHave =SpareitemLocation.allSchemas.formSchema.some(function (item) {
return item.field === 'activeTime' || item.field === 'expireTime';
});
if(isHave){
if(data.activeTime && data.expireTime && data.activeTime >=data.expireTime){
message.error('失效时间要大于生效时间')
return;
}
}
if(data.activeTime==0)data.activeTime = null;
if(data.expireTime==0)data.expireTime = null;
if (formType === 'create') {
await SpareitemLocationApi.createSpareitemLocation(data)
message.success(t('common.createSuccess'))
} else {
await SpareitemLocationApi.updateSpareitemLocation(data)
message.success(t('common.updateSuccess'))
}
basicFormRef.value.dialogVisible = false
getList()
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue, 'basicSpareitemLocation')
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await SpareitemLocationApi.deleteSpareitemLocation(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const exportLoading = ref(false) //
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await SpareitemLocationApi.exportSpareitemLocation(tableObject.params)
download.excel(data, '维修备件默认库位.xlsx')
} catch {
} finally {
exportLoading.value = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '维修备件默认库位导入模版.xlsx'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(async () => {
getList()
importTemplateData.templateUrl = await SpareitemLocationApi.importTemplate()
})
</script>

192
src/views/wms/basicDataManage/strategySetting/spareitemLocation/spareitemLocation.data.ts

@ -0,0 +1,192 @@
import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
import { dateFormatter } from '@/utils/formatTime'
import { Itembasic } from "@/views/wms/basicDataManage/itemManage/itembasic/itembasic.data";
import * as ItembasicApi from "@/api/wms/itembasic";
import * as ItemAccountsApi from '@/api/eam/itemAccounts'
import { ItemAccounts } from '@/views/eam/itemAccounts/itemAccounts.data'
import * as LocationApi from '@/api/wms/location'
import { Location } from '@/views/wms/basicDataManage/factoryModeling/location/location.data'
// 表单校验
export const SpareitemLocationRules = reactive({
itemCode: [required],
locationCode: [required],
})
export const SpareitemLocation = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '物料代码',
field: 'itemCode',
sort: 'custom',
isSearch: true,
form: {
// labelMessage: '信息提示说明!!!',
componentProps: {
enterSearch: true,
isSearchList: true, // 开启查询弹窗
searchListPlaceholder: '请选择物料代码', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '物料信息', // 查询弹窗标题
searchAllSchemas: Itembasic.allSchemas, // 查询弹窗所需类
searchPage: ItembasicApi.getItembasicPage, // 查询弹窗所需分页方法
searchCondition: [
// {
// key:'supplierCode',
// value:'supplierCode',
// isMainValue: true
// },
],
verificationParams: [{
key: 'code',
action: '==',
value: '',
isMainValue: false,
isSearch: 'true',
isFormModel: true
}], // 失去焦点校验参数
}
},
table: {
width: 180
}
},
{
label: '名称',
field: 'name',
sort: 'custom',
form: {
componentProps: {
disabled: true
}
},
table: {
width: 180
}
},
{
label: '描述1',
field: 'desc1',
sort: 'custom',
form: {
componentProps: {
disabled: true
}
},
table: {
width: 180
}
},
{
label: '描述2',
field: 'desc2',
sort: 'custom',
form: {
componentProps: {
disabled: true
}
},
table: {
width: 180
}
},
{
label: '库位代码',
field: 'locationCode',
sort: 'custom',
isSearch: true,
form: {
// labelMessage: '信息提示说明!!!',
componentProps: {
enterSearch: true,
isSearchList: true, // 开启查询弹窗
searchListPlaceholder: '请选择库位代码', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '库位信息', // 查询弹窗标题
searchAllSchemas: Location.allSchemas, // 查询弹窗所需类
searchPage: LocationApi.getLocationPage, // 查询弹窗所需分页方法
searchCondition: [{
key: 'available',
value: 'TRUE',
}],
verificationParams: [{
key: 'code',
action: '==',
value: '',
isMainValue: false,
isSearch: true,
isFormModel: true
}], // 失去焦点校验参数
}
},
table: {
width: 180
}
},
{
label: '库位名称',
field: 'locationName',
sort: 'custom',
form: {
componentProps: {
disabled: true
}
},
table: {
width: 180
}
},
{
label: '是否可用',
field: 'available',
sort: 'custom',
dictType: DICT_TYPE.TRUE_FALSE,
dictClass: 'string', // 默认都是字符串类型其他暂不考虑
form: {
component: 'Switch',
value: 'TRUE',
componentProps: {
inactiveValue: 'FALSE',
activeValue: 'TRUE'
}
},
table: {
width: 110
}
},
{
label: '备注',
field: 'remark',
sort: 'custom',
table: {
width: 220
}
},
{
label: '创建时间',
field: 'createTime',
sort: 'custom',
formatter: dateFormatter,
isSearch: true,
search: {
component: 'DatePicker',
componentProps: {
valueFormat: 'YYYY-MM-DD HH:mm:ss',
type: 'daterange',
defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')]
}
},
isForm: false,
table: {
width: 220
}
},
{
label: '操作',
field: 'action',
isForm: false,
table: {
width: 150,
fixed: 'right'
}
}
]))

8
src/views/wms/basicDataManage/strategySetting/strategy/arrivalInspectionStrategy/AddForm.vue

@ -193,10 +193,10 @@ const formData = ref({
//
const rules = ref({
strategyCode: [{ required: true, message: '请输入代码', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
name: [{ required: true, message: '请输入名字', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
description: [{ required: true, message: '请输入描述', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
priority: [{ required: true, message: '请输入优先级', trigger: 'blur' }]
strategyCode: [{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
name: [{ required: true, message: t('ts.请输入名字'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
description: [{ required: true, message: t('ts.请输入描述'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符') ,trigger: 'blur' }],
priority: [{ required: true, message: t('ts.请输入优先级'), trigger: 'blur' }]
})
//

10
src/views/wms/basicDataManage/strategySetting/strategy/batchStrategy/AddForm.vue

@ -315,11 +315,11 @@ const formData = ref({
})
//
const rules = ref({
strategyCode: [{ required: true, message: '请输入代码', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
name: [{ required: true, message: '请输入名字', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
description: [{ required: true, message: '请输入描述', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
priority: [{ required: true, message: '请输入优先级', trigger: 'blur' }],
configurationRules: [{ required: true, message: '规则配置请填写完全', trigger: 'blur' }]
strategyCode: [{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
name: [{ required: true, message: t('ts.请输入名字'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
description: [{ required: true, message: t('ts.请输入描述'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
priority: [{ required: true, message: t('ts.请输入优先级'), trigger: 'blur' }],
configurationRules: [{ required: true, message: t('ts.规则配置请填写完全'), trigger: 'blur' }]
})
//

8
src/views/wms/basicDataManage/strategySetting/strategy/downShelfStrategy/AddForm.vue

@ -745,10 +745,10 @@ const formData = ref({
})
//
const rules = ref({
strategyCode: [{ required: true, message: '请输入代码', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
name: [{ required: true, message: '请输入名字', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
description: [{ required: true, message: '请输入描述', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
priority: [{ required: true, message: '请输入优先级', trigger: 'blur' }]
strategyCode: [{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
name: [{ required: true, message: t('ts.请输入名字'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
description: [{ required: true, message: t('ts.请输入描述'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
priority: [{ required: true, message: t('ts.请输入优先级'), trigger: 'blur' }]
})
//

16
src/views/wms/basicDataManage/strategySetting/strategy/inspectStrategy/AddForm.vue

@ -307,19 +307,19 @@ const formData = ref({
//
const rules = ref({
strategyCode: [
{ required: true, message: '请输入代码', trigger: 'blur' },
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
name: [
{ required: true, message: '请输入名字', trigger: 'blur' },
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ required: true, message: t('ts.请输入名字'), trigger: 'blur' },
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
description: [
{ required: true, message: '请输入描述', trigger: 'blur' },
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ required: true, message: t('ts.请输入描述'), trigger: 'blur' },
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
priority: [{ required: true, message: '请输入优先级', trigger: 'blur' }],
configurationRules: [{ required: true, message: '抽奖规则请填写完全', trigger: 'blur' }]
priority: [{ required: true, message: t('ts.请输入优先级'), trigger: 'blur' }],
configurationRules: [{ required: true, message: t('ts.抽奖规则请填写完全'), trigger: 'blur' }]
})
//

8
src/views/wms/basicDataManage/strategySetting/strategy/manageAccuracyStrategy/AddForm.vue

@ -358,10 +358,10 @@ const formData = ref({
})
//
const rules = ref({
strategyCode: [{ required: true, message: '请输入代码', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
name: [{ required: true, message: '请输入名字', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
description: [{ required: true, message: '请输入描述', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
priority: [{ required: true, message: '请输入优先级', trigger: 'blur' }]
strategyCode: [{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },{ max: 50, message:t('ts.不得超过50个字符'), trigger: 'blur' }],
name: [{ required: true, message: t('ts.请输入名字'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
description: [{ required: true, message: t('ts.请输入描述'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
priority: [{ required: true, message: t('ts.请输入优先级'), trigger: 'blur' }]
})
//

8
src/views/wms/basicDataManage/strategySetting/strategy/purchaseReceiptStrategy/AddForm.vue

@ -211,10 +211,10 @@ const formData = ref({
//
const rules = ref({
strategyCode: [{ required: true, message: '请输入代码', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
name: [{ required: true, message: '请输入名字', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
description: [{ required: true, message: '请输入描述', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
priority: [{ required: true, message: '请输入优先级', trigger: 'blur' }]
strategyCode: [{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
name: [{ required: true, message: t('ts.请输入名字'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
description: [{ required: true, message: t('ts.请输入描述'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
priority: [{ required: true, message: t('ts.请输入优先级'), trigger: 'blur' }]
})
//

8
src/views/wms/basicDataManage/strategySetting/strategy/repairMaterialStrategy/AddForm.vue

@ -328,10 +328,10 @@ const formData = ref({
//
const rules = ref({
strategyCode: [{ required: true, message: '请输入代码', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
name: [{ required: true, message: '请输入名字', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
description: [{ required: true, message: '请输入描述', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
priority: [{ required: true, message: '请输入优先级', trigger: 'blur' }]
strategyCode: [{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
name: [{ required: true, message: t('ts.请输入名字'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
description: [{ required: true, message: t('ts.请输入描述'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
priority: [{ required: true, message: t('ts.请输入优先级'), trigger: 'blur' }]
})
//

8
src/views/wms/basicDataManage/strategySetting/strategy/storageCapacityStrategy/AddForm.vue

@ -339,10 +339,10 @@ const formData = ref({
})
//
const rules = ref({
strategyCode: [{ required: true, message: '请输入代码', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
name: [{ required: true, message: '请输入名字', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
description: [{ required: true, message: '请输入描述', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
priority: [{ required: true, message: '请输入优先级', trigger: 'blur' }]
strategyCode: [{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
name: [{ required: true, message: t('ts.请输入名字'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
description: [{ required: true, message: t('ts.请输入描述'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
priority: [{ required: true, message: t('ts.请输入优先级'), trigger: 'blur' }]
})
//

12
src/views/wms/basicDataManage/strategySetting/strategy/supplieDeliveryStrategy/AddForm.vue

@ -318,12 +318,12 @@ const formData = ref({
//
const rules = ref({
strategyCode: [{ required: true, message: '请输入代码', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
name: [{ required: true, message: '请输入名字', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
description: [{ required: true, message: '请输入描述', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
priority: [{ required: true, message: '请输入优先级', trigger: 'blur' }],
'configuration.PhoneNumber': [{ max: 11, message: '不得超过11个字符', trigger: 'blur' },
{message: '请输入正确格式的电话', trigger: 'blur' ,validator:validateHanset}]
strategyCode: [{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
name: [{ required: true, message: t('ts.请输入名字'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
description: [{ required: true, message: t('ts.请输入描述'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
priority: [{ required: true, message: t('ts.请输入优先级'), trigger: 'blur' }],
'configuration.PhoneNumber': [{ max: 11, message: t('ts.不得超过11个字符'), trigger: 'blur' },
{message: t('ts.请输入正确格式的电话'), trigger: 'blur' ,validator:validateHanset}]
})
//

16
src/views/wms/basicDataManage/strategySetting/strategy/upShelfStrategy/AddForm.vue

@ -660,7 +660,6 @@ const formType = ref('') // 表单的类型:create - 新增;update - 修改
const formRef = ref() // Ref
const formStrategyCode = ref('')
//
const warehouseType = ref('WarehouseCode')
@ -721,10 +720,10 @@ const formData = ref({
})
//
const rules = ref({
strategyCode: [{ required: true, message: '请输入代码', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
name: [{ required: true, message: '请输入名字', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
description: [{ required: true, message: '请输入描述', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
priority: [{ required: true, message: '请输入优先级', trigger: 'blur' }],
strategyCode: [{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
name: [{ required: true, message: t('ts.请输入名字'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
description: [{ required: true, message: t('ts.请输入描述'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
priority: [{ required: true, message: t('ts.请输入优先级'), trigger: 'blur' }],
// warehouse: [{ required: true, message: '', trigger: 'blur' }],
})
@ -1112,7 +1111,7 @@ const changeWarehouse = (e) => {
}
/** 打开弹窗 */
const open = async (type: string, strategyCode: string, id?: number) => {
const open = async (type: string, strategyCode: string, id?: number, priority?: Number) => {
formStrategyCode.value = strategyCode
dialogVisible.value = true
@ -1121,6 +1120,7 @@ const open = async (type: string, strategyCode: string, id?: number) => {
warehouseType.value = 'WarehouseCode'
// getFormWarehouseList()
resetForm()
//
if (id) {
@ -1196,6 +1196,9 @@ const open = async (type: string, strategyCode: string, id?: number) => {
formLoading.value = false
}
} else {
if(priority){
formData.value.priority = priority
}
Butttondata.value = [
defaultButtons.formSaveBtn(null), //
defaultButtons.formCloseBtn(null) //
@ -1389,6 +1392,7 @@ const getOverflowLocationCodes = async ()=>{
getOverflowLocationCodes()
</script>
<style scoped lang="scss">
.item {

26
src/views/wms/basicDataManage/strategySetting/strategy/upShelfStrategy/index.vue

@ -110,8 +110,8 @@ const resetQuery = () => {
//
const formRef = ref()
const openForm = (type: string, strategyCode: string, id: number) => {
formRef.value.open(type, strategyCode, id)
const openForm = (type: string, strategyCode: string, id?: number, priority?:number) => {
formRef.value.open(type, strategyCode, id, priority)
}
/** 删除按钮操作 */
@ -130,9 +130,11 @@ const route = useRoute() // 路由信息
//
const buttonBaseClick = (val, item) => {
const buttonBaseClick = async (val, item) => {
if (val == 'add') { //
openForm('create', queryParams.strategyCode)
await getDefaultPriority()
openForm('create', queryParams.strategyCode,undefined,defaultPriority.value)
} else if (val == 'import') { //
handleImport()
} else if (val == 'export') { //
@ -199,21 +201,27 @@ const importSuccess = () => {
// -
const butttondata = (row) => {
return [
defaultButtons.mainListEditBtn({hasPermi: 'wms:itembasic:update' }), //
defaultButtons.mainListDeleteBtn({hide:isShowMainButton(row,['默认规则']), hasPermi: 'wms:itembasic:delete' }), //
defaultButtons.mainListEditBtn({hasPermi: 'wms:up-shelf-strategy:update' }), //
defaultButtons.mainListDeleteBtn({hide:isShowMainButton(row,['默认规则']), hasPermi: 'wms:up-shelf-strategy:delete' }), //
]
}
// -
const buttonTableClick = (val, row) => {
if (val == 'edit') { //
openForm('update', queryParams.strategyCode, row.id)
openForm('update', queryParams.strategyCode, row.id,undefined)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
const defaultPriority = ref(0)//
const getDefaultPriority = async ()=>{
const res = await RuleApi.getMaxPriority(queryParams.strategyCode)
console.log('getMaxPriority',res)
if(res){
defaultPriority.value = Number(res)
}
}
/** 初始化 **/
onMounted( async() => {
getList()

8
src/views/wms/basicDataManage/strategySetting/strategy/utensilCapacityStrategy/AddForm.vue

@ -254,10 +254,10 @@ const formData = ref({
})
//
const rules = ref({
strategyCode: [{ required: true, message: '请输入代码', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
name: [{ required: true, message: '请输入名字', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
description: [{ required: true, message: '请输入描述', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
priority: [{ required: true, message: '请输入优先级', trigger: 'blur' }]
strategyCode: [{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
name: [{ required: true, message: t('ts.请输入名字'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
description: [{ required: true, message: t('ts.请输入描述'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
priority: [{ required: true, message: t('ts.请输入优先级'), trigger: 'blur' }]
})
//

8
src/views/wms/basicDataManage/strategySetting/strategy/warehouseStorageStrategy/AddForm.vue

@ -302,10 +302,10 @@ const formData = ref({
})
//
const rules = ref({
strategyCode: [{ required: true, message: '请输入代码', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
name: [{ required: true, message: '请输入名字', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
description: [{ required: true, message: '请输入描述', trigger: 'blur' },{ max: 50, message: '不得超过50个字符', trigger: 'blur' }],
priority: [{ required: true, message: '请输入优先级', trigger: 'blur' }]
strategyCode: [{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
name: [{ required: true, message: t('ts.请输入名字'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
description: [{ required: true, message: t('ts.请输入描述'), trigger: 'blur' },{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }],
priority: [{ required: true, message: t('ts.请输入优先级'), trigger: 'blur' }]
})
//

22
src/views/wms/basicDataManage/supplierManage/purchaseprice/purchaseprice.data.ts

@ -27,9 +27,9 @@ export const Purchaseprice = useCrudSchemas(reactive<CrudSchema[]>([
componentProps: {
enterSearch: true,
isSearchList: true, // 开启查询弹窗
searchListPlaceholder: '请选择供应商代码', // 输入框占位文本
searchListPlaceholder: t('ts.请选择供应商代码'), // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '供应商信息', // 查询弹窗标题
searchTitle: t('ts.供应商信息'), // 查询弹窗标题
searchAllSchemas: Supplier.allSchemas, // 查询弹窗所需类
searchPage: SupplierApi.getSupplierPage, // 查询弹窗所需分页方法
searchCondition: [{
@ -61,15 +61,15 @@ export const Purchaseprice = useCrudSchemas(reactive<CrudSchema[]>([
componentProps: {
enterSearch: true,
isSearchList: true, // 开启查询弹窗
searchListPlaceholder: '请选择物料代码', // 输入框占位文本
searchListPlaceholder: t('ts.请选择物料代码'), // 输入框占位文本
searchField: 'itemCode', // 查询弹窗赋值字段
searchTitle: '供应商物料信息', // 查询弹窗标题
searchTitle: t('ts.供应商物料信息'), // 查询弹窗标题
searchAllSchemas: Supplieritem.allSchemas, // 查询弹窗所需类
searchPage: SupplieritemApi.getSupplieritemPage, // 查询弹窗所需分页方法
searchCondition: [{
key:'supplierCode',
value:'supplierCode',
message: '请填写供应商代码!',
message: t(`ts.${'请填写供应商代码!'}`),
isMainValue: true
},{
key: 'available',
@ -265,21 +265,21 @@ export const Purchaseprice = useCrudSchemas(reactive<CrudSchema[]>([
//表单校验
export const PurchasepriceRules = reactive({
supplierCode: [
{ required: true, message: '请输入供应商代码', trigger: 'change' }
{ required: true, message: t('ts.请输入供应商代码'), trigger: 'change' }
],
itemCode: [
{ required: true, message: '请输入物料代码', trigger: 'change' }
{ required: true, message: t('ts.请输入物料代码'), trigger: 'change' }
],
currency: [
{ required: true, message: '请选择货币', trigger: 'change' }
{ required: true, message: t('ts.请选择货币'), trigger: 'change' }
],
price: [
{ required: true, message: '请输入价格', trigger: 'blur' }
{ required: true, message: t('ts.请输入价格'), trigger: 'blur' }
],
available: [
{ required: true, message: '请选择是否可用', trigger: 'change' }
{ required: true, message: t('ts.请选择是否可用'), trigger: 'change' }
],
remark: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
})

40
src/views/wms/basicDataManage/supplierManage/supplier/supplier.data.ts

@ -298,50 +298,50 @@ export const Supplier = useCrudSchemas(reactive<CrudSchema[]>([
//表单校验
export const SupplierRules = reactive({
code: [
{ required: true, message: '请输入代码', trigger: 'blur' },
{ max: 50, message: '不得超过50个字符', trigger: 'blur' },
{ validator:validateYS, message: '请输入正确的代码', trigger: 'blur'}
{ required: true, message: t('ts.请输入代码'), trigger: 'blur' },
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' },
{ validator:validateYS, message: t('ts.请输入正确的代码'), trigger: 'blur'}
],
name: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
shortName: [
{ required: true, message: '请输入简称', trigger: 'blur' },
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ required: true, message: t('ts.请输入简称'), trigger: 'blur' },
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
address: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
country: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
city: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
phone: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' },
{ validator:validateHanset, message: '请输入正确的手机号', trigger: 'blur'}
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' },
{ validator:validateHanset, message: t('ts.请输入正确的手机号'), trigger: 'blur'}
],
fax: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' },
{ validator:validateFax, message: '请输入正确的传真', trigger: 'blur'}
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' },
{ validator:validateFax, message: t('ts.请输入正确的传真'), trigger: 'blur'}
],
postId: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' },
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' },
{ validator:validatePostCode, message: '请输入正确的邮编', trigger: 'blur'}
],
contacts: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
email: [
{ required: true, message: '请输入邮箱', trigger: 'blur' },
{ max: 128, message: '不得超过128个字符', trigger: 'blur' },
{ validator:validateEmail, message: '请输入正确的邮箱格式', trigger: 'blur'}
{ required: true, message: t('ts.请输入邮箱'), trigger: 'blur' },
{ max: 128, message: t('ts.不得超过128个字符'), trigger: 'blur' },
{ validator:validateEmail, message: t('ts.请输入正确的邮箱格式'), trigger: 'blur'}
],
bank: [
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
{ max: 50, message: t('ts.不得超过50个字符'), trigger: 'blur' }
],
available: [
{ required: true, message: '请选择是否可用', trigger: 'change' }
{ required: true, message: t('ts.请选择是否可用'), trigger: 'change' }
],
})

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save