| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686 |
- <template>
- <div id="stockManagement_index">
- <el-card shadow="never">
- <el-form :model="formData" ref="formName" label-width="80px">
- <el-row :gutter="10">
- <el-col :span="6">
- <el-form-item label="入库时间" prop="time">
- <el-date-picker
- class="w100"
- size="small"
- v-model="formData.time"
- type="daterange"
- range-separator="至"
- start-placeholder="开始日期"
- end-placeholder="结束日期"
- value-format="yyyy-MM-dd"
- ></el-date-picker> </el-form-item
- ></el-col>
- <el-col :span="6">
- <el-form-item label="入库单号" prop="sourceBizNo">
- <el-input
- size="small"
- class="w100"
- placeholder="请输入"
- v-model="formData.sourceBizNo"
- ></el-input> </el-form-item
- ></el-col>
- <el-col :span="6">
- <el-form-item label="入库类型" prop="bizType">
- <el-select
- style="width: 100%"
- filterable
- placeholder="请选择"
- v-model="formData.bizType"
- clearable
- >
- <el-option
- v-for="item in sceneState"
- :key="item.code"
- :value="item.code + ''"
- :label="item.label"
- ></el-option>
- </el-select> </el-form-item
- ></el-col>
- <el-col :span="6">
- <el-form-item label="物品编码" prop="categoryCode">
- <el-input
- size="small"
- class="w100"
- placeholder="请输入"
- v-model="formData.categoryCode"
- ></el-input> </el-form-item
- ></el-col>
- <el-col :span="6">
- <el-form-item label="物品名称" prop="categoryName">
- <el-input
- size="small"
- class="w100"
- placeholder="请输入"
- v-model="formData.categoryName"
- ></el-input> </el-form-item
- ></el-col>
- <el-col :span="6">
- <el-form-item label="状态" prop="status">
- <el-select
- filterable
- size="small"
- class="w100"
- v-model="formData.status"
- placeholder="请选择"
- clearable
- >
- <el-option
- v-for="item in auditStatus"
- :key="item.code"
- :value="item.code"
- :label="item.label"
- ></el-option>
- </el-select> </el-form-item
- ></el-col>
- <!-- <el-col :span="6">
- <el-form-item label="组织机构:" prop="deptIds">
- <auth-selection
- v-model="formData.deptIds"
- style="width: 100%"
- ></auth-selection>
- </el-form-item>
- </el-col> -->
- <el-col :span="6">
- <el-form-item label="所属工厂" prop="factoryId">
- <el-select
- filterable
- placeholder="请选择"
- v-model="formData.factoryId"
- clearable
- class="w100"
- >
- <el-option
- v-for="item in factoryList"
- :key="item.id"
- :label="item.name"
- :value="item.id"
- ></el-option>
- </el-select> </el-form-item
- ></el-col>
- <!-- <el-col :lg="6" :sm="8" :xs="8">
- <el-form-item label="创建时间" prop="time">
- <el-date-picker
- class="w100"
- size="small"
- v-model="formData.time"
- type="daterange"
- range-separator="至"
- start-placeholder="开始日期"
- end-placeholder="结束日期"
- value-format="yyyy-MM-dd"
- ></el-date-picker> </el-form-item
- ></el-col> -->
- <el-col
- style="
- display: flex;
- justify-content: flex-end;
- margin-bottom: 10px;
- "
- >
- <div>
- <el-button icon="el-icon-refresh-left" size="small" @click="reset"
- >重置</el-button
- >
- <el-button
- type="primary"
- icon="el-icon-search"
- size="small"
- @click="search"
- >搜索</el-button
- >
- </div></el-col
- >
- </el-row>
- </el-form>
- <ele-pro-table
- ref="table"
- :columns="columns"
- height="calc(100vh-300px)"
- :pageSize="20"
- :datasource="datasource"
- @cell-click="cellClick"
- >
- <template v-slot:selection="{ row }">
- <el-radio class="radio" v-model="currentRow.id" :label="row.id"
- ><i></i
- ></el-radio>
- </template>
- <!-- 表头工具栏 -->
- <template v-slot:toolbar>
- <el-button icon="el-icon-plus" type="primary" @click="add"
- >新建</el-button
- >
- <el-button
- icon="el-icon-edit-outline"
- type="primary"
- @click="priceMaintenance"
- >单价维护</el-button
- >
- <!-- <el-button icon="el-icon-top" type="primary" @click="shelves"
- >上下架</el-button
- > -->
- <el-button icon="el-icon-receiving" type="primary" @click="outbound"
- >出库</el-button
- >
- <!-- <el-button
- icon="el-icon-plus"
- v-if="clientEnvironmentId == 4"
- type="primary"
- @click="exportExcel"
- >导入</el-button
- > -->
- </template>
- <!-- 状态 -->
- <template v-slot:verifyStatus="{ row }">
- <span :class="status[row.verifyStatus]?.class">
- {{ status[row.verifyStatus]?.label }}
- </span>
- </template>
- <!-- 单号链接 -->
- <template v-slot:bizNo="{ row }">
- <el-link type="primary" @click="details(row)">
- {{ row.bizNo }}
- </el-link>
- </template>
- <!-- 操作列 -->
- <template v-slot:action="{ row }">
- <el-link
- type="success"
- :underline="false"
- icon="el-icon-position"
- v-if="row.verifyStatus == 0 || row.verifyStatus == 3"
- @click="submit(row)"
- >
- 提交
- </el-link>
- <!-- <el-link
- type="primary"
- :underline="false"
- icon="el-icon-view"
- @click="details(row)"
- >
- 详情
- </el-link> -->
- <el-link
- v-if="row.verifyStatus == 2 && clientEnvironmentId == 3"
- type="primary"
- :underline="false"
- icon="el-icon-view"
- @click="quality(row)"
- >
- 质检
- </el-link>
- <el-link
- v-if="row.verifyStatus == 2"
- type="primary"
- :underline="false"
- icon="el-icon-sort-up"
- @click="details(row)"
- >
- 上架
- </el-link>
- <el-link
- v-if="row.verifyStatus == 2"
- type="primary"
- :underline="false"
- icon="el-icon-sort-down"
- @click="details(row)"
- >
- 下架
- </el-link>
- <el-link
- type="primary"
- v-if="row.verifyStatus == 0 || row.verifyStatus == 3"
- :underline="false"
- icon="el-icon-delete"
- @click="deleted(row)"
- >
- 删除
- </el-link>
- </template>
- <template v-slot:bizType="{ row }">
- {{ handleBizType(row.bizType) }}
- </template>
- <template v-slot:assetType="{ row }">
- {{ handleAssetType(row.extInfo.assetType) }}
- </template>
- </ele-pro-table>
- </el-card>
- <!-- <priceMaintenanceDialog ref="priceMaintenanceDialogRef" /> -->
- </div>
- </template>
- <script>
- import storageApi from '@/api/warehouseManagement';
- import warehouseDefinition from '@/api/warehouseManagement/warehouseDefinition';
- /* import priceMaintenanceDialog from './components/priceMaintenanceDialog.vue'; */
- import { allCategoryLevel } from '@/api/classifyManage';
- ('@/view/warehouseManagement/stockManagement/components/priceMaintenanceDialog.vue');
- import {
- warehousingType,
- sceneState,
- auditStatus,
- useDict
- } from '@/utils/dict/index';
- export default {
- components: {},
- data() {
- return {
- auditStatus,
- warehousingType,
- sceneState,
- codeList: [],
- factoryList: [],
- tableData: [],
- formData: {
- deptIds: '',
- categoryCode: '',
- categoryName: '',
- sourceBizNo: '',
- startTime: '',
- endTime: '',
- status: '',
- factoryId: '',
- time: []
- // type: 1
- },
- total: 0,
- status: [
- { label: '未审核', class: 'ele-text-info' },
- { label: '审核中', class: 'ele-text-primary' },
- { label: '审核通过', class: 'ele-text-success' },
- { label: '驳回', class: 'ele-text-danger' }
- ],
- currentRow: {},
- columns: [
- {
- slot: 'selection',
- label: '选择',
- width: 50,
- align: 'center'
- },
- {
- type: 'index',
- label: '序号',
- width: 50,
- align: 'center'
- },
- {
- prop: 'bizNo',
- label: '单号',
- align: 'center',
- slot: 'bizNo',
- showOverflowTooltip: true,
- width: 150
- },
- {
- prop: 'bizType',
- slot: 'bizType',
- label: '入库类型',
- align: 'center',
- showOverflowTooltip: true,
- width: 100
- },
- {
- prop: 'assetType',
- slot: 'assetType',
- label: '物品类型',
- align: 'center',
- showOverflowTooltip: true,
- width: 120
- },
- {
- prop: 'categoryNames',
- label: '物品名称',
- align: 'center',
- showOverflowTooltip: true,
- width: 150
- },
- {
- prop: 'categoryCodes',
- label: '物品编码',
- align: 'center',
- showOverflowTooltip: true,
- width: 150
- },
- {
- prop: 'sourceBizNo',
- label: '来源单据',
- align: 'center',
- showOverflowTooltip: true
- },
- {
- prop: 'createUserName',
- label: '入库人',
- align: 'center',
- showOverflowTooltip: true
- },
- {
- width: 160,
- prop: 'storageTime',
- label: '入库时间',
- align: 'center',
- showOverflowTooltip: true
- },
- {
- prop: 'verifyName',
- label: '审核人',
- align: 'center',
- showOverflowTooltip: true
- },
- {
- prop: 'startTime',
- label: '开始时间',
- align: 'center',
- showOverflowTooltip: true
- },
- {
- prop: 'outInStatus',
- label: '入库状态',
- align: 'center',
- showOverflowTooltip: true,
- width: 100,
- formatter: (row, column, cellValue) => {
- return row.outInStatus == 1 ? '预入库' :row.outInStatus == 2 ? '部分入库' :row.outInStatus == 3 ? '已出库' :'';
- }
- },
- {
- prop: 'verifyStatus',
- label: '状态',
- align: 'center',
- slot: 'verifyStatus',
- showOverflowTooltip: true,
- width: 100
- },
- {
- columnKey: 'action',
- label: '操作',
- width: 250,
- align: 'center',
- slot: 'action',
- showOverflowTooltip: true
- }
- ]
- };
- },
- computed: {
- clientEnvironmentId() {
- return this.$store.state.user.info.clientEnvironmentId;
- }
- },
- mounted() {
- this.getTypeList();
- this.getFactoryList();
- },
- methods: {
- //获取工厂列表
- async getFactoryList() {
- const res = await warehouseDefinition.getFactoryarea({
- pageNum: 1,
- size: 9999,
- type: 1
- });
- this.factoryList = res.list;
- },
- // 单击获取id
- cellClick(row) {
- this.currentRow = row;
- },
- shelves() {
- console.log('上架');
- },
- unShelves() {
- console.log('下架');
- },
- priceMaintenance() {
- if (Object.keys(this.currentRow).length == 0) {
- return this.$message.error('请选择单据');
- } else {
- if (this.currentRow.verifyStatus == 2) {
- this.$router.push({
- path: '/warehouseManagement/stockManagement/priceMaintenance',
- query: {
- ids: this.currentRow.id
- }
- });
- /* this.$refs.priceMaintenanceDialogRef.open(this.currentRow.id); */
- } else {
- this.$message.error('该单据未审核通过');
- }
- }
- },
- async outbound() {
- if (Object.keys(this.currentRow).length == 0) {
- return this.$message.error('请选择单据');
- } else {
- if (this.currentRow.verifyStatus == 2) {
- const res = await storageApi.getInboundDetailsById(
- this.currentRow.id
- );
- const arr = [];
- for (const key in res.outInDetailList) {
- for (const k in res.outInDetailList[key]
- .outInDetailRecordRequestList) {
- arr.push({
- ...res.outInDetailList[key].outInDetailRecordRequestList[k]
- });
- }
- }
- let ids = arr.map((item) => item.id).join(',');
- this.$router.push({
- path: '/warehouseManagement/outgoingManagement/add',
- query: {
- ids,
- bizType: this.currentRow.bizType,
- assetType: this.currentRow.extInfo.assetType
- }
- });
- } else {
- this.$message.error('该单据未审核通过');
- }
- }
- },
- handleAssetType(r) {
- let arr = r.split(',');
- const filteredData = this.codeList.filter((item) =>
- arr.includes(item.dictCode)
- );
- return filteredData.map((item) => item.dictValue).join(',');
- },
- async getTypeList() {
- const { data } = await allCategoryLevel();
- this.codeList = data.map((item) => {
- return { dictCode: item.id, dictValue: item.name };
- });
- },
- submit(row) {
- this.$confirm('此操作将提交流程, 是否继续?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- const data = await storageApi.submitTwo({ outInId: row.id });
- if (data) {
- this.$message.success('流程发起成功!');
- this.getList();
- }
- })
- .catch(() => {});
- },
- handleBizType(code) {
- for (const key in this.sceneState) {
- if (this.sceneState[key].code == code) {
- return this.sceneState[key].label;
- }
- }
- },
- async datasource({ page, limit, where }) {
- const params = Object.assign({}, this.formData);
- if (params.time?.length) {
- params.startTime = params.time[0];
- params.endTime = params.time[1];
- }
- delete params.time;
- // params.bizStatus = 1;
- const res = await storageApi.getInboundList({
- pageNum: page,
- size: limit,
- type: 1,
- ...params
- });
- return res;
- },
- getAuditStatus: useDict(auditStatus),
- getList() {
- this.$refs.table.reload();
- },
- add(row) {
- const query = {};
- if (row?.id) {
- query.id = row.id;
- }
- this.$router.push({
- path: '/warehouseManagement/stockManagement/add'
- // query
- });
- },
- quality(row) {
- this.$router.push({
- path: '/warehouseManagement/stockManagement/quality',
- query: {
- id: row.id
- }
- });
- },
- exportExcel() {
- this.$router.push({
- path: '/warehouseManagement/stockManagement/add_export'
- // query
- });
- },
- edit(row) {
- this.$router.push({
- path: '/warehouseManagement/stockManagement/edit',
- query: {
- id: row.id
- }
- });
- },
- details(row) {
- this.$router.push({
- path: '/warehouseManagement/stockManagement/details',
- query: {
- id: row.id,
- verifyStatus: row.verifyStatus
- }
- });
- },
- async deleted(row) {
- this.$confirm('是否确定删除?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- const data = await storageApi.delete([row.id]);
- if (data.code == '0') {
- this.$message.success('删除成功!');
- this.getList();
- }
- })
- .catch(() => {});
- },
- handleCurrentChange() {
- this.getList();
- },
- handleSizeChange() {
- this.formData.page = 1;
- this.getList();
- },
- search() {
- this.formData.page = 1;
- this.getList();
- },
- reset() {
- this.$refs.formName.resetFields();
- this.search();
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- #stockManagement_index {
- height: calc(100vh - 96px);
- width: 100%;
- padding: 10px;
- box-sizing: border-box;
- // element-ui样式穿透
- :deep(.el-card) {
- height: 100%;
- .el-card__body {
- height: 100%;
- box-sizing: border-box;
- display: flex;
- flex-direction: column;
- .ele-pro-table {
- flex: 1;
- display: flex;
- flex-direction: column;
- .el-table {
- flex: 1;
- // display: flex;
- // flex-direction: column;
- // .el-table__body-wrapper {
- // flex: 1;
- // }
- }
- }
- }
- .el-form-item {
- margin-bottom: 5px !important;
- }
- }
- .w100 {
- width: 100% !important;
- }
- .p20 {
- padding: 20px;
- }
- .mt20 {
- margin-top: 20px;
- }
- .mt10 {
- margin-top: 10px;
- }
- .el-form {
- overflow: hidden;
- }
- .float-right {
- float: right;
- text-align: right;
- margin-right: 20px;
- }
- .right {
- text-align: right;
- }
- .col {
- color: #aaa;
- }
- .pr10 {
- padding-right: 10px;
- }
- }
- </style>
|