From 6e97c32af7572bfd121db2ad116901e84de56e51 Mon Sep 17 00:00:00 2001 From: xzg <4727863@qq.com> Date: Wed, 13 Mar 2024 17:41:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=EF=BC=8C=E6=8B=86=E5=8D=95?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E5=A4=8D=E8=8B=A5=E5=B9=B2BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/basic/basicMaterial.js | 8 +- src/api/reportforms/index.js | 56 +++ src/components/tablecmt/tablecmt.vue | 1 + src/option/reportforms/DeliveryTrainNumber.js | 26 +- src/option/reportforms/Inventory.js | 148 +++++++ src/option/reportforms/InventoryOutbound.js | 396 +++++++++++++----- src/option/reportforms/InventoryReceipt.js | 148 +++++++ src/option/reportforms/Selfpickupreport.js | 20 +- .../driverArtery/basicdataDriverArtery.vue | 1 + .../warehouse/basicdataWarehouseTemp.vue | 258 ++++++++---- .../inventory/distributionStockListMarket.vue | 115 +++-- .../inventory/distrilbutionBillLading.vue | 1 + src/views/reportforms/DeliveryCustomers.vue | 171 +++++++- src/views/reportforms/DeliveryTrainNumber.vue | 181 +++++++- src/views/reportforms/Inventory.vue | 366 ++++++++++++++++ src/views/reportforms/InventoryOutbound.vue | 5 +- src/views/reportforms/InventoryReceipt.vue | 366 ++++++++++++++++ 17 files changed, 1985 insertions(+), 282 deletions(-) create mode 100644 src/option/reportforms/Inventory.js create mode 100644 src/option/reportforms/InventoryReceipt.js create mode 100644 src/views/reportforms/Inventory.vue create mode 100644 src/views/reportforms/InventoryReceipt.vue diff --git a/src/api/basic/basicMaterial.js b/src/api/basic/basicMaterial.js index b696515b..318122e5 100644 --- a/src/api/basic/basicMaterial.js +++ b/src/api/basic/basicMaterial.js @@ -23,7 +23,13 @@ export const getListMaterial = (current, size, params) => { } }) } - +export const $_getListMaterial = (params) => { + return request({ + url: '/api/logpm-basic/material//findPidList', + method: 'get', + params, + }) +} export const getDetail = (id) => { return request({ url: '/api/logpm-basic/material/detail', diff --git a/src/api/reportforms/index.js b/src/api/reportforms/index.js index 9943023a..c5ca481c 100644 --- a/src/api/reportforms/index.js +++ b/src/api/reportforms/index.js @@ -82,4 +82,60 @@ export const $_getreport = (params) => { method: 'get', params, }); +}; + +// 导出库存出库明细 +export const $_exportOutStocks = (params) => { + return request({ + url: '/api/logpm-report/stock/exportOutStocks', + method: 'get', + params, + responseType: 'blob', + }) +} + + +// 库存品入库明细报表 +export const $_getinStocks = (params) => { + return request({ + url: '/api/logpm-report/stock/inStocks', + method: 'get', + params, + }); +}; +// 库存品入库明细报表导出 +export const $_exportInStocks = (params) => { + return request({ + url: '/api/logpm-report/stock/exportInStocks', + method: 'get', + params, + responseType: 'blob', + }) +} + +// 库存品明细报表 +export const $_getInventory = (params) => { + return request({ + url: '/api/logpm-report/stock/details', + method: 'get', + params, + }); +}; + +// 导出库存品明细报表 +export const $_exportInventory = (params) => { + return request({ + url: '/api/logpm-report/stock/exportDetails', + method: 'get', + params, + responseType: 'blob', + }) +} +// 获取仓库 +export const $_getMyWarehouseList = data => { + return request({ + url: '/api/logpm-basicdata/warehouse/getMyWarehouseList', + method: 'get', + data, + }); }; \ No newline at end of file diff --git a/src/components/tablecmt/tablecmt.vue b/src/components/tablecmt/tablecmt.vue index 07fb7a3e..99c18be6 100644 --- a/src/components/tablecmt/tablecmt.vue +++ b/src/components/tablecmt/tablecmt.vue @@ -58,6 +58,7 @@ <el-select v-if="column.type == 3" v-model="column.values" + filterable class="m-2 selectbr" clearable :placeholder="`请选择${column.label}`" diff --git a/src/option/reportforms/DeliveryTrainNumber.js b/src/option/reportforms/DeliveryTrainNumber.js index f8e9231d..30408e20 100644 --- a/src/option/reportforms/DeliveryTrainNumber.js +++ b/src/option/reportforms/DeliveryTrainNumber.js @@ -39,7 +39,7 @@ export const columnList = [ { prop: 'warehouseName', label: '仓库', - type: 2, + type: 3, values: '', width: '150', checkarr: [], @@ -50,7 +50,7 @@ export const columnList = [ { prop: 'type', label: '配送类型', - type: 1, + type: 3, values: '', width: '150', checkarr: [], @@ -61,7 +61,7 @@ export const columnList = [ { prop: 'kind', label: '配送种类', - type: 1, + type: 3, values: '', width: '150', checkarr: [], @@ -267,14 +267,14 @@ export const columnList = [ sortable: true, head: false, }, - { - prop: 'createUserName', - label: '操作', - type: 6, - values: '', - width: '200', - checkarr: [], - fixed: 'right', - sortable: false, - }, + // { + // prop: 'createUserName', + // label: '操作', + // type: 6, + // values: '', + // width: '200', + // checkarr: [], + // fixed: 'right', + // sortable: false, + // }, ] \ No newline at end of file diff --git a/src/option/reportforms/Inventory.js b/src/option/reportforms/Inventory.js new file mode 100644 index 00000000..936028f3 --- /dev/null +++ b/src/option/reportforms/Inventory.js @@ -0,0 +1,148 @@ +export const columnList = [ + { + prop: '', + label: '复选框', + type: 0, + width: 55, + fixed: true, + }, + { + prop: '', + label: '序号', + type: 12, + values: '', + width: 55, + fixed: true, + }, + { + prop: 'warehouseName', + label: '仓库', + type: 2, + values: '', + width: '180', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'marketName', + label: '商场名称', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'serviceType', + label: '类型', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'cargoNumber', + label: '物料编码', + type: 2, + values: '', + width: '180', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'descriptionGoods', + label: '物料名称', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'quantityStock', + label: '入库总数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'outboundQuantity', + label: '出库总数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'currentQuantity', + label: '当前库存数', + type: 1, + values: '', + width: '200', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'quantityOccupied', + label: '占用数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'usableQuantity', + label: '可用数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'allocationTitle', + label: '货位信息', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + // { + // prop: 'createUserName', + // label: '操作', + // type: 6, + // values: '', + // width: '200', + // checkarr: [], + // fixed: 'right', + // sortable: false, + // }, + ] \ No newline at end of file diff --git a/src/option/reportforms/InventoryOutbound.js b/src/option/reportforms/InventoryOutbound.js index 9557c39f..c3929c1f 100644 --- a/src/option/reportforms/InventoryOutbound.js +++ b/src/option/reportforms/InventoryOutbound.js @@ -1,33 +1,274 @@ +// export const columnList = [ +// { +// prop: '', +// label: '复选框', +// type: 0, +// width: 55, +// fixed: true, +// }, +// { +// prop: '', +// label: '序号', +// type: 12, +// values: '', +// width: 55, +// fixed: true, +// }, +// { +// prop: 'warehouse_name', +// label: '仓库', +// type: 2, +// values: '', +// width: '180', +// checkarr: [], +// fixed: false, +// sortable: true, +// head: false, +// }, +// { +// prop: 'market_name', +// label: '商场名称', +// type: 2, +// values: '', +// width: '150', +// checkarr: [], +// fixed: false, +// sortable: true, +// head: false, +// }, +// { +// prop: 'cargo_number', +// label: '物料编码', +// type: 2, +// values: '', +// width: '150', +// checkarr: [], +// fixed: false, +// sortable: true, +// head: false, +// }, +// { +// prop: 'material_name', +// label: '物料名称', +// type: 2, +// values: '', +// width: '180', +// checkarr: [], +// fixed: false, +// sortable: true, +// head: false, +// }, +// { +// prop: 'create_time', +// label: '出库时间', +// type: 4, +// values: '', +// width: '150', +// checkarr: [], +// fixed: false, +// sortable: true, +// head: false, +// }, +// { +// prop: 'stock_quantity', +// label: '出库件数', +// type: 1, +// values: '', +// width: '150', +// checkarr: [], +// fixed: false, +// sortable: true, +// head: false, +// }, +// { +// prop: 'goods_allocation_name', +// label: '货位信息', +// type: 2, +// values: '', +// width: '150', +// checkarr: [], +// fixed: false, +// sortable: true, +// head: false, +// }, +// { +// prop: 'out_type', +// label: '出库类型', +// type: 2, +// values: '', +// width: '150', +// checkarr: [], +// fixed: false, +// sortable: true, +// head: false, +// }, +// { +// prop: 'note_number', +// label: '配送单号', +// type: 2, +// values: '', +// width: '150', +// checkarr: [], +// fixed: false, +// sortable: true, +// head: false, +// }, +// { +// prop: 'train_number', +// label: '配送车次号', +// type: 2, +// values: '', +// width: '150', +// checkarr: [], +// fixed: false, +// sortable: true, +// head: false, +// }, +// { +// prop: 'reservation_code', +// label: '预约单号', +// type: 2, +// values: '', +// width: '150', +// checkarr: [], +// fixed: false, +// sortable: true, +// head: false, +// }, +// { +// prop: 'client_name', +// label: '配送客户', +// type: 2, +// values: '', +// width: '150', +// checkarr: [], +// fixed: false, +// sortable: true, +// head: false, +// }, + +// // { +// // prop: 'createUserName', +// // label: '操作', +// // type: 6, +// // values: '', +// // width: '200', +// // checkarr: [], +// // fixed: 'right', +// // sortable: false, +// // }, +// ] + + + + export const columnList = [ - { - prop: '', - label: '复选框', - type: 0, - width: 55, - fixed: true, - }, - { - prop: '', - label: '序号', - type: 12, - values: '', - width: 55, - fixed: true, - }, - { - prop: 'warehouse_name', - label: '仓库', + { + prop: '', + label: '复选框', + type: 0, + width: 55, + fixed: true, + }, + { + prop: '', + label: '序号', + type: 12, + values: '', + width: 55, + fixed: true, + }, + { + prop: 'warehouseName', + label: '仓库', + type: 2, + values: '', + width: '180', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'marketName', + label: '商场名称', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'cargoNumber', + label: '物料编码', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'materialName', + label: '物料名称', + type: 2, + values: '', + width: '180', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'createTime', + label: '出库时间', + type: 4, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'stockQuantity', + label: '出库件数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'goodsAllocationName', + label: '货位信息', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'outType', + label: '出库类型', type: 2, values: '', - width: '180', + width: '150', checkarr: [], fixed: false, sortable: true, head: false, }, { - prop: 'market_name', - label: '商场名称', + prop: 'noteNumber', + label: '配送单号', type: 2, values: '', width: '150', @@ -37,8 +278,8 @@ export const columnList = [ head: false, }, { - prop: 'cargo_number', - label: '物料编码', + prop: 'trainNumber', + label: '配送车次号', type: 2, values: '', width: '150', @@ -48,21 +289,10 @@ export const columnList = [ head: false, }, { - prop: 'material_name', - label: '物料名称', + prop: 'reservationCode', + label: '预约单号', type: 2, values: '', - width: '180', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, - { - prop: 'create_time', - label: '出库时间', - type: 4, - values: '', width: '150', checkarr: [], fixed: false, @@ -70,19 +300,8 @@ export const columnList = [ head: false, }, { - prop: 'stock_quantity', - label: '出库件数', - type: 1, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, - { - prop: 'goods_allocation_name', - label: '货位信息', + prop: 'clientName', + label: '配送客户', type: 2, values: '', width: '150', @@ -91,70 +310,15 @@ export const columnList = [ sortable: true, head: false, }, - { - prop: 'out_type', - label: '出库类型', - type: 2, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, - { - prop: 'note_number', - label: '配送单号', - type: 2, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, - { - prop: 'train_number', - label: '配送车次号', - type: 2, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, - { - prop: 'reservation_code', - label: '预约单号', - type: 2, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, - { - prop: 'client_name', - label: '配送客户', - type: 2, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, - - { - prop: 'createUserName', - label: '操作', - type: 6, - values: '', - width: '200', - checkarr: [], - fixed: 'right', - sortable: false, - }, - ] \ No newline at end of file + + // { + // prop: 'createUserName', + // label: '操作', + // type: 6, + // values: '', + // width: '200', + // checkarr: [], + // fixed: 'right', + // sortable: false, + // }, +] \ No newline at end of file diff --git a/src/option/reportforms/InventoryReceipt.js b/src/option/reportforms/InventoryReceipt.js new file mode 100644 index 00000000..1d8b4b2c --- /dev/null +++ b/src/option/reportforms/InventoryReceipt.js @@ -0,0 +1,148 @@ +export const columnList = [ + { + prop: '', + label: '复选框', + type: 0, + width: 55, + fixed: true, + }, + { + prop: '', + label: '序号', + type: 12, + values: '', + width: 55, + fixed: true, + }, + { + prop: 'warehouseName', + label: '仓库', + type: 2, + values: '', + width: '180', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'marketName', + label: '商场名称', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'serviceType', + label: '类型', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'cargoNumber', + label: '物料编码', + type: 2, + values: '', + width: '180', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'descriptionGoods', + label: '物料名称', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'stock_quantity', + label: '入库时间', + type: 4, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'despatch', + label: '运单号', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'orderCode', + label: '订单自编码', + type: 2, + values: '', + width: '200', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'packageCode', + label: '包条码', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'quantityStock', + label: '入库数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'allocationTitle', + label: '货位信息', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + // { + // prop: 'createUserName', + // label: '操作', + // type: 6, + // values: '', + // width: '200', + // checkarr: [], + // fixed: 'right', + // sortable: false, + // }, + ] \ No newline at end of file diff --git a/src/option/reportforms/Selfpickupreport.js b/src/option/reportforms/Selfpickupreport.js index 2c54252d..84762884 100644 --- a/src/option/reportforms/Selfpickupreport.js +++ b/src/option/reportforms/Selfpickupreport.js @@ -224,14 +224,14 @@ export const columnList = [ head: false, }, - { - prop: 'createUserName', - label: '操作', - type: 6, - values: '', - width: '200', - checkarr: [], - fixed: 'right', - sortable: false, - }, + // { + // prop: 'createUserName', + // label: '操作', + // type: 6, + // values: '', + // width: '200', + // checkarr: [], + // fixed: 'right', + // sortable: false, + // }, ] \ No newline at end of file diff --git a/src/views/basicdata/driverArtery/basicdataDriverArtery.vue b/src/views/basicdata/driverArtery/basicdataDriverArtery.vue index 669e5f21..11a7e5a9 100644 --- a/src/views/basicdata/driverArtery/basicdataDriverArtery.vue +++ b/src/views/basicdata/driverArtery/basicdataDriverArtery.vue @@ -328,6 +328,7 @@ export default { labelWidth: '150', width: '200px', align: 'center', + multiple:true, span: 11, // dicData: [], dicUrl: '/api/logpm-basicdata/vehicle/dictionary?vehicleNub={{key}}', diff --git a/src/views/basicdata/warehouse/warehouse/basicdataWarehouseTemp.vue b/src/views/basicdata/warehouse/warehouse/basicdataWarehouseTemp.vue index a357a911..0ed71d89 100644 --- a/src/views/basicdata/warehouse/warehouse/basicdataWarehouseTemp.vue +++ b/src/views/basicdata/warehouse/warehouse/basicdataWarehouseTemp.vue @@ -85,11 +85,15 @@ </el-form-item> <el-form-item label="管理区域"> - <el-cascader v-model="Addform.administrativeAreas" :options="areaoptions" placeholder="省/市/区" /> + <el-cascader + v-model="Addform.administrativeAreas" + :options="areaoptions" + placeholder="省/市/区" + /> </el-form-item> <el-form-item label="职能类型"> - <el-select v-model="Addform.functionType" clearable placeholder="请选择职能类型" > + <el-select v-model="Addform.functionType" clearable placeholder="请选择职能类型"> <el-option v-for="item in options" :key="item.dictKey" @@ -100,28 +104,36 @@ </el-form-item> <el-form-item label="仓库地区"> - <el-cascader v-model="Addform.addressInfo" :options="areaoptions" placeholder="省/市/区" /> + <el-cascader + v-model="Addform.addressInfo" + :options="areaoptions" + placeholder="省/市/区" + /> </el-form-item> <el-form-item label="仓库地址"> - <avue-input-map :params="warehouseAddress" placeholder="请选择地图" v-model="Addform.map" ></avue-input-map> + <avue-input-map + :params="warehouseAddress" + placeholder="请选择地图" + v-model="Addform.map" + ></avue-input-map> </el-form-item> <el-form-item label="所属部门"> <el-tree-select - v-model="Addform.department" - :data="AssessmentDepartment" - check-strictly - :render-after-expand="false" - style="width: 240px" - @node-click="BelongsearcheNodeClick" - clearable - @change="Belongingdepartment" - /> + v-model="Addform.department" + :data="AssessmentDepartment" + check-strictly + :render-after-expand="false" + style="width: 240px" + @node-click="BelongsearcheNodeClick" + clearable + @change="Belongingdepartment" + /> </el-form-item> <el-form-item label="仓库类型"> - <el-select v-model="Addform.warehouseType" clearable placeholder="请选择仓库类型" > + <el-select v-model="Addform.warehouseType" clearable placeholder="请选择仓库类型"> <el-option v-for="item in WarehouseType" :key="item.dictKey" @@ -132,7 +144,7 @@ </el-form-item> <el-form-item label="消防等级"> - <el-select v-model="Addform.fireGrade" clearable placeholder="请选择消防等级" > + <el-select v-model="Addform.fireGrade" clearable placeholder="请选择消防等级"> <el-option v-for="item in FireProtection" :key="item.dictKey" @@ -143,7 +155,7 @@ </el-form-item> <el-form-item label="是否具有消防等级"> - <el-select v-model="Addform.fireRatingNot" clearable placeholder="请选择是否具有消防等级" > + <el-select v-model="Addform.fireRatingNot" clearable placeholder="请选择是否具有消防等级"> <el-option v-for="item in Isprotection" :key="item.dictKey" @@ -154,7 +166,7 @@ </el-form-item> <el-form-item label="仓库结构"> - <el-select v-model="Addform.warehouseStructure" clearable placeholder="请选择仓库结构" > + <el-select v-model="Addform.warehouseStructure" clearable placeholder="请选择仓库结构"> <el-option v-for="item in WarehouseStructureList" :key="item.dictKey" @@ -165,7 +177,7 @@ </el-form-item> <el-form-item label="是否高架"> - <el-select v-model="Addform.elevatedNot" clearable placeholder="请选择是否高架" > + <el-select v-model="Addform.elevatedNot" clearable placeholder="请选择是否高架"> <el-option v-for="item in Iselevated" :key="item.dictKey" @@ -180,7 +192,7 @@ </el-form-item> <el-form-item label="电力类型"> - <el-select v-model="Addform.powerCondition" clearable placeholder="请选择电力类型" > + <el-select v-model="Addform.powerCondition" clearable placeholder="请选择电力类型"> <el-option v-for="item in powerConditionList" :key="item.dictKey" @@ -199,7 +211,7 @@ </el-form-item> <el-form-item label="租金类型"> - <el-select v-model="Addform.rentType" clearable placeholder="请选择租金类型" > + <el-select v-model="Addform.rentType" clearable placeholder="请选择租金类型"> <el-option v-for="item in rentTypeList" :key="item.dictKey" @@ -210,7 +222,7 @@ </el-form-item> <el-form-item label="仓库等级"> - <el-select v-model="Addform.grade" clearable placeholder="请选择仓库等级" > + <el-select v-model="Addform.grade" clearable placeholder="请选择仓库等级"> <el-option v-for="item in gradeList" :key="item.dictKey" @@ -230,22 +242,54 @@ <el-form-item label="日期范围"> <el-date-picker - v-model="Addform.daterange" - type="datetimerange" - start-placeholder="租赁开始日期" - end-placeholder="租赁结束日期" - format="YYYY-MM-DD" - date-format="YYYY/MM/DD" - time-format="A hh:mm:ss" - /> + v-model="Addform.daterange" + type="datetimerange" + start-placeholder="租赁开始日期" + end-placeholder="租赁结束日期" + format="YYYY-MM-DD" + date-format="YYYY/MM/DD" + time-format="A hh:mm:ss" + /> </el-form-item> <el-form-item label="备注"> <el-input v-model="Addform.remarks" placeholder="请输入日期范围" /> </el-form-item> <el-form-item label="收款码"> - <el-input v-model="Addform.paymentCodeUrl" placeholder="请上传收款码" /> - <ImgList :imgList="imgs"></ImgList> - <ImgList :imgList="imgs1"></ImgList> + <el-upload :action="doubledCount" :headers="headers" v-model:file-list="Addform.paymentCodeUrl" list-type="picture-card" :auto-upload="true"> + <el-icon><Plus /></el-icon> + + <template #file="{ file }"> + <div> + <img class="el-upload-list__item-thumbnail" :src="file.url" alt="" /> + <span class="el-upload-list__item-actions"> + <span + class="el-upload-list__item-preview" + @click="handlePictureCardPreview(file)" + > + <el-icon><zoom-in /></el-icon> + </span> + <span + v-if="!disabled" + class="el-upload-list__item-delete" + @click="handleDownload(file)" + > + <el-icon><Download /></el-icon> + </span> + <span + v-if="!disabled" + class="el-upload-list__item-delete" + @click="handleRemove(file)" + > + <el-icon><Delete /></el-icon> + </span> + </span> + </div> + </template> + </el-upload> + + <el-dialog v-model="dialogVisible"> + <img w-full :src="dialogImageUrl" alt="Preview Image" /> + </el-dialog> </el-form-item> </el-form> <template #footer> @@ -277,36 +321,64 @@ import { getCurrentInstance, } from 'vue'; import { columnList } from '@/option/basicdata/basicdataWarehouseTemp.js'; -import { $_getList, $_ObtainRegion,$_parentId } from '@/api/basicdata/basicdataWarehouse'; +import { $_getList, $_ObtainRegion, $_parentId } from '@/api/basicdata/basicdataWarehouse'; import { getDictionaryBiz } from '@/api/system/dict'; //字典 +import { getToken } from '@/utils/auth'; import { ElMessage } from 'element-plus'; +import { Delete, Download, Plus, ZoomIn } from '@element-plus/icons-vue'; const options = ref([]); //职能类型 const search = ref(false); //搜索展开 -const imgs=ref([ +const imgs = ref([ 'https://fuss10.elemecdn.com/3/28/bbf893f792f03a54408b3b7a7ebf0jpeg.jpeg', 'https://fuss10.elemecdn.com/2/11/6535bcfb26e4c79b48ddde44f4b6fjpeg.jpeg', -]) -const imgs1=ref([ +]); +const imgs1 = ref([ 'https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg', 'https://fuss10.elemecdn.com/1/34/19aa98b1fcb2781c4fba33d850549jpeg.jpeg', 'https://fuss10.elemecdn.com/0/6f/e35ff375812e6b0020b6b4e8f9583jpeg.jpeg', +]); + +const dialogImageUrl = ref(''); +const dialogVisible = ref(false); +const disabled = ref(false); + +const handleRemove = file => { + console.log(file); +}; + +const handlePictureCardPreview = file => { + dialogImageUrl.value = file.url; + dialogVisible.value = true; +}; + +const handleDownload = file => { + console.log(file); +}; -]) const query = ref({}); //顶部搜索参数 const newlyaddload = ref(false); //新增弹窗 const AssessmentDepartment = ref([]); //考核部门 -const department=ref() +const department = ref(); const Addform = ref({ - map:[], + map: [], }); //表格新增数据表单 -const WarehouseType=ref([])//仓库类型 -const FireProtection=ref([])//消防等级 -const Isprotection=ref([])//是否具有消防等级 -const WarehouseStructureList=ref([]);//仓库结构 -const Iselevated=ref([]);//是否高架 -const powerConditionList=ref([]);//电力类型 -const rentTypeList=ref([]);//租金类型 -// 获取分类指标 +const WarehouseType = ref([]); //仓库类型 +const FireProtection = ref([]); //消防等级 +const Isprotection = ref([]); //是否具有消防等级 +const WarehouseStructureList = ref([]); //仓库结构 +const Iselevated = ref([]); //是否高架 +const powerConditionList = ref([]); //电力类型 +const rentTypeList = ref([]); //租金类型 +const gradeList = ref([]); //仓库等级 +// 图片上传接口 +const doubledCount = computed(() => { + return '/api/blade-resource/oss/endpoint/put-file'; +}); +// 图片上传必须携带TOKEN +const headers = computed(() => { + return { 'Blade-Auth': 'Bearer ' + getToken() }; +}); +// 获取分类指标 // 在外部定义递归函数,用于加载和更新分类 const loadChildren = (targetList, parentId, indicatorValue) => { let dataSub = { parentId }; @@ -343,7 +415,6 @@ const loadChildren = (targetList, parentId, indicatorValue) => { }); }; - // 当分类项被点击时调用 const classification = (val, index) => { console.log(index, '当前点击的谁'); @@ -363,8 +434,6 @@ const classification = (val, index) => { } }; - - const BelongsearcheNodeClick = data => { department.value = data; //存储当前点击的考核部门 if (data.hasChildren) { @@ -400,7 +469,7 @@ const searchChangeS = () => { query.value = {}; onLoad(); }; -const areaoptions = ref([]);//地区 +const areaoptions = ref([]); //地区 // 地区获取 const initialization = () => { $_ObtainRegion().then(res => { @@ -411,12 +480,9 @@ const initialization = () => { }); }; - initialization(); const searchHide = () => {}; - - const details = reactive({ /** 是否开启搜索 */ search: false, @@ -502,13 +568,13 @@ const showdrawer = _flag => { // 字典公共函数 function updateDictionary(targetArray, dictionaryType) { getDictionaryBiz(dictionaryType).then(res => { - res.data.data.forEach((item)=>{ - console.log(item); - targetArray.push({ - dictKey:item.dictKey, - dictValue:item.dictValue, - }) - }) + res.data.data.forEach(item => { + console.log(item); + targetArray.push({ + dictKey: item.dictKey, + dictValue: item.dictValue, + }); + }); }); } const dictionary = () => { @@ -520,7 +586,7 @@ const dictionary = () => { updateDictionary(Iselevated.value, 'yes_no'); //是否高架 updateDictionary(powerConditionList.value, 'power_condition'); //是否高架 updateDictionary(rentTypeList.value, 'rent_type'); //是否高架 - updateDictionary(rentTypeList.value, 'warehouse_grade'); //仓库等级 + updateDictionary(gradeList.value, 'warehouse_grade'); //仓库等级 }; // 页面初始化字典 dictionary(); @@ -569,37 +635,41 @@ const newlyaddSubmit = () => { console.log(Addform.value); }; // 部门选择 -const AffiliationList=ref({ - formOption: { - labelWidth: 100, - column: [{ - label: '自定义项', - prop: 'label' - }], +const AffiliationList = ref({ + formOption: { + labelWidth: 100, + column: [ + { + label: '自定义项', + prop: 'label', + }, + ], + }, + lazy: true, + treeLoad: function (node, resolve) { + if (node.level === 0) { + return resolve([{ is_show: true, label: 'region', value: new Date().getTime() }]); + } + if (node.level > 2) return resolve([]); + setTimeout(() => { + const data = [ + { + label: 'leaf', + is_show: true, + value: new Date().getTime(), + leaf: true, }, - lazy: true, - treeLoad: function (node, resolve) { - if (node.level === 0) { - return resolve([{ is_show: true, label: 'region', value: new Date().getTime() }]); - } - if (node.level > 2) return resolve([]); - setTimeout(() => { - const data = [{ - label: 'leaf', - is_show: true, - value: new Date().getTime(), - leaf: true - }, { - is_show: true, - value: new Date().getTime(), - label: 'zone' - }]; - - resolve(data); - }, 500); + { + is_show: true, + value: new Date().getTime(), + label: 'zone', }, - } - ) + ]; + + resolve(data); + }, 500); + }, +}); </script> <style scoped lang="scss"> @@ -625,9 +695,11 @@ const AffiliationList=ref({ .el-form-item { width: 46%; } - .el-form-item__content{ + .el-form-item__content { width: 100% !important; - .el-select,.avue-input-map,.el-cascader{ + .el-select, + .avue-input-map, + .el-cascader { width: 100% !important; } } diff --git a/src/views/distribution/inventory/distributionStockListMarket.vue b/src/views/distribution/inventory/distributionStockListMarket.vue index 3702c9eb..0009f560 100644 --- a/src/views/distribution/inventory/distributionStockListMarket.vue +++ b/src/views/distribution/inventory/distributionStockListMarket.vue @@ -143,12 +143,12 @@ v-model="formInline.sku" placeholder="请输入sku" clearable - :disabled="Boolean(unpackFormDisable.sku)" + :disabled="FromDis" /> </el-form-item> <el-form-item label="货物名称" style="width: 40%"> <!-- <el-input v-model="formInline.descriptionGoods" placeholder="请输入货物名称" clearable />--> - <el-select + <!-- <el-select style="width: 100%" v-model="formInline.materialIdName" filterable @@ -167,6 +167,24 @@ :label="item.name" :value="item.id" /> + </el-select> --> + <el-select + style="width: 100%" + v-model="formInline.materialIdName" + filterable + remote + reserve-keyword + placeholder="请选择物料名称" + clearable + :disabled="goodsDis" + @change="getMethodName($event, '1')" + > + <el-option + v-for="item in optionsName" + :key="item.id" + :label="item.name" + :value="item.id" + /> </el-select> </el-form-item> <el-form-item label="货物单位" style="width: 40%"> @@ -178,7 +196,7 @@ reserve-keyword remote-show-suffix placeholder="请选择货物单位" - :disabled="Boolean(unpackFormDisable.cargoUnit)" + :disabled="FromDis" > <el-option v-for="item in distributionUnit" @@ -193,7 +211,7 @@ v-model="formInline.cargoNorms" placeholder="请输入规格" clearable - :disabled="Boolean(unpackFormDisable.cargoNorms)" + :disabled="FromDis" /> </el-form-item> <el-form-item label="产品编码" style="width: 40%"> @@ -201,7 +219,7 @@ v-model="formInline.cargoNumber" placeholder="请输入产品编码" clearable - :disabled="Boolean(unpackFormDisable.cargoNumber)" + :disabled="goodsDis || FromDis" /> </el-form-item> <el-form-item label="包装数量" style="width: 40%"> @@ -209,7 +227,7 @@ v-model="formInline.packageNum" placeholder="请输入包装数量" clearable - :disabled="Boolean(unpackFormDisable.packageNum)" + :disabled="FromDis" /> </el-form-item> <el-form-item label="拆箱数" style="width: 40%"> @@ -314,7 +332,7 @@ import { stockExport, } from '@/api/distribution/distributionStockList'; import { getListParcelDetails } from '@/api/distribution/distributionParcelDetails'; -import { getListMaterial } from '@/api/basic/basicMaterial'; +import { getListMaterial, $_getListMaterial } from '@/api/basic/basicMaterial'; import option from '@/option/distribution/distributionStockList'; import { mapGetters } from 'vuex'; import { exportBlob } from '@/api/common'; @@ -333,6 +351,8 @@ export default { unpackFormDisable: {}, // 拆包名称下拉 选择 optionsName: [], + goodsDis: true, + FromDis: true, columnList: [ { prop: '', @@ -820,24 +840,24 @@ export default { /** * 查询 * */ - async remoteMethodName(query) { - console.log('query', query); - if (query) { - this.loading = true; - //查询物料数据 - let asd = await getListMaterial(this.page.currentPage, this.page.pageSize, { - name: query, - // pid: this.stockList.materialId, - }).then(); - console.log('物料信息', asd.data.data); - if (!!asd.data.data) { - this.optionsName = asd.data.data.records; - } - this.loading = false; - } else { - this.optionsName = []; - } - }, + // async remoteMethodName(query) { + // console.log('query', query); + // if (query) { + // this.loading = true; + // //查询物料数据 + // let asd = await getListMaterial(this.page.currentPage, this.page.pageSize, { + // name: query, + // pid: this.stockList.materialId, + // }).then(); + // console.log('物料信息', asd.data.data); + // if (!!asd.data.data) { + // this.optionsName = asd.data.data.records; + // } + // this.loading = false; + // } else { + // this.optionsName = []; + // } + // }, /** * 物料选择赋值 * */ @@ -1032,6 +1052,35 @@ export default { // this.form.parcels = shi; // } // console.log("提交了"); + if (this.FromDis) { + if (!this.formInline.materialIdName) { + this.$message.warning('请选择货物名称'); + return; + } + } + + + if (!this.formInline.sku) { + this.$message.warning('请输入Sku'); + return; + } + + if (!this.formInline.cargoUnit) { + this.$message.warning('请选择货物单位'); + return; + } + if (!this.formInline.cargoNorms) { + this.$message.warning('请输入规格'); + return; + } + if (!this.formInline.packageNum) { + this.$message.warning('请输入包装数量'); + return; + } + if (!this.formInline.unpackingQuantity) { + this.$message.warning('请输入拆箱数量'); + return; + } if (parseInt(this.formInline.unpackingQuantity) > parseInt(this.getQuery.quantityStock)) { this.$message.warning('拆包数量大于在库数量!!!'); return; @@ -1105,6 +1154,22 @@ export default { }); }, async handleViewDismantle(row) { + let data = { + pid: row.row.materialId, + }; + $_getListMaterial(data).then(res => { + console.log('物料信息', res); + if (res.data.data.length) { + this.optionsName = res.data.data; + console.log('this.optionsName', this.optionsName); + this.goodsDis = false; + this.FromDis = true; + } else { + this.goodsDis = true; + this.FromDis = false; + } + }); + console.log('><<>L:', row.row); this.dismantle = true; this.view = true; diff --git a/src/views/distribution/inventory/distrilbutionBillLading.vue b/src/views/distribution/inventory/distrilbutionBillLading.vue index 2f00ed1a..48b5192e 100644 --- a/src/views/distribution/inventory/distrilbutionBillLading.vue +++ b/src/views/distribution/inventory/distrilbutionBillLading.vue @@ -2906,6 +2906,7 @@ export default { params.genre = 1; params.typeService = 3; params.reservation = '30'; + params.isAll=0; getListOne(page.currentPage, page.pageSize, Object.assign(params, this.queryOrder)).then( res => { const data = res.data.data; diff --git a/src/views/reportforms/DeliveryCustomers.vue b/src/views/reportforms/DeliveryCustomers.vue index a9c00853..cfde24bd 100644 --- a/src/views/reportforms/DeliveryCustomers.vue +++ b/src/views/reportforms/DeliveryCustomers.vue @@ -7,13 +7,85 @@ <!-- 搜索模块 --> <el-row v-if="search"> <!-- 查询模块 --> - <el-form :inline="true" :model="query" class="el-fr-d"> - <!-- 查询按钮 --> - <el-form-item class="el-btn"> - <el-button type="primary" icon="el-icon-search" @click="searchChange">搜 索</el-button> - <el-button icon="el-icon-delete" @click="searchReset()">清 空</el-button> + <el-form :inline="true" :model="TopQuery" class="el-fr-d"> + <!-- 查询按钮 --> + + <div class="el_top_left"> + <el-form-item label="配送日期"> + <el-date-picker + v-model="TopQuery.time" + type="datetimerange" + start-placeholder="开始日期" + end-placeholder="结束日期" + format="YYYY-MM-DD" + date-format="YYYY/MM/DD" + time-format="A" + @change="Toptiem" + /> + </el-form-item> + + <el-form-item label="仓库"> + <el-select + multiple + v-model="TopQuery.warehouse" + filterable + placeholder="多选仓库搜索" + style="width: 240px" + > + <el-option + v-for="item in warehouseList" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + + <el-form-item label="配送车辆"> + <el-input + v-model="TopQuery.vehicle" + style="width: 240px" + :rows="1" + type="textarea" + placeholder="多个配送车辆请用逗号隔开" + /> + </el-form-item> + <el-form-item label="配送司机"> + <el-input + v-model="TopQuery.vehicle" + style="width: 240px" + :rows="1" + type="textarea" + placeholder="多个配送司机请用逗号隔开" + /> </el-form-item> - </el-form> + <!-- <el-form-item label="配送类型"> + <el-select multiple v-model="TopQuery.DeliveryType" filterable placeholder="多选仓库搜索" style="width: 240px"> + <el-option + v-for="item in DeliveryTypeList" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> --> + + <!-- <el-form-item label="配送种类"> + <el-select multiple v-model="TopQuery.Deliverygeneric" filterable placeholder="多选仓库搜索" style="width: 240px"> + <el-option + v-for="item in DeliverygenericList" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> --> + </div> + <el-form-item class="el-btn"> + <el-button type="primary" icon="el-icon-search" @click="searchChange">搜 索</el-button> + <el-button icon="el-icon-delete" @click="searchReset()">清 空</el-button> + </el-form-item> + </el-form> </el-row> <!-- 控件模块 --> @@ -91,11 +163,15 @@ import { columnList } from '@/option/reportforms/DeliveryCustomers.js'; import { getDictionaryBiz } from '@/api/system/dict'; //字典 import { processRowProperty,setNodeHeight } from '@/utils/util'; - import {$_getcustomer,$_exportCustomer} from '@/api/reportforms/index.js'; + import {$_getcustomer,$_exportCustomer,$_getMyWarehouseList} from '@/api/reportforms/index.js'; import { ElMessageBox } from 'element-plus'; import { downloadXls } from '@/utils/util'; import functions from '@/utils/functions.js'; import dayjs from 'dayjs'; + const TopQuery=ref({});//顶部搜索 + const warehouseList = ref([]); //仓库列表 + const DeliveryTypeList =ref([]) + const DeliverygenericList =ref([]) const details = reactive({ /** 是否开启搜索 */ search: false, @@ -218,7 +294,14 @@ }; // 实例函数 - + const Toptiem = val => { + if (!val) { + delete TopQuery.value.ks; + delete TopQuery.value.end; + } + console.log(val, '顶部时间触发'); + console.log(TopQuery.value, '顶部时间触发'); +}; /** 表格表头时间选择 */ const timesc = (index, row) => { console.log(index, row); @@ -247,8 +330,18 @@ }; // 网页顶部搜索按钮 const searchChange = () => { - details.search = false; //关闭搜索 - }; + // 日期处理 + if (TopQuery.value.time) { + TopQuery.value.ks = dayjs(TopQuery.value.time[0]).format('YYYY-MM-DD'); //开始日期 + TopQuery.value.end = dayjs(TopQuery.value.time[1]).format('YYYY-MM-DD'); //结束日期 + } + // 仓库处理 + if (TopQuery.value.warehouse) { + TopQuery.value.warehouseJoin = TopQuery.value.warehouse.join(','); + } + console.log(TopQuery.value, '顶部搜索触发'); + // details.search = false; //关闭搜索 +}; // 每页多少条 const sizeChange = val => { details.page.pageSize = val; @@ -288,9 +381,31 @@ }); } // 页面初始化方法 - const onLoad = () => { - // updateDictionary(columnList[3].checkarr, 'pc_work_order'); //异常类型 - }; +// 页面初始化方法 +const onLoad = () => { + warehouseList.value = []; + + columnList.find(res => res.label == '配送类型').checkarr = []; + columnList.find(res => res.label == '配送类型').checkarr = DeliveryTypeList.value; + columnList.find(res => res.label == '配送种类').checkarr = []; + columnList.find(res => res.label == '配送种类').checkarr = DeliverygenericList.value; + columnList.find(res => res.label == '仓库').checkarr = []; + columnList.find(res => res.label == '仓库').checkarr = warehouseList.value; + + console.log(columnList, 'columnList'); + // 获取仓库 + + $_getMyWarehouseList().then(res => { + console.log(res, '仓库列表'); + if (res.data.data.length) + res.data.data.forEach(item => { + warehouseList.value.push({ + value: item.name, + label: item.name, + }); + }); + }); +}; onLoad(); // 获取数据 const getrain=()=>{ @@ -360,5 +475,35 @@ const exportReport=()=>{ display: flex; flex-direction: column; } + :deep(.el-fr-d) { + width: 100%; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + .el_top_left { + width: 100%; + display: flex; + justify-content: space-between; + .el-form-item { + align-items: flex-start; + } + .el-form-item__content { + align-items: flex-start; + height: 100%; + .el-date-editor { + height: 29px !important; + } + } + } +} +:deep(.el-btn) { + margin-right: 0; + display: flex; + width: 100%; + justify-content: flex-end; + .el-form-item__content { + justify-content: flex-end; + } +} </style> \ No newline at end of file diff --git a/src/views/reportforms/DeliveryTrainNumber.vue b/src/views/reportforms/DeliveryTrainNumber.vue index 3c7e1a3c..fd405aec 100644 --- a/src/views/reportforms/DeliveryTrainNumber.vue +++ b/src/views/reportforms/DeliveryTrainNumber.vue @@ -5,8 +5,80 @@ <!-- 搜索模块 --> <el-row v-if="search"> <!-- 查询模块 --> - <el-form :inline="true" :model="query" class="el-fr-d"> + <el-form :inline="true" :model="TopQuery" class="el-fr-d"> <!-- 查询按钮 --> + + <div class="el_top_left"> + <el-form-item label="配送日期"> + <el-date-picker + v-model="TopQuery.time" + type="datetimerange" + start-placeholder="开始日期" + end-placeholder="结束日期" + format="YYYY-MM-DD" + date-format="YYYY/MM/DD" + time-format="A" + @change="Toptiem" + /> + </el-form-item> + + <el-form-item label="仓库"> + <el-select + multiple + v-model="TopQuery.warehouse" + filterable + placeholder="多选仓库搜索" + style="width: 240px" + > + <el-option + v-for="item in warehouseList" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + + <el-form-item label="配送车辆"> + <el-input + v-model="TopQuery.vehicle" + style="width: 240px" + :rows="1" + type="textarea" + placeholder="多个配送车辆请用逗号隔开" + /> + </el-form-item> + <el-form-item label="配送司机"> + <el-input + v-model="TopQuery.vehicle" + style="width: 240px" + :rows="1" + type="textarea" + placeholder="多个配送司机请用逗号隔开" + /> + </el-form-item> + <!-- <el-form-item label="配送类型"> + <el-select multiple v-model="TopQuery.DeliveryType" filterable placeholder="多选仓库搜索" style="width: 240px"> + <el-option + v-for="item in DeliveryTypeList" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> --> + + <!-- <el-form-item label="配送种类"> + <el-select multiple v-model="TopQuery.Deliverygeneric" filterable placeholder="多选仓库搜索" style="width: 240px"> + <el-option + v-for="item in DeliverygenericList" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> --> + </div> <el-form-item class="el-btn"> <el-button type="primary" icon="el-icon-search" @click="searchChange">搜 索</el-button> <el-button icon="el-icon-delete" @click="searchReset()">清 空</el-button> @@ -90,11 +162,36 @@ import { ref, reactive, toRefs, computed, onMounted, nextTick, watch } from 'vue import { columnList } from '@/option/reportforms/DeliveryTrainNumber.js'; import { getDictionaryBiz } from '@/api/system/dict'; //字典 import { processRowProperty, setNodeHeight } from '@/utils/util'; -import { $_getrain, $_exportTrain } from '@/api/reportforms/index.js'; +import { $_getrain, $_exportTrain, $_getMyWarehouseList } from '@/api/reportforms/index.js'; import { ElMessageBox } from 'element-plus'; import { downloadXls } from '@/utils/util'; import functions from '@/utils/functions.js'; +const warehouseList = ref([]); //仓库列表 +const DeliveryTypeList = ref([ + { + label: '商配', + value: '商配', + }, + + { + label: '市配', + value: '市配', + }, +]); //配送类型 +// 配送种类 +const DeliverygenericList = ref([ + { + label: '自主配送', + value: '自主配送', + }, + + { + label: '三方配送', + value: '三方配送', + }, +]); //配送类型 import dayjs from 'dayjs'; +const TopQuery = ref({}); //顶部搜索 const details = reactive({ /** 是否开启搜索 */ search: false, @@ -236,6 +333,7 @@ const btnsc = val => { /** 表格表头下拉框选择 */ const selectsc = (index, row) => { processRowProperty(index, row, details); + getrain(); }; /** 表格表头复选框选择 */ const selectionChange = list => { @@ -244,7 +342,25 @@ const selectionChange = list => { }; // 网页顶部搜索按钮 const searchChange = () => { - details.search = false; //关闭搜索 + // 日期处理 + if (TopQuery.value.time) { + TopQuery.value.ks = dayjs(TopQuery.value.time[0]).format('YYYY-MM-DD'); //开始日期 + TopQuery.value.end = dayjs(TopQuery.value.time[1]).format('YYYY-MM-DD'); //结束日期 + } + // 仓库处理 + if (TopQuery.value.warehouse) { + TopQuery.value.warehouseJoin = TopQuery.value.warehouse.join(','); + } + console.log(TopQuery.value, '顶部搜索触发'); + // details.search = false; //关闭搜索 +}; +const Toptiem = val => { + if (!val) { + delete TopQuery.value.ks; + delete TopQuery.value.end; + } + console.log(val, '顶部时间触发'); + console.log(TopQuery.value, '顶部时间触发'); }; // 每页多少条 const sizeChange = val => { @@ -286,7 +402,28 @@ function updateDictionary(targetArray, dictionaryType) { } // 页面初始化方法 const onLoad = () => { - // updateDictionary(columnList[3].checkarr, 'pc_work_order'); //异常类型 + warehouseList.value = []; + + columnList.find(res => res.label == '配送类型').checkarr = []; + columnList.find(res => res.label == '配送类型').checkarr = DeliveryTypeList.value; + columnList.find(res => res.label == '配送种类').checkarr = []; + columnList.find(res => res.label == '配送种类').checkarr = DeliverygenericList.value; + columnList.find(res => res.label == '仓库').checkarr = []; + columnList.find(res => res.label == '仓库').checkarr = warehouseList.value; + + console.log(columnList, 'columnList'); + // 获取仓库 + + $_getMyWarehouseList().then(res => { + console.log(res, '仓库列表'); + if (res.data.data.length) + res.data.data.forEach(item => { + warehouseList.value.push({ + value: item.name, + label: item.name, + }); + }); + }); }; onLoad(); // 获取数据 @@ -326,12 +463,10 @@ const exportReport = () => { .then(res => { downloadXls(res.data, `配送车次报表数据.xlsx`); }) - .catch(() => { - - }) + .catch(() => {}) .finally(() => { details.loadingObj.list = false; - }) + }); }) .catch(() => {}); }; @@ -362,4 +497,34 @@ const exportReport = () => { display: flex; flex-direction: column; } +:deep(.el-fr-d) { + width: 100%; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + .el_top_left { + width: 100%; + display: flex; + justify-content: space-between; + .el-form-item { + align-items: flex-start; + } + .el-form-item__content { + align-items: flex-start; + height: 100%; + .el-date-editor { + height: 29px !important; + } + } + } +} +:deep(.el-btn) { + margin-right: 0; + display: flex; + width: 100%; + justify-content: flex-end; + .el-form-item__content { + justify-content: flex-end; + } +} </style> diff --git a/src/views/reportforms/Inventory.vue b/src/views/reportforms/Inventory.vue new file mode 100644 index 00000000..bed2f8d6 --- /dev/null +++ b/src/views/reportforms/Inventory.vue @@ -0,0 +1,366 @@ +<template> + <basic-container> + <!-- 首页表格 --> + <div class="avue-crud"> + <!-- 搜索模块 --> + <el-row v-if="search"> + <!-- 查询模块 --> + <el-form :inline="true" :model="query" class="el-fr-d"> + <!-- 查询按钮 --> + <el-form-item class="el-btn"> + <el-button type="primary" icon="el-icon-search" @click="searchChange">搜 索</el-button> + <el-button icon="el-icon-delete" @click="searchReset()">清 空</el-button> + </el-form-item> + </el-form> + </el-row> + + <!-- 控件模块 --> + <el-row> + <div class="avue-crud__header"> + <!-- 头部左侧按钮模块 --> + <div class="avue-crud__left"> + <el-button type="primary" @click="exportReport"> + <el-icon><Download /></el-icon>导出报表</el-button + > + </div> + <!-- 头部右侧按钮模块 --> + <div class="avue-crud__right"> + <el-button icon="el-icon-refresh" @click="searchChangeS" circle></el-button> + <el-button icon="Operation" @click="showdrawer(true)" circle></el-button> + <el-button icon="Search" @click="searchHide" circle></el-button> + </div> + </div> + </el-row> + + <!-- 首页表格 --> + <el-row> + <!-- 列表模块 --> + <tablecmt + class="tableNode" + :columnList="columnList" + :tableData="data" + :loading="loadingObj.list" + @inputTxt="inputsc" + @timeCheck="timesc" + @btnCheck="btnsc" + @selectCheck="selectsc" + @selection="selectionChange" + > + <template #default="slotProps"> + <template v-if="slotProps.scope.column.label === '操作'"> + <div class="ElBtnClass"> + <el-button @click="view(slotProps.scope)">查看</el-button> + </div> + </template> + </template> + </tablecmt> + </el-row> + + <!-- 分页模块 --> + <el-row class="el-fy"> + <div class="avue-crud__pagination flex-c-sb" style="width: 100%"> + <div></div> + <el-pagination + align="right" + background + @size-change="sizeChange" + @current-change="currentChange" + :current-page="page.currentPage" + :page-sizes="[30, 50, 80, 120]" + :page-size="page.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="page.total" + > + </el-pagination> + </div> + </el-row> + </div> + </basic-container> + <!-- 列表配置显示 --> + <edittablehead + @setcolum="setnewcolum" + @closce="showdrawer" + :drawerShow="drawerShow" + :columnList="details.columnList" + ></edittablehead> + </template> + + <script setup> + import { ref, reactive, toRefs, computed, onMounted, nextTick, watch } from 'vue'; + import { columnList } from '@/option/reportforms/Inventory.js'; + import { getDictionaryBiz } from '@/api/system/dict'; //字典 + import { processRowProperty, setNodeHeight } from '@/utils/util'; + import { $_exportInventory ,$_getInventory} from '@/api/reportforms/index.js'; + import { ElMessageBox } from 'element-plus'; + import { downloadXls } from '@/utils/util'; + import functions from '@/utils/functions.js'; + import dayjs from 'dayjs'; + const details = reactive({ + /** 是否开启搜索 */ + search: false, + /** 表格搜索条件 */ + query: {}, + /** 时间快捷选择设置 */ + shortcuts: [ + { + text: '最近一周', + value: () => { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); + return [start, end]; + }, + }, + { + text: '最近一个月', + value: () => { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); + return [start, end]; + }, + }, + { + text: '最近三个月', + value: () => { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); + return [start, end]; + }, + }, + ], + /** 时间选择器数据 */ + stockupDate: [], + /** 列表 */ + columnList, + + /** 列表数据 */ + data: [], + /** 页面loading */ + loadingObj: { + /** 列表加载loading */ + list: false, + packageListLoading: false, + }, + /** 列表复选框选中的数据 */ + selectionList: [], + /** 是否显示设置表格 */ + drawerShow: false, + /** 分页参数 */ + page: { + currentPage: 1, + pageSize: 50, + total: 0, + }, + + /** 弹出层显示 */ + popUpShow: { + /** 包件明细 */ + packageOrderListlVisited: false, + /** 二维码 */ + QRCodeVisible: false, + /** 修改客户信息 */ + editClientInfoVisible: false, + }, + /** 列表Dom节点 */ + listNode: '', + form: {}, + /** 全屏 */ + fullscreenObj: { + /** 包明细 */ + packageOrderListlVisited: false, + }, + }); + + const { + search, + query, + shortcuts, + stockupDate, + data, + loadingObj, + selectionList, + drawerShow, + page, + trickleLoadingPage, + zeroAdditionalRecordingInfo, + popUpShow, + recorddata, + } = toRefs(details); + /** + * 设置列表 -- 固定函数 + * 弹窗的勾选回调,用于更改头部数组 + * 固定搭配,只需要更换 columnList + * */ + const setnewcolum = (newarr, headarr, type) => { + if (type == 1) { + details.columnList = newarr; + functions.setStorage(window.location.pathname + 'checkList', headarr); + } else if (type == 2) { + details.columnList = newarr; + functions.setStorage(window.location.pathname + 'flexList', headarr); + } else if (type == 3) { + details.columnList = newarr; + functions.setStorage(window.location.pathname + 'sortlist', headarr); + } + }; + /** 展开列表控件 */ + const showdrawer = _flag => { + details.drawerShow = _flag; + }; + /** 表格表头输入框搜索 */ + const inputsc = (index, row) => { + details.query[row.prop] = index; + processRowProperty(index, row, details); + getrain(); + }; + + /** 表格表头时间选择 */ + const timesc = (index, row) => { + console.log(index, row); + if (!!index) { + index = dayjs(index).format('YYYY-MM-DD'); + } + details.query[row.prop] = index; + if (!index) { + delete details.query[row.prop]; + } + getrain(); + }; + + /** 表格表头输入框搜索 */ + const btnsc = val => { + console.log(val); + }; + /** 表格表头下拉框选择 */ + const selectsc = (index, row) => { + processRowProperty(index, row, details); + }; + /** 表格表头复选框选择 */ + const selectionChange = list => { + console.log(list); + details.selectionList = list; + }; + // 网页顶部搜索按钮 + const searchChange = () => { + details.search = false; //关闭搜索 + }; + // 每页多少条 + const sizeChange = val => { + details.page.pageSize = val; + getrain(); + }; + /** 页码改变执行的回调 */ + const currentChange = val => { + details.page.currentPage = val; + getrain(); + }; + // 刷新按钮 + const searchChangeS = () => { + details.columnList.forEach(item => { + item.values = ''; + }); + details.search = false; //关闭搜索 + getrain(); + }; + // 顶部搜索 + const searchHide = () => { + console.log(details); + details.search = !details.search; + + const _node = document.querySelector('.tableNode'); + setNodeHeight(_node, '', true); + }; + // 字典公共函数 + function updateDictionary(targetArray, dictionaryType) { + getDictionaryBiz(dictionaryType).then(res => { + console.log(res, '字典'); + res.data.data.forEach(item => { + targetArray.push({ + value: item.dictKey, + label: item.dictValue, + }); + }); + }); + } + // 页面初始化方法 + const onLoad = () => { + // updateDictionary(columnList[3].checkarr, 'pc_work_order'); //异常类型 + }; + onLoad(); + // 获取数据 + const getrain = () => { + let data = { + current: details.page.currentPage, + size: details.page.pageSize, + ...details.query, + }; + details.loadingObj.list = true; + $_getInventory(data) + .then(res => { + console.log(res, '当前参数1'); + details.page.total = res.data.data.total; + details.data = res.data.data.records; + }) + .catch(() => {}) + .finally(() => { + details.loadingObj.list = false; + }); + }; + getrain(); + + // 导出 + const exportReport = () => { + ElMessageBox.confirm('是否导出报表?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + }) + .then(() => { + details.loadingObj.list = true; + let data = { + ...details.query, + }; + $_exportInventory(data) + .then(res => { + downloadXls(res.data, `库存品明细报表数据.xlsx`); + }) + .catch(() => { + + }) + .finally(() => { + details.loadingObj.list = false; + }) + }) + .catch(() => {}); + }; + </script> + + <style scoped lang="scss"> + .ElBtnClass button { + border: none; + padding: 0; + background-color: transparent; + } + :deep(.el-card) { + height: 100%; + } + :deep(.el-card__body) { + height: 100%; + display: flex; + flex-direction: column; + } + .el-fy { + flex: 1; + display: flex; + align-items: flex-end; + margin-bottom: 10px; + } + .avue-crud { + height: 100%; + display: flex; + flex-direction: column; + } + </style> + \ No newline at end of file diff --git a/src/views/reportforms/InventoryOutbound.vue b/src/views/reportforms/InventoryOutbound.vue index c21eee06..01a1f1dd 100644 --- a/src/views/reportforms/InventoryOutbound.vue +++ b/src/views/reportforms/InventoryOutbound.vue @@ -90,7 +90,7 @@ import { columnList } from '@/option/reportforms/InventoryOutbound.js'; import { getDictionaryBiz } from '@/api/system/dict'; //字典 import { processRowProperty, setNodeHeight } from '@/utils/util'; - import { $_getSelfpickup,$_exportSelfpickup ,$_getreport } from '@/api/reportforms/index.js'; + import { $_getreport ,$_exportOutStocks} from '@/api/reportforms/index.js'; import { ElMessageBox } from 'element-plus'; import { downloadXls } from '@/utils/util'; import functions from '@/utils/functions.js'; @@ -312,7 +312,6 @@ // 导出 const exportReport = () => { - return; ElMessageBox.confirm('是否导出报表?', { confirmButtonText: '确定', cancelButtonText: '取消', @@ -323,7 +322,7 @@ let data = { ...details.query, }; - $_exportSelfpickup(data) + $_exportOutStocks(data) .then(res => { downloadXls(res.data, `库存出库明细报表数据.xlsx`); }) diff --git a/src/views/reportforms/InventoryReceipt.vue b/src/views/reportforms/InventoryReceipt.vue new file mode 100644 index 00000000..4e89be1f --- /dev/null +++ b/src/views/reportforms/InventoryReceipt.vue @@ -0,0 +1,366 @@ +<template> + <basic-container> + <!-- 首页表格 --> + <div class="avue-crud"> + <!-- 搜索模块 --> + <el-row v-if="search"> + <!-- 查询模块 --> + <el-form :inline="true" :model="query" class="el-fr-d"> + <!-- 查询按钮 --> + <el-form-item class="el-btn"> + <el-button type="primary" icon="el-icon-search" @click="searchChange">搜 索</el-button> + <el-button icon="el-icon-delete" @click="searchReset()">清 空</el-button> + </el-form-item> + </el-form> + </el-row> + + <!-- 控件模块 --> + <el-row> + <div class="avue-crud__header"> + <!-- 头部左侧按钮模块 --> + <div class="avue-crud__left"> + <el-button type="primary" @click="exportReport"> + <el-icon><Download /></el-icon>导出报表</el-button + > + </div> + <!-- 头部右侧按钮模块 --> + <div class="avue-crud__right"> + <el-button icon="el-icon-refresh" @click="searchChangeS" circle></el-button> + <el-button icon="Operation" @click="showdrawer(true)" circle></el-button> + <el-button icon="Search" @click="searchHide" circle></el-button> + </div> + </div> + </el-row> + + <!-- 首页表格 --> + <el-row> + <!-- 列表模块 --> + <tablecmt + class="tableNode" + :columnList="columnList" + :tableData="data" + :loading="loadingObj.list" + @inputTxt="inputsc" + @timeCheck="timesc" + @btnCheck="btnsc" + @selectCheck="selectsc" + @selection="selectionChange" + > + <template #default="slotProps"> + <template v-if="slotProps.scope.column.label === '操作'"> + <div class="ElBtnClass"> + <el-button @click="view(slotProps.scope)">查看</el-button> + </div> + </template> + </template> + </tablecmt> + </el-row> + + <!-- 分页模块 --> + <el-row class="el-fy"> + <div class="avue-crud__pagination flex-c-sb" style="width: 100%"> + <div></div> + <el-pagination + align="right" + background + @size-change="sizeChange" + @current-change="currentChange" + :current-page="page.currentPage" + :page-sizes="[30, 50, 80, 120]" + :page-size="page.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="page.total" + > + </el-pagination> + </div> + </el-row> + </div> + </basic-container> + <!-- 列表配置显示 --> + <edittablehead + @setcolum="setnewcolum" + @closce="showdrawer" + :drawerShow="drawerShow" + :columnList="details.columnList" + ></edittablehead> + </template> + + <script setup> + import { ref, reactive, toRefs, computed, onMounted, nextTick, watch } from 'vue'; + import { columnList } from '@/option/reportforms/InventoryReceipt.js'; + import { getDictionaryBiz } from '@/api/system/dict'; //字典 + import { processRowProperty, setNodeHeight } from '@/utils/util'; + import { $_exportInStocks ,$_getinStocks} from '@/api/reportforms/index.js'; + import { ElMessageBox } from 'element-plus'; + import { downloadXls } from '@/utils/util'; + import functions from '@/utils/functions.js'; + import dayjs from 'dayjs'; + const details = reactive({ + /** 是否开启搜索 */ + search: false, + /** 表格搜索条件 */ + query: {}, + /** 时间快捷选择设置 */ + shortcuts: [ + { + text: '最近一周', + value: () => { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); + return [start, end]; + }, + }, + { + text: '最近一个月', + value: () => { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); + return [start, end]; + }, + }, + { + text: '最近三个月', + value: () => { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); + return [start, end]; + }, + }, + ], + /** 时间选择器数据 */ + stockupDate: [], + /** 列表 */ + columnList, + + /** 列表数据 */ + data: [], + /** 页面loading */ + loadingObj: { + /** 列表加载loading */ + list: false, + packageListLoading: false, + }, + /** 列表复选框选中的数据 */ + selectionList: [], + /** 是否显示设置表格 */ + drawerShow: false, + /** 分页参数 */ + page: { + currentPage: 1, + pageSize: 50, + total: 0, + }, + + /** 弹出层显示 */ + popUpShow: { + /** 包件明细 */ + packageOrderListlVisited: false, + /** 二维码 */ + QRCodeVisible: false, + /** 修改客户信息 */ + editClientInfoVisible: false, + }, + /** 列表Dom节点 */ + listNode: '', + form: {}, + /** 全屏 */ + fullscreenObj: { + /** 包明细 */ + packageOrderListlVisited: false, + }, + }); + + const { + search, + query, + shortcuts, + stockupDate, + data, + loadingObj, + selectionList, + drawerShow, + page, + trickleLoadingPage, + zeroAdditionalRecordingInfo, + popUpShow, + recorddata, + } = toRefs(details); + /** + * 设置列表 -- 固定函数 + * 弹窗的勾选回调,用于更改头部数组 + * 固定搭配,只需要更换 columnList + * */ + const setnewcolum = (newarr, headarr, type) => { + if (type == 1) { + details.columnList = newarr; + functions.setStorage(window.location.pathname + 'checkList', headarr); + } else if (type == 2) { + details.columnList = newarr; + functions.setStorage(window.location.pathname + 'flexList', headarr); + } else if (type == 3) { + details.columnList = newarr; + functions.setStorage(window.location.pathname + 'sortlist', headarr); + } + }; + /** 展开列表控件 */ + const showdrawer = _flag => { + details.drawerShow = _flag; + }; + /** 表格表头输入框搜索 */ + const inputsc = (index, row) => { + details.query[row.prop] = index; + processRowProperty(index, row, details); + getrain(); + }; + + /** 表格表头时间选择 */ + const timesc = (index, row) => { + console.log(index, row); + if (!!index) { + index = dayjs(index).format('YYYY-MM-DD'); + } + details.query[row.prop] = index; + if (!index) { + delete details.query[row.prop]; + } + getrain(); + }; + + /** 表格表头输入框搜索 */ + const btnsc = val => { + console.log(val); + }; + /** 表格表头下拉框选择 */ + const selectsc = (index, row) => { + processRowProperty(index, row, details); + }; + /** 表格表头复选框选择 */ + const selectionChange = list => { + console.log(list); + details.selectionList = list; + }; + // 网页顶部搜索按钮 + const searchChange = () => { + details.search = false; //关闭搜索 + }; + // 每页多少条 + const sizeChange = val => { + details.page.pageSize = val; + getrain(); + }; + /** 页码改变执行的回调 */ + const currentChange = val => { + details.page.currentPage = val; + getrain(); + }; + // 刷新按钮 + const searchChangeS = () => { + details.columnList.forEach(item => { + item.values = ''; + }); + details.search = false; //关闭搜索 + getrain(); + }; + // 顶部搜索 + const searchHide = () => { + console.log(details); + details.search = !details.search; + + const _node = document.querySelector('.tableNode'); + setNodeHeight(_node, '', true); + }; + // 字典公共函数 + function updateDictionary(targetArray, dictionaryType) { + getDictionaryBiz(dictionaryType).then(res => { + console.log(res, '字典'); + res.data.data.forEach(item => { + targetArray.push({ + value: item.dictKey, + label: item.dictValue, + }); + }); + }); + } + // 页面初始化方法 + const onLoad = () => { + // updateDictionary(columnList[3].checkarr, 'pc_work_order'); //异常类型 + }; + onLoad(); + // 获取数据 + const getrain = () => { + let data = { + current: details.page.currentPage, + size: details.page.pageSize, + ...details.query, + }; + details.loadingObj.list = true; + $_getinStocks(data) + .then(res => { + console.log(res, '当前参数1'); + details.page.total = res.data.data.total; + details.data = res.data.data.records; + }) + .catch(() => {}) + .finally(() => { + details.loadingObj.list = false; + }); + }; + getrain(); + + // 导出 + const exportReport = () => { + ElMessageBox.confirm('是否导出报表?', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + }) + .then(() => { + details.loadingObj.list = true; + let data = { + ...details.query, + }; + $_exportInStocks(data) + .then(res => { + downloadXls(res.data, `库存入库明细报表数据.xlsx`); + }) + .catch(() => { + + }) + .finally(() => { + details.loadingObj.list = false; + }) + }) + .catch(() => {}); + }; + </script> + + <style scoped lang="scss"> + .ElBtnClass button { + border: none; + padding: 0; + background-color: transparent; + } + :deep(.el-card) { + height: 100%; + } + :deep(.el-card__body) { + height: 100%; + display: flex; + flex-direction: column; + } + .el-fy { + flex: 1; + display: flex; + align-items: flex-end; + margin-bottom: 10px; + } + .avue-crud { + height: 100%; + display: flex; + flex-direction: column; + } + </style> + \ No newline at end of file