实体Id未完善

main
mhsnet 7 months ago
parent 76c62c0b28
commit d30b95d4fb

@ -0,0 +1,22 @@
import request from '@/config/axios'
// 实物ID列表获取
export const getPagingBaseEntityIDList = async (data: any) => {
return await request.post({ url: `/DistributionBoxTesting/GetPagingBaseEntityIDList`, data })
}
// 实物ID详情
export const getBaseEntityID = async (data: any) => {
return await request.post({ url: `/DistributionBoxTesting/GetBaseEntityID`, data })
}
// 实物ID保存
export const saveBaseEntityID = async (data: any) => {
return await request.post({ url: `/DistributionBoxTesting/SaveBaseEntityID`, data })
}
// 实物ID编辑
export const editBaseEntityID = async (data: any) => {
return await request.post({ url: `/DistributionBoxTesting/EditBaseEntityID`, data })
}
// 实物ID删除
export const removeBaseEntityID = async (data: any) => {
return await request.post({ url: `/DistributionBoxTesting/RemoveBaseEntityID`, data })
}

@ -6,3 +6,9 @@ export const getSystemSerialNo = async () => {
return res.SerialNo
})
}
// 获取采购订单编码&采购订单行项目id
export const getPoNoAndPoItemID = async () => {
return await request.post({ url: `/DistributionBoxTesting/GetPoNoAndPoItemID` }).then((res) => {
return res
})
}

@ -48,6 +48,7 @@ const en_US = {
baseMaterial: 'baseMaterial',
baseComposition: 'baseComposition',
baseVoltage: 'baseVoltage',
baseEntityID: 'baseEntityID',
}
}

@ -48,6 +48,7 @@ const zh_CN = {
baseMaterial: '物料',
baseComposition: '材质',
baseVoltage: '电压等级',
baseEntityID: '实物ID',
}
}

@ -45,6 +45,8 @@ import BaseCompositionView from '../views/Gw/baseComposition/BaseComposition.vue
import BaseMaterialView from '../views/Gw/baseMaterial/BaseMaterial.vue'
import BaseSupplierView from '../views/Gw/baseSupplier/BaseSupplier.vue'
import BaseVoltageView from '../views/Gw/baseVoltage/BaseVoltage.vue'
import BaseEntityIDView from '../views/Gw/baseEntityID/BaseEntityID.vue'
// 其它
import { useUserStore } from '@/stores/user'
import { storeToRefs } from 'pinia'
@ -268,6 +270,11 @@ const router = createRouter({
path: 'base-voltage',
name: 'baseVoltage',
component: BaseVoltageView
},
{
path: 'base-entity-id',
name: 'baseEntityID',
component: BaseEntityIDView
}
]
}

@ -38,7 +38,7 @@ const items: any = ref([
{ title: '物料', name: 'baseMaterial', iconfont: 'iconfont icon-jixiecaozuo' },
{ title: '材质', name: 'baseComposition', iconfont: 'iconfont icon-jixiecaozuo' },
{ title: '电压等级', name: 'baseVoltage', iconfont: 'iconfont icon-jixiecaozuo' },
{ title: '实物ID', name: 'baseEntityID', iconfont: 'iconfont icon-jixiecaozuo' },
]
}
])

@ -0,0 +1,173 @@
<template>
<div class="xyp-bi-lei-qi">
<a-card :bordered="false" style="margin: 10px">
<vxe-grid ref="xGrid" :stripe="true" v-bind="gridOptionsA">
<template #toolbar_buttons>
<vxe-button status="success" icon="vxe-icon-add" @click="fnBaseEntityIDForm('add')">ID</vxe-button>
</template>
<template #operate="{ row }">
<vxe-button type="text" status="primary" content="编辑" icon="vxe-icon-edit"
@click="fnBaseEntityIDForm('edit', row)"></vxe-button>
<vxe-button type="text" status="primary" content="复制" icon="vxe-icon-copy"
@click="fnBaseEntityIDForm('copy', row)"></vxe-button>
<vxe-button type="text" status="danger" content="删除" icon="vxe-icon-delete"
@click="fnBaseEntityIDForm('delete', row)"></vxe-button>
</template>
<template #slotManufactureDate="{ row }">
{{ dayjs(row.ManufactureDate).format("YYYY-MM-DD") }}
</template>
<template #slotIncomDate="{ row }">
{{ dayjs(row.IncomDate).format("YYYY-MM-DD") }}
</template>
<template #slotIsAlarmData="{ row }">
<template v-if="row.IsAlarmData == 1"><span style="color:green"></span></template>
<template v-else><span style="color:red">不是</span></template>
</template>
<template #slotIsQualify="{ row }">
<template v-if="row.IsQualify == 1"><span style="color:green"></span></template>
<template v-else><span style="color:red">不合格</span></template>
</template>
</vxe-grid>
</a-card>
</div>
<BaseEntityIDForm ref="refBaseEntityIDForm" @success="proxyReload" />
</template>
<script lang="ts" setup name="BaseEntityID">
import { onMounted, ref, reactive, h } from 'vue';
import * as BaseEntityIDApi from '@/api/gw/baseEntityID'
import BaseEntityIDForm from './BaseEntityIDForm.vue'
import { map as _map } from 'lodash'
import dayjs from 'dayjs'
const xGrid = ref()
const gridOptionsA: any = reactive({
columns: [
{ type: 'checkbox', title: '', width: 30 },
{ field: 'EntityId', title: '实物ID' },
{ field: 'PoNo', title: '采购订单编码' },
{ field: 'PoItemId', title: '采购订单行项目id' }
],
pagerConfig: {
enabled: true,
total: 0,
currentPage: 1,
pageSize: 10,
pageSizes: [10, 20, 50, 100, 200, 500]
},
sortConfig: {
trigger: 'cell',
remote: true
},
formConfig: {
titleWidth: 160,
titleAlign: 'right',
items: [
{ field: 'EntityId', title: '实物ID', span: 8, itemRender: { name: '$input', props: { placeholder: '请输入' } } },
{ field: 'PoNo', title: '采购订单编码', span: 8, itemRender: { name: '$input', props: { placeholder: '请输入' } } },
{ field: 'PoItemId', title: '采购订单行项目id', span: 8, itemRender: { name: '$input', props: { placeholder: '请输入' } } },
{ span: 24, align: 'center', collapseNode: true, itemRender: { name: '$buttons', children: [{ props: { type: 'submit', content: '查询', status: 'primary' } }, { props: { type: 'reset', content: '重置' } }] } }
]
},
toolbarConfig: {
refresh: true, //
// import: true, //
// export: true, //
// print: true, //
zoom: true, //
custom: true, //
slots: {
buttons: 'toolbar_buttons'
}
},
proxyConfig: {
seq: true, //
sort: true, // query
filter: true, // query
form: true, // reload
props: {
// Promise<{ result: [], page: { total: 100 } }>
result: 'List', //
total: 'Total' //
},
// Promise
ajax: {
// queryreload
query: async ({ page, sorts, filters, form }: any) => {
const queryParamsA: any = reactive({
currentPage: page.currentPage,
pageSize: page.pageSize,
filter: {
"logic": 0,
"filters": _map(form, (o1: any, k1: any) => {
return {
"field": k1,
"operator": 0,
"value": o1
}
})
}
})
if (sorts.length > 0) {
queryParamsA.orderBy = _map(sorts, (o1) => {
let isAscending = false;
if (o1.order == "asc") {
isAscending = true;
}
return {
"field": o1.field,
"isAscending": (() => {
return o1.order == "asc"
})()
}
})
}
const data = await BaseEntityIDApi.getPagingBaseEntityIDList(queryParamsA)
return data
// //
// const firstSort = sorts[0]
// if (firstSort) {
// queryParams.sort = firstSort.field
// queryParams.order = firstSort.order
// }
// //
// filters.forEach(({ field, values }) => {
// queryParams[field] = values.join(',')
// })
// return fetch(`${serveApiUrl}/api/pub/page/list/${page.pageSize}/${page.currentPage}?${XEUtils.serialize(queryParams)}`).then(response => response.json())
},
// delete
delete: ({ body }:any) => { },
// save
save: ({ body }:any) => { },
add: ({ body }: any) => {
},
}
}
})
//
const proxyReload = () => {
const $grid = xGrid.value
if ($grid) {
$grid.commitProxy('reload')
}
}
// ref
const refBaseEntityIDForm = ref()
//
const fnBaseEntityIDForm = async (type: string, row?: any) => {
refBaseEntityIDForm.value.open(type, row)
}
//
onMounted(() => {
})
</script>
<style scoped>
.xyp-bi-lei-qi {
width: 100%;
height: 100%;
}
</style>

@ -0,0 +1,185 @@
<template>
<vxe-modal class-name="csty-bi-lei-qi-form" v-model="refShow" width="800" height="560" show-zoom show-footer
:mask-closable=true>
<template #title>
<span style="color:#ffffff">{{ modalTitle }}</span>
</template>
<template #default>
<a-card :bordered="false">
<vxe-form title-colon ref="refFormA" title-align="right" title-width="150" :data="formDataA"
:rules="formRulesA">
<vxe-form-gather span="24">
<vxe-form-item span="24">
<template #default="params">
<div
style="font-size: larger;border-bottom: solid 1px #606266;padding: 0px 0px 5px 0px;">
基本数据
</div>
</template>
</vxe-form-item>
</vxe-form-gather>
<vxe-form-gather span="24">
<vxe-form-item title="采购订单编码" field="PoNo" span="24">
<template #default="params">
<vxe-select v-model="params.data.PoNo" clearable filterable @change="fnChgPoNo">
<template v-for="(item) in dictPoNoPoItemId">
<vxe-option :value="item.pono" :label="item.pono"></vxe-option>
</template>
</vxe-select>
</template>
</vxe-form-item>
<vxe-form-item title="采购订单行项目id" field="PoItemId" span="24">
<template #default="params">
<vxe-select v-model="params.data.PoItemId" clearable filterable @change="fnChgPoItemId">
<template v-for="(item) in dictPoNoPoItemId">
<vxe-option :value="item.poitemid" :label="item.poitemid"></vxe-option>
</template>
</vxe-select>
</template>
</vxe-form-item>
</vxe-form-gather>
<vxe-form-gather span="24">
<vxe-form-item span="24">
<template #default="params">
<div
style="font-size: larger;border-bottom: solid 1px #606266;padding: 0px 0px 5px 0px;">
附件上传
</div>
</template>
</vxe-form-item>
</vxe-form-gather>
<vxe-form-gather span="24">
<vxe-form-item span="24">
<template #default="params">
<a-upload v-model:file-list="fileListA" name="file" :action="fileUpUrl" :headers="{}"
@change="fnChgFileA" :maxCount="1" accept=".xls"
:data="{ pono: params.data.PoNo, poitemid: params.data.PoItemId }">
<a-button>
<upload-outlined></upload-outlined>
<span>实物ID文件上传</span>
<span style="color: red;padding:0px 10px"> *
请先选择(采购订单编|采购订单行项目id)</span>
</a-button>
</a-upload>
</template>
</vxe-form-item>
</vxe-form-gather>
</vxe-form>
</a-card>
</template>
<template #footer>
<vxe-button type="reset" content="取消" @click="fnEventCancel"></vxe-button>
</template>
</vxe-modal>
</template>
<script lang="ts" setup name="BiLeiQiForm">
import { ref, onMounted, computed } from 'vue'
import { map as _map } from 'lodash'
import type { UploadProps, UploadChangeParam } from 'ant-design-vue'
import { config } from '@/config/axios/config'
import * as comApi from '@/api/gw/com'
//
const dictPoNoPoItemId: any = ref([])
// [success]
const emit = defineEmits(['success'])
//
const refShow = ref(false)
//
const modalTitle = ref('未知表单')
//
const refFormA = ref()
// [add - |update - |del - ]
const formTypeA: any = ref('')
// A -
const formDataAInit: any = {
Id: 0,
EntityId: "",
PoNo: "",
PoItemId: "",
PostInfo: ''
}
//
const formDataA: any = ref(formDataAInit)
//
const formRulesA: any = ref({
PoNo: [
{ required: true, message: '请选择' }
],
PoItemId: [
{ required: true, message: '请选择' }
]
})
//
const fileListA = ref<UploadProps['fileList']>([]);
//
const fileUpUrl: any = computed(() => {
let url = config.base_url + '/DistributionBoxTesting/UploadEntityIDFile'
return url
})
// //
// const disabledUp: any = computed(() => {
// return true
// })
//
onMounted(() => {
})
//
const open = async (type: string, row?: any) => {
formTypeA.value = type
dictPoNoPoItemId.value = await comApi.getPoNoAndPoItemID()
await fnResetA()
switch (type) {
case 'add':
refShow.value = true
modalTitle.value = '上传实物ID'
break;
}
}
// A -
const fnChgPoNo = async (params: any) => {
if (params.value) {
let itemOne = dictPoNoPoItemId.value.filter((item: any) => {
return item.pono == params.value
})[0]
formDataA.value.PoItemId = itemOne.poitemid
} else {
formDataA.value.PoItemId = ''
}
console.log(params.value)
}
// A - id
const fnChgPoItemId = async (params: any) => {
if (params.value) {
let itemOne = dictPoNoPoItemId.value.filter((item: any) => {
return item.poitemid == params.value
})[0]
formDataA.value.PoNo = itemOne.pono
} else {
formDataA.value.PoNo = ''
}
}
// A - A
const fnChgFileA = async (info: UploadChangeParam) => {
console.log(info)
// if (info.file.response) {
// let FileItems: any = XEUtils.clone(formDataB.value.FileItems, true)
// FileItems = JSON.parse(FileItems)
// FileItems[0]['fileName'] = info.file.name
// FileItems[0]['fileUrl'] = info.file.response
// formDataB.value.FileItems = JSON.stringify(FileItems)
// }
}
// open
defineExpose({ open })
//
const fnResetA = () => {
formDataA.value = formDataAInit
}
//
const fnEventCancel = () => {
refShow.value = false
}
</script>
<style scoped></style>
Loading…
Cancel
Save