|
|
@@ -1,12 +1,25 @@
|
|
|
<template>
|
|
|
<div class="ele-body">
|
|
|
<el-card shadow="never" v-loading="loading">
|
|
|
- <cuttingPlanSearch @search="reload" :statusOpt="statusOpt" :activeName="activeName" ref="searchRef">
|
|
|
+ <cuttingPlanSearch
|
|
|
+ @search="reload"
|
|
|
+ :statusOpt="statusOpt"
|
|
|
+ :activeName="activeName"
|
|
|
+ ref="searchRef"
|
|
|
+ >
|
|
|
</cuttingPlanSearch>
|
|
|
|
|
|
<!-- 数据表格 -->
|
|
|
- <ele-pro-table ref="table11" :initLoad="false" :columns="columns" :datasource="datasource"
|
|
|
- cache-key="`materialPlanTable`" :pageSize="20" :pageSizes="[20, 30, 40, 50, 100]">
|
|
|
+ <ele-pro-table
|
|
|
+ ref="table11"
|
|
|
+ :initLoad="false"
|
|
|
+ :columns="columns"
|
|
|
+ :datasource="datasource"
|
|
|
+ @columns-change="handleColumnChange"
|
|
|
+ :cacheKey="cacheKeyUrl"
|
|
|
+ :pageSize="20"
|
|
|
+ :pageSizes="[20, 30, 40, 50, 100]"
|
|
|
+ >
|
|
|
<template v-slot:toolbar>
|
|
|
<el-dropdown trigger="click" @command="handleClick">
|
|
|
<el-link type="primary" icon="el-icon-plus">创建计划</el-link>
|
|
|
@@ -38,29 +51,47 @@
|
|
|
row.orderType == 1
|
|
|
? '销售订单'
|
|
|
: row.orderType == 2
|
|
|
- ? '生产计划'
|
|
|
- : ''
|
|
|
+ ? '生产计划'
|
|
|
+ : ''
|
|
|
}}
|
|
|
</span>
|
|
|
</template>
|
|
|
|
|
|
<template v-slot:approvalStatus="{ row }">
|
|
|
- <el-link type="primary" :underline="false" @click="handleDetails(row)">
|
|
|
+ <el-link
|
|
|
+ type="primary"
|
|
|
+ :underline="false"
|
|
|
+ @click="handleDetails(row)"
|
|
|
+ >
|
|
|
{{ approvalStatusFormatter(row.approvalStatus) }}
|
|
|
</el-link>
|
|
|
</template>
|
|
|
<!-- 操作列 -->
|
|
|
<template v-slot:action="{ row }">
|
|
|
- <el-link type="primary" :underline="false" @click="todo(row)"
|
|
|
- v-if="row.approvalStatus == 0 || row.approvalStatus == 3">
|
|
|
+ <el-link
|
|
|
+ type="primary"
|
|
|
+ :underline="false"
|
|
|
+ @click="todo(row)"
|
|
|
+ v-if="row.approvalStatus == 0 || row.approvalStatus == 3"
|
|
|
+ >
|
|
|
提交
|
|
|
</el-link>
|
|
|
- <el-link type="primary" :underline="false" icon="el-icon-edit" @click="handleEdit('edit', row)"
|
|
|
- v-if="row.approvalStatus != 2 && row.approvalStatus != 1">
|
|
|
+ <el-link
|
|
|
+ type="primary"
|
|
|
+ :underline="false"
|
|
|
+ icon="el-icon-edit"
|
|
|
+ @click="handleEdit('edit', row)"
|
|
|
+ v-if="row.approvalStatus != 2 && row.approvalStatus != 1"
|
|
|
+ >
|
|
|
修改
|
|
|
</el-link>
|
|
|
- <el-link @click="handleDel(row)" type="danger" :underline="false" icon="el-icon-delete"
|
|
|
- v-if="row.approvalStatus == 0 || row.approvalStatus == 3">
|
|
|
+ <el-link
|
|
|
+ @click="handleDel(row)"
|
|
|
+ type="danger"
|
|
|
+ :underline="false"
|
|
|
+ icon="el-icon-delete"
|
|
|
+ v-if="row.approvalStatus == 0 || row.approvalStatus == 3"
|
|
|
+ >
|
|
|
删除
|
|
|
</el-link>
|
|
|
</template>
|
|
|
@@ -81,258 +112,263 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import cuttingPlanSearch from './components/cuttingPlan-search.vue';
|
|
|
+ import cuttingPlanSearch from './components/cuttingPlan-search.vue';
|
|
|
|
|
|
-import planEditDialog from './components/plan-edit-dialog.vue';
|
|
|
+ import planEditDialog from './components/plan-edit-dialog.vue';
|
|
|
|
|
|
-import producePlan from './components/producePlan.vue';
|
|
|
+ import producePlan from './components/producePlan.vue';
|
|
|
|
|
|
-import detail from '@/views/materialPlan/components/detail.vue';
|
|
|
-import processSubmitDialog from '@/components/processSubmitDialog/processSubmitDialog.vue';
|
|
|
-import { getList, del, submit } from '@/api/cuttingPlan/index.js';
|
|
|
+ import detail from '@/views/materialPlan/components/detail.vue';
|
|
|
+ import processSubmitDialog from '@/components/processSubmitDialog/processSubmitDialog.vue';
|
|
|
+ import { getList, del, submit } from '@/api/cuttingPlan/index.js';
|
|
|
+ import tabMixins from '@/mixins/tableColumnsMixin';
|
|
|
|
|
|
-export default {
|
|
|
- components: {
|
|
|
- cuttingPlanSearch,
|
|
|
- processSubmitDialog,
|
|
|
- detail,
|
|
|
- planEditDialog,
|
|
|
- producePlan
|
|
|
- },
|
|
|
+ export default {
|
|
|
+ components: {
|
|
|
+ cuttingPlanSearch,
|
|
|
+ processSubmitDialog,
|
|
|
+ detail,
|
|
|
+ planEditDialog,
|
|
|
+ producePlan
|
|
|
+ },
|
|
|
+ mixins: [tabMixins],
|
|
|
|
|
|
- data() {
|
|
|
- return {
|
|
|
- activeName: 'first',
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ activeName: 'first',
|
|
|
+ cacheKeyUrl: 'c32a9c7d-aps-cuttingPlan-index',
|
|
|
+ columnsVersion: 1,
|
|
|
+ // 加载状态
|
|
|
+ loading: false,
|
|
|
+ processSubmitDialogFlag: false,
|
|
|
+ statusOpt: {
|
|
|
+ first: [
|
|
|
+ { label: '所有状态', value: null },
|
|
|
+ { label: '待排产', value: '1' },
|
|
|
+ { label: '待发布', value: '2' },
|
|
|
+ { label: '发布失败', value: '3' },
|
|
|
+ { label: '已完成', value: '6' }
|
|
|
+ ]
|
|
|
+ },
|
|
|
|
|
|
- // 加载状态
|
|
|
- loading: false,
|
|
|
- processSubmitDialogFlag:false,
|
|
|
- statusOpt: {
|
|
|
- first: [
|
|
|
- { label: '所有状态', value: null },
|
|
|
- { label: '待排产', value: '1' },
|
|
|
- { label: '待发布', value: '2' },
|
|
|
- { label: '发布失败', value: '3' },
|
|
|
- { label: '已完成', value: '6' }
|
|
|
- ]
|
|
|
- },
|
|
|
+ approvalStatusOpt: {
|
|
|
+ first: [
|
|
|
+ { label: '未提交', value: '0' },
|
|
|
+ { label: '审核中', value: '1' },
|
|
|
+ { label: '审核通过', value: '2' },
|
|
|
+ { label: '审核未通过', value: '3' }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ // 表格列配置
|
|
|
+ columns() {
|
|
|
+ let num = this.columnsVersion;
|
|
|
|
|
|
- approvalStatusOpt: {
|
|
|
- first: [
|
|
|
- { label: '未提交', value: '0' },
|
|
|
- { label: '审核中', value: '1' },
|
|
|
- { label: '审核通过', value: '2' },
|
|
|
- { label: '审核未通过', value: '3' }
|
|
|
- ]
|
|
|
- }
|
|
|
- };
|
|
|
- },
|
|
|
- computed: {
|
|
|
- // 表格列配置
|
|
|
- columns() {
|
|
|
- return [
|
|
|
- {
|
|
|
- columnKey: 'index',
|
|
|
- label: '序号',
|
|
|
- type: 'index',
|
|
|
- width: 55,
|
|
|
- align: 'center',
|
|
|
- fixed: 'left'
|
|
|
- },
|
|
|
- {
|
|
|
- slot: 'demandType',
|
|
|
- prop: 'demandType',
|
|
|
- label: '需求类型',
|
|
|
- align: 'center',
|
|
|
- formatter: (row, column, cellValue) => {
|
|
|
- return row.demandType == 1
|
|
|
- ? '生产性物资采购'
|
|
|
- : row.demandType == 6
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ columnKey: 'index',
|
|
|
+ label: '序号',
|
|
|
+ type: 'index',
|
|
|
+ width: 55,
|
|
|
+ align: 'center',
|
|
|
+ fixed: 'left'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ slot: 'demandType',
|
|
|
+ prop: 'demandType',
|
|
|
+ label: '需求类型',
|
|
|
+ align: 'center',
|
|
|
+ formatter: (row, column, cellValue) => {
|
|
|
+ return row.demandType == 1
|
|
|
+ ? '生产性物资采购'
|
|
|
+ : row.demandType == 6
|
|
|
? '外协自供料采购'
|
|
|
: row.demandType == 7
|
|
|
- ? '外协客供料采购'
|
|
|
- : '';
|
|
|
+ ? '外协客供料采购'
|
|
|
+ : '';
|
|
|
+ },
|
|
|
+ width: 130,
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ fixed: 'left'
|
|
|
},
|
|
|
- width: 130,
|
|
|
- showOverflowTooltip: true,
|
|
|
- fixed: 'left'
|
|
|
- },
|
|
|
- {
|
|
|
- slot: 'name',
|
|
|
- prop: 'name',
|
|
|
- label: '名称',
|
|
|
- align: 'center',
|
|
|
- width: 130,
|
|
|
- showOverflowTooltip: true,
|
|
|
- fixed: 'left'
|
|
|
- },
|
|
|
- {
|
|
|
- slot: 'code',
|
|
|
- prop: 'code',
|
|
|
- label: '编号',
|
|
|
- align: 'center',
|
|
|
- width: 160,
|
|
|
- showOverflowTooltip: true,
|
|
|
- fixed: 'left'
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'planStr',
|
|
|
- label: '生产计划编码',
|
|
|
- align: 'center',
|
|
|
- width: 160,
|
|
|
- showOverflowTooltip: true
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'orderStr',
|
|
|
- label: '销售订单号',
|
|
|
- align: 'center',
|
|
|
- width: 160,
|
|
|
- showOverflowTooltip: true
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'serialNoStr',
|
|
|
- label: '客户代号',
|
|
|
- align: 'center',
|
|
|
- width: 120,
|
|
|
- showOverflowTooltip: true
|
|
|
- },
|
|
|
- {
|
|
|
- columnKey: 'status',
|
|
|
- label: '状态',
|
|
|
- align: 'center',
|
|
|
- slot: 'status',
|
|
|
- action: 'status',
|
|
|
- width: 120,
|
|
|
- showOverflowTooltip: true
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'approvalStatus',
|
|
|
- label: '审批状态',
|
|
|
- align: 'center',
|
|
|
- slot: 'approvalStatus',
|
|
|
- action: 'approvalStatus',
|
|
|
- width: 120,
|
|
|
- showOverflowTooltip: true
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'orderType',
|
|
|
- label: '来源类型',
|
|
|
- align: 'center',
|
|
|
- slot: 'orderType',
|
|
|
- action: 'orderType',
|
|
|
- width: 120,
|
|
|
- showOverflowTooltip: true
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'createUserName',
|
|
|
- label: '创建人',
|
|
|
- align: 'center',
|
|
|
- width: 120,
|
|
|
- showOverflowTooltip: true
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'createTime',
|
|
|
- label: '创建时间',
|
|
|
- align: 'center',
|
|
|
- width: 120,
|
|
|
- showOverflowTooltip: true
|
|
|
- },
|
|
|
- {
|
|
|
- columnKey: 'action',
|
|
|
- label: '操作',
|
|
|
- width: 250,
|
|
|
- align: 'center',
|
|
|
- resizable: false,
|
|
|
- fixed: 'right',
|
|
|
- slot: 'action'
|
|
|
- }
|
|
|
- ];
|
|
|
- }
|
|
|
- },
|
|
|
- methods: {
|
|
|
- statusFormatter(status) {
|
|
|
- const obj = this.statusOpt[this.activeName].find(
|
|
|
- (i) => i.value == status
|
|
|
- );
|
|
|
-
|
|
|
- return obj && obj.label;
|
|
|
+ {
|
|
|
+ slot: 'name',
|
|
|
+ prop: 'name',
|
|
|
+ label: '名称',
|
|
|
+ align: 'center',
|
|
|
+ minWidth: 130,
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ fixed: 'left'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ slot: 'code',
|
|
|
+ prop: 'code',
|
|
|
+ label: '编号',
|
|
|
+ align: 'center',
|
|
|
+ minWidth: 160,
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ fixed: 'left'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'planStr',
|
|
|
+ label: '生产计划编码',
|
|
|
+ align: 'center',
|
|
|
+ width: 160,
|
|
|
+ showOverflowTooltip: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'orderStr',
|
|
|
+ label: '销售订单号',
|
|
|
+ align: 'center',
|
|
|
+ width: 160,
|
|
|
+ showOverflowTooltip: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'serialNoStr',
|
|
|
+ label: '客户代号',
|
|
|
+ align: 'center',
|
|
|
+ width: 120,
|
|
|
+ showOverflowTooltip: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ columnKey: 'status',
|
|
|
+ label: '状态',
|
|
|
+ align: 'center',
|
|
|
+ slot: 'status',
|
|
|
+ action: 'status',
|
|
|
+ width: 120,
|
|
|
+ showOverflowTooltip: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'approvalStatus',
|
|
|
+ label: '审批状态',
|
|
|
+ align: 'center',
|
|
|
+ slot: 'approvalStatus',
|
|
|
+ action: 'approvalStatus',
|
|
|
+ width: 120,
|
|
|
+ showOverflowTooltip: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'orderType',
|
|
|
+ label: '来源类型',
|
|
|
+ align: 'center',
|
|
|
+ slot: 'orderType',
|
|
|
+ action: 'orderType',
|
|
|
+ width: 120,
|
|
|
+ showOverflowTooltip: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'createUserName',
|
|
|
+ label: '创建人',
|
|
|
+ align: 'center',
|
|
|
+ width: 120,
|
|
|
+ showOverflowTooltip: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'createTime',
|
|
|
+ label: '创建时间',
|
|
|
+ align: 'center',
|
|
|
+ width: 120,
|
|
|
+ showOverflowTooltip: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ columnKey: 'action',
|
|
|
+ label: '操作',
|
|
|
+ width: 250,
|
|
|
+ align: 'center',
|
|
|
+ resizable: false,
|
|
|
+ fixed: 'right',
|
|
|
+ slot: 'action'
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ }
|
|
|
},
|
|
|
+ methods: {
|
|
|
+ statusFormatter(status) {
|
|
|
+ const obj = this.statusOpt[this.activeName].find(
|
|
|
+ (i) => i.value == status
|
|
|
+ );
|
|
|
|
|
|
- approvalStatusFormatter(status) {
|
|
|
- const obj = this.approvalStatusOpt[this.activeName].find(
|
|
|
- (i) => i.value == status
|
|
|
- );
|
|
|
+ return obj && obj.label;
|
|
|
+ },
|
|
|
|
|
|
- return obj && obj.label;
|
|
|
- },
|
|
|
- reload(where = {}) {
|
|
|
- if (where.statusList) {
|
|
|
- where.statusList = where.statusList.split(',');
|
|
|
- }
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.table11.reload({ page: 1, where });
|
|
|
- });
|
|
|
- },
|
|
|
- /* 表格数据源 */
|
|
|
- datasource({ page, limit, where }) {
|
|
|
- where.type = 1;
|
|
|
- return getList({
|
|
|
- pageNum: page,
|
|
|
- size: limit,
|
|
|
- ...where
|
|
|
- });
|
|
|
- },
|
|
|
- handleClick(tab) {
|
|
|
- if (tab == 1) {
|
|
|
- this.$refs.planEditDialogRef.open('add');
|
|
|
- } else if (tab == 2) {
|
|
|
- this.$refs.produceRef.open('add');
|
|
|
- }
|
|
|
- },
|
|
|
- handleDetails(row) {
|
|
|
- if (row.status == 0) {
|
|
|
- this.$message.info('未提交没有审核流程');
|
|
|
- } else {
|
|
|
- this.$refs.detailRef.open(row.processInstanceId);
|
|
|
- }
|
|
|
- },
|
|
|
- handleEdit(type, row) {
|
|
|
- if (row.orderType == 1) {
|
|
|
- this.$refs.planEditDialogRef.open(type, row);
|
|
|
- } else if (row.orderType == 2) {
|
|
|
- this.$refs.produceRef.open(type, row);
|
|
|
- }
|
|
|
- },
|
|
|
- handleDel({ id }) {
|
|
|
- this.$confirm('确认删除当前数据!', '提示').then(async () => {
|
|
|
- await del([id]);
|
|
|
- this.$message.success('删除成功!');
|
|
|
- this.reload();
|
|
|
- });
|
|
|
- },
|
|
|
+ approvalStatusFormatter(status) {
|
|
|
+ const obj = this.approvalStatusOpt[this.activeName].find(
|
|
|
+ (i) => i.value == status
|
|
|
+ );
|
|
|
|
|
|
- todo(row) {
|
|
|
- this.processSubmitDialogFlag = true;
|
|
|
- this.$nextTick(() => {
|
|
|
- let params = {
|
|
|
- businessId: row.id,
|
|
|
- businessKey: 'baiting_code',
|
|
|
- formCreateUserId: row.createUserId,
|
|
|
- variables: {
|
|
|
- businessCode: row.code
|
|
|
- }
|
|
|
- };
|
|
|
- this.$refs.processSubmitDialogRef.init(params);
|
|
|
- });
|
|
|
- // submit({ businessId: row.id }).then((res) => {
|
|
|
- // if (res) {
|
|
|
- // this.$message.success('提交成功!');
|
|
|
- // this.reload();
|
|
|
- // }
|
|
|
- // });
|
|
|
+ return obj && obj.label;
|
|
|
+ },
|
|
|
+ reload(where = {}) {
|
|
|
+ if (where.statusList) {
|
|
|
+ where.statusList = where.statusList.split(',');
|
|
|
+ }
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.table11.reload({ page: 1, where });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /* 表格数据源 */
|
|
|
+ datasource({ page, limit, where }) {
|
|
|
+ where.type = 1;
|
|
|
+ return getList({
|
|
|
+ pageNum: page,
|
|
|
+ size: limit,
|
|
|
+ ...where
|
|
|
+ });
|
|
|
+ },
|
|
|
+ handleClick(tab) {
|
|
|
+ if (tab == 1) {
|
|
|
+ this.$refs.planEditDialogRef.open('add');
|
|
|
+ } else if (tab == 2) {
|
|
|
+ this.$refs.produceRef.open('add');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleDetails(row) {
|
|
|
+ if (row.status == 0) {
|
|
|
+ this.$message.info('未提交没有审核流程');
|
|
|
+ } else {
|
|
|
+ this.$refs.detailRef.open(row.processInstanceId);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleEdit(type, row) {
|
|
|
+ if (row.orderType == 1) {
|
|
|
+ this.$refs.planEditDialogRef.open(type, row);
|
|
|
+ } else if (row.orderType == 2) {
|
|
|
+ this.$refs.produceRef.open(type, row);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleDel({ id }) {
|
|
|
+ this.$confirm('确认删除当前数据!', '提示').then(async () => {
|
|
|
+ await del([id]);
|
|
|
+ this.$message.success('删除成功!');
|
|
|
+ this.reload();
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ todo(row) {
|
|
|
+ this.processSubmitDialogFlag = true;
|
|
|
+ this.$nextTick(() => {
|
|
|
+ let params = {
|
|
|
+ businessId: row.id,
|
|
|
+ businessKey: 'baiting_code',
|
|
|
+ formCreateUserId: row.createUserId,
|
|
|
+ variables: {
|
|
|
+ businessCode: row.code
|
|
|
+ }
|
|
|
+ };
|
|
|
+ this.$refs.processSubmitDialogRef.init(params);
|
|
|
+ });
|
|
|
+ // submit({ businessId: row.id }).then((res) => {
|
|
|
+ // if (res) {
|
|
|
+ // this.$message.success('提交成功!');
|
|
|
+ // this.reload();
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
-};
|
|
|
+ };
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped></style>
|