<template> <a-card :bordered="false"> <!-- 查询区域 --> <div class="table-page-search-wrapper"> <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> <a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-form-item label="库区"> <a-select show-search placeholder="请选择库区" option-filter-prop="children" v-model="queryParam.zoneCode" > <a-select-option v-for="item in zoneList" :key="item.name" :value="item.code"> {{ item.name }} </a-select-option> </a-select> </a-form-item> </a-col> <a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-form-item label="库位编码"> <a-input placeholder="请输入库位编码" v-model="queryParam.locationCode"></a-input> </a-form-item> </a-col> <!-- <a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-form-item label="库位表容器编码"> <a-input placeholder="请输入库位表容器编码" v-model="queryParam.containerCode"></a-input> </a-form-item> </a-col> --> <a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-form-item label="数据状态"> <j-dict-select-tag placeholder="请选择数据状态" v-model="queryParam.consistencyStatus" dictCode="consistency_status" /> </a-form-item> </a-col> <a-col :xl="6" :lg="7" :md="8" :sm="24"> <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> </span> </a-col> </a-row> </a-form> </div> <!-- 查询区域-END --> <!-- table区域-begin --> <div> <a-table ref="table" size="middle" :scroll="{ x: true }" bordered rowKey="locationCode" class="j-table-force-nowrap" :columns="columns" :dataSource="dataSource" :pagination="ipagination" :loading="loading" :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: 'radio' }" :customRow="clickThenSelect" @change="handleTableChange" > <span slot="locationStatus" slot-scope="locationStatus"> <a-tag :key="locationStatus" :color="getStatusColor(locationStatus)"> {{ solutionLocationStatus(locationStatus) }} </a-tag> </span> <span slot="containerStatus" slot-scope="containerStatus"> <a-tag :key="containerStatus" :color="getStatusColor(containerStatus)"> {{ solutionContainerStatus(containerStatus) }} </a-tag> </span> <span slot="wcsLocationStatus" slot-scope="wcsLocationStatus"> <a-tag :key="wcsLocationStatus" :color="getStatusColor(wcsLocationStatus)"> {{ solutionWcsLocationStatus(wcsLocationStatus) }} </a-tag> </span> <span slot="consistencyStatus" slot-scope="consistencyStatus"> <a-tag :key="consistencyStatus" :color="solutionPurchaseColor(consistencyStatus)"> {{ solutionConsistencyStatus(consistencyStatus) }} </a-tag> </span> </a-table> </div> <a-tabs defaultActiveKey="1"> <a-tab-pane tab="库位任务详情" key="1"> <CompareWcsLocationTask :mainId="selectedMainId" /> </a-tab-pane> </a-tabs> </a-card> </template> <script> import '@/assets/less/TableExpand.less' import { JeecgListMixin } from '@/mixins/JeecgListMixin' import { getAction } from '@/api/manage' import CompareWcsLocationTask from './CompareWcsLocationTask' import { initDictOptions, filterMultiDictText } from '@/components/dict/JDictSelectUtil' import { getZoneList, ajaxGetDictItems, getDictItemsFromCache } from '@/api/api' export default { name: 'CompareWcsLocation', mixins: [JeecgListMixin], components: { CompareWcsLocationTask }, data() { return { description: '库位信息比较页面', querySource: {}, locationStatusList: [], containerStatusList: [], wcsLocationStatusList: [], consistencyStatusList: [], zoneList:[], // 表头 columns: [ { title: '库位编码', align: 'center', dataIndex: 'locationCode' }, { title: '库位表状态', align: 'center', dataIndex: 'locationStatus', key: 'locationStatus', scopedSlots: { customRender: 'locationStatus' } }, { title: 'WCS库位表状态', align: 'center', dataIndex: 'wcsLocationStatus', key: 'wcsLocationStatus', scopedSlots: { customRender: 'wcsLocationStatus' } }, { title: '库位表容器编码', align: 'center', dataIndex: 'locationContainerCode' }, { title: '托盘表容器编码', align: 'center', dataIndex: 'containerContainerCode' }, { title: '库存表容器编码', align: 'center', dataIndex: 'inventoryContainerCode' }, { title: 'WCS库位表容器编码', align: 'center', dataIndex: 'wcsContainerCode' }, { title: '托盘表状态', align: 'center', dataIndex: 'containerStatus', key: 'containerStatus', scopedSlots: { customRender: 'containerStatus' } }, { title: '数据状态', align: 'center', dataIndex: 'consistencyStatus', key: 'consistencyStatus', fixed: "right", width: 100, scopedSlots: { customRender: 'consistencyStatus' } } ], url: { list: '/config/location/compareWcsLocation' }, /* 分页参数 */ ipagination: { current: 1, pageSize: 5, pageSizeOptions: ['5', '10', '50'], showTotal: (total, range) => { return range[0] + '-' + range[1] + ' 共' + total + '条' }, showQuickJumper: true, showSizeChanger: true, total: 0 }, selectedMainId: '', superFieldList: [] } }, created() { this.loadFrom() this.initDictData() }, methods: { //优先从缓存中读取字典配置 initDictData() { // 获取 location_status if (getDictItemsFromCache('location_status')) { this.locationStatusList = getDictItemsFromCache('location_status') } else { //根据字典Code, 初始化字典数组 ajaxGetDictItems('location_status', null).then(res => { if (res.success) { this.locationStatusList = res.result } }) } // 获取 container_status if (getDictItemsFromCache('container_status')) { this.containerStatusList = getDictItemsFromCache('container_status') } else { //根据字典Code, 初始化字典数组 ajaxGetDictItems('container_status', null).then(res => { if (res.success) { this.containerStatusList = res.result } }) } // 获取 wcs_location_status if (getDictItemsFromCache('wcs_location_status')) { this.wcsLocationStatusList = getDictItemsFromCache('wcs_location_status') } else { //根据字典Code, 初始化字典数组 ajaxGetDictItems('wcs_location_status', null).then(res => { if (res.success) { this.wcsLocationStatusList = res.result } }) } // 获取 consistency_status if (getDictItemsFromCache('consistency_status')) { this.consistencyStatusList = getDictItemsFromCache('consistency_status') } else { //根据字典Code, 初始化字典数组 ajaxGetDictItems('consistency_status', null).then(res => { if (res.success) { this.consistencyStatusList = res.result } }) } }, getStatusColor(status) { const colors = { 'empty': 'green', 'lock': 'blue', default: 'grey' }; return colors[status] || colors.default; }, solutionLocationStatus(value) { var actions = [] Object.keys(this.locationStatusList).some(key => { if (this.locationStatusList[key].value == '' + value) { actions.push(this.locationStatusList[key].text) return true } }) return actions.join('') }, solutionContainerStatus(value) { var actions = [] Object.keys(this.containerStatusList).some(key => { if (this.containerStatusList[key].value == '' + value) { actions.push(this.containerStatusList[key].text) return true } }) return actions.join('') }, solutionWcsLocationStatus(value) { var actions = [] Object.keys(this.wcsLocationStatusList).some(key => { if (this.wcsLocationStatusList[key].value == '' + value) { actions.push(this.wcsLocationStatusList[key].text) return true } }) return actions.join('') }, solutionConsistencyStatus(value) { var actions = [] Object.keys(this.consistencyStatusList).some(key => { if (this.consistencyStatusList[key].value == '' + value) { actions.push(this.consistencyStatusList[key].text) return true } }) return actions.join('') }, solutionPurchaseColor(value) { var color = 'blue' if (0 == value) { color = 'red' } return color }, initDictConfig() {}, loadFrom() { getZoneList().then(res => { if (res.success) { this.zoneList = res.result } }) }, clickThenSelect(record) { return { on: { click: () => { this.onSelectChange(record.locationCode.toString().split(','), [record]) } } } }, onClearSelected() { this.selectedRowKeys = [] this.selectionRows = [] this.selectedMainId = '' }, onSelectChange(selectedRowKeys, selectionRows) { this.selectedMainId = selectedRowKeys[0].toString() this.selectedRowKeys = selectedRowKeys this.selectionRows = selectionRows }, loadData(arg) { if (!this.url.list) { this.$message.error('请设置url.list属性!') return } //加载数据 若传入参数1则加载第一页的内容 if (arg === 1) { this.ipagination.current = 1 } this.onClearSelected() var params = this.getQueryParams() //查询条件 this.loading = true getAction(this.url.list, params).then(res => { if (res.success) { this.dataSource = res.result.records this.ipagination.total = res.result.total } if (res.code === 510) { this.$message.warning(res.message) } this.loading = false }) } } } </script> <style scoped> @import '~@assets/less/common.less'; </style>