Browse Source

订单及计划页面

master
陈薪名 1 year ago
parent
commit
e6b1111542
  1. 58
      src/api/wms/barcode/index.ts
  2. 11
      src/api/wms/countPlanMain/index.ts
  3. 11
      src/api/wms/deliverPlanMain/index.ts
  4. 11
      src/api/wms/demandforecastingMain/index.ts
  5. 59
      src/api/wms/enterprise/index.ts
  6. 86
      src/api/wms/package/index.ts
  7. 11
      src/api/wms/preparetoissueMain/index.ts
  8. 11
      src/api/wms/productionMain/index.ts
  9. 11
      src/api/wms/purchaseDetail/index.ts
  10. 11
      src/api/wms/purchaseMain/index.ts
  11. 11
      src/api/wms/purchasePlanMain/index.ts
  12. 11
      src/api/wms/saleMain/index.ts
  13. 11
      src/api/wms/workMain/index.ts
  14. 247
      src/utils/disposition/defaultButtons.ts
  15. 129
      src/views/wms/basicDataManage/factoryModeling/enterprise/enterprise.data.ts
  16. 239
      src/views/wms/basicDataManage/factoryModeling/enterprise/index.vue
  17. 109
      src/views/wms/basicDataManage/labelManage/barcode/barcode.data.ts
  18. 244
      src/views/wms/basicDataManage/labelManage/barcode/index.vue
  19. 240
      src/views/wms/basicDataManage/labelManage/package/index.vue
  20. 280
      src/views/wms/basicDataManage/labelManage/package/package.data.ts
  21. 669
      src/views/wms/countManage/count/countPlanMain/index.vue
  22. 541
      src/views/wms/deliversettlementManage/deliverplan/deliverPlanMain/index.vue
  23. 587
      src/views/wms/deliversettlementManage/deliverplan/saleMain/index.vue
  24. 10
      src/views/wms/deliversettlementManage/deliverplan/saleMain/saleMain.data.ts
  25. 595
      src/views/wms/issueManage/preparetoissueplan/preparetoissueMain/index.vue
  26. 585
      src/views/wms/productionManage/productionplan/productionMain/index.vue
  27. 4
      src/views/wms/productionManage/productionplan/productionMain/productionMain.data.ts
  28. 543
      src/views/wms/productionManage/productionplan/workMain/index.vue
  29. 10
      src/views/wms/productionManage/productionplan/workMain/workMain.data.ts
  30. 557
      src/views/wms/purchasereceiptManage/supplierdeliver/demandforecastingMain/index.vue
  31. 634
      src/views/wms/purchasereceiptManage/supplierdeliver/purchaseMain/index.vue
  32. 10
      src/views/wms/purchasereceiptManage/supplierdeliver/purchaseMain/purchaseMain.data.ts
  33. 571
      src/views/wms/purchasereceiptManage/supplierdeliver/purchasePlanMain/index.vue
  34. 120
      src/views/wms/purchasereceiptManage/supplierdeliver/purchasePlanMain/purchasePlanMain.data.ts
  35. 3
      src/views/wms/purchasereceiptManage/supplierdeliver/supplierdeliverRecordMain/index.vue

58
src/api/wms/barcode/index.ts

@ -0,0 +1,58 @@
import request from '@/config/axios'
export interface BarcodeVO {
id: number
code: string
name: string
description: string
order: number
length: number
prefixLenght: number
prefixChar: string
entityProperties: string
encyptMethod: string
masterId: number
trimEnd: string
isEncypt: string
}
// 查询条码片段列表
export const getBarcodePage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/barcode/senior', data })
} else {
return await request.get({ url: `/wms/barcode/page`, params })
}
}
// 查询条码片段详情
export const getBarcode = async (id: number) => {
return await request.get({ url: `/wms/barcode/get?id=` + id })
}
// 新增条码片段
export const createBarcode = async (data: BarcodeVO) => {
return await request.post({ url: `/wms/barcode/create`, data })
}
// 修改条码片段
export const updateBarcode = async (data: BarcodeVO) => {
return await request.put({ url: `/wms/barcode/update`, data })
}
// 删除条码片段
export const deleteBarcode = async (id: number) => {
return await request.delete({ url: `/wms/barcode/delete?id=` + id })
}
// 导出条码片段 Excel
export const exportBarcode = async (params) => {
return await request.download({ url: `/wms/barcode/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/barcode/get-import-template' })
}

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

@ -29,7 +29,13 @@ export interface CountPlanMainVO {
// 查询盘点计划主列表
export const getCountPlanMainPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/count-plan-main/senior', data })
} else {
return await request.get({ url: `/wms/count-plan-main/page`, params })
}
}
// 查询盘点计划主详情
@ -56,3 +62,8 @@ export const deleteCountPlanMain = async (id: number) => {
export const exportCountPlanMain = async (params) => {
return await request.download({ url: `/wms/count-plan-main/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/count-plan-main/get-import-template' })
}

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

@ -18,7 +18,13 @@ export interface DeliverPlanMainVO {
// 查询发货计划主列表
export const getDeliverPlanMainPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/deliver-plan-main/senior', data })
} else {
return await request.get({ url: `/wms/deliver-plan-main/page`, params })
}
}
// 查询发货计划主详情
@ -45,3 +51,8 @@ export const deleteDeliverPlanMain = async (id: number) => {
export const exportDeliverPlanMain = async (params) => {
return await request.download({ url: `/wms/deliver-plan-main/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/deliver-plan-main/get-import-template' })
}

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

@ -19,7 +19,13 @@ export interface DemandforecastingMainVO {
// 查询要货预测主列表
export const getDemandforecastingMainPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/demandforecasting-main/senior', data })
} else {
return await request.get({ url: `/wms/demandforecasting-main/page`, params })
}
}
// 查询要货预测主详情
@ -46,3 +52,8 @@ export const deleteDemandforecastingMain = async (id: number) => {
export const exportDemandforecastingMain = async (params) => {
return await request.download({ url: `/wms/demandforecasting-main/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/demandforecasting-main/get-import-template' })
}

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

@ -0,0 +1,59 @@
import request from '@/config/axios'
export interface EnterpriseVO {
id: number
code: string
name: string
shortName: string
address: string
available: string
activeTime: Date
expireTime: Date
remark: string
deletionTime: Date
deleterId: string
extraProperties: string
concurrencyStamp: string
siteId: string
}
// 查询企业列表
export const getEnterprisePage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/enterprise/senior', data })
} else {
return await request.get({ url: `/wms/enterprise/page`, params })
}
}
// 查询企业详情
export const getEnterprise = async (id: number) => {
return await request.get({ url: `/wms/enterprise/get?id=` + id })
}
// 新增企业
export const createEnterprise = async (data: EnterpriseVO) => {
return await request.post({ url: `/wms/enterprise/create`, data })
}
// 修改企业
export const updateEnterprise = async (data: EnterpriseVO) => {
return await request.put({ url: `/wms/enterprise/update`, data })
}
// 删除企业
export const deleteEnterprise = async (id: number) => {
return await request.delete({ url: `/wms/enterprise/delete?id=` + id })
}
// 导出企业 Excel
export const exportEnterprise = async (params) => {
return await request.download({ url: `/wms/enterprise/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/enterprise/get-import-template' })
}

86
src/api/wms/package/index.ts

@ -0,0 +1,86 @@
import request from '@/config/axios'
export interface PackageVO {
number: string
itemCode: string
itemName: string
itemDesc1: string
itemDesc2: string
batch: string
altBatch: string
produceDate: Date
validityDays: number
expireDate: Date
uom: string
qty: number
altUom: string
altQty: number
convertRate: number
stdPackQty: number
stdPackUnit: string
toWarehouseCode: string
toDockCode: string
toLocationCode: string
supplierCode: string
supplierItemCode: string
poNumber: string
poLine: string
rpNumber: string
asnNumber: string
woNumber: string
woLine: string
productionLineCode: string
teamCode: string
shiftCode: string
customerCode: string
customerDockCode: string
customerItemCode: string
soNumber: string
soLine: string
eqLevel: string
ownerCode: string
weight: string
area: string
volume: string
}
// 查询包装列表
export const getPackagePage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/package/senior', data })
} else {
return await request.get({ url: `/wms/package/page`, params })
}
}
// 查询包装详情
export const getPackage = async (id: number) => {
return await request.get({ url: `/wms/package/get?id=` + id })
}
// 新增包装
export const createPackage = async (data: PackageVO) => {
return await request.post({ url: `/wms/package/create`, data })
}
// 修改包装
export const updatePackage = async (data: PackageVO) => {
return await request.put({ url: `/wms/package/update`, data })
}
// 删除包装
export const deletePackage = async (id: number) => {
return await request.delete({ url: `/wms/package/delete?id=` + id })
}
// 导出包装 Excel
export const exportPackage = async (params) => {
return await request.download({ url: `/wms/package/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/package/get-import-template' })
}

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

@ -22,7 +22,13 @@ export interface PreparetoissueMainVO {
// 查询备料计划主列表
export const getPreparetoissueMainPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/preparetoissue-main/senior', data })
} else {
return await request.get({ url: `/wms/preparetoissue-main/page`, params })
}
}
// 查询备料计划主详情
@ -49,3 +55,8 @@ export const deletePreparetoissueMain = async (id: number) => {
export const exportPreparetoissueMain = async (params) => {
return await request.download({ url: `/wms/preparetoissue-main/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/preparetoissue-main/get-import-template' })
}

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

@ -22,7 +22,13 @@ export interface ProductionMainVO {
// 查询生产计划主列表
export const getProductionMainPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/production-main/senior', data })
} else {
return await request.get({ url: `/wms/production-main/page`, params })
}
}
// 查询生产计划主详情
@ -49,3 +55,8 @@ export const deleteProductionMain = async (id: number) => {
export const exportProductionMain = async (params) => {
return await request.download({ url: `/wms/production-main/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/production-main/get-import-template' })
}

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

@ -32,7 +32,13 @@ export interface PurchaseDetailVO {
// 查询采购订单子列表
export const getPurchaseDetailPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/purchase-detail/senior', data })
} else {
return await request.get({ url: `/wms/purchase-detail/page`, params })
}
}
// 查询采购订单子详情
@ -59,3 +65,8 @@ export const deletePurchaseDetail = async (id: number) => {
export const exportPurchaseDetail = async (params) => {
return await request.download({ url: `/wms/purchase-detail/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/purchase-detail/get-import-template' })
}

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

@ -25,7 +25,13 @@ export interface PurchaseMainVO {
// 查询采购订单主列表
export const getPurchaseMainPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/purchase-main/senior', data })
} else {
return await request.get({ url: `/wms/purchase-main/page`, params })
}
}
// 查询采购订单主详情
@ -52,3 +58,8 @@ export const deletePurchaseMain = async (id: number) => {
export const exportPurchaseMain = async (params) => {
return await request.download({ url: `/wms/purchase-main/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/purchase-main/get-import-template' })
}

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

@ -20,7 +20,13 @@ export interface PurchasePlanMainVO {
// 查询要货计划主列表
export const getPurchasePlanMainPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/purchase-plan-main/senior', data })
} else {
return await request.get({ url: `/wms/purchase-plan-main/page`, params })
}
}
// 查询要货计划主详情
@ -47,3 +53,8 @@ export const deletePurchasePlanMain = async (id: number) => {
export const exportPurchasePlanMain = async (params) => {
return await request.download({ url: `/wms/purchase-plan-main/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/purchase-plan-main/get-import-template' })
}

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

@ -23,7 +23,13 @@ export interface SaleMainVO {
// 查询销售订单主列表
export const getSaleMainPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/sale-main/senior', data })
} else {
return await request.get({ url: `/wms/sale-main/page`, params })
}
}
// 查询销售订单主详情
@ -50,3 +56,8 @@ export const deleteSaleMain = async (id: number) => {
export const exportSaleMain = async (params) => {
return await request.download({ url: `/wms/sale-main/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/sale-main/get-import-template' })
}

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

@ -19,7 +19,13 @@ export interface WorkMainVO {
// 查询生产订单主列表
export const getWorkMainPage = async (params) => {
if (params.isSearch) {
delete params.isSearch
const data = {...params}
return await request.post({ url: '/wms/work-main/senior', data })
} else {
return await request.get({ url: `/wms/work-main/page`, params })
}
}
// 查询生产订单主详情
@ -46,3 +52,8 @@ export const deleteWorkMain = async (id: number) => {
export const exportWorkMain = async (params) => {
return await request.download({ url: `/wms/work-main/export-excel`, params })
}
// 下载用户导入模板
export const importTemplate = () => {
return request.download({ url: '/wms/work-main/get-import-template' })
}

247
src/utils/disposition/defaultButtons.ts

@ -316,6 +316,253 @@ export function mainListApproveBtn(option:any) {
})
}
// 主列表-订单流程-发布按钮
export function mainListOrderPubBtn(option:any) {
return __defaultBtnOption(option,{
label: '发布',
name: 'mainOrderPub',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-订单流程-关闭按钮
export function mainListOrderCloBtn(option:any) {
return __defaultBtnOption(option,{
label: '关闭',
name: 'mainOrderClo',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-订单流程-打开按钮
export function mainListOrderOpeBtn(option:any) {
return __defaultBtnOption(option,{
label: '打开',
name: 'mainOrderOpe',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-订单流程-下架按钮
export function mainListOrderWitBtn(option:any) {
return __defaultBtnOption(option,{
label: '下架',
name: 'mainOrderWit',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-计划流程-打开按钮
export function mainListPlanOpeBtn(option:any) {
return __defaultBtnOption(option,{
label: '打开',
name: 'mainPlanOpe',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-计划流程-关闭按钮
export function mainListPlanCloBtn(option:any) {
return __defaultBtnOption(option,{
label: '关闭',
name: 'mainPlanClo',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-计划流程-提交审批按钮
export function mainListPlanSubBtn(option:any) {
return __defaultBtnOption(option,{
label: '提交审批',
name: 'mainPlanSub',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-计划流程-驳回按钮
export function mainListPlanTurBtn(option:any) {
return __defaultBtnOption(option,{
label: '驳回',
name: 'mainPlanTur',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-计划流程-重置按钮
export function mainListPlanResBtn(option:any) {
return __defaultBtnOption(option,{
label: '重置',
name: 'mainPlanRes',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-计划流程-审批通过按钮
export function mainListPlanAppBtn(option:any) {
return __defaultBtnOption(option,{
label: '审批通过',
name: 'mainPlanApp',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-计划流程-发布按钮
export function mainListPlanPubBtn(option:any) {
return __defaultBtnOption(option,{
label: '发布',
name: 'mainPlanPub',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-计划流程-执行按钮
export function mainListPlanComBtn(option:any) {
return __defaultBtnOption(option,{
label: '执行',
name: 'mainPlanCom',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-要货计划流程-修改按钮
export function mainListPurchasePlanModBtn(option:any) {
return __defaultBtnOption(option,{
label: '修改',
name: 'mainPurPlanMod',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-要货计划流程-下架按钮
export function mainListPurchasePlanWitBtn(option:any) {
return __defaultBtnOption(option,{
label: '下架',
name: 'mainPurPlanWit',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-要货计划流程-不接受按钮
export function mainListPurchasePlanRejBtn(option:any) {
return __defaultBtnOption(option,{
label: '不接受',
name: 'mainPurPlanRej',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-要货计划流程-接受按钮
export function mainListPurchasePlanAccBtn(option:any) {
return __defaultBtnOption(option,{
label: '接受',
name: 'mainPurPlanAcc',
hide: false,
type: 'primary',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-要货计划流程-发布按钮
export function mainListPurchasePlanPubBtn(option:any) {
return __defaultBtnOption(option,{
label: '发布',
name: 'mainPurPlanPub',
hide: false,
type: 'success',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-要货计划流程-关闭按钮
export function mainListPurchasePlanCloBtn(option:any) {
return __defaultBtnOption(option,{
label: '关闭',
name: 'mainPurPlanClo',
hide: false,
type: 'danger',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 主列表-要货计划流程-打开按钮
export function mainListPurchasePlanOpeBtn(option:any) {
return __defaultBtnOption(option,{
label: '打开',
name: 'mainPurPlanOpe',
hide: false,
type: 'warning',
color: '',
link: true, // 文本展现按钮
hasPermi: ''
})
}
// 默认按钮规则
function __defaultBtnOption(option:any,specific:any){
return {

129
src/views/wms/basicDataManage/factoryModeling/enterprise/enterprise.data.ts

@ -0,0 +1,129 @@
import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
import { dateFormatter } from '@/utils/formatTime'
// 表单校验
export const EnterpriseRules = reactive({
code: [required],
shortName: [required],
available: [required],
})
export const Enterprise = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '代码',
field: 'code',
sort: 'custom',
},
{
label: '名称',
field: 'name',
sort: 'custom',
},
{
label: '简称',
field: 'shortName',
sort: 'custom',
},
{
label: '地址',
field: 'address',
sort: 'custom',
},
{
label: '是否可用',
field: 'available',
sort: 'custom',
dictType: DICT_TYPE.TRUE_FALSE,
dictClass: 'string',
table: {
width: 120
},
form: {
component: 'Switch',
value: 'TRUE',
componentProps: {
inactiveValue: 'FALSE',
activeValue: 'TRUE'
}
}
},
{
label: '生效时间',
field: 'activeTime',
sort: 'custom',
formatter: dateFormatter,
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')]
}
},
form: {
component: 'DatePicker',
componentProps: {
type: 'datetime',
valueFormat: 'x'
}
},
},
{
label: '失效时间',
field: 'expireTime',
sort: 'custom',
formatter: dateFormatter,
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')]
}
},
form: {
component: 'DatePicker',
componentProps: {
type: 'datetime',
valueFormat: 'x'
}
},
},
{
label: '备注',
field: 'remark',
sort: 'custom',
},
{
label: '创建时间',
field: 'createTime',
sort: 'custom',
formatter: dateFormatter,
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,
},
{
label: '操作',
field: 'action',
isForm: false,
table: {
width: 150,
fixed: 'right'
}
}
]))

239
src/views/wms/basicDataManage/factoryModeling/enterprise/index.vue

@ -0,0 +1,239 @@
<template>
<!-- <ContentWrap>
<Search :schema="Enterprise.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap> -->
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="Enterprise.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="getList"
:rules="EnterpriseRules"
:formAllSchemas="Enterprise.allSchemas"
:searchTableParams="searchTableParams"
:apiUpdate="EnterpriseApi.updateEnterprise"
:apiCreate="EnterpriseApi.createEnterprise"
@searchTableSuccess="searchTableSuccess"
:isBusiness="false"
/>
<!-- 详情 -->
<Detail ref="detailRef" :isBasic="true" :allSchemas="Enterprise.allSchemas" />
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/enterprise/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import download from '@/utils/download'
import { Enterprise,EnterpriseRules } from './enterprise.data'
import * as EnterpriseApi from '@/api/wms/enterprise'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
defineOptions({ name: 'Enterprise' })
const message = useMessage() //
const { t } = useI18n() //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(Enterprise.allSchemas.tableColumns)
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const searchTableParams = ref([
//{
// formField: 'productItemCode',
// searchTableTitle: '',
// searchTableAllSchemas: Itembasic.allSchemas,
// searchTablePage: ItembasicApi.getItembasicPage
//}
])
//
const searchTableSuccess = (formField, searchField, val, basicFormRef, type, row ) => {
nextTick(() => {
const setV = {}
setV[formField] = val[0][searchField]
basicFormRef.setValues(setV)
})
}
const { tableObject, tableMethods } = useTable({
getListApi: EnterpriseApi.getEnterprisePage //
})
//
const { getList, setSearchParams } = tableMethods
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:enterprise:create'}), //
// defaultButtons.defaultImportBtn({hasPermi:'wms:enterprise:import'}), //
// defaultButtons.defaultExportBtn({hasPermi:'wms:enterprise: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 isShowMainButton = (row,val) => {
if (val.indexOf(row.status) > -1) {
return false
} else {
return true
}
}
// -
const butttondata = [
defaultButtons.mainListEditBtn({hasPermi:'wms:enterprise:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:enterprise:delete'}), //
]
// -
const buttonTableClick = async (val, row) => {
if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const basicFormRef = ref()
const openForm =async (type: string, row?: number) => {
basicFormRef.value.open(type, row)
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await EnterpriseApi.deleteEnterprise(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 EnterpriseApi.exportEnterprise(setSearchParams)
download.excel(data, '企业.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '企业导入模版.xls'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(async () => {
getList()
importTemplateData.templateUrl = await EnterpriseApi.importTemplate()
})
</script>

109
src/views/wms/basicDataManage/labelManage/barcode/barcode.data.ts

@ -0,0 +1,109 @@
import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
// 表单校验
export const BarcodeRules = reactive({
code: [required],
order: [required],
length: [required],
prefixLenght: [required],
entityProperties: [required],
trimEnd: [required],
isEncypt: [required],
})
export const Barcode = useCrudSchemas(reactive<CrudSchema[]>([
{
label: 'id',
field: 'id',
sort: 'custom',
isForm: false,
},
{
label: '代码',
field: 'code',
sort: 'custom',
isSearch: true,
},
{
label: '名称',
field: 'name',
sort: 'custom',
isSearch: true,
},
{
label: '描述',
field: 'description',
sort: 'custom',
isSearch: true,
},
{
label: '顺序',
field: 'order',
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
},
},
{
label: '长度',
field: 'length',
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
},
},
{
label: '前缀长度',
field: 'prefixLenght',
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
},
},
{
label: '前缀字符',
field: 'prefixChar',
sort: 'custom',
},
{
label: '实体属性',
field: 'entityProperties',
sort: 'custom',
},
{
label: '加密方法',
field: 'encyptMethod',
sort: 'custom',
},
{
label: '主表ID',
field: 'masterId',
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
},
},
{
label: '截断尾部空格',
field: 'trimEnd',
sort: 'custom',
},
{
label: '是否加密',
field: 'isEncypt',
sort: 'custom',
},
{
label: '操作',
field: 'action',
isForm: false,
table: {
width: 150,
fixed: 'right'
}
}
]))

244
src/views/wms/basicDataManage/labelManage/barcode/index.vue

@ -0,0 +1,244 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<Search :schema="Barcode.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="Barcode.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="getList"
:rules="BarcodeRules"
:formAllSchemas="Barcode.allSchemas"
:searchTableParams="searchTableParams"
:apiUpdate="BarcodeApi.updateBom"
:apiCreate="BarcodeApi.createBom"
@searchTableSuccess="searchTableSuccess"
:isBusiness="false"
/>
<!-- 详情 -->
<Detail ref="detailRef" :isBasic="true" :allSchemas="Barcode.allSchemas" />
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/barcode/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import download from '@/utils/download'
import { Barcode,BarcodeRules } from './barcode.data'
import * as BarcodeApi from '@/api/wms/barcode'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
defineOptions({ name: 'Barcode' })
const message = useMessage() //
const { t } = useI18n() //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(Barcode.allSchemas.tableColumns)
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const searchTableParams = ref([
//{
// formField: 'productItemCode',
// searchTableTitle: '',
// searchTableAllSchemas: Itembasic.allSchemas,
// searchTablePage: ItembasicApi.getItembasicPage
//}
])
//
const searchTableSuccess = (formField, searchField, val, formRef, type, row ) => {
nextTick(() => {
const setV = {}
setV[formField] = val[0][searchField]
formRef.setValues(setV)
}
)
}
const { tableObject, tableMethods } = useTable({
getListApi: BarcodeApi.getBarcodePage //
})
//
const { getList, setSearchParams } = tableMethods
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:barcode:create'}), //
// defaultButtons.defaultImportBtn({hasPermi:'wms:barcode:import'}), //
// defaultButtons.defaultExportBtn({hasPermi:'wms:barcode: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 isShowMainButton = (row,val) => {
if (val.indexOf(row.status) > -1) {
return false
} else {
return true
}
}
// -
const butttondata = (row) => {
return [
defaultButtons.mainListEditBtn({hasPermi:'wms:barcode:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:barcode:delete'}), //
]
}
// -
const buttonTableClick = async (val, row) => {
if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const formRef = ref()
const openForm =async (type: string, row?: number) => {
tableData.value = [] //
formRef.value.open(type, row)
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await BarcodeApi.deleteBarcode(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 BarcodeApi.exportBarcode(setSearchParams)
download.excel(data, '条码片段.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '条码片段导入模版.xls'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(async () => {
getList()
importTemplateData.templateUrl = await BarcodeApi.importTemplate()
})
</script>

240
src/views/wms/basicDataManage/labelManage/package/index.vue

@ -0,0 +1,240 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<Search :schema="Package.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="Package.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 #number="{row}">
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
<span>{{ row.number }}</span>
</el-button>
</template>
<template #action="{ row }">
<ButtonBase :Butttondata="butttondata" @button-base-click="buttonTableClick($event,row)" />
</template>
</Table>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<BasicForm
ref="basicFormRef"
@success="getList"
:rules="PackageRules"
:formAllSchemas="Package.allSchemas"
:searchTableParams="searchTableParams"
:apiUpdate="PackageApi.updateBom"
:apiCreate="PackageApi.createBom"
@searchTableSuccess="searchTableSuccess"
:isBusiness="false"
/>
<!-- 详情 -->
<Detail ref="detailRef" :isBasic="true" :allSchemas="Package.allSchemas" />
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/package/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import download from '@/utils/download'
import { Package,PackageRules } from './package.data'
import * as PackageApi from '@/api/wms/package'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
defineOptions({ name: 'Package' })
const message = useMessage() //
const { t } = useI18n() //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(Package.allSchemas.tableColumns)
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const searchTableParams = ref([
//{
// formField: 'productItemCode',
// searchTableTitle: '',
// searchTableAllSchemas: Itembasic.allSchemas,
// searchTablePage: ItembasicApi.getItembasicPage
//}
])
//
const searchTableSuccess = (formField, searchField, val, basicFormRef, type, row ) => {
nextTick(() => {
const setV = {}
setV[formField] = val[0][searchField]
basicFormRef.setValues(setV)
})
}
const { tableObject, tableMethods } = useTable({
getListApi: PackageApi.getPackagePage //
})
//
const { getList, setSearchParams } = tableMethods
//
const HeadButttondata = [
// defaultButtons.defaultAddBtn({hasPermi:'wms:package:create'}), //
// defaultButtons.defaultImportBtn({hasPermi:'wms:package:import'}), //
defaultButtons.defaultExportBtn({hasPermi:'wms:package: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 isShowMainButton = (row,val) => {
if (val.indexOf(row.status) > -1) {
return false
} else {
return true
}
}
// -
const butttondata = (row) => {
return [
defaultButtons.mainListEditBtn({hasPermi:'wms:package:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:package:delete'}), //
]
}
// -
const buttonTableClick = async (val, row) => {
if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const basicFormRef = ref()
const openForm =async (type: string, row?: number) => {
basicFormRef.value.open(type, row)
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await PackageApi.deletePackage(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 PackageApi.exportPackage(setSearchParams)
download.excel(data, '包装.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '包装导入模版.xls'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(async () => {
getList()
importTemplateData.templateUrl = await PackageApi.importTemplate()
})
</script>

280
src/views/wms/basicDataManage/labelManage/package/package.data.ts

@ -0,0 +1,280 @@
import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
import { dateFormatter } from '@/utils/formatTime'
// 表单校验
export const PackageRules = reactive({
number: [required],
itemCode: [required],
itemName: [required],
})
export const Package = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '包装号',
field: 'number',
sort: 'custom',
isSearch: true,
},
{
label: '物料代码',
field: 'itemCode',
sort: 'custom',
isSearch: true,
},
{
label: '物品名称',
field: 'itemName',
sort: 'custom',
},
{
label: '物品描述1',
field: 'itemDesc1',
sort: 'custom',
},
{
label: '物品描述2',
field: 'itemDesc2',
sort: 'custom',
},
{
label: '批次',
field: 'batch',
sort: 'custom',
isSearch: true,
},
{
label: '替代批次',
field: 'altBatch',
sort: 'custom',
},
{
label: '生产日期',
field: 'produceDate',
sort: 'custom',
formatter: dateFormatter,
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')]
}
},
form: {
component: 'DatePicker',
componentProps: {
type: 'datetime',
valueFormat: 'x'
}
},
},
{
label: '有效期(日)',
field: 'validityDays',
sort: 'custom',
form: {
component: 'InputNumber',
value: 0
},
},
{
label: '失效日期',
field: 'expireDate',
sort: 'custom',
formatter: dateFormatter,
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')]
}
},
form: {
component: 'DatePicker',
componentProps: {
type: 'datetime',
valueFormat: 'x'
}
},
},
{
label: '计量单位',
field: 'uom',
sort: 'custom',
dictType: DICT_TYPE.UOM,
dictClass: 'string', // 默认都是字符串类型其他暂不考虑
form: {
component: 'SelectV2'
},
},
{
label: '数量',
field: 'qty',
sort: 'custom',
},
{
label: '替代计量单位',
field: 'altUom',
sort: 'custom',
dictType: DICT_TYPE.UOM,
dictClass: 'string', // 默认都是字符串类型其他暂不考虑
form: {
component: 'SelectV2'
},
},
{
label: '替代数量',
field: 'altQty',
sort: 'custom',
},
{
label: '转换率',
field: 'convertRate',
sort: 'custom',
},
{
label: '标包数量',
field: 'stdPackQty',
sort: 'custom',
},
{
label: '标包单位',
field: 'stdPackUnit',
sort: 'custom',
dictType: DICT_TYPE.PACK_UNIT,
dictClass: 'string', // 默认都是字符串类型其他暂不考虑
form: {
component: 'SelectV2'
},
},
{
label: '仓库代码',
field: 'toWarehouseCode',
sort: 'custom',
},
{
label: '月台代码',
field: 'toDockCode',
sort: 'custom',
},
{
label: '库位代码',
field: 'toLocationCode',
sort: 'custom',
},
{
label: '供应商代码',
field: 'supplierCode',
sort: 'custom',
},
{
label: '供应商物品代码',
field: 'supplierItemCode',
sort: 'custom',
},
{
label: '采购订单号',
field: 'poNumber',
sort: 'custom',
},
{
label: '采购订单行',
field: 'poLine',
sort: 'custom',
},
{
label: '采购计划单号',
field: 'rpNumber',
sort: 'custom',
},
{
label: '发货单号',
field: 'asnNumber',
sort: 'custom',
},
{
label: '生产订单号',
field: 'woNumber',
sort: 'custom',
},
{
label: '生产订单行',
field: 'woLine',
sort: 'custom',
},
{
label: '生产线代码',
field: 'productionLineCode',
sort: 'custom',
},
{
label: '班组代码',
field: 'teamCode',
sort: 'custom',
},
{
label: '班次代码',
field: 'shiftCode',
sort: 'custom',
},
{
label: '客户代码',
field: 'customerCode',
sort: 'custom',
},
{
label: '客户月台代码',
field: 'customerDockCode',
sort: 'custom',
},
{
label: '客户物品代码',
field: 'customerItemCode',
sort: 'custom',
},
{
label: '销售订单号',
field: 'soNumber',
sort: 'custom',
},
{
label: '销售订单行',
field: 'soLine',
sort: 'custom',
},
{
label: '质量等级',
field: 'eqLevel',
sort: 'custom',
},
{
label: '货主代码',
field: 'ownerCode',
sort: 'custom',
},
{
label: '重量',
field: 'weight',
sort: 'custom',
},
{
label: '面积',
field: 'area',
sort: 'custom',
},
{
label: '体积',
field: 'volume',
sort: 'custom',
},
// {
// label: '操作',
// field: 'action',
// isForm: false,
// table: {
// width: 150,
// fixed: 'right'
// }
// }
]))

669
src/views/wms/countManage/count/countPlanMain/index.vue

@ -1,438 +1,238 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="盘点类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择盘点类型" clearable class="!w-240px">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.COUNT_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="执行周期" prop="crontab">
<el-input
v-model="queryParams.crontab"
placeholder="请输入执行周期"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="维度" prop="dimension">
<el-select
v-model="queryParams.dimension"
placeholder="请选择维度"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.COUNT_DIMENSION)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="限值" prop="limitedValue">
<el-input
v-model="queryParams.limitedValue"
placeholder="请输入限值"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="物品忽略名单" prop="ignoreListOfItem">
<el-input
v-model="queryParams.ignoreListOfItem"
placeholder="请输入物品忽略名单"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="库位忽略名单" prop="ignoreListOfLocation">
<el-input
v-model="queryParams.ignoreListOfLocation"
placeholder="请输入库位忽略名单"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="盘点范围列表" prop="scopeList">
<el-input
v-model="queryParams.scopeList"
placeholder="请输入盘点范围列表"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单据号" prop="number">
<el-input
v-model="queryParams.number"
placeholder="请输入单据号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="业务类型" prop="businessType">
<el-input
v-model="queryParams.businessType"
placeholder="请输入业务类型"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建者用户名" prop="creator">
<el-input
v-model="queryParams.creator"
placeholder="请输入创建者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="开始时间" prop="beginTime">
<el-date-picker
v-model="queryParams.beginTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-date-picker
v-model="queryParams.endTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PLAN_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="最后更新时间" prop="updateTime">
<el-date-picker
v-model="queryParams.updateTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="最后更新者用户名" prop="updater">
<el-input
v-model="queryParams.updater"
placeholder="请输入最后更新者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="快照盘点" prop="isSnapshot">
<el-input
v-model="queryParams.isSnapshot"
placeholder="请输入快照盘点"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="冻结盘点" prop="isFreeze">
<el-input
v-model="queryParams.isFreeze"
placeholder="请输入冻结盘点"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="盘点空库位" prop="isCountEmptyLocation">
<el-input
v-model="queryParams.isCountEmptyLocation"
placeholder="请输入盘点空库位"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="盘点零库存" prop="isCountZeroInventory">
<el-input
v-model="queryParams.isCountZeroInventory"
placeholder="请输入盘点零库存"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="盘点负库存" prop="isCountNegativeInventory">
<el-input
v-model="queryParams.isCountNegativeInventory"
placeholder="请输入盘点负库存"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="明盘" prop="isOpenCount">
<el-input
v-model="queryParams.isOpenCount"
placeholder="请输入明盘"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="是否可用" prop="available">
<el-input
v-model="queryParams.available"
placeholder="请输入是否可用"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item>
<el-button type="info" plain @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button type="info" plain @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
@click="openForm('create')"
v-hasPermi="['wms:count-plan-main:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['wms:count-plan-main:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
<Search :schema="CountPlanMain.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="CountPlanMain.allSchemas"
/>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="盘点类型" align="center" prop="type" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.COUNT_TYPE" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column label="执行周期" align="center" prop="crontab" width="150px" />
<el-table-column label="维度" align="center" prop="dimension" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.COUNT_DIMENSION" :value="scope.row.dimension" />
</template>
</el-table-column>
<el-table-column label="限值" align="center" prop="limitedValue" width="150px" />
<el-table-column label="物品忽略名单" align="center" prop="ignoreListOfItem" width="150px" />
<el-table-column label="库位忽略名单" align="center" prop="ignoreListOfLocation" width="150px" />
<el-table-column label="盘点范围列表" align="center" prop="scopeList" width="150px" />
<el-table-column label="单据号" align="center" prop="number" width="150px" />
<el-table-column label="业务类型" align="center" prop="businessType" width="150px" />
<el-table-column label="备注" align="center" prop="remark" width="150px" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="创建者用户名" align="center" prop="creator" width="150px" />
<el-table-column
label="开始时间"
align="center"
prop="beginTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column
label="结束时间"
align="center"
prop="endTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="状态" align="center" prop="status" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.PLAN_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column
label="最后更新时间"
align="center"
prop="updateTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="最后更新者用户名" align="center" prop="updater" width="150px" />
<el-table-column label="快照盘点" align="center" prop="isSnapshot" width="150px" />
<el-table-column label="冻结盘点" align="center" prop="isFreeze" width="150px" />
<el-table-column label="盘点空库位" align="center" prop="isCountEmptyLocation" width="150px" />
<el-table-column label="盘点零库存" align="center" prop="isCountZeroInventory" width="150px" />
<el-table-column label="盘点负库存" align="center" prop="isCountNegativeInventory" width="150px" />
<el-table-column label="明盘" align="center" prop="isOpenCount" width="150px" />
<el-table-column label="是否可用" align="center" prop="available" width="150px" />
<el-table-column label="操作" align="center" width="150px" fixed="right">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['wms:count-plan-main:update']"
>
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['wms:count-plan-main:delete']"
<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 #number="{row}">
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
<span>{{ row.number }}</span>
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<template #action="{ row }">
<ButtonBase :Butttondata="butttondata" @button-base-click="buttonTableClick($event,row)" />
</template>
</Table>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<CountPlanMainForm ref="formRef" @success="getList" />
<BasicForm
ref="formRef"
@success="getList"
:rules="CountPlanMainRules"
:formAllSchemas="CountPlanMain.allSchemas"
:searchTableParams="searchTableParams"
:tableAllSchemas="CountPlanDetail.allSchemas"
:tableFormRules="CountPlanDetailRules"
:tableData="tableData"
:apiUpdate="CountPlanMainApi.updateCountPlanMain"
:apiCreate="CountPlanMainApi.createCountPlanMain"
:isBusiness="true"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@searchTableSuccess="searchTableSuccess"
@submitForm="submitForm"
/>
<!-- 详情 -->
<Detail
ref="detailRef"
:isBasic="false"
:allSchemas="CountPlanMain.allSchemas"
:detailAllSchemas="CountPlanDetail.allSchemas"
:detailAllSchemasRules="CountPlanDetailRules"
:searchTableParams="searchTableParams"
:apiCreate="CountPlanDetailApi.createCountPlanDetail"
:apiUpdate="CountPlanDetailApi.updateCountPlanDetail"
:apiPage="CountPlanDetailApi.getCountPlanDetailPage"
:apiDelete="CountPlanDetailApi.deleteCountPlanDetail"
:Echo="Echo"
/>
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/count-plan-main/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { CountPlanMain,CountPlanMainRules,CountPlanDetail,CountPlanDetailRules } from './countPlanMain.data'
import * as CountPlanMainApi from '@/api/wms/countPlanMain'
import CountPlanMainForm from './CountPlanMainForm.vue'
import * as CountPlanDetailApi from '@/api/wms/countPlanDetail'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
//
defineOptions({ name: 'CountPlanMain' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
type: null,
crontab: null,
dimension: null,
limitedValue: null,
ignoreListOfItem: null,
ignoreListOfLocation: null,
scopeList: null,
number: null,
businessType: null,
remark: null,
createTime: [],
creator: null,
beginTime: [],
endTime: [],
status: null,
updateTime: [],
updater: null,
isSnapshot: null,
isFreeze: null,
isCountEmptyLocation: null,
isCountZeroInventory: null,
isCountNegativeInventory: null,
isOpenCount: null,
available: null
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(CountPlanMain.allSchemas.tableColumns)
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await CountPlanMainApi.getCountPlanMainPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const searchTableParams = ref([
//{
// formField: 'productItemCode',
// searchTableTitle: '',
// searchTableAllSchemas: Itembasic.allSchemas,
// searchTablePage: ItembasicApi.getItembasicPage
//}
])
//
const searchTableSuccess = (formField, searchField, val, formRef, type, row ) => {
nextTick(() => {
if (type == 'tableForm') {
//
//row[formField] = val[0][searchField]
//row['poLine'] = val[0]['poLine']
//row['batch'] = val[0]['toBatch']
//row['altBatch'] = val[0]['altBatch']
//row['itemCode'] = val[0]['itemCode']
//row['itemName'] = val[0]['itemName']
//row['itemDesc1'] = val[0]['itemDesc1']
//row['itemDesc2'] = val[0]['itemDesc2']
//row['projectCode'] = val[0]['projectCode']
//row['qty'] = val[0]['qty']
//row['uom'] = val[0]['uom']
} else {
const setV = {}
setV[formField] = val[0][searchField]
//setV['ppNumber'] = val[0]['ppNumber']
//setV['supplierCode'] = val[0]['supplierCode']
formRef.setValues(setV)
}
})
}
//
// const Echo = ['ppNumber','poLine', 'batch', 'altBatch', 'itemCode', 'itemName', 'itemDesc1', 'itemDesc2', 'projectCode', 'qty', 'uom']
const Echo = []
const { tableObject, tableMethods } = useTable({
getListApi: CountPlanMainApi.getCountPlanMainPage //
})
//
const { getList, setSearchParams } = tableMethods
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:count-plan-main:create'}), //
defaultButtons.defaultImportBtn({hasPermi:'wms:count-plan-main:import'}), //
defaultButtons.defaultExportBtn({hasPermi:'wms:count-plan-main:export'}), //
defaultButtons.defaultFreshBtn(null), //
defaultButtons.defaultFilterBtn(null), //
defaultButtons.defaultSetBtn(null), //
// {
// label: '',
// name: 'zdy',
// hide: false,
// type: 'primary',
// icon: 'Select',
// color: ''
// },
]
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
//
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 isShowMainButton = (row,val) => {
if (val.indexOf(row.status) > -1) {
return false
} else {
return true
}
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
// -
const butttondata = (row) => {
return [
defaultButtons.mainListCloseBtn({hide:isShowMainButton(row,['REQUEST_NEW','REQUEST_REVIEWING','REQUEST_AGREED','REQUEST_REFUSED','REQUEST_HANDLING'])}), //
defaultButtons.mainListReAddBtn({hide:isShowMainButton(row,['REQUEST_REFUSED','REQUEST_CANCELLED'])}), //
defaultButtons.mainListSubmitBtn({hide:isShowMainButton(row,['REQUEST_NEW'])}), //
defaultButtons.mainListTurnDownBtn({hide:isShowMainButton(row,['REQUEST_REVIEWING'])}), //
defaultButtons.mainListApproveBtn({hide:isShowMainButton(row,['REQUEST_REVIEWING'])}), //
defaultButtons.mainListEditBtn({hasPermi:'wms:count-plan-main:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:count-plan-main:delete'}), //
]
}
// -
const buttonTableClick = async (val, row) => {
if (val == 'mainClose') { //
console.log('列表-操作按钮事件-关闭')
} else if (val == 'mainReAdd') { //
console.log('列表-操作按钮事件-重新添加')
} else if (val == 'mainSubmit') { //
console.log('列表-操作按钮事件-提交审批')
} else if (val == 'mainTurnDown') { //
console.log('列表-操作按钮事件-驳回')
} else if (val == 'mainApprove') { //
console.log('列表-操作按钮事件-审批通过')
} else if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
const openForm =async (type: string, row?: number) => {
tableData.value = [] //
formRef.value.open(type, row)
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue)
}
/** 删除按钮操作 */
@ -449,13 +249,14 @@ const handleDelete = async (id: number) => {
}
/** 导出按钮操作 */
const exportLoading = ref(false) //
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await CountPlanMainApi.exportCountPlanMain(queryParams)
const data = await CountPlanMainApi.exportCountPlanMain(setSearchParams)
download.excel(data, '盘点计划主.xls')
} catch {
} finally {
@ -463,8 +264,72 @@ const handleExport = async () => {
}
}
/**
* tableForm方法
*/
const tableFormKeys = {}
CountPlanDetail.allSchemas.tableFormColumns.forEach(item => {
tableFormKeys[item.field] = item.default ? item.default : ''
})
const tableData = ref([])
//
const handleAddTable = () => {
tableData.value.push(JSON.parse(JSON.stringify(tableFormKeys)))
}
//
const handleDeleteTable = (item, index) => {
tableData.value.splice(index, 1)
}
//
const submitForm = async (formType, data) => {
data.subList = tableData.value //
try {
if (formType === 'create') {
await CountPlanMainApi.createCountPlanMain(data)
message.success(t('common.createSuccess'))
} else {
await CountPlanMainApi.updateCountPlanMain(data)
message.success(t('common.updateSuccess'))
}
formRef.value.dialogVisible = false
//
getList()
} finally {
formRef.value.formLoading = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '盘点计划主导入模版.xls'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(() => {
onMounted(async () => {
getList()
importTemplateData.templateUrl = await CountPlanMainApi.importTemplate()
})
</script>

541
src/views/wms/deliversettlementManage/deliverplan/deliverPlanMain/index.vue

@ -1,310 +1,238 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="客户" prop="customerCode">
<el-input
v-model="queryParams.customerCode"
placeholder="请输入客户"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="计划日期" prop="planDate">
<el-date-picker
v-model="queryParams.planDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单据号" prop="number">
<el-input
v-model="queryParams.number"
placeholder="请输入单据号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="业务类型" prop="businessType">
<el-input
v-model="queryParams.businessType"
placeholder="请输入业务类型"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建者用户名" prop="creator">
<el-input
v-model="queryParams.creator"
placeholder="请输入创建者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="开始时间" prop="beginTime">
<el-date-picker
v-model="queryParams.beginTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-date-picker
v-model="queryParams.endTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PLAN_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="最后更新时间" prop="updateTime">
<el-date-picker
v-model="queryParams.updateTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="最后更新者用户名" prop="updater">
<el-input
v-model="queryParams.updater"
placeholder="请输入最后更新者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="是否可用" prop="available">
<el-input
v-model="queryParams.available"
placeholder="请输入是否可用"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item>
<el-button type="info" plain @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button type="info" plain @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
@click="openForm('create')"
v-hasPermi="['wms:deliver-plan-main:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['wms:deliver-plan-main:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
<Search :schema="DeliverPlanMain.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="DeliverPlanMain.allSchemas"
/>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="客户" align="center" prop="customerCode" width="150px" />
<el-table-column
label="计划日期"
align="center"
prop="planDate"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="单据号" align="center" prop="number" width="150px" />
<el-table-column label="业务类型" align="center" prop="businessType" width="150px" />
<el-table-column label="备注" align="center" prop="remark" width="150px" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="创建者用户名" align="center" prop="creator" width="150px" />
<el-table-column
label="开始时间"
align="center"
prop="beginTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column
label="结束时间"
align="center"
prop="endTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="状态" align="center" prop="status" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.PLAN_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column
label="最后更新时间"
align="center"
prop="updateTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="最后更新者用户名" align="center" prop="updater" width="150px" />
<el-table-column label="是否可用" align="center" prop="available" width="150px" />
<el-table-column label="操作" align="center" width="150px" fixed="right">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['wms:deliver-plan-main:update']"
>
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['wms:deliver-plan-main:delete']"
<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 #number="{row}">
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
<span>{{ row.number }}</span>
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<template #action="{ row }">
<ButtonBase :Butttondata="butttondata" @button-base-click="buttonTableClick($event,row)" />
</template>
</Table>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<DeliverPlanMainForm ref="formRef" @success="getList" />
<BasicForm
ref="formRef"
@success="getList"
:rules="DeliverPlanMainRules"
:formAllSchemas="DeliverPlanMain.allSchemas"
:searchTableParams="searchTableParams"
:tableAllSchemas="DeliverPlanDetail.allSchemas"
:tableFormRules="DeliverPlanDetailRules"
:tableData="tableData"
:apiUpdate="DeliverPlanMainApi.updateDeliverPlanMain"
:apiCreate="DeliverPlanMainApi.createDeliverPlanMain"
:isBusiness="true"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@searchTableSuccess="searchTableSuccess"
@submitForm="submitForm"
/>
<!-- 详情 -->
<Detail
ref="detailRef"
:isBasic="false"
:allSchemas="DeliverPlanMain.allSchemas"
:detailAllSchemas="DeliverPlanDetail.allSchemas"
:detailAllSchemasRules="DeliverPlanDetailRules"
:searchTableParams="searchTableParams"
:apiCreate="DeliverPlanDetailApi.createDeliverPlanDetail"
:apiUpdate="DeliverPlanDetailApi.updateDeliverPlanDetail"
:apiPage="DeliverPlanDetailApi.getDeliverPlanDetailPage"
:apiDelete="DeliverPlanDetailApi.deleteDeliverPlanDetail"
:Echo="Echo"
/>
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/deliver-plan-main/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { DeliverPlanMain,DeliverPlanMainRules,DeliverPlanDetail,DeliverPlanDetailRules } from './deliverPlanMain.data'
import * as DeliverPlanMainApi from '@/api/wms/deliverPlanMain'
import DeliverPlanMainForm from './DeliverPlanMainForm.vue'
import * as DeliverPlanDetailApi from '@/api/wms/deliverPlanDetail'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
//
defineOptions({ name: 'DeliverPlanMain' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
customerCode: null,
planDate: [],
number: null,
businessType: null,
remark: null,
createTime: [],
creator: null,
beginTime: [],
endTime: [],
status: null,
updateTime: [],
updater: null,
available: null
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(DeliverPlanMain.allSchemas.tableColumns)
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await DeliverPlanMainApi.getDeliverPlanMainPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const searchTableParams = ref([
//{
// formField: 'productItemCode',
// searchTableTitle: '',
// searchTableAllSchemas: Itembasic.allSchemas,
// searchTablePage: ItembasicApi.getItembasicPage
//}
])
//
const searchTableSuccess = (formField, searchField, val, formRef, type, row ) => {
nextTick(() => {
if (type == 'tableForm') {
//
//row[formField] = val[0][searchField]
//row['poLine'] = val[0]['poLine']
//row['batch'] = val[0]['toBatch']
//row['altBatch'] = val[0]['altBatch']
//row['itemCode'] = val[0]['itemCode']
//row['itemName'] = val[0]['itemName']
//row['itemDesc1'] = val[0]['itemDesc1']
//row['itemDesc2'] = val[0]['itemDesc2']
//row['projectCode'] = val[0]['projectCode']
//row['qty'] = val[0]['qty']
//row['uom'] = val[0]['uom']
} else {
const setV = {}
setV[formField] = val[0][searchField]
//setV['ppNumber'] = val[0]['ppNumber']
//setV['supplierCode'] = val[0]['supplierCode']
formRef.setValues(setV)
}
})
}
//
// const Echo = ['ppNumber','poLine', 'batch', 'altBatch', 'itemCode', 'itemName', 'itemDesc1', 'itemDesc2', 'projectCode', 'qty', 'uom']
const Echo = []
const { tableObject, tableMethods } = useTable({
getListApi: DeliverPlanMainApi.getDeliverPlanMainPage //
})
//
const { getList, setSearchParams } = tableMethods
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:deliver-plan-main:create'}), //
defaultButtons.defaultImportBtn({hasPermi:'wms:deliver-plan-main:import'}), //
defaultButtons.defaultExportBtn({hasPermi:'wms:deliver-plan-main:export'}), //
defaultButtons.defaultFreshBtn(null), //
defaultButtons.defaultFilterBtn(null), //
defaultButtons.defaultSetBtn(null), //
// {
// label: '',
// name: 'zdy',
// hide: false,
// type: 'primary',
// icon: 'Select',
// color: ''
// },
]
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
//
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 isShowMainButton = (row,val) => {
if (val.indexOf(row.status) > -1) {
return false
} else {
return true
}
}
// -
const butttondata = (row) => {
return [
defaultButtons.mainListCloseBtn({hide:isShowMainButton(row,['REQUEST_NEW','REQUEST_REVIEWING','REQUEST_AGREED','REQUEST_REFUSED','REQUEST_HANDLING'])}), //
defaultButtons.mainListReAddBtn({hide:isShowMainButton(row,['REQUEST_REFUSED','REQUEST_CANCELLED'])}), //
defaultButtons.mainListSubmitBtn({hide:isShowMainButton(row,['REQUEST_NEW'])}), //
defaultButtons.mainListTurnDownBtn({hide:isShowMainButton(row,['REQUEST_REVIEWING'])}), //
defaultButtons.mainListApproveBtn({hide:isShowMainButton(row,['REQUEST_REVIEWING'])}), //
defaultButtons.mainListEditBtn({hasPermi:'wms:deliver-plan-main:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:deliver-plan-main:delete'}), //
]
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
// -
const buttonTableClick = async (val, row) => {
if (val == 'mainClose') { //
console.log('列表-操作按钮事件-关闭')
} else if (val == 'mainReAdd') { //
console.log('列表-操作按钮事件-重新添加')
} else if (val == 'mainSubmit') { //
console.log('列表-操作按钮事件-提交审批')
} else if (val == 'mainTurnDown') { //
console.log('列表-操作按钮事件-驳回')
} else if (val == 'mainApprove') { //
console.log('列表-操作按钮事件-审批通过')
} else if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
const openForm =async (type: string, row?: number) => {
tableData.value = [] //
formRef.value.open(type, row)
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue)
}
/** 删除按钮操作 */
@ -321,13 +249,14 @@ const handleDelete = async (id: number) => {
}
/** 导出按钮操作 */
const exportLoading = ref(false) //
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await DeliverPlanMainApi.exportDeliverPlanMain(queryParams)
const data = await DeliverPlanMainApi.exportDeliverPlanMain(setSearchParams)
download.excel(data, '发货计划主.xls')
} catch {
} finally {
@ -335,8 +264,72 @@ const handleExport = async () => {
}
}
/**
* tableForm方法
*/
const tableFormKeys = {}
DeliverPlanDetail.allSchemas.tableFormColumns.forEach(item => {
tableFormKeys[item.field] = item.default ? item.default : ''
})
const tableData = ref([])
//
const handleAddTable = () => {
tableData.value.push(JSON.parse(JSON.stringify(tableFormKeys)))
}
//
const handleDeleteTable = (item, index) => {
tableData.value.splice(index, 1)
}
//
const submitForm = async (formType, data) => {
data.subList = tableData.value //
try {
if (formType === 'create') {
await DeliverPlanMainApi.createDeliverPlanMain(data)
message.success(t('common.createSuccess'))
} else {
await DeliverPlanMainApi.updateDeliverPlanMain(data)
message.success(t('common.updateSuccess'))
}
formRef.value.dialogVisible = false
//
getList()
} finally {
formRef.value.formLoading = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '发货计划主导入模版.xls'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(() => {
onMounted(async () => {
getList()
importTemplateData.templateUrl = await DeliverPlanMainApi.importTemplate()
})
</script>

587
src/views/wms/deliversettlementManage/deliverplan/saleMain/index.vue

@ -1,357 +1,237 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="供应商代码" prop="customerCode">
<el-input
v-model="queryParams.customerCode"
placeholder="请输入供应商代码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="订单类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择订单类型" clearable class="!w-240px">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.SALE_ORDER_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="订单日期" prop="orderDate">
<el-date-picker
v-model="queryParams.orderDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="截止日期" prop="dueDate">
<el-date-picker
v-model="queryParams.dueDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="版本" prop="version">
<el-input
v-model="queryParams.version"
placeholder="请输入版本"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="税率" prop="taxRate">
<el-input
v-model="queryParams.taxRate"
placeholder="请输入税率"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="联系人姓名" prop="contactName">
<el-input
v-model="queryParams.contactName"
placeholder="请输入联系人姓名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="联系人电话" prop="contactPhone">
<el-input
v-model="queryParams.contactPhone"
placeholder="请输入联系人电话"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="联系人电子邮件" prop="contactEmail">
<el-input
v-model="queryParams.contactEmail"
placeholder="请输入联系人电子邮件"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单据号" prop="number">
<el-input
v-model="queryParams.number"
placeholder="请输入单据号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="业务类型" prop="businessType">
<el-input
v-model="queryParams.businessType"
placeholder="请输入业务类型"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建者用户名" prop="creator">
<el-input
v-model="queryParams.creator"
placeholder="请输入创建者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="最后更新时间" prop="updateTime">
<el-date-picker
v-model="queryParams.updateTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="最后更新者用户名" prop="updater">
<el-input
v-model="queryParams.updater"
placeholder="请输入最后更新者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="当前阶段" prop="currentStage">
<el-input
v-model="queryParams.currentStage"
placeholder="请输入当前阶段"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="是否可用" prop="available">
<el-input
v-model="queryParams.available"
placeholder="请输入是否可用"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item>
<el-button type="info" plain @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button type="info" plain @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
@click="openForm('create')"
v-hasPermi="['wms:sale-main:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['wms:sale-main:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
<Search :schema="SaleMain.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="SaleMain.allSchemas"
/>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="供应商代码" align="center" prop="customerCode" width="150px" />
<el-table-column label="订单类型" align="center" prop="type" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.SALE_ORDER_TYPE" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column
label="订单日期"
align="center"
prop="orderDate"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column
label="截止日期"
align="center"
prop="dueDate"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="版本" align="center" prop="version" width="150px" />
<el-table-column label="税率" align="center" prop="taxRate" width="150px" />
<el-table-column label="联系人姓名" align="center" prop="contactName" width="150px" />
<el-table-column label="联系人电话" align="center" prop="contactPhone" width="150px" />
<el-table-column label="联系人电子邮件" align="center" prop="contactEmail" width="150px" />
<el-table-column label="单据号" align="center" prop="number" width="150px" />
<el-table-column label="业务类型" align="center" prop="businessType" width="150px" />
<el-table-column label="备注" align="center" prop="remark" width="150px" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="创建者用户名" align="center" prop="creator" width="150px" />
<el-table-column
label="最后更新时间"
align="center"
prop="updateTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="最后更新者用户名" align="center" prop="updater" width="150px" />
<el-table-column label="当前阶段" align="center" prop="currentStage" width="150px" />
<el-table-column label="是否可用" align="center" prop="available" width="150px" />
<el-table-column label="操作" align="center" width="150px" fixed="right">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['wms:sale-main:update']"
>
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['wms:sale-main:delete']"
<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 #number="{row}">
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
<span>{{ row.number }}</span>
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<template #action="{ row }">
<ButtonBase :Butttondata="butttondata" @button-base-click="buttonTableClick($event,row)" />
</template>
</Table>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<SaleMainForm ref="formRef" @success="getList" />
<BasicForm
ref="formRef"
@success="getList"
:rules="SaleMainRules"
:formAllSchemas="SaleMain.allSchemas"
:searchTableParams="searchTableParams"
:tableAllSchemas="SaleDetail.allSchemas"
:tableFormRules="SaleDetailRules"
:tableData="tableData"
:apiUpdate="SaleMainApi.updateSaleMain"
:apiCreate="SaleMainApi.createSaleMain"
:isBusiness="true"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@searchTableSuccess="searchTableSuccess"
@submitForm="submitForm"
/>
<!-- 详情 -->
<Detail
ref="detailRef"
:isBasic="false"
:allSchemas="SaleMain.allSchemas"
:detailAllSchemas="SaleDetail.allSchemas"
:detailAllSchemasRules="SaleDetailRules"
:searchTableParams="searchTableParams"
:apiCreate="SaleDetailApi.createSaleDetail"
:apiUpdate="SaleDetailApi.updateSaleDetail"
:apiPage="SaleDetailApi.getSaleDetailPage"
:apiDelete="SaleDetailApi.deleteSaleDetail"
:Echo="Echo"
/>
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/sale-main/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { SaleMain,SaleMainRules,SaleDetail,SaleDetailRules } from './saleMain.data'
import * as SaleMainApi from '@/api/wms/saleMain'
import SaleMainForm from './SaleMainForm.vue'
import * as SaleDetailApi from '@/api/wms/saleDetail'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
//
defineOptions({ name: 'SaleMain' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
customerCode: null,
type: null,
orderDate: [],
dueDate: [],
version: null,
taxRate: null,
contactName: null,
contactPhone: null,
contactEmail: null,
number: null,
businessType: null,
remark: null,
createTime: [],
creator: null,
updateTime: [],
updater: null,
currentStage: null,
available: null
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(SaleMain.allSchemas.tableColumns)
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await SaleMainApi.getSaleMainPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const searchTableParams = ref([
//{
// formField: 'productItemCode',
// searchTableTitle: '',
// searchTableAllSchemas: Itembasic.allSchemas,
// searchTablePage: ItembasicApi.getItembasicPage
//}
])
//
const searchTableSuccess = (formField, searchField, val, formRef, type, row ) => {
nextTick(() => {
if (type == 'tableForm') {
//
//row[formField] = val[0][searchField]
//row['poLine'] = val[0]['poLine']
//row['batch'] = val[0]['toBatch']
//row['altBatch'] = val[0]['altBatch']
//row['itemCode'] = val[0]['itemCode']
//row['itemName'] = val[0]['itemName']
//row['itemDesc1'] = val[0]['itemDesc1']
//row['itemDesc2'] = val[0]['itemDesc2']
//row['projectCode'] = val[0]['projectCode']
//row['qty'] = val[0]['qty']
//row['uom'] = val[0]['uom']
} else {
const setV = {}
setV[formField] = val[0][searchField]
//setV['ppNumber'] = val[0]['ppNumber']
//setV['supplierCode'] = val[0]['supplierCode']
formRef.setValues(setV)
}
})
}
//
// const Echo = ['ppNumber','poLine', 'batch', 'altBatch', 'itemCode', 'itemName', 'itemDesc1', 'itemDesc2', 'projectCode', 'qty', 'uom']
const Echo = []
const { tableObject, tableMethods } = useTable({
getListApi: SaleMainApi.getSaleMainPage //
})
//
const { getList, setSearchParams } = tableMethods
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:sale-main:create'}), //
defaultButtons.defaultImportBtn({hasPermi:'wms:sale-main:import'}), //
defaultButtons.defaultExportBtn({hasPermi:'wms:sale-main: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 isShowMainButton = (row,val) => {
if (val.indexOf(row.status) > -1) {
return false
} else {
return true
}
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
// -
const butttondata = (row) => {
return [
defaultButtons.mainListOrderCloBtn({hide:isShowMainButton(row,['ORDER_READY'])}), //
defaultButtons.mainListOrderPubBtn({hide:isShowMainButton(row,['ORDER_READY'])}), //
defaultButtons.mainListOrderOpeBtn({hide:isShowMainButton(row,['ORDER_CLOSED'])}), //
defaultButtons.mainListOrderWitBtn({hide:isShowMainButton(row,['ORDER_PUBLISHED'])}), //
defaultButtons.mainListEditBtn({hasPermi:'wms:sale-main:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:sale-main:delete'}), //
]
}
// -
const buttonTableClick = async (val, row) => {
if (val == 'mainClose') { //
console.log('列表-操作按钮事件-关闭')
} else if (val == 'mainReAdd') { //
console.log('列表-操作按钮事件-重新添加')
} else if (val == 'mainSubmit') { //
console.log('列表-操作按钮事件-提交审批')
} else if (val == 'mainTurnDown') { //
console.log('列表-操作按钮事件-驳回')
} else if (val == 'mainApprove') { //
console.log('列表-操作按钮事件-审批通过')
} else if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
const openForm =async (type: string, row?: number) => {
tableData.value = [] //
formRef.value.open(type, row)
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue)
}
/** 删除按钮操作 */
@ -368,13 +248,14 @@ const handleDelete = async (id: number) => {
}
/** 导出按钮操作 */
const exportLoading = ref(false) //
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await SaleMainApi.exportSaleMain(queryParams)
const data = await SaleMainApi.exportSaleMain(setSearchParams)
download.excel(data, '销售订单主.xls')
} catch {
} finally {
@ -382,8 +263,72 @@ const handleExport = async () => {
}
}
/**
* tableForm方法
*/
const tableFormKeys = {}
SaleDetail.allSchemas.tableFormColumns.forEach(item => {
tableFormKeys[item.field] = item.default ? item.default : ''
})
const tableData = ref([])
//
const handleAddTable = () => {
tableData.value.push(JSON.parse(JSON.stringify(tableFormKeys)))
}
//
const handleDeleteTable = (item, index) => {
tableData.value.splice(index, 1)
}
//
const submitForm = async (formType, data) => {
data.subList = tableData.value //
try {
if (formType === 'create') {
await SaleMainApi.createSaleMain(data)
message.success(t('common.createSuccess'))
} else {
await SaleMainApi.updateSaleMain(data)
message.success(t('common.updateSuccess'))
}
formRef.value.dialogVisible = false
//
getList()
} finally {
formRef.value.formLoading = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '销售订单主导入模版.xls'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(() => {
onMounted(async () => {
getList()
importTemplateData.templateUrl = await SaleMainApi.importTemplate()
})
</script>

10
src/views/wms/deliversettlementManage/deliverplan/saleMain/saleMain.data.ts

@ -218,6 +218,16 @@ export const SaleMain = useCrudSchemas(reactive<CrudSchema[]>([
}
}
},
{
label: '操作',
field: 'action',
isDetail: false,
isForm: false,
table: {
width: 150,
fixed: 'right'
}
}
]))
//表单校验

595
src/views/wms/issueManage/preparetoissueplan/preparetoissueMain/index.vue

@ -1,364 +1,238 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="生产计划单号" prop="productionPlanNumber">
<el-input
v-model="queryParams.productionPlanNumber"
placeholder="请输入生产计划单号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="车间" prop="workshop">
<el-input
v-model="queryParams.workshop"
placeholder="请输入车间"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="生产线" prop="prodLine">
<el-input
v-model="queryParams.prodLine"
placeholder="请输入生产线"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="班次" prop="shift">
<el-input
v-model="queryParams.shift"
placeholder="请输入班次"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="班组" prop="team">
<el-input
v-model="queryParams.team"
placeholder="请输入班组"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="计划日期" prop="planDate">
<el-date-picker
v-model="queryParams.planDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单据号" prop="number">
<el-input
v-model="queryParams.number"
placeholder="请输入单据号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="业务类型" prop="businessType">
<el-input
v-model="queryParams.businessType"
placeholder="请输入业务类型"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建者用户名" prop="creator">
<el-input
v-model="queryParams.creator"
placeholder="请输入创建者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="开始时间" prop="beginTime">
<el-date-picker
v-model="queryParams.beginTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-date-picker
v-model="queryParams.endTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PLAN_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="最后更新时间" prop="updateTime">
<el-date-picker
v-model="queryParams.updateTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="最后更新者用户名" prop="updater">
<el-input
v-model="queryParams.updater"
placeholder="请输入最后更新者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="是否可用" prop="available">
<el-select
v-model="queryParams.available"
placeholder="请选择是否可用"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.TRUE_FALSE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="info" plain @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button type="info" plain @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
@click="openForm('create')"
v-hasPermi="['wms:preparetoissue-main:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['wms:preparetoissue-main:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
<Search :schema="PreparetoissueMain.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="PreparetoissueMain.allSchemas"
/>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="生产计划单号" align="center" prop="productionPlanNumber" width="150px" />
<el-table-column label="车间" align="center" prop="workshop" width="150px" />
<el-table-column label="生产线" align="center" prop="prodLine" width="150px" />
<el-table-column label="班次" align="center" prop="shift" width="150px" />
<el-table-column label="班组" align="center" prop="team" width="150px" />
<el-table-column
label="计划日期"
align="center"
prop="planDate"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="单据号" align="center" prop="number" width="150px" />
<el-table-column label="业务类型" align="center" prop="businessType" width="150px" />
<el-table-column label="备注" align="center" prop="remark" width="150px" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="创建者用户名" align="center" prop="creator" width="150px" />
<el-table-column
label="开始时间"
align="center"
prop="beginTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column
label="结束时间"
align="center"
prop="endTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="状态" align="center" prop="status" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.PLAN_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column
label="最后更新时间"
align="center"
prop="updateTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="最后更新者用户名" align="center" prop="updater" width="150px" />
<el-table-column label="是否可用" align="center" prop="available" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.TRUE_FALSE" :value="scope.row.available" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="150px" fixed="right">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['wms:preparetoissue-main:update']"
<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"
>
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['wms:preparetoissue-main:delete']"
>
删除
<template #number="{row}">
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
<span>{{ row.number }}</span>
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<template #action="{ row }">
<ButtonBase :Butttondata="butttondata" @button-base-click="buttonTableClick($event,row)" />
</template>
</Table>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<PreparetoissueMainForm ref="formRef" @success="getList" />
<BasicForm
ref="formRef"
@success="getList"
:rules="PreparetoissueMainRules"
:formAllSchemas="PreparetoissueMain.allSchemas"
:searchTableParams="searchTableParams"
:tableAllSchemas="PreparetoissueDetail.allSchemas"
:tableFormRules="PreparetoissueDetailRules"
:tableData="tableData"
:apiUpdate="PreparetoissueMainApi.updatePreparetoissueMain"
:apiCreate="PreparetoissueMainApi.createPreparetoissueMain"
:isBusiness="true"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@searchTableSuccess="searchTableSuccess"
@submitForm="submitForm"
/>
<!-- 详情 -->
<Detail
ref="detailRef"
:isBasic="false"
:allSchemas="PreparetoissueMain.allSchemas"
:detailAllSchemas="PreparetoissueDetail.allSchemas"
:detailAllSchemasRules="PreparetoissueDetailRules"
:searchTableParams="searchTableParams"
:apiCreate="PreparetoissueDetailApi.createPreparetoissueDetail"
:apiUpdate="PreparetoissueDetailApi.updatePreparetoissueDetail"
:apiPage="PreparetoissueDetailApi.getPreparetoissueDetailPage"
:apiDelete="PreparetoissueDetailApi.deletePreparetoissueDetail"
:Echo="Echo"
/>
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/preparetoissue-main/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { PreparetoissueMain,PreparetoissueMainRules,PreparetoissueDetail,PreparetoissueDetailRules } from './preparetoissueMain.data'
import * as PreparetoissueMainApi from '@/api/wms/preparetoissueMain'
import PreparetoissueMainForm from './PreparetoissueMainForm.vue'
import * as PreparetoissueDetailApi from '@/api/wms/preparetoissueDetail'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
//
defineOptions({ name: 'PreparetoissueMain' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
productionPlanNumber: null,
workshop: null,
prodLine: null,
shift: null,
team: null,
planDate: [],
number: null,
businessType: null,
remark: null,
createTime: [],
creator: null,
beginTime: [],
endTime: [],
status: null,
updateTime: [],
updater: null,
available: null
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(PreparetoissueMain.allSchemas.tableColumns)
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await PreparetoissueMainApi.getPreparetoissueMainPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const searchTableParams = ref([
//{
// formField: 'productItemCode',
// searchTableTitle: '',
// searchTableAllSchemas: Itembasic.allSchemas,
// searchTablePage: ItembasicApi.getItembasicPage
//}
])
//
const searchTableSuccess = (formField, searchField, val, formRef, type, row ) => {
nextTick(() => {
if (type == 'tableForm') {
//
//row[formField] = val[0][searchField]
//row['poLine'] = val[0]['poLine']
//row['batch'] = val[0]['toBatch']
//row['altBatch'] = val[0]['altBatch']
//row['itemCode'] = val[0]['itemCode']
//row['itemName'] = val[0]['itemName']
//row['itemDesc1'] = val[0]['itemDesc1']
//row['itemDesc2'] = val[0]['itemDesc2']
//row['projectCode'] = val[0]['projectCode']
//row['qty'] = val[0]['qty']
//row['uom'] = val[0]['uom']
} else {
const setV = {}
setV[formField] = val[0][searchField]
//setV['ppNumber'] = val[0]['ppNumber']
//setV['supplierCode'] = val[0]['supplierCode']
formRef.setValues(setV)
}
})
}
//
// const Echo = ['ppNumber','poLine', 'batch', 'altBatch', 'itemCode', 'itemName', 'itemDesc1', 'itemDesc2', 'projectCode', 'qty', 'uom']
const Echo = []
const { tableObject, tableMethods } = useTable({
getListApi: PreparetoissueMainApi.getPreparetoissueMainPage //
})
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
//
const { getList, setSearchParams } = tableMethods
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:preparetoissue-main:create'}), //
defaultButtons.defaultImportBtn({hasPermi:'wms:preparetoissue-main:import'}), //
defaultButtons.defaultExportBtn({hasPermi:'wms:preparetoissue-main: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 resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
//
const isShowMainButton = (row,val) => {
if (val.indexOf(row.status) > -1) {
return false
} else {
return true
}
}
// -
const butttondata = (row) => {
return [
defaultButtons.mainListCloseBtn({hide:isShowMainButton(row,['REQUEST_NEW','REQUEST_REVIEWING','REQUEST_AGREED','REQUEST_REFUSED','REQUEST_HANDLING'])}), //
defaultButtons.mainListReAddBtn({hide:isShowMainButton(row,['REQUEST_REFUSED','REQUEST_CANCELLED'])}), //
defaultButtons.mainListSubmitBtn({hide:isShowMainButton(row,['REQUEST_NEW'])}), //
defaultButtons.mainListTurnDownBtn({hide:isShowMainButton(row,['REQUEST_REVIEWING'])}), //
defaultButtons.mainListApproveBtn({hide:isShowMainButton(row,['REQUEST_REVIEWING'])}), //
defaultButtons.mainListEditBtn({hasPermi:'wms:preparetoissue-main:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:preparetoissue-main:delete'}), //
]
}
// -
const buttonTableClick = async (val, row) => {
if (val == 'mainClose') { //
console.log('列表-操作按钮事件-关闭')
} else if (val == 'mainReAdd') { //
console.log('列表-操作按钮事件-重新添加')
} else if (val == 'mainSubmit') { //
console.log('列表-操作按钮事件-提交审批')
} else if (val == 'mainTurnDown') { //
console.log('列表-操作按钮事件-驳回')
} else if (val == 'mainApprove') { //
console.log('列表-操作按钮事件-审批通过')
} else if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
const openForm =async (type: string, row?: number) => {
tableData.value = [] //
formRef.value.open(type, row)
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue)
}
/** 删除按钮操作 */
@ -375,13 +249,14 @@ const handleDelete = async (id: number) => {
}
/** 导出按钮操作 */
const exportLoading = ref(false) //
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await PreparetoissueMainApi.exportPreparetoissueMain(queryParams)
const data = await PreparetoissueMainApi.exportPreparetoissueMain(setSearchParams)
download.excel(data, '备料计划主.xls')
} catch {
} finally {
@ -389,8 +264,72 @@ const handleExport = async () => {
}
}
/**
* tableForm方法
*/
const tableFormKeys = {}
PreparetoissueDetail.allSchemas.tableFormColumns.forEach(item => {
tableFormKeys[item.field] = item.default ? item.default : ''
})
const tableData = ref([])
//
const handleAddTable = () => {
tableData.value.push(JSON.parse(JSON.stringify(tableFormKeys)))
}
//
const handleDeleteTable = (item, index) => {
tableData.value.splice(index, 1)
}
//
const submitForm = async (formType, data) => {
data.subList = tableData.value //
try {
if (formType === 'create') {
await PreparetoissueMainApi.createPreparetoissueMain(data)
message.success(t('common.createSuccess'))
} else {
await PreparetoissueMainApi.updatePreparetoissueMain(data)
message.success(t('common.updateSuccess'))
}
formRef.value.dialogVisible = false
//
getList()
} finally {
formRef.value.formLoading = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '备料计划主导入模版.xls'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(() => {
onMounted(async () => {
getList()
importTemplateData.templateUrl = await PreparetoissueMainApi.importTemplate()
})
</script>

585
src/views/wms/productionManage/productionplan/productionMain/index.vue

@ -1,354 +1,238 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="顺序" prop="displayOrder">
<el-input
v-model="queryParams.displayOrder"
placeholder="请输入顺序"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="车间" prop="workshop">
<el-input
v-model="queryParams.workshop"
placeholder="请输入车间"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="生产线" prop="productionLine">
<el-input
v-model="queryParams.productionLine"
placeholder="请输入生产线"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="班次" prop="shift">
<el-input
v-model="queryParams.shift"
placeholder="请输入班次"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="班组" prop="team">
<el-input
v-model="queryParams.team"
placeholder="请输入班组"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="计划日期" prop="planDate">
<el-date-picker
v-model="queryParams.planDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单据号" prop="number">
<el-input
v-model="queryParams.number"
placeholder="请输入单据号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="业务类型" prop="businessType">
<el-input
v-model="queryParams.businessType"
placeholder="请输入业务类型"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建者用户名" prop="creator">
<el-input
v-model="queryParams.creator"
placeholder="请输入创建者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="开始时间" prop="beginTime">
<el-date-picker
v-model="queryParams.beginTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-date-picker
v-model="queryParams.endTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PLAN_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="最后更新时间" prop="updateTime">
<el-date-picker
v-model="queryParams.updateTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="最后更新者用户名" prop="updater">
<el-input
v-model="queryParams.updater"
placeholder="请输入最后更新者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="是否可用" prop="available">
<el-input
v-model="queryParams.available"
placeholder="请输入是否可用"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item>
<el-button type="info" plain @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button type="info" plain @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
@click="openForm('create')"
v-hasPermi="['wms:production-main:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['wms:production-main:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
<Search :schema="ProductionMain.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="ProductionMain.allSchemas"
/>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="顺序" align="center" prop="displayOrder" width="150px" />
<el-table-column label="车间" align="center" prop="workshop" width="150px" />
<el-table-column label="生产线" align="center" prop="productionLine" width="150px" />
<el-table-column label="班次" align="center" prop="shift" width="150px" />
<el-table-column label="班组" align="center" prop="team" width="150px" />
<el-table-column
label="计划日期"
align="center"
prop="planDate"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="单据号" align="center" prop="number" width="150px" />
<el-table-column label="业务类型" align="center" prop="businessType" width="150px" />
<el-table-column label="备注" align="center" prop="remark" width="150px" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="创建者用户名" align="center" prop="creator" width="150px" />
<el-table-column
label="开始时间"
align="center"
prop="beginTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column
label="结束时间"
align="center"
prop="endTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="状态" align="center" prop="status" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.PLAN_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column
label="最后更新时间"
align="center"
prop="updateTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="最后更新者用户名" align="center" prop="updater" width="150px" />
<el-table-column label="是否可用" align="center" prop="available" width="150px" />
<el-table-column label="操作" align="center" width="150px" fixed="right">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['wms:production-main:update']"
>
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['wms:production-main:delete']"
<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 #number="{row}">
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
<span>{{ row.number }}</span>
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<template #action="{ row }">
<ButtonBase :Butttondata="butttondata" @button-base-click="buttonTableClick($event,row)" />
</template>
</Table>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<ProductionMainForm ref="formRef" @success="getList" />
<BasicForm
ref="formRef"
@success="getList"
:rules="ProductionMainRules"
:formAllSchemas="ProductionMain.allSchemas"
:searchTableParams="searchTableParams"
:tableAllSchemas="ProductionDetail.allSchemas"
:tableFormRules="ProductionDetailRules"
:tableData="tableData"
:apiUpdate="ProductionMainApi.updateProductionMain"
:apiCreate="ProductionMainApi.createProductionMain"
:isBusiness="true"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@searchTableSuccess="searchTableSuccess"
@submitForm="submitForm"
/>
<!-- 详情 -->
<Detail
ref="detailRef"
:isBasic="false"
:allSchemas="ProductionMain.allSchemas"
:detailAllSchemas="ProductionDetail.allSchemas"
:detailAllSchemasRules="ProductionDetailRules"
:searchTableParams="searchTableParams"
:apiCreate="ProductionDetailApi.createProductionDetail"
:apiUpdate="ProductionDetailApi.updateProductionDetail"
:apiPage="ProductionDetailApi.getProductionDetailPage"
:apiDelete="ProductionDetailApi.deleteProductionDetail"
:Echo="Echo"
/>
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/production-main/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { ProductionMain,ProductionMainRules,ProductionDetail,ProductionDetailRules } from './productionMain.data'
import * as ProductionMainApi from '@/api/wms/productionMain'
import ProductionMainForm from './ProductionMainForm.vue'
import * as ProductionDetailApi from '@/api/wms/productionDetail'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
//
defineOptions({ name: 'ProductionMain' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
displayOrder: null,
workshop: null,
productionLine: null,
shift: null,
team: null,
planDate: [],
number: null,
businessType: null,
remark: null,
createTime: [],
creator: null,
beginTime: [],
endTime: [],
status: null,
updateTime: [],
updater: null,
available: null
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(ProductionMain.allSchemas.tableColumns)
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await ProductionMainApi.getProductionMainPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const searchTableParams = ref([
//{
// formField: 'productItemCode',
// searchTableTitle: '',
// searchTableAllSchemas: Itembasic.allSchemas,
// searchTablePage: ItembasicApi.getItembasicPage
//}
])
//
const searchTableSuccess = (formField, searchField, val, formRef, type, row ) => {
nextTick(() => {
if (type == 'tableForm') {
//
//row[formField] = val[0][searchField]
//row['poLine'] = val[0]['poLine']
//row['batch'] = val[0]['toBatch']
//row['altBatch'] = val[0]['altBatch']
//row['itemCode'] = val[0]['itemCode']
//row['itemName'] = val[0]['itemName']
//row['itemDesc1'] = val[0]['itemDesc1']
//row['itemDesc2'] = val[0]['itemDesc2']
//row['projectCode'] = val[0]['projectCode']
//row['qty'] = val[0]['qty']
//row['uom'] = val[0]['uom']
} else {
const setV = {}
setV[formField] = val[0][searchField]
//setV['ppNumber'] = val[0]['ppNumber']
//setV['supplierCode'] = val[0]['supplierCode']
formRef.setValues(setV)
}
})
}
//
// const Echo = ['ppNumber','poLine', 'batch', 'altBatch', 'itemCode', 'itemName', 'itemDesc1', 'itemDesc2', 'projectCode', 'qty', 'uom']
const Echo = []
const { tableObject, tableMethods } = useTable({
getListApi: ProductionMainApi.getProductionMainPage //
})
//
const { getList, setSearchParams } = tableMethods
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:production-main:create'}), //
defaultButtons.defaultImportBtn({hasPermi:'wms:production-main:import'}), //
defaultButtons.defaultExportBtn({hasPermi:'wms:production-main: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 isShowMainButton = (row,val) => {
if (val.indexOf(row.status) > -1) {
return false
} else {
return true
}
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
// -
const butttondata = (row) => {
return [
defaultButtons.mainListCloseBtn({hide:isShowMainButton(row,['REQUEST_NEW','REQUEST_REVIEWING','REQUEST_AGREED','REQUEST_REFUSED','REQUEST_HANDLING'])}), //
defaultButtons.mainListReAddBtn({hide:isShowMainButton(row,['REQUEST_REFUSED','REQUEST_CANCELLED'])}), //
defaultButtons.mainListSubmitBtn({hide:isShowMainButton(row,['REQUEST_NEW'])}), //
defaultButtons.mainListTurnDownBtn({hide:isShowMainButton(row,['REQUEST_REVIEWING'])}), //
defaultButtons.mainListApproveBtn({hide:isShowMainButton(row,['REQUEST_REVIEWING'])}), //
defaultButtons.mainListEditBtn({hasPermi:'wms:production-main:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:production-main:delete'}), //
]
}
// -
const buttonTableClick = async (val, row) => {
if (val == 'mainClose') { //
console.log('列表-操作按钮事件-关闭')
} else if (val == 'mainReAdd') { //
console.log('列表-操作按钮事件-重新添加')
} else if (val == 'mainSubmit') { //
console.log('列表-操作按钮事件-提交审批')
} else if (val == 'mainTurnDown') { //
console.log('列表-操作按钮事件-驳回')
} else if (val == 'mainApprove') { //
console.log('列表-操作按钮事件-审批通过')
} else if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
const openForm =async (type: string, row?: number) => {
tableData.value = [] //
formRef.value.open(type, row)
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue)
}
/** 删除按钮操作 */
@ -365,13 +249,14 @@ const handleDelete = async (id: number) => {
}
/** 导出按钮操作 */
const exportLoading = ref(false) //
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await ProductionMainApi.exportProductionMain(queryParams)
const data = await ProductionMainApi.exportProductionMain(setSearchParams)
download.excel(data, '生产计划主.xls')
} catch {
} finally {
@ -379,8 +264,72 @@ const handleExport = async () => {
}
}
/**
* tableForm方法
*/
const tableFormKeys = {}
ProductionDetail.allSchemas.tableFormColumns.forEach(item => {
tableFormKeys[item.field] = item.default ? item.default : ''
})
const tableData = ref([])
//
const handleAddTable = () => {
tableData.value.push(JSON.parse(JSON.stringify(tableFormKeys)))
}
//
const handleDeleteTable = (item, index) => {
tableData.value.splice(index, 1)
}
//
const submitForm = async (formType, data) => {
data.subList = tableData.value //
try {
if (formType === 'create') {
await ProductionMainApi.createProductionMain(data)
message.success(t('common.createSuccess'))
} else {
await ProductionMainApi.updateProductionMain(data)
message.success(t('common.updateSuccess'))
}
formRef.value.dialogVisible = false
//
getList()
} finally {
formRef.value.formLoading = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '生产计划主导入模版.xls'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(() => {
onMounted(async () => {
getList()
importTemplateData.templateUrl = await ProductionMainApi.importTemplate()
})
</script>

4
src/views/wms/productionManage/productionplan/productionMain/productionMain.data.ts

@ -259,7 +259,7 @@ export const ProductionMainRules = reactive({
/**
* @returns {Array}
*/
export const ProductionDeatil = useCrudSchemas(reactive<CrudSchema[]>([
export const ProductionDetail = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '订单号',
field: 'woNumber',
@ -432,7 +432,7 @@ export const ProductionDeatil = useCrudSchemas(reactive<CrudSchema[]>([
]))
//表单校验
export const ProductionDeatilRules = reactive({
export const ProductionDetailRules = reactive({
woNumber: [
{ required: true, message: '请选择订单号', trigger: 'change' }
],

543
src/views/wms/productionManage/productionplan/workMain/index.vue

@ -1,313 +1,237 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="供应商代码" prop="customerCode">
<el-input
v-model="queryParams.customerCode"
placeholder="请输入供应商代码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="订单类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择订单类型" clearable class="!w-240px">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.WORK_ORDER_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="订单日期" prop="orderDate">
<el-date-picker
v-model="queryParams.orderDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="截止日期" prop="dueDate">
<el-date-picker
v-model="queryParams.dueDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="版本" prop="version">
<el-input
v-model="queryParams.version"
placeholder="请输入版本"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单据号" prop="number">
<el-input
v-model="queryParams.number"
placeholder="请输入单据号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="业务类型" prop="businessType">
<el-input
v-model="queryParams.businessType"
placeholder="请输入业务类型"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建者用户名" prop="creator">
<el-input
v-model="queryParams.creator"
placeholder="请输入创建者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="最后更新时间" prop="updateTime">
<el-date-picker
v-model="queryParams.updateTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="最后更新者用户名" prop="updater">
<el-input
v-model="queryParams.updater"
placeholder="请输入最后更新者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="当前阶段" prop="currentStage">
<el-input
v-model="queryParams.currentStage"
placeholder="请输入当前阶段"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="是否可用" prop="available">
<el-input
v-model="queryParams.available"
placeholder="请输入是否可用"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item>
<el-button type="info" plain @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button type="info" plain @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
@click="openForm('create')"
v-hasPermi="['wms:work-main:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['wms:work-main:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
<Search :schema="WorkMain.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="WorkMain.allSchemas"
/>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="供应商代码" align="center" prop="customerCode" width="150px" />
<el-table-column label="订单类型" align="center" prop="type" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.WORK_ORDER_TYPE" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column
label="订单日期"
align="center"
prop="orderDate"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column
label="截止日期"
align="center"
prop="dueDate"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="版本" align="center" prop="version" width="150px" />
<el-table-column label="单据号" align="center" prop="number" width="150px" />
<el-table-column label="业务类型" align="center" prop="businessType" width="150px" />
<el-table-column label="备注" align="center" prop="remark" width="150px" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="创建者用户名" align="center" prop="creator" width="150px" />
<el-table-column
label="最后更新时间"
align="center"
prop="updateTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="最后更新者用户名" align="center" prop="updater" width="150px" />
<el-table-column label="当前阶段" align="center" prop="currentStage" width="150px" />
<el-table-column label="是否可用" align="center" prop="available" width="150px" />
<el-table-column label="操作" align="center" width="150px" fixed="right">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['wms:work-main:update']"
>
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['wms:work-main:delete']"
<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 #number="{row}">
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
<span>{{ row.number }}</span>
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<template #action="{ row }">
<ButtonBase :Butttondata="butttondata" @button-base-click="buttonTableClick($event,row)" />
</template>
</Table>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<WorkMainForm ref="formRef" @success="getList" />
<BasicForm
ref="formRef"
@success="getList"
:rules="WorkMainRules"
:formAllSchemas="WorkMain.allSchemas"
:searchTableParams="searchTableParams"
:tableAllSchemas="WorkDetail.allSchemas"
:tableFormRules="WorkDetailRules"
:tableData="tableData"
:apiUpdate="WorkMainApi.updateWorkMain"
:apiCreate="WorkMainApi.createWorkMain"
:isBusiness="true"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@searchTableSuccess="searchTableSuccess"
@submitForm="submitForm"
/>
<!-- 详情 -->
<Detail
ref="detailRef"
:isBasic="false"
:allSchemas="WorkMain.allSchemas"
:detailAllSchemas="WorkDetail.allSchemas"
:detailAllSchemasRules="WorkDetailRules"
:searchTableParams="searchTableParams"
:apiCreate="WorkDetailApi.createWorkDetail"
:apiUpdate="WorkDetailApi.updateWorkDetail"
:apiPage="WorkDetailApi.getWorkDetailPage"
:apiDelete="WorkDetailApi.deleteWorkDetail"
:Echo="Echo"
/>
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/work-main/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { WorkMain,WorkMainRules,WorkDetail,WorkDetailRules } from './workMain.data'
import * as WorkMainApi from '@/api/wms/workMain'
import WorkMainForm from './WorkMainForm.vue'
import * as WorkDetailApi from '@/api/wms/workDetail'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
//
defineOptions({ name: 'WorkMain' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
customerCode: null,
type: null,
orderDate: [],
dueDate: [],
version: null,
number: null,
businessType: null,
remark: null,
createTime: [],
creator: null,
updateTime: [],
updater: null,
currentStage: null,
available: null
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(WorkMain.allSchemas.tableColumns)
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await WorkMainApi.getWorkMainPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const searchTableParams = ref([
//{
// formField: 'productItemCode',
// searchTableTitle: '',
// searchTableAllSchemas: Itembasic.allSchemas,
// searchTablePage: ItembasicApi.getItembasicPage
//}
])
//
const searchTableSuccess = (formField, searchField, val, formRef, type, row ) => {
nextTick(() => {
if (type == 'tableForm') {
//
//row[formField] = val[0][searchField]
//row['poLine'] = val[0]['poLine']
//row['batch'] = val[0]['toBatch']
//row['altBatch'] = val[0]['altBatch']
//row['itemCode'] = val[0]['itemCode']
//row['itemName'] = val[0]['itemName']
//row['itemDesc1'] = val[0]['itemDesc1']
//row['itemDesc2'] = val[0]['itemDesc2']
//row['projectCode'] = val[0]['projectCode']
//row['qty'] = val[0]['qty']
//row['uom'] = val[0]['uom']
} else {
const setV = {}
setV[formField] = val[0][searchField]
//setV['ppNumber'] = val[0]['ppNumber']
//setV['supplierCode'] = val[0]['supplierCode']
formRef.setValues(setV)
}
})
}
//
// const Echo = ['ppNumber','poLine', 'batch', 'altBatch', 'itemCode', 'itemName', 'itemDesc1', 'itemDesc2', 'projectCode', 'qty', 'uom']
const Echo = []
const { tableObject, tableMethods } = useTable({
getListApi: WorkMainApi.getWorkMainPage //
})
//
const { getList, setSearchParams } = tableMethods
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:work-main:create'}), //
defaultButtons.defaultImportBtn({hasPermi:'wms:work-main:import'}), //
defaultButtons.defaultExportBtn({hasPermi:'wms:work-main:export'}), //
defaultButtons.defaultFreshBtn(null), //
defaultButtons.defaultFilterBtn(null), //
defaultButtons.defaultSetBtn(null), //
// {
// label: '',
// name: 'zdy',
// hide: false,
// type: 'primary',
// icon: 'Select',
// color: ''
// },
]
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
//
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 isShowMainButton = (row,val) => {
if (val.indexOf(row.status) > -1) {
return false
} else {
return true
}
}
// -
const butttondata = (row) => {
return [
defaultButtons.mainListOrderCloBtn({hide:isShowMainButton(row,['ORDER_READY'])}), //
defaultButtons.mainListOrderPubBtn({hide:isShowMainButton(row,['ORDER_READY'])}), //
defaultButtons.mainListOrderOpeBtn({hide:isShowMainButton(row,['ORDER_CLOSED'])}), //
defaultButtons.mainListOrderWitBtn({hide:isShowMainButton(row,['ORDER_PUBLISHED'])}), //
defaultButtons.mainListEditBtn({hasPermi:'wms:work-main:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:work-main:delete'}), //
]
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
// -
const buttonTableClick = async (val, row) => {
if (val == 'mainClose') { //
console.log('列表-操作按钮事件-关闭')
} else if (val == 'mainReAdd') { //
console.log('列表-操作按钮事件-重新添加')
} else if (val == 'mainSubmit') { //
console.log('列表-操作按钮事件-提交审批')
} else if (val == 'mainTurnDown') { //
console.log('列表-操作按钮事件-驳回')
} else if (val == 'mainApprove') { //
console.log('列表-操作按钮事件-审批通过')
} else if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
const openForm =async (type: string, row?: number) => {
tableData.value = [] //
formRef.value.open(type, row)
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue)
}
/** 删除按钮操作 */
@ -324,13 +248,14 @@ const handleDelete = async (id: number) => {
}
/** 导出按钮操作 */
const exportLoading = ref(false) //
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await WorkMainApi.exportWorkMain(queryParams)
const data = await WorkMainApi.exportWorkMain(setSearchParams)
download.excel(data, '生产订单主.xls')
} catch {
} finally {
@ -338,8 +263,72 @@ const handleExport = async () => {
}
}
/**
* tableForm方法
*/
const tableFormKeys = {}
WorkDetail.allSchemas.tableFormColumns.forEach(item => {
tableFormKeys[item.field] = item.default ? item.default : ''
})
const tableData = ref([])
//
const handleAddTable = () => {
tableData.value.push(JSON.parse(JSON.stringify(tableFormKeys)))
}
//
const handleDeleteTable = (item, index) => {
tableData.value.splice(index, 1)
}
//
const submitForm = async (formType, data) => {
data.subList = tableData.value //
try {
if (formType === 'create') {
await WorkMainApi.createWorkMain(data)
message.success(t('common.createSuccess'))
} else {
await WorkMainApi.updateWorkMain(data)
message.success(t('common.updateSuccess'))
}
formRef.value.dialogVisible = false
//
getList()
} finally {
formRef.value.formLoading = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '生产订单主导入模版.xls'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(() => {
onMounted(async () => {
getList()
importTemplateData.templateUrl = await WorkMainApi.importTemplate()
})
</script>

10
src/views/wms/productionManage/productionplan/workMain/workMain.data.ts

@ -170,6 +170,16 @@ export const WorkMain = useCrudSchemas(reactive<CrudSchema[]>([
isSearch: true,
isTable: true
},
{
label: '操作',
field: 'action',
isDetail: false,
isForm: false,
table: {
width: 150,
fixed: 'right'
}
}
]))
//表单校验

557
src/views/wms/purchasereceiptManage/supplierdeliver/demandforecastingMain/index.vue

@ -1,326 +1,238 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="供应商代码" prop="supplierCode">
<el-input
v-model="queryParams.supplierCode"
placeholder="请输入供应商代码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="版本号" prop="version">
<el-input
v-model="queryParams.version"
placeholder="请输入版本号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="发布时间" prop="publishTime">
<el-date-picker
v-model="queryParams.publishTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单据号" prop="number">
<el-input
v-model="queryParams.number"
placeholder="请输入单据号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="业务类型" prop="businessType">
<el-input
v-model="queryParams.businessType"
placeholder="请输入业务类型"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建者用户名" prop="creator">
<el-input
v-model="queryParams.creator"
placeholder="请输入创建者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="开始时间" prop="beginTime">
<el-date-picker
v-model="queryParams.beginTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-date-picker
v-model="queryParams.endTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-input
v-model="queryParams.status"
placeholder="请输入状态"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="最后更新时间" prop="updateTime">
<el-date-picker
v-model="queryParams.updateTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="最后更新者用户名" prop="updater">
<el-input
v-model="queryParams.updater"
placeholder="请输入最后更新者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="是否可用" prop="available">
<el-select
v-model="queryParams.available"
placeholder="请选择是否可用"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.TRUE_FALSE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="info" plain @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button type="info" plain @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
@click="openForm('create')"
v-hasPermi="['wms:demandforecasting-main:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['wms:demandforecasting-main:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
<Search :schema="DemandforecastingMain.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="DemandforecastingMain.allSchemas"
/>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="供应商代码" align="center" prop="supplierCode" width="150px" />
<el-table-column label="版本号" align="center" prop="version" width="150px" />
<el-table-column
label="发布时间"
align="center"
prop="publishTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="单据号" align="center" prop="number" width="150px" />
<el-table-column label="业务类型" align="center" prop="businessType" width="150px" />
<el-table-column label="备注" align="center" prop="remark" width="150px" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="创建者用户名" align="center" prop="creator" width="150px" />
<el-table-column
label="开始时间"
align="center"
prop="beginTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column
label="结束时间"
align="center"
prop="endTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="状态" align="center" prop="status" width="150px" />
<el-table-column
label="最后更新时间"
align="center"
prop="updateTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="最后更新者用户名" align="center" prop="updater" width="150px" />
<el-table-column label="是否可用" align="center" prop="available" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.TRUE_FALSE" :value="scope.row.available" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="150px" fixed="right">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['wms:demandforecasting-main:update']"
<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"
>
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['wms:demandforecasting-main:delete']"
>
删除
<template #number="{row}">
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
<span>{{ row.number }}</span>
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<template #action="{ row }">
<ButtonBase :Butttondata="butttondata" @button-base-click="buttonTableClick($event,row)" />
</template>
</Table>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<DemandforecastingMainForm ref="formRef" @success="getList" />
<BasicForm
ref="formRef"
@success="getList"
:rules="DemandforecastingMainRules"
:formAllSchemas="DemandforecastingMain.allSchemas"
:searchTableParams="searchTableParams"
:tableAllSchemas="DemandforecastingDetail.allSchemas"
:tableFormRules="DemandforecastingDetailRules"
:tableData="tableData"
:apiUpdate="DemandforecastingMainApi.updateDemandforecastingMain"
:apiCreate="DemandforecastingMainApi.createDemandforecastingMain"
:isBusiness="true"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@searchTableSuccess="searchTableSuccess"
@submitForm="submitForm"
/>
<!-- 详情 -->
<Detail
ref="detailRef"
:isBasic="false"
:allSchemas="DemandforecastingMain.allSchemas"
:detailAllSchemas="DemandforecastingDetail.allSchemas"
:detailAllSchemasRules="DemandforecastingDetailRules"
:searchTableParams="searchTableParams"
:apiCreate="DemandforecastingDetailApi.createDemandforecastingDetail"
:apiUpdate="DemandforecastingDetailApi.updateDemandforecastingDetail"
:apiPage="DemandforecastingDetailApi.getDemandforecastingDetailPage"
:apiDelete="DemandforecastingDetailApi.deleteDemandforecastingDetail"
:Echo="Echo"
/>
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/demandforecasting-main/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { DemandforecastingMain,DemandforecastingMainRules,DemandforecastingDetail,DemandforecastingDetailRules } from './demandforecastingMain.data'
import * as DemandforecastingMainApi from '@/api/wms/demandforecastingMain'
import DemandforecastingMainForm from './DemandforecastingMainForm.vue'
import * as DemandforecastingDetailApi from '@/api/wms/demandforecastingDetail'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
//
defineOptions({ name: 'DemandforecastingMain' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
supplierCode: null,
version: null,
publishTime: [],
number: null,
businessType: null,
remark: null,
createTime: [],
creator: null,
beginTime: [],
endTime: [],
status: null,
updateTime: [],
updater: null,
available: null
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(DemandforecastingMain.allSchemas.tableColumns)
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await DemandforecastingMainApi.getDemandforecastingMainPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const searchTableParams = ref([
//{
// formField: 'productItemCode',
// searchTableTitle: '',
// searchTableAllSchemas: Itembasic.allSchemas,
// searchTablePage: ItembasicApi.getItembasicPage
//}
])
//
const searchTableSuccess = (formField, searchField, val, formRef, type, row ) => {
nextTick(() => {
if (type == 'tableForm') {
//
//row[formField] = val[0][searchField]
//row['poLine'] = val[0]['poLine']
//row['batch'] = val[0]['toBatch']
//row['altBatch'] = val[0]['altBatch']
//row['itemCode'] = val[0]['itemCode']
//row['itemName'] = val[0]['itemName']
//row['itemDesc1'] = val[0]['itemDesc1']
//row['itemDesc2'] = val[0]['itemDesc2']
//row['projectCode'] = val[0]['projectCode']
//row['qty'] = val[0]['qty']
//row['uom'] = val[0]['uom']
} else {
const setV = {}
setV[formField] = val[0][searchField]
//setV['ppNumber'] = val[0]['ppNumber']
//setV['supplierCode'] = val[0]['supplierCode']
formRef.setValues(setV)
}
})
}
//
// const Echo = ['ppNumber','poLine', 'batch', 'altBatch', 'itemCode', 'itemName', 'itemDesc1', 'itemDesc2', 'projectCode', 'qty', 'uom']
const Echo = []
const { tableObject, tableMethods } = useTable({
getListApi: DemandforecastingMainApi.getDemandforecastingMainPage //
})
//
const { getList, setSearchParams } = tableMethods
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:demandforecasting-main:create'}), //
defaultButtons.defaultImportBtn({hasPermi:'wms:demandforecasting-main:import'}), //
defaultButtons.defaultExportBtn({hasPermi:'wms:demandforecasting-main: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 isShowMainButton = (row,val) => {
if (val.indexOf(row.status) > -1) {
return false
} else {
return true
}
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
// -
const butttondata = (row) => {
return [
defaultButtons.mainListCloseBtn({hide:isShowMainButton(row,['REQUEST_NEW','REQUEST_REVIEWING','REQUEST_AGREED','REQUEST_REFUSED','REQUEST_HANDLING'])}), //
defaultButtons.mainListReAddBtn({hide:isShowMainButton(row,['REQUEST_REFUSED','REQUEST_CANCELLED'])}), //
defaultButtons.mainListSubmitBtn({hide:isShowMainButton(row,['REQUEST_NEW'])}), //
defaultButtons.mainListTurnDownBtn({hide:isShowMainButton(row,['REQUEST_REVIEWING'])}), //
defaultButtons.mainListApproveBtn({hide:isShowMainButton(row,['REQUEST_REVIEWING'])}), //
defaultButtons.mainListEditBtn({hasPermi:'wms:demandforecasting-main:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:demandforecasting-main:delete'}), //
]
}
// -
const buttonTableClick = async (val, row) => {
if (val == 'mainClose') { //
console.log('列表-操作按钮事件-关闭')
} else if (val == 'mainReAdd') { //
console.log('列表-操作按钮事件-重新添加')
} else if (val == 'mainSubmit') { //
console.log('列表-操作按钮事件-提交审批')
} else if (val == 'mainTurnDown') { //
console.log('列表-操作按钮事件-驳回')
} else if (val == 'mainApprove') { //
console.log('列表-操作按钮事件-审批通过')
} else if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
const openForm =async (type: string, row?: number) => {
tableData.value = [] //
formRef.value.open(type, row)
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue)
}
/** 删除按钮操作 */
@ -337,13 +249,14 @@ const handleDelete = async (id: number) => {
}
/** 导出按钮操作 */
const exportLoading = ref(false) //
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await DemandforecastingMainApi.exportDemandforecastingMain(queryParams)
const data = await DemandforecastingMainApi.exportDemandforecastingMain(setSearchParams)
download.excel(data, '要货预测主.xls')
} catch {
} finally {
@ -351,8 +264,72 @@ const handleExport = async () => {
}
}
/**
* tableForm方法
*/
const tableFormKeys = {}
DemandforecastingDetail.allSchemas.tableFormColumns.forEach(item => {
tableFormKeys[item.field] = item.default ? item.default : ''
})
const tableData = ref([])
//
const handleAddTable = () => {
tableData.value.push(JSON.parse(JSON.stringify(tableFormKeys)))
}
//
const handleDeleteTable = (item, index) => {
tableData.value.splice(index, 1)
}
//
const submitForm = async (formType, data) => {
data.subList = tableData.value //
try {
if (formType === 'create') {
await DemandforecastingMainApi.createDemandforecastingMain(data)
message.success(t('common.createSuccess'))
} else {
await DemandforecastingMainApi.updateDemandforecastingMain(data)
message.success(t('common.updateSuccess'))
}
formRef.value.dialogVisible = false
//
getList()
} finally {
formRef.value.formLoading = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '要货预测主导入模版.xls'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(() => {
onMounted(async () => {
getList()
importTemplateData.templateUrl = await DemandforecastingMainApi.importTemplate()
})
</script>

634
src/views/wms/purchasereceiptManage/supplierdeliver/purchaseMain/index.vue

@ -1,404 +1,237 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="供应商代码" prop="supplierCode">
<el-input
v-model="queryParams.supplierCode"
placeholder="请输入供应商代码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单据号" prop="number">
<el-input
v-model="queryParams.number"
placeholder="请输入单据号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="订单类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择订单类型" clearable class="!w-240px">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PURCHASE_ORDER_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PURCHASE_ORDER_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="订单日期" prop="orderDate">
<el-date-picker
v-model="queryParams.orderDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="截止日期" prop="dueDate">
<el-date-picker
v-model="queryParams.dueDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="版本" prop="version">
<el-input
v-model="queryParams.version"
placeholder="请输入版本"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="税率" prop="taxRate">
<el-input
v-model="queryParams.taxRate"
placeholder="请输入税率"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="联系人姓名" prop="contactName">
<el-input
v-model="queryParams.contactName"
placeholder="请输入联系人姓名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="联系人电话" prop="contactPhone">
<el-input
v-model="queryParams.contactPhone"
placeholder="请输入联系人电话"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="联系人电子邮件" prop="contactEmail">
<el-input
v-model="queryParams.contactEmail"
placeholder="请输入联系人电子邮件"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="是否寄存订单" prop="isConsignment">
<el-select
v-model="queryParams.isConsignment"
placeholder="请选择是否寄存订单"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.TRUE_FALSE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="业务类型" prop="businessType">
<el-input
v-model="queryParams.businessType"
placeholder="请输入业务类型"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建者用户名" prop="creator">
<el-input
v-model="queryParams.creator"
placeholder="请输入创建者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="最后更新时间" prop="updateTime">
<el-date-picker
v-model="queryParams.updateTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="最后更新者用户名" prop="updater">
<el-input
v-model="queryParams.updater"
placeholder="请输入最后更新者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="当前阶段" prop="currentStage">
<el-input
v-model="queryParams.currentStage"
placeholder="请输入当前阶段"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="是否可用" prop="available">
<el-select
v-model="queryParams.available"
placeholder="请选择是否可用"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.TRUE_FALSE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="info" plain @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button type="info" plain @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
@click="openForm('create')"
v-hasPermi="['wms:purchase-main:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['wms:purchase-main:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
<Search :schema="PurchaseMain.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="PurchaseMain.allSchemas"
/>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="供应商代码" align="center" prop="supplierCode" width="150px" />
<el-table-column label="单据号" align="center" prop="number" width="150px" />
<el-table-column label="订单类型" align="center" prop="type" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.PURCHASE_ORDER_TYPE" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.PURCHASE_ORDER_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column
label="订单日期"
align="center"
prop="orderDate"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column
label="截止日期"
align="center"
prop="dueDate"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="版本" align="center" prop="version" width="150px" />
<el-table-column label="税率" align="center" prop="taxRate" width="150px" />
<el-table-column label="联系人姓名" align="center" prop="contactName" width="150px" />
<el-table-column label="联系人电话" align="center" prop="contactPhone" width="150px" />
<el-table-column label="联系人电子邮件" align="center" prop="contactEmail" width="150px" />
<el-table-column label="是否寄存订单" align="center" prop="isConsignment" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.TRUE_FALSE" :value="scope.row.isConsignment" />
</template>
</el-table-column>
<el-table-column label="业务类型" align="center" prop="businessType" width="150px" />
<el-table-column label="备注" align="center" prop="remark" width="150px" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="创建者用户名" align="center" prop="creator" width="150px" />
<el-table-column
label="最后更新时间"
align="center"
prop="updateTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="最后更新者用户名" align="center" prop="updater" width="150px" />
<el-table-column label="当前阶段" align="center" prop="currentStage" width="150px" />
<el-table-column label="是否可用" align="center" prop="available" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.TRUE_FALSE" :value="scope.row.available" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="150px" fixed="right">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['wms:purchase-main:update']"
<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"
>
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['wms:purchase-main:delete']"
>
删除
<template #number="{row}">
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
<span>{{ row.number }}</span>
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<template #action="{ row }">
<ButtonBase :Butttondata="butttondata" @button-base-click="buttonTableClick($event,row)" />
</template>
</Table>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<PurchaseMainForm ref="formRef" @success="getList" />
<BasicForm
ref="formRef"
@success="getList"
:rules="PurchaseMainRules"
:formAllSchemas="PurchaseMain.allSchemas"
:searchTableParams="searchTableParams"
:tableAllSchemas="PurchaseDetail.allSchemas"
:tableFormRules="PurchaseDetailRules"
:tableData="tableData"
:apiUpdate="PurchaseMainApi.updatePurchaseMain"
:apiCreate="PurchaseMainApi.createPurchaseMain"
:isBusiness="true"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@searchTableSuccess="searchTableSuccess"
@submitForm="submitForm"
/>
<!-- 详情 -->
<Detail
ref="detailRef"
:isBasic="false"
:allSchemas="PurchaseMain.allSchemas"
:detailAllSchemas="PurchaseDetail.allSchemas"
:detailAllSchemasRules="PurchaseDetailRules"
:searchTableParams="searchTableParams"
:apiCreate="PurchaseDetailApi.createPurchaseDetail"
:apiUpdate="PurchaseDetailApi.updatePurchaseDetail"
:apiPage="PurchaseDetailApi.getPurchaseDetailPage"
:apiDelete="PurchaseDetailApi.deletePurchaseDetail"
:Echo="Echo"
/>
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/purchase-main/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { PurchaseMain,PurchaseMainRules,PurchaseDetail,PurchaseDetailRules } from './purchaseMain.data'
import * as PurchaseMainApi from '@/api/wms/purchaseMain'
import PurchaseMainForm from './PurchaseMainForm.vue'
import * as PurchaseDetailApi from '@/api/wms/purchaseDetail'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
//
defineOptions({ name: 'PurchaseMain' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
supplierCode: null,
number: null,
type: null,
status: null,
orderDate: [],
dueDate: [],
version: null,
taxRate: null,
contactName: null,
contactPhone: null,
contactEmail: null,
isConsignment: null,
businessType: null,
remark: null,
createTime: [],
creator: null,
updateTime: [],
updater: null,
currentStage: null,
available: null
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(PurchaseMain.allSchemas.tableColumns)
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await PurchaseMainApi.getPurchaseMainPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const searchTableParams = ref([
//{
// formField: 'productItemCode',
// searchTableTitle: '',
// searchTableAllSchemas: Itembasic.allSchemas,
// searchTablePage: ItembasicApi.getItembasicPage
//}
])
//
const searchTableSuccess = (formField, searchField, val, formRef, type, row ) => {
nextTick(() => {
if (type == 'tableForm') {
//
//row[formField] = val[0][searchField]
//row['poLine'] = val[0]['poLine']
//row['batch'] = val[0]['toBatch']
//row['altBatch'] = val[0]['altBatch']
//row['itemCode'] = val[0]['itemCode']
//row['itemName'] = val[0]['itemName']
//row['itemDesc1'] = val[0]['itemDesc1']
//row['itemDesc2'] = val[0]['itemDesc2']
//row['projectCode'] = val[0]['projectCode']
//row['qty'] = val[0]['qty']
//row['uom'] = val[0]['uom']
} else {
const setV = {}
setV[formField] = val[0][searchField]
//setV['ppNumber'] = val[0]['ppNumber']
//setV['supplierCode'] = val[0]['supplierCode']
formRef.setValues(setV)
}
})
}
//
// const Echo = ['ppNumber','poLine', 'batch', 'altBatch', 'itemCode', 'itemName', 'itemDesc1', 'itemDesc2', 'projectCode', 'qty', 'uom']
const Echo = []
const { tableObject, tableMethods } = useTable({
getListApi: PurchaseMainApi.getPurchaseMainPage //
})
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
//
const { getList, setSearchParams } = tableMethods
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:purchase-main:create'}), //
defaultButtons.defaultImportBtn({hasPermi:'wms:purchase-main:import'}), //
defaultButtons.defaultExportBtn({hasPermi:'wms:purchase-main: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 resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
//
const isShowMainButton = (row,val) => {
if (val.indexOf(row.status) > -1) {
return false
} else {
return true
}
}
// -
const butttondata = (row) => {
return [
defaultButtons.mainListOrderCloBtn({hide:isShowMainButton(row,['ORDER_READY'])}), //
defaultButtons.mainListOrderPubBtn({hide:isShowMainButton(row,['ORDER_READY'])}), //
defaultButtons.mainListOrderOpeBtn({hide:isShowMainButton(row,['ORDER_CLOSED'])}), //
defaultButtons.mainListOrderWitBtn({hide:isShowMainButton(row,['ORDER_PUBLISHED'])}), //
defaultButtons.mainListEditBtn({hasPermi:'wms:purchaseMain:update'}), //
defaultButtons.mainListDeleteBtn({hasPermi:'wms:purchaseMain:delete'}), //
]
}
// -
const buttonTableClick = async (val, row) => {
if (val == 'mainClose') { //
console.log('列表-操作按钮事件-关闭')
} else if (val == 'mainReAdd') { //
console.log('列表-操作按钮事件-重新添加')
} else if (val == 'mainSubmit') { //
console.log('列表-操作按钮事件-提交审批')
} else if (val == 'mainTurnDown') { //
console.log('列表-操作按钮事件-驳回')
} else if (val == 'mainApprove') { //
console.log('列表-操作按钮事件-审批通过')
} else if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
const openForm =async (type: string, row?: number) => {
tableData.value = [] //
formRef.value.open(type, row)
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue)
}
/** 删除按钮操作 */
@ -415,13 +248,14 @@ const handleDelete = async (id: number) => {
}
/** 导出按钮操作 */
const exportLoading = ref(false) //
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await PurchaseMainApi.exportPurchaseMain(queryParams)
const data = await PurchaseMainApi.exportPurchaseMain(setSearchParams)
download.excel(data, '采购订单主.xls')
} catch {
} finally {
@ -429,8 +263,72 @@ const handleExport = async () => {
}
}
/**
* tableForm方法
*/
const tableFormKeys = {}
PurchaseDetail.allSchemas.tableFormColumns.forEach(item => {
tableFormKeys[item.field] = item.default ? item.default : ''
})
const tableData = ref([])
//
const handleAddTable = () => {
tableData.value.push(JSON.parse(JSON.stringify(tableFormKeys)))
}
//
const handleDeleteTable = (item, index) => {
tableData.value.splice(index, 1)
}
//
const submitForm = async (formType, data) => {
data.subList = tableData.value //
try {
if (formType === 'create') {
await PurchaseMainApi.createPurchaseMain(data)
message.success(t('common.createSuccess'))
} else {
await PurchaseMainApi.updatePurchaseMain(data)
message.success(t('common.updateSuccess'))
}
formRef.value.dialogVisible = false
//
getList()
} finally {
formRef.value.formLoading = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '采购订单主导入模版.xls'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(() => {
onMounted(async () => {
getList()
importTemplateData.templateUrl = await PurchaseMainApi.importTemplate()
})
</script>

10
src/views/wms/purchasereceiptManage/supplierdeliver/purchaseMain/purchaseMain.data.ts

@ -555,6 +555,16 @@ export const PurchaseDetail = useCrudSchemas(reactive<CrudSchema[]>([
valueFormat: 'x',
}
},
},
{
label: '操作',
field: 'action',
isDetail: false,
isForm: false,
table: {
width: 150,
fixed: 'right'
}
}
]))

571
src/views/wms/purchasereceiptManage/supplierdeliver/purchasePlanMain/index.vue

@ -1,334 +1,244 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="供应商代码" prop="supplierCode">
<el-input
v-model="queryParams.supplierCode"
placeholder="请输入供应商代码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="时间窗口" prop="timeWindow">
<el-input
v-model="queryParams.timeWindow"
placeholder="请输入时间窗口"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="仓库代码" prop="warehouseCode">
<el-input
v-model="queryParams.warehouseCode"
placeholder="请输入仓库代码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="月台代码" prop="dockCode">
<el-input
v-model="queryParams.dockCode"
placeholder="请输入月台代码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单据号" prop="number">
<el-input
v-model="queryParams.number"
placeholder="请输入单据号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="业务类型" prop="businessType">
<el-input
v-model="queryParams.businessType"
placeholder="请输入业务类型"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建者用户名" prop="creator">
<el-input
v-model="queryParams.creator"
placeholder="请输入创建者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="开始时间" prop="beginTime">
<el-date-picker
v-model="queryParams.beginTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-date-picker
v-model="queryParams.endTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PLAN_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="最后更新时间" prop="updateTime">
<el-date-picker
v-model="queryParams.updateTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="最后更新者用户名" prop="updater">
<el-input
v-model="queryParams.updater"
placeholder="请输入最后更新者用户名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="是否可用" prop="available">
<el-select
v-model="queryParams.available"
placeholder="请选择是否可用"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.TRUE_FALSE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="info" plain @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button type="info" plain @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
@click="openForm('create')"
v-hasPermi="['wms:purchase-plan-main:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['wms:purchase-plan-main:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
<Search :schema="PurchasePlanMain.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="PurchasePlanMain.allSchemas"
/>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="供应商代码" align="center" prop="supplierCode" width="150px" />
<el-table-column label="时间窗口" align="center" prop="timeWindow" width="150px" />
<el-table-column label="仓库代码" align="center" prop="warehouseCode" width="150px" />
<el-table-column label="月台代码" align="center" prop="dockCode" width="150px" />
<el-table-column label="单据号" align="center" prop="number" width="150px" />
<el-table-column label="业务类型" align="center" prop="businessType" width="150px" />
<el-table-column label="备注" align="center" prop="remark" width="150px" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="创建者用户名" align="center" prop="creator" width="150px" />
<el-table-column
label="开始时间"
align="center"
prop="beginTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column
label="结束时间"
align="center"
prop="endTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="状态" align="center" prop="status" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.PLAN_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column
label="最后更新时间"
align="center"
prop="updateTime"
:formatter="dateFormatter"
width="150px"
/>
<el-table-column label="最后更新者用户名" align="center" prop="updater" width="150px" />
<el-table-column label="是否可用" align="center" prop="available" width="150px">
<template #default="scope">
<dict-tag :type="DICT_TYPE.TRUE_FALSE" :value="scope.row.available" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="150px" fixed="right">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['wms:purchase-plan-main:update']"
>
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['wms:purchase-plan-main:delete']"
<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 #number="{row}">
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
<span>{{ row.number }}</span>
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<template #action="{ row }">
<ButtonBase :Butttondata="butttondata(row)" @button-base-click="buttonTableClick($event,row)" />
</template>
</Table>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<PurchasePlanMainForm ref="formRef" @success="getList" />
<BasicForm
ref="formRef"
@success="getList"
:rules="PurchasePlanMainRules"
:formAllSchemas="PurchasePlanMain.allSchemas"
:searchTableParams="searchTableParams"
:tableAllSchemas="PurchasePlanDetail.allSchemas"
:tableFormRules="PurchasePlanDetailRules"
:tableData="tableData"
:apiUpdate="PurchasePlanMainApi.updatePurchasePlanMain"
:apiCreate="PurchasePlanMainApi.createPurchasePlanMain"
:isBusiness="true"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@searchTableSuccess="searchTableSuccess"
@submitForm="submitForm"
/>
<!-- 详情 -->
<Detail
ref="detailRef"
:isBasic="false"
:allSchemas="PurchasePlanMain.allSchemas"
:detailAllSchemas="PurchasePlanDetail.allSchemas"
:detailAllSchemasRules="PurchasePlanDetailRules"
:searchTableParams="searchTableParams"
:apiCreate="PurchasePlanDetailApi.createPurchasePlanDetail"
:apiUpdate="PurchasePlanDetailApi.updatePurchasePlanDetail"
:apiPage="PurchasePlanDetailApi.getPurchasePlanDetailPage"
:apiDelete="PurchasePlanDetailApi.deletePurchasePlanDetail"
:Echo="Echo"
/>
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/purchase-plan-main/import" :importTemplateData="importTemplateData" @success="importSuccess" />
</template>
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { PurchasePlanMain,PurchasePlanMainRules,PurchasePlanDetail,PurchasePlanDetailRules } from './purchasePlanMain.data'
import * as PurchasePlanMainApi from '@/api/wms/purchasePlanMain'
import PurchasePlanMainForm from './PurchasePlanMainForm.vue'
import * as PurchasePlanDetailApi from '@/api/wms/purchasePlanDetail'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
//
defineOptions({ name: 'PurchasePlanMain' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
supplierCode: null,
timeWindow: null,
warehouseCode: null,
dockCode: null,
number: null,
businessType: null,
remark: null,
createTime: [],
creator: null,
beginTime: [],
endTime: [],
status: null,
updateTime: [],
updater: null,
available: null
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref(PurchasePlanMain.allSchemas.tableColumns)
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await PurchasePlanMainApi.getPurchasePlanMainPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const searchTableParams = ref([
//{
// formField: 'productItemCode',
// searchTableTitle: '',
// searchTableAllSchemas: Itembasic.allSchemas,
// searchTablePage: ItembasicApi.getItembasicPage
//}
])
//
const searchTableSuccess = (formField, searchField, val, formRef, type, row ) => {
nextTick(() => {
if (type == 'tableForm') {
//
//row[formField] = val[0][searchField]
//row['poLine'] = val[0]['poLine']
//row['batch'] = val[0]['toBatch']
//row['altBatch'] = val[0]['altBatch']
//row['itemCode'] = val[0]['itemCode']
//row['itemName'] = val[0]['itemName']
//row['itemDesc1'] = val[0]['itemDesc1']
//row['itemDesc2'] = val[0]['itemDesc2']
//row['projectCode'] = val[0]['projectCode']
//row['qty'] = val[0]['qty']
//row['uom'] = val[0]['uom']
} else {
const setV = {}
setV[formField] = val[0][searchField]
//setV['ppNumber'] = val[0]['ppNumber']
//setV['supplierCode'] = val[0]['supplierCode']
formRef.setValues(setV)
}
})
}
//
// const Echo = ['ppNumber','poLine', 'batch', 'altBatch', 'itemCode', 'itemName', 'itemDesc1', 'itemDesc2', 'projectCode', 'qty', 'uom']
const Echo = []
const { tableObject, tableMethods } = useTable({
getListApi: PurchasePlanMainApi.getPurchasePlanMainPage //
})
//
const { getList, setSearchParams } = tableMethods
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:purchase-plan-main:create'}), //
defaultButtons.defaultImportBtn({hasPermi:'wms:purchase-plan-main:import'}), //
defaultButtons.defaultExportBtn({hasPermi:'wms:purchase-plan-main: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 isShowMainButton = (row,val) => {
if (val.indexOf(row.status) > -1) {
return false
} else {
return true
}
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
// -
const butttondata = (row) => {
return [
defaultButtons.mainListPurchasePlanModBtn({hide:isShowMainButton(row,['PLAN_PURCHASE_REJECTED'])}), //
defaultButtons.mainListPurchasePlanWitBtn({hide:isShowMainButton(row,['PLAN_PURCHASE_PUBLISHED'])}), //
defaultButtons.mainListPurchasePlanRejBtn({hide:isShowMainButton(row,['PLAN_PURCHASE_PUBLISHED'])}), //
defaultButtons.mainListPurchasePlanAccBtn({hide:isShowMainButton(row,['PLAN_PURCHASE_PUBLISHED'])}), //
defaultButtons.mainListPurchasePlanPubBtn({hide:isShowMainButton(row,['PLAN_PURCHASE_Ready'])}), //
defaultButtons.mainListPurchasePlanCloBtn({hide:isShowMainButton(row,['PLAN_PURCHASE_Ready'])}), //
defaultButtons.mainListPurchasePlanOpeBtn({hide:isShowMainButton(row,['PLAN_PURCHASE_CLOSED'])}), //
defaultButtons.mainListEditBtn({hide:isShowMainButton(row,['PLAN_PURCHASE_Ready']),hasPermi:'wms:purchase-plan-main:update'}), //
defaultButtons.mainListDeleteBtn({hide:isShowMainButton(row,['PLAN_PURCHASE_Ready']),hasPermi:'wms:purchase-plan-main:delete'}), //
]
}
// -
const buttonTableClick = async (val, row) => {
if (val == 'mainPurPlanOpe') { //
console.log('列表-操作按钮事件-打开')
} else if (val == 'mainPurPlanClo') { //
console.log('列表-操作按钮事件-关闭')
} else if (val == 'mainPurPlanPub') { //
console.log('列表-操作按钮事件-发布')
} else if (val == 'mainPurPlanAcc') { //
console.log('列表-操作按钮事件-接受')
} else if (val == 'mainPurPlanRej') { //
console.log('列表-操作按钮事件-不接受')
} else if (val == 'mainPurPlanWit') { //
console.log('列表-操作按钮事件-下架')
} else if (val == 'mainPurPlanMod') { //
console.log('列表-操作按钮事件-修改')
} else if (val == 'edit') { //
openForm('update', row)
} else if (val == 'delete') { //
handleDelete(row.id)
}
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
const openForm =async (type: string, row?: number) => {
tableData.value = [] //
formRef.value.open(type, row)
}
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
detailRef.value.openDetail(row, titleName, titleValue)
}
/** 删除按钮操作 */
@ -345,13 +255,14 @@ const handleDelete = async (id: number) => {
}
/** 导出按钮操作 */
const exportLoading = ref(false) //
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await PurchasePlanMainApi.exportPurchasePlanMain(queryParams)
const data = await PurchasePlanMainApi.exportPurchasePlanMain(setSearchParams)
download.excel(data, '要货计划主.xls')
} catch {
} finally {
@ -359,8 +270,72 @@ const handleExport = async () => {
}
}
/**
* tableForm方法
*/
const tableFormKeys = {}
PurchasePlanDetail.allSchemas.tableFormColumns.forEach(item => {
tableFormKeys[item.field] = item.default ? item.default : ''
})
const tableData = ref([])
//
const handleAddTable = () => {
tableData.value.push(JSON.parse(JSON.stringify(tableFormKeys)))
}
//
const handleDeleteTable = (item, index) => {
tableData.value.splice(index, 1)
}
//
const submitForm = async (formType, data) => {
data.subList = tableData.value //
try {
if (formType === 'create') {
await PurchasePlanMainApi.createPurchasePlanMain(data)
message.success(t('common.createSuccess'))
} else {
await PurchasePlanMainApi.updatePurchasePlanMain(data)
message.success(t('common.updateSuccess'))
}
formRef.value.dialogVisible = false
//
getList()
} finally {
formRef.value.formLoading = false
}
}
/** 导入 */
const importFormRef = ref()
const handleImport = () => {
importFormRef.value.open()
}
//
const importTemplateData = reactive({
templateUrl: '',
templateTitle: '要货计划主导入模版.xls'
})
//
const importSuccess = () => {
getList()
}
//
const searchFormClick = (searchData) => {
tableObject.params = {
isSearch: true,
filters: searchData.filters
}
getList() //
}
/** 初始化 **/
onMounted(() => {
onMounted(async () => {
getList()
importTemplateData.templateUrl = await PurchasePlanMainApi.importTemplate()
})
</script>

120
src/views/wms/purchasereceiptManage/supplierdeliver/purchasePlanMain/purchasePlanMain.data.ts

@ -6,6 +6,16 @@ const { t } = useI18n() // 国际化
* @returns {Array}
*/
export const PurchasePlanMain = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '单据号',
field: 'number',
sort: 'custom',
isForm: false ,
table: {
width: 150
},
isSearch: true
},
{
label: '供应商代码',
field: 'supplierCode',
@ -13,6 +23,7 @@ export const PurchasePlanMain = useCrudSchemas(reactive<CrudSchema[]>([
table: {
width: 150
},
isSearch: true
},
{
label: '时间窗口',
@ -38,14 +49,6 @@ export const PurchasePlanMain = useCrudSchemas(reactive<CrudSchema[]>([
width: 150
},
},
{
label: '单据号',
field: 'number',
sort: 'custom',
table: {
width: 150
},
},
{
label: '业务类型',
field: 'businessType',
@ -58,14 +61,10 @@ export const PurchasePlanMain = useCrudSchemas(reactive<CrudSchema[]>([
label: '状态',
field: 'status',
sort: 'custom',
table: {
width: 150
},
},
{
label: '备注',
field: 'remark',
sort: 'custom',
dictType: DICT_TYPE.PURCHASE_PLAN_STATUS,
dictClass: 'string',
isTable: true,
isSearch: true,
table: {
width: 150
},
@ -112,10 +111,19 @@ export const PurchasePlanMain = useCrudSchemas(reactive<CrudSchema[]>([
}
},
},
{
label: '备注',
field: 'remark',
sort: 'custom',
table: {
width: 150
},
},
{
label: '创建时间',
field: 'createTime',
isTable: true,
isForm: false ,
formatter: dateFormatter,
detail: {
dateFormat: 'YYYY-MM-DD HH:mm:ss'
@ -124,19 +132,12 @@ export const PurchasePlanMain = useCrudSchemas(reactive<CrudSchema[]>([
table: {
width: 180
},
form: {
component: 'DatePicker',
componentProps: {
type: 'datetime',
dateFormat: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'x',
}
},
},
{
label: '创建者',
field: 'creator',
sort: 'custom',
isForm: false ,
table: {
width: 150
},
@ -145,6 +146,7 @@ export const PurchasePlanMain = useCrudSchemas(reactive<CrudSchema[]>([
label: '最后更新时间',
field: 'updateTime',
isTable: true,
isForm: false ,
formatter: dateFormatter,
detail: {
dateFormat: 'YYYY-MM-DD HH:mm:ss'
@ -152,20 +154,13 @@ export const PurchasePlanMain = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
table: {
width: 180
},
form: {
component: 'DatePicker',
componentProps: {
type: 'datetime',
dateFormat: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'x',
}
},
},
{
label: '最后更新者',
field: 'updater',
sort: 'custom',
isForm: false ,
table: {
width: 150
},
@ -175,7 +170,6 @@ export const PurchasePlanMain = useCrudSchemas(reactive<CrudSchema[]>([
field: 'available',
dictType: DICT_TYPE.TRUE_FALSE,
dictClass: 'string',
isSearch: true,
isTable: true,
sort: 'custom',
table: {
@ -189,6 +183,16 @@ export const PurchasePlanMain = useCrudSchemas(reactive<CrudSchema[]>([
activeValue: 'TRUE'
}
},
},
{
label: '操作',
field: 'action',
isDetail: false,
isForm: false ,
table: {
width: 200,
fixed: 'right'
}
}
]))
@ -238,6 +242,7 @@ export const PurchasePlanDetail = useCrudSchemas(reactive<CrudSchema[]>([
label: '单据号',
field: 'number',
sort: 'custom',
isTableForm:false,
table: {
width: 150
}
@ -250,14 +255,6 @@ export const PurchasePlanDetail = useCrudSchemas(reactive<CrudSchema[]>([
width: 150
}
},
{
label: '备注',
field: 'remark',
sort: 'custom',
table: {
width: 150
}
},
{
label: '创建时间',
field: 'createTime',
@ -266,22 +263,16 @@ export const PurchasePlanDetail = useCrudSchemas(reactive<CrudSchema[]>([
dateFormat: 'YYYY-MM-DD HH:mm:ss'
},
sort: 'custom',
isTableForm:false,
table: {
width: 180
},
form: {
component: 'DatePicker',
componentProps: {
type: 'datetime',
dateFormat: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'x',
}
},
},
{
label: '创建者',
field: 'creator',
sort: 'custom',
isTableForm:false,
table: {
width: 150
}
@ -293,7 +284,7 @@ export const PurchasePlanDetail = useCrudSchemas(reactive<CrudSchema[]>([
table: {
width: 150
},
form: {
tableForm: {
component: 'InputNumber',
},
},
@ -304,7 +295,7 @@ export const PurchasePlanDetail = useCrudSchemas(reactive<CrudSchema[]>([
table: {
width: 150
},
form: {
tableForm: {
component: 'InputNumber',
},
},
@ -324,6 +315,7 @@ export const PurchasePlanDetail = useCrudSchemas(reactive<CrudSchema[]>([
label: '最后更新者',
field: 'updater',
sort: 'custom',
isTableForm:false,
table: {
width: 150
}
@ -332,21 +324,22 @@ export const PurchasePlanDetail = useCrudSchemas(reactive<CrudSchema[]>([
label: '最后更新时间',
field: 'updateTime',
sort: 'custom',
isTableForm:false,
formatter: dateFormatter,
detail: {
dateFormat: 'YYYY-MM-DD HH:mm:ss'
},
table: {
width: 180
},
form: {
component: 'DatePicker',
componentProps: {
type: 'datetime',
dateFormat: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'x',
}
},
{
label: '备注',
field: 'remark',
sort: 'custom',
table: {
width: 150
}
},
{
label: '是否可用',
@ -368,6 +361,17 @@ export const PurchasePlanDetail = useCrudSchemas(reactive<CrudSchema[]>([
}
}
},
{
label: '操作',
field: 'action',
isDetail: false,
isForm: false ,
table: {
width: 150,
fixed: 'right'
},
isTableForm:false,
}
]))
//表单校验

3
src/views/wms/purchasereceiptManage/supplierdeliver/supplierdeliverRecordMain/index.vue

@ -441,8 +441,6 @@
/>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<SupplierdeliverRecordMainForm ref="formRef" @success="getList" />
</template>
<script setup lang="ts">
@ -450,7 +448,6 @@ import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import * as SupplierdeliverRecordMainApi from '@/api/wms/supplierdeliverRecordMain'
import SupplierdeliverRecordMainForm from './SupplierdeliverRecordMainForm.vue'
defineOptions({ name: 'SupplierdeliverRecordMain' })

Loading…
Cancel
Save