Commit b957c2cb authored by huangjie's avatar huangjie

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys...

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys into V20231129-中建一局二公司
parents 6b94f396 fc87a1f8
...@@ -59,3 +59,10 @@ export const divide = (num1, num2, digit = 9, omit = false) => { ...@@ -59,3 +59,10 @@ export const divide = (num1, num2, digit = 9, omit = false) => {
const result = decimal1.dividedBy(decimal2); const result = decimal1.dividedBy(decimal2);
return omit ? result.toFixed(digit, Decimal.ROUND_UP) : result.toDecimalPlaces(digit, Decimal.ROUND_UP).toString(); return omit ? result.toFixed(digit, Decimal.ROUND_UP) : result.toDecimalPlaces(digit, Decimal.ROUND_UP).toString();
}; };
// 检测结果是否是负数
export const targetIsNegative = (num) => {
const flag = (!parseFloat(num) && parseFloat(num) != "0");
if (flag) throw new Error("传入参数错误,参数不为number");
return new Decimal(num).isNegative();
};
<template> <template>
<el-dialog :title="comIsEntityMaterials ? '推送到物资用量' : '推送工程量'" :visible.sync="comPushProjectUseDialog" width="480px" <el-dialog :title="comIsEntityMaterials ? '推送到物资用量' : '推送工程量'" :visible="comPushProjectUseDialog" width="480px" class="push-project-use-dialog"
class="push-project-use-dialog" @close="dialogClose"> @close="dialogClose" @open="dialogOpen" :close-on-click-modal="false" :destroy-on-close="true">
<div class="dialog-body-content"> <div class="dialog-body-content">
<el-form :model="pushForm" ref="pushForm" :rules="rules" class="push-form"> <el-form :model="pushForm" ref="pushForm" :rules="rules" class="push-form">
<el-form-item label="分包项目名称"> <el-form-item label="分包项目名称">
<el-input :value="pushForm.projectName" :disabled="true"></el-input> <el-input :value="pushForm.projectDetailInfo.projectName" :disabled="true"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="本月实际工程量"> <el-form-item label="本月实际工程量">
<el-input :value="pushForm.totalQuantities" :disabled="true"></el-input> <el-input :value="pushForm.totalQuantities" :disabled="true"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="需推送工程量" prop="pushQuantities"> <el-form-item label="需推送工程量" prop="pushQuantities" :rules="pushQuantitiesValidator(pushForm.totalQuantities)">
<el-input v-model="pushForm.pushQuantities" placeholder="请填写需推送工程量"></el-input> <el-input v-model="pushForm.pushQuantities" placeholder="请填写需推送工程量"></el-input>
</el-form-item> </el-form-item>
<!-- ipm项目编码 -->
<el-form-item label="IPM项目编码">
<el-input v-model="pushForm.projectDetailInfo.ipmProjectNo" placeholder="请输入IPM项目编码"></el-input>
</el-form-item>
<!-- ipm合同编码 -->
<el-form-item label="IPM合同编码">
<el-input v-model="pushForm.ipmContractCode" placeholder="请输入IPM合同编码"></el-input>
</el-form-item>
<!-- ipm作业编码 -->
<el-form-item label="IPM作业编码">
<el-input v-model="pushForm.ipmBizCode" placeholder="请输入IPM作业编码"></el-input>
</el-form-item>
</el-form> </el-form>
</div> </div>
<!-- 底部按钮 -->
<div class="dialog-footer-content">
<div class="footer-btn cancel-submit" @click="cancelSubmit">取消</div>
<div class="footer-btn ok-submit">确定推送</div>
</div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { subtract } from "@/utils/decimal"; import { subtract, targetIsNegative } from "@/utils/decimal";
import { cloneDeep } from 'lodash-es'; import { cloneDeep } from 'lodash-es';
export default { export default {
name: "pushProjectUseDialog", name: "pushProjectUseDialog",
...@@ -58,12 +75,6 @@ export default { ...@@ -58,12 +75,6 @@ export default {
} }
}, },
data() { data() {
// 验证需推送工程量
const pushQuantitiesValidator = (rule, value, callback) => {
const reg = /^(?!0\d)(?!0+$)(?!0*\.0*$)\d+(\.\d+)?$/;
if (!reg.test(value)) return callback(new Error("请输入正确的工程量"));
callback();
};
return { return {
comIsEntityMaterials: this.isEntityMaterials, comIsEntityMaterials: this.isEntityMaterials,
comPushProjectUseDialog: this.pushProjectUseDialog, comPushProjectUseDialog: this.pushProjectUseDialog,
...@@ -72,13 +83,14 @@ export default { ...@@ -72,13 +83,14 @@ export default {
pushQuantities: "", pushQuantities: "",
ipmProjectCode: "", ipmProjectCode: "",
ipmContractCode: "", ipmContractCode: "",
ipmBizCode: "" ipmBizCode: "",
}, totalQuantities: "",
rules: { projectDetailInfo: {
pushQuantities: [ projectName: "",
{ trigger: ["blur", "change"], validator: pushQuantitiesValidator } ipmProjectNo: ""
]
} }
},
rules: {}
}; };
}, },
//可访问data属性 //可访问data属性
...@@ -91,12 +103,30 @@ export default { ...@@ -91,12 +103,30 @@ export default {
}, },
//方法集 //方法集
methods: { methods: {
// 验证需推送工程量
pushQuantitiesValidator(maxValue) {
return [{
trigger: ['blur', 'change'], validator: (rule, value, callback) => {
const reg = /^(?!0\d)(?!0+$)(?!0*\.0*$)\d+(\.\d+)?$/;
if (!reg.test(value)) return callback(new Error("请输入正确的工程量"));
const _maxValue = maxValue ? maxValue : 0;
if (targetIsNegative(subtract(_maxValue, value))) return callback(new Error("注:推送工程量不得大于实际产生的总工程量"));
callback();
}
}];
},
dialogClose() { dialogClose() {
const form = this.$refs["pushForm"];
if (form) form.clearValidate();
this.$emit("dialogClose"); this.$emit("dialogClose");
this.pushForm = this.$options.data.call(this).pushForm; this.pushForm = this.$options.data.call(this).pushForm;
const form = this.$refs["pushForm"];
if (form) form.clearValidate();
this.$emit("close", false); this.$emit("close", false);
},
dialogOpen() {
},
cancelSubmit() {
this.comPushProjectUseDialog = false;
} }
}, },
} }
...@@ -143,6 +173,10 @@ export default { ...@@ -143,6 +173,10 @@ export default {
.push-form { .push-form {
.el-form-item { .el-form-item {
&.is-error {
margin-bottom: 33px;
}
margin-bottom: 16px; margin-bottom: 16px;
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -186,6 +220,40 @@ export default { ...@@ -186,6 +220,40 @@ export default {
} }
} }
} }
.dialog-footer-content {
padding: 16px 20px;
box-sizing: border-box;
border-top: 1px solid #eeeeee;
display: flex;
align-items: center;
justify-content: flex-end;
.footer-btn {
height: 32px;
padding: 0px 16px;
font-size: 14px;
font-weight: 350;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
border-radius: 4px;
cursor: pointer;
&.cancel-submit {
color: rgba(35, 35, 35, 0.8);
background: #fff;
border: 1px solid #dcdfe6;
margin-right: 12px;
}
&.ok-submit {
color: #fff;
background: #0081ff;
}
}
}
} }
} }
} }
......
...@@ -641,8 +641,7 @@ export default { ...@@ -641,8 +641,7 @@ export default {
pushProjectUse(row) { pushProjectUse(row) {
if (!row.id) return; if (!row.id) return;
// 打开推送推送弹窗 // 打开推送推送弹窗
const _temp = { ...this.pushProjectUseTemp, ...cloneDeep(row) }; const _temp = { ...this.pushProjectUseTemp, ...cloneDeep(row), projectDetailInfo: cloneDeep(this.projectDetailInfo) };
_temp.projectName = this.projectDetailInfo.projectName;
this.pushProjectUseTemp = _temp; this.pushProjectUseTemp = _temp;
this.pushProjectUseDialog = true; this.pushProjectUseDialog = true;
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment