Compare commits

...

5 Commits

Author SHA1 Message Date
磷叶
5f4e40e712 提交部署 2024-11-21 16:14:10 +08:00
磷叶
7794316e1e 提交部署 2024-11-21 16:02:28 +08:00
磷叶
30a332a9a6 提交部署 2024-11-21 15:40:56 +08:00
磷叶
1eecf2853c 提交部署 2024-11-21 11:29:22 +08:00
磷叶
c6defb8a01 提交部署 2024-11-21 11:09:00 +08:00
20 changed files with 149 additions and 86 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 KiB

After

Width:  |  Height:  |  Size: 791 KiB

View File

@ -113,7 +113,7 @@
<boolean-tag :value="d.row.disabled" true-text="禁用" true-type="danger" false-text="启用" false-type="success" />
</template>
<template v-else-if="column.key === 'quantity'">
{{d.row.quantity | fix2 | dv}}
{{formatFraction(d.row.quantityNumerator, d.row.quantityDenominator)}}
</template>
<template v-else-if="column.key === 'price'">
{{d.row.price | dv}}
@ -143,7 +143,7 @@ import Price from "@/views/yh/price/index.vue";
import DeptTreeSelect from "@/components/Business/Dept/DeptTreeSelect.vue";
import {$showColumns} from "@/utils/mixins";
import {listPrice} from "@/api/yh/price";
import {deepClone} from "@/utils";
import {deepClone, formatFraction} from "@/utils";
const defaultSort = {
prop: "createTime",
@ -227,6 +227,7 @@ export default {
this.getList();
},
methods: {
formatFraction,
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");

View File

@ -3,15 +3,13 @@
<template>
<el-dialog :title="title" :visible="show" width="90%" top="2vh" @close="close" :append-to-body="true">
<el-scrollbar style="height: 50vh">
<price-check
v-if="show"
ref="check"
:multiple="multiple"
:init-select="initSelect"
v-on="$listeners"
/>
</el-scrollbar>
<price-check
v-if="show"
ref="check"
:multiple="multiple"
:init-select="initSelect"
v-on="$listeners"
/>
<template #footer>
<el-button type="primary" @click="submit()">确定</el-button>
</template>

View File

@ -39,6 +39,18 @@
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<el-form-item label="物料规格" prop="materialCategory">
<el-input v-model="queryParams.materialCategory" placeholder="请输入物料规格" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="物料大小" prop="materialSize">
<el-input v-model="queryParams.materialSize" placeholder="请输入物料大小" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="表面处理" prop="materialSurface">
<el-input v-model="queryParams.materialSurface" placeholder="请输入物料表面处理" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="盖子方式" prop="materialCover">
<el-input v-model="queryParams.materialCover" placeholder="请输入物料盖子方式" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item>
<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>

View File

@ -42,7 +42,7 @@ export default {
.table-form-item {
margin: 0;
}
.is-error {
.table-form-item.is-error {
margin-bottom: 18px;
}
</style>

View File

@ -499,3 +499,11 @@ export function getLastDateTimeStart(n) {
export function getLastDateTimeEnd(n) {
return new Date(getLastDateTimeEndStr(n));
}
// 展示分数
export function formatFraction(numerator, denominator) {
if (denominator === 1) {
return numerator;
}
return `${numerator}/${denominator}`;
}

View File

@ -1,5 +1,6 @@
<template>
<div class="login">
<div class="bg-box"/>
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title-box">
<img :src="logo" class="logo"/>
@ -79,8 +80,8 @@ export default {
logo: logoImg,
codeUrl: "",
loginForm: {
username: "admin",
password: "admin123",
username: "",
password: "",
rememberMe: false,
code: "",
uuid: ""
@ -165,11 +166,21 @@ export default {
<style rel="stylesheet/scss" lang="scss">
.login {
position: relative;
display: flex;
display: -webkit-flex;
height: calc(100vh - env(safe-area-inset-bottom));
background-image: url("../assets/images/login-background.webp");
-webkit-background-image: url("../assets/images/login-background.webp");
background-size: cover;
-webkit-background-size: cover;
width: 100%;
.bg-box {
flex: 1;
background-image: url("../assets/images/login-background.jpg");
-webkit-background-image: url("../assets/images/login-background.jpg");
background-size: cover;
-webkit-background-size: cover;
background-position: center;
-webkit-background-position: center;
}
}
.title-box {
@ -193,7 +204,7 @@ export default {
}
}
.login-form {
position: absolute;
position: relative;
background: #ffffff;
width: 480px;
padding: 200px 64px 5px;

View File

@ -84,10 +84,10 @@
</el-col>
</el-row>
</template>
<el-descriptions :column="2">
<el-descriptions :column="2" size="small">
<el-descriptions-item v-for="column of columns" v-if="column.visible" :key="column.key" :label="column.label">
<template v-if="column.key === 'status'">
<dict-tag :options="dict.type.report_status" :value="report[column.key]" size="small"/>
<dict-tag :options="dict.type.report_status" :value="report[column.key]" size="mini"/>
</template>
<template v-else-if="column.key === 'totalAmount'">
{{report.totalAmount | dv}}

View File

@ -262,11 +262,17 @@ export default {
},
methods: {
handleSync() {
syncMaterial().then(res => {
if (res.code === 200) {
this.$message.success("同步成功");
}
})
this.$confirm('确定同步物料吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
syncMaterial().then(res => {
if (res.code === 200) {
this.$message.success("同步成功");
}
})
});
},
/** 当排序按钮被点击时触发 **/
onSortChange(column) {

View File

@ -19,7 +19,9 @@
<el-descriptions-item label="单价">{{detail.price | dv}} </el-descriptions-item>
<el-descriptions-item label="单位">{{detail.unit | dv}}</el-descriptions-item>
<el-descriptions-item label="分类">{{detail.classify | dv}}</el-descriptions-item>
<el-descriptions-item label="生产数量" span="2">{{detail.quantity | fix2 | dv}} </el-descriptions-item>
<el-descriptions-item label="生产倍数" span="2">
{{formatFraction(detail.quantityNumerator, detail.quantityDenominator)}}
</el-descriptions-item>
<el-descriptions-item label="备注" span="3">{{detail.remark | dv}}</el-descriptions-item>
</el-descriptions>
</div>
@ -32,6 +34,7 @@
</template>
<script>
import {getPrice, verifyPrice} from "@/api/yh/price";
import {formatFraction} from "../../../../utils";
export default {
name: "VerifyPriceDialog",
@ -71,6 +74,7 @@ export default {
this.getDetail(this.priceId);
},
methods: {
formatFraction,
submitVerify(pass) {
this.$confirm(`确定要${pass ? '通过' : '驳回'}吗?`, '提示', {
confirmButtonText: '确定',

View File

@ -190,7 +190,7 @@
<boolean-tag :value="d.row.disabled" true-text="禁用" true-type="danger" false-text="启用" false-type="success" />
</template>
<template v-else-if="column.key === 'quantity'">
{{d.row.quantity | fix2 | dv}}
{{formatFraction(d.row.quantityNumerator, d.row.quantityDenominator)}}
</template>
<template v-else-if="column.key === 'price'">
{{d.row.price | dv}}
@ -299,10 +299,11 @@
<form-col :span="span" label="分类" prop="classify">
<el-input v-model="form.classify" placeholder="请输入分类" />
</form-col>
<form-col :span="span" label="生产数量" prop="quantity">
<el-input v-model="form.quantity" placeholder="请输入生产数量" type="number" :min="0">
<template #suffix></template>
</el-input>
<form-col :span="span" label="生产倍数" prop="quantity">
<el-input v-model="form.quantityNumerator" placeholder="分子" type="number" :min="0" style="width: calc(50% - 1.5em)"/>
/
<el-input v-model="form.quantityDenominator" placeholder="分母" type="number" :min="0" style="width: calc(50% - 1.5em)"/>
</form-col>
</el-row>
<el-form-item label="备注" prop="remark">
@ -345,6 +346,7 @@ import {PriceStatus} from "@/utils/constants";
import VerifyPriceDialog from "@/views/yh/price/components/VerifyPriceDialog.vue";
import FormCol from "@/components/FormCol/index.vue";
import ImportDialog from "@/components/ImportDialog/index.vue";
import {formatFraction} from "../../../utils";
//
const defaultSort = {
@ -385,7 +387,7 @@ export default {
{key: 'price', visible: true, label: '单价', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'unit', visible: true, label: '单位', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'classify', visible: true, label: '分类', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'quantity', visible: false, label: '生产', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
{key: 'quantity', visible: false, label: '生产数', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
{key: 'remark', visible: true, label: '备注', minWidth: null, sortable: true, overflow: true, align: 'center', width: null},
{key: 'createBy', visible: false, label: '创建人', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
{key: 'createTime', visible: false, label: '创建时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
@ -469,6 +471,7 @@ export default {
this.getList();
},
methods: {
formatFraction,
/** 当排序按钮被点击时触发 **/
onSortChange(column) {
if (column.order == null) {
@ -521,7 +524,8 @@ export default {
updateBy: null,
disabled: null,
disabledTime: null,
quantity: null
quantityNumerator: 1,
quantityDenominator : 1,
};
this.resetForm("form");
},

View File

@ -39,6 +39,18 @@
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<el-form-item label="物料规格" prop="materialCategory">
<el-input v-model="queryParams.materialCategory" placeholder="请输入物料规格" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="物料大小" prop="materialSize">
<el-input v-model="queryParams.materialSize" placeholder="请输入物料大小" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="表面处理" prop="materialSurface">
<el-input v-model="queryParams.materialSurface" placeholder="请输入物料表面处理" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="盖子方式" prop="materialCover">
<el-input v-model="queryParams.materialCover" placeholder="请输入物料盖子方式" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item>
<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>
@ -46,16 +58,16 @@
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-has-permi="['yh:prodOrder:add']"
>新增</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-has-permi="['yh:prodOrder:add']"-->
<!-- >新增</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="danger"
@ -351,10 +363,16 @@ export default {
methods: {
isEmpty,
handleSync(query = {}) {
syncProdOrder(query).then(res => {
if (res.code === 200) {
this.$message.success("同步成功");
}
this.$confirm('确定同步生产订单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
syncProdOrder(query).then(res => {
if (res.code === 200) {
this.$message.success("同步成功");
}
})
})
},
/** 当排序按钮被点击时触发 **/

View File

@ -289,7 +289,8 @@ export default {
pricePrice: price.price,
priceUnit: price.unit,
priceClassify: price.classify,
priceQuantity: price.quantity
priceQuantityNumerator: price.quantityNumerator,
priceQuantityDenominator: price.quantityDenominator,
}
},
//
@ -304,7 +305,8 @@ export default {
row.pricePrice = price.price;
row.priceUnit = price.unit;
row.priceClassify = price.classify;
row.priceQuantity = price.quantity;
row.priceQuantityNumerator = price.quantityNumerator;
row.priceQuantityDenominator = price.quantityDenominator;
},
//
onSelectionChange(selection) {

View File

@ -102,6 +102,11 @@ export default {
priceUnit: {
type: String,
default: null
},
//
reportProd: {
type: Object,
default: () => ({})
}
},
data() {
@ -134,7 +139,8 @@ export default {
orderQuery() {
return {
erpStatusList: [ProdOrderErpStatus.START_WORK],
materialCategory: this.reportProd.priceCategory,
materialSize: this.reportProd.priceSize,
}
}
},

View File

@ -49,9 +49,10 @@
<div class="edit-title">关联订单</div>
<report-product-order-list-edit
v-model="form.orderProdList"
:quantity="form.priceQuantity"
:quantity="form.priceQuantityNumerator / form.priceQuantityDenominator"
:price-unit="form.priceUnit"
:rules="rules.orderProdList"
:report-prod="form"
/>
</el-form>
</div>
@ -169,7 +170,8 @@ export default {
this.form.pricePrice = price.price;
this.form.priceUnit = price.unit;
this.form.priceClassify = price.classify;
this.form.priceQuantity = price.quantity;
this.form.priceQuantityNumerator = price.quantityNumerator;
this.form.priceQuantityDenominator = price.quantityDenominator;
},
},
}

View File

@ -34,7 +34,7 @@
containerClass: null,
showTableOpera: false,
showSearch: false,
showSelection: false,
showSelection: false
}"/>
</el-card>
</el-col>

View File

@ -1,26 +1,10 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="报表关联订单ID" prop="id">
<el-form-item label="生产订单" prop="orderErpBillNo">
<el-input
v-model="queryParams.id"
placeholder="请输入报表关联订单ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="报表产量ID" prop="reportProdId">
<el-input
v-model="queryParams.reportProdId"
placeholder="请输入报表产量ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="生产订单ID" prop="orderId">
<el-input
v-model="queryParams.orderId"
placeholder="请输入生产订单ID"
v-model="queryParams.orderErpBillNo"
placeholder="请输入生产订单编号"
clearable
@keyup.enter.native="handleQuery"
/>

View File

@ -3,14 +3,14 @@
<template v-for="(item, index) of data">
<el-descriptions border :column="4" >
<el-descriptions-item :key="item.id" label="生产订单" :span="2">{{item.orderErpBillNo | dv}}</el-descriptions-item>
<el-descriptions-item :key="item.id" label="本次提交产量">{{item.num | dv}} {{priceUnit}}</el-descriptions-item>
<el-descriptions-item :key="item.id" label="本次提交产量">{{item.num | fix2 | dv}} {{priceUnit}}</el-descriptions-item>
<el-descriptions-item :key="item.id" label="订单进度">
<el-progress text-inside :stroke-width="16" :percentage="percentage(item)" :color="customColors" text-color="#fff" style="width: 80px"/>
</el-descriptions-item>
<el-descriptions-item :key="item.id" label="订单需求数量">{{item.orderErpBaseUnitQty | dv}} {{item.baseUnitName}}</el-descriptions-item>
<el-descriptions-item :key="item.id" label="订单未入库数量">{{item.orderErpBaseNoStockInQty | dv}} {{item.baseUnitName}}</el-descriptions-item>
<el-descriptions-item :key="item.id" label="订单审核中产量">{{item.verifyingBaseNum | dv}} {{item.baseUnitName}}</el-descriptions-item>
<el-descriptions-item :key="item.id" label="订单已审核产量">{{item.verifiedBaseNum | dv}} {{item.baseUnitName}}</el-descriptions-item>
<el-descriptions-item :key="item.id" label="订单需求数量">{{item.orderErpBaseUnitQty | fix2 | dv}} {{item.baseUnitName}}</el-descriptions-item>
<el-descriptions-item :key="item.id" label="订单未入库数量">{{item.orderErpBaseNoStockInQty | fix2 | dv}} {{item.baseUnitName}}</el-descriptions-item>
<el-descriptions-item :key="item.id" label="订单审核中产量">{{item.verifyingBaseNum | fix2 | dv}} {{item.baseUnitName}}</el-descriptions-item>
<el-descriptions-item :key="item.id" label="订单已审核产量">{{item.verifiedBaseNum | fix2 | dv}} {{item.baseUnitName}}</el-descriptions-item>
</el-descriptions>
<br/>
</template>

View File

@ -78,7 +78,7 @@
<el-descriptions-item label="图案">{{d.row.pricePattern | dv}}</el-descriptions-item>
<el-descriptions-item label="规格">{{d.row.priceSpec | dv}}</el-descriptions-item>
<el-descriptions-item label="分类">{{d.row.priceClassify | dv}}</el-descriptions-item>
<el-descriptions-item label="倍数">{{d.row.priceQuantity | dv}}</el-descriptions-item>
<el-descriptions-item label="倍数">{{formatFraction(d.row.priceQuantityNumerator, d.row.priceQuantityDenominator)}}</el-descriptions-item>
</el-descriptions>
<template v-if="!isEmpty(d.row.userProdList)">
<div class="edit-title">员工产量</div>
@ -86,7 +86,7 @@
</template>
<template v-if="!isEmpty(d.row.orderProdList)">
<div class="edit-title">订单产量</div>
<report-order-prod-descriptions :data="d.row.orderProdList" :price-unit="d.row.priceUnit" :price-quantity="d.row.priceQuantity"/>
<report-order-prod-descriptions :data="d.row.orderProdList" :price-unit="d.row.priceUnit" :price-quantity="d.row.priceQuantityNumerator / d.row.priceQuantityDenominator"/>
</template>
</div>
</template>
@ -222,7 +222,7 @@ import SearchFormItem from "@/components/SearchFormItem/index.vue";
import ReportUserProd from "@/views/yh/reportUserProd/index.vue";
import {calcMulDecimal} from "@/utils/money";
import ReportUserProdDescriptions from "@/views/yh/reportProd/components/ReportUserProdDescriptions.vue";
import {isEmpty} from "@/utils";
import {formatFraction, isEmpty} from "@/utils";
import ReportOrderProdDescriptions from "@/views/yh/reportProd/components/ReportOrderProdDescriptions.vue";
//
@ -373,6 +373,7 @@ export default {
this.getList();
},
methods: {
formatFraction,
isEmpty,
calcMulDecimal,
//

View File

@ -242,11 +242,17 @@ export default {
},
methods: {
handleSync() {
syncUnit().then(res => {
if (res.code === 200) {
this.$message.success("同步成功");
}
})
this.$confirm('确定同步单位吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
syncUnit().then(res => {
if (res.code === 200) {
this.$message.success("同步成功");
}
})
});
},
/** 当排序按钮被点击时触发 **/
onSortChange(column) {