diff --git a/src/components/BasicForm/src/BasicForm.vue b/src/components/BasicForm/src/BasicForm.vue index 01f94218b..4d039ba7b 100644 --- a/src/components/BasicForm/src/BasicForm.vue +++ b/src/components/BasicForm/src/BasicForm.vue @@ -1,5 +1,10 @@ -
+
+
+ +
@@ -53,6 +73,7 @@ import { SearchTable } from '@/components/SearchTable' import * as defaultButtons from '@/utils/disposition/defaultButtons' import ButtonBase from '@/components/XButton/src/ButtonBase.vue' import TableForm from '@/components/TableForm/src/TableForm.vue' +import TableFormCountPlan from '@/components/TableFormCountPlan/src/TableFormCountPlan.vue' import { DICT_TYPE, getStrDictOptions } from '@/utils/dict' const props = defineProps({ @@ -143,6 +164,11 @@ const props = defineProps({ type: String, required: false, default: '' + }, + countScopeType: { + type: Array, + required: false, + default: null } }) @@ -156,7 +182,9 @@ const formType = ref('') // 表单的类型:create - 新增;update - 修改 const formRef = ref() // 表单 Ref const formSchema = ref(props.formAllSchemas?.formSchema) -console.log('props.formAllSchemas',props.formAllSchemas) +const tableAllSchemas = ref(props.tableAllSchemas) +const tableFormRules = ref(props.tableFormRules) +console.log('tableAllSchemas', tableAllSchemas.value) /** 弹层操作 */ // formField form表单中的字段 @@ -179,7 +207,7 @@ const opensearchTable = ( // 判断查询条件中,是否存在指向主表的数据 if (searchCondition && searchCondition.length > 0) { // 转换筛选条件所需 - let filters:any[] = [] + let filters: any[] = [] searchCondition.forEach((item) => { // 查询条件为主表某字段,需要赋值主表数据,数据来源是详情的,赋值需要从row中获取 // 20231127 row[item.value]?row[item.value] 修改为 row?row[item.value] 返回'null' 为了查询不到任何数据 @@ -348,14 +376,15 @@ const emit = defineEmits([ 'searchTableSuccess', 'opensearchTable', 'submitForm', - 'selectChange' + 'selectChange', + 'tableFormChange' ]) //普通下拉改变事件 -const formSelectChange = (field, val,row) => { - emit('formSelectChange', field, val,row) +const formSelectChange = (field, val, row) => { + emit('formSelectChange', field, val, row) } -const formSelectvVisibleChange = (field, val,row) => { - emit('formSelectvVisibleChange', field, val,row) +const formSelectvVisibleChange = (field, val, row) => { + emit('formSelectvVisibleChange', field, val, row) } // 点击selection框 const tableSelectionChange = (val) => { @@ -385,8 +414,6 @@ const handleAddTable = () => { } // 输入框聚焦 const inpuFocus = (headerItem, row, index) => { - console.log(headerItem.tableForm.multiple) - opensearchTable( headerItem.field, headerItem.tableForm.searchField, @@ -399,16 +426,56 @@ const inpuFocus = (headerItem, row, index) => { row ) } + // 修改盘点类型 -const selectChange=((field,val)=>{ -emit('selectChange',field,val) -}) +const selectChange = (field, val) => { + emit('selectChange', field, val) +} + +const tableFormChange = (field, val, row) => { + emit('tableFormChange', field, val, row) +} diff --git a/src/components/Detail/src/Detail.vue b/src/components/Detail/src/Detail.vue index a221dd247..0eddf4f7d 100644 --- a/src/components/Detail/src/Detail.vue +++ b/src/components/Detail/src/Detail.vue @@ -46,7 +46,7 @@ :columns="2" />
+ @@ -180,7 +181,13 @@ const props = defineProps({ type: Function, required: false, default: null - } + }, + // 来源 countPlan盘点计划进入 + fromeWhere: { + type: String, + required: false, + default: '' + }, }) const isShowDrawer = ref(false) const detailLoading = ref(false) diff --git a/src/components/DetailCountPlan/index.ts b/src/components/DetailCountPlan/index.ts new file mode 100644 index 000000000..2acd32a21 --- /dev/null +++ b/src/components/DetailCountPlan/index.ts @@ -0,0 +1,3 @@ +import DetailCountPlan from './src/DetailCountPlan.vue' + +export { DetailCountPlan } diff --git a/src/components/DetailCountPlan/src/DetailCountPlan.vue b/src/components/DetailCountPlan/src/DetailCountPlan.vue new file mode 100644 index 000000000..80a59f6e2 --- /dev/null +++ b/src/components/DetailCountPlan/src/DetailCountPlan.vue @@ -0,0 +1,499 @@ + + + + + diff --git a/src/components/TableForm/src/TableForm.vue b/src/components/TableForm/src/TableForm.vue index 527d2ad9e..2fbdd83eb 100644 --- a/src/components/TableForm/src/TableForm.vue +++ b/src/components/TableForm/src/TableForm.vue @@ -112,8 +112,7 @@ :allow-create="headerItem?.tableForm.allowCreate" style="width: 100%" :placeholder="headerItem?.tableForm?.placeholder || '请选择' + headerItem.label" - @change="formSelectChange(headerItem.field, $event,row)" - @visible-change="formSelectvVisibleChange(headerItem.field, $event,row)"> + @change="formSelectChange(headerItem.field, $event,row)"> { const formSelectChange = (field, val,row) => { emit('formSelectChange', field, val,row) } -const formSelectvVisibleChange = (field, val,row) => { - emit('formSelectvVisibleChange', field, val,row) -} + // 点击selection框 const tableSelectionChange = (val) => { emit('tableSelectionChange', val) @@ -381,6 +377,7 @@ const TableBaseForm_Ref = ref() */ const validateForm = () => { + console.log(TableBaseForm_Ref.value) let _lists = TableBaseForm_Ref.value?.map(v => v.validate()) return Promise.all(_lists).then(() => { return true diff --git a/src/components/TableFormCountPlan/index.ts b/src/components/TableFormCountPlan/index.ts new file mode 100644 index 000000000..2f51d1abc --- /dev/null +++ b/src/components/TableFormCountPlan/index.ts @@ -0,0 +1,3 @@ +import TableFormCountPlan from './src/TableFormCountPlan.vue' + +export { TableFormCountPlan } diff --git a/src/components/TableFormCountPlan/src/TableFormCountPlan.vue b/src/components/TableFormCountPlan/src/TableFormCountPlan.vue new file mode 100644 index 000000000..12bc0bf5a --- /dev/null +++ b/src/components/TableFormCountPlan/src/TableFormCountPlan.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/src/views/wms/countManage/count/countPlanMain/countPlanMain.data.ts b/src/views/wms/countManage/count/countPlanMain/countPlanMain.data.ts index 92dd2e5d5..22be31675 100644 --- a/src/views/wms/countManage/count/countPlanMain/countPlanMain.data.ts +++ b/src/views/wms/countManage/count/countPlanMain/countPlanMain.data.ts @@ -648,7 +648,6 @@ export const CountPlanDetail = useCrudSchemas(([ width: 300 }, tableForm: { - type: 'InputString', width: '300', } }, @@ -665,19 +664,10 @@ export const CountPlanDetail = useCrudSchemas(([ } ])) export const CountPlanDetailRules = reactive({ - available: [ - { required: true, message: '请选择是否可用', trigger: 'change' } - ], - uom: [ - { required: true, message: '请选择计量单位', trigger: 'change' } - ], - planQty: [ - { required: true, message: '请输入计划数量', trigger: 'blur' } - ], - number: [ - { required: true, message: '请输入单据号', trigger: 'blur' } + type: [ + { required: true, message: '请选择盘点范围类型', trigger: 'change' } ], - itemCode: [ - { required: true, message: '请选择物品代码', trigger: 'change' } + value: [ + { required: true, message: '请选择盘点范围值', trigger: 'change' } ], }) \ No newline at end of file diff --git a/src/views/wms/countManage/count/countPlanMain/index.vue b/src/views/wms/countManage/count/countPlanMain/index.vue index ab9350ad8..c5363524f 100644 --- a/src/views/wms/countManage/count/countPlanMain/index.vue +++ b/src/views/wms/countManage/count/countPlanMain/index.vue @@ -57,6 +57,7 @@ :apiUpdate="CountPlanMainApi.updateCountPlanMain" :apiCreate="CountPlanMainApi.createCountPlanMain" fromeWhere="countPlan" + :countScopeType="getStrDictOptions(DICT_TYPE.COUNT_SCOPE_TYPE)" @handleAddTable="handleAddTable" @handleDeleteTable="handleDeleteTable" @searchTableSuccess="searchTableSuccess" @@ -64,6 +65,7 @@ @formSelectChange="formSelectChange" @formSelectvVisibleChange="formSelectvVisibleChange" @selectChange="selectChange" + @tableFormChange="tableFormChange" /> @@ -79,6 +81,7 @@ :apiPage="CountPlanDetailApi.getCountPlanDetailPage" :apiDelete="CountPlanDetailApi.deleteCountPlanDetail" :Echo="Echo" + fromeWhere="countPlan" /> @@ -112,6 +115,7 @@ import * as defaultButtons from '@/utils/disposition/defaultButtons' import * as ItembasicApi from '@/api/wms/itembasic' import { Itembasic } from '@/views/wms/basicDataManage/itemManage/itembasic/itembasic.data' import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict' +console.log('CountPlanDetail.allSchemas', CountPlanDetail.allSchemas) // 盘点计划主 defineOptions({ name: 'CountPlanMain' }) @@ -290,7 +294,10 @@ const buttonTableClick = async (val, row) => { /** 添加/修改操作 */ const formRef = ref() const openForm = async (type: string, row?: number) => { - tableData.value = [] // 重置明细数据 + tableData.value = [ { + type: '', + value: '' + }] // 重置明细数据 formRef.value.open(type, row) getOwnerAllList() @@ -341,16 +348,22 @@ const handleExport = async () => { /** * tableForm方法 */ -const tableFormKeys = {} +let tableFormKeys = {} CountPlanDetail.allSchemas.tableFormColumns.forEach((item) => { tableFormKeys[item.field] = item.default ? item.default : '' }) -const tableData = ref([]) +const tableData = ref([{ + type: '', + value: '' + }]) // 添加明细 const handleAddTable = () => { - console.log(tableFormKeys) - tableFormKeys.formType = 'Select' + // tableFormKeys.formType='' + tableFormKeys = { + type: '', + value: '' + } tableData.value.push(JSON.parse(JSON.stringify(tableFormKeys))) } // 删除明细 @@ -360,7 +373,13 @@ const handleDeleteTable = (item, index) => { // 主子数据 提交 const submitForm = async (formType, data) => { - data.subList = tableData.value // 拼接子表数据参数 + data.subList = tableData.value.map(item=>{ + return{ + type:item.type, + value:item.value, + } + }) // 拼接子表数据参数 + console.log(tableData.value) try { if (formType === 'create') { await CountPlanMainApi.createCountPlanMain(data) @@ -404,7 +423,6 @@ const searchFormClick = (searchData) => { } // 选择盘点类型的时候针对限值的操作 const selectChange = (field, val) => { - console.log(val) if (field == 'type') { if (val == 'DYNAMIC') { CountPlanMain.allSchemas.formSchema[3].label = '限值(%)' @@ -421,74 +439,71 @@ const selectChange = (field, val) => { } } } -let valueList = [] // 选择盘点范围类型 -const formSelectChange = async (field, val, row) => { - console.log(row[field]) +const tableFormChange = async (field, val, row) => { console.log(field) console.log(val) if (field == 'type') { row.value = '' - if (row.type == 'OWNER' || row.type == 'SUPPLIER'|| row.type == 'CUSTOMER'|| row.type == 'ABC'|| row.type == 'ITEMS_TYPE'|| row.type == 'ITEMS_GROUP'||row.type == 'ITEMS_CODE'||row.type == 'WAREHOUSE_CODE'||row.type == 'AREABASIC_CODE'||row.type == 'LOCATIONGROUP_CODE'||row.type == 'LOCATION_CODE') { + if ( + row.type == 'OWNER' || + row.type == 'SUPPLIER' || + row.type == 'CUSTOMER' || + row.type == 'ABC' || + row.type == 'ITEMS_TYPE' || + row.type == 'ITEMS_GROUP' || + row.type == 'ITEMS_CODE' || + row.type == 'WAREHOUSE_CODE' || + row.type == 'AREABASIC_CODE' || + row.type == 'LOCATIONGROUP_CODE' || + row.type == 'LOCATION_CODE' + ) { + row.formType = 'Select' + switch (row.type) { + case 'OWNER': + row.initOptions = ownerAllList.value + break + case 'SUPPLIER': + row.initOptions = supplierAllList.value + break + case 'CUSTOMER': + row.initOptions = customerAllList.value + break + case 'ABC': + row.initOptions = getStrDictOptions(DICT_TYPE.ABC_CLASS) + break + case 'ITEMS_TYPE': + row.initOptions = getStrDictOptions(DICT_TYPE.ITEM_TYPE) + break + case 'ITEMS_GROUP': + row.initOptions = getStrDictOptions(DICT_TYPE.ITEM_GROUP) + break + case 'ITEMS_CODE': + row.initOptions = itembasicAllList.value + break + case 'WAREHOUSE_CODE': + row.initOptions = warehouseAllList.value + break + case 'AREABASIC_CODE': + row.initOptions = areaAllList.value + break + case 'LOCATIONGROUP_CODE': + row.initOptions = locationgroupAllList.value + break + case 'LOCATION_CODE': + row.initOptions = locationAllList.value + break + } + } else if (row.type == 'PROJECT') { row.formType = 'InputString' - // row.initOptions = valueList - }else if(row.type == 'PROJECT'){ - // row = { - // type: 'InputString', - // width: '300', - // initOptions: valueList - // } } } } -const formSelectvVisibleChange = async (field, val, row) => { - console.log(getStrDictOptions(DICT_TYPE.ABC_CLASS)) - switch (row.type) { - case 'OWNER': - valueList = ownerAllList.value - break; - case 'SUPPLIER': - valueList = supplierAllList.value - break; - case 'CUSTOMER': - valueList = customerAllList.value - break; - case 'ABC': - valueList = getStrDictOptions(DICT_TYPE.ABC_CLASS) - break; - case 'ITEMS_TYPE': - valueList = getStrDictOptions(DICT_TYPE.ITEM_TYPE) - break; - case 'ITEMS_GROUP': - valueList = getStrDictOptions(DICT_TYPE.ITEM_GROUP) - break; - case 'ITEMS_CODE': - valueList = itembasicAllList.value - break; - case 'WAREHOUSE_CODE': - valueList = warehouseAllList.value - break - case 'AREABASIC_CODE': - valueList = areaAllList.value - break - case 'LOCATIONGROUP_CODE': - valueList = locationgroupAllList.value - break - case 'LOCATION_CODE': - valueList = locationAllList.value - break - } - CountPlanDetail.allSchemas.tableFormColumns[1].tableForm = { - type: 'Select', - width: '300', - initOptions: valueList - } -} const ownerAllList = ref() const supplierAllList = ref() const customerAllList = ref() -const itembasicAllList = ref() +const itembasicAllList = ref() const warehouseAllList = ref() const areaAllList = ref() const locationgroupAllList = ref() @@ -535,7 +550,7 @@ const getItembasicAllList = async () => { } // 获取仓库列表 const getWarehouseAllList = async () => { - await WarehouseApi.getWarehouseList({available:'TRUE'}).then((res) => { + await WarehouseApi.getWarehouseList({ available: 'TRUE' }).then((res) => { res.forEach((element) => { element.value = element.code element.label = element.name @@ -545,7 +560,7 @@ const getWarehouseAllList = async () => { } // 获取库区列表 const getAreaAllList = async () => { - await AreaApi.getAreaList({available:'TRUE'}).then((res) => { + await AreaApi.getAreaList({ available: 'TRUE' }).then((res) => { res.forEach((element) => { element.value = element.code element.label = element.name @@ -555,7 +570,7 @@ const getAreaAllList = async () => { } // 获取库位组列表 const getLocationgroupAllList = async () => { - await LocationgroupApi.getLocationgroupList({available:'TRUE'}).then((res) => { + await LocationgroupApi.getLocationgroupList({ available: 'TRUE' }).then((res) => { res.forEach((element) => { element.value = element.code element.label = element.name @@ -565,7 +580,7 @@ const getLocationgroupAllList = async () => { } // 获取库位列表 const getLocationAllList = async () => { - await LocationpApi.getLocationList({available:'TRUE'}).then((res) => { + await LocationpApi.getLocationList({ available: 'TRUE' }).then((res) => { res.forEach((element) => { element.value = element.code element.label = element.name