This commit is contained in:
磷叶 2024-12-13 17:34:00 +08:00
parent 6131dba97a
commit 7223ceca8a
16 changed files with 152 additions and 66 deletions

View File

@ -39,6 +39,9 @@
</el-checkbox-button> </el-checkbox-button>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
<el-form-item label="物料编码" prop="materialNumber">
<el-input v-model="queryParams.materialNumber" placeholder="请输入物料编码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="物料规格" prop="materialCategory"> <el-form-item label="物料规格" prop="materialCategory">
<el-input v-model="queryParams.materialCategory" placeholder="请输入物料规格" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.materialCategory" placeholder="请输入物料规格" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
@ -51,6 +54,9 @@
<el-form-item label="盖子方式" prop="materialCover"> <el-form-item label="盖子方式" prop="materialCover">
<el-input v-model="queryParams.materialCover" placeholder="请输入物料盖子方式" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.materialCover" placeholder="请输入物料盖子方式" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item label="图案" prop="materialGraphics">
<el-input v-model="queryParams.materialGraphics" placeholder="请输入物料图案" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -129,7 +135,6 @@ import BooleanTag from "@/components/BooleanTag/index.vue";
import Price from "@/views/yh/price/index.vue"; import Price from "@/views/yh/price/index.vue";
import DeptTreeSelect from "@/components/Business/Dept/DeptTreeSelect.vue"; import DeptTreeSelect from "@/components/Business/Dept/DeptTreeSelect.vue";
import {$showColumns} from "@/utils/mixins"; import {$showColumns} from "@/utils/mixins";
import {listPrice} from "@/api/yh/price";
import {deepClone, isEmpty} from "@/utils"; import {deepClone, isEmpty} from "@/utils";
import {listProdOrder} from "@/api/yh/prodOrder"; import {listProdOrder} from "@/api/yh/prodOrder";
@ -181,6 +186,14 @@ export default {
isAsc: defaultSort.order, isAsc: defaultSort.order,
erpStatusList: [], erpStatusList: [],
erpIsRework: null, erpIsRework: null,
erpBillNo: null,
erpDocumentStatus: null,
deptId: null,
materialCategory: null,
materialSize: null,
materialSurface: null,
materialCover: null,
materialGraphics: null,
}, },
total: 0, total: 0,
selected: [], selected: [],

View File

@ -0,0 +1,26 @@
<template>
<el-link type="primary" @click="handleClick" :disabled="id == null">{{name | dv}}</el-link>
</template>
<script>
export default {
name: 'ProdOrderLink',
props: {
id: {
type: String,
default: null
},
name: {
type: String,
default: null,
},
},
methods: {
handleClick() {
this.$emit('click');
this.$router.push(`/view/prodOrder/${this.id}`)
}
}
}
</script>

View File

@ -66,7 +66,7 @@ export const ReportStatus = {
}, },
// 允许删除 // 允许删除
canDel(status) { canDel(status) {
return [this.WAIT_SUBMIT].includes(status); return [this.WAIT_SUBMIT, this.REJECT].includes(status);
}, },
// 是否已审核过的状态 // 是否已审核过的状态
isVerified(status) { isVerified(status) {
@ -171,5 +171,11 @@ export const DatePickerOptions = {
picker.$emit('pick', [start, end]); picker.$emit('pick', [start, end]);
} }
}] }]
},
// 禁用未来
DISABLE_FUTURE: {
disabledDate(date) {
return date.getTime() > Date.now();
}
} }
} }

View File

@ -57,6 +57,14 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="图案" prop="cover">
<el-input
v-model="queryParams.graphics"
placeholder="请输入图案"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -184,10 +192,9 @@
</template> </template>
<script> <script>
import {listMaterial, getMaterial, delMaterial, addMaterial, updateMaterial, syncMaterial} from "@/api/yh/material"; import {addMaterial, delMaterial, getMaterial, listMaterial, syncMaterial, updateMaterial} from "@/api/yh/material";
import { $showColumns } from '@/utils/mixins'; import {$showColumns} from '@/utils/mixins';
import FormCol from "@/components/FormCol/index.vue"; import FormCol from "@/components/FormCol/index.vue";
import {syncProdOrder} from "@/api/yh/prodOrder";
// //
const defaultSort = { const defaultSort = {
@ -214,6 +221,7 @@ export default {
{key: 'size', visible: true, label: '大小', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'size', visible: true, label: '大小', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'surface', visible: true, label: '表面处理', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'surface', visible: true, label: '表面处理', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'cover', visible: true, label: '盖子方式', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'cover', visible: true, label: '盖子方式', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'graphics', visible: true, label: '图案', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
], ],
// //
orderSorts: ['ascending', 'descending', null], orderSorts: ['ascending', 'descending', null],

View File

@ -51,6 +51,9 @@
<el-form-item label="盖子方式" prop="materialCover"> <el-form-item label="盖子方式" prop="materialCover">
<el-input v-model="queryParams.materialCover" placeholder="请输入物料盖子方式" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.materialCover" placeholder="请输入物料盖子方式" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item label="盖子方式" prop="materialGraphics">
<el-input v-model="queryParams.materialGraphics" placeholder="请输入物料图案" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -258,14 +261,14 @@
<script> <script>
import { import {
listProdOrder,
getProdOrder,
delProdOrder,
addProdOrder, addProdOrder,
updateProdOrder, delProdOrder,
syncProdOrder getProdOrder,
listProdOrder,
syncProdOrder,
updateProdOrder
} from "@/api/yh/prodOrder"; } from "@/api/yh/prodOrder";
import { $showColumns } from '@/utils/mixins'; import {$showColumns} from '@/utils/mixins';
import FormCol from "@/components/FormCol/index.vue"; import FormCol from "@/components/FormCol/index.vue";
import DeptTreeSelect from "@/components/Business/Dept/DeptTreeSelect.vue"; import DeptTreeSelect from "@/components/Business/Dept/DeptTreeSelect.vue";
import BooleanTag from "@/components/BooleanTag/index.vue"; import BooleanTag from "@/components/BooleanTag/index.vue";
@ -359,6 +362,14 @@ export default {
productType: null, productType: null,
materialNo: null, materialNo: null,
erpStatusList: [], erpStatusList: [],
erpIsRework: null,
erpBillNo: null,
erpDocumentStatus: null,
materialCategory: null,
materialSize: null,
materialSurface: null,
materialCover: null,
materialGraphics: null,
}, },
// //
form: {}, form: {},
@ -508,9 +519,7 @@ export default {
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.download('yh/prodOrder/export', { this.download('yh/prodOrder/export', this.queryParams, `生产订单_${new Date().getTime()}.xlsx`)
...this.queryParams
}, `prodOrder_${new Date().getTime()}.xlsx`)
} }
} }
}; };

View File

@ -34,7 +34,11 @@
<el-card class="card-box"> <el-card class="card-box">
<el-tabs> <el-tabs>
<el-tab-pane label="生产列表" lazy v-if="checkPermi(['yh:reportOrderProd:list'])"> <el-tab-pane label="生产列表" lazy v-if="checkPermi(['yh:reportOrderProd:list'])">
<report-order-prod v-if="detail.id != null" :query="{orderId: detail.id}"/> <report-order-prod
v-if="detail.id != null"
:query="{orderId: detail.id}"
:hide-columns="['orderErpBillNo', 'orderErpQty']"
/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="同步日志" lazy v-if="checkPermi(['yh:logImportDetail:list'])"> <el-tab-pane label="同步日志" lazy v-if="checkPermi(['yh:logImportDetail:list'])">
<log-import-detail v-if="detail.id != null" :query="{logBizType: LogImportBizType.PROD_ORDER, bstId: detail.id}"/> <log-import-detail v-if="detail.id != null" :query="{logBizType: LogImportBizType.PROD_ORDER, bstId: detail.id}"/>

View File

@ -59,7 +59,7 @@
<template #show> <template #show>
{{d.row.num | dv}} {{d.row.priceUnit}} {{d.row.num | dv}} {{d.row.priceUnit}}
</template> </template>
<el-input v-model="d.row.num" type="number" :min="0" placeholder="请输入良品数量"> <el-input v-model.number="d.row.num" type="number" :min="0" placeholder="请输入良品数量">
<template #suffix> <template #suffix>
{{d.row.priceUnit}} {{d.row.priceUnit}}
</template> </template>
@ -78,7 +78,7 @@
<template #show> <template #show>
{{d.row.defectNum | dv}} {{d.row.priceUnit}} {{d.row.defectNum | dv}} {{d.row.priceUnit}}
</template> </template>
<el-input v-model="d.row.defectNum" type="number" :min="0" placeholder="请输入不良品数量"> <el-input v-model.number="d.row.defectNum" type="number" :min="0" placeholder="请输入不良品数量">
<template #suffix> <template #suffix>
{{d.row.priceUnit}} {{d.row.priceUnit}}
</template> </template>

View File

@ -11,7 +11,7 @@
<el-table-column label="产量" align="center" min-width="180" > <el-table-column label="产量" align="center" min-width="180" >
<template slot-scope="d"> <template slot-scope="d">
<form-col table label-width="0" :prop="`orderProdList[${d.$index}].num`" :rules="rules.num"> <form-col table label-width="0" :prop="`orderProdList[${d.$index}].num`" :rules="rules.num">
<el-input v-model="d.row.num" type="number" :min="0" placeholder="请输入订单产量"> <el-input v-model.number="d.row.num" type="number" :min="0" placeholder="请输入订单产量">
<template #suffix v-if="priceUnit != null">{{priceUnit}}</template> <template #suffix v-if="priceUnit != null">{{priceUnit}}</template>
</el-input> </el-input>
</form-col> </form-col>
@ -141,6 +141,7 @@ export default {
erpStatusList: [ProdOrderErpStatus.START_WORK], erpStatusList: [ProdOrderErpStatus.START_WORK],
materialCategory: this.reportProd.priceCategory, materialCategory: this.reportProd.priceCategory,
materialSize: this.reportProd.priceSize, materialSize: this.reportProd.priceSize,
materialGraphics: this.reportProd.pricePattern,
excludeIds: this.value.map(item => item.orderId), excludeIds: this.value.map(item => item.orderId),
} }
} }

View File

@ -17,14 +17,14 @@
</el-select> </el-select>
</form-col> </form-col>
<form-col :span="span" label="良品数" prop="num"> <form-col :span="span" label="良品数" prop="num">
<el-input v-model="form.num" type="number" :min="0" placeholder="请输入良品数"> <el-input v-model.number="form.num" type="number" :min="0" placeholder="请输入良品数">
<template #suffix> <template #suffix>
{{form.priceUnit}} {{form.priceUnit}}
</template> </template>
</el-input> </el-input>
</form-col> </form-col>
<form-col :span="span" label="不良品数" prop="defectNum"> <form-col :span="span" label="不良品数" prop="defectNum">
<el-input v-model="form.defectNum" type="number" :min="0" placeholder="请输入不良品数"> <el-input v-model.number="form.defectNum" type="number" :min="0" placeholder="请输入不良品数">
<template #suffix> <template #suffix>
{{form.priceUnit}} {{form.priceUnit}}
</template> </template>

View File

@ -11,7 +11,7 @@
<el-table-column label="产量" align="center"> <el-table-column label="产量" align="center">
<template slot-scope="d"> <template slot-scope="d">
<form-col table label-width="0" :prop="`userProdList[${d.$index}].num`" :rules="rules.num"> <form-col table label-width="0" :prop="`userProdList[${d.$index}].num`" :rules="rules.num">
<el-input v-model="d.row.num" type="number" placeholder="请输入员工产量"> <el-input v-model.number="d.row.num" type="number" placeholder="请输入员工产量">
<template #suffix v-if="priceUnit != null">{{priceUnit}}</template> <template #suffix v-if="priceUnit != null">{{priceUnit}}</template>
</el-input> </el-input>
</form-col> </form-col>

View File

@ -21,7 +21,7 @@
style="width: 100%;" style="width: 100%;"
:clearable="false" :clearable="false"
:editable="false" :editable="false"
:picker-options="pickerOptions" :picker-options="DatePickerOptions.DISABLE_FUTURE"
/> />
</form-col> </form-col>
<form-col :span="span" label="总金额"> <form-col :span="span" label="总金额">
@ -56,6 +56,7 @@ import Decimal from "decimal.js";
import ReportProductEdit from "@/views/yh/report/edit/components/ReportProductEdit.vue"; import ReportProductEdit from "@/views/yh/report/edit/components/ReportProductEdit.vue";
import {parseTime} from "@/utils/ruoyi"; import {parseTime} from "@/utils/ruoyi";
import {$reportCheck} from "@/views/yh/report/mixins"; import {$reportCheck} from "@/views/yh/report/mixins";
import {DatePickerOptions} from "@/utils/constants";
export default { export default {
name: "ReportEdit", name: "ReportEdit",
@ -64,6 +65,7 @@ export default {
components: {ReportProductEdit, EditHeader, DeptTreeSelect, PriceInput, FormCol}, components: {ReportProductEdit, EditHeader, DeptTreeSelect, PriceInput, FormCol},
data() { data() {
return { return {
DatePickerOptions,
title: null, title: null,
loading: false, loading: false,
gutter: 8, gutter: 8,
@ -116,12 +118,6 @@ export default {
headerCellStyle: { headerCellStyle: {
backgroundColor: "#f5f7fa", backgroundColor: "#f5f7fa",
}, },
//
pickerOptions: {
disabledDate(date) {
return date.getTime() > Date.now();
}
},
} }
}, },
computed: { computed: {

View File

@ -38,6 +38,19 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="报表日期" prop="reportDateRange">
<el-date-picker
type="daterange"
v-model="queryParams.reportDateRange"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
clearable
@change="handleQuery"
:picker-options="DatePickerOptions.DISABLE_FUTURE"
/>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -165,11 +178,11 @@
</template> </template>
<script> <script>
import {listReport, delReport, cancelReport, submitReport} from "@/api/yh/report"; import {cancelReport, delReport, listReport, submitReport} from "@/api/yh/report";
import { $showColumns } from '@/utils/mixins'; import {$showColumns} from '@/utils/mixins';
import FormCol from "@/components/FormCol/index.vue"; import FormCol from "@/components/FormCol/index.vue";
import DeptTreeSelect from "@/components/Business/Dept/DeptTreeSelect.vue"; import DeptTreeSelect from "@/components/Business/Dept/DeptTreeSelect.vue";
import {ReportStatus} from "@/utils/constants"; import {DatePickerOptions, ReportStatus} from "@/utils/constants";
// //
const defaultSort = { const defaultSort = {
@ -184,6 +197,7 @@ export default {
components: {DeptTreeSelect, FormCol}, components: {DeptTreeSelect, FormCol},
data() { data() {
return { return {
DatePickerOptions,
ReportStatus, ReportStatus,
// //
columns: [ columns: [
@ -237,6 +251,7 @@ export default {
verifyBy: null, verifyBy: null,
updateId: null, updateId: null,
updateBy: null, updateBy: null,
reportDateRange: [],
statusList: [] statusList: []
}, },
// //
@ -353,7 +368,7 @@ export default {
handleExport() { handleExport() {
this.download('yh/report/export', { this.download('yh/report/export', {
...this.queryParams ...this.queryParams
}, `report_${new Date().getTime()}.xlsx`) }, `车间报表_${new Date().getTime()}.xlsx`)
} }
} }
}; };

View File

@ -27,8 +27,8 @@
<el-card header="工序产量" class="card-box"> <el-card header="工序产量" class="card-box">
<report-prod <report-prod
v-if="!loading" v-if="!loading"
:remove-search-columns="['reportId']" :remove-search-columns="['reportId', 'reportStatus']"
:hide-columns="['reportId', 'id']" :hide-columns="['reportId', 'id', 'reportStatus']"
:query="{reportId: detail.reportId}" :query="{reportId: detail.reportId}"
:custom-config="{ :custom-config="{
containerClass: null, containerClass: null,

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="生产订单" prop="orderErpBillNo"> <el-form-item label="生产订单" prop="orderErpBillNo" v-if="isShow('orderErpBillNo')">
<el-input <el-input
v-model="queryParams.orderErpBillNo" v-model="queryParams.orderErpBillNo"
placeholder="请输入生产订单编号" placeholder="请输入生产订单编号"
@ -74,6 +74,12 @@
<template v-else-if="column.key === 'pricePrice'"> <template v-else-if="column.key === 'pricePrice'">
{{d.row[column.key] | dv}} / {{d.row.priceUnit}} {{d.row[column.key] | dv}} / {{d.row.priceUnit}}
</template> </template>
<template v-else-if="column.key === 'orderErpBillNo'">
<prod-order-link :id="d.row.orderId" :name="d.row.orderErpBillNo"/>
</template>
<template v-else-if="column.key === 'orderErpQty'">
{{d.row[column.key] | dv}} {{d.row.unitName}}
</template>
<template v-else-if="column.key === 'reportStatus'"> <template v-else-if="column.key === 'reportStatus'">
<dict-tag :value="d.row.reportStatus" :options="dict.type.report_status"/> <dict-tag :value="d.row.reportStatus" :options="dict.type.report_status"/>
</template> </template>
@ -135,9 +141,16 @@
</template> </template>
<script> <script>
import { listReportOrderProd, getReportOrderProd, delReportOrderProd, addReportOrderProd, updateReportOrderProd } from "@/api/yh/reportOrderProd"; import {
import { $showColumns } from '@/utils/mixins'; addReportOrderProd,
delReportOrderProd,
getReportOrderProd,
listReportOrderProd,
updateReportOrderProd
} from "@/api/yh/reportOrderProd";
import {$showColumns} from '@/utils/mixins';
import FormCol from "@/components/FormCol/index.vue"; import FormCol from "@/components/FormCol/index.vue";
import ProdOrderLink from "@/components/Business/ProdOrder/ProdOrderLink.vue";
// //
const defaultSort = { const defaultSort = {
@ -149,7 +162,7 @@ export default {
name: "ReportOrderProd", name: "ReportOrderProd",
mixins: [$showColumns], mixins: [$showColumns],
dicts: ['report_status'], dicts: ['report_status'],
components: {FormCol}, components: {ProdOrderLink, FormCol},
props: { props: {
query: { query: {
type: Object, type: Object,
@ -168,6 +181,7 @@ export default {
{key: 'reportStatus', visible: true, label: '报表状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'reportStatus', visible: true, label: '报表状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'priceName', visible: true, label: '工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'priceName', visible: true, label: '工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'pricePrice', visible: true, label: '单价', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'pricePrice', visible: true, label: '单价', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'orderErpQty', visible: true, label: '订单数量', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'num', visible: true, label: '良品数', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'num', visible: true, label: '良品数', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
], ],
// //
@ -222,7 +236,7 @@ export default {
...this.queryParams, ...this.queryParams,
...this.query ...this.query
} }
this.initColumns();
this.getList(); this.getList();
}, },
methods: { methods: {
@ -327,7 +341,7 @@ export default {
handleExport() { handleExport() {
this.download('yh/reportOrderProd/export', { this.download('yh/reportOrderProd/export', {
...this.queryParams ...this.queryParams
}, `reportOrderProd_${new Date().getTime()}.xlsx`) }, `订单产量_${new Date().getTime()}.xlsx`)
} }
} }
}; };

View File

@ -110,16 +110,14 @@
<template v-else-if="column.key === 'priceType'"> <template v-else-if="column.key === 'priceType'">
<dict-tag :value="d.row.priceType" :options="dict.type.price_type"/> <dict-tag :value="d.row.priceType" :options="dict.type.price_type"/>
</template> </template>
<template v-else-if="column.key === 'pricePrice'"> <template v-else-if="column.key === 'reportStatus'">
{{d.row.pricePrice | dv}} <dict-tag :value="d.row.reportStatus" :options="dict.type.report_status"/>
<!-- <template v-if="d.row.priceUnit">/ {{d.row.priceUnit}}</template>-->
</template> </template>
<template v-else-if="column.key === 'totalAmount'"> <template v-else-if="['totalAmount', 'pricePrice'].includes(column.key)">
{{calcMulDecimal(d.row.pricePrice, d.row.num)}} {{d.row[column.key] | dv}}
</template> </template>
<template v-else-if="['num','defectNum'].includes(column.key)"> <template v-else-if="['num','defectNum'].includes(column.key)">
{{d.row[column.key] | dv}} {{d.row[column.key] | dv}}
<!-- <template v-if="d.row.priceUnit">{{d.row.priceUnit}}</template>-->
</template> </template>
<template v-else> <template v-else>
{{d.row[column.key] | dv}} {{d.row[column.key] | dv}}
@ -215,7 +213,7 @@
</template> </template>
<script> <script>
import { listReportProd, getReportProd, delReportProd, addReportProd, updateReportProd } from "@/api/yh/reportProd"; import {addReportProd, delReportProd, getReportProd, listReportProd, updateReportProd} from "@/api/yh/reportProd";
import {$listConfig, $showColumns, $showSearch} from '@/utils/mixins'; import {$listConfig, $showColumns, $showSearch} from '@/utils/mixins';
import FormCol from "@/components/FormCol/index.vue"; import FormCol from "@/components/FormCol/index.vue";
import SearchFormItem from "@/components/SearchFormItem/index.vue"; import SearchFormItem from "@/components/SearchFormItem/index.vue";
@ -234,7 +232,7 @@ const defaultSort = {
export default { export default {
name: "ReportProd", name: "ReportProd",
mixins: [$showColumns, $listConfig, $showSearch], mixins: [$showColumns, $listConfig, $showSearch],
dicts: ['price_type'], dicts: ['price_type', 'report_status'],
components: {ReportOrderProdDescriptions, ReportUserProdDescriptions, ReportUserProd, SearchFormItem, FormCol}, components: {ReportOrderProdDescriptions, ReportUserProdDescriptions, ReportUserProd, SearchFormItem, FormCol},
props: { props: {
query: { query: {
@ -257,6 +255,7 @@ export default {
searchColumns: [ searchColumns: [
{key: 'reportId', label: "报表编号", type: 'input', dictType: null}, {key: 'reportId', label: "报表编号", type: 'input', dictType: null},
{key: 'priceType', label: "类型", type: 'dict', dictType: 'price_type'}, {key: 'priceType', label: "类型", type: 'dict', dictType: 'price_type'},
{key: 'reportStatus', label: "报表状态", type: 'dict', dictType: 'report_status'},
{key: 'priceName', label: "工序", type: 'input', dictType: null}, {key: 'priceName', label: "工序", type: 'input', dictType: null},
{key: 'priceSubName', label: "子工序", type: 'input', dictType: null}, {key: 'priceSubName', label: "子工序", type: 'input', dictType: null},
{key: 'priceCategory', label: "类别", type: 'input', dictType: null}, {key: 'priceCategory', label: "类别", type: 'input', dictType: null},
@ -271,9 +270,10 @@ export default {
columns: [ columns: [
{key: 'id', visible: true, label: '编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'id', visible: true, label: '编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'reportId', visible: true, label: '报表编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"}, {key: 'reportId', visible: true, label: '报表编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
{key: 'priceType', visible: true, label: '类型', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'reportStatus', visible: true, label: '报表状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
{key: 'priceName', visible: true, label: '工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'priceName', visible: true, label: '工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'priceSubName', visible: true, label: '子工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"}, {key: 'priceSubName', visible: true, label: '子工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
{key: 'priceType', visible: true, label: '类型', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'num', visible: true, label: '良品', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'num', visible: true, label: '良品', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'defectNum', visible: true, label: '不良品', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"}, {key: 'defectNum', visible: true, label: '不良品', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
{key: 'priceUnit', visible: true, label: '单位', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'priceUnit', visible: true, label: '单位', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},

View File

@ -77,7 +77,7 @@
{{d.row[column.key] | dv}} {{ d.row.priceUnit | dv}} {{d.row[column.key] | dv}} {{ d.row.priceUnit | dv}}
</template> </template>
<template v-else-if="column.key === 'totalPrice'"> <template v-else-if="column.key === 'totalPrice'">
{{ totalPrice(d.row) | dv}} {{d.row.totalPrice | dv}}
</template> </template>
<template v-else-if="column.key === 'reportStatus'"> <template v-else-if="column.key === 'reportStatus'">
<dict-tag :value="d.row.reportStatus" :options="dict.type.report_status"/> <dict-tag :value="d.row.reportStatus" :options="dict.type.report_status"/>
@ -140,10 +140,15 @@
</template> </template>
<script> <script>
import { listReportUserProd, getReportUserProd, delReportUserProd, addReportUserProd, updateReportUserProd } from "@/api/yh/reportUserProd"; import {
addReportUserProd,
delReportUserProd,
getReportUserProd,
listReportUserProd,
updateReportUserProd
} from "@/api/yh/reportUserProd";
import {$listConfig, $showColumns, $showSearch} from '@/utils/mixins'; import {$listConfig, $showColumns, $showSearch} from '@/utils/mixins';
import FormCol from "@/components/FormCol/index.vue"; import FormCol from "@/components/FormCol/index.vue";
import {notNullDecimal} from "@/utils";
// //
const defaultSort = { const defaultSort = {
@ -177,10 +182,10 @@ export default {
{key: 'reportDate', visible: true, label: '报表日期', minWidth: null, sortable: true, overflow: false, align: 'center', width: "180"}, {key: 'reportDate', visible: true, label: '报表日期', minWidth: null, sortable: true, overflow: false, align: 'center', width: "180"},
{key: 'reportStatus', visible: true, label: '报表状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'reportStatus', visible: true, label: '报表状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'userName', visible: true, label: '员工', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'userName', visible: true, label: '员工', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'priceName', visible: true, label: '工序名称', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'priceName', visible: true, label: '工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'pricePrice', visible: true, label: '单价', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'pricePrice', visible: true, label: '单价', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'num', visible: true, label: '产量', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'num', visible: true, label: '产量', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'totalPrice', visible: true, label: '工资', minWidth: null, sortable: false, overflow: false, align: 'center', width: null}, {key: 'totalPrice', visible: true, label: '工资', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
], ],
// //
orderSorts: ['ascending', 'descending', null], orderSorts: ['ascending', 'descending', null],
@ -229,17 +234,6 @@ export default {
} }
}; };
}, },
computed: {
//
totalPrice() {
return (row ) => {
if (row == null) {
return 0;
}
return notNullDecimal(row.pricePrice).mul(notNullDecimal(row.num));
}
}
},
created() { created() {
this.queryParams = { this.queryParams = {
...this.queryParams, ...this.queryParams,
@ -352,7 +346,7 @@ export default {
handleExport() { handleExport() {
this.download('yh/reportUserProd/export', { this.download('yh/reportUserProd/export', {
...this.queryParams ...this.queryParams
}, `reportUserProd_${new Date().getTime()}.xlsx`) }, `员工产量_${new Date().getTime()}.xlsx`)
} }
} }
}; };