Browse Source

Merge branch 'intex_online20250725' into intex

intex
songguoqiang 3 days ago
parent
commit
c1eff3325b
  1. 316
      src/components/Detail/src/Detail.vue
  2. 73
      src/views/wms/basicDataManage/cutItem/cutItem.data.ts
  3. 12
      src/views/wms/deliversettlementManage/moldAllocation/customerStatement/index.vue
  4. 2
      src/views/wms/inventoryManage/balance/index.vue
  5. 12
      src/views/wms/moveManage/inventorymove/inventorymoveJobMain/inventorymoveJobMain.data.ts
  6. 12
      src/views/wms/moveManage/inventorymove/inventorymoveRecordMainOKHOLD/inventorymoveRecordMainOKHOLD.data.ts
  7. 32
      src/views/wms/moveManage/inventorymove/inventorymoveRequestMainOKHOLD/index.vue
  8. 23
      src/views/wms/moveManage/inventorymove/inventorymoveRequestMainOKHOLD/inventorymoveRequestMain.data.ts

316
src/components/Detail/src/Detail.vue

@ -12,178 +12,180 @@
{{ titleValueRef }} <span class="ml-20px font-size-16px">{{ t(`ts.${titleNameRef}`).replace('ts.','') }}</span>
</div>
</template>
<Tabs ref="tabRef" :tabsList="tabsList" :current="current" @change="change"/>
<ContentWrap v-if="!isBasic" v-show="tabsList[current].label=='主数据'">
<Descriptions
:data="detailData"
labelClassName="label-class-name"
label-align="left"
:direction="direction"
:column="column"
:schema="allSchemas.detailSchema"
:columns="2"
width="200px"
>
<template v-for="name in Object.keys($slots)" :key="name" #[name]="{ row }">
<slot :name="name" :row="row"></slot>
</template>
</Descriptions>
</ContentWrap>
<div class="flex">
<!-- 详情 -->
<ContentWrap class="w-[100%]" v-show="tabsList[current].label!=annexAlias.label&&tabsList[current].label!='备注'&&tabsList[current].label!='变更记录'&&tabsList[current].label!='主数据'&&!annexTableData.some(item=>item.label==tabsList[current].label)">
<!-- 列表头部 -->
<TableHead
v-if="!isBasic&&!slotDetailTabList.some(item=>item.label==tabsList[current].label)"
:HeadButttondata="HeadButttondata"
:masterId="masterParmas.masterId"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@searchFormClick="searchFormClick"
:allSchemas="detailAllSchemas"
:key="updateKey"
/>
<!-- 默认单表展现 -->
<div v-loading="detailLoading">
<Tabs ref="tabRef" :tabsList="tabsList" :current="current" @change="change"/>
<ContentWrap v-if="!isBasic" v-show="tabsList[current].label=='主数据'">
<Descriptions
v-if="isBasic && !tabsExtend"
:data="detailData"
labelClassName="label-class-name"
label-align="left"
:direction="direction"
:column="column"
:schema="allSchemas.detailSchema"
:columns="2"
:key="updateKey"
/>
<!-- 检验工序用到插槽 -->
<slot v-if="isBasic && !tabsExtend" :data="detailData" name="basicBottom" :key="updateKey"></slot>
<!-- 单表切换tabs 展现table -->
<Table
v-if="isBasic && tabsExtend"
:columns="detailAllSchemasRef.tableColumns"
:data="tableObjectRef.tableList"
:loading="tableObjectRef.loading"
:pagination="{ total: tableObjectRef.total }"
v-model:pageSize="tableObjectRef.pageSize"
v-model:currentPage="tableObjectRef.currentPage"
v-model:sort="tableObjectRef.sort"
:isShowPackNumber="isShowPackNumber"
>
<!-- <template #action="{ row }">
<ButtonBase
:Butttondata="buttondata(row)"
@button-base-click="buttonTableClick($event, row)"
/>
</template> -->
</Table>
<Table
v-if="!isBasic && fromeWhere != 'countPlan'&&!slotDetailTabList.some(item=>item.label==tabsList[current].label)"
:columns="detailAllSchemasRef.tableColumns"
:data="tableObjectRef.tableList"
:loading="tableObjectRef.loading"
:pagination="{ total: tableObjectRef.total }"
v-model:pageSize="tableObjectRef.pageSize"
v-model:currentPage="tableObjectRef.currentPage"
v-model:sort="tableObjectRef.sort"
:isShowPackNumber="isShowPackNumber"
width="200px"
>
<template v-for="name in Object.keys($slots)" :key="name" #[name]="{ row }">
<slot :name="name" :row="row"></slot>
</template>
<template #photos="{ row }">
<div v-for="(item,index) in row.photos.split(',')" :key="index" style="color:#409eff ; cursor: pointer;" @click="openImage(item)">{{ item }}</div>
</template>
<template #differencePrice="{row}">
<slot name="differencePrice" :row="row"></slot>
</template>
<template #action="{ row }">
<ButtonBase
:Butttondata="buttondata(row)"
@button-base-click="buttonTableClick($event, row)"
/>
</template>
</Table>
<slot v-if="slotDetailTabList.some(item=>item.label==tabsList[current].label)" :name="slotDetail.prop" v-for="slotDetail in slotDetailTabList"></slot>
<DetailTable
v-if="!isBasic && fromeWhere == 'countPlan' && isShowDrawer"
:columns="detailAllSchemasRef.tableColumns"
:data="tableObjectRef.tableList"
:allList="allList"
:countScopeType="countScopeType"
:key="updateKey"
>
<template #action="{ row }">
<ButtonBase
:Butttondata="buttondata(row)"
@button-base-click="buttonTableClick($event, row)"
/>
</template>
</DetailTable>
</Descriptions>
</ContentWrap>
<!-- other附件组件:如质检明细 -->
<div v-for="(annexItem ,index) in annexTableData" :key="index" v-show="annexItem.label==tabsList[current].label" class="w-[100%]" :style="{height:annexItem.hasSubDetail?'100%':remarkHeight+'px'}">
<ContentWrap class="w-[100%]">
<ElScrollbar ref="scrollbar" :style="{height:annexItem.hasSubDetail?'100%':(remarkHeight-40)+'px'}">
<Annex v-show="tabsList[current].label==annexItem.label"
:annexData="annexItem"
:fileType="annexItem.fileType"
:limit="annexItem.limit"
:fileSize="annexItem.fileSize"
:showAddBtn="!annexItem.hiddenUpload"
:showPreview="annexItem.showPreview"
:showDownload = "annexItem.showDownload"
:hiddenDelete = "annexItem.hiddenDelete"
@handleAnnexSuccess="updateAnnexTableHandle"
@deleteAnnexSuccess="updateAnnexTableHandle"
:upData="{...remarksData.data,tableName:annexItem.tableName}"
<div class="flex">
<!-- 详情 -->
<ContentWrap class="w-[100%]" v-show="tabsList[current].label!=annexAlias.label&&tabsList[current].label!='备注'&&tabsList[current].label!='变更记录'&&tabsList[current].label!='主数据'&&!annexTableData.some(item=>item.label==tabsList[current].label)">
<!-- 列表头部 -->
<TableHead
v-if="!isBasic&&!slotDetailTabList.some(item=>item.label==tabsList[current].label)"
:HeadButttondata="HeadButttondata"
:masterId="masterParmas.masterId"
@button-base-click="buttonBaseClick"
:routeName="routeName"
@searchFormClick="searchFormClick"
:allSchemas="detailAllSchemas"
:key="updateKey"
/>
<!-- 默认单表展现 -->
<Descriptions
v-if="isBasic && !tabsExtend"
:data="detailData"
:schema="allSchemas.detailSchema"
:columns="2"
:key="updateKey"
/>
<!-- 检验工序用到插槽 -->
<slot v-if="isBasic && !tabsExtend" :data="detailData" name="basicBottom" :key="updateKey"></slot>
<!-- 单表切换tabs 展现table -->
<Table
v-if="isBasic && tabsExtend"
:columns="detailAllSchemasRef.tableColumns"
:data="tableObjectRef.tableList"
:loading="tableObjectRef.loading"
:pagination="{ total: tableObjectRef.total }"
v-model:pageSize="tableObjectRef.pageSize"
v-model:currentPage="tableObjectRef.currentPage"
v-model:sort="tableObjectRef.sort"
:isShowPackNumber="isShowPackNumber"
>
<!-- <template #action="{ row }">
<ButtonBase
:Butttondata="buttondata(row)"
@button-base-click="buttonTableClick($event, row)"
/>
</ElScrollbar>
</ContentWrap>
<ContentWrap class="w-[100%]" v-if="annexItem.subDetailTableData">
<Table
v-if="!isBasic && fromeWhere != 'countPlan'"
:align="annexItem.align?annexItem.align:'center'"
:columns="annexItem.subDetailTableData.tableColumns"
:data="annexItem.subDetailTableData.tableList"
:loading="annexItem.subDetailTableData.loading"
:pagination="{ total: annexItem.subDetailTableData.tableList.length }"
</template> -->
</Table>
<Table
v-if="!isBasic && fromeWhere != 'countPlan'&&!slotDetailTabList.some(item=>item.label==tabsList[current].label)"
:columns="detailAllSchemasRef.tableColumns"
:data="tableObjectRef.tableList"
:loading="tableObjectRef.loading"
:pagination="{ total: tableObjectRef.total }"
v-model:pageSize="tableObjectRef.pageSize"
v-model:currentPage="tableObjectRef.currentPage"
v-model:sort="tableObjectRef.sort"
:isShowPackNumber="isShowPackNumber"
/>
</ContentWrap>
>
<template v-for="name in Object.keys($slots)" :key="name" #[name]="{ row }">
<slot :name="name" :row="row"></slot>
</template>
<template #photos="{ row }">
<div v-for="(item,index) in row.photos.split(',')" :key="index" style="color:#409eff ; cursor: pointer;" @click="openImage(item)">{{ item }}</div>
</template>
<template #differencePrice="{row}">
<slot name="differencePrice" :row="row"></slot>
</template>
<template #action="{ row }">
<ButtonBase
:Butttondata="buttondata(row)"
@button-base-click="buttonTableClick($event, row)"
/>
</template>
</Table>
<slot v-if="slotDetailTabList.some(item=>item.label==tabsList[current].label)" :name="slotDetail.prop" v-for="slotDetail in slotDetailTabList"></slot>
<DetailTable
v-if="!isBasic && fromeWhere == 'countPlan' && isShowDrawer"
:columns="detailAllSchemasRef.tableColumns"
:data="tableObjectRef.tableList"
:allList="allList"
:countScopeType="countScopeType"
:key="updateKey"
>
<template #action="{ row }">
<ButtonBase
:Butttondata="buttondata(row)"
@button-base-click="buttonTableClick($event, row)"
/>
</template>
</DetailTable>
</ContentWrap>
<!-- other附件组件:如质检明细 -->
<div v-for="(annexItem ,index) in annexTableData" :key="index" v-show="annexItem.label==tabsList[current].label" class="w-[100%]" :style="{height:annexItem.hasSubDetail?'100%':remarkHeight+'px'}">
<ContentWrap class="w-[100%]">
<ElScrollbar ref="scrollbar" :style="{height:annexItem.hasSubDetail?'100%':(remarkHeight-40)+'px'}">
<Annex v-show="tabsList[current].label==annexItem.label"
:annexData="annexItem"
:fileType="annexItem.fileType"
:limit="annexItem.limit"
:fileSize="annexItem.fileSize"
:showAddBtn="!annexItem.hiddenUpload"
:showPreview="annexItem.showPreview"
:showDownload = "annexItem.showDownload"
:hiddenDelete = "annexItem.hiddenDelete"
@handleAnnexSuccess="updateAnnexTableHandle"
@deleteAnnexSuccess="updateAnnexTableHandle"
:upData="{...remarksData.data,tableName:annexItem.tableName}"
/>
</ElScrollbar>
</ContentWrap>
<ContentWrap class="w-[100%]" v-if="annexItem.subDetailTableData">
<Table
v-if="!isBasic && fromeWhere != 'countPlan'"
:align="annexItem.align?annexItem.align:'center'"
:columns="annexItem.subDetailTableData.tableColumns"
:data="annexItem.subDetailTableData.tableList"
:loading="annexItem.subDetailTableData.loading"
:pagination="{ total: annexItem.subDetailTableData.tableList.length }"
v-model:pageSize="tableObjectRef.pageSize"
v-model:currentPage="tableObjectRef.currentPage"
v-model:sort="tableObjectRef.sort"
:isShowPackNumber="isShowPackNumber"
/>
</ContentWrap>
</div>
<!-- 附件/备注/变更记录 -->
<ContentWrap v-if="!annexAlias.hidden" class="w-[100%]" v-show="tabsList[current].label==annexAlias.label" :style="{height:remarkHeight+'px'}">
<!-- 附件组件 -->
<ElScrollbar ref="scrollbar" :style="{height:(remarkHeight-40)+'px'}">
<Annex
:annexData="annexData"
:showDownload = "annexAlias.showDownload"
:hiddenDelete = "annexAlias.hiddenDelete"
@handleAnnexSuccess="handleAnnexSuccess"
@deleteAnnexSuccess="deleteAnnexSuccess"
:upData="remarksData.data"
</div>
<!-- 附件/备注/变更记录 -->
<ContentWrap v-if="!annexAlias.hidden" class="w-[100%]" v-show="tabsList[current].label==annexAlias.label" :style="{height:remarkHeight+'px'}">
<!-- 附件组件 -->
<ElScrollbar ref="scrollbar" :style="{height:(remarkHeight-40)+'px'}">
<Annex
:annexData="annexData"
:showDownload = "annexAlias.showDownload"
:hiddenDelete = "annexAlias.hiddenDelete"
@handleAnnexSuccess="handleAnnexSuccess"
@deleteAnnexSuccess="deleteAnnexSuccess"
:upData="remarksData.data"
:key="count"
/>
</ElScrollbar>
</ContentWrap>
<ContentWrap class="w-[100%]" v-show="tabsList[current].label=='备注'" :style="{height:remarkHeight+'px'}">
<ElScrollbar ref="scrollbar" :style="{height:(remarkHeight-40)+'px'}">
<!-- 备注组件 -->
<Remarks
:remarksData="remarksData"
class="mt-20px"
@remarksSubmitScuess="remarksSubmitScuess"
:key="count"
/>
</ElScrollbar>
</ContentWrap>
<ContentWrap class="w-[100%]" v-show="tabsList[current].label=='备注'" :style="{height:remarkHeight+'px'}">
<ElScrollbar ref="scrollbar" :style="{height:(remarkHeight-40)+'px'}">
<!-- 备注组件 -->
<Remarks
:remarksData="remarksData"
class="mt-20px"
@remarksSubmitScuess="remarksSubmitScuess"
:key="count"
/>
</ElScrollbar>
</ContentWrap>
<ContentWrap class="w-[100%]" v-show="tabsList[current].label=='变更记录'" :style="{height:remarkHeight+'px'}">
<ElScrollbar ref="scrollbar" :style="{height:(remarkHeight-40)+'px'}">
<!-- 变更记录组件 -->
<ChangeRecord :changeRecordData="changeRecordData" class="mt-20px" :key="count" :schema="allSchemas.detailSchema"/>
</ElScrollbar>
</ContentWrap>
</ElScrollbar>
</ContentWrap>
<ContentWrap class="w-[100%]" v-show="tabsList[current].label=='变更记录'" :style="{height:remarkHeight+'px'}">
<ElScrollbar ref="scrollbar" :style="{height:(remarkHeight-40)+'px'}">
<!-- 变更记录组件 -->
<ChangeRecord :changeRecordData="changeRecordData" class="mt-20px" :key="count" :schema="allSchemas.detailSchema"/>
</ElScrollbar>
</ContentWrap>
</div>
</div>
</el-drawer>
<!-- 表格弹窗 -->
@ -1045,7 +1047,7 @@ const buttonBaseClick = (val, item) => {
}
} else if (val.includes('export')) {
//
emit('buttonBaseClick',val, item,tableObject)
emit('buttonBaseClick',val, item,tableObjectRef.value)
} else if (val == 'refresh') {
//
getList()
@ -1388,7 +1390,7 @@ watch(
deep: true
}
)
defineExpose({ openDetail, formRef ,updateList,submitUpdateList,changeTabCurrent,openForm,tableObjectRef}) // open
defineExpose({ openDetail, formRef ,updateList,submitUpdateList,changeTabCurrent,openForm,tableObjectRef,detailLoading}) // open
</script>
<style lang="scss">

73
src/views/wms/basicDataManage/cutItem/cutItem.data.ts

@ -105,33 +105,54 @@ export const CutItem = useCrudSchemas(
isSearch: false
},
// {
// label: '开始日期',
// field: 'beginDate',
// sort: 'custom',
// formatter: dateFormatter,
// table: {
// width: 180
// },
// 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'
// }
// },
// detail: {
// dateFormat: 'YYYY-MM-DD HH:mm:ss'
// }
// },
{
label: '开始日期',
field: 'beginDate',
sort: 'custom',
formatter: dateFormatter,
table: {
width: 180
},
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'
}
},
detail: {
dateFormat: 'YYYY-MM-DD HH:mm:ss'
}
},
label: '开始日期',
field: 'beginDate',
sort: 'custom',
formatter: dateFormatter2,
form: {
component: 'DatePicker',
componentProps: {
format: 'YYYY-MM-DD',
valueFormat: 'x',
}
},
table: {
width: 150
},
detail: {
dateFormat:'YYYY-MM-DD'
}
},
{
label: '创建者',
field: 'creator',

12
src/views/wms/deliversettlementManage/moldAllocation/customerStatement/index.vue

@ -822,14 +822,14 @@ const handleExportDetail = async (detailTableObject) => {
//
await message.exportConfirm()
//
exportLoading.value = true
detailRef.value.detailLoading = true
const data = await CustomerStatementDetailApi.exportCustomerStatementDetail(
detailTableObject.params
)
download.excel(data, `客户对账单明细子【${formatDate(new Date())}】.xlsx`)
} catch {
} finally {
exportLoading.value = false
detailRef.value.detailLoading = false
}
}
@ -839,14 +839,14 @@ const handleExportShareReconciliation = async (detailTableObject) => {
//
await message.exportConfirm()
//
exportLoading.value = true
detailRef.value.detailLoading = true
const data = await CustomerStatementDetailApi.exportCustomerStatementShareReconciliatioDetail(
detailTableObject.params
)
download.excel(data, `模具分摊对账单子${formatDate(new Date())}】.xlsx`)
} catch {
} finally {
exportLoading.value = false
detailRef.value.detailLoading = false
}
}
//
@ -855,14 +855,14 @@ const handleExportReconciliation = async (detailTableObject) => {
//
await message.exportConfirm()
//
exportLoading.value = true
detailRef.value.detailLoading = true
const data = await CustomerStatementDetailApi.exportCustomerStatementCompareDetail(
detailTableObject.params
)
download.excel(data, `对账差异【${formatDate(new Date())}】.xlsx`)
} catch {
} finally {
exportLoading.value = false
detailRef.value.detailLoading = false
}
}
//

2
src/views/wms/inventoryManage/balance/index.vue

@ -299,7 +299,7 @@ const butttondata = (row) => {
// float: 'right',
// hasPermi: ''
// },
defaultButtons.mainListCreatePointBtn({hide: isShowPointBtn(row)} ) //
defaultButtons.mainListCreatePointBtn(null ) //
// defaultButtons.mainListEditBtn({hasPermi:'wms:balance:update'}), //
// defaultButtons.mainListDeleteBtn({hasPermi:'wms:balance:delete'}), //
  ]

12
src/views/wms/moveManage/inventorymove/inventorymoveJobMain/inventorymoveJobMain.data.ts

@ -39,6 +39,18 @@ export const InventorymoveJobMain = useCrudSchemas(reactive<CrudSchema[]>([
width: 150
},
sortTableDefault:3,
},
{
label: '备注',
field: 'remark',
sort: 'custom',
table: {
width: 150
},
isTable:true,
isTableForm:false,
isForm: false,
sortTableDefault:3,
},
// {
// label: '发货单号',

12
src/views/wms/moveManage/inventorymove/inventorymoveRecordMainOKHOLD/inventorymoveRecordMainOKHOLD.data.ts

@ -145,6 +145,18 @@ export const InventorymoveRecordMain = useCrudSchemas(reactive<CrudSchema[]>([
// },
// isForm: false,
// },
{
label: '备注',
field: 'remark',
sort: 'custom',
table: {
width: 150
},
isTable:true,
isTableForm:false,
isForm: false,
sortTableDefault:3,
},
{
label: '从仓库代码',
field: 'fromWarehouseCode',

32
src/views/wms/moveManage/inventorymove/inventorymoveRequestMainOKHOLD/index.vue

@ -745,13 +745,30 @@ const submitForm = async (formType, submitData) => {
return
}
data.subList = tableData.value //
const cmdExists = data.subList.some(filter =>
parseFloat(filter.inventoryQty) < parseFloat(filter.qty)
);
if(cmdExists){
message.warning("数量不能大于库存数量")
return
}
const cmdExists = data.subList.some(filter =>
parseFloat(filter.inventoryQty) > 0 && parseFloat(filter.inventoryQty) < parseFloat(filter.qty)
);
if(cmdExists){
message.warning("库存数量为正式,则数量不能大于库存数量")
return
}
// 1. inventoryQty <= 0 itemCode
const zeroInventoryItems = data.subList.filter(item => parseFloat(item.inventoryQty) <= 0 && (item.itemType == 'SUB' || item.itemType == 'FG'))
.map(item => item.itemCode);
var isRemark = "";
// 2.
if (zeroInventoryItems.length > 0) {
const str = zeroInventoryItems.join(", "); // itemCode
//
isRemark = str+"是半成品/产成品,请先做生产申请后再进行隔离。"
await message.delConfirm(str+"是半成品/产成品,请先做生产申请后再进行隔离。")
}
// // 0
// const zeroInventory = data.subList.some(filter => parseFloat(filter.inventoryQty) <= 0 && (filter.itemType == 'SUB' || filter.itemType == 'FG') );
// if(zeroInventory){
// //
// await message.delConfirm("[]/")
// }
// let isExist = false
// tableData.value.forEach(item => {
// item['toLocationCode'] = toLocationCode
@ -765,6 +782,7 @@ const submitForm = async (formType, submitData) => {
// return message.warning('')
// }
flag.value = false
data.remark = isRemark
data.subList.forEach(item => {
console.log(556565,item);
if(fromInventoryStatus.value){

23
src/views/wms/moveManage/inventorymove/inventorymoveRequestMainOKHOLD/inventorymoveRequestMain.data.ts

@ -117,6 +117,17 @@ export const InventorymoveRequestMain = useCrudSchemas(reactive<CrudSchema[]>([
// },
// sortTableDefault:3,
// },
{
label: '备注',
field: 'remark',
sort: 'custom',
table: {
width: 150
},
isTable:true,
isTableForm:false,
isForm: false,
},
{
label: '到仓库代码',
field: 'toWarehouseCode',
@ -1218,6 +1229,18 @@ export const InventorymoveRequestDetail = useCrudSchemas(reactive<CrudSchema[]>(
isForm: false,
sortTableDefault:7,
},
// {
// label: '备注',
// field: 'remark',
// sort: 'custom',
// table: {
// width: 150
// },
// hiddenSearchHigh: true,// 高级筛选中隐藏
// isSearch: false,
// isForm: false,
// sortTableDefault:7,
// },
{
label: '从批次',
field: 'fromBatch',

Loading…
Cancel
Save