Browse Source

采购换货单修改样式以及属性

intes_online20250115
叶佳兴 2 months ago
parent
commit
ec0400cb56
  1. 5
      src/api/wms/purchaseBarterRequestDetail/index.ts
  2. 6
      src/views/wms/basicDataManage/itemManage/itembasic/index.vue
  3. 65
      src/views/wms/purchasereceiptManage/purchaseBarter/purchaseBarterRecord/purchaseBarterRecordMain.data.ts
  4. 382
      src/views/wms/purchasereceiptManage/purchaseBarter/purchaseBarterRequest/index.vue
  5. 844
      src/views/wms/purchasereceiptManage/purchaseBarter/purchaseBarterRequest/purchaseBarterRequestMain.data.ts

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

@ -27,6 +27,11 @@ export const getPurchaseBarterRequestDetail = async (id: number) => {
return await request.get({ url: `/wms/purchase-barter-request-detail/get?id=` + id })
}
// 打印发货单前查询子表条数是否大于20条
export const getCount = async (id) => {
return await request.post({ url: `/wms/purchase-barter-request-detail/getCount?id=` + id })
}
// 新增采购换货申请明细
export const createPurchaseBarterRequestDetail = async (data: PurchaseBarterRequestDetailVO) => {
return await request.post({ url: `/wms/purchase-barter-request-detail/create`, data })

6
src/views/wms/basicDataManage/itemManage/itembasic/index.vue

@ -340,9 +340,9 @@ const searchFormClick = (searchData) => {
// tabs
const changeTabs = (item) => {
if(item.prop == 'SupplierItems'){
tabsExtend.value = true
apiPage.value = SupplieritemApi.getSupplieritemPage
detailAllSchemas.value = Supplieritem.allSchemas
// tabsExtend.value = true
// apiPage.value = SupplieritemApi.getSupplieritemPage
// detailAllSchemas.value = Supplieritem.allSchemas
} else if(item.prop == 'CustomerItems'){
tabsExtend.value = true
apiPage.value = CustomeritemApi.getCustomeritemPage

65
src/views/wms/purchasereceiptManage/purchaseBarter/purchaseBarterRecord/purchaseBarterRecordMain.data.ts

@ -1,5 +1,5 @@
import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
import { dateFormatter } from '@/utils/formatTime'
import { dateFormatter,dateFormatter2 } from '@/utils/formatTime'
export const PurchaseBarterRecordMain = useCrudSchemas(reactive<CrudSchema[]>([
{
@ -44,6 +44,69 @@ export const PurchaseBarterRecordMain = useCrudSchemas(reactive<CrudSchema[]>([
sort: 'custom',
isSearch: false,
},
{
label: '替代品入荷指定日',
field: 'substitutePurchaseDate',
sort: 'custom',
formatter: dateFormatter2,
table: {
width: 180
},
search: {
component: 'DatePicker',
componentProps: {
valueFormat: 'YYYY-MM-DD',
type: 'daterange',
defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')]
}
},
form: {
component: 'DatePicker',
componentProps: {
type: 'date',
valueFormat: 'x'
}
},
detail: {
dateFormat:'YYYY-MM-DD'
}
},
{
label: 'INTEX联络时间',
field: 'intexContactView',
sort: 'custom',
isSearch: false,
isTable: true,
isDetail: true,
isForm: false,
table: {
width: 180
},
},
{
label: '供应商联络时间',
field: 'supplierContactView',
sort: 'custom',
isSearch: false,
isTable: true,
isDetail: true,
isForm: false,
table: {
width: 180
},
},
{
label: '不良内容',
field: 'badContent',
sort: 'custom',
isTable: true,
isDetail: true,
table: {
width: 150
},
},
{
label: '创建时间',
field: 'createTime',

382
src/views/wms/purchasereceiptManage/purchaseBarter/purchaseBarterRequest/index.vue

@ -1,23 +1,31 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<Search :schema="[...PurchaseBarterRequestMain.allSchemas.searchSchema,...PurchaseBarterRequestDetail.allSchemas.searchSchema]" @search="setSearchParams" @reset="setSearchParams" />
<Search
:schema="[
...PurchaseBarterRequestMain.allSchemas.searchSchema,
...PurchaseBarterRequestDetail.allSchemas.searchSchema
]"
@search="setSearchParams"
@reset="setSearchParams"
/>
</ContentWrap>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="PurchaseBarterRequestMain.allSchemas"
:detailAllSchemas="PurchaseBarterRequestDetail.allSchemas"
/>
<!-- 列表头部 -->
<TableHead
:HeadButttondata="HeadButttondata"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@updataTableColumns="updataTableColumns"
@searchFormClick="searchFormClick"
:allSchemas="PurchaseBarterRequestMain.allSchemas"
:detailAllSchemas="PurchaseBarterRequestDetail.allSchemas"
/>
<!-- 列表 -->
<ContentWrap>
<Table v-clientTable
<Table
v-clientTable
:columns="tableColumns"
:data="tableObject.tableList"
:loading="tableObject.loading"
@ -28,13 +36,16 @@
v-model:currentPage="tableObject.currentPage"
v-model:sort="tableObject.sort"
>
<template #number="{row}">
<template #number="{ row }">
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
<span>{{ row.number }}</span>
</el-button>
</template>
<template #action="{ row,$index }">
<ButtonBaseMore :Butttondata="butttondata(row,$index)" @button-base-click="buttonTableClick($event,row)" />
<template #action="{ row, $index }">
<ButtonBaseMore
:Butttondata="butttondata(row, $index)"
@button-base-click="buttonTableClick($event, row)"
/>
</template>
</Table>
</ContentWrap>
@ -79,10 +90,16 @@
@onBlur="onBlur"
/>
<!-- 导入 -->
<ImportForm ref="importFormRef" url="/wms/purchase-barter-request-main/import" :importTemplateData="importTemplateData"
@success="importSuccess" :updateIsDisable="true" :coverIsDisable="true" :mode="2" />
<ImportForm
ref="importFormRef"
url="/wms/purchase-barter-request-main/import"
:importTemplateData="importTemplateData"
@success="importSuccess"
:updateIsDisable="true"
:coverIsDisable="true"
:mode="2"
/>
</template>
<script setup lang="ts">
@ -98,12 +115,13 @@ import {
import * as PurchaseBarterRequestMainApi from '@/api/wms/purchaseBarterRequestMain'
import * as PurchaseBarterRequestDetailApi from '@/api/wms/purchaseBarterRequestDetail'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
import * as ItembasicApi from "@/api/wms/itembasic";
import * as ItembasicApi from '@/api/wms/itembasic'
import { formatTime } from '@/utils'
import { formatDate } from '@/utils/formatTime'
import { usePageLoading } from '@/hooks/web/usePageLoading'
import {getJmreportBaseUrl} from "@/utils/systemParam";
import {getAccessToken} from "@/utils/auth";
import { getJmreportBaseUrl } from '@/utils/systemParam'
import { getAccessToken } from '@/utils/auth'
import { log } from 'node:console'
const { loadStart, loadDone } = usePageLoading()
//
@ -115,31 +133,38 @@ const { t } = useI18n() // 国际化
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
const tableColumns = ref([...PurchaseBarterRequestMain.allSchemas.tableColumns,...PurchaseBarterRequestDetail.allSchemas.tableMainColumns])
const tableColumns = ref([
...PurchaseBarterRequestMain.allSchemas.tableColumns,
...PurchaseBarterRequestDetail.allSchemas.tableMainColumns
])
//
const updataTableColumns = (val) => {
tableColumns.value = val
}
//
const searchTableSuccess = (formField, searchField, val, formRef, type, row ) => {
const searchTableSuccess = (formField, searchField, val, formRef, type, row) => {
nextTick(async () => {
if (type == 'tableForm') {
if(formField == 'itemCode'){
let itemCodes = val.filter(item=>tableData.value.find(item1=>item1['itemCode']==item['itemCode']))
if(itemCodes.length>0){
itemCodes = itemCodes.map(item=>(item['itemCode']))
if (formField == 'itemCode') {
let itemCodes = val.filter((item) =>
tableData.value.find((item1) => item1['itemCode'] == item['itemCode'])
)
if (itemCodes.length > 0) {
itemCodes = itemCodes.map((item) => item['itemCode'])
message.warning(`物料${itemCodes.join(',')}已经存在`)
}
val = val.filter(item=>!tableData.value.find(item1=>item1['itemCode']==item['itemCode']))
if(val.length==0){
val = val.filter(
(item) => !tableData.value.find((item1) => item1['itemCode'] == item['itemCode'])
)
if (val.length == 0) {
return
}
let newVal = val.filter(item=>!tableData.value.find(item1=>item1['itemCode']==item['itemCode']))
newVal.forEach(item=>{
let newVal = val.filter(
(item) => !tableData.value.find((item1) => item1['itemCode'] == item['itemCode'])
)
newVal.forEach((item) => {
let tfk = JSON.parse(JSON.stringify(tableFormKeys))
tfk['itemCode'] = item['itemCode']
tfk['itemName'] = item['itemName']
@ -153,7 +178,7 @@ const searchTableSuccess = (formField, searchField, val, formRef, type, row ) =>
}
}
const setV = {}
if(formField === 'supplierCode'){
if (formField === 'supplierCode') {
setV['supplierCode'] = val[0]['code']
setV['supplierName'] = val[0]['name']
tableData.value = []
@ -162,14 +187,13 @@ const searchTableSuccess = (formField, searchField, val, formRef, type, row ) =>
})
}
const handleDetailSubmitForm = async (formType, data) => {
if(data.qty > data.inventoryQty){
message.warning("换货数量不能大于库存数量")
if (data.qty > data.inventoryQty) {
message.warning('换货数量不能大于库存数量')
return
}
if (formType === 'create') {
await PurchaseBarterRequestDetailApi.createPurchaseBarterRequestDetail(data)
message.success(t('common.createSuccess'))
} else {
await PurchaseBarterRequestDetailApi.updatePurchaseBarterRequestDetail(data)
message.success(t('common.updateSuccess'))
@ -178,11 +202,11 @@ const handleDetailSubmitForm = async (formType, data) => {
getList()
}
//
const searchTableSuccessDetail = (formField, searchField, val, formRef ) => {
const searchTableSuccessDetail = (formField, searchField, val, formRef) => {
nextTick(() => {
const setV = {}
setV[formField] = val[0][searchField]
if(formField == 'itemCode'){
if (formField == 'itemCode') {
setV['itemCode'] = val[0]['itemCode']
setV['itemName'] = val[0]['itemName']
setV['uom'] = val[0]['uom']
@ -196,7 +220,7 @@ const searchTableSuccessDetail = (formField, searchField, val, formRef ) => {
})
}
const Echo = []
const Echo = []
const { tableObject, tableMethods } = useTable({
getListApi: PurchaseBarterRequestDetailApi.getPurchaseBarterRequestDetailPage //
@ -207,38 +231,44 @@ const { getList, setSearchParams } = tableMethods
//
const HeadButttondata = [
defaultButtons.defaultAddBtn({hasPermi:'wms:purchase-barter-request-main:create'}), //
defaultButtons.defaultImportBtn({hasPermi:'wms:purchase-barter-request-main:import'}), //
defaultButtons.defaultExportBtn({hasPermi:'wms:purchase-barter-request-main:export'}), //
defaultButtons.defaultAddBtn({ hasPermi: 'wms:purchase-barter-request-main:create' }), //
defaultButtons.defaultImportBtn({ hasPermi: 'wms:purchase-barter-request-main:import' }), //
defaultButtons.defaultExportBtn({ hasPermi: 'wms:purchase-barter-request-main:export' }), //
defaultButtons.defaultFreshBtn(null), //
defaultButtons.defaultFilterBtn(null), //
defaultButtons.defaultSetBtn(null), //
defaultButtons.defaultSetBtn(null) //
]
//
const buttonBaseClick = (val, item) => {
if (val == 'add') { //
if (val == 'add') {
//
openForm('create')
} else if (val == 'import') { //
} else if (val == 'import') {
//
handleImport()
} else if (val == 'export') { //
} else if (val == 'export') {
//
handleExport()
} else if (val == 'refresh') { //
if (tableObject.params.filters && tableObject.params.filters.length > 0 ) {
} else if (val == 'refresh') {
//
if (tableObject.params.filters && tableObject.params.filters.length > 0) {
searchFormClick({
filters: tableObject.params.filters
})
} else {
getList()
}
} else if (val == 'filtrate') { //
} else { //
} else if (val == 'filtrate') {
//
} else {
//
console.log('其他按钮', item)
}
}
//
const isShowMainButton = (row,val) => {
const isShowMainButton = (row, val) => {
if (val.indexOf(row.status) > -1) {
return false
} else {
@ -247,55 +277,85 @@ const isShowMainButton = (row,val) => {
}
// -
const butttondata = (row,$index) => {
const findIndex = row['masterId']?tableObject.tableList.findIndex(item=>item['masterId'] == row['masterId']):-1
if(findIndex>-1&&findIndex<$index){
const butttondata = (row, $index) => {
const findIndex = row['masterId']
? tableObject.tableList.findIndex((item) => item['masterId'] == row['masterId'])
: -1
if (findIndex > -1 && findIndex < $index) {
return []
}
return [
defaultButtons.mainListCloseBtn({hide:isShowMainButton(row,['1','2','3','8']),hasPermi:'wms:purchase-barter-request-main:close'}), //
defaultButtons.mainListReAddBtn({hide:isShowMainButton(row,['4','5']),hasPermi:'wms:purchase-barter-request-main:reAdd'}), //
defaultButtons.mainListSubmitBtn({hide:isShowMainButton(row,['1']),hasPermi:'wms:purchase-barter-request-main:submit'}), //
defaultButtons.mainListTurnDownBtn({hide:isShowMainButton(row,['2']),hasPermi:'wms:purchase-barter-request-main:refused'}), //
defaultButtons.mainListApproveBtn({hide:isShowMainButton(row,['2']),hasPermi:'wms:purchase-barter-request-main:agree'}), //
// defaultButtons.outBtn({hide:isShowMainButton(row,['3']),hasPermi:'wms:purchase-barter-request-main:out'}), //
// defaultButtons.inBtn({hide:isShowMainButton(row,['11']),hasPermi:'wms:purchase-barter-request-main:in'}), //
// defaultButtons.mainListSuspend1Btn({hide:isShowMainButton(row,['11']),hasPermi:'wms:purchase-barter-request-main:suspend'}), //
defaultButtons.mainListDeleteBtn({hide:isShowMainButton(row,['1']),hasPermi:'wms:purchase-barter-request-main:delete'}), //
defaultButtons.mainListDocumentPrintBtn({hide:isShowMainButton(row,['8'])})
]
return [
defaultButtons.mainListCloseBtn({
hide: isShowMainButton(row, ['1', '2', '3', '8']),
hasPermi: 'wms:purchase-barter-request-main:close'
}), //
defaultButtons.mainListReAddBtn({
hide: isShowMainButton(row, ['4', '5']),
hasPermi: 'wms:purchase-barter-request-main:reAdd'
}), //
defaultButtons.mainListSubmitBtn({
hide: isShowMainButton(row, ['1']),
hasPermi: 'wms:purchase-barter-request-main:submit'
}), //
defaultButtons.mainListTurnDownBtn({
hide: isShowMainButton(row, ['2']),
hasPermi: 'wms:purchase-barter-request-main:refused'
}), //
defaultButtons.mainListApproveBtn({
hide: isShowMainButton(row, ['2']),
hasPermi: 'wms:purchase-barter-request-main:agree'
}), //
// defaultButtons.outBtn({hide:isShowMainButton(row,['3']),hasPermi:'wms:purchase-barter-request-main:out'}), //
// defaultButtons.inBtn({hide:isShowMainButton(row,['11']),hasPermi:'wms:purchase-barter-request-main:in'}), //
// defaultButtons.mainListSuspend1Btn({hide:isShowMainButton(row,['11']),hasPermi:'wms:purchase-barter-request-main:suspend'}), //
defaultButtons.mainListDeleteBtn({
hide: isShowMainButton(row, ['1']),
hasPermi: 'wms:purchase-barter-request-main:delete'
}), //
defaultButtons.mainListDocumentPrintBtn({ hide: isShowMainButton(row, ['8']) })
]
}
// -
const buttonTableClick = async (val, row) => {
console.log("val",val)
if (val == 'mainClose') { //
console.log('val', val)
if (val == 'mainClose') {
//
console.log('列表-操作按钮事件-关闭')
handleClose(row.masterId)
} else if (val == 'mainReAdd') { //
} else if (val == 'mainReAdd') {
//
console.log('列表-操作按钮事件-重新添加')
handleReAdd(row.masterId)
} else if (val == 'mainSubmit') { //
} else if (val == 'mainSubmit') {
//
console.log('列表-操作按钮事件-提交审批')
handleSubmit(row.masterId)
} else if (val == 'mainTurnDown') { //
} else if (val == 'mainTurnDown') {
//
console.log('列表-操作按钮事件-驳回')
handleRefused(row.masterId)
} else if (val == 'mainApprove') { //
} else if (val == 'mainApprove') {
//
console.log('列表-操作按钮事件-审批通过')
handleAgree(row.masterId)
} else if (val == 'out') { //
} else if (val == 'out') {
//
console.log('列表-操作按钮事件-出库')
handleOut(row.masterId)
} else if (val == 'in') { //
} else if (val == 'in') {
//
console.log('列表-操作按钮事件-入库')
handleIn(row.masterId)
}else if (val == 'suspend') { //
} else if (val == 'suspend') {
//
console.log('列表-操作按钮事件-中止')
handleSuspend(row.masterId)
}else if (val == 'edit') { //
} else if (val == 'edit') {
//
openForm('update', row)
} else if (val == 'delete') { //
} else if (val == 'delete') {
//
handleDelete(row.masterId)
} else if (val == 'documentPrint') {
handleDocumentPrint(row.masterId)
@ -304,21 +364,30 @@ const buttonTableClick = async (val, row) => {
//
const BASE_URL = getJmreportBaseUrl()
const documentSrc = ref(BASE_URL + '/jmreport/view/1015825402241605632?token=' + getAccessToken())
const documentSrc = ref(BASE_URL + '/jmreport/view/1037144474399084544?token=' + getAccessToken())
const documentSrc2 = ref(BASE_URL + '/jmreport/view/1015825402241605632?token=' + getAccessToken())
const handleDocumentPrint = async (id) => {
window.open(documentSrc.value + '&id=' + id)
await PurchaseBarterRequestDetailApi.getCount(id).then(async (res) => {
if (res) {
//
window.open(documentSrc.value + '&id=' + id)
} else {
//
window.open(documentSrc2.value + '&id=' + id)
}
})
}
/** 关闭按钮操作 */
const handleClose = async (id: number) => {
await message.confirm(t('common.confirmColse'))
tableObject.loading = true
try{
try {
await PurchaseBarterRequestMainApi.closePurchaseBarterRequestMain(id)
message.success(t('common.closeSuccess'))
tableObject.loading = false
buttonBaseClick('refresh',null)
}catch{
buttonBaseClick('refresh', null)
} catch {
tableObject.loading = false
}
}
@ -327,12 +396,12 @@ const handleClose = async (id: number) => {
const handleReAdd = async (id: number) => {
await message.confirm(t('common.confirmReAdd'))
tableObject.loading = true
try{
try {
await PurchaseBarterRequestMainApi.reAddPurchaseBarterRequestMain(id)
message.success(t('common.reAddSuccess'))
tableObject.loading = false
buttonBaseClick('refresh',null)
}catch{
buttonBaseClick('refresh', null)
} catch {
tableObject.loading = false
}
}
@ -341,12 +410,12 @@ const handleReAdd = async (id: number) => {
const handleSubmit = async (id: number) => {
await message.confirm(t('common.confirmSubmit'))
tableObject.loading = true
try{
try {
await PurchaseBarterRequestMainApi.submitPurchaseBarterRequestMain(id)
message.success(t('common.submitSuccess'))
tableObject.loading = false
buttonBaseClick('refresh',null)
}catch{
buttonBaseClick('refresh', null)
} catch {
tableObject.loading = false
}
}
@ -355,12 +424,12 @@ const handleSubmit = async (id: number) => {
const handleRefused = async (id: number) => {
await message.confirm(t('common.confirmRefused'))
tableObject.loading = true
try{
try {
await PurchaseBarterRequestMainApi.refusedPurchaseBarterRequestMain(id)
message.success(t('common.refusedSuccess'))
tableObject.loading = false
buttonBaseClick('refresh',null)
}catch{
buttonBaseClick('refresh', null)
} catch {
tableObject.loading = false
}
}
@ -369,12 +438,12 @@ const handleRefused = async (id: number) => {
const handleAgree = async (id: number) => {
await message.confirm(t('common.confirmAgree'))
tableObject.loading = true
try{
try {
await PurchaseBarterRequestMainApi.agreePurchaseBarterRequestMain(id)
message.success(t('common.agreeSuccess'))
tableObject.loading = false
buttonBaseClick('refresh',null)
}catch{
buttonBaseClick('refresh', null)
} catch {
tableObject.loading = false
}
}
@ -386,7 +455,7 @@ const handleOut = async (id: number) => {
try {
await PurchaseBarterRequestMainApi.outStoragePurchaseBarterRequestMain(id)
message.success(t('common.handleSuccess'))
buttonBaseClick('refresh',null)
buttonBaseClick('refresh', null)
} finally {
tableObject.loading = false
}
@ -398,7 +467,7 @@ const handleIn = async (id: number) => {
try {
await PurchaseBarterRequestMainApi.inStoragePurchaseBarterRequestMain(id)
message.success(t('common.handleSuccess'))
buttonBaseClick('refresh',null)
buttonBaseClick('refresh', null)
} finally {
tableObject.loading = false
}
@ -410,7 +479,7 @@ const handleSuspend = async (id: number) => {
try {
await PurchaseBarterRequestMainApi.suspendPurchaseBarterRequestMain(id)
message.success(t('common.handleSuccess'))
buttonBaseClick('refresh',null)
buttonBaseClick('refresh', null)
} finally {
tableObject.loading = false
}
@ -418,15 +487,13 @@ const handleSuspend = async (id: number) => {
/** 添加/修改操作 */
const formRef = ref()
const openForm =async (type: string, row?: number) => {
const openForm = async (type: string, row?: number) => {
PurchaseBarterRequestMain.allSchemas.formSchema.forEach((item) => {
if(type == "update"){
}else{
if (type == 'update') {
} else {
}
})
}
})
tableData.value = [] //
formRef.value.open(type, row)
}
@ -436,9 +503,11 @@ const { wsCache } = useCache()
/** 详情操作 */
const detailRef = ref()
const openDetail = (row: any, titleName: any, titleValue: any) => {
const departmentCode = wsCache.get(CACHE_KEY.DEPT).find((account) => account.id == row.departmentCode)?.name
const departmentCode = wsCache
.get(CACHE_KEY.DEPT)
.find((account) => account.id == row.departmentCode)?.name
if (departmentCode) row.departmentCode = JSON.parse(JSON.stringify(departmentCode))
detailRef.value.openDetail(row, titleName, titleValue,'requestPurchaseBarterMain')
detailRef.value.openDetail(row, titleName, titleValue, 'requestPurchaseBarterMain')
}
/** 删除按钮操作 */
@ -452,7 +521,7 @@ const handleDelete = async (id: number) => {
message.success(t('common.delSuccess'))
tableObject.loading = false
//
buttonBaseClick('refresh',null)
buttonBaseClick('refresh', null)
} catch {}
}
@ -465,7 +534,9 @@ const handleExport = async () => {
loadStart()
const excelTitle = ref(route.meta.title)
tableObject.params.detailDataType = 1
const data = await PurchaseBarterRequestMainApi.exportPurchaseBarterRequestMain(tableObject.params)
const data = await PurchaseBarterRequestMainApi.exportPurchaseBarterRequestMain(
tableObject.params
)
download.excel(data, `${excelTitle.value}】【${formatDate(new Date())}】.xlsx`)
} catch {
} finally {
@ -474,10 +545,10 @@ const handleExport = async () => {
}
/**
* tableForm方法
*/
* tableForm方法
*/
const tableFormKeys = {}
PurchaseBarterRequestDetail.allSchemas.tableFormColumns.forEach(item => {
PurchaseBarterRequestDetail.allSchemas.tableFormColumns.forEach((item) => {
tableFormKeys[item.field] = item.default ? item.default : ''
})
const tableData = ref([])
@ -491,47 +562,50 @@ const handleAddTable = () => {
//
const handleDeleteTable = (item, index) => {
let itemIndex = tableData.value.indexOf(item)
if(itemIndex>-1){
if (itemIndex > -1) {
tableData.value.splice(itemIndex, 1)
}
}
const tableSelectionDelete = (selection) => {
tableData.value = tableData.value.filter(item => !selection.includes(item))
tableData.value = tableData.value.filter((item) => !selection.includes(item))
}
//
const submitForm = async (formType, submitData) => {
let data = {...submitData}
if(data.masterId){
let data = { ...submitData }
if (data.masterId) {
data.id = data.masterId
}
}
data.subList = tableData.value //
const cmdExists = data.subList.some(filter =>
parseFloat(filter.inventoryQty) < parseFloat(filter.qty)
);
const cmdExists = data.subList.some(
(filter) => parseFloat(filter.inventoryQty) < parseFloat(filter.qty)
)
try {
if (formType === 'create') {
if(data.subList.length == 0){
message.warning("请添加子列表数据")
return;
if (data.subList.length == 0) {
message.warning('请添加子列表数据')
return
}
let flag = false;
let flag = false
data.subList.forEach((item) => {
if(item.qty == 0){
message.warning("数量不能为0")
flag = true;
return;
}
if (item.qty == 0) {
message.warning('数量不能为0')
flag = true
return
}
})
if(flag){
if (flag) {
return
}
if(cmdExists){
message.warning("换货数量不能大于库存数量")
if (cmdExists) {
message.warning('换货数量不能大于库存数量')
return
}
formRef.value.formLoading = true
data.intexContactBegin = data.intexContact[0]
data.intexContactEnd = data.intexContact[0]
data.supplierContactBegin = data.supplierContact[0]
data.supplierContactEnd = data.supplierContact[0]
await PurchaseBarterRequestMainApi.createPurchaseBarterRequestMain(data)
message.success(t('common.createSuccess'))
} else {
@ -543,8 +617,8 @@ const submitForm = async (formType, submitData) => {
//
if (formType === 'create') {
getList()
}else{
buttonBaseClick('refresh',null)
} else {
buttonBaseClick('refresh', null)
}
} finally {
formRef.value.formLoading = false
@ -553,14 +627,14 @@ const submitForm = async (formType, submitData) => {
// /
const detailValidate = (data) => {
let tag = false;
if(data.qty <= 0){
let tag = false
if (data.qty <= 0) {
message.warning('数量必须大于0')
tag = false;
return tag;
}else {
tag = true;
return tag;
tag = false
return tag
} else {
tag = true
return tag
}
}
@ -591,25 +665,27 @@ const searchFormClick = (searchData) => {
}
let validityDays = 0
const detailOpenForm = (type, row)=>{
console.log('detailOpenForm',row)
if(type=='update'){
const detailOpenForm = (type, row) => {
console.log('detailOpenForm', row)
if (type == 'update') {
//
ItembasicApi.getItembasicPage({
code:row.itemCode
}).then((res)=>{
res.list.forEach((item,index)=>{
const findItem = tableData.value.find(item1=>item1['itemCode']==row['code'])
if(findItem){
code: row.itemCode
}).then((res) => {
res.list.forEach((item, index) => {
const findItem = tableData.value.find((item1) => item1['itemCode'] == row['code'])
if (findItem) {
validityDays = findItem['expireTime']
}
})
detailRef.value.formRef.formRef.formModel.expireDate = addDay(detailRef.value.formRef.formRef.formModel.produceDate,validityDays).valueOf()
detailRef.value.formRef.formRef.formModel.expireDate = addDay(
detailRef.value.formRef.formRef.formModel.produceDate,
validityDays
).valueOf()
})
}else{
} else {
validityDays = 0
}
}
const onBlur = (field, e) => {

844
src/views/wms/purchasereceiptManage/purchaseBarter/purchaseBarterRequest/purchaseBarterRequestMain.data.ts

@ -1,236 +1,357 @@
import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
import {Supplier} from "@/views/wms/basicDataManage/supplierManage/supplier/supplier.data";
import * as SupplierApi from "@/api/wms/supplier";
import * as ItembasicApi from "@/api/wms/itembasic";
import { dateFormatter } from '@/utils/formatTime'
import {
Supplieritem
} from "@/views/wms/basicDataManage/supplierManage/supplieritem/supplieritem.data";
import * as SupplieritemApi from "@/api/wms/supplieritem";
import { Supplier } from '@/views/wms/basicDataManage/supplierManage/supplier/supplier.data'
import * as SupplierApi from '@/api/wms/supplier'
import * as ItembasicApi from '@/api/wms/itembasic'
import { dateFormatter,dateFormatter2, dateFormatterYM } from '@/utils/formatTime'
import { Supplieritem } from '@/views/wms/basicDataManage/supplierManage/supplieritem/supplieritem.data'
import * as SupplieritemApi from '@/api/wms/supplieritem'
import { BalancePopWindow } from '@/views/wms/inventoryManage/balance/balance.data'
import * as PurchaseBarterRequestMainApi from "@/api/wms/purchaseBarterRequestMain";
import * as PurchaseBarterRequestMainApi from '@/api/wms/purchaseBarterRequestMain'
/**
* @returns {Array}
*/
export const PurchaseBarterRequestMain = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '申请单号',
field: 'number',
sort: 'custom',
isSearch: true,
isForm: false,
table: {
width: 180,
fixed: 'left'
}
},
{
label: '状态',
field: 'status',
sort: 'custom',
isSearch: true,
isForm: false,
dictType: DICT_TYPE.REQUEST_STATUS,
dictClass: 'string',
},
{
label: '供应商代码',
field: 'supplierCode',
sort: 'custom',
isSearch: true,
form: {
// labelMessage: '信息提示说明!!!',
componentProps: {
enterSearch: true,
isSearchList: true, // 开启查询弹窗
searchListPlaceholder: '请选择供应商代码', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '供应商', // 查询弹窗标题
searchAllSchemas: Supplier.allSchemas, // 查询弹窗所需类
searchPage: SupplierApi.getSupplierPage, // 查询弹窗所需分页方法
searchCondition: [{
key: 'available',
value: 'TRUE',
isMainValue: false
}],
verificationParams: [{
key: 'code',
action: '==',
value: '',
isMainValue: false,
isSearch: true,
isFormModel: true,
}], // 失去焦点校验参数
}
}
},
{
label: '供应商名称',
field: 'supplierName',
sort: 'custom',
isSearch: false,
form: {
componentProps: {
disabled: true
export const PurchaseBarterRequestMain = useCrudSchemas(
reactive<CrudSchema[]>([
{
label: '申请单号',
field: 'number',
sort: 'custom',
isSearch: true,
isForm: false,
table: {
width: 180,
fixed: 'left'
}
},
},
{
label: '创建时间',
field: 'createTime',
isForm: false,
table: {
width: 180
{
label: '状态',
field: 'status',
sort: 'custom',
isSearch: true,
isForm: false,
dictType: DICT_TYPE.REQUEST_STATUS,
dictClass: 'string'
},
formatter: dateFormatter,
detail: {
dateFormat: 'YYYY-MM-DD HH:mm:ss'
{
label: '供应商代码',
field: 'supplierCode',
sort: 'custom',
isSearch: true,
form: {
// labelMessage: '信息提示说明!!!',
componentProps: {
enterSearch: true,
isSearchList: true, // 开启查询弹窗
searchListPlaceholder: '请选择供应商代码', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '供应商', // 查询弹窗标题
searchAllSchemas: Supplier.allSchemas, // 查询弹窗所需类
searchPage: SupplierApi.getSupplierPage, // 查询弹窗所需分页方法
searchCondition: [
{
key: 'available',
value: 'TRUE',
isMainValue: false
}
],
verificationParams: [
{
key: 'code',
action: '==',
value: '',
isMainValue: false,
isSearch: true,
isFormModel: true
}
] // 失去焦点校验参数
}
},
table: {
width: 100
},
},
form: {
component: 'DatePicker',
componentProps: {
style: { width: '100%' },
type: 'datetime',
dateFormat: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'x'
{
label: '供应商名称',
field: 'supplierName',
sort: 'custom',
isSearch: false,
table: {
width: 180
},
form: {
componentProps: {
disabled: true
}
}
},
isSearch: true,
search: {
component: 'DatePicker',
componentProps: {
valueFormat: 'YYYY-MM-DD HH:mm:ss',
type: 'daterange',
defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')]
{
label: '替代品入荷指定日',
field: 'substitutePurchaseDate',
sort: 'custom',
isSearch: false,
formatter: dateFormatter2,
table: {
width: 180
},
search: {
component: 'DatePicker',
componentProps: {
valueFormat: 'YYYY-MM-DD',
type: 'daterange',
defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')]
}
},
form: {
component: 'DatePicker',
componentProps: {
type: 'date',
valueFormat: 'x'
}
},
detail: {
dateFormat:'YYYY-MM-DD'
}
},
sortTableDefault: 1000,
},
{
label: '创建者',
field: 'creator',
table: {
width: 130
{
label: 'INTEX联络时间',
field: 'intexContactView',
sort: 'custom',
isSearch: false,
isTable: true,
isDetail: true,
isForm: false,
table: {
width: 180
},
},
isForm: false,
sortTableDefault: 1000,
},
{
label: '最后更新时间',
field: 'updateTime',
sort: 'custom',
isDetail: true,
isForm: false,
formatter: dateFormatter,
detail: {
dateFormat: 'YYYY-MM-DD HH:mm:ss'
{
label: '供应商联络时间',
field: 'supplierContactView',
sort: 'custom',
isSearch: false,
isTable: true,
isDetail: true,
isForm: false,
table: {
width: 180
},
},
table: {
width: 180
{
label: 'INTEX联络时间',
field: 'intexContact',
isForm: true,
isTable: false,
isDetail: false,
isSearch: false,
table: {
width: 200
},
formatter: dateFormatter,
detail: {
dateFormat: 'YYYY-MM-DD HH:mm:ss'
},
form: {
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')],
valueFormat: 'x'
}
},
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')]
}
},
sortTableDefault: 1000
},
form: {
component: 'DatePicker',
componentProps: {
style: { width: '100%' },
type: 'datetime',
dateFormat: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'x'
}
{
label: '供应商联络时间',
field: 'supplierContact',
isForm: true,
isTable: false,
isDetail: false,
isSearch: false,
table: {
width: 200
},
formatter: dateFormatter,
detail: {
dateFormat: 'YYYY-MM-DD HH:mm:ss'
},
form: {
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')],
valueFormat: 'x'
}
},
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')]
}
},
sortTableDefault: 1000
},
{
label: '不良内容',
field: 'badContent',
sort: 'custom',
isTable: true,
isDetail: true,
isSearch: false,
table: {
width: 150
},
},
{
label: '创建时间',
field: 'createTime',
isForm: false,
table: {
width: 180
},
formatter: dateFormatter,
detail: {
dateFormat: 'YYYY-MM-DD HH:mm:ss'
},
form: {
component: 'DatePicker',
componentProps: {
style: { width: '100%' },
type: 'datetime',
dateFormat: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'x'
}
},
isSearch: true,
search: {
component: 'DatePicker',
componentProps: {
valueFormat: 'YYYY-MM-DD HH:mm:ss',
type: 'daterange',
defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')]
}
},
sortTableDefault: 1000
},
sortTableDefault: 1000,
},
{
label: '最后更新者',
field: 'updater',
isDetail: true,
isForm: false,
table: {
width: 150
{
label: '创建者',
field: 'creator',
table: {
width: 130
},
isForm: false,
sortTableDefault: 1000
},
sortTableDefault:1000,
},
{
label: '操作',
field: 'action',
isForm: false,
isDetail: false,
table: {
width: 250,
fixed: 'right'
{
label: '最后更新时间',
field: 'updateTime',
sort: 'custom',
isDetail: true,
isForm: false,
formatter: dateFormatter,
detail: {
dateFormat: 'YYYY-MM-DD HH:mm:ss'
},
table: {
width: 180
},
form: {
component: 'DatePicker',
componentProps: {
style: { width: '100%' },
type: 'datetime',
dateFormat: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'x'
}
},
sortTableDefault: 1000
},
{
label: '最后更新者',
field: 'updater',
isDetail: true,
isForm: false,
table: {
width: 150
},
sortTableDefault: 1000
},
{
label: '操作',
field: 'action',
isForm: false,
isDetail: false,
table: {
width: 250,
fixed: 'right'
}
}
}
]))
])
)
//表单校验
export const PurchaseBarterRequestMainRules = reactive({
supplierCode: [
{ required: true, message: '请输入供应商代码', trigger: 'blur' }
supplierCode: [{ required: true, message: '请输入供应商代码', trigger: 'blur' }],
substitutePurchaseDate: [{ required: true, message: '请选择替代品入荷指定日', trigger: 'blur' }],
intexContact: [{ required: true, message: '请选择INTEX联络时间', trigger: 'blur' }],
supplierContact: [{ required: true, message: '请选择供应商联络时间', trigger: 'blur' }],
badContent: [
{ required: true, message: '请输入不良内容', trigger: 'blur' },
{ max: 200, message: '不得超过200个字符', trigger: 'blur' }
],
})
/**
* @returns {Array}
*/
export const PurchaseBarterRequestDetail = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '品番',
field: 'itemCode',
sort: 'custom',
isSearch: true,
table: {
width: 150
},
tableForm:{
multiple:true,//多选
isInpuFocusShow: true, // 开启查询弹窗
searchListPlaceholder: '请选择品番',// 输入框占位文本
searchField: 'itemCode', // 查询弹窗赋值字段
searchTitle: '库存余额信息', // 查询弹窗标题
searchAllSchemas: BalancePopWindow.allSchemas,
searchPage: PurchaseBarterRequestMainApi.getSupplieritemPage, // 查询弹窗所需分页方法
searchCondition: [{
key: 'supplierCode',
value: 'supplierCode',
action: '==',
message: '供应商代码不能为空!',
isFormModel:true, // filters中添加筛选的数据--取于formModel
required:true, // 前置添加必有,和isFormModel结合使用
isSearch: true,
isMainValue: false
}],
verificationPage: ItembasicApi.getItemListByCodes, // tableForm下方输入框校验失去焦点之后是否正确的方法
isShowTableFormSearch: false, //tableForm下方是否出现输入框
verificationParams: [{
key: 'itemCode',
action: '==',
value: '',
isMainValue: false,
isSearch: true,
isFormModel: true,
}], // 失去焦点校验参数
},
form: {
// labelMessage: '信息提示说明!!!',
componentProps: {
disabled:true,
enterSearch: true,
isSearchList: true, // 开启查询弹窗
export const PurchaseBarterRequestDetail = useCrudSchemas(
reactive<CrudSchema[]>([
{
label: '品番',
field: 'itemCode',
sort: 'custom',
isSearch: true,
table: {
width: 150
},
tableForm: {
multiple: true, //多选
isInpuFocusShow: true, // 开启查询弹窗
searchListPlaceholder: '请选择品番', // 输入框占位文本
searchField: 'itemCode', // 查询弹窗赋值字段
searchTitle: '库存余额信息', // 查询弹窗标题
searchAllSchemas: BalancePopWindow.allSchemas,
searchPage: PurchaseBarterRequestMainApi.getSupplieritemPage, // 查询弹窗所需分页方法
searchCondition: [{
key: 'supplierCode',
value: 'supplierCode',
action: '==',
message: '供应商代码不能为空!',
isFormModel:true, // filters中添加筛选的数据--取于formModel
required:true, // 前置添加必有,和isFormModel结合使用
isSearch: true,
isMainValue: true
}],
searchCondition: [
{
key: 'supplierCode',
value: 'supplierCode',
action: '==',
message: '供应商代码不能为空!',
isFormModel: true, // filters中添加筛选的数据--取于formModel
required: true, // 前置添加必有,和isFormModel结合使用
isSearch: true,
isMainValue: false
}
],
verificationPage: ItembasicApi.getItemListByCodes, // tableForm下方输入框校验失去焦点之后是否正确的方法
isShowTableFormSearch: false, //tableForm下方是否出现输入框
verificationParams: [
{
key: 'itemCode',
@ -241,176 +362,207 @@ export const PurchaseBarterRequestDetail = useCrudSchemas(reactive<CrudSchema[]>
isFormModel: true
}
] // 失去焦点校验参数
},
form: {
// labelMessage: '信息提示说明!!!',
componentProps: {
disabled: true,
enterSearch: true,
isSearchList: true, // 开启查询弹窗
searchListPlaceholder: '请选择品番', // 输入框占位文本
searchField: 'itemCode', // 查询弹窗赋值字段
searchTitle: '库存余额信息', // 查询弹窗标题
searchAllSchemas: BalancePopWindow.allSchemas,
searchPage: PurchaseBarterRequestMainApi.getSupplieritemPage, // 查询弹窗所需分页方法
searchCondition: [
{
key: 'supplierCode',
value: 'supplierCode',
action: '==',
message: '供应商代码不能为空!',
isFormModel: true, // filters中添加筛选的数据--取于formModel
required: true, // 前置添加必有,和isFormModel结合使用
isSearch: true,
isMainValue: true
}
],
verificationParams: [
{
key: 'itemCode',
action: '==',
value: '',
isMainValue: false,
isSearch: true,
isFormModel: true
}
] // 失去焦点校验参数
}
}
}
},
{
label: '品名',
field: 'itemName',
sort: 'custom',
isSearch: false,
tableForm: {
disabled: true
},
form:{
componentProps:{
disabled:true
{
label: '品名',
field: 'itemName',
sort: 'custom',
isSearch: false,
tableForm: {
disabled: true
},
form: {
componentProps: {
disabled: true
}
}
}
},
{
label: '背番',
field: 'itemDesc1',
sort: 'custom',
isSearch: true,
isForm:false,
hiddenSearchHigh:true,
table: {
width: 150
},
form:{
componentProps:{
disabled: true,
{
label: '背番',
field: 'itemDesc1',
sort: 'custom',
isSearch: true,
isForm: false,
hiddenSearchHigh: true,
table: {
width: 150
},
form: {
componentProps: {
disabled: true
}
}
}
},
// {
// label: '背番',
// field: 'itemDesc1',
// sort: 'custom',
// table: {
// width: 150
// },
// isTableForm: false,
// isForm: false,
// isSearch: true,
// // sortTableDefault: 8,
// // sortSearchDefault: 5,
// tableForm: {
// disabled: true
// },
// form: {
// componentProps: {
// disabled: true
// }
// }
// },
{
label: '计量单位',
field: 'uom',
sort: 'custom',
isSearch: false,
dictType: DICT_TYPE.UOM,
dictClass: 'string',
tableForm: {
disabled: true
},
form:{
componentProps:{
disabled:true
// {
// label: '背番',
// field: 'itemDesc1',
// sort: 'custom',
// table: {
// width: 150
// },
// isTableForm: false,
// isForm: false,
// isSearch: true,
// // sortTableDefault: 8,
// // sortSearchDefault: 5,
// tableForm: {
// disabled: true
// },
// form: {
// componentProps: {
// disabled: true
// }
// }
// },
{
label: '计量单位',
field: 'uom',
sort: 'custom',
isSearch: false,
dictType: DICT_TYPE.UOM,
dictClass: 'string',
tableForm: {
disabled: true
},
form: {
componentProps: {
disabled: true
}
}
}
},
{
label: '批次',
field: 'batch',
sort: 'custom',
isSearch: true,
tableForm: {
disabled: true
},
form:{
componentProps:{
disabled:true
{
label: '批次',
field: 'batch',
sort: 'custom',
isSearch: true,
tableForm: {
disabled: true
},
form: {
componentProps: {
disabled: true
}
}
}
},
{
label: '换货库位',
field: 'locationCode',
sort: 'custom',
isSearch: false,
tableForm: {
disabled: true
},
form:{
componentProps:{
disabled:true
{
label: '换货库位',
field: 'locationCode',
sort: 'custom',
isSearch: false,
tableForm: {
disabled: true
},
form: {
componentProps: {
disabled: true
}
}
}
},
{
label: '库存数量 ',
field: 'inventoryQty',
sort: 'custom',
isSearch: false,
isTable: false,
tableForm: {
disabled: true
},
form:{
componentProps:{
disabled:true
{
label: '库存数量 ',
field: 'inventoryQty',
sort: 'custom',
isSearch: false,
isTable: false,
tableForm: {
disabled: true
},
form: {
componentProps: {
disabled: true
}
}
}
},
{
label: '换货数量',
field: 'qty',
sort: 'custom',
isSearch: false,
// form: {
// component: 'InputNumber',
// value: 0
// },
form: {
component: 'InputNumber',
componentProps: {
},
{
label: '换货数量',
field: 'qty',
sort: 'custom',
isSearch: false,
// form: {
// component: 'InputNumber',
// value: 0
// },
form: {
component: 'InputNumber',
componentProps: {
min: 0,
precision: 6
}
},
tableForm: {
type: 'InputNumber',
min: 0,
precision: 6,
precision: 6
}
},
tableForm: {
type: 'InputNumber',
min: 0,
precision: 6,
}
},
{
label: '换货原因 ',
field: 'reason',
sort: 'custom',
isSearch: false,
},
{
label: '操作',
field: 'action',
isDetail: false,
hiddenInMain:true,
isForm: false ,
table: {
width: 150,
fixed: 'right'
{
label: '换货原因 ',
field: 'reason',
sort: 'custom',
isSearch: false
},
isTableForm:false,
}
]))
{
label: '操作',
field: 'action',
isDetail: false,
hiddenInMain: true,
isForm: false,
table: {
width: 150,
fixed: 'right'
},
isTableForm: false
}
])
)
function validateQty(rule, value, callback) {
const numericValue = Number(value);
const numericValue = Number(value)
if (numericValue > 0) {
// if(numericValue < )
callback();
callback()
} else {
callback(new Error('换货数量必须是一个正数'));
callback(new Error('换货数量必须是一个正数'))
}
}
//表单校验
export const PurchaseBarterRequestDetailRules = reactive({
qty:[
{ validator:validateQty, message: '换货数量必须是一个正数', trigger: 'change'}
],
itemCode: [
{ required: true, message: '请输入品番', trigger: 'blur' }
],
qty: [{ validator: validateQty, message: '换货数量必须是一个正数', trigger: 'change' }],
itemCode: [{ required: true, message: '请输入品番', trigger: 'blur' }]
})

Loading…
Cancel
Save