|
@@ -1,12 +1,12 @@
|
|
|
<script setup lang="ts">
|
|
|
import {
|
|
|
- Storehouse_Stock_List,
|
|
|
- Storehouse_Depot_List,
|
|
|
- Storehouse_ProductClass_List,
|
|
|
- Storehouse_Product_Model_List,
|
|
|
- Storehouse_Product_Name_List,
|
|
|
- Storehouse_Stock_Detail_List,
|
|
|
- Storehouse_Stock_Detail_Excel
|
|
|
+ Storehouse_Stock_List,
|
|
|
+ Storehouse_Depot_List,
|
|
|
+ Storehouse_ProductClass_List,
|
|
|
+ Storehouse_Product_Model_List,
|
|
|
+ Storehouse_Product_Name_List,
|
|
|
+ Storehouse_Stock_Detail_List,
|
|
|
+ Storehouse_Stock_Detail_Excel
|
|
|
} from '@/api/storehouse/index'
|
|
|
import { ref, reactive, onMounted } from 'vue'
|
|
|
import { List } from '@element-plus/icons-vue'
|
|
@@ -19,8 +19,8 @@ import ImageCom from '@/components/Image/index.vue'
|
|
|
import { useTablePublic } from '@/hooks/useTablePublic'
|
|
|
|
|
|
const userInfo = ref({
|
|
|
- Id: '',
|
|
|
- T_name: ''
|
|
|
+ Id: '',
|
|
|
+ T_name: ''
|
|
|
})
|
|
|
const loading = ref(false)
|
|
|
const globalStore = GlobalStore()
|
|
@@ -31,52 +31,52 @@ const { tableRowClassName } = useTablePublic()
|
|
|
const tableRowClassNameHandle = (data: any): any => tableRowClassName(data.row.Id, userInfo.value.Id)
|
|
|
|
|
|
const initParam = reactive({
|
|
|
- User_tokey: globalStore.GET_User_tokey,
|
|
|
- T_depot_id: '',
|
|
|
- T_product_class: '',
|
|
|
- T_product_name: '',
|
|
|
- T_product_model: ''
|
|
|
+ User_tokey: globalStore.GET_User_tokey,
|
|
|
+ T_depot_id: '',
|
|
|
+ T_product_class: '',
|
|
|
+ T_product_name: '',
|
|
|
+ T_product_model: ''
|
|
|
})
|
|
|
const detailInitParam = reactive({
|
|
|
- T_depot_id: '',
|
|
|
- T_product_id: '',
|
|
|
- T_start_date: '',
|
|
|
- T_end_date: ''
|
|
|
+ T_depot_id: '',
|
|
|
+ T_product_id: '',
|
|
|
+ T_start_date: '',
|
|
|
+ T_end_date: ''
|
|
|
})
|
|
|
const columns: ColumnProps[] = [
|
|
|
- { type: 'index', label: '序号', width: 80 },
|
|
|
- { prop: 'T_depot_name', label: '仓库名称' },
|
|
|
- { prop: 'T_product_img', label: '产品图片', name: 'T_product_img' },
|
|
|
- { prop: 'T_product_name', label: '产品名称' },
|
|
|
- { prop: 'T_product_class_name', label: '产品分类' },
|
|
|
- { prop: 'T_product_model', label: '产品型号', ellipsis: true },
|
|
|
- { prop: 'T_product_spec', label: '产品规格' },
|
|
|
- { prop: 'T_total', label: '库存数量' },
|
|
|
- { prop: 'operation', label: '操作', width: 80, fixed: 'right' }
|
|
|
+ { type: 'index', label: '序号', width: 80 },
|
|
|
+ { prop: 'T_depot_name', label: '仓库名称' },
|
|
|
+ { prop: 'T_product_img', label: '产品图片', name: 'T_product_img' },
|
|
|
+ { prop: 'T_product_name', label: '产品名称' },
|
|
|
+ { prop: 'T_product_class_name', label: '产品分类' },
|
|
|
+ { prop: 'T_product_model', label: '产品型号', ellipsis: true },
|
|
|
+ { prop: 'T_product_spec', label: '产品规格' },
|
|
|
+ { prop: 'T_total', label: '库存数量' },
|
|
|
+ { prop: 'operation', label: '操作', width: 80, fixed: 'right' }
|
|
|
]
|
|
|
|
|
|
const detailColumns: ColumnProps[] = [
|
|
|
- { type: 'index', label: '序号', width: 80 },
|
|
|
- { prop: 'T_product_name', label: '产品名称' },
|
|
|
- { prop: 'T_product_model', label: '产品型号', ellipsis: true },
|
|
|
- { prop: 'T_product_spec', label: '产品规格' },
|
|
|
- { prop: 'T_month', label: '月份' },
|
|
|
- { prop: 'T_beginning', label: '期初库存' },
|
|
|
- { prop: 'T_in', label: '入库' },
|
|
|
- { prop: 'T_out', label: '出库' },
|
|
|
- { prop: 'T_ending', label: '期末库存' }
|
|
|
+ { type: 'index', label: '序号', width: 80 },
|
|
|
+ { prop: 'T_product_name', label: '产品名称' },
|
|
|
+ { prop: 'T_product_model', label: '产品型号', ellipsis: true },
|
|
|
+ { prop: 'T_product_spec', label: '产品规格' },
|
|
|
+ { prop: 'T_month', label: '月份' },
|
|
|
+ { prop: 'T_beginning', label: '期初库存' },
|
|
|
+ { prop: 'T_in', label: '入库' },
|
|
|
+ { prop: 'T_out', label: '出库' },
|
|
|
+ { prop: 'T_ending', label: '期末库存' }
|
|
|
]
|
|
|
|
|
|
const searchHandle = () => {
|
|
|
- TableRef.value?.searchTable()
|
|
|
+ TableRef.value?.searchTable()
|
|
|
}
|
|
|
const dataCallback = (res: any) => {
|
|
|
- return res.Data.Data.map((item: any) => {
|
|
|
- if (item.T_depot_id === userInfo.value.Id) {
|
|
|
- item.T_depot_name = userInfo.value.T_name
|
|
|
- }
|
|
|
- return item
|
|
|
- })
|
|
|
+ return res.Data.Data.map((item: any) => {
|
|
|
+ if (item.T_depot_id === userInfo.value.Id) {
|
|
|
+ item.T_depot_name = userInfo.value.T_name
|
|
|
+ }
|
|
|
+ return item
|
|
|
+ })
|
|
|
}
|
|
|
const detailDataCallback = (res: any) => res.Data
|
|
|
/**
|
|
@@ -88,315 +88,283 @@ const T_date_export = ref<string[]>([])
|
|
|
const visible = ref(false)
|
|
|
const exportExcel = () => (visible.value = true)
|
|
|
const confirmExpor = async (project_id?: string) => {
|
|
|
- const params = {
|
|
|
- User_tokey: globalStore.GET_User_tokey,
|
|
|
- T_depot_id: initParam.T_depot_id,
|
|
|
- T_start_date: T_date.value[0],
|
|
|
- T_end_date: T_date.value[1],
|
|
|
- T_product_id: ''
|
|
|
- }
|
|
|
- if (typeof project_id === 'number') {
|
|
|
- params['T_product_id'] = project_id
|
|
|
- }
|
|
|
- const res: any = await Storehouse_Stock_Detail_Excel(params)
|
|
|
- if (res.Code === 200) {
|
|
|
- window.open(res.Data)
|
|
|
- }
|
|
|
+ const params = {
|
|
|
+ User_tokey: globalStore.GET_User_tokey,
|
|
|
+ T_depot_id: initParam.T_depot_id,
|
|
|
+ T_start_date: T_date.value[0],
|
|
|
+ T_end_date: T_date.value[1],
|
|
|
+ T_product_id: ''
|
|
|
+ }
|
|
|
+ if (typeof project_id === 'number') {
|
|
|
+ params['T_product_id'] = project_id
|
|
|
+ }
|
|
|
+ const res: any = await Storehouse_Stock_Detail_Excel(params)
|
|
|
+ if (res.Code === 200) {
|
|
|
+ window.open(res.Data)
|
|
|
+ }
|
|
|
}
|
|
|
const NameOptions = ref<any[]>([])
|
|
|
const classOptions = ref<any[]>([])
|
|
|
const modelOptions = ref<any[]>([])
|
|
|
// 获取产品分类
|
|
|
const getProductClassList = async () => {
|
|
|
- const res: any = await Storehouse_ProductClass_List({ page: 1, page_z: 999 })
|
|
|
- classOptions.value = res.Data.Data
|
|
|
+ const res: any = await Storehouse_ProductClass_List({ page: 1, page_z: 999 })
|
|
|
+ classOptions.value = res.Data.Data
|
|
|
}
|
|
|
/**
|
|
|
* 模糊搜索名称
|
|
|
* @param str 名称字符串
|
|
|
*/
|
|
|
const getNameAsync = async (str: string): Promise<any> => {
|
|
|
- const res: any = await Storehouse_Product_Name_List({ T_name: str, T_class: initParam.T_product_class })
|
|
|
- if (!res.Data) return
|
|
|
- return res.Data.map((item: any, index: number) => {
|
|
|
- return {
|
|
|
- value: item,
|
|
|
- index: index
|
|
|
- }
|
|
|
- })
|
|
|
+ const res: any = await Storehouse_Product_Name_List({ T_name: str, T_class: initParam.T_product_class })
|
|
|
+ if (!res.Data) return
|
|
|
+ return res.Data.map((item: any, index: number) => {
|
|
|
+ return {
|
|
|
+ value: item,
|
|
|
+ index: index
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
/**
|
|
|
* 模糊搜索名称
|
|
|
* @param queryString 输入框的输入字符
|
|
|
*/
|
|
|
const querySearchAsync = async (queryString: string) => {
|
|
|
- if (queryString) {
|
|
|
- loading.value = true
|
|
|
- globalStore.SET_isloading(true)
|
|
|
- const results = await getNameAsync(queryString)
|
|
|
- NameOptions.value = results
|
|
|
- globalStore.SET_isloading(false)
|
|
|
- loading.value = false
|
|
|
- }
|
|
|
+ if (queryString) {
|
|
|
+ loading.value = true
|
|
|
+ globalStore.SET_isloading(true)
|
|
|
+ const results = await getNameAsync(queryString)
|
|
|
+ NameOptions.value = results
|
|
|
+ globalStore.SET_isloading(false)
|
|
|
+ loading.value = false
|
|
|
+ }
|
|
|
}
|
|
|
/**
|
|
|
* 异步获取产品型号
|
|
|
*/
|
|
|
const getProductModelList = async () => {
|
|
|
- globalStore.SET_isloading(true)
|
|
|
- const res: any = await Storehouse_Product_Model_List({ T_name: initParam.T_product_name })
|
|
|
- modelOptions.value = res.Data.map((item: any, index: number) => {
|
|
|
- return {
|
|
|
- value: item,
|
|
|
- index: index
|
|
|
- }
|
|
|
- })
|
|
|
- globalStore.SET_isloading(false)
|
|
|
+ globalStore.SET_isloading(true)
|
|
|
+ const res: any = await Storehouse_Product_Model_List({ T_name: initParam.T_product_name })
|
|
|
+ modelOptions.value = res.Data.map((item: any, index: number) => {
|
|
|
+ return {
|
|
|
+ value: item,
|
|
|
+ index: index
|
|
|
+ }
|
|
|
+ })
|
|
|
+ globalStore.SET_isloading(false)
|
|
|
}
|
|
|
const handleSelect = (item: any) => {
|
|
|
- initParam.T_product_name = item.value
|
|
|
- getProductModelList()
|
|
|
+ initParam.T_product_name = item.value
|
|
|
+ getProductModelList()
|
|
|
}
|
|
|
|
|
|
// 明细
|
|
|
const callbackDrawer = (done: () => void) => done()
|
|
|
const previewDetail = (id: string) => {
|
|
|
- DrawerRef.value?.openDrawer()
|
|
|
- T_date_detail.value = [...T_date.value]
|
|
|
- if (detailInitParam.T_product_id === id) return
|
|
|
- detailInitParam.T_depot_id = initParam.T_depot_id
|
|
|
- detailInitParam.T_product_id = id
|
|
|
- detailInitParam.T_start_date = T_date.value[0]
|
|
|
- detailInitParam.T_end_date = T_date.value[1]
|
|
|
- TableDetailRef.value?.searchTable()
|
|
|
+ DrawerRef.value?.openDrawer()
|
|
|
+ T_date_detail.value = [...T_date.value]
|
|
|
+ if (detailInitParam.T_product_id === id) return
|
|
|
+ detailInitParam.T_depot_id = initParam.T_depot_id
|
|
|
+ detailInitParam.T_product_id = id
|
|
|
+ detailInitParam.T_start_date = T_date.value[0]
|
|
|
+ detailInitParam.T_end_date = T_date.value[1]
|
|
|
+ TableDetailRef.value?.searchTable()
|
|
|
}
|
|
|
const dateDetailChange = (str: string[]) => {
|
|
|
- if (!str) return
|
|
|
- detailInitParam.T_start_date = str[0]
|
|
|
- detailInitParam.T_end_date = str[1]
|
|
|
- TableDetailRef.value?.searchTable()
|
|
|
+ if (!str) return
|
|
|
+ detailInitParam.T_start_date = str[0]
|
|
|
+ detailInitParam.T_end_date = str[1]
|
|
|
+ TableDetailRef.value?.searchTable()
|
|
|
}
|
|
|
onMounted(() => {
|
|
|
- getProductClassList()
|
|
|
+ getProductClassList()
|
|
|
|
|
|
- T_date.value = [dayJs().startOf('year').format('YYYY-MM-DD'), dayJs().format('YYYY-MM-DD')]
|
|
|
- T_date_export.value = [...T_date.value]
|
|
|
+ T_date.value = [dayJs().startOf('year').format('YYYY-MM-DD'), dayJs().format('YYYY-MM-DD')]
|
|
|
+ T_date_export.value = [...T_date.value]
|
|
|
})
|
|
|
|
|
|
const getSalaryParams = (row: any) => {
|
|
|
- userInfo.value.Id = ''
|
|
|
- setTimeout(() => {
|
|
|
- userInfo.value = { ...row }
|
|
|
- initParam.T_depot_id = userInfo.value.Id
|
|
|
- }, 100)
|
|
|
+ userInfo.value.Id = ''
|
|
|
+ setTimeout(() => {
|
|
|
+ userInfo.value = { ...row }
|
|
|
+ initParam.T_depot_id = userInfo.value.Id
|
|
|
+ }, 100)
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
- <div class="inventory-statistics">
|
|
|
- <div style="width: 290px" class="inventory-table">
|
|
|
- <TableBase
|
|
|
- ref="TableRef"
|
|
|
- :columns="[{ prop: 'T_name', label: '仓库名称' }]"
|
|
|
- :requestApi="Storehouse_Depot_List"
|
|
|
- :initParam="{ User_tokey: globalStore.GET_User_tokey }"
|
|
|
- layout="prev, pager, next"
|
|
|
- :rowClick="getSalaryParams"
|
|
|
- :tableRowClassName="tableRowClassNameHandle"
|
|
|
- >
|
|
|
- <template #table-header>
|
|
|
- <h3 class="title">仓库列表</h3>
|
|
|
- </template>
|
|
|
- </TableBase>
|
|
|
- </div>
|
|
|
- <transition
|
|
|
- leave-active-class="animate__animated animate__fadeOutRight"
|
|
|
- enter-active-class="animate__animated animate__fadeInLeft"
|
|
|
- >
|
|
|
- <div class="project-container" v-if="userInfo.Id">
|
|
|
- <TableBase
|
|
|
- ref="TableRef"
|
|
|
- :columns="columns"
|
|
|
- :requestApi="Storehouse_Stock_List"
|
|
|
- :initParam="initParam"
|
|
|
- :dataCallback="dataCallback"
|
|
|
- >
|
|
|
- <template #table-header>
|
|
|
- <div class="head-search active">
|
|
|
- <el-form :model="initParam" class="result-form" label-width="100px">
|
|
|
- <el-row>
|
|
|
- <el-col :span="12"
|
|
|
- ><el-form-item label="产品分类" :inline-message="true">
|
|
|
- <el-select v-model="initParam.T_product_class" clearable placeholder="请选择分类~" class="w-50">
|
|
|
- <el-option v-for="item in classOptions" :key="item.Id" :label="item.T_name" :value="item.Id" />
|
|
|
- </el-select> </el-form-item
|
|
|
- ></el-col>
|
|
|
- <el-col :span="12"
|
|
|
- ><el-form-item label="产品名称">
|
|
|
- <el-select
|
|
|
- v-model="initParam.T_product_name"
|
|
|
- filterable
|
|
|
- clearable
|
|
|
- remote
|
|
|
- reserve-keyword
|
|
|
- placeholder="按产品名称搜索"
|
|
|
- remote-show-suffix
|
|
|
- :remote-method="querySearchAsync"
|
|
|
- :loading="loading"
|
|
|
- @change="handleSelect"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in NameOptions"
|
|
|
- :key="item.value"
|
|
|
- :label="item.value"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select> </el-form-item
|
|
|
- ></el-col>
|
|
|
- </el-row>
|
|
|
- <el-row class="search-bottom">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="产品型号">
|
|
|
- <el-select v-model="initParam.T_product_model" clearable placeholder="请选择型号~" class="w-50">
|
|
|
- <el-option
|
|
|
- v-for="item in modelOptions"
|
|
|
- :key="item.index"
|
|
|
- :label="item.value"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6" :offset="6">
|
|
|
- <el-button type="primary" @click="searchHandle">搜索</el-button>
|
|
|
- <el-popover :visible="visible" placement="bottom" :width="400" trigger="click">
|
|
|
- <template #reference>
|
|
|
- <el-button type="success" @click="exportExcel">导出</el-button>
|
|
|
- </template>
|
|
|
- <el-date-picker
|
|
|
- v-model="T_date_export"
|
|
|
- type="daterange"
|
|
|
- range-separator="~"
|
|
|
- start-placeholder="开始时间"
|
|
|
- end-placeholder="结束时间"
|
|
|
- format="YYYY-MM-DD"
|
|
|
- value-format="YYYY-MM-DD"
|
|
|
- />
|
|
|
- <div class="export-popover">
|
|
|
- <el-button size="small" @click="visible = false">取消</el-button>
|
|
|
- <el-button size="small" type="primary" @click="confirmExpor">确认</el-button>
|
|
|
- </div>
|
|
|
- </el-popover>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form>
|
|
|
+ <div class="inventory-statistics">
|
|
|
+ <div style="width: 290px" class="inventory-table">
|
|
|
+ <TableBase ref="TableRef" :columns="[{ prop: 'T_name', label: '仓库名称' }]" :requestApi="Storehouse_Depot_List"
|
|
|
+ :initParam="{ User_tokey: globalStore.GET_User_tokey }" layout="prev, pager, next"
|
|
|
+ :rowClick="getSalaryParams" :tableRowClassName="tableRowClassNameHandle">
|
|
|
+ <template #table-header>
|
|
|
+ <h3 class="title">仓库列表</h3>
|
|
|
+ </template>
|
|
|
+ </TableBase>
|
|
|
+ </div>
|
|
|
+ <transition leave-active-class="animate__animated animate__fadeOutRight"
|
|
|
+ enter-active-class="animate__animated animate__fadeInLeft">
|
|
|
+ <div class="project-container" v-if="userInfo.Id">
|
|
|
+ <TableBase ref="TableRef" :columns="columns" :requestApi="Storehouse_Stock_List" :initParam="initParam"
|
|
|
+ :dataCallback="dataCallback">
|
|
|
+ <template #table-header>
|
|
|
+ <div class="head-search active">
|
|
|
+ <el-form :model="initParam" class="result-form" label-width="100px">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12"><el-form-item label="产品分类" :inline-message="true">
|
|
|
+ <el-select v-model="initParam.T_product_class" clearable
|
|
|
+ placeholder="请选择分类~" class="w-50">
|
|
|
+ <el-option v-for="item in classOptions" :key="item.Id"
|
|
|
+ :label="item.T_name" :value="item.Id" />
|
|
|
+ </el-select> </el-form-item></el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="产品名称">
|
|
|
+ <el-input v-model="initParam.T_product_name" placeholder="请输入产品名称" />
|
|
|
+ <!-- <el-select v-model="initParam.T_product_name" filterable clearable remote
|
|
|
+ reserve-keyword placeholder="按产品名称搜索" remote-show-suffix
|
|
|
+ :remote-method="querySearchAsync" :loading="loading"
|
|
|
+ @change="handleSelect">
|
|
|
+ <el-option v-for="item in NameOptions" :key="item.value"
|
|
|
+ :label="item.value" :value="item.value" />
|
|
|
+ </el-select> -->
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="search-bottom">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="产品型号">
|
|
|
+ <el-input v-model="initParam.T_product_model" placeholder="请输入产品型号" />
|
|
|
+ <!-- <el-select v-model="initParam.T_product_model" clearable
|
|
|
+ placeholder="请选择型号~" class="w-50">
|
|
|
+ <el-option v-for="item in modelOptions" :key="item.index"
|
|
|
+ :label="item.value" :value="item.value" />
|
|
|
+ </el-select> -->
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6" :offset="6">
|
|
|
+ <el-button type="primary" @click="searchHandle">搜索</el-button>
|
|
|
+ <el-popover :visible="visible" placement="bottom" :width="400" trigger="click">
|
|
|
+ <template #reference>
|
|
|
+ <el-button type="success" @click="exportExcel">导出</el-button>
|
|
|
+ </template>
|
|
|
+ <el-date-picker v-model="T_date_export" type="daterange" range-separator="~"
|
|
|
+ start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD"
|
|
|
+ value-format="YYYY-MM-DD" />
|
|
|
+ <div class="export-popover">
|
|
|
+ <el-button size="small" @click="visible = false">取消</el-button>
|
|
|
+ <el-button size="small" type="primary"
|
|
|
+ @click="confirmExpor">确认</el-button>
|
|
|
+ </div>
|
|
|
+ </el-popover>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template #T_product_img="{ row }">
|
|
|
+ <ImageCom :src="row.T_product_img" />
|
|
|
+ </template>
|
|
|
+ <template #right="{ row }">
|
|
|
+ <el-button link type="primary" size="small" :icon="List"
|
|
|
+ @click="previewDetail(row.T_product_id)">明细</el-button>
|
|
|
+ </template>
|
|
|
+ </TableBase>
|
|
|
</div>
|
|
|
- </template>
|
|
|
- <template #T_product_img="{ row }">
|
|
|
- <ImageCom :src="row.T_product_img" />
|
|
|
- </template>
|
|
|
- <template #right="{ row }">
|
|
|
- <el-button link type="primary" size="small" :icon="List" @click="previewDetail(row.T_product_id)"
|
|
|
- >明细</el-button
|
|
|
- >
|
|
|
- </template>
|
|
|
- </TableBase>
|
|
|
- </div>
|
|
|
- </transition>
|
|
|
+ </transition>
|
|
|
|
|
|
- <Drawer ref="DrawerRef" :handleClose="callbackDrawer" size="80%">
|
|
|
- <template #header="{ params }">
|
|
|
- <h4 :id="params.titleId" :class="params.titleClass">库存明细</h4>
|
|
|
- </template>
|
|
|
- <TableBase
|
|
|
- border
|
|
|
- ref="TableDetailRef"
|
|
|
- :pagination="false"
|
|
|
- :columns="detailColumns"
|
|
|
- :requestApi="Storehouse_Stock_Detail_List"
|
|
|
- :initParam="detailInitParam"
|
|
|
- :dataCallback="detailDataCallback"
|
|
|
- >
|
|
|
- <template #table-header>
|
|
|
- <el-row class="head-search">
|
|
|
- <el-col :span="12"
|
|
|
- ><el-form-item label="日期范围">
|
|
|
- <el-date-picker
|
|
|
- v-model="T_date_detail"
|
|
|
- type="daterange"
|
|
|
- range-separator="~"
|
|
|
- start-placeholder="开始时间"
|
|
|
- end-placeholder="结束时间"
|
|
|
- format="YYYY-MM-DD"
|
|
|
- value-format="YYYY-MM-DD"
|
|
|
- @change="dateDetailChange" /></el-form-item
|
|
|
- ></el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-button type="success" @click="confirmExpor(detailInitParam.T_product_id)">导出</el-button>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </template>
|
|
|
- </TableBase>
|
|
|
- </Drawer>
|
|
|
- </div>
|
|
|
+ <Drawer ref="DrawerRef" :handleClose="callbackDrawer" size="80%">
|
|
|
+ <template #header="{ params }">
|
|
|
+ <h4 :id="params.titleId" :class="params.titleClass">库存明细</h4>
|
|
|
+ </template>
|
|
|
+ <TableBase border ref="TableDetailRef" :pagination="false" :columns="detailColumns"
|
|
|
+ :requestApi="Storehouse_Stock_Detail_List" :initParam="detailInitParam"
|
|
|
+ :dataCallback="detailDataCallback">
|
|
|
+ <template #table-header>
|
|
|
+ <el-row class="head-search">
|
|
|
+ <el-col :span="12"><el-form-item label="日期范围">
|
|
|
+ <el-date-picker v-model="T_date_detail" type="daterange" range-separator="~"
|
|
|
+ start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD"
|
|
|
+ value-format="YYYY-MM-DD" @change="dateDetailChange" /></el-form-item></el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-button type="success" @click="confirmExpor(detailInitParam.T_product_id)">导出</el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </template>
|
|
|
+ </TableBase>
|
|
|
+ </Drawer>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
@import '@/styles/var.scss';
|
|
|
+
|
|
|
.export-popover {
|
|
|
- padding: 5px;
|
|
|
- display: flex;
|
|
|
- justify-content: center;
|
|
|
+ padding: 5px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
}
|
|
|
+
|
|
|
:deep(.drawer__content) {
|
|
|
- @include f-direction;
|
|
|
+ @include f-direction;
|
|
|
}
|
|
|
+
|
|
|
:deep(.el-drawer__header) {
|
|
|
- margin-bottom: 0;
|
|
|
+ margin-bottom: 0;
|
|
|
}
|
|
|
+
|
|
|
.inventory-statistics {
|
|
|
- height: 100%;
|
|
|
- display: flex;
|
|
|
- overflow: hidden;
|
|
|
- .title {
|
|
|
- width: 100%;
|
|
|
- text-align: center;
|
|
|
- line-height: 1.7em;
|
|
|
- font-size: 20px;
|
|
|
- color: #707b84;
|
|
|
- }
|
|
|
- :deep(.table-header),
|
|
|
- :deep(.card) {
|
|
|
- margin: 0;
|
|
|
- border-radius: 8px;
|
|
|
- }
|
|
|
- .inventory-table {
|
|
|
- @include f-direction;
|
|
|
- z-index: 1;
|
|
|
- }
|
|
|
- .project-container {
|
|
|
- @include f-direction;
|
|
|
- z-index: 0;
|
|
|
- margin-left: 12px;
|
|
|
- width: calc(100% - 290px);
|
|
|
- }
|
|
|
- .head-search {
|
|
|
- width: 100%;
|
|
|
- height: 33px;
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
overflow: hidden;
|
|
|
- transition: all 0.5s ease-in-out;
|
|
|
- .result-form.el-form .el-form-item {
|
|
|
- margin-bottom: 0 !important;
|
|
|
+
|
|
|
+ .title {
|
|
|
+ width: 100%;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 1.7em;
|
|
|
+ font-size: 20px;
|
|
|
+ color: #707b84;
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.table-header),
|
|
|
+ :deep(.card) {
|
|
|
+ margin: 0;
|
|
|
+ border-radius: 8px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .inventory-table {
|
|
|
+ @include f-direction;
|
|
|
+ z-index: 1;
|
|
|
}
|
|
|
- .search-bottom {
|
|
|
- margin-top: 18px;
|
|
|
+
|
|
|
+ .project-container {
|
|
|
+ @include f-direction;
|
|
|
+ z-index: 0;
|
|
|
+ margin-left: 12px;
|
|
|
+ width: calc(100% - 290px);
|
|
|
+ }
|
|
|
+
|
|
|
+ .head-search {
|
|
|
+ width: 100%;
|
|
|
+ height: 33px;
|
|
|
+ overflow: hidden;
|
|
|
+ transition: all 0.5s ease-in-out;
|
|
|
+
|
|
|
+ .result-form.el-form .el-form-item {
|
|
|
+ margin-bottom: 0 !important;
|
|
|
+ }
|
|
|
+
|
|
|
+ .search-bottom {
|
|
|
+ margin-top: 18px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .head-search.active {
|
|
|
+ height: 85px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .w-50 {
|
|
|
+ flex: 0 0 50%;
|
|
|
}
|
|
|
- }
|
|
|
- .head-search.active {
|
|
|
- height: 85px;
|
|
|
- }
|
|
|
- .w-50 {
|
|
|
- flex: 0 0 50%;
|
|
|
- }
|
|
|
}
|
|
|
</style>
|